Files
nixpkgs/pkgs/development/python-modules/scikit-learn/default.nix
T
Guillaume Girol 33afbf39f6 treewide: switch to nativeCheckInputs
checkInputs used to be added to nativeBuildInputs. Now we have
nativeCheckInputs to do that instead. Doing this treewide change allows
to keep hashes identical to before the introduction of
nativeCheckInputs.
2023-01-21 12:00:00 +00:00

106 lines
2.4 KiB
Nix

{ stdenv
, lib
, buildPythonPackage
, fetchPypi
, fetchpatch
, gfortran
, glibcLocales
, numpy
, scipy
, pytestCheckHook
, pytest-xdist
, pillow
, cython
, joblib
, llvmPackages
, threadpoolctl
, pythonOlder
}:
buildPythonPackage rec {
pname = "scikit-learn";
version = "1.2.0";
disabled = pythonOlder "3.6";
src = fetchPypi {
inherit pname version;
sha256 = "sha256-aAtls8ruRpVBOF0spbA/9wQI9sYYxYOUgxLw0hJd9oA=";
};
buildInputs = [
pillow
glibcLocales
] ++ lib.optionals stdenv.cc.isClang [
llvmPackages.openmp
];
nativeBuildInputs = [
cython
gfortran
];
propagatedBuildInputs = [
numpy
scipy
numpy.blas
joblib
threadpoolctl
];
nativeCheckInputs = [ pytestCheckHook pytest-xdist ];
LC_ALL="en_US.UTF-8";
preBuild = ''
export SKLEARN_BUILD_PARALLEL=$NIX_BUILD_CORES
'';
doCheck = !stdenv.isAarch64;
disabledTests = [
# Skip test_feature_importance_regression - does web fetch
"test_feature_importance_regression"
# failing on macos
"check_regressors_train"
"check_classifiers_train"
"xfail_ignored_in_check_estimator"
] ++ lib.optionals (stdenv.isDarwin) [
"test_graphical_lasso"
];
pytestFlagsArray = [
# verbose build outputs needed to debug hard-to-reproduce hydra failures
"-v"
"--pyargs" "sklearn"
# NuSVC memmap tests causes segmentation faults in certain environments
# (e.g. Hydra Darwin machines) related to a long-standing joblib issue
# (https://github.com/joblib/joblib/issues/563). See also:
# https://github.com/scikit-learn/scikit-learn/issues/17582
# Since we are overriding '-k' we need to include the 'disabledTests' from above manually.
"-k" "'not (NuSVC and memmap) ${toString (lib.forEach disabledTests (t: "and not ${t}"))}'"
];
preCheck = ''
cd $TMPDIR
export HOME=$TMPDIR
export OMP_NUM_THREADS=1
'';
pythonImportsCheck = [ "sklearn" ];
meta = with lib; {
description = "A set of python modules for machine learning and data mining";
changelog = let
major = versions.major version;
minor = versions.minor version;
dashVer = replaceStrings ["."] ["-"] version;
in
"https://scikit-learn.org/stable/whats_new/v${major}.${minor}.html#version-${dashVer}";
homepage = "https://scikit-learn.org";
license = licenses.bsd3;
maintainers = with maintainers; [ davhau ];
};
}