mattfaltyn opened a new issue, #3680: URL: https://github.com/apache/iceberg-python/issues/3680
### Apache Iceberg version 0.11.0 (latest release) ### Please describe the bug 🐞 ### Description Calling `TruncateTransform.satisfies_order_of` with two valid truncate transforms that have different widths raises an `AttributeError` instead of returning a boolean. Same-width comparisons work because the method returns early when the transforms are equal. ### Reproduction ```python from pyiceberg.transforms import TruncateTransform TruncateTransform(5).satisfies_order_of(TruncateTransform(3)) ``` On `main` at commit `48e710d20ceeeaa637d5aeae7746b787410859f8`, this raises: ```text AttributeError: 'TruncateTransform' object has no attribute '_source_type' ``` The failure reproduces consistently. The same code is also present in the 0.11.1 release. ### Expected behavior The method should compare the truncate widths and return a boolean: ```python assert TruncateTransform(5).satisfies_order_of(TruncateTransform(3)) assert not TruncateTransform(3).satisfies_order_of(TruncateTransform(5)) ``` This matches the current Apache Iceberg Java implementation: https://github.com/apache/iceberg/blob/25654ab4b29c8b5b5c20fc427da01cb70d94ed14/api/src/main/java/org/apache/iceberg/transforms/Truncate.java#L130-L141 ### Cause `TruncateTransform.__init__` initializes `_width` but not `_source_type`. However, `satisfies_order_of` still accesses the `source_type` property backed by `_source_type`: https://github.com/apache/iceberg-python/blob/48e710d20ceeeaa637d5aeae7746b787410859f8/pyiceberg/transforms.py#L783-L905 The existing unit test only compares a transform with itself, so it returns before reaching the failing branch: https://github.com/apache/iceberg-python/blob/48e710d20ceeeaa637d5aeae7746b787410859f8/tests/test_transforms.py#L501-L512 A focused fix could compare `TruncateTransform` widths directly, consistent with the Java implementation, and add regression cases for different widths. I would be happy to contribute the fix and regression tests. ### Willingness to contribute - [x] I can contribute a fix for this bug independently - [ ] I would be willing to contribute a fix for this bug with guidance from the Iceberg community - [ ] I cannot contribute a fix for this bug at this time -- 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]
