Skip to content

Commit f7c6753

Browse files
authored
lint: remove ignoring ruff rule B905 (zip-without-explicit-strict) (#2701)
<!-- Thanks for opening a pull request! --> <!-- In the case this PR will resolve an issue, please replace ${GITHUB_ISSUE_ID} below with the actual Github issue id. --> <!-- Closes #${GITHUB_ISSUE_ID} --> # Rationale for this change Removes ignoring ruff rule [(B905 zip-without-explicit-strict)](https://docs.astral.sh/ruff/rules/zip-without-explicit-strict/) Use `strict=True` in all zip instances Relates to #2700 Follow up to #2696 ## Are these changes tested? Yes, existing test suite ## Are there any user-facing changes? No <!-- In the case of user-facing changes, please add the changelog label. -->
1 parent ef5b771 commit f7c6753

File tree

16 files changed

+67
-52
lines changed

16 files changed

+67
-52
lines changed

pyiceberg/avro/resolver.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -281,7 +281,7 @@ def struct(self, file_schema: StructType, record_struct: IcebergType | None, fil
281281
record_struct_positions: Dict[int, int] = {field.field_id: pos for pos, field in enumerate(record_struct.fields)}
282282
results: List[Tuple[int | None, Writer]] = []
283283

284-
for writer, file_field in zip(file_writers, file_schema.fields):
284+
for writer, file_field in zip(file_writers, file_schema.fields, strict=True):
285285
if file_field.field_id in record_struct_positions:
286286
results.append((record_struct_positions[file_field.field_id], writer))
287287
elif file_field.required:
@@ -408,7 +408,7 @@ def struct(self, struct: StructType, expected_struct: IcebergType | None, field_
408408
# Check if we need to convert it to an Enum
409409
result_reader if not (enum_type := self.read_enums.get(field.field_id)) else EnumReader(enum_type, result_reader),
410410
)
411-
for field, result_reader in zip(struct.fields, field_readers)
411+
for field, result_reader in zip(struct.fields, field_readers, strict=True)
412412
]
413413

414414
file_fields = {field.field_id for field in struct.fields}

pyiceberg/io/pyarrow.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1898,7 +1898,7 @@ def struct(self, struct: StructType, struct_array: pa.Array | None, field_result
18981898
return None
18991899
field_arrays: List[pa.Array] = []
19001900
fields: List[pa.Field] = []
1901-
for field, field_array in zip(struct.fields, field_results):
1901+
for field, field_array in zip(struct.fields, field_results, strict=True):
19021902
if field_array is not None:
19031903
array = self._cast_if_needed(field, field_array)
19041904
field_arrays.append(array)
@@ -2840,7 +2840,7 @@ def _determine_partitions(spec: PartitionSpec, schema: Schema, arrow_table: pa.T
28402840
# to avoid conflicts
28412841
partition_fields = [f"_partition_{field.name}" for field in spec.fields]
28422842

2843-
for partition, name in zip(spec.fields, partition_fields):
2843+
for partition, name in zip(spec.fields, partition_fields, strict=True):
28442844
source_field = schema.find_field(partition.source_id)
28452845
full_field_name = schema.find_column_name(partition.source_id)
28462846
if full_field_name is None:
@@ -2854,7 +2854,7 @@ def _determine_partitions(spec: PartitionSpec, schema: Schema, arrow_table: pa.T
28542854
partition_key = PartitionKey(
28552855
field_values=[
28562856
PartitionFieldValue(field=field, value=unique_partition[name])
2857-
for field, name in zip(spec.fields, partition_fields)
2857+
for field, name in zip(spec.fields, partition_fields, strict=True)
28582858
],
28592859
partition_spec=spec,
28602860
schema=schema,
@@ -2868,7 +2868,7 @@ def _determine_partitions(spec: PartitionSpec, schema: Schema, arrow_table: pa.T
28682868
if unique_partition[partition_field_name] is not None
28692869
else pc.field(partition_field_name).is_null()
28702870
)
2871-
for field, partition_field_name in zip(spec.fields, partition_fields)
2871+
for field, partition_field_name in zip(spec.fields, partition_fields, strict=True)
28722872
],
28732873
)
28742874
)

pyiceberg/partitioning.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -202,7 +202,7 @@ def compatible_with(self, other: PartitionSpec) -> bool:
202202
this_field.source_id == that_field.source_id
203203
and this_field.transform == that_field.transform
204204
and this_field.name == that_field.name
205-
for this_field, that_field in zip(self.fields, other.fields)
205+
for this_field, that_field in zip(self.fields, other.fields, strict=True)
206206
)
207207

208208
def partition_type(self, schema: Schema) -> StructType:
@@ -242,7 +242,7 @@ def partition_to_path(self, data: Record, schema: Schema) -> str:
242242
value_strs.append(quote_plus(value_str, safe=""))
243243
field_strs.append(quote_plus(partition_field.name, safe=""))
244244

245-
path = "/".join([field_str + "=" + value_str for field_str, value_str in zip(field_strs, value_strs)])
245+
path = "/".join([field_str + "=" + value_str for field_str, value_str in zip(field_strs, value_strs, strict=True)])
246246
return path
247247

248248

pyiceberg/schema.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -125,7 +125,7 @@ def __eq__(self, other: Any) -> bool:
125125
return False
126126

127127
identifier_field_ids_is_equal = self.identifier_field_ids == other.identifier_field_ids
128-
schema_is_equal = all(lhs == rhs for lhs, rhs in zip(self.columns, other.columns))
128+
schema_is_equal = all(lhs == rhs for lhs, rhs in zip(self.columns, other.columns, strict=True))
129129

130130
return identifier_field_ids_is_equal and schema_is_equal
131131

@@ -1317,7 +1317,7 @@ def schema(self, schema: Schema, struct_result: Callable[[], StructType]) -> Sch
13171317
def struct(self, struct: StructType, field_results: List[Callable[[], IcebergType]]) -> StructType:
13181318
new_ids = [self._get_and_increment(field.field_id) for field in struct.fields]
13191319
new_fields = []
1320-
for field_id, field, field_type in zip(new_ids, struct.fields, field_results):
1320+
for field_id, field, field_type in zip(new_ids, struct.fields, field_results, strict=True):
13211321
new_fields.append(
13221322
NestedField(
13231323
field_id=field_id,

pyiceberg/table/metadata.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -337,7 +337,9 @@ def _generate_snapshot_id() -> int:
337337
"""
338338
rnd_uuid = uuid.uuid4()
339339
snapshot_id = int.from_bytes(
340-
bytes(lhs ^ rhs for lhs, rhs in zip(rnd_uuid.bytes[0:8], rnd_uuid.bytes[8:16])), byteorder="little", signed=True
340+
bytes(lhs ^ rhs for lhs, rhs in zip(rnd_uuid.bytes[0:8], rnd_uuid.bytes[8:16], strict=True)),
341+
byteorder="little",
342+
signed=True,
341343
)
342344
snapshot_id = snapshot_id if snapshot_id >= 0 else snapshot_id * -1
343345

pyiceberg/table/name_mapping.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -155,7 +155,7 @@ def schema(self, schema: Schema, struct_result: List[MappedField]) -> List[Mappe
155155
def struct(self, struct: StructType, field_results: List[List[MappedField]]) -> List[MappedField]:
156156
return [
157157
MappedField(field_id=field.field_id, names=[field.name], fields=result)
158-
for field, result in zip(struct.fields, field_results)
158+
for field, result in zip(struct.fields, field_results, strict=True)
159159
]
160160

161161
def field(self, field: NestedField, field_result: List[MappedField]) -> List[MappedField]:

pyiceberg/table/upsert_util.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -103,7 +103,9 @@ def get_rows_to_update(source_table: pa.Table, target_table: pa.Table, join_cols
103103
# Step 4: Compare all rows using Python
104104
to_update_indices = []
105105
for source_idx, target_idx in zip(
106-
matching_indices[SOURCE_INDEX_COLUMN_NAME].to_pylist(), matching_indices[TARGET_INDEX_COLUMN_NAME].to_pylist()
106+
matching_indices[SOURCE_INDEX_COLUMN_NAME].to_pylist(),
107+
matching_indices[TARGET_INDEX_COLUMN_NAME].to_pylist(),
108+
strict=True,
107109
):
108110
source_row = source_table.slice(source_idx, 1)
109111
target_row = target_table.slice(target_idx, 1)

pyiceberg/utils/lazydict.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ def __init__(self, contents: Sequence[Sequence[K | V]]):
4646
def _build_dict(self) -> Dict[K, V]:
4747
self._dict = {}
4848
for item in self._contents:
49-
self._dict.update(dict(zip(cast(Sequence[K], item[::2]), cast(Sequence[V], item[1::2]))))
49+
self._dict.update(dict(zip(cast(Sequence[K], item[::2]), cast(Sequence[V], item[1::2]), strict=True)))
5050

5151
return self._dict
5252

ruff.toml

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,15 @@ select = [
5757
"I", # isort
5858
"UP", # pyupgrade
5959
]
60-
ignore = ["E501","E203","B024","B028","UP037", "UP035", "UP006", "B905"]
60+
ignore = [
61+
"E501",
62+
"E203",
63+
"B024",
64+
"B028",
65+
"UP037",
66+
"UP035",
67+
"UP006"
68+
]
6169

6270
# Allow autofix for all enabled rules (when `--fix`) is provided.
6371
fixable = ["ALL"]

tests/integration/test_add_files.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -713,7 +713,7 @@ def test_add_file_with_valid_nullability_diff(spark: SparkSession, session_catal
713713
rhs = written_arrow_table.to_pandas()
714714

715715
for column in written_arrow_table.column_names:
716-
for left, right in zip(lhs[column].to_list(), rhs[column].to_list()):
716+
for left, right in zip(lhs[column].to_list(), rhs[column].to_list(), strict=True):
717717
assert left == right
718718

719719

@@ -755,7 +755,7 @@ def test_add_files_with_valid_upcast(
755755
rhs = written_arrow_table.to_pandas()
756756

757757
for column in written_arrow_table.column_names:
758-
for left, right in zip(lhs[column].to_list(), rhs[column].to_list()):
758+
for left, right in zip(lhs[column].to_list(), rhs[column].to_list(), strict=True):
759759
if column == "map":
760760
# Arrow returns a list of tuples, instead of a dict
761761
right = dict(right)
@@ -802,7 +802,7 @@ def test_add_files_subset_of_schema(spark: SparkSession, session_catalog: Catalo
802802
rhs = written_arrow_table.to_pandas()
803803

804804
for column in written_arrow_table.column_names:
805-
for left, right in zip(lhs[column].to_list(), rhs[column].to_list()):
805+
for left, right in zip(lhs[column].to_list(), rhs[column].to_list(), strict=True):
806806
assert left == right
807807

808808

0 commit comments

Comments
 (0)