From b0c808a689ff54352ce122c8fea65b58c94618b6 Mon Sep 17 00:00:00 2001 From: Dimitri Papadopoulos <3234522+DimitriPapadopoulos@users.noreply.github.com> Date: Wed, 25 Sep 2024 08:55:28 +0200 Subject: [PATCH 1/5] Apply ruff/flake8-comprehensions rule C401 C401 Unnecessary generator (rewrite as a `set` comprehension) --- src/zarr/codecs/sharding.py | 4 ++-- src/zarr/store/memory.py | 2 +- src/zarr/store/zip.py | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/zarr/codecs/sharding.py b/src/zarr/codecs/sharding.py index 3ae51ce54..1f9048388 100644 --- a/src/zarr/codecs/sharding.py +++ b/src/zarr/codecs/sharding.py @@ -151,7 +151,7 @@ def is_dense(self, chunk_byte_length: int) -> bool: # Are all non-empty offsets unique? if len( - set(offset for offset, _ in sorted_offsets_and_lengths if offset != MAX_UINT_64) + {offset for offset, _ in sorted_offsets_and_lengths if offset != MAX_UINT_64} ) != len(sorted_offsets_and_lengths): return False @@ -477,7 +477,7 @@ async def _decode_partial_single( ) indexed_chunks = list(indexer) - all_chunk_coords = set(chunk_coords for chunk_coords, _, _ in indexed_chunks) + all_chunk_coords = {chunk_coords for chunk_coords, _, _ in indexed_chunks} # reading bytes of all requested chunks shard_dict: ShardMapping = {} diff --git a/src/zarr/store/memory.py b/src/zarr/store/memory.py index 83734e894..2181cbf43 100644 --- a/src/zarr/store/memory.py +++ b/src/zarr/store/memory.py @@ -136,7 +136,7 @@ async def list_dir(self, prefix: str) -> AsyncGenerator[str, None]: prefix = prefix[:-1] if prefix == "": - keys_unique = set(k.split("/")[0] for k in self._store_dict) + keys_unique = {k.split("/")[0] for k in self._store_dict} else: # Our dictionary doesn't contain directory markers, but we want to include # a pseudo directory when there's a nested item and we're listing an diff --git a/src/zarr/store/zip.py b/src/zarr/store/zip.py index 2e4927ace..2c3b16a65 100644 --- a/src/zarr/store/zip.py +++ b/src/zarr/store/zip.py @@ -232,7 +232,7 @@ async def list_dir(self, prefix: str) -> AsyncGenerator[str, None]: keys = self._zf.namelist() seen = set() if prefix == "": - keys_unique = set(k.split("/")[0] for k in keys) + keys_unique = {k.split("/")[0] for k in keys} for key in keys_unique: if key not in seen: seen.add(key) From 058f58035bae789941f1c476e0f57db948d8851b Mon Sep 17 00:00:00 2001 From: Dimitri Papadopoulos <3234522+DimitriPapadopoulos@users.noreply.github.com> Date: Wed, 25 Sep 2024 08:56:12 +0200 Subject: [PATCH 2/5] Apply ruff/flake8-comprehensions rule C408 C408 Unnecessary `dict` call (rewrite as a literal) --- bench/compress_normal.py | 2 +- tests/v3/test_store/test_remote.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/bench/compress_normal.py b/bench/compress_normal.py index 608cfe8dc..179520a0e 100644 --- a/bench/compress_normal.py +++ b/bench/compress_normal.py @@ -16,7 +16,7 @@ a, chunks=1000000, compression="blosc", - compression_opts=dict(cname="lz4", clevel=5, shuffle=2), + compression_opts={"cname": "lz4", "clevel": 5, "shuffle": 2}, ) print(z) diff --git a/tests/v3/test_store/test_remote.py b/tests/v3/test_store/test_remote.py index a6457cfeb..afc42c6a6 100644 --- a/tests/v3/test_store/test_remote.py +++ b/tests/v3/test_store/test_remote.py @@ -93,7 +93,7 @@ async def test_basic() -> None: store = RemoteStore.from_url( f"s3://{test_bucket_name}", mode="w", - storage_options=dict(endpoint_url=endpoint_url, anon=False), + storage_options={"endpoint_url": endpoint_url, "anon": False}, ) assert await _collect_aiterator(store.list()) == () assert not await store.exists("foo") From 72a185a1c7f2e471e390adcec3c1e051c5f92bc5 Mon Sep 17 00:00:00 2001 From: Dimitri Papadopoulos <3234522+DimitriPapadopoulos@users.noreply.github.com> Date: Wed, 25 Sep 2024 08:57:06 +0200 Subject: [PATCH 3/5] Apply ruff/flake8-comprehensions rule C409 C409 Unnecessary list comprehension passed to `tuple()` (rewrite as a generator) --- src/zarr/codecs/sharding.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/zarr/codecs/sharding.py b/src/zarr/codecs/sharding.py index 1f9048388..6282750f2 100644 --- a/src/zarr/codecs/sharding.py +++ b/src/zarr/codecs/sharding.py @@ -380,8 +380,8 @@ def to_dict(self) -> dict[str, JSON]: "name": "sharding_indexed", "configuration": { "chunk_shape": self.chunk_shape, - "codecs": tuple([s.to_dict() for s in self.codecs]), - "index_codecs": tuple([s.to_dict() for s in self.index_codecs]), + "codecs": tuple(s.to_dict() for s in self.codecs), + "index_codecs": tuple(s.to_dict() for s in self.index_codecs), "index_location": self.index_location.value, }, } From cb177d9f6117f223454925fb6826aa1c20462bc5 Mon Sep 17 00:00:00 2001 From: Dimitri Papadopoulos <3234522+DimitriPapadopoulos@users.noreply.github.com> Date: Wed, 25 Sep 2024 08:58:19 +0200 Subject: [PATCH 4/5] Apply ruff/flake8-comprehensions rule C416 C416 Unnecessary `list` comprehension (rewrite using `list()`) --- tests/v3/test_group.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/v3/test_group.py b/tests/v3/test_group.py index 8beb344b4..bda194d65 100644 --- a/tests/v3/test_group.py +++ b/tests/v3/test_group.py @@ -271,7 +271,7 @@ def test_group_iter(store: Store, zarr_format: ZarrFormat) -> None: group = Group.from_store(store, zarr_format=zarr_format) with pytest.raises(NotImplementedError): - [x for x in group] + list(group) def test_group_len(store: Store, zarr_format: ZarrFormat) -> None: From 63050ae6c7ba6dd09b88351f836b008167685bfe Mon Sep 17 00:00:00 2001 From: Dimitri Papadopoulos <3234522+DimitriPapadopoulos@users.noreply.github.com> Date: Wed, 25 Sep 2024 08:59:08 +0200 Subject: [PATCH 5/5] Enforce ruff/flake8-comprehensions rules (C4) --- pyproject.toml | 1 + 1 file changed, 1 insertion(+) diff --git a/pyproject.toml b/pyproject.toml index ed6c25893..973f1f363 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -208,6 +208,7 @@ extend-exclude = [ [tool.ruff.lint] extend-select = [ "B", # flake8-bugbear + "C4", # flake8-comprehensions "I", # isort "ISC", # flake8-implicit-str-concat "PGH", # pygrep-hooks