diff --git a/pkgs/development/python-modules/ome-zarr-models/default.nix b/pkgs/development/python-modules/ome-zarr-models/default.nix new file mode 100644 index 000000000000..85adf56190ba --- /dev/null +++ b/pkgs/development/python-modules/ome-zarr-models/default.nix @@ -0,0 +1,94 @@ +{ + lib, + buildPythonPackage, + fetchFromGitHub, + pythonAtLeast, + + # build-system + hatch-vcs, + hatchling, + + # dependencies + pydantic, + pydantic-zarr, + zarr, + + # tests + aiohttp, + fsspec, + pytest-cov-stub, + pytest-vcr, + pytestCheckHook, +}: + +buildPythonPackage (finalAttrs: { + pname = "ome-zarr-models"; + version = "1.5"; + pyproject = true; + + src = fetchFromGitHub { + owner = "ome-zarr-models"; + repo = "ome-zarr-models-py"; + tag = "v${finalAttrs.version}"; + hash = "sha256-lEzYP4AcEV6EtE+E8yqNHJPIPJ0RwWtzm77fcdxYGYk="; + }; + + build-system = [ + hatch-vcs + hatchling + ]; + + dependencies = [ + pydantic + pydantic-zarr + zarr + ]; + + pythonImportsCheck = [ "ome_zarr_models" ]; + + nativeCheckInputs = [ + aiohttp + fsspec + pytest-cov-stub + pytest-vcr + pytestCheckHook + ]; + + disabledTests = [ + # Require internet connection + "test_bioformats2raw_get_image" + "test_load_remote_data" + ] + ++ lib.optionals (pythonAtLeast "3.14") [ + # pydantic.errors.PydanticUserError: `Image` is not fully defined; you should define all + # referenced types, then call `Image.model_rebuild()`. + "test_datasets" + "test_example_hcs" + "test_from_zarr_ectopic_group" + "test_from_zarr_missing_array" + "test_global_transform" + "test_image" + "test_multiscale_group_ectopic_group" + "test_multiscale_group_missing_arrays" + "test_new_image" + "test_no_global_transform" + "test_non_existent_wells" + "test_non_existent_wells_from_zarr" + "test_well" + + # RuntimeError: Could not successfully validate + # against any OME-Zarr + # group model + "test_cli_validate" + "test_load_ome_zarr_group" + ]; + + meta = { + description = "Minimal Python package for reading, writing and validating OME-Zarr (meta)data"; + homepage = "https://ome-zarr-models-py.readthedocs.io/en/stable"; + downloadPage = "https://github.com/ome-zarr-models/ome-zarr-models-py"; + changelog = "https://github.com/ome-zarr-models/ome-zarr-models-py/releases/tag/${finalAttrs.src.tag}"; + license = lib.licenses.mit; + maintainers = with lib.maintainers; [ GaetanLepage ]; + }; +}) diff --git a/pkgs/development/python-modules/ome-zarr/default.nix b/pkgs/development/python-modules/ome-zarr/default.nix index 78f854f744b7..a796d577c71d 100644 --- a/pkgs/development/python-modules/ome-zarr/default.nix +++ b/pkgs/development/python-modules/ome-zarr/default.nix @@ -12,25 +12,27 @@ dask, fsspec, numpy, + rangehttpserver, requests, scikit-image, toolz, zarr, # tests + ome-zarr-models, pytestCheckHook, }: -buildPythonPackage rec { +buildPythonPackage (finalAttrs: { pname = "ome-zarr"; - version = "0.12.2"; + version = "0.13.0"; pyproject = true; src = fetchFromGitHub { owner = "ome"; repo = "ome-zarr-py"; - tag = "v${version}"; - hash = "sha256-lwv6PHm41HFylt7b0d5LHCrCIXNWFNGg59VQvPXYtVc="; + tag = "v${finalAttrs.version}"; + hash = "sha256-bRksh6ZKqF6cL6XnWBsQRb4gRVxH/vutKtep6SyFo48="; }; build-system = [ @@ -38,11 +40,15 @@ buildPythonPackage rec { setuptools-scm ]; + pythonRelaxDeps = [ + "dask" + ]; dependencies = [ aiohttp dask fsspec numpy + rangehttpserver requests scikit-image toolz @@ -51,6 +57,7 @@ buildPythonPackage rec { ++ fsspec.optional-dependencies.s3; nativeCheckInputs = [ + ome-zarr-models pytestCheckHook ]; @@ -104,9 +111,9 @@ buildPythonPackage rec { meta = { description = "Implementation of next-generation file format (NGFF) specifications for storing bioimaging data in the cloud"; homepage = "https://pypi.org/project/ome-zarr"; - changelog = "https://github.com/ome/ome-zarr-py/blob/${src.tag}/CHANGELOG.md"; + changelog = "https://github.com/ome/ome-zarr-py/blob/${finalAttrs.src.tag}/CHANGELOG.md"; license = lib.licenses.bsd2; maintainers = [ lib.maintainers.bcdarwin ]; mainProgram = "ome_zarr"; }; -} +}) diff --git a/pkgs/development/python-modules/pydantic-zarr/default.nix b/pkgs/development/python-modules/pydantic-zarr/default.nix new file mode 100644 index 000000000000..91e8ca9f312a --- /dev/null +++ b/pkgs/development/python-modules/pydantic-zarr/default.nix @@ -0,0 +1,64 @@ +{ + lib, + buildPythonPackage, + fetchFromGitHub, + + # build-system + hatch-vcs, + hatchling, + + # dependencies + numpy, + packaging, + pydantic, + + # tests + dask, + pytest-examples, + pytestCheckHook, + xarray, +}: + +buildPythonPackage (finalAttrs: { + pname = "pydantic-zarr"; + version = "0.9.1"; + pyproject = true; + + src = fetchFromGitHub { + owner = "zarr-developers"; + repo = "pydantic-zarr"; + tag = "v${finalAttrs.version}"; + hash = "sha256-rgtRN3EXSORa2g2a4aCZacCDLeWM6BosZe5XR0Pg6pU="; + }; + + build-system = [ + hatch-vcs + hatchling + ]; + + dependencies = [ + numpy + packaging + pydantic + ]; + + pythonImportsCheck = [ "pydantic_zarr" ]; + + nativeCheckInputs = [ + dask + pytest-examples + pytestCheckHook + xarray + ]; + + meta = { + description = "Pydantic models for Zarr"; + homepage = "https://github.com/zarr-developers/pydantic-zarr"; + changelog = "https://github.com/zarr-developers/pydantic-zarr/releases/tag/${finalAttrs.src.tag}"; + license = with lib.licenses; [ + bsd3 + mit + ]; + maintainers = with lib.maintainers; [ GaetanLepage ]; + }; +}) diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index b5a7599b6330..4d7e577fd5ae 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -11231,6 +11231,8 @@ self: super: with self; { ome-zarr = callPackage ../development/python-modules/ome-zarr { }; + ome-zarr-models = callPackage ../development/python-modules/ome-zarr-models { }; + omegaconf = callPackage ../development/python-modules/omegaconf { }; omemo = callPackage ../development/python-modules/omemo { }; @@ -13312,6 +13314,8 @@ self: super: with self; { pydantic-settings = callPackage ../development/python-modules/pydantic-settings { }; + pydantic-zarr = callPackage ../development/python-modules/pydantic-zarr { }; + pydantic_1 = callPackage ../development/python-modules/pydantic/1.nix { }; pydash = callPackage ../development/python-modules/pydash { };