amogh-jahagirdar commented on code in PR #411:
URL: https://github.com/apache/iceberg-python/pull/411#discussion_r1485645020
##########
pyiceberg/table/metadata.py:
##########
@@ -313,6 +315,34 @@ def construct_partition_specs(cls, data: Dict[str, Any])
-> Dict[str, Any]:
return data
+ @model_validator(mode="before")
+ def construct_v1_spec_from_v2_fields(cls, data: Dict[str, Any]) ->
Dict[str, Any]:
+ specs_field = "partition_specs"
+ default_spec_id_field = "default_spec_id"
+ if specs_field in data and default_spec_id_field in data:
+ found_spec = next((spec for spec in data[specs_field] if
spec.spec_id == data[default_spec_id_field]), None)
+ if found_spec is not None:
+ spec_dict = found_spec.model_dump()
+ spec_dict['fields'] = list(spec_dict['fields'])
Review Comment:
If I don't do this conversion from the tuple to a list what ends up
happening is the read metadata from the JSON is a list but then the actual
model in spec_dict['fields'] is a tuple. Since partition_spec is deprecated
anyways and is a List[Dict[str, any]] I think we have the flexibility just to
make the fields a list.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]