@@ -641,7 +641,7 @@ def delete(
641641 self .table_metadata .properties .get (TableProperties .DELETE_MODE , TableProperties .DELETE_MODE_DEFAULT )
642642 == TableProperties .DELETE_MODE_MERGE_ON_READ
643643 ):
644- raise NotImplementedError ("Merge on read is not yet supported" )
644+ warnings . warn ("Merge on read is not yet supported, falling back to copy-on-write" , stacklevel = 2 )
645645
646646 if isinstance (delete_filter , str ):
647647 delete_filter = _parse_row_filter (delete_filter )
@@ -1829,9 +1829,6 @@ def from_rest_response(
18291829
18301830 Returns:
18311831 A FileScanTask with the converted data and delete files.
1832-
1833- Raises:
1834- NotImplementedError: If equality delete files are encountered.
18351832 """
18361833 data_file = _rest_file_to_data_file (rest_task .data_file )
18371834
@@ -1850,18 +1847,28 @@ def from_rest_response(
18501847
18511848def _rest_file_to_data_file (rest_file : RESTContentFile ) -> DataFile :
18521849 """Convert a REST content file to a manifest DataFile."""
1853- from pyiceberg .catalog .rest .scan_planning import RESTDataFile
1850+ from pyiceberg .catalog .rest .scan_planning import RESTDataFile , RESTEqualityDeleteFile , RESTPositionDeleteFile
1851+
1852+ column_sizes = None
1853+ value_counts = None
1854+ null_value_counts = None
1855+ nan_value_counts = None
1856+ equality_ids = None
1857+ referenced_data_file = None
1858+ content_offset = None
1859+ content_size_in_bytes = None
18541860
18551861 if isinstance (rest_file , RESTDataFile ):
18561862 column_sizes = rest_file .column_sizes .to_dict () if rest_file .column_sizes else None
18571863 value_counts = rest_file .value_counts .to_dict () if rest_file .value_counts else None
18581864 null_value_counts = rest_file .null_value_counts .to_dict () if rest_file .null_value_counts else None
18591865 nan_value_counts = rest_file .nan_value_counts .to_dict () if rest_file .nan_value_counts else None
1860- else :
1861- column_sizes = None
1862- value_counts = None
1863- null_value_counts = None
1864- nan_value_counts = None
1866+ elif isinstance (rest_file , RESTEqualityDeleteFile ):
1867+ equality_ids = rest_file .equality_ids
1868+ elif isinstance (rest_file , RESTPositionDeleteFile ):
1869+ referenced_data_file = rest_file .referenced_data_file
1870+ content_offset = rest_file .content_offset
1871+ content_size_in_bytes = rest_file .content_size_in_bytes
18651872
18661873 data_file = DataFile .from_args (
18671874 content = DataFileContent .from_rest_type (rest_file .content ),
@@ -1875,6 +1882,10 @@ def _rest_file_to_data_file(rest_file: RESTContentFile) -> DataFile:
18751882 null_value_counts = null_value_counts ,
18761883 nan_value_counts = nan_value_counts ,
18771884 split_offsets = rest_file .split_offsets ,
1885+ equality_ids = equality_ids ,
1886+ referenced_data_file = referenced_data_file ,
1887+ content_offset = content_offset ,
1888+ content_size_in_bytes = content_size_in_bytes ,
18781889 sort_order_id = rest_file .sort_order_id ,
18791890 )
18801891 data_file .spec_id = rest_file .spec_id
0 commit comments