{ stdenv, buildPythonPackage, fetchPypi, python
, gfortran, glibcLocales, joblib, pythonOlder
, numpy, scipy, pytest, pillow, cython
}:

buildPythonPackage rec {
  pname = "scikit-learn";
  version = "0.21.2";
  # UnboundLocalError: local variable 'message' referenced before assignment
  disabled = stdenv.isi686 || (pythonOlder "3.5");  # https://github.com/scikit-learn/scikit-learn/issues/5534

  src = fetchPypi {
    inherit pname version;
    sha256 = "0aafc312a55ebf58073151b9308761a5fcfa45b7f7730cea4b1f066f824c72db";
  };

  buildInputs = [ pillow gfortran glibcLocales ];
  propagatedBuildInputs = [ numpy scipy numpy.blas joblib ];
  checkInputs = [ pytest ];
  nativeBuildInputs = [ cython ];

  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; [ ];
  };
}

{ stdenv, buildPythonPackage, fetchPypi
, gfortran, glibcLocales
, numpy, scipy, pytest, pillow
}:

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; [ ];
  };
}

Revert "python: scikit-learn: 0.20.3 -> 0.21.2"
Revert "python: scikit-learn: 0.20.3 -> 0.21.2"

This reverts commit 58cbb1b9e2c3c48304a9167c87d147992b36d8de.

78054a581c0f72aaa507eddc634ae7d733114b93 is more elaborated upgrade.
