Skip to content

Commit 30db4d1

Browse files
author
Sreesh Maheshwar
committed
Introduce arguments in subclass
1 parent bdb4269 commit 30db4d1

File tree

1 file changed

+16
-15
lines changed

1 file changed

+16
-15
lines changed

pyiceberg/table/__init__.py

Lines changed: 16 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1689,12 +1689,13 @@ def to_pandas(self, **kwargs: Any) -> pd.DataFrame: ...
16891689
@abstractmethod
16901690
def to_polars(self) -> pl.DataFrame: ...
16911691

1692+
@property
16921693
@abstractmethod
1694+
def _arguments(self) -> dict[str, Any]: ...
1695+
16931696
def update(self: S, **overrides: Any) -> S:
16941697
"""Create a copy of this table scan with updated fields."""
1695-
1696-
def _construct(self: S, **kwargs: Any) -> S:
1697-
return type(self)(**kwargs)
1698+
return type(self)(**{**self._arguments, **overrides})
16981699

16991700
def use_ref(self: S, name: str) -> S:
17001701
if self.snapshot_id:
@@ -1804,18 +1805,18 @@ def _match_deletes_to_data_file(data_entry: ManifestEntry, positional_delete_ent
18041805

18051806

18061807
class DataScan(TableScan):
1807-
def update(self: DataScan, **overrides: Any) -> DataScan:
1808-
return self._construct(
1809-
table_metadata=self.table_metadata,
1810-
io=self.io,
1811-
row_filter=self.row_filter,
1812-
selected_fields=self.selected_fields,
1813-
case_sensitive=self.case_sensitive,
1814-
snapshot_id=self.snapshot_id,
1815-
options=self.options,
1816-
limit=self.limit,
1817-
**overrides,
1818-
)
1808+
@property
1809+
def _arguments(self) -> dict[str, Any]:
1810+
return {
1811+
"table_metadata": self.table_metadata,
1812+
"io": self.io,
1813+
"row_filter": self.row_filter,
1814+
"selected_fields": self.selected_fields,
1815+
"case_sensitive": self.case_sensitive,
1816+
"snapshot_id": self.snapshot_id,
1817+
"options": self.options,
1818+
"limit": self.limit,
1819+
}
18191820

18201821
def _build_partition_projection(self, spec_id: int) -> BooleanExpression:
18211822
project = inclusive_projection(self.table_metadata.schema(), self.table_metadata.specs()[spec_id], self.case_sensitive)

0 commit comments

Comments
 (0)