|
1 | 1 | import subprocess |
2 | | -from dataclasses import asdict, dataclass |
| 2 | +from dataclasses import dataclass |
3 | 3 | from itertools import product |
4 | 4 | from pathlib import Path |
5 | 5 |
|
|
11 | 11 | import zarr |
12 | 12 | from zarr.core.array import Array |
13 | 13 | from zarr.core.dtype.npy.string import VariableLengthString |
14 | | -from zarr.core.metadata.v2 import ArrayV2Metadata |
15 | 14 | from zarr.storage import LocalStore |
16 | 15 |
|
17 | 16 |
|
18 | 17 | def runner_installed() -> bool: |
| 18 | + """ |
| 19 | + Check if a PEP-723 compliant python script runner is installed. |
| 20 | + """ |
19 | 21 | try: |
20 | 22 | subprocess.check_output(["uv", "--version"]) |
21 | | - return True |
| 23 | + return True # noqa: TRY300 |
22 | 24 | except FileNotFoundError: |
23 | 25 | return False |
24 | 26 |
|
25 | 27 |
|
26 | | -def array_metadata_equals(a: ArrayV2Metadata, b: ArrayV2Metadata) -> bool: |
27 | | - dict_a, dict_b = asdict(a), asdict(b) |
28 | | - fill_value_a, fill_value_b = dict_a.pop("fill_value"), dict_b.pop("fill_value") |
29 | | - if ( |
30 | | - isinstance(fill_value_a, float) |
31 | | - and isinstance(fill_value_b, float) |
32 | | - and np.isnan(fill_value_a) |
33 | | - and np.isnan(fill_value_b) |
34 | | - ): |
35 | | - return dict_a == dict_b |
36 | | - else: |
37 | | - return fill_value_a == fill_value_b and dict_a == dict_b |
38 | | - |
39 | | - |
40 | 28 | @dataclass(kw_only=True) |
41 | 29 | class ArrayParams: |
42 | 30 | values: np.ndarray[tuple[int], np.dtype[np.generic]] |
43 | | - fill_value: np.generic | str |
| 31 | + fill_value: np.generic | str | int |
44 | 32 | compressor: numcodecs.abc.Codec |
45 | 33 |
|
46 | 34 |
|
@@ -121,5 +109,5 @@ def test_roundtrip(source_array: Array, tmp_path: Path) -> None: |
121 | 109 | ) |
122 | 110 | assert copy_op.returncode == 0 |
123 | 111 | out_array = zarr.open_array(store=out_path, mode="r", zarr_format=2) |
124 | | - assert array_metadata_equals(source_array.metadata, out_array.metadata) |
| 112 | + assert source_array.metadata.to_dict() == out_array.metadata.to_dict() |
125 | 113 | assert np.array_equal(source_array[:], out_array[:]) |
0 commit comments