nixpkgs/pkgs/development/python-modules/nutpie/default.nix
2025-05-30 15:27:33 +02:00

105 lines
1.8 KiB
Nix

{
lib,
stdenv,
buildPythonPackage,
fetchFromGitHub,
rustPlatform,
# build-system
cargo,
rustc,
# dependencies
arviz,
pandas,
pyarrow,
xarray,
# tests
# bridgestan, (not packaged)
equinox,
flowjax,
jax,
jaxlib,
numba,
pytest-timeout,
pymc,
pytestCheckHook,
setuptools,
writableTmpDirAsHomeHook,
}:
buildPythonPackage rec {
pname = "nutpie";
version = "0.15.1";
pyproject = true;
src = fetchFromGitHub {
owner = "pymc-devs";
repo = "nutpie";
tag = "v${version}";
hash = "sha256-Mt3hCgmkgT9zWaHMvyjmO6U77/2os7E4zNOiyKWrRMo=";
};
cargoDeps = rustPlatform.fetchCargoVendor {
inherit pname version src;
hash = "sha256-ZUBrZqdesy0qKaxuD5gSlq7qOoXWn0aZNOidUb0grMM=";
};
build-system = [
cargo
rustPlatform.bindgenHook
rustPlatform.cargoSetupHook
rustPlatform.maturinBuildHook
rustc
];
pythonRelaxDeps = [
"xarray"
];
dependencies = [
arviz
pandas
pyarrow
xarray
];
pythonImportsCheck = [ "nutpie" ];
nativeCheckInputs = [
# bridgestan
equinox
flowjax
numba
jax
jaxlib
pymc
pytest-timeout
pytestCheckHook
setuptools
writableTmpDirAsHomeHook
];
pytestFlagsArray = [
"-v"
];
disabledTests = lib.optionals (stdenv.hostPlatform.isLinux && stdenv.hostPlatform.isAarch64) [
# flaky (assert np.float64(0.0017554642626285276) > 0.01)
"test_normalizing_flow"
];
disabledTestPaths = [
# Require unpackaged bridgestan
"tests/test_stan.py"
];
meta = {
description = "Python wrapper for nuts-rs";
homepage = "https://github.com/pymc-devs/nutpie";
changelog = "https://github.com/pymc-devs/nutpie/blob/v${version}/CHANGELOG.md";
license = lib.licenses.mit;
maintainers = with lib.maintainers; [ GaetanLepage ];
};
}