@@ -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
18061807class 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