diff --git a/pkgs/development/python-modules/array-api-compat/default.nix b/pkgs/development/python-modules/array-api-compat/default.nix new file mode 100644 index 000000000000..3f25d7763b9e --- /dev/null +++ b/pkgs/development/python-modules/array-api-compat/default.nix @@ -0,0 +1,63 @@ +{ + lib, + buildPythonPackage, + fetchFromGitHub, + pytestCheckHook, + setuptools, + numpy, + jaxlib, + jax, + torch, + dask, + sparse, + array-api-strict, + config, + cudaSupport ? config.cudaSupport, + cupy, + nix-update-script, +}: + +buildPythonPackage rec { + pname = "array-api-compat"; + version = "1.8"; + pyproject = true; + + src = fetchFromGitHub { + owner = "data-apis"; + repo = "array-api-compat"; + rev = "refs/tags/${version}"; + hash = "sha256-DZs51yWgeMX7lmzR6jily0S3MRD4AVlk7BP8aU99Zp8="; + }; + + build-system = [ setuptools ]; + + nativeCheckInputs = [ + pytestCheckHook + numpy + jaxlib + jax + torch + dask + sparse + array-api-strict + ] ++ lib.optionals cudaSupport [ cupy ]; + + pythonImportsCheck = [ "array_api_compat" ]; + + # CUDA (used via cupy) is not available in the testing sandbox + checkPhase = '' + runHook preCheck + python -m pytest -k 'not cupy' + runHook postCheck + ''; + + passthru.updateScript = nix-update-script { }; + + meta = { + homepage = "https://data-apis.org/array-api-compat"; + changelog = "https://github.com/data-apis/array-api-compat/releases/tag/${version}"; + description = "Compatibility layer for NumPy to support the Python array API"; + license = lib.licenses.mit; + maintainers = with lib.maintainers; [ berquist ]; + }; +} diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index 4dec444551e2..570490d6cd96 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -781,6 +781,8 @@ self: super: with self; { arnparse = callPackage ../development/python-modules/arnparse { }; + array-api-compat = callPackage ../development/python-modules/array-api-compat { }; + array-api-strict = callPackage ../development/python-modules/array-api-strict { }; array-record = callPackage ../development/python-modules/array-record { };