[python-scikit-learn] Unbundle joblib in sklean 0.14.1

Sergio Pascual sergiopr at fedoraproject.org
Mon Sep 9 09:15:32 UTC 2013


commit 3bd41f736624afde681a0068b17b35e4d36721cd
Author: Sergio Pascual <sergiopr at fis.ucm.es>
Date:   Fri Sep 6 19:20:35 2013 +0200

    Unbundle joblib in sklean 0.14.1

 .gitignore                    |    1 +
 python-scikit-learn.spec      |   91 ++++++++--
 sklearn-unbundle-joblib.patch |  423 +++++++++++++++++++++++++++++++++++++++++
 sources                       |    2 +-
 unbundle-joblib.sh            |   14 ++
 5 files changed, 517 insertions(+), 14 deletions(-)
---
diff --git a/.gitignore b/.gitignore
index 4e2803f..481ca81 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1 +1,2 @@
 /scikit-learn-0.13.1.tar.gz
+/scikit-learn-0.14.1.tar.gz
diff --git a/python-scikit-learn.spec b/python-scikit-learn.spec
index bee37d9..2b3c2ec 100644
--- a/python-scikit-learn.spec
+++ b/python-scikit-learn.spec
@@ -1,28 +1,29 @@
 %global upname scikit-learn
+%global with_python3 0
 
 Name: python-scikit-learn
-Version: 0.13.1
-Release: 3%{?dist}
+Version: 0.14.1
+Release: 1%{?dist}
 Summary: Machine learning in Python
 License: BSD
 # No license file
+# https://github.com/scikit-learn/scikit-learn/issues/2422
 # webpage says: BSD (3 clause)
+
 # part of the files in sklearn/src/cblas: BSD (2 clause)
 # part of the files in sklearn/src/cblas: BSD (3 clause)
 
 URL: http://scikit-learn.org/
 Source0: https://pypi.python.org/packages/source/s/scikit-learn/%{upname}-%{version}.tar.gz
+Patch0: sklearn-unbundle-joblib.patch
 BuildRequires: python2-devel 
-BuildRequires: numpy
-BuildRequires: atlas-devel
-BuildRequires: blas-devel
-BuildRequires: scipy
-BuildRequires: python-nose
-Requires: numpy
-Requires: scipy
+BuildRequires: numpy scipy python-nose python-matplotlib
+BuildRequires: python-six python-joblib
+BuildRequires: atlas-devel blas-devel
+Requires: numpy scipy python-six python-joblib
 
 # we don't want to provide private python extension libs
-%global __provides_exclude_from ^(%{python_sitearch}/.*\\.so)$
+%global __provides_exclude_from ^(%{python_sitearch}|%{python3_sitearch})/.*\\.so$
 
 %description
 Scikit-learn integrates machine learning algorithms in the tightly-knit 
@@ -31,29 +32,83 @@ As a machine-learning module, it provides versatile tools for data mining and
 analysis in any field of science and engineering. It strives to be simple and 
 efficient, accessible to everybody, and reusable in various contexts.
 
+%if 0%{?with_python3}
+%package -n python3-%{upname}
+Summary: Machine learning in Python
+BuildRequires: python3-devel python3-nose
+BuildRequires: python3-numpy python3-scipy python3-matplotlib
+BuildRequires: python3-six
+BuildRequires: atlas-devel blas-devel
+Requires: python3-numpy python3-scipy
+
+%description -n python3-%{upname}
+Scikit-learn integrates machine learning algorithms in the tightly-knit 
+scientific Python world, building upon numpy, scipy, and matplotlib. 
+As a machine-learning module, it provides versatile tools for data mining and 
+analysis in any field of science and engineering. It strives to be simple and 
+efficient, accessible to everybody, and reusable in various contexts.
+%endif # with_python3
+
 %prep
 %setup -n %{upname}-%{version} -q
+%patch0 -p1
+rm -rf sklearn/externals/joblib
+
 rm -rf *egg-info
 
+chmod -x examples/plot_rbm_logistic_classification.py
+
+# Reported upstream
+# https://github.com/scikit-learn/scikit-learn/issues/2423
 # Removing bogus shebang
 pushd sklearn/datasets
 sed -i -e "1d" setup.py
 popd
 
 pushd sklearn/gaussian_process/
