From 09fb73d89b4c1c5a1cbaec71fc425d48ce40b93c Mon Sep 17 00:00:00 2001 From: Sai Asish Y Date: Sat, 18 Jul 2026 10:00:13 -0700 Subject: [PATCH] Fix TruncateTransform.satisfies_order_of crashing on different widths Signed-off-by: Sai Asish Y --- pyiceberg/transforms.py | 6 +----- tests/test_transforms.py | 6 ++++++ 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/pyiceberg/transforms.py b/pyiceberg/transforms.py index cd0d7cebcb..bf1a930f32 100644 --- a/pyiceberg/transforms.py +++ b/pyiceberg/transforms.py @@ -897,11 +897,7 @@ def truncate_func(v: Any) -> Any: def satisfies_order_of(self, other: Transform[S, T]) -> bool: if self == other: return True - elif ( - isinstance(self.source_type, StringType) - and isinstance(other, TruncateTransform) - and isinstance(other.source_type, StringType) - ): + elif isinstance(other, TruncateTransform): return self.width >= other.width return False diff --git a/tests/test_transforms.py b/tests/test_transforms.py index d296fcdb21..8229f8606f 100644 --- a/tests/test_transforms.py +++ b/tests/test_transforms.py @@ -512,6 +512,12 @@ def test_truncate_method(type_var: PrimitiveType, value: Any, expected_human_str assert truncate_transform.satisfies_order_of(truncate_transform) +def test_truncate_satisfies_order_of_different_widths() -> None: + assert TruncateTransform(5).satisfies_order_of(TruncateTransform(3)) + assert not TruncateTransform(3).satisfies_order_of(TruncateTransform(5)) + assert not TruncateTransform(5).satisfies_order_of(BucketTransform(3)) + + def test_unknown_transform() -> None: unknown_transform = UnknownTransform("unknown") # type: ignore assert str(unknown_transform) == str(eval(repr(unknown_transform)))