biome: 1.9.2 -> 1.9.3 (#349335)
[NixPkgs.git] / pkgs / development / python-modules / scikit-learn / default.nix
blobeeba3f116d9d9ec39f2337002b67689f1fd9a391
2   stdenv,
3   lib,
4   buildPythonPackage,
5   fetchPypi,
7   # build-system
8   cython,
9   gfortran,
10   meson-python,
11   numpy,
12   scipy,
14   # native dependencies
15   glibcLocales,
16   llvmPackages,
17   pytestCheckHook,
18   pytest-xdist,
19   pillow,
20   joblib,
21   threadpoolctl,
22   pythonOlder,
25 buildPythonPackage rec {
26   pname = "scikit-learn";
27   version = "1.5.0";
28   pyproject = true;
30   disabled = pythonOlder "3.9";
32   src = fetchPypi {
33     pname = "scikit_learn";
34     inherit version;
35     hash = "sha256-eJ49sBx1DtbUlvott9UGN4V7RR5XvK6GO/9wfBJHvvc=";
36   };
38   postPatch = ''
39     substituteInPlace pyproject.toml \
40       --replace-fail "numpy>=2.0.0rc2" "numpy"
42     substituteInPlace meson.build --replace-fail \
43       "run_command('sklearn/_build_utils/version.py', check: true).stdout().strip()," \
44       "'${version}',"
45   '';
47   buildInputs = [
48     numpy.blas
49     pillow
50     glibcLocales
51   ] ++ lib.optionals stdenv.cc.isClang [ llvmPackages.openmp ];
53   nativeBuildInputs = [
54     gfortran
55   ];
57   build-system = [
58     cython
59     meson-python
60     numpy
61     scipy
62   ];
64   dependencies = [
65     joblib
66     numpy
67     scipy
68     threadpoolctl
69   ];
71   nativeCheckInputs = [
72     pytestCheckHook
73     pytest-xdist
74   ];
76   env.LC_ALL = "en_US.UTF-8";
78   preBuild = ''
79     export SKLEARN_BUILD_PARALLEL=$NIX_BUILD_CORES
80   '';
82   # PermissionError: [Errno 1] Operation not permitted: '/nix/nix-installer'
83   doCheck = !stdenv.hostPlatform.isDarwin;
85   disabledTests = [
86     # Skip test_feature_importance_regression - does web fetch
87     "test_feature_importance_regression"
88   ] ++ lib.optionals stdenv.hostPlatform.isAarch64 [
89     # doesn't seem to produce correct results?
90     # possibly relevant: https://github.com/scikit-learn/scikit-learn/issues/25838#issuecomment-2308650816
91     "test_sparse_input"
92   ];
94   pytestFlagsArray = [
95     # verbose build outputs needed to debug hard-to-reproduce hydra failures
96     "-v"
97     "--pyargs"
98     "sklearn"
100     # NuSVC memmap tests causes segmentation faults in certain environments
101     # (e.g. Hydra Darwin machines) related to a long-standing joblib issue
102     # (https://github.com/joblib/joblib/issues/563). See also:
103     # https://github.com/scikit-learn/scikit-learn/issues/17582
104     # Since we are overriding '-k' we need to include the 'disabledTests' from above manually.
105     "-k"
106     "'not (NuSVC and memmap) ${toString (lib.forEach disabledTests (t: "and not ${t}"))}'"
107   ];
109   preCheck = ''
110     cd $TMPDIR
111     export HOME=$TMPDIR
112     export OMP_NUM_THREADS=1
113   '';
115   pythonImportsCheck = [ "sklearn" ];
117   meta = with lib; {
118     description = "Set of python modules for machine learning and data mining";
119     changelog =
120       let
121         major = versions.major version;
122         minor = versions.minor version;
123         dashVer = replaceStrings [ "." ] [ "-" ] version;
124       in
125       "https://scikit-learn.org/stable/whats_new/v${major}.${minor}.html#version-${dashVer}";
126     homepage = "https://scikit-learn.org";
127     license = licenses.bsd3;
128     maintainers = with maintainers; [ davhau ];
129   };