From 0e8b84566db0ec5c1cd28bda8e6b6c2c9df9f143 Mon Sep 17 00:00:00 2001 From: Dimitri Papadopoulos <3234522+DimitriPapadopoulos@users.noreply.github.com> Date: Sat, 25 Jan 2025 13:51:41 +0100 Subject: [PATCH 1/4] Apply ruff rule RUF015 RUF015 Prefer `next(iter(reader()))` over single element slice --- tests/test_reader.py | 2 +- tests/test_upgrade.py | 2 +- tests/test_writer.py | 8 ++++---- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/tests/test_reader.py b/tests/test_reader.py index 67d69f4f..86188a0e 100644 --- a/tests/test_reader.py +++ b/tests/test_reader.py @@ -36,7 +36,7 @@ def test_label(self): def test_omero(self): reader = Reader(parse_url(str(self.path)))() - image_node = list(reader)[0] + image_node = next(iter(reader)) omero = image_node.zarr.root_attrs.get("omero") assert "channels" in omero assert isinstance(omero["channels"], list) diff --git a/tests/test_upgrade.py b/tests/test_upgrade.py index cda9bfb7..7c01476d 100644 --- a/tests/test_upgrade.py +++ b/tests/test_upgrade.py @@ -29,7 +29,7 @@ def assert_data(self, path, shape, fmt, mode="r"): loc = parse_url(path, mode=mode, fmt=fmt) assert loc reader = Reader(loc) - node = list(reader())[0] + node = next(iter(reader())) assert Multiscales.matches(node.zarr) assert node.data[0].shape == shape assert np.max(node.data[0]) > 0 diff --git a/tests/test_writer.py b/tests/test_writer.py index b6011707..a606b8b4 100644 --- a/tests/test_writer.py +++ b/tests/test_writer.py @@ -108,7 +108,7 @@ def test_writer( # Verify reader = Reader(parse_url(f"{self.path}/test")) - node = list(reader())[0] + node = next(iter(reader())) assert Multiscales.matches(node.zarr) if version.version in ("0.1", "0.2"): # v0.1 and v0.2 MUST be 5D @@ -136,7 +136,7 @@ def test_write_image_current(self, array_constructor): data = array_constructor(data) write_image(data, self.group, axes="zyx") reader = Reader(parse_url(f"{self.path}/test")) - image_node = list(reader())[0] + image_node = next(iter(reader())) for transfs in image_node.metadata["coordinateTransformations"]: assert len(transfs) == 1 assert transfs[0]["type"] == "scale" @@ -186,7 +186,7 @@ def test_write_image_dask(self, read_from_zarr, compute): dask_delayed_jobs = persist(*dask_delayed_jobs) reader = Reader(parse_url(f"{self.path}/test")) - image_node = list(reader())[0] + image_node = next(iter(reader())) first_chunk = [c[0] for c in image_node.data[0].chunks] assert tuple(first_chunk) == _retuple(chunks, image_node.data[0].shape) for level, transfs in enumerate( @@ -1069,7 +1069,7 @@ def scaler(self, request): def verify_label_data(self, label_name, label_data, fmt, shape, transformations): # Verify image data reader = Reader(parse_url(f"{self.path}/labels/{label_name}")) - node = list(reader())[0] + node = next(iter(reader())) assert Multiscales.matches(node.zarr) if fmt.version in ("0.1", "0.2"): # v0.1 and v0.2 MUST be 5D From a6d7fea995db560302bd4d6cd4032230e5c5a2bd Mon Sep 17 00:00:00 2001 From: Dimitri Papadopoulos <3234522+DimitriPapadopoulos@users.noreply.github.com> Date: Sat, 25 Jan 2025 13:52:06 +0100 Subject: [PATCH 2/4] Apply ruff rule RUF021 RUF021 Parenthesize `a and b` expressions when chaining `and` and `or` together, to make the precedence clear --- ome_zarr/io.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ome_zarr/io.py b/ome_zarr/io.py index c2fe60e7..896b217f 100644 --- a/ome_zarr/io.py +++ b/ome_zarr/io.py @@ -135,7 +135,7 @@ def basename(self) -> str: >>> ZarrLocation("https://example.com/baz/").basename() 'baz' """ - path = self.__path.endswith("/") and self.__path[0:-1] or self.__path + path = (self.__path.endswith("/") and self.__path[0:-1]) or self.__path return path.split("/")[-1] # TODO: update to from __future__ import annotations with 3.7+ From e5870be34f757ee379c2ec9faf955b84f248907a Mon Sep 17 00:00:00 2001 From: Dimitri Papadopoulos <3234522+DimitriPapadopoulos@users.noreply.github.com> Date: Sat, 25 Jan 2025 13:53:18 +0100 Subject: [PATCH 3/4] Apply ruff rule RUF036 RUF036 `None` not at the end of the type annotation. --- ome_zarr/writer.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ome_zarr/writer.py b/ome_zarr/writer.py index db811b4c..9ce3f86e 100644 --- a/ome_zarr/writer.py +++ b/ome_zarr/writer.py @@ -28,7 +28,7 @@ def _get_valid_axes( ndim: Optional[int] = None, axes: Optional[Union[str, list[str], list[dict[str, str]]]] = None, fmt: Format = CurrentFormat(), -) -> Union[None, list[str], list[dict[str, str]]]: +) -> Union[list[str], list[dict[str, str]], None]: """Returns list of axes valid for fmt.version or raise exception if invalid""" if fmt.version in ("0.1", "0.2"): From d94ee0bf926b495e94cdc71100fc8ccccb78eda8 Mon Sep 17 00:00:00 2001 From: Dimitri Papadopoulos <3234522+DimitriPapadopoulos@users.noreply.github.com> Date: Sat, 25 Jan 2025 13:54:36 +0100 Subject: [PATCH 4/4] Apply ruff rule RUF046 RUF046 Value being cast to `int` is already an integer --- ome_zarr/csv.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ome_zarr/csv.py b/ome_zarr/csv.py index b197c1bb..f1c6bc88 100644 --- a/ome_zarr/csv.py +++ b/ome_zarr/csv.py @@ -20,7 +20,7 @@ def parse_csv_value(value: str, col_type: str) -> Union[str, float, int, bool]: if col_type == "d": rv = float(value) elif col_type == "l": - rv = int(round(float(value))) + rv = round(float(value)) elif col_type == "b": rv = bool(value) except ValueError: