nixpkgs/pkgs/development/python-modules/scikitlearn/default.nix
Dima 82d7833b9b python37Packages.scikitlearn: patching build
For numpy>=1.17 a test-case broke that required adjustments to
a threshold.

See https://github.com/NixOS/nixpkgs/issues/68494
2019-09-15 23:52:15 +02:00

69 lines
1.6 KiB
Nix

{ stdenv
, lib
, buildPythonPackage
, fetchPypi
, fetchpatch
, gfortran, glibcLocales
, numpy, scipy, pytest, pillow
, cython
, joblib
, llvmPackages
}:
buildPythonPackage rec {
pname = "scikit-learn";
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 = "1nvj9j16y1hz9gm0qwzpnx2zmz55c63k1fai643migsyll9c7bqa";
};
buildInputs = [
pillow
gfortran
glibcLocales
] ++ lib.optionals stdenv.cc.isClang [
llvmPackages.openmp
];
nativeBuildInputs = [
cython
];
propagatedBuildInputs = [
numpy
scipy
numpy.blas
joblib
];
checkInputs = [ pytest ];
patches = [
# Fixes tests by changing threshold of a test-case that broke
# with numpy versions >= 1.17. This should be removed for versions > 0.21.2.
( fetchpatch {
url = "https://github.com/scikit-learn/scikit-learn/commit/b730befc821caec5b984d9ff3aa7bc4bd7f4d9bb.patch";
sha256 = "0z36m05mv6d494qwq0688rgwa7c4bbnm5s2rcjlrp29fwn3fy1bv";
})
];
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; [ ];
};
}