diff --git a/pkgs/development/python-modules/scikitlearn/0.20.nix b/pkgs/development/python-modules/scikitlearn/0.20.nix new file mode 100644 index 00000000000..b1c074faa8f --- /dev/null +++ b/pkgs/development/python-modules/scikitlearn/0.20.nix @@ -0,0 +1,38 @@ +{ stdenv, buildPythonPackage, fetchPypi +, gfortran, glibcLocales +, numpy, scipy, pytest, pillow +}: + +# 0.20.x is the last version that maintains python2 compatibility + +buildPythonPackage rec { + pname = "scikit-learn"; + version = "0.20.3"; + # UnboundLocalError: local variable 'message' referenced before assignment + disabled = stdenv.isi686; # https://github.com/scikit-learn/scikit-learn/issues/5534 + + src = fetchPypi { + inherit pname version; + sha256 = "c503802a81de18b8b4d40d069f5e363795ee44b1605f38bc104160ca3bfe2c41"; + }; + + buildInputs = [ pillow gfortran glibcLocales ]; + propagatedBuildInputs = [ numpy scipy numpy.blas ]; + checkInputs = [ pytest ]; + + LC_ALL="en_US.UTF-8"; + + doCheck = !stdenv.isAarch64; + # Skip test_feature_importance_regression - does web fetch + checkPhase = '' + cd $TMPDIR + HOME=$TMPDIR OMP_NUM_THREADS=1 pytest -k "not test_feature_importance_regression" --pyargs sklearn + ''; + + meta = with stdenv.lib; { + description = "A set of python modules for machine learning and data mining"; + homepage = http://scikit-learn.org; + license = licenses.bsd3; + maintainers = with maintainers; [ ]; + }; +} diff --git a/pkgs/development/python-modules/scikitlearn/default.nix b/pkgs/development/python-modules/scikitlearn/default.nix index 04ea254ee92..7eb020bbe60 100644 --- a/pkgs/development/python-modules/scikitlearn/default.nix +++ b/pkgs/development/python-modules/scikitlearn/default.nix @@ -1,21 +1,43 @@ -{ stdenv, buildPythonPackage, fetchPypi +{ stdenv +, lib +, buildPythonPackage +, fetchPypi , gfortran, glibcLocales , numpy, scipy, pytest, pillow +, cython +, joblib +, llvmPackages }: buildPythonPackage rec { pname = "scikit-learn"; - version = "0.20.3"; + version = "0.21.2"; # UnboundLocalError: local variable 'message' referenced before assignment disabled = stdenv.isi686; # https://github.com/scikit-learn/scikit-learn/issues/5534 src = fetchPypi { inherit pname version; - sha256 = "c503802a81de18b8b4d40d069f5e363795ee44b1605f38bc104160ca3bfe2c41"; + sha256 = "1nvj9j16y1hz9gm0qwzpnx2zmz55c63k1fai643migsyll9c7bqa"; }; - buildInputs = [ pillow gfortran glibcLocales ]; - propagatedBuildInputs = [ numpy scipy numpy.blas ]; + buildInputs = [ + pillow + gfortran + glibcLocales + ] ++ lib.optionals stdenv.cc.isClang [ + llvmPackages.openmp + ]; + + nativeBuildInputs = [ + cython + ]; + + propagatedBuildInputs = [ + numpy + scipy + numpy.blas + joblib + ]; checkInputs = [ pytest ]; LC_ALL="en_US.UTF-8"; diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index b693d5578cf..29d55da126f 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -4393,9 +4393,11 @@ in { scikitimage = callPackage ../development/python-modules/scikit-image { }; - scikitlearn = callPackage ../development/python-modules/scikitlearn { - inherit (pkgs) gfortran glibcLocales; - }; + scikitlearn = let + args = { inherit (pkgs) gfortran glibcLocales; }; + in + if isPy3k then callPackage ../development/python-modules/scikitlearn args + else callPackage ../development/python-modules/scikitlearn/0.20.nix args; scikit-bio = callPackage ../development/python-modules/scikit-bio { };