-sed -i -e "1d" gaussian_process.py regression_models.py __init__.py correlation_models.py
+#sed -i -e "1d" gaussian_process.py regression_models.py __init__.py correlation_models.py
+sed -i -e "1d" regression_models.py __init__.py correlation_models.py
+sed -i -e "2d" gaussian_process.py 
 popd
 
+# Unbundle six
+
+%if 0%{?with_python3}
+rm -rf %{py3dir}
+cp -a . %{py3dir}
+find %{py3dir} -name '*.py' | xargs sed -i '1s|^#!python|#!%{__python3}|'
+%endif # with_python3
+
+find -name '*.py' | xargs sed -i '1s|^#!python|#!%{__python}|'
+
 %build
 CFLAGS="%{optflags}" %{__python} setup.py build
 
+%if 0%{?with_python3}
+pushd %{py3dir}
+CFLAGS="%{optflags}" %{__python3} setup.py build
+popd
+%endif # with_python3
+
 %install
+%if 0%{?with_python3}
+pushd %{py3dir}
+%{__python3} setup.py install --skip-build --root  %{buildroot}
+popd
+%endif # with_python3
+
 %{__python} setup.py install --skip-build --root  %{buildroot}
+
 find %{buildroot} -name "*.so" | xargs chmod 755
 
 %check
-%{__python} setup.py install --skip-build --root testme
-pushd testme/%{python_sitearch}
+#%if 0%{?with_python3}
+# pushd %{buildroot}/%{python3_sitearch}
+# nosetests-3.3 sklearn
+# popd
+#%endif # with_python3
+
+pushd %{buildroot}/%{python_sitearch}
 nosetests sklearn
 popd
  
@@ -62,7 +117,17 @@ popd
 %{python_sitearch}/sklearn
 %{python_sitearch}/scikit_learn-*.egg-info
 
+%if 0%{?with_python3}
+%files -n python3-%{upname}
+%doc examples/ AUTHORS.rst README.rst
+%{python3_sitearch}/sklearn
+%{python3_sitearch}/scikit_learn-*.egg-info
+%endif # with_python3
+
 %changelog
+* Wed Aug 28 2013 Sergio Pascual <sergiopr at fedoraproject.org> - 0.14.1-1
+- New upstream source (0.14.1)
+
 * Wed Jul 10 2013 Sergio Pascual <sergiopr at fedoraproject.org> - 0.13.1-3
 - Reorder buildrequires and requires
 - Dropped doc, it does not build
