diff --git a/pkgs/development/python-modules/imbalanced-learn/default.nix b/pkgs/development/python-modules/imbalanced-learn/default.nix index b09f6da99388..dd192cab0cd9 100644 --- a/pkgs/development/python-modules/imbalanced-learn/default.nix +++ b/pkgs/development/python-modules/imbalanced-learn/default.nix @@ -14,6 +14,8 @@ tensorflow, threadpoolctl, pytestCheckHook, + sklearn-compat, + python, }: buildPythonPackage rec { @@ -41,6 +43,7 @@ buildPythonPackage rec { scikit-learn scipy threadpoolctl + sklearn-compat ]; optional-dependencies = { @@ -60,19 +63,35 @@ buildPythonPackage rec { preCheck = '' export HOME=$TMPDIR + # The GitHub source contains too many files picked up by pytest like + # examples and documentation files which can't pass. + cd $out/${python.sitePackages} ''; disabledTestPaths = [ # require tensorflow and keras, but we don't want to # add them to nativeCheckInputs just for this tests - "imblearn/keras/_generator.py" + "imblearn/keras" + "imblearn/tensorflow" + # even with precheck directory change, pytest still tries to test docstrings + "imblearn/tests/test_docstring_parameters.py" + # Skip dependencies test - pythonImportsCheck already does this + "imblearn/utils/tests/test_min_dependencies.py" ]; - meta = with lib; { + disabledTests = [ + # Broken upstream test https://github.com/scikit-learn-contrib/imbalanced-learn/issues/1131 + "test_estimators_compatibility_sklearn" + ]; + + meta = { description = "Library offering a number of re-sampling techniques commonly used in datasets showing strong between-class imbalance"; homepage = "https://github.com/scikit-learn-contrib/imbalanced-learn"; changelog = "https://github.com/scikit-learn-contrib/imbalanced-learn/releases/tag/${version}"; - license = licenses.mit; - maintainers = [ maintainers.rmcgibbo ]; + license = lib.licenses.mit; + maintainers = with lib.maintainers; [ + rmcgibbo + philipwilk + ]; }; } diff --git a/pkgs/development/python-modules/sklearn-compat/default.nix b/pkgs/development/python-modules/sklearn-compat/default.nix new file mode 100644 index 000000000000..3fd17c6cade4 --- /dev/null +++ b/pkgs/development/python-modules/sklearn-compat/default.nix @@ -0,0 +1,52 @@ +{ + lib, + buildPythonPackage, + fetchFromGitHub, + hatchling, + scikit-learn, + pandas, + pytestCheckHook, + pytest-cov, + pytest-xdist, + pytz, +}: + +buildPythonPackage rec { + pname = "sklearn-compat"; + version = "0.1.3"; + pyproject = true; + + src = fetchFromGitHub { + owner = "sklearn-compat"; + repo = "sklearn-compat"; + tag = version; + hash = "sha256-9Py5VKDej7xDMdWVujkS/ooxOkEcjPJNlBHkbe/rycE="; + }; + + build-system = [ + hatchling + ]; + + dependencies = [ + scikit-learn + ]; + + nativeCheckInputs = [ + pandas + pytestCheckHook + pytest-cov + pytest-xdist + pytz + ]; + + pythonImportsCheck = [ + "sklearn_compat" + ]; + + meta = { + description = "Ease multi-version support for scikit-learn compatible library"; + homepage = "https://github.com/sklearn-compat/sklearn-compat"; + license = lib.licenses.bsd3; + maintainers = with lib.maintainers; [ philipwilk ]; + }; +} diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index c01014c33bad..032963a1abe0 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -15956,6 +15956,8 @@ self: super: with self; { skl2onnx = callPackage ../development/python-modules/skl2onnx { }; + sklearn-compat = callPackage ../development/python-modules/sklearn-compat { }; + sklearn-deap = callPackage ../development/python-modules/sklearn-deap { }; skodaconnect = callPackage ../development/python-modules/skodaconnect { };