2025-07-24 14:27:50 +02:00

118 lines
2.4 KiB
Nix

{
lib,
stdenv,
buildPythonPackage,
fetchFromGitHub,
# build-system
setuptools,
setuptools-scm,
# dependencies
botorch,
ipywidgets,
jinja2,
markdown,
pandas,
plotly,
pyre-extensions,
scikit-learn,
scipy,
sympy,
# tests
pyfakefs,
pytestCheckHook,
sqlalchemy,
tabulate,
}:
buildPythonPackage rec {
pname = "ax-platform";
version = "1.0.0";
pyproject = true;
src = fetchFromGitHub {
owner = "facebook";
repo = "ax";
tag = version;
hash = "sha256-DFsV1w6J7bTZNUq9OYExDvfc7IfTcthGKAnRMNujRKI=";
};
env.ALLOW_BOTORCH_LATEST = "1";
build-system = [
setuptools
setuptools-scm
];
dependencies = [
botorch
ipywidgets
jinja2
markdown
pandas
plotly
pyre-extensions
scikit-learn
scipy
sympy
];
nativeCheckInputs = [
pyfakefs
# pytest-xdist
pytestCheckHook
sqlalchemy
tabulate
];
disabledTestPaths = [
"ax/benchmark"
"ax/runners/tests/test_torchx.py"
# broken with sqlalchemy 2
"ax/core/tests/test_experiment.py"
"ax/service/tests/test_ax_client.py"
"ax/service/tests/test_scheduler.py"
"ax/service/tests/test_with_db_settings_base.py"
# Hangs forever
"ax/analysis/plotly/tests/test_top_surfaces.py::TestTopSurfacesAnalysis::test_online"
];
disabledTests = [
# sqlalchemy.exc.ArgumentError: Strings are not accepted for attribute names in loader options; please use class-bound attributes directly.
"SQAStoreUtilsTest"
"SQAStoreTest"
# ValueError: `db_settings` argument should be of type ax.storage.sqa_store
"test_get_next_trials_with_db"
# exact comparison of floating points
"test_optimize_l0_homotopy"
# AssertionError: 5 != 2
"test_get_standard_plots_moo"
# AssertionError: Expected 'warning' to be called once. Called 3 times
"test_validate_kwarg_typing"
# uses torch.equal
"test_convert_observations"
# broken with sqlalchemy 2
"test_sql_storage"
]
++ lib.optionals stdenv.hostPlatform.isDarwin [
# flaky on x86
"test_gen_with_expanded_parameter_space"
];
pythonImportsCheck = [ "ax" ];
meta = {
description = "Platform for understanding, managing, deploying, and automating adaptive experiments";
homepage = "https://ax.dev/";
changelog = "https://github.com/facebook/Ax/releases/tag/${version}";
license = lib.licenses.mit;
maintainers = with lib.maintainers; [ veprbl ];
};
}