diff --git a/ngff_zarr/to_ngff_zarr.py b/ngff_zarr/to_ngff_zarr.py index a288435e..69962b12 100644 --- a/ngff_zarr/to_ngff_zarr.py +++ b/ngff_zarr/to_ngff_zarr.py @@ -71,23 +71,66 @@ def _prep_for_to_zarr(store: StoreLike, arr: dask.array.Array) -> dask.array.Arr ) -def _write_with_tensorstore(store_path: str, array, region, chunks) -> None: +def _numpy_to_zarr_dtype(dtype): + dtype_map = { + "bool": "bool", + "int8": "int8", + "int16": "int16", + "int32": "int32", + "int64": "int64", + "uint8": "uint8", + "uint16": "uint16", + "uint32": "uint32", + "uint64": "uint64", + "float16": "float16", + "float32": "float32", + "float64": "float64", + "complex64": "complex64", + "complex128": "complex128", + } + + dtype_str = str(dtype) + + # Handle endianness - strip byte order chars + if dtype_str.startswith(("<", ">", "|")): + dtype_str = dtype_str[1:] + + # Look up corresponding zarr dtype + try: + return dtype_map[dtype_str] + except KeyError: + raise ValueError(f"dtype {dtype} cannot be mapped to Zarr v3 core dtype") + + +def _write_with_tensorstore( + store_path: str, array, region, chunks, zarr_format +) -> None: """Write array using tensorstore backend""" import tensorstore as ts spec = { - "driver": "zarr", "kvstore": { "driver": "file", "path": store_path, }, "metadata": { - "chunks": chunks, "shape": array.shape, - "dtype": array.dtype.str, - "dimension_separator": "/", }, } + if zarr_format == 2: + spec["driver"] = "zarr" + spec["metadata"]["chunks"] = chunks + spec["metadata"]["dimension_separator"] = "/" + spec["metadata"]["dtype"] = array.dtype.str + elif zarr_format == 3: + spec["driver"] = "zarr3" + spec["metadata"]["chunk_grid"] = { + "name": "regular", + "configuration": {"chunk_shape": chunks}, + } + spec["metadata"]["data_type"] = _numpy_to_zarr_dtype(array.dtype) + else: + raise ValueError(f"Unsupported zarr format: {zarr_format}") dataset = ts.open(spec, create=True, dtype=array.dtype).result() dataset[...] = array[region] @@ -134,7 +177,7 @@ def to_ngff_zarr( if isinstance(store, (str, Path)): store_path = str(store) else: - raise ValueError("Tensorstore requires a path-like store") + raise ValueError("use_tensorstore currently requires a path-like store") if version != "0.4" and version != "0.5": raise ValueError(f"Unsupported version: {version}") @@ -145,7 +188,6 @@ def to_ngff_zarr( zarr_format = 2 if version == "0.4" else 3 format_kwargs = {"zarr_format": zarr_format} if zarr_version_major >= 3 else {} if version == "0.4": - # root = zarr.group(store, overwrite=overwrite, chunk_store=chunk_store) root = zarr.open_group( store, mode="w" if overwrite else "a", @@ -153,6 +195,10 @@ def to_ngff_zarr( **format_kwargs, ) else: + if zarr_version_major < 3: + raise ValueError( + "zarr-python version >= 3.0.0b2 required for OME-Zarr version >= 0.5" + ) # For version >= 0.5, open root with Zarr v3 root = zarr.open_group( store, @@ -342,6 +388,7 @@ def to_ngff_zarr( optimized, region, [c[0] for c in arr_region.chunks], + zarr_format=zarr_format, **kwargs, ) else: @@ -365,7 +412,12 @@ def to_ngff_zarr( scale_path = f"{store_path}/{path}" region = tuple([slice(arr.shape[i]) for i in range(arr.ndim)]) _write_with_tensorstore( - scale_path, arr, region, [c[0] for c in arr.chunks], **kwargs + scale_path, + arr, + region, + [c[0] for c in arr.chunks], + zarr_format=zarr_format, + **kwargs, ) else: arr = _prep_for_to_zarr(store, arr) diff --git a/pixi.lock b/pixi.lock index ae7133e7..1be8c2a3 100644 --- a/pixi.lock +++ b/pixi.lock @@ -227,8 +227,9 @@ environments: - pypi: https://files.pythonhosted.org/packages/2d/6a/885bc91484e1aa8f618f6f0228d76d0e67000b0fdd6090673b777e311913/asciitree-0.3.3.tar.gz - pypi: https://files.pythonhosted.org/packages/00/2e/d53fa4befbf2cfa713304affc7ca780ce4fc1fd8710527771b58311a3229/click-8.1.7-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/48/41/e1d85ca3cab0b674e277c8c4f678cf66a91cd2cecf93df94353a606fe0db/cloudpickle-3.1.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/01/cf/32f019be5de9f6e180926a50ee5f08648e686c7d9a59f2c5d0806a77b1c7/crc32c-2.7.1-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl - pypi: https://files.pythonhosted.org/packages/2a/72/33ff765a07913cb5061baa94718f3a17003aa29adc89642a68c295d47582/dask-2024.11.2-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/61/bf/fd60001b3abc5222d8eaa4a204cd8c0ae78e75adc688f33ce4bf25b7fafa/fasteners-0.19-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/0c/d5/c5db1ea3394c6e1732fb3286b3bd878b59507a8f77d32a2cebda7d7b7cd4/donfig-0.8.1.post1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/c6/b2/454d6e7f0158951d8a78c2e1eb4f69ae81beb8dca5fee9809c6c99e9d0d0/fsspec-2024.10.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/e1/6a/4604f9ae2fa62ef47b9de2fa5ad599589d28c9fd1d335f32759813dfa91e/importlib_resources-6.4.5-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/7f/17/ddc4e1c2a1f25425696b6f5904abde09af852b7ea85e0af52f175adaf056/itkwasm-1.0b184-py3-none-any.whl @@ -247,7 +248,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/03/98/eb27cc78ad3af8e302c9d8ff4977f5026676e130d28dd7578132a457170c/toolz-1.0.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/26/9f/ad63fc0248c5379346306f8668cda6e2e2e9c95e01216d2b8ffd9ff037d0/typing_extensions-4.12.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/5e/24/806c5bd1b5e30c83cc9d182795edebfbfe24483f82fb18823b309a6656b5/wasmtime-27.0.1-py3-none-manylinux1_x86_64.whl - - pypi: https://files.pythonhosted.org/packages/ed/c9/142095e654c2b97133ff71df60979422717b29738b08bc8a1709a5d5e0d0/zarr-2.18.3-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/98/2b/36a15bd29d92410877547de73c1a440386fba5d5e95daaf24898b3bd0fc8/zarr-3.0.0b2-py3-none-any.whl - pypi: . linux-aarch64: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/_openmp_mutex-4.5-2_gnu.tar.bz2 @@ -278,8 +279,9 @@ environments: - pypi: https://files.pythonhosted.org/packages/2d/6a/885bc91484e1aa8f618f6f0228d76d0e67000b0fdd6090673b777e311913/asciitree-0.3.3.tar.gz - pypi: https://files.pythonhosted.org/packages/00/2e/d53fa4befbf2cfa713304affc7ca780ce4fc1fd8710527771b58311a3229/click-8.1.7-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/48/41/e1d85ca3cab0b674e277c8c4f678cf66a91cd2cecf93df94353a606fe0db/cloudpickle-3.1.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/a9/0d/3e797d1ed92d357a6a4c5b41cea15a538b27a8fdf18c7863747eb50b73ad/crc32c-2.7.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl - pypi: https://files.pythonhosted.org/packages/2a/72/33ff765a07913cb5061baa94718f3a17003aa29adc89642a68c295d47582/dask-2024.11.2-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/61/bf/fd60001b3abc5222d8eaa4a204cd8c0ae78e75adc688f33ce4bf25b7fafa/fasteners-0.19-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/0c/d5/c5db1ea3394c6e1732fb3286b3bd878b59507a8f77d32a2cebda7d7b7cd4/donfig-0.8.1.post1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/c6/b2/454d6e7f0158951d8a78c2e1eb4f69ae81beb8dca5fee9809c6c99e9d0d0/fsspec-2024.10.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/e1/6a/4604f9ae2fa62ef47b9de2fa5ad599589d28c9fd1d335f32759813dfa91e/importlib_resources-6.4.5-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/7f/17/ddc4e1c2a1f25425696b6f5904abde09af852b7ea85e0af52f175adaf056/itkwasm-1.0b184-py3-none-any.whl @@ -298,7 +300,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/03/98/eb27cc78ad3af8e302c9d8ff4977f5026676e130d28dd7578132a457170c/toolz-1.0.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/26/9f/ad63fc0248c5379346306f8668cda6e2e2e9c95e01216d2b8ffd9ff037d0/typing_extensions-4.12.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/3a/57/cd877b4797be239b4433f89a5a85c7bf2c5319dd91c7777b1867bebb664e/wasmtime-27.0.1-py3-none-manylinux2014_aarch64.whl - - pypi: https://files.pythonhosted.org/packages/ed/c9/142095e654c2b97133ff71df60979422717b29738b08bc8a1709a5d5e0d0/zarr-2.18.3-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/98/2b/36a15bd29d92410877547de73c1a440386fba5d5e95daaf24898b3bd0fc8/zarr-3.0.0b2-py3-none-any.whl - pypi: . osx-64: - conda: https://conda.anaconda.org/conda-forge/osx-64/bzip2-1.0.8-hfdf4475_7.conda @@ -323,8 +325,9 @@ environments: - pypi: https://files.pythonhosted.org/packages/2d/6a/885bc91484e1aa8f618f6f0228d76d0e67000b0fdd6090673b777e311913/asciitree-0.3.3.tar.gz - pypi: https://files.pythonhosted.org/packages/00/2e/d53fa4befbf2cfa713304affc7ca780ce4fc1fd8710527771b58311a3229/click-8.1.7-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/48/41/e1d85ca3cab0b674e277c8c4f678cf66a91cd2cecf93df94353a606fe0db/cloudpickle-3.1.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/4f/56/0dd652d4e950e6348bbf16b964b3325e4ad8220470774128fc0b0dd069cb/crc32c-2.7.1-cp313-cp313-macosx_10_13_x86_64.whl - pypi: https://files.pythonhosted.org/packages/2a/72/33ff765a07913cb5061baa94718f3a17003aa29adc89642a68c295d47582/dask-2024.11.2-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/61/bf/fd60001b3abc5222d8eaa4a204cd8c0ae78e75adc688f33ce4bf25b7fafa/fasteners-0.19-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/0c/d5/c5db1ea3394c6e1732fb3286b3bd878b59507a8f77d32a2cebda7d7b7cd4/donfig-0.8.1.post1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/c6/b2/454d6e7f0158951d8a78c2e1eb4f69ae81beb8dca5fee9809c6c99e9d0d0/fsspec-2024.10.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/e1/6a/4604f9ae2fa62ef47b9de2fa5ad599589d28c9fd1d335f32759813dfa91e/importlib_resources-6.4.5-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/7f/17/ddc4e1c2a1f25425696b6f5904abde09af852b7ea85e0af52f175adaf056/itkwasm-1.0b184-py3-none-any.whl @@ -343,7 +346,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/03/98/eb27cc78ad3af8e302c9d8ff4977f5026676e130d28dd7578132a457170c/toolz-1.0.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/26/9f/ad63fc0248c5379346306f8668cda6e2e2e9c95e01216d2b8ffd9ff037d0/typing_extensions-4.12.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/7c/eb/54889f4b799b1b345dcc169e80b363758cbb0092a3241a66284366f75e98/wasmtime-27.0.1-py3-none-macosx_10_13_x86_64.whl - - pypi: https://files.pythonhosted.org/packages/ed/c9/142095e654c2b97133ff71df60979422717b29738b08bc8a1709a5d5e0d0/zarr-2.18.3-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/98/2b/36a15bd29d92410877547de73c1a440386fba5d5e95daaf24898b3bd0fc8/zarr-3.0.0b2-py3-none-any.whl - pypi: . osx-arm64: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/bzip2-1.0.8-h99b78c6_7.conda @@ -368,8 +371,9 @@ environments: - pypi: https://files.pythonhosted.org/packages/2d/6a/885bc91484e1aa8f618f6f0228d76d0e67000b0fdd6090673b777e311913/asciitree-0.3.3.tar.gz - pypi: https://files.pythonhosted.org/packages/00/2e/d53fa4befbf2cfa713304affc7ca780ce4fc1fd8710527771b58311a3229/click-8.1.7-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/48/41/e1d85ca3cab0b674e277c8c4f678cf66a91cd2cecf93df94353a606fe0db/cloudpickle-3.1.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/47/02/2bd65fdef10139b6a802d83a7f966b7750fe5ffb1042f7cbe5dbb6403869/crc32c-2.7.1-cp313-cp313-macosx_11_0_arm64.whl - pypi: https://files.pythonhosted.org/packages/2a/72/33ff765a07913cb5061baa94718f3a17003aa29adc89642a68c295d47582/dask-2024.11.2-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/61/bf/fd60001b3abc5222d8eaa4a204cd8c0ae78e75adc688f33ce4bf25b7fafa/fasteners-0.19-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/0c/d5/c5db1ea3394c6e1732fb3286b3bd878b59507a8f77d32a2cebda7d7b7cd4/donfig-0.8.1.post1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/c6/b2/454d6e7f0158951d8a78c2e1eb4f69ae81beb8dca5fee9809c6c99e9d0d0/fsspec-2024.10.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/e1/6a/4604f9ae2fa62ef47b9de2fa5ad599589d28c9fd1d335f32759813dfa91e/importlib_resources-6.4.5-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/7f/17/ddc4e1c2a1f25425696b6f5904abde09af852b7ea85e0af52f175adaf056/itkwasm-1.0b184-py3-none-any.whl @@ -388,7 +392,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/03/98/eb27cc78ad3af8e302c9d8ff4977f5026676e130d28dd7578132a457170c/toolz-1.0.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/26/9f/ad63fc0248c5379346306f8668cda6e2e2e9c95e01216d2b8ffd9ff037d0/typing_extensions-4.12.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/6e/d8/38d1af31c1787e09642354c81215920a5bf59722a6786ed7e9622fd1f033/wasmtime-27.0.1-py3-none-macosx_11_0_arm64.whl - - pypi: https://files.pythonhosted.org/packages/ed/c9/142095e654c2b97133ff71df60979422717b29738b08bc8a1709a5d5e0d0/zarr-2.18.3-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/98/2b/36a15bd29d92410877547de73c1a440386fba5d5e95daaf24898b3bd0fc8/zarr-3.0.0b2-py3-none-any.whl - pypi: . win-64: - conda: https://conda.anaconda.org/conda-forge/win-64/bzip2-1.0.8-h2466b09_7.conda @@ -416,8 +420,9 @@ environments: - pypi: https://files.pythonhosted.org/packages/00/2e/d53fa4befbf2cfa713304affc7ca780ce4fc1fd8710527771b58311a3229/click-8.1.7-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/48/41/e1d85ca3cab0b674e277c8c4f678cf66a91cd2cecf93df94353a606fe0db/cloudpickle-3.1.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/d1/d6/3965ed04c63042e047cb6a3e6ed1a63a35087b6a609aa3a15ed8ac56c221/colorama-0.4.6-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/db/a0/f01ccfab538db07ef3f6b4ede46357ff147a81dd4f3c59ca6a34c791a549/crc32c-2.7.1-cp313-cp313-win_amd64.whl - pypi: https://files.pythonhosted.org/packages/2a/72/33ff765a07913cb5061baa94718f3a17003aa29adc89642a68c295d47582/dask-2024.11.2-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/61/bf/fd60001b3abc5222d8eaa4a204cd8c0ae78e75adc688f33ce4bf25b7fafa/fasteners-0.19-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/0c/d5/c5db1ea3394c6e1732fb3286b3bd878b59507a8f77d32a2cebda7d7b7cd4/donfig-0.8.1.post1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/c6/b2/454d6e7f0158951d8a78c2e1eb4f69ae81beb8dca5fee9809c6c99e9d0d0/fsspec-2024.10.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/e1/6a/4604f9ae2fa62ef47b9de2fa5ad599589d28c9fd1d335f32759813dfa91e/importlib_resources-6.4.5-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/7f/17/ddc4e1c2a1f25425696b6f5904abde09af852b7ea85e0af52f175adaf056/itkwasm-1.0b184-py3-none-any.whl @@ -436,7 +441,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/03/98/eb27cc78ad3af8e302c9d8ff4977f5026676e130d28dd7578132a457170c/toolz-1.0.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/26/9f/ad63fc0248c5379346306f8668cda6e2e2e9c95e01216d2b8ffd9ff037d0/typing_extensions-4.12.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/14/6f/f6b99d9ab1511398686e00d2a26371d99a7949531514379d731b3b7e6309/wasmtime-27.0.1-py3-none-win_amd64.whl - - pypi: https://files.pythonhosted.org/packages/ed/c9/142095e654c2b97133ff71df60979422717b29738b08bc8a1709a5d5e0d0/zarr-2.18.3-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/98/2b/36a15bd29d92410877547de73c1a440386fba5d5e95daaf24898b3bd0fc8/zarr-3.0.0b2-py3-none-any.whl - pypi: . docs: channels: @@ -1053,12 +1058,13 @@ environments: - pypi: https://files.pythonhosted.org/packages/6a/21/5b6702a7f963e95456c0de2d495f67bf5fd62840ac655dc451586d23d39a/attrs-24.2.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/00/2e/d53fa4befbf2cfa713304affc7ca780ce4fc1fd8710527771b58311a3229/click-8.1.7-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/48/41/e1d85ca3cab0b674e277c8c4f678cf66a91cd2cecf93df94353a606fe0db/cloudpickle-3.1.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/01/cf/32f019be5de9f6e180926a50ee5f08648e686c7d9a59f2c5d0806a77b1c7/crc32c-2.7.1-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl - pypi: https://files.pythonhosted.org/packages/2a/72/33ff765a07913cb5061baa94718f3a17003aa29adc89642a68c295d47582/dask-2024.11.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/e9/57/e7996529256b13009fa8f4c34d1d7229755cc7d2b054aa43edb6ca655578/dask_expr-1.1.19-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/22/70/e34e5090865c3f840256c462e4671937270317fdf260871cd72546449d54/dask_image-2024.5.3-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/06/46/01673060e83277a863baf0909b387cd809865cba2d5e7213db76516bedd9/deepdiff-8.0.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/f0/24/312287ead487290c13e62f6d987e59eb0e22b8088b3539dfe6f4062a8370/distributed-2024.11.2-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/61/bf/fd60001b3abc5222d8eaa4a204cd8c0ae78e75adc688f33ce4bf25b7fafa/fasteners-0.19-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/0c/d5/c5db1ea3394c6e1732fb3286b3bd878b59507a8f77d32a2cebda7d7b7cd4/donfig-0.8.1.post1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/c6/b2/454d6e7f0158951d8a78c2e1eb4f69ae81beb8dca5fee9809c6c99e9d0d0/fsspec-2024.10.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/dd/4f/dd24ea698e76fa1921da19a587f4127e7350b9b72e9189d6dddb5b254b82/imagecodecs-2024.9.22-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl - pypi: https://files.pythonhosted.org/packages/4e/e7/26045404a30c8a200e960fb54fbaf4b73d12e58cd28e03b306b084253f4f/imageio-2.36.0-py3-none-any.whl @@ -1112,7 +1118,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/26/9f/ad63fc0248c5379346306f8668cda6e2e2e9c95e01216d2b8ffd9ff037d0/typing_extensions-4.12.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/a6/ab/7e5f53c3b9d14972843a647d8d7a853969a58aecc7559cb3267302c94774/tzdata-2024.2-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/5e/24/806c5bd1b5e30c83cc9d182795edebfbfe24483f82fb18823b309a6656b5/wasmtime-27.0.1-py3-none-manylinux1_x86_64.whl - - pypi: https://files.pythonhosted.org/packages/ed/c9/142095e654c2b97133ff71df60979422717b29738b08bc8a1709a5d5e0d0/zarr-2.18.3-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/98/2b/36a15bd29d92410877547de73c1a440386fba5d5e95daaf24898b3bd0fc8/zarr-3.0.0b2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/80/ab/11a76c1e2126084fde2639514f24e6111b789b0bfa4fc6264a8975c7e1f1/zict-3.0.0-py2.py3-none-any.whl - pypi: . linux-aarch64: @@ -1162,12 +1168,13 @@ environments: - pypi: https://files.pythonhosted.org/packages/6a/21/5b6702a7f963e95456c0de2d495f67bf5fd62840ac655dc451586d23d39a/attrs-24.2.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/00/2e/d53fa4befbf2cfa713304affc7ca780ce4fc1fd8710527771b58311a3229/click-8.1.7-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/48/41/e1d85ca3cab0b674e277c8c4f678cf66a91cd2cecf93df94353a606fe0db/cloudpickle-3.1.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/a9/0d/3e797d1ed92d357a6a4c5b41cea15a538b27a8fdf18c7863747eb50b73ad/crc32c-2.7.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl - pypi: https://files.pythonhosted.org/packages/2a/72/33ff765a07913cb5061baa94718f3a17003aa29adc89642a68c295d47582/dask-2024.11.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/e9/57/e7996529256b13009fa8f4c34d1d7229755cc7d2b054aa43edb6ca655578/dask_expr-1.1.19-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/22/70/e34e5090865c3f840256c462e4671937270317fdf260871cd72546449d54/dask_image-2024.5.3-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/06/46/01673060e83277a863baf0909b387cd809865cba2d5e7213db76516bedd9/deepdiff-8.0.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/f0/24/312287ead487290c13e62f6d987e59eb0e22b8088b3539dfe6f4062a8370/distributed-2024.11.2-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/61/bf/fd60001b3abc5222d8eaa4a204cd8c0ae78e75adc688f33ce4bf25b7fafa/fasteners-0.19-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/0c/d5/c5db1ea3394c6e1732fb3286b3bd878b59507a8f77d32a2cebda7d7b7cd4/donfig-0.8.1.post1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/c6/b2/454d6e7f0158951d8a78c2e1eb4f69ae81beb8dca5fee9809c6c99e9d0d0/fsspec-2024.10.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/56/f2/019871023d69c640224089ad27ef0b8f74e3416b7a24e040b6c76adddc7a/imagecodecs-2024.9.22-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl - pypi: https://files.pythonhosted.org/packages/4e/e7/26045404a30c8a200e960fb54fbaf4b73d12e58cd28e03b306b084253f4f/imageio-2.36.0-py3-none-any.whl @@ -1221,7 +1228,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/26/9f/ad63fc0248c5379346306f8668cda6e2e2e9c95e01216d2b8ffd9ff037d0/typing_extensions-4.12.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/a6/ab/7e5f53c3b9d14972843a647d8d7a853969a58aecc7559cb3267302c94774/tzdata-2024.2-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/3a/57/cd877b4797be239b4433f89a5a85c7bf2c5319dd91c7777b1867bebb664e/wasmtime-27.0.1-py3-none-manylinux2014_aarch64.whl - - pypi: https://files.pythonhosted.org/packages/ed/c9/142095e654c2b97133ff71df60979422717b29738b08bc8a1709a5d5e0d0/zarr-2.18.3-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/98/2b/36a15bd29d92410877547de73c1a440386fba5d5e95daaf24898b3bd0fc8/zarr-3.0.0b2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/80/ab/11a76c1e2126084fde2639514f24e6111b789b0bfa4fc6264a8975c7e1f1/zict-3.0.0-py2.py3-none-any.whl - pypi: . osx-64: @@ -1264,12 +1271,13 @@ environments: - pypi: https://files.pythonhosted.org/packages/6a/21/5b6702a7f963e95456c0de2d495f67bf5fd62840ac655dc451586d23d39a/attrs-24.2.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/00/2e/d53fa4befbf2cfa713304affc7ca780ce4fc1fd8710527771b58311a3229/click-8.1.7-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/48/41/e1d85ca3cab0b674e277c8c4f678cf66a91cd2cecf93df94353a606fe0db/cloudpickle-3.1.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/4f/56/0dd652d4e950e6348bbf16b964b3325e4ad8220470774128fc0b0dd069cb/crc32c-2.7.1-cp313-cp313-macosx_10_13_x86_64.whl - pypi: https://files.pythonhosted.org/packages/2a/72/33ff765a07913cb5061baa94718f3a17003aa29adc89642a68c295d47582/dask-2024.11.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/e9/57/e7996529256b13009fa8f4c34d1d7229755cc7d2b054aa43edb6ca655578/dask_expr-1.1.19-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/22/70/e34e5090865c3f840256c462e4671937270317fdf260871cd72546449d54/dask_image-2024.5.3-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/06/46/01673060e83277a863baf0909b387cd809865cba2d5e7213db76516bedd9/deepdiff-8.0.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/f0/24/312287ead487290c13e62f6d987e59eb0e22b8088b3539dfe6f4062a8370/distributed-2024.11.2-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/61/bf/fd60001b3abc5222d8eaa4a204cd8c0ae78e75adc688f33ce4bf25b7fafa/fasteners-0.19-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/0c/d5/c5db1ea3394c6e1732fb3286b3bd878b59507a8f77d32a2cebda7d7b7cd4/donfig-0.8.1.post1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/c6/b2/454d6e7f0158951d8a78c2e1eb4f69ae81beb8dca5fee9809c6c99e9d0d0/fsspec-2024.10.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/6e/39/a74e5474e51270593f2c1ca315e018a0c6014d46980da8f3c3b8da411580/imagecodecs-2024.9.22-cp313-cp313-macosx_10_14_x86_64.whl - pypi: https://files.pythonhosted.org/packages/4e/e7/26045404a30c8a200e960fb54fbaf4b73d12e58cd28e03b306b084253f4f/imageio-2.36.0-py3-none-any.whl @@ -1323,7 +1331,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/26/9f/ad63fc0248c5379346306f8668cda6e2e2e9c95e01216d2b8ffd9ff037d0/typing_extensions-4.12.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/a6/ab/7e5f53c3b9d14972843a647d8d7a853969a58aecc7559cb3267302c94774/tzdata-2024.2-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/7c/eb/54889f4b799b1b345dcc169e80b363758cbb0092a3241a66284366f75e98/wasmtime-27.0.1-py3-none-macosx_10_13_x86_64.whl - - pypi: https://files.pythonhosted.org/packages/ed/c9/142095e654c2b97133ff71df60979422717b29738b08bc8a1709a5d5e0d0/zarr-2.18.3-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/98/2b/36a15bd29d92410877547de73c1a440386fba5d5e95daaf24898b3bd0fc8/zarr-3.0.0b2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/80/ab/11a76c1e2126084fde2639514f24e6111b789b0bfa4fc6264a8975c7e1f1/zict-3.0.0-py2.py3-none-any.whl - pypi: . osx-arm64: @@ -1366,12 +1374,13 @@ environments: - pypi: https://files.pythonhosted.org/packages/6a/21/5b6702a7f963e95456c0de2d495f67bf5fd62840ac655dc451586d23d39a/attrs-24.2.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/00/2e/d53fa4befbf2cfa713304affc7ca780ce4fc1fd8710527771b58311a3229/click-8.1.7-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/48/41/e1d85ca3cab0b674e277c8c4f678cf66a91cd2cecf93df94353a606fe0db/cloudpickle-3.1.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/47/02/2bd65fdef10139b6a802d83a7f966b7750fe5ffb1042f7cbe5dbb6403869/crc32c-2.7.1-cp313-cp313-macosx_11_0_arm64.whl - pypi: https://files.pythonhosted.org/packages/2a/72/33ff765a07913cb5061baa94718f3a17003aa29adc89642a68c295d47582/dask-2024.11.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/e9/57/e7996529256b13009fa8f4c34d1d7229755cc7d2b054aa43edb6ca655578/dask_expr-1.1.19-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/22/70/e34e5090865c3f840256c462e4671937270317fdf260871cd72546449d54/dask_image-2024.5.3-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/06/46/01673060e83277a863baf0909b387cd809865cba2d5e7213db76516bedd9/deepdiff-8.0.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/f0/24/312287ead487290c13e62f6d987e59eb0e22b8088b3539dfe6f4062a8370/distributed-2024.11.2-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/61/bf/fd60001b3abc5222d8eaa4a204cd8c0ae78e75adc688f33ce4bf25b7fafa/fasteners-0.19-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/0c/d5/c5db1ea3394c6e1732fb3286b3bd878b59507a8f77d32a2cebda7d7b7cd4/donfig-0.8.1.post1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/c6/b2/454d6e7f0158951d8a78c2e1eb4f69ae81beb8dca5fee9809c6c99e9d0d0/fsspec-2024.10.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/83/63/ca509ecb1dbc478acaa839e5496cf98816474bc0ad5abd357848928504cb/imagecodecs-2024.9.22-cp313-cp313-macosx_11_0_arm64.whl - pypi: https://files.pythonhosted.org/packages/4e/e7/26045404a30c8a200e960fb54fbaf4b73d12e58cd28e03b306b084253f4f/imageio-2.36.0-py3-none-any.whl @@ -1425,7 +1434,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/26/9f/ad63fc0248c5379346306f8668cda6e2e2e9c95e01216d2b8ffd9ff037d0/typing_extensions-4.12.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/a6/ab/7e5f53c3b9d14972843a647d8d7a853969a58aecc7559cb3267302c94774/tzdata-2024.2-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/6e/d8/38d1af31c1787e09642354c81215920a5bf59722a6786ed7e9622fd1f033/wasmtime-27.0.1-py3-none-macosx_11_0_arm64.whl - - pypi: https://files.pythonhosted.org/packages/ed/c9/142095e654c2b97133ff71df60979422717b29738b08bc8a1709a5d5e0d0/zarr-2.18.3-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/98/2b/36a15bd29d92410877547de73c1a440386fba5d5e95daaf24898b3bd0fc8/zarr-3.0.0b2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/80/ab/11a76c1e2126084fde2639514f24e6111b789b0bfa4fc6264a8975c7e1f1/zict-3.0.0-py2.py3-none-any.whl - pypi: . win-64: @@ -1471,12 +1480,13 @@ environments: - pypi: https://files.pythonhosted.org/packages/00/2e/d53fa4befbf2cfa713304affc7ca780ce4fc1fd8710527771b58311a3229/click-8.1.7-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/48/41/e1d85ca3cab0b674e277c8c4f678cf66a91cd2cecf93df94353a606fe0db/cloudpickle-3.1.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/d1/d6/3965ed04c63042e047cb6a3e6ed1a63a35087b6a609aa3a15ed8ac56c221/colorama-0.4.6-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/db/a0/f01ccfab538db07ef3f6b4ede46357ff147a81dd4f3c59ca6a34c791a549/crc32c-2.7.1-cp313-cp313-win_amd64.whl - pypi: https://files.pythonhosted.org/packages/2a/72/33ff765a07913cb5061baa94718f3a17003aa29adc89642a68c295d47582/dask-2024.11.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/e9/57/e7996529256b13009fa8f4c34d1d7229755cc7d2b054aa43edb6ca655578/dask_expr-1.1.19-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/22/70/e34e5090865c3f840256c462e4671937270317fdf260871cd72546449d54/dask_image-2024.5.3-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/06/46/01673060e83277a863baf0909b387cd809865cba2d5e7213db76516bedd9/deepdiff-8.0.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/f0/24/312287ead487290c13e62f6d987e59eb0e22b8088b3539dfe6f4062a8370/distributed-2024.11.2-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/61/bf/fd60001b3abc5222d8eaa4a204cd8c0ae78e75adc688f33ce4bf25b7fafa/fasteners-0.19-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/0c/d5/c5db1ea3394c6e1732fb3286b3bd878b59507a8f77d32a2cebda7d7b7cd4/donfig-0.8.1.post1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/c6/b2/454d6e7f0158951d8a78c2e1eb4f69ae81beb8dca5fee9809c6c99e9d0d0/fsspec-2024.10.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/48/32/7fd239e085e22b2a8ef7115859a73652adca2b8dff3c87f3ee64f6c56fcc/imagecodecs-2024.9.22-cp313-cp313-win_amd64.whl - pypi: https://files.pythonhosted.org/packages/4e/e7/26045404a30c8a200e960fb54fbaf4b73d12e58cd28e03b306b084253f4f/imageio-2.36.0-py3-none-any.whl @@ -1530,7 +1540,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/26/9f/ad63fc0248c5379346306f8668cda6e2e2e9c95e01216d2b8ffd9ff037d0/typing_extensions-4.12.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/a6/ab/7e5f53c3b9d14972843a647d8d7a853969a58aecc7559cb3267302c94774/tzdata-2024.2-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/14/6f/f6b99d9ab1511398686e00d2a26371d99a7949531514379d731b3b7e6309/wasmtime-27.0.1-py3-none-win_amd64.whl - - pypi: https://files.pythonhosted.org/packages/ed/c9/142095e654c2b97133ff71df60979422717b29738b08bc8a1709a5d5e0d0/zarr-2.18.3-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/98/2b/36a15bd29d92410877547de73c1a440386fba5d5e95daaf24898b3bd0fc8/zarr-3.0.0b2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/80/ab/11a76c1e2126084fde2639514f24e6111b789b0bfa4fc6264a8975c7e1f1/zict-3.0.0-py2.py3-none-any.whl - pypi: . packages: @@ -2130,7 +2140,37 @@ packages: version: 0.4.6 url: https://files.pythonhosted.org/packages/d1/d6/3965ed04c63042e047cb6a3e6ed1a63a35087b6a609aa3a15ed8ac56c221/colorama-0.4.6-py2.py3-none-any.whl sha256: 4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6 - requires_python: '>=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*' + requires_python: '!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7' +- kind: pypi + name: crc32c + version: 2.7.1 + url: https://files.pythonhosted.org/packages/01/cf/32f019be5de9f6e180926a50ee5f08648e686c7d9a59f2c5d0806a77b1c7/crc32c-2.7.1-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl + sha256: 724d5ff4d29ff093a983ae656be3307093706d850ea2a233bf29fcacc335d945 + requires_python: '>=3.7' +- kind: pypi + name: crc32c + version: 2.7.1 + url: https://files.pythonhosted.org/packages/47/02/2bd65fdef10139b6a802d83a7f966b7750fe5ffb1042f7cbe5dbb6403869/crc32c-2.7.1-cp313-cp313-macosx_11_0_arm64.whl + sha256: ba110df60c64c8e2d77a9425b982a520ccdb7abe42f06604f4d98a45bb1fff62 + requires_python: '>=3.7' +- kind: pypi + name: crc32c + version: 2.7.1 + url: https://files.pythonhosted.org/packages/4f/56/0dd652d4e950e6348bbf16b964b3325e4ad8220470774128fc0b0dd069cb/crc32c-2.7.1-cp313-cp313-macosx_10_13_x86_64.whl + sha256: 2d5d326e7e118d4fa60187770d86b66af2fdfc63ce9eeb265f0d3e7d49bebe0b + requires_python: '>=3.7' +- kind: pypi + name: crc32c + version: 2.7.1 + url: https://files.pythonhosted.org/packages/a9/0d/3e797d1ed92d357a6a4c5b41cea15a538b27a8fdf18c7863747eb50b73ad/crc32c-2.7.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl + sha256: c277f9d16a3283e064d54854af0976b72abaa89824955579b2b3f37444f89aae + requires_python: '>=3.7' +- kind: pypi + name: crc32c + version: 2.7.1 + url: https://files.pythonhosted.org/packages/db/a0/f01ccfab538db07ef3f6b4ede46357ff147a81dd4f3c59ca6a34c791a549/crc32c-2.7.1-cp313-cp313-win_amd64.whl + sha256: 7d9ede7be8e4ec1c9e90aaf6884decbeef10e3473e6ddac032706d710cab5888 + requires_python: '>=3.7' - kind: pypi name: dask version: 2024.11.2 @@ -2151,7 +2191,7 @@ packages: - lz4>=4.3.2 ; extra == 'complete' - dask[array] ; extra == 'dataframe' - pandas>=2.0 ; extra == 'dataframe' - - dask-expr>=1.1,<1.2 ; extra == 'dataframe' + - dask-expr<1.2,>=1.1 ; extra == 'dataframe' - bokeh>=3.1.0 ; extra == 'diagnostics' - jinja2>=2.10.3 ; extra == 'diagnostics' - distributed==2024.11.2 ; extra == 'distributed' @@ -2256,11 +2296,19 @@ packages: sha256: dafca5b9e384f0e419294eb4d2ff9fa826435bf15f15b7bd45723e8ad76811b2 requires_python: '>=3.9' - kind: pypi - name: fasteners - version: '0.19' - url: https://files.pythonhosted.org/packages/61/bf/fd60001b3abc5222d8eaa4a204cd8c0ae78e75adc688f33ce4bf25b7fafa/fasteners-0.19-py3-none-any.whl - sha256: 758819cb5d94cdedf4e836988b74de396ceacb8e2794d21f82d131fd9ee77237 - requires_python: '>=3.6' + name: donfig + version: 0.8.1.post1 + url: https://files.pythonhosted.org/packages/0c/d5/c5db1ea3394c6e1732fb3286b3bd878b59507a8f77d32a2cebda7d7b7cd4/donfig-0.8.1.post1-py3-none-any.whl + sha256: 2a3175ce74a06109ff9307d90a230f81215cbac9a751f4d1c6194644b8204f9d + requires_dist: + - pyyaml + - sphinx>=4.0.0 ; extra == 'docs' + - numpydoc ; extra == 'docs' + - pytest ; extra == 'docs' + - cloudpickle ; extra == 'docs' + - pytest ; extra == 'test' + - cloudpickle ; extra == 'test' + requires_python: '>=3.8' - kind: conda name: filelock version: 3.16.1 @@ -2340,10 +2388,10 @@ packages: - pytest-recording ; extra == 'test' - pytest-rerunfailures ; extra == 'test' - requests ; extra == 'test' - - aiobotocore>=2.5.4,<3.0.0 ; extra == 'test-downstream' + - aiobotocore<3.0.0,>=2.5.4 ; extra == 'test-downstream' - dask-expr ; extra == 'test-downstream' - dask[dataframe,test] ; extra == 'test-downstream' - - moto[server]>4,<5 ; extra == 'test-downstream' + - moto[server]<5,>4 ; extra == 'test-downstream' - pytest-timeout ; extra == 'test-downstream' - xarray ; extra == 'test-downstream' - adlfs ; extra == 'test-full' @@ -2393,7 +2441,7 @@ packages: sha256: 6cd97c58b47813d3619e63e9081169880fbe331f0ca883c871ff1f3f11814f5c requires_dist: - beautifulsoup4 - - sphinx>=6.0,<9.0 + - sphinx<9.0,>=6.0 - sphinx-basic-ng>=1.0.0b2 - pygments>=2.7 requires_python: '>=3.8' @@ -2706,7 +2754,7 @@ packages: - sphinx-lint ; extra == 'doc' - jaraco-tidelift>=1.4 ; extra == 'doc' - pytest-enabler>=2.2 ; extra == 'enabler' - - pytest>=6,!=8.1.* ; extra == 'test' + - pytest!=8.1.*,>=6 ; extra == 'test' - zipp>=3.17 ; extra == 'test' - jaraco-test>=5.4 ; extra == 'test' - pytest-mypy ; extra == 'type' @@ -3961,14 +4009,14 @@ packages: - itkwasm-image-io ; extra == 'cli' - tifffile>=2024.7.24 ; extra == 'cli' - dask-image ; extra == 'dask-image' - - furo>=2024.7.18,<2025 ; extra == 'docs' - - myst-parser>=3.0.1,<4 ; extra == 'docs' - - sphinx-autobuild>=2024.4.16,<2025 ; extra == 'docs' - - sphinx-autodoc2>=0.5.0,<0.6 ; extra == 'docs' - - sphinx-copybutton>=0.5.2,<0.6 ; extra == 'docs' - - sphinx-design>=0.6.0,<0.7 ; extra == 'docs' - - sphinx>=7.4.7,<8 ; extra == 'docs' - - sphinxext-opengraph>=0.9.1,<0.10 ; extra == 'docs' + - furo<2025,>=2024.7.18 ; extra == 'docs' + - myst-parser<4,>=3.0.1 ; extra == 'docs' + - sphinx-autobuild<2025,>=2024.4.16 ; extra == 'docs' + - sphinx-autodoc2<0.6,>=0.5.0 ; extra == 'docs' + - sphinx-copybutton<0.6,>=0.5.2 ; extra == 'docs' + - sphinx-design<0.7,>=0.6.0 ; extra == 'docs' + - sphinx<8,>=7.4.7 ; extra == 'docs' + - sphinxext-opengraph<0.10,>=0.9.1 ; extra == 'docs' - itk-filtering>=5.3.0 ; extra == 'itk' - tensorstore ; extra == 'tensorstore' - deepdiff ; extra == 'test' @@ -4008,7 +4056,7 @@ packages: - pydata-sphinx-theme ; extra == 'docs' - numpydoc ; extra == 'docs' - msgpack ; extra == 'msgpack' - - pcodec>=0.2,<0.3 ; extra == 'pcodec' + - pcodec<0.3,>=0.2 ; extra == 'pcodec' - coverage ; extra == 'test' - pytest ; extra == 'test' - pytest-cov ; extra == 'test' @@ -4034,7 +4082,7 @@ packages: - msgpack ; extra == 'msgpack' - zfpy>=1.0.0 ; extra == 'zfpy' - numpy<2.0.0 ; extra == 'zfpy' - - pcodec>=0.2,<0.3 ; extra == 'pcodec' + - pcodec<0.3,>=0.2 ; extra == 'pcodec' - crc32c>=2.7 ; extra == 'crc32c' requires_python: '>=3.11' - kind: pypi @@ -4055,7 +4103,7 @@ packages: - msgpack ; extra == 'msgpack' - zfpy>=1.0.0 ; extra == 'zfpy' - numpy<2.0.0 ; extra == 'zfpy' - - pcodec>=0.2,<0.3 ; extra == 'pcodec' + - pcodec<0.3,>=0.2 ; extra == 'pcodec' - crc32c>=2.7 ; extra == 'crc32c' requires_python: '>=3.11' - kind: pypi @@ -4076,7 +4124,7 @@ packages: - msgpack ; extra == 'msgpack' - zfpy>=1.0.0 ; extra == 'zfpy' - numpy<2.0.0 ; extra == 'zfpy' - - pcodec>=0.2,<0.3 ; extra == 'pcodec' + - pcodec<0.3,>=0.2 ; extra == 'pcodec' - crc32c>=2.7 ; extra == 'crc32c' requires_python: '>=3.11' - kind: pypi @@ -4097,7 +4145,7 @@ packages: - msgpack ; extra == 'msgpack' - zfpy>=1.0.0 ; extra == 'zfpy' - numpy<2.0.0 ; extra == 'zfpy' - - pcodec>=0.2,<0.3 ; extra == 'pcodec' + - pcodec<0.3,>=0.2 ; extra == 'pcodec' - crc32c>=2.7 ; extra == 'crc32c' requires_python: '>=3.11' - kind: pypi @@ -5199,7 +5247,7 @@ packages: requires_dist: - iniconfig - packaging - - pluggy>=1.5,<2 + - pluggy<2,>=1.5 - exceptiongroup>=1.0.0rc8 ; python_full_version < '3.11' - tomli>=1 ; python_full_version < '3.11' - colorama ; sys_platform == 'win32' @@ -5364,7 +5412,7 @@ packages: sha256: a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427 requires_dist: - six>=1.5 - requires_python: '>=2.7,!=3.0.*,!=3.1.*,!=3.2.*' + requires_python: '!=3.0.*,!=3.1.*,!=3.2.*,>=2.7' - kind: conda name: python_abi version: '3.13' @@ -5708,7 +5756,7 @@ packages: url: https://files.pythonhosted.org/packages/50/ef/ac98346db016ff18a6ad7626a35808f37074d25796fd0234c2bb0ed1e054/scipy-1.14.1-cp313-cp313-macosx_10_13_x86_64.whl sha256: 1729560c906963fc8389f6aac023739ff3983e727b1a4d87696b7bf108316a79 requires_dist: - - numpy>=1.23.5,<2.3 + - numpy<2.3,>=1.23.5 - pytest ; extra == 'test' - pytest-cov ; extra == 'test' - pytest-timeout ; extra == 'test' @@ -5724,7 +5772,7 @@ packages: - cython ; extra == 'test' - meson ; extra == 'test' - ninja ; sys_platform != 'emscripten' and extra == 'test' - - sphinx>=5.0.0,<=7.3.7 ; extra == 'doc' + - sphinx<=7.3.7,>=5.0.0 ; extra == 'doc' - pydata-sphinx-theme>=0.15.2 ; extra == 'doc' - sphinx-design>=0.4.0 ; extra == 'doc' - matplotlib>=3.5 ; extra == 'doc' @@ -5750,7 +5798,7 @@ packages: url: https://files.pythonhosted.org/packages/56/46/2449e6e51e0d7c3575f289f6acb7f828938eaab8874dbccfeb0cd2b71a27/scipy-1.14.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl sha256: 5149e3fd2d686e42144a093b206aef01932a0059c2a33ddfa67f5f035bdfe13e requires_dist: - - numpy>=1.23.5,<2.3 + - numpy<2.3,>=1.23.5 - pytest ; extra == 'test' - pytest-cov ; extra == 'test' - pytest-timeout ; extra == 'test' @@ -5766,7 +5814,7 @@ packages: - cython ; extra == 'test' - meson ; extra == 'test' - ninja ; sys_platform != 'emscripten' and extra == 'test' - - sphinx>=5.0.0,<=7.3.7 ; extra == 'doc' + - sphinx<=7.3.7,>=5.0.0 ; extra == 'doc' - pydata-sphinx-theme>=0.15.2 ; extra == 'doc' - sphinx-design>=0.4.0 ; extra == 'doc' - matplotlib>=3.5 ; extra == 'doc' @@ -5792,7 +5840,7 @@ packages: url: https://files.pythonhosted.org/packages/a7/2f/6c142b352ac15967744d62b165537a965e95d557085db4beab2a11f7943b/scipy-1.14.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl sha256: b99722ea48b7ea25e8e015e8341ae74624f72e5f21fc2abd45f3a93266de4c5d requires_dist: - - numpy>=1.23.5,<2.3 + - numpy<2.3,>=1.23.5 - pytest ; extra == 'test' - pytest-cov ; extra == 'test' - pytest-timeout ; extra == 'test' @@ -5808,7 +5856,7 @@ packages: - cython ; extra == 'test' - meson ; extra == 'test' - ninja ; sys_platform != 'emscripten' and extra == 'test' - - sphinx>=5.0.0,<=7.3.7 ; extra == 'doc' + - sphinx<=7.3.7,>=5.0.0 ; extra == 'doc' - pydata-sphinx-theme>=0.15.2 ; extra == 'doc' - sphinx-design>=0.4.0 ; extra == 'doc' - matplotlib>=3.5 ; extra == 'doc' @@ -5834,7 +5882,7 @@ packages: url: https://files.pythonhosted.org/packages/b9/cc/70948fe9f393b911b4251e96b55bbdeaa8cca41f37c26fd1df0232933b9e/scipy-1.14.1-cp313-cp313-macosx_12_0_arm64.whl sha256: 4079b90df244709e675cdc8b93bfd8a395d59af40b72e339c2287c91860deb8e requires_dist: - - numpy>=1.23.5,<2.3 + - numpy<2.3,>=1.23.5 - pytest ; extra == 'test' - pytest-cov ; extra == 'test' - pytest-timeout ; extra == 'test' @@ -5850,7 +5898,7 @@ packages: - cython ; extra == 'test' - meson ; extra == 'test' - ninja ; sys_platform != 'emscripten' and extra == 'test' - - sphinx>=5.0.0,<=7.3.7 ; extra == 'doc' + - sphinx<=7.3.7,>=5.0.0 ; extra == 'doc' - pydata-sphinx-theme>=0.15.2 ; extra == 'doc' - sphinx-design>=0.4.0 ; extra == 'doc' - matplotlib>=3.5 ; extra == 'doc' @@ -5876,7 +5924,7 @@ packages: url: https://files.pythonhosted.org/packages/f5/1b/6ee032251bf4cdb0cc50059374e86a9f076308c1512b61c4e003e241efb7/scipy-1.14.1-cp313-cp313-win_amd64.whl sha256: baff393942b550823bfce952bb62270ee17504d02a1801d7fd0719534dfb9c84 requires_dist: - - numpy>=1.23.5,<2.3 + - numpy<2.3,>=1.23.5 - pytest ; extra == 'test' - pytest-cov ; extra == 'test' - pytest-timeout ; extra == 'test' @@ -5892,7 +5940,7 @@ packages: - cython ; extra == 'test' - meson ; extra == 'test' - ninja ; sys_platform != 'emscripten' and extra == 'test' - - sphinx>=5.0.0,<=7.3.7 ; extra == 'doc' + - sphinx<=7.3.7,>=5.0.0 ; extra == 'doc' - pydata-sphinx-theme>=0.15.2 ; extra == 'doc' - sphinx-design>=0.4.0 ; extra == 'doc' - matplotlib>=3.5 ; extra == 'doc' @@ -6173,7 +6221,7 @@ packages: url: https://files.pythonhosted.org/packages/96/00/2b325970b3060c7cecebab6d295afe763365822b1306a12eeab198f74323/starlette-0.41.3-py3-none-any.whl sha256: 44cedb2b7c77a9de33a8b74b2b90e9f50d11fcf25d8270ea525ad71a25374ff7 requires_dist: - - anyio>=3.4.0,<5 + - anyio<5,>=3.4.0 - typing-extensions>=3.10.0 ; python_full_version < '3.10' - httpx>=0.22.0 ; extra == 'full' - itsdangerous ; extra == 'full' @@ -6533,7 +6581,7 @@ packages: - httptools>=0.6.3 ; extra == 'standard' - python-dotenv>=0.13 ; extra == 'standard' - pyyaml>=5.1 ; extra == 'standard' - - uvloop>=0.14.0,!=0.15.0,!=0.15.1 ; platform_python_implementation != 'PyPy' and sys_platform != 'cygwin' and sys_platform != 'win32' and extra == 'standard' + - uvloop!=0.15.0,!=0.15.1,>=0.14.0 ; platform_python_implementation != 'PyPy' and sys_platform != 'cygwin' and sys_platform != 'win32' and extra == 'standard' - watchfiles>=0.13 ; extra == 'standard' - websockets>=10.4 ; extra == 'standard' requires_python: '>=3.8' @@ -6908,26 +6956,49 @@ packages: timestamp: 1641347626613 - kind: pypi name: zarr - version: 2.18.3 - url: https://files.pythonhosted.org/packages/ed/c9/142095e654c2b97133ff71df60979422717b29738b08bc8a1709a5d5e0d0/zarr-2.18.3-py3-none-any.whl - sha256: b1f7dfd2496f436745cdd4c7bcf8d3b4bc1dceef5fdd0d589c87130d842496dd + version: 3.0.0b2 + url: https://files.pythonhosted.org/packages/98/2b/36a15bd29d92410877547de73c1a440386fba5d5e95daaf24898b3bd0fc8/zarr-3.0.0b2-py3-none-any.whl + sha256: 4f512a5b68ca49fa60b61f413b3f7a9a228f4e4847dd60834c43d2e5280dd8aa requires_dist: - asciitree - - numpy>=1.24 - - numcodecs>=0.10.0 - - fasteners ; sys_platform != 'emscripten' - - sphinx ; extra == 'docs' - - sphinx-automodapi ; extra == 'docs' + - crc32c>=2.3 + - donfig>=0.8 + - fsspec>=2022.10.0 + - numcodecs>=0.14 + - numpy>=1.25 + - typing-extensions>=4.6 + - msgpack ; extra == 'docs' + - numcodecs[msgpack] ; extra == 'docs' + - numpydoc ; extra == 'docs' + - pydata-sphinx-theme ; extra == 'docs' + - sphinx-autoapi==3.3.3 ; extra == 'docs' + - sphinx-autobuild>=2021.3.14 ; extra == 'docs' + - sphinx-copybutton ; extra == 'docs' - sphinx-design ; extra == 'docs' - sphinx-issues ; extra == 'docs' - - sphinx-copybutton ; extra == 'docs' - - pydata-sphinx-theme ; extra == 'docs' - - numpydoc ; extra == 'docs' - - numcodecs[msgpack] ; extra == 'docs' - - notebook ; extra == 'jupyter' + - sphinx==8.1.3 ; extra == 'docs' + - msgpack ; extra == 'extra' + - cupy-cuda12x ; extra == 'gpu' - ipytree>=0.2.2 ; extra == 'jupyter' - ipywidgets>=8.0.0 ; extra == 'jupyter' - requires_python: '>=3.10' + - notebook ; extra == 'jupyter' + - rich ; extra == 'optional' + - universal-pathlib>=0.0.22 ; extra == 'optional' + - coverage ; extra == 'test' + - flask ; extra == 'test' + - flask-cors ; extra == 'test' + - hypothesis ; extra == 'test' + - moto[s3] ; extra == 'test' + - msgpack ; extra == 'test' + - mypy ; extra == 'test' + - pytest ; extra == 'test' + - pytest-asyncio ; extra == 'test' + - pytest-cov ; extra == 'test' + - requests ; extra == 'test' + - s3fs ; extra == 'test' + - universal-pathlib ; extra == 'test' + - rich ; extra == 'tree' + requires_python: '>=3.11' - kind: pypi name: zict version: 3.0.0 diff --git a/test/test_to_ngff_zarr_rfc2_zarr_v3.py b/test/test_to_ngff_zarr_rfc2_zarr_v3.py index bb64a34e..86beef18 100644 --- a/test/test_to_ngff_zarr_rfc2_zarr_v3.py +++ b/test/test_to_ngff_zarr_rfc2_zarr_v3.py @@ -1,3 +1,4 @@ +import tempfile from packaging import version import pytest @@ -12,7 +13,7 @@ zarr_version = version.parse(zarr.__version__) # Skip tests if zarr version is less than 3.0.0b1 -pytest.mark.skipif( +pytestmark = pytest.mark.skipif( zarr_version < version.parse("3.0.0b1"), reason="zarr version < 3.0.0b1" ) @@ -29,3 +30,21 @@ def test_gaussian_isotropic_scale_factors(input_images): multiscales = from_ngff_zarr(store, version=version) # store_new_multiscales(dataset_name, baseline_name, multiscales, version=version) verify_against_baseline(dataset_name, baseline_name, multiscales, version=version) + + +def test_gaussian_isotropic_scale_factors_tensorstore(input_images): + pytest.importorskip("tensorstore") + + dataset_name = "cthead1" + image = input_images[dataset_name] + baseline_name = "2_4/RFC3_GAUSSIAN.zarr" + multiscales = to_multiscales(image, [2, 4], method=Methods.ITKWASM_GAUSSIAN) + + version = "0.5" + with tempfile.TemporaryDirectory() as tmpdir: + to_ngff_zarr(tmpdir, multiscales, version=version, use_tensorstore=True) + multiscales = from_ngff_zarr(tmpdir, version=version) + # store_new_multiscales(dataset_name, baseline_name, multiscales, version=version) + verify_against_baseline( + dataset_name, baseline_name, multiscales, version=version + ) diff --git a/test/test_to_ngff_zarr_tensorstore.py b/test/test_to_ngff_zarr_tensorstore.py index b41e6ed0..90cc63aa 100644 --- a/test/test_to_ngff_zarr_tensorstore.py +++ b/test/test_to_ngff_zarr_tensorstore.py @@ -1,11 +1,15 @@ import tempfile +from packaging import version import pytest +import zarr from ngff_zarr import Methods, to_multiscales, to_ngff_zarr, from_ngff_zarr from ._data import verify_against_baseline +zarr_version = version.parse(zarr.__version__) + def test_gaussian_isotropic_scale_factors(input_images): pytest.importorskip("tensorstore")