2222from pyiceberg .conversions import to_bytes
2323from pyiceberg .expressions import (
2424 And ,
25+ BooleanExpression ,
2526 EqualTo ,
2627 GreaterThan ,
2728 GreaterThanOrEqual ,
3031 IsNull ,
3132 LessThan ,
3233 LessThanOrEqual ,
34+ LiteralPredicate ,
3335 Not ,
3436 NotEqualTo ,
3537 NotIn ,
@@ -301,7 +303,7 @@ def test_missing_stats() -> None:
301303 upper_bounds = None ,
302304 )
303305
304- expressions = [
306+ expressions : list [ BooleanExpression ] = [
305307 LessThan ("no_stats" , 5 ),
306308 LessThanOrEqual ("no_stats" , 30 ),
307309 EqualTo ("no_stats" , 70 ),
@@ -324,7 +326,7 @@ def test_zero_record_file_stats(schema_data_file: Schema) -> None:
324326 file_path = "file_1.parquet" , file_format = FileFormat .PARQUET , partition = Record (), record_count = 0
325327 )
326328
327- expressions = [
329+ expressions : list [ BooleanExpression ] = [
328330 LessThan ("no_stats" , 5 ),
329331 LessThanOrEqual ("no_stats" , 30 ),
330332 EqualTo ("no_stats" , 70 ),
@@ -683,26 +685,27 @@ def data_file_nan() -> DataFile:
683685
684686
685687def test_inclusive_metrics_evaluator_less_than_and_less_than_equal (schema_data_file_nan : Schema , data_file_nan : DataFile ) -> None :
686- for operator in [LessThan , LessThanOrEqual ]: # type: ignore
687- should_read = _InclusiveMetricsEvaluator (schema_data_file_nan , operator ("all_nan" , 1 )).eval (data_file_nan ) # type: ignore[arg-type]
688+ operators : tuple [type [LiteralPredicate [Any ]], ...] = (LessThan , LessThanOrEqual )
689+ for operator in operators :
690+ should_read = _InclusiveMetricsEvaluator (schema_data_file_nan , operator ("all_nan" , 1 )).eval (data_file_nan )
688691 assert not should_read , "Should not match: all nan column doesn't contain number"
689692
690- should_read = _InclusiveMetricsEvaluator (schema_data_file_nan , operator ("max_nan" , 1 )).eval (data_file_nan ) # type: ignore[arg-type]
693+ should_read = _InclusiveMetricsEvaluator (schema_data_file_nan , operator ("max_nan" , 1 )).eval (data_file_nan )
691694 assert not should_read , "Should not match: 1 is smaller than lower bound"
692695
693- should_read = _InclusiveMetricsEvaluator (schema_data_file_nan , operator ("max_nan" , 10 )).eval (data_file_nan ) # type: ignore[arg-type]
696+ should_read = _InclusiveMetricsEvaluator (schema_data_file_nan , operator ("max_nan" , 10 )).eval (data_file_nan )
694697 assert should_read , "Should match: 10 is larger than lower bound"
695698
696- should_read = _InclusiveMetricsEvaluator (schema_data_file_nan , operator ("min_max_nan" , 1 )).eval (data_file_nan ) # type: ignore[arg-type]
699+ should_read = _InclusiveMetricsEvaluator (schema_data_file_nan , operator ("min_max_nan" , 1 )).eval (data_file_nan )
697700 assert should_read , "Should match: no visibility"
698701
699- should_read = _InclusiveMetricsEvaluator (schema_data_file_nan , operator ("all_nan_null_bounds" , 1 )).eval (data_file_nan ) # type: ignore[arg-type]
702+ should_read = _InclusiveMetricsEvaluator (schema_data_file_nan , operator ("all_nan_null_bounds" , 1 )).eval (data_file_nan )
700703 assert not should_read , "Should not match: all nan column doesn't contain number"
701704
702- should_read = _InclusiveMetricsEvaluator (schema_data_file_nan , operator ("some_nan_correct_bounds" , 1 )).eval (data_file_nan ) # type: ignore[arg-type]
705+ should_read = _InclusiveMetricsEvaluator (schema_data_file_nan , operator ("some_nan_correct_bounds" , 1 )).eval (data_file_nan )
703706 assert not should_read , "Should not match: 1 is smaller than lower bound"
704707
705- should_read = _InclusiveMetricsEvaluator (schema_data_file_nan , operator ("some_nan_correct_bounds" , 10 )).eval ( # type: ignore[arg-type]
708+ should_read = _InclusiveMetricsEvaluator (schema_data_file_nan , operator ("some_nan_correct_bounds" , 10 )).eval (
706709 data_file_nan
707710 )
708711 assert should_read , "Should match: 10 larger than lower bound"
@@ -711,31 +714,32 @@ def test_inclusive_metrics_evaluator_less_than_and_less_than_equal(schema_data_f
711714def test_inclusive_metrics_evaluator_greater_than_and_greater_than_equal (
712715 schema_data_file_nan : Schema , data_file_nan : DataFile
713716) -> None :
714- for operator in [GreaterThan , GreaterThanOrEqual ]: # type: ignore
715- should_read = _InclusiveMetricsEvaluator (schema_data_file_nan , operator ("all_nan" , 1 )).eval (data_file_nan ) # type: ignore[arg-type]
717+ operators : tuple [type [LiteralPredicate [Any ]], ...] = (GreaterThan , GreaterThanOrEqual )
718+ for operator in operators :
719+ should_read = _InclusiveMetricsEvaluator (schema_data_file_nan , operator ("all_nan" , 1 )).eval (data_file_nan )
716720 assert not should_read , "Should not match: all nan column doesn't contain number"
717721
718- should_read = _InclusiveMetricsEvaluator (schema_data_file_nan , operator ("max_nan" , 1 )).eval (data_file_nan ) # type: ignore[arg-type]
722+ should_read = _InclusiveMetricsEvaluator (schema_data_file_nan , operator ("max_nan" , 1 )).eval (data_file_nan )
719723 assert should_read , "Should match: upper bound is larger than 1"
720724
721- should_read = _InclusiveMetricsEvaluator (schema_data_file_nan , operator ("max_nan" , 10 )).eval (data_file_nan ) # type: ignore[arg-type]
725+ should_read = _InclusiveMetricsEvaluator (schema_data_file_nan , operator ("max_nan" , 10 )).eval (data_file_nan )
722726 assert should_read , "Should match: upper bound is larger than 10"
723727
724- should_read = _InclusiveMetricsEvaluator (schema_data_file_nan , operator ("min_max_nan" , 1 )).eval (data_file_nan ) # type: ignore[arg-type]
728+ should_read = _InclusiveMetricsEvaluator (schema_data_file_nan , operator ("min_max_nan" , 1 )).eval (data_file_nan )
725729 assert should_read , "Should match: no visibility"
726730
727- should_read = _InclusiveMetricsEvaluator (schema_data_file_nan , operator ("all_nan_null_bounds" , 1 )).eval (data_file_nan ) # type: ignore[arg-type]
731+ should_read = _InclusiveMetricsEvaluator (schema_data_file_nan , operator ("all_nan_null_bounds" , 1 )).eval (data_file_nan )
728732 assert not should_read , "Should not match: all nan column doesn't contain number"
729733
730- should_read = _InclusiveMetricsEvaluator (schema_data_file_nan , operator ("some_nan_correct_bounds" , 1 )).eval (data_file_nan ) # type: ignore[arg-type]
734+ should_read = _InclusiveMetricsEvaluator (schema_data_file_nan , operator ("some_nan_correct_bounds" , 1 )).eval (data_file_nan )
731735 assert should_read , "Should match: 1 is smaller than upper bound"
732736
733- should_read = _InclusiveMetricsEvaluator (schema_data_file_nan , operator ("some_nan_correct_bounds" , 10 )).eval ( # type: ignore[arg-type]
737+ should_read = _InclusiveMetricsEvaluator (schema_data_file_nan , operator ("some_nan_correct_bounds" , 10 )).eval (
734738 data_file_nan
735739 )
736740 assert should_read , "Should match: 10 is smaller than upper bound"
737741
738- should_read = _InclusiveMetricsEvaluator (schema_data_file_nan , operator ("all_nan" , 30 )).eval (data_file_nan ) # type: ignore[arg-type]
742+ should_read = _InclusiveMetricsEvaluator (schema_data_file_nan , operator ("all_nan" , 30 )).eval (data_file_nan )
739743 assert not should_read , "Should not match: 30 is greater than upper bound"
740744
741745
@@ -1162,7 +1166,7 @@ def test_strict_missing_stats(strict_data_file_schema: Schema, strict_data_file_
11621166 upper_bounds = None ,
11631167 )
11641168
1165- expressions = [
1169+ expressions : list [ BooleanExpression ] = [
11661170 LessThan ("no_stats" , 5 ),
11671171 LessThanOrEqual ("no_stats" , 30 ),
11681172 EqualTo ("no_stats" , 70 ),
@@ -1185,7 +1189,7 @@ def test_strict_zero_record_file_stats(strict_data_file_schema: Schema) -> None:
11851189 file_path = "file_1.parquet" , file_format = FileFormat .PARQUET , partition = Record (), record_count = 0
11861190 )
11871191
1188- expressions = [
1192+ expressions : list [ BooleanExpression ] = [
11891193 LessThan ("no_stats" , 5 ),
11901194 LessThanOrEqual ("no_stats" , 30 ),
11911195 EqualTo ("no_stats" , 70 ),
0 commit comments