Skip to content

Commit 818e6f9

Browse files
committed
Address review: update SortField.__str__ and drop underscore keys from serializers
1 parent 5369978 commit 818e6f9

4 files changed

Lines changed: 8 additions & 5 deletions

File tree

pyiceberg/partitioning.py

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -134,10 +134,8 @@ def _serialize_source_ids(self, handler: Any) -> Any:
134134
# multi-argument transforms write only source-ids
135135
if self.source_ids is not None and len(self.source_ids) > 1:
136136
serialized.pop("source-id", None)
137-
serialized.pop("source_id", None)
138137
else:
139138
serialized.pop("source-ids", None)
140-
serialized.pop("source_ids", None)
141139
return serialized
142140

143141
def __str__(self) -> str:

pyiceberg/table/sorting.py

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -125,10 +125,8 @@ def _serialize_source_ids(self, handler: Any) -> Any:
125125
# multi-argument transforms write only source-ids
126126
if self.source_ids is not None and len(self.source_ids) > 1:
127127
serialized.pop("source-id", None)
128-
serialized.pop("source_id", None)
129128
else:
130129
serialized.pop("source-ids", None)
131-
serialized.pop("source_ids", None)
132130
return serialized
133131

134132
source_id: int = Field(alias="source-id")
@@ -147,8 +145,11 @@ def __str__(self) -> str:
147145
if isinstance(self.transform, IdentityTransform):
148146
# In the case of an identity transform, we can omit the transform
149147
return f"{self.source_id} {self.direction} {self.null_order}"
148+
if self.source_ids is not None and len(self.source_ids) > 1:
149+
sources = ", ".join(str(s) for s in self.source_ids)
150150
else:
151-
return f"{self.transform}({self.source_id}) {self.direction} {self.null_order}"
151+
sources = str(self.source_id)
152+
return f"{self.transform}({sources}) {self.direction} {self.null_order}"
152153

153154

154155
INITIAL_SORT_ORDER_ID = 1

tests/table/test_partitioning.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -292,6 +292,8 @@ def test_deserialize_partition_field_multi_arg() -> None:
292292
assert "source-id" not in serialized
293293
assert serialized["transform"] == "bucket[4]"
294294

295+
assert str(field) == "1000: multi_bucket: bucket[4](1, 2)"
296+
295297

296298
def test_serialize_partition_field_single_source_id_only() -> None:
297299
import json as json_lib

tests/table/test_sorting.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -193,6 +193,8 @@ def test_deserialize_sort_field_multi_arg() -> None:
193193
assert "source-id" not in serialized
194194
assert serialized["transform"] == "bucket[4]"
195195

196+
assert str(field) == "bucket[4](19, 20) ASC NULLS FIRST"
197+
196198

197199
def test_deserialize_sort_field_multi_arg_requires_transform() -> None:
198200
payload = '{"source-ids":[19,20],"direction":"asc","null-order":"nulls-first"}'

0 commit comments

Comments
 (0)