diff --git a/sklearn-unbundle-joblib.patch b/sklearn-unbundle-joblib.patch
new file mode 100644
index 0000000..6e2a728
--- /dev/null
+++ b/sklearn-unbundle-joblib.patch
@@ -0,0 +1,423 @@
+diff -ur scikit-learn-0.14.1/examples/applications/wikipedia_principal_eigenvector.py scikit-learn-0.14.1.joblib/examples/applications/wikipedia_principal_eigenvector.py
+--- scikit-learn-0.14.1/examples/applications/wikipedia_principal_eigenvector.py	2013-09-06 19:12:44.815336853 +0200
++++ scikit-learn-0.14.1.joblib/examples/applications/wikipedia_principal_eigenvector.py	2013-09-06 19:09:40.269822610 +0200
+@@ -45,7 +45,7 @@
+ from scipy import sparse
+ 
+ from sklearn.utils.extmath import randomized_svd
+-from sklearn.externals.joblib import Memory
++from joblib import Memory
+ 
+ 
+ print(__doc__)
+diff -ur scikit-learn-0.14.1/examples/cluster/plot_feature_agglomeration_vs_univariate_selection.py scikit-learn-0.14.1.joblib/examples/cluster/plot_feature_agglomeration_vs_univariate_selection.py
+--- scikit-learn-0.14.1/examples/cluster/plot_feature_agglomeration_vs_univariate_selection.py	2013-09-06 19:12:44.807336787 +0200
++++ scikit-learn-0.14.1.joblib/examples/cluster/plot_feature_agglomeration_vs_univariate_selection.py	2013-09-06 19:09:40.010820490 +0200
+@@ -31,7 +31,7 @@
+ from sklearn.linear_model import BayesianRidge
+ from sklearn.pipeline import Pipeline
+ from sklearn.grid_search import GridSearchCV
+-from sklearn.externals.joblib import Memory
++from joblib import Memory
+ from sklearn.cross_validation import KFold
+ 
+ ###############################################################################
+diff -ur scikit-learn-0.14.1/sklearn/cluster/hierarchical.py scikit-learn-0.14.1.joblib/sklearn/cluster/hierarchical.py
+--- scikit-learn-0.14.1/sklearn/cluster/hierarchical.py	2013-09-06 19:12:45.005338414 +0200
++++ scikit-learn-0.14.1.joblib/sklearn/cluster/hierarchical.py	2013-09-06 19:09:44.714858988 +0200
+@@ -15,7 +15,7 @@
+ from scipy.cluster import hierarchy
+ 
+ from ..base import BaseEstimator, ClusterMixin
+-from ..externals.joblib import Memory
++from joblib import Memory
+ from ..externals import six
+ from ..metrics import euclidean_distances
+ from ..utils import array2d
+diff -ur scikit-learn-0.14.1/sklearn/cluster/k_means_.py scikit-learn-0.14.1.joblib/sklearn/cluster/k_means_.py
+--- scikit-learn-0.14.1/sklearn/cluster/k_means_.py	2013-09-06 19:12:45.008338439 +0200
++++ scikit-learn-0.14.1.joblib/sklearn/cluster/k_means_.py	2013-09-06 19:09:44.760859364 +0200
+@@ -23,8 +23,8 @@
+ from ..utils import check_random_state
+ from ..utils import atleast2d_or_csr
+ from ..utils import as_float_array
+-from ..externals.joblib import Parallel
+-from ..externals.joblib import delayed
++from joblib import Parallel
++from joblib import delayed
+ 
+ from . import _k_means
+ 
+diff -ur scikit-learn-0.14.1/sklearn/covariance/graph_lasso_.py scikit-learn-0.14.1.joblib/sklearn/covariance/graph_lasso_.py
+--- scikit-learn-0.14.1/sklearn/covariance/graph_lasso_.py	2013-09-06 19:12:44.892337486 +0200
++++ scikit-learn-0.14.1.joblib/sklearn/covariance/graph_lasso_.py	2013-09-06 19:09:41.852835565 +0200
+@@ -21,7 +21,7 @@
+ from ..linear_model import lars_path
+ from ..linear_model import cd_fast
+ from ..cross_validation import check_cv, cross_val_score
+-from ..externals.joblib import Parallel, delayed
++from joblib import Parallel, delayed
+ import collections
+ 
+ 
+diff -ur scikit-learn-0.14.1/sklearn/cross_validation.py scikit-learn-0.14.1.joblib/sklearn/cross_validation.py
+--- scikit-learn-0.14.1/sklearn/cross_validation.py	2013-09-06 19:12:44.875337346 +0200
++++ scikit-learn-0.14.1.joblib/sklearn/cross_validation.py	2013-09-06 19:09:41.485832562 +0200
+@@ -22,7 +22,7 @@
+ from .base import is_classifier, clone
+ from .utils import check_arrays, check_random_state, safe_mask
+ from .utils.fixes import unique
+-from .externals.joblib import Parallel, delayed
++from joblib import Parallel, delayed
+ from .externals.six import string_types, with_metaclass
+ from .metrics.scorer import _deprecate_loss_and_score_funcs
+ 
+diff -ur scikit-learn-0.14.1/sklearn/datasets/california_housing.py scikit-learn-0.14.1.joblib/sklearn/datasets/california_housing.py
+--- scikit-learn-0.14.1/sklearn/datasets/california_housing.py	2013-09-06 19:12:44.951337971 +0200
++++ scikit-learn-0.14.1.joblib/sklearn/datasets/california_housing.py	2013-09-06 19:09:43.522849233 +0200
+@@ -31,7 +31,7 @@
+ import numpy as np
+ 
+ from .base import get_data_home, Bunch
+-from ..externals import joblib
++import joblib
+ 
+ 
+ DATA_URL = "http://lib.stat.cmu.edu/modules.php?op=modload&name=Downloads&"\
+diff -ur scikit-learn-0.14.1/sklearn/datasets/covtype.py scikit-learn-0.14.1.joblib/sklearn/datasets/covtype.py
+--- scikit-learn-0.14.1/sklearn/datasets/covtype.py	2013-09-06 19:12:44.949337954 +0200
++++ scikit-learn-0.14.1.joblib/sklearn/datasets/covtype.py	2013-09-06 19:09:43.449848635 +0200
+@@ -23,7 +23,7 @@
+ 
+ from .base import get_data_home
+ from .base import Bunch
+-from ..externals import joblib
++import joblib
+ from ..utils import check_random_state
+ 
+ 
+diff -ur scikit-learn-0.14.1/sklearn/datasets/lfw.py scikit-learn-0.14.1.joblib/sklearn/datasets/lfw.py
+--- scikit-learn-0.14.1/sklearn/datasets/lfw.py	2013-09-06 19:12:44.948337946 +0200
++++ scikit-learn-0.14.1.joblib/sklearn/datasets/lfw.py	2013-09-06 19:09:43.439848553 +0200
+@@ -31,7 +31,7 @@
+ import urllib
+ 
+ from .base import get_data_home, Bunch
+-from ..externals.joblib import Memory
++from joblib import Memory
+ 
+ from ..externals.six import b, u
+ 
+diff -ur scikit-learn-0.14.1/sklearn/datasets/olivetti_faces.py scikit-learn-0.14.1.joblib/sklearn/datasets/olivetti_faces.py
+--- scikit-learn-0.14.1/sklearn/datasets/olivetti_faces.py	2013-09-06 19:12:44.947337938 +0200
++++ scikit-learn-0.14.1.joblib/sklearn/datasets/olivetti_faces.py	2013-09-06 19:09:43.400848234 +0200
+@@ -39,7 +39,7 @@
+ 
+ from .base import get_data_home, Bunch
+ from ..utils import check_random_state
+-from ..externals import joblib
++import joblib
+ 
+ 
+ DATA_URL = "http://cs.nyu.edu/~roweis/data/olivettifaces.mat"
+diff -ur scikit-learn-0.14.1/sklearn/datasets/species_distributions.py scikit-learn-0.14.1.joblib/sklearn/datasets/species_distributions.py
+--- scikit-learn-0.14.1/sklearn/datasets/species_distributions.py	2013-09-06 19:12:44.950337962 +0200
++++ scikit-learn-0.14.1.joblib/sklearn/datasets/species_distributions.py	2013-09-06 19:09:43.477848864 +0200
+@@ -50,7 +50,7 @@
+ import numpy as np
+ 
+ from sklearn.datasets.base import get_data_home, Bunch
+-from sklearn.externals import joblib
++import joblib
+ 
+ DIRECTORY_URL = "http://www.cs.princeton.edu/~schapire/maxent/datasets/"
+ 
+diff -ur scikit-learn-0.14.1/sklearn/datasets/twenty_newsgroups.py scikit-learn-0.14.1.joblib/sklearn/datasets/twenty_newsgroups.py
+--- scikit-learn-0.14.1/sklearn/datasets/twenty_newsgroups.py	2013-09-06 19:12:44.949337954 +0200
++++ scikit-learn-0.14.1.joblib/sklearn/datasets/twenty_newsgroups.py	2013-09-06 19:09:43.464848758 +0200
+@@ -52,7 +52,7 @@
+ from ..utils.fixes import in1d
+ from ..feature_extraction.text import CountVectorizer
+ from ..preprocessing import normalize
+-from ..externals import joblib, six
++import joblib, six
+ 
+ if six.PY3:
+     from urllib.request import urlopen
+diff -ur scikit-learn-0.14.1/sklearn/decomposition/dict_learning.py scikit-learn-0.14.1.joblib/sklearn/decomposition/dict_learning.py
+--- scikit-learn-0.14.1/sklearn/decomposition/dict_learning.py	2013-09-06 19:12:44.900337552 +0200
++++ scikit-learn-0.14.1.joblib/sklearn/decomposition/dict_learning.py	2013-09-06 19:09:42.042837120 +0200
+@@ -15,7 +15,7 @@
+ from numpy.lib.stride_tricks import as_strided
+ 
+ from ..base import BaseEstimator, TransformerMixin
+-from ..externals.joblib import Parallel, delayed, cpu_count
++from joblib import Parallel, delayed, cpu_count
+ from ..externals.six.moves import zip
+ from ..utils import array2d, check_random_state, gen_even_slices
+ from ..utils.extmath import randomized_svd
+diff -ur scikit-learn-0.14.1/sklearn/decomposition/tests/test_sparse_pca.py scikit-learn-0.14.1.joblib/sklearn/decomposition/tests/test_sparse_pca.py
+--- scikit-learn-0.14.1/sklearn/decomposition/tests/test_sparse_pca.py	2013-09-06 19:12:44.906337601 +0200
++++ scikit-learn-0.14.1.joblib/sklearn/decomposition/tests/test_sparse_pca.py	2013-09-06 19:09:42.197838389 +0200
+@@ -65,7 +65,7 @@
+     U1 = spca_lars.transform(Y)
+     # Test multiple CPUs
+     if sys.platform == 'win32':  # fake parallelism for win32
+-        import sklearn.externals.joblib.parallel as joblib_par
++        import joblib.parallel as joblib_par
+         _mp = joblib_par.multiprocessing
+         joblib_par.multiprocessing = None
+         try:
+@@ -144,7 +144,7 @@
+     U1 = spca_lars.transform(Y)
+     # Test multiple CPUs
+     if sys.platform == 'win32':  # fake parallelism for win32
+-        import sklearn.externals.joblib.parallel as joblib_par
++        import joblib.parallel as joblib_par
+         _mp = joblib_par.multiprocessing
+         joblib_par.multiprocessing = None
+         try:
+diff -ur scikit-learn-0.14.1/sklearn/ensemble/forest.py scikit-learn-0.14.1.joblib/sklearn/ensemble/forest.py
+--- scikit-learn-0.14.1/sklearn/ensemble/forest.py	2013-09-06 19:12:44.850337140 +0200
++++ scikit-learn-0.14.1.joblib/sklearn/ensemble/forest.py	2013-09-06 19:09:41.000828593 +0200
+@@ -44,7 +44,7 @@
+ from abc import ABCMeta, abstractmethod
+ 
+ from ..base import ClassifierMixin, RegressorMixin
+-from ..externals.joblib import Parallel, delayed, cpu_count
++from joblib import Parallel, delayed, cpu_count
+ from ..externals import six
+ from ..externals.six.moves import xrange
+ from ..feature_selection.from_model import _LearntSelectorMixin
+diff -ur scikit-learn-0.14.1/sklearn/ensemble/partial_dependence.py scikit-learn-0.14.1.joblib/sklearn/ensemble/partial_dependence.py
+--- scikit-learn-0.14.1/sklearn/ensemble/partial_dependence.py	2013-09-06 19:12:44.839337050 +0200
++++ scikit-learn-0.14.1.joblib/sklearn/ensemble/partial_dependence.py	2013-09-06 19:09:40.788826858 +0200
+@@ -14,7 +14,7 @@
+ from scipy.stats.mstats import mquantiles
+ 
+ from ..utils.extmath import cartesian
+-from ..externals.joblib import Parallel, delayed
++from joblib import Parallel, delayed
+ from ..externals import six
+ from ..externals.six.moves import xrange
+ from ..utils import array2d
+diff -ur scikit-learn-0.14.1/sklearn/externals/joblib/__init__.py scikit-learn-0.14.1.joblib/sklearn/externals/joblib/__init__.py
+--- scikit-learn-0.14.1/sklearn/externals/joblib/__init__.py	2013-09-06 19:12:44.927337773 +0200
++++ scikit-learn-0.14.1.joblib/sklearn/externals/joblib/__init__.py	2013-09-06 19:09:42.805843365 +0200
+@@ -61,7 +61,7 @@
+    computation to disk and rerun it only if necessary::
+ 
+       >>> import numpy as np
+-      >>> from sklearn.externals.joblib import Memory
++      >>> from joblib import Memory
+       >>> mem = Memory(cachedir='/tmp/joblib')
+       >>> import numpy as np
+       >>> a = np.vander(np.arange(3)).astype(np.float)
+@@ -80,7 +80,7 @@
+ 2) **Embarrassingly parallel helper:** to make is easy to write readable
+    parallel code and debug it quickly::
+ 
+-      >>> from sklearn.externals.joblib import Parallel, delayed
++      >>> from joblib import Parallel, delayed
+       >>> from math import sqrt
+       >>> Parallel(n_jobs=1)(delayed(sqrt)(i**2) for i in range(10))
+       [0.0, 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0]
+diff -ur scikit-learn-0.14.1/sklearn/externals/joblib/parallel.py scikit-learn-0.14.1.joblib/sklearn/externals/joblib/parallel.py
+--- scikit-learn-0.14.1/sklearn/externals/joblib/parallel.py	2013-09-06 19:12:44.928337782 +0200
++++ scikit-learn-0.14.1.joblib/sklearn/externals/joblib/parallel.py	2013-09-06 19:09:42.824843520 +0200
+@@ -204,7 +204,7 @@
+         A simple example:
+ 
+         >>> from math import sqrt
+-        >>> from sklearn.externals.joblib import Parallel, delayed
++        >>> from joblib import Parallel, delayed
+         >>> Parallel(n_jobs=1)(delayed(sqrt)(i**2) for i in range(10))
+         [0.0, 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0]
+ 
+@@ -212,7 +212,7 @@
+         values:
+ 
+         >>> from math import modf
+-        >>> from sklearn.externals.joblib import Parallel, delayed
++        >>> from joblib import Parallel, delayed
+         >>> r = Parallel(n_jobs=1)(delayed(modf)(i/2.) for i in range(10))
+         >>> res, i = zip(*r)
+         >>> res
+@@ -224,7 +224,7 @@
+         messages::
+ 
+             >>> from time import sleep
+-            >>> from sklearn.externals.joblib import Parallel, delayed
++            >>> from joblib import Parallel, delayed
+             >>> r = Parallel(n_jobs=2, verbose=5)(delayed(sleep)(.1) for _ in range(10)) #doctest: +SKIP
+             [Parallel(n_jobs=2)]: Done   1 out of  10 | elapsed:    0.1s remaining:    0.9s
+             [Parallel(n_jobs=2)]: Done   3 out of  10 | elapsed:    0.2s remaining:    0.5s
+@@ -238,7 +238,7 @@
+         child process::
+ 
+          >>> from heapq import nlargest
+-         >>> from sklearn.externals.joblib import Parallel, delayed
++         >>> from joblib import Parallel, delayed
+          >>> Parallel(n_jobs=2)(delayed(nlargest)(2, n) for n in (range(4), 'abcde', 3)) #doctest: +SKIP
+          #...
+          ---------------------------------------------------------------------------
+@@ -270,7 +270,7 @@
+         number of iterations cannot be reported in the progress messages::
+ 
+          >>> from math import sqrt
+-         >>> from sklearn.externals.joblib import Parallel, delayed
++         >>> from joblib import Parallel, delayed
+ 
+          >>> def producer():
+          ...     for i in range(6):
+diff -ur scikit-learn-0.14.1/sklearn/externals/setup.py scikit-learn-0.14.1.joblib/sklearn/externals/setup.py
+--- scikit-learn-0.14.1/sklearn/externals/setup.py	2013-09-06 19:12:44.930337798 +0200
++++ scikit-learn-0.14.1.joblib/sklearn/externals/setup.py	2013-09-06 19:12:23.764163896 +0200
+@@ -4,7 +4,5 @@
+ def configuration(parent_package='', top_path=None):
+     from numpy.distutils.misc_util import Configuration
+     config = Configuration('externals', parent_package, top_path)
+-    config.add_subpackage('joblib')
+-    config.add_subpackage('joblib/test')
+ 
+     return config
+diff -ur scikit-learn-0.14.1/sklearn/grid_search.py scikit-learn-0.14.1.joblib/sklearn/grid_search.py
+--- scikit-learn-0.14.1/sklearn/grid_search.py	2013-09-06 19:12:44.886337436 +0200
++++ scikit-learn-0.14.1.joblib/sklearn/grid_search.py	2013-09-06 19:09:41.714834436 +0200
+@@ -24,7 +24,7 @@
+ from .base import BaseEstimator, is_classifier, clone
+ from .base import MetaEstimatorMixin
+ from .cross_validation import check_cv
+-from .externals.joblib import Parallel, delayed, logger
++from joblib import Parallel, delayed, logger
+ from .externals import six
+ from .utils import safe_mask, check_random_state
+ from .utils.validation import _num_samples, check_arrays
+diff -ur scikit-learn-0.14.1/sklearn/linear_model/base.py scikit-learn-0.14.1.joblib/sklearn/linear_model/base.py
+--- scikit-learn-0.14.1/sklearn/linear_model/base.py	2013-09-06 19:12:44.970338127 +0200
++++ scikit-learn-0.14.1.joblib/sklearn/linear_model/base.py	2013-09-06 19:09:43.929852563 +0200
+@@ -21,7 +21,7 @@
+ from scipy import sparse
+ 
+ from ..externals import six
+-from ..externals.joblib import Parallel, delayed
++from joblib import Parallel, delayed
+ from ..base import BaseEstimator, ClassifierMixin, RegressorMixin
+ from ..utils import as_float_array, atleast2d_or_csr, safe_asarray
+ from ..utils.extmath import safe_sparse_dot
+diff -ur scikit-learn-0.14.1/sklearn/linear_model/coordinate_descent.py scikit-learn-0.14.1.joblib/sklearn/linear_model/coordinate_descent.py
+--- scikit-learn-0.14.1/sklearn/linear_model/coordinate_descent.py	2013-09-06 19:12:44.962338061 +0200
++++ scikit-learn-0.14.1.joblib/sklearn/linear_model/coordinate_descent.py	2013-09-06 19:09:43.786851393 +0200
+@@ -19,7 +19,7 @@
+ from .base import center_data
+ from ..utils import array2d, atleast2d_or_csc, deprecated
+ from ..cross_validation import check_cv
+-from ..externals.joblib import Parallel, delayed
++from joblib import Parallel, delayed
+ from ..externals import six
+ from ..externals.six.moves import xrange
+ from ..utils.extmath import safe_sparse_dot
+diff -ur scikit-learn-0.14.1/sklearn/linear_model/least_angle.py scikit-learn-0.14.1.joblib/sklearn/linear_model/least_angle.py
+--- scikit-learn-0.14.1/sklearn/linear_model/least_angle.py	2013-09-06 19:12:44.967338102 +0200
++++ scikit-learn-0.14.1.joblib/sklearn/linear_model/least_angle.py	2013-09-06 19:09:43.876852130 +0200
+@@ -22,7 +22,7 @@
+ from ..base import RegressorMixin
+ from ..utils import array2d, arrayfuncs, as_float_array
+ from ..cross_validation import check_cv
+-from ..externals.joblib import Parallel, delayed
++from joblib import Parallel, delayed
+ from ..externals.six.moves import xrange
+ 
+ 
+diff -ur scikit-learn-0.14.1/sklearn/linear_model/omp.py scikit-learn-0.14.1.joblib/sklearn/linear_model/omp.py
+--- scikit-learn-0.14.1/sklearn/linear_model/omp.py	2013-09-06 19:12:44.969338119 +0200
++++ scikit-learn-0.14.1.joblib/sklearn/linear_model/omp.py	2013-09-06 19:09:43.901852334 +0200
+@@ -15,7 +15,7 @@
+ from ..base import RegressorMixin
+ from ..utils import array2d, as_float_array
+ from ..cross_validation import check_cv
+-from ..externals.joblib import Parallel, delayed
++from joblib import Parallel, delayed
+ from ..utils.arrayfuncs import solve_triangular
+ 
+ premature = """ Orthogonal matching pursuit ended prematurely due to linear
+diff -ur scikit-learn-0.14.1/sklearn/linear_model/randomized_l1.py scikit-learn-0.14.1.joblib/sklearn/linear_model/randomized_l1.py
+--- scikit-learn-0.14.1/sklearn/linear_model/randomized_l1.py	2013-09-06 19:12:44.963338069 +0200
++++ scikit-learn-0.14.1.joblib/sklearn/linear_model/randomized_l1.py	2013-09-06 19:09:43.818851655 +0200
+@@ -17,7 +17,7 @@
+ from .base import center_data
+ from ..base import BaseEstimator, TransformerMixin
+ from ..externals import six
+-from ..externals.joblib import Memory, Parallel, delayed
++from joblib import Memory, Parallel, delayed
+ from ..utils import (as_float_array, check_random_state, safe_asarray,
+                      check_arrays, safe_mask)
+ from .least_angle import lars_path, LassoLarsIC
+diff -ur scikit-learn-0.14.1/sklearn/linear_model/stochastic_gradient.py scikit-learn-0.14.1.joblib/sklearn/linear_model/stochastic_gradient.py
+--- scikit-learn-0.14.1/sklearn/linear_model/stochastic_gradient.py	2013-09-06 19:12:44.974338160 +0200
++++ scikit-learn-0.14.1.joblib/sklearn/linear_model/stochastic_gradient.py	2013-09-06 19:09:43.990853063 +0200
+@@ -10,7 +10,7 @@
+ from abc import ABCMeta, abstractmethod
+ import warnings
+ 
+-from ..externals.joblib import Parallel, delayed
++from joblib import Parallel, delayed
+ 
+ from .base import LinearClassifierMixin, SparseCoefMixin
+ from ..base import BaseEstimator, RegressorMixin
+diff -ur scikit-learn-0.14.1/sklearn/manifold/mds.py scikit-learn-0.14.1.joblib/sklearn/manifold/mds.py
+--- scikit-learn-0.14.1/sklearn/manifold/mds.py	2013-09-06 19:12:44.987338267 +0200
++++ scikit-learn-0.14.1.joblib/sklearn/manifold/mds.py	2013-09-06 19:09:44.293855542 +0200
+@@ -12,8 +12,8 @@
+ from ..base import BaseEstimator
+ from ..metrics import euclidean_distances
+ from ..utils import check_random_state, check_arrays
+-from ..externals.joblib import Parallel
+-from ..externals.joblib import delayed
++from joblib import Parallel
++from joblib import delayed
+ from ..isotonic import IsotonicRegression
+ 
+ 
+diff -ur scikit-learn-0.14.1/sklearn/metrics/pairwise.py scikit-learn-0.14.1.joblib/sklearn/metrics/pairwise.py
+--- scikit-learn-0.14.1/sklearn/metrics/pairwise.py	2013-09-06 19:12:44.865337264 +0200
++++ scikit-learn-0.14.1.joblib/sklearn/metrics/pairwise.py	2013-09-06 19:09:41.312831146 +0200
+@@ -45,9 +45,9 @@
+ from ..utils import gen_even_slices
+ from ..utils.extmath import safe_sparse_dot
+ from ..preprocessing import normalize
+-from ..externals.joblib import Parallel
+-from ..externals.joblib import delayed
+-from ..externals.joblib.parallel import cpu_count
++from joblib import Parallel
++from joblib import delayed
++from joblib.parallel import cpu_count
+ 
+ from .pairwise_fast import _chi2_kernel_fast
+ 
+diff -ur scikit-learn-0.14.1/sklearn/multiclass.py scikit-learn-0.14.1.joblib/sklearn/multiclass.py
+--- scikit-learn-0.14.1/sklearn/multiclass.py	2013-09-06 19:12:44.911337642 +0200
++++ scikit-learn-0.14.1.joblib/sklearn/multiclass.py	2013-09-06 19:09:42.310839314 +0200
+@@ -40,8 +40,8 @@
+ from .preprocessing import LabelBinarizer
+ from .metrics.pairwise import euclidean_distances
+ from .utils import check_random_state
+-from .externals.joblib import Parallel
+-from .externals.joblib import delayed
++from joblib import Parallel
++from joblib import delayed
+ 
+ 
+ def _fit_binary(estimator, X, y, classes=None):
+diff -ur scikit-learn-0.14.1/sklearn/pipeline.py scikit-learn-0.14.1.joblib/sklearn/pipeline.py
+--- scikit-learn-0.14.1/sklearn/pipeline.py	2013-09-06 19:12:44.918337699 +0200
++++ scikit-learn-0.14.1.joblib/sklearn/pipeline.py	2013-09-06 19:09:42.522841049 +0200
+@@ -12,7 +12,7 @@
+ from scipy import sparse
+ 
+ from .base import BaseEstimator, TransformerMixin
+-from .externals.joblib import Parallel, delayed
++from joblib import Parallel, delayed
+ from .externals import six
+ from .utils import tosequence
+ from .externals.six import iteritems
diff --git a/sources b/sources
index 6f955b7..a582797 100644
--- a/sources
+++ b/sources
@@ -1 +1 @@
-acba398e1d46274b8470f40d0926e6a4  scikit-learn-0.13.1.tar.gz
+790ad23547bb7f428060636628e13491  scikit-learn-0.14.1.tar.gz
diff --git a/unbundle-joblib.sh b/unbundle-joblib.sh
new file mode 100644
index 0000000..c0e83f5
--- /dev/null
+++ b/unbundle-joblib.sh
@@ -0,0 +1,14 @@
+#!/bin/sh
+
+# Changes all these joblib imports to imports of the system package
+
+for i in $(find -name "*.py"); do
+ sed -i -e "s/from .externals import joblib/import joblib/" $i
+ sed -i -e "s/from ..externals import joblib/import joblib/" $i
+ sed -i -e "s/from ..externals.joblib import/from joblib import/" $i
+ sed -i -e "s/from .externals.joblib import/from joblib import/" $i
+ sed -i -e "s/from ..externals.joblib.parallel import/from joblib.parallel import/" $i
+ sed -i -e "s/from sklearn.externals import joblib/import joblib/" $i
+ sed -i -e "s/from sklearn.externals.joblib import/from joblib import/" $i
+ sed -i -e "s/import sklearn.externals.joblib.parallel/import joblib.parallel/" $i
+done


More information about the scm-commits mailing list