2025-07-24 13:55:40 +02:00

133 lines
2.9 KiB
Nix

{
lib,
stdenv,
buildPythonPackage,
fetchFromGitHub,
# build-system
setuptools,
setuptools-scm,
# dependencies
arviz,
formulae,
graphviz,
pandas,
pymc,
# tests
blackjax,
numpyro,
pytestCheckHook,
writableTmpDirAsHomeHook,
}:
buildPythonPackage rec {
pname = "bambi";
version = "0.15.0";
pyproject = true;
src = fetchFromGitHub {
owner = "bambinos";
repo = "bambi";
tag = version;
hash = "sha256-G8RKTccsJRcLgTQPTOXAgK6ViVEwIQydUwdAexEJ2bc=";
};
build-system = [
setuptools
setuptools-scm
];
dependencies = [
arviz
formulae
graphviz
pandas
pymc
];
optional-dependencies = {
jax = [
# not (yet) available in nixpkgs (https://github.com/NixOS/nixpkgs/pull/345438)
# bayeux-ml
];
};
nativeCheckInputs = [
# bayeux-ml
blackjax
numpyro
pytestCheckHook
writableTmpDirAsHomeHook
];
disabledTests = [
# ValueError: dtype attribute is not a valid dtype instance
"test_vonmises_regression"
# AssertionError: assert (<xarray.DataArray 'yield' ()> Size: 1B\narray(False) & <xarray.DataArray 'yield' ()> Size: 1B\narray(False))
# https://github.com/bambinos/bambi/issues/888
"test_beta_regression"
# Tests require network access
"test_alias_equal_to_name"
"test_average_by"
"test_ax"
"test_basic"
"test_censored_response"
"test_custom_prior"
"test_data_is_copied"
"test_distributional_model"
"test_elasticity"
"test_extra_namespace"
"test_fig_kwargs"
"test_gamma_with_splines"
"test_group_effects"
"test_hdi_prob"
"test_legend"
"test_model_with_group_specific_effects"
"test_model_with_intercept"
"test_model_without_intercept"
"test_non_distributional_model"
"test_normal_with_splines"
"test_predict_new_groups_fail"
"test_predict_new_groups"
"test_predict_offset"
"test_set_alias_warnings"
"test_subplot_kwargs"
"test_transforms"
"test_use_hdi"
"test_with_group_and_panel"
"test_with_groups"
"test_with_user_values"
]
++ lib.optionals (stdenv.hostPlatform.isDarwin && stdenv.hostPlatform.isAarch64) [
# Python crash (in matplotlib)
# Fatal Python error: Aborted
"test_categorical_response"
"test_multiple_hsgp_and_by"
"test_multiple_outputs_with_alias"
"test_plot_priors"
"test_term_transformations"
];
disabledTestPaths = [
# bayeux-ml is not available
"tests/test_alternative_samplers.py"
# Tests require network access
"tests/test_interpret.py"
"tests/test_interpret_messages.py"
];
pythonImportsCheck = [ "bambi" ];
meta = {
description = "High-level Bayesian model-building interface";
homepage = "https://bambinos.github.io/bambi";
changelog = "https://github.com/bambinos/bambi/releases/tag/${src.tag}";
license = lib.licenses.mit;
maintainers = with lib.maintainers; [ bcdarwin ];
};
}