diff --git a/python-scikit-learn.spec b/python-scikit-learn.spec index 9462cca..0c2f4c5 100644 --- a/python-scikit-learn.spec +++ b/python-scikit-learn.spec @@ -2,8 +2,8 @@ %global with_python3 1 Name: python-scikit-learn -Version: 0.14.1 -Release: 8%{?dist} +Version: 0.15.0 +Release: 0.1.b1%{?dist} Summary: Machine learning in Python License: BSD # No license file @@ -11,15 +11,17 @@ License: BSD # webpage says: BSD (3 clause) URL: http://scikit-learn.org/ -Source0: https://pypi.python.org/packages/source/s/scikit-learn/%{upname}-%{version}.tar.gz +#Source0: https://pypi.python.org/packages/source/s/scikit-learn/%{upname}-%{version}.tar.gz +Source0: https://pypi.python.org/packages/source/s/scikit-learn/scikit-learn-0.15.0b1.tar.gz +Source1: system-six.py +Source2: system-joblib.py Patch0: sklearn-unbundle-joblib.patch -Patch1: sklearn-unbundle-six.patch Patch2: sklearn-unbundle-cblas.patch Patch3: sklearn-fix-test.patch BuildRequires: python2-devel BuildRequires: numpy scipy python-nose python-matplotlib -BuildRequires: python-joblib +BuildRequires: python-joblib >= 0.8.0 BuildRequires: python-six >= 1.4.1 BuildRequires: atlas-devel blas-devel BuildRequires: Cython python-pillow @@ -40,7 +42,7 @@ efficient, accessible to everybody, and reusable in various contexts. Summary: Machine learning in Python BuildRequires: python3-devel python3-nose BuildRequires: python3-numpy python3-scipy python3-matplotlib -BuildRequires: python3-joblib +BuildRequires: python3-joblib >= 0.8.0 BuildRequires: python3-six >= 1.4.1 BuildRequires: atlas-devel blas-devel BuildRequires: python3-Cython python3-pillow @@ -55,31 +57,39 @@ efficient, accessible to everybody, and reusable in various contexts. %endif # with_python3 %prep -%setup -n %{upname}-%{version} -q +#%setup -n %{upname}-%{version} -q +%setup -n %{upname}-0.15.0b1 -q + %patch0 -p1 -%patch1 -p1 -rm -rf sklearn/externals/joblib -rm -rf sklearn/externals/six -rm -rf sklearn/externals + +mkdir sklearn/externals/bundled +touch sklearn/externals/bundled/__init__.py +mv sklearn/externals/six.py sklearn/externals/bundled +mv sklearn/externals/joblib sklearn/externals/bundled +mv sklearn/externals/test_externals_setup.py sklearn/externals/bundled +cp %{SOURCE1} sklearn/externals/six.py +cp %{SOURCE2} sklearn/externals/joblib.py + + %patch2 -p1 rm -rf sklearn/src/cblas -%patch3 -p1 -rm -rf sklearn/datasets/_svmlight_format.c -rm -rf *egg-info -chmod -x examples/plot_rbm_logistic_classification.py +#%patch3 -p1 +#rm -rf sklearn/datasets/_svmlight_format.c +#rm -rf *egg-info +chmod -x examples/decomposition/plot_pca_vs_fa_model_selection.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/datasets +#sed -i -e "1d" setup.py +#popd -pushd sklearn/gaussian_process/ +#pushd sklearn/gaussian_process/ #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 +#sed -i -e "1d" regression_models.py __init__.py correlation_models.py +#sed -i -e "2d" gaussian_process.py +#popd find -name '*.py' | xargs sed -i '1s|^#!python|#!%{__python2}|' @@ -87,14 +97,14 @@ find -name '*.py' | xargs sed -i '1s|^#!python|#!%{__python2}|' rm -rf %{py3dir} cp -a . %{py3dir} find %{py3dir} -name '*.py' | xargs sed -i '1s|^#!python|#!%{__python3}|' -pushd %{py3dir} -cython3 sklearn/datasets/_svmlight_format.pyx -cython3 sklearn/cluster/_k_means.pyx -popd +#pushd %{py3dir} +#cython3 sklearn/datasets/_svmlight_format.pyx +#cython3 sklearn/cluster/_k_means.pyx +#popd %endif # with_python3 -cython sklearn/datasets/_svmlight_format.pyx -cython sklearn/cluster/_k_means.pyx +#cython sklearn/datasets/_svmlight_format.pyx +#cython sklearn/cluster/_k_means.pyx %build CFLAGS="%{optflags}" %{__python2} setup.py build @@ -119,12 +129,12 @@ find %{buildroot} -name "*.so" | xargs chmod 755 %check %if 0%{?with_python3} pushd %{buildroot}/%{python3_sitearch} -# nosetests-%{python3_version} sklearn + nosetests-%{python3_version} -x sklearn popd %endif # with_python3 pushd %{buildroot}/%{python_sitearch} -# nosetests-%{python2_version} sklearn + nosetests-%{python2_version} -x sklearn popd %files @@ -140,10 +150,13 @@ popd %endif # with_python3 %changelog +* Mon Jun 23 2014 Sergio Pascual - 0.15.0-0.1.b1 +- New upstream (0.15.0b1), beta release + * Mon Jun 02 2014 Bohuslav Kabrda - 0.14.1-8 - Rebuilt for https://fedoraproject.org/wiki/Changes/Python_3.4 -* Mon Jun 01 2014 Sergio Pascual - 0.14.1-7 +* Mon Jun 02 2014 Sergio Pascual - 0.14.1-7 - Rerun Cython3 on broken files - Disable tests for the moment diff --git a/sklearn-unbundle-cblas.patch b/sklearn-unbundle-cblas.patch index 5f95722..091dcf5 100644 --- a/sklearn-unbundle-cblas.patch +++ b/sklearn-unbundle-cblas.patch @@ -1,7 +1,7 @@ -diff -ur scikit-learn-0.14.1/sklearn/cluster/setup.py scikit-learn-0.14.1.cblas/sklearn/cluster/setup.py ---- scikit-learn-0.14.1/sklearn/cluster/setup.py 2013-09-09 18:16:35.817133793 +0200 -+++ scikit-learn-0.14.1.cblas/sklearn/cluster/setup.py 2013-09-09 18:16:11.869972956 +0200 -@@ -28,7 +28,7 @@ +diff -ur scikit-learn-0.15.0b1/sklearn/cluster/setup.py scikit-learn-0.15.0b1.cblas/sklearn/cluster/setup.py +--- scikit-learn-0.15.0b1/sklearn/cluster/setup.py 2014-06-06 18:29:49.477078831 +0200 ++++ scikit-learn-0.15.0b1.cblas/sklearn/cluster/setup.py 2014-06-06 18:31:40.898010511 +0200 +@@ -29,7 +29,7 @@ '_k_means', libraries=cblas_libs, sources=['_k_means.c'], @@ -10,9 +10,9 @@ diff -ur scikit-learn-0.14.1/sklearn/cluster/setup.py scikit-learn-0.14.1.cblas/ numpy.get_include(), blas_info.pop('include_dirs', [])], extra_compile_args=blas_info.pop('extra_compile_args', []), -diff -ur scikit-learn-0.14.1/sklearn/linear_model/setup.py scikit-learn-0.14.1.cblas/sklearn/linear_model/setup.py ---- scikit-learn-0.14.1/sklearn/linear_model/setup.py 2013-09-09 18:16:35.778133528 +0200 -+++ scikit-learn-0.14.1.cblas/sklearn/linear_model/setup.py 2013-09-09 18:11:45.084926994 +0200 +diff -ur scikit-learn-0.15.0b1/sklearn/linear_model/setup.py scikit-learn-0.15.0b1.cblas/sklearn/linear_model/setup.py +--- scikit-learn-0.15.0b1/sklearn/linear_model/setup.py 2014-06-06 18:29:49.430078438 +0200 ++++ scikit-learn-0.15.0b1.cblas/sklearn/linear_model/setup.py 2014-06-06 18:32:13.443283001 +0200 @@ -20,7 +20,7 @@ config.add_extension('cd_fast', sources=['cd_fast.c'], @@ -22,15 +22,15 @@ diff -ur scikit-learn-0.14.1/sklearn/linear_model/setup.py scikit-learn-0.14.1.c numpy.get_include(), blas_info.pop('include_dirs', [])], extra_compile_args=blas_info.pop('extra_compile_args', -diff -ur scikit-learn-0.14.1/sklearn/utils/setup.py scikit-learn-0.14.1.cblas/sklearn/utils/setup.py ---- scikit-learn-0.14.1/sklearn/utils/setup.py 2013-09-09 18:16:35.749133330 +0200 -+++ scikit-learn-0.14.1.cblas/sklearn/utils/setup.py 2013-09-09 18:11:45.075926918 +0200 -@@ -27,7 +27,7 @@ - sources=['arrayfuncs.c'], - depends=[join('src', 'cholesky_delete.h')], - libraries=cblas_libs, -- include_dirs=[join('..', 'src', 'cblas'), -+ include_dirs=[ - numpy.get_include(), - blas_info.pop('include_dirs', [])], - extra_compile_args=blas_info.pop('extra_compile_args', +diff -ur scikit-learn-0.15.0b1/sklearn/utils/setup.py scikit-learn-0.15.0b1.cblas/sklearn/utils/setup.py +--- scikit-learn-0.15.0b1/sklearn/utils/setup.py 2014-06-06 18:29:49.399078179 +0200 ++++ scikit-learn-0.15.0b1.cblas/sklearn/utils/setup.py 2014-06-06 18:32:33.203448442 +0200 +@@ -13,7 +13,7 @@ + + cblas_libs, blas_info = get_blas_info() + cblas_compile_args = blas_info.pop('extra_compile_args', []) +- cblas_includes = [join('..', 'src', 'cblas'), ++ cblas_includes = [ + numpy.get_include(), + blas_info.pop('include_dirs', [])] + diff --git a/sklearn-unbundle-joblib.patch b/sklearn-unbundle-joblib.patch index b77ad49..4f8575b 100644 --- a/sklearn-unbundle-joblib.patch +++ b/sklearn-unbundle-joblib.patch @@ -1,423 +1,14 @@ -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; from ..externals import 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 @@ +diff -ur a/sklearn/externals/setup.py b/sklearn/externals/setup.py +--- a/sklearn/externals/setup.py 2014-06-23 17:03:05.831777265 +0200 ++++ b/sklearn/externals/setup.py 2014-06-23 17:03:59.904217048 +0200 +@@ -4,7 +4,8 @@ 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') ++ config.add_subpackage('bundled') ++ config.add_subpackage('bundled/joblib') ++ config.add_subpackage('bundled/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/system-joblib.py b/system-joblib.py new file mode 100644 index 0000000..4c2fe45 --- /dev/null +++ b/system-joblib.py @@ -0,0 +1,44 @@ +# Licensed under a 3-clause BSD style license - see README.rst +""" +Handle loading joblib package from system or from the bundled copy + +""" +import sys + +_dest_root = 'sklearn.externals.joblib' +# Trying to load alternate packages +sys.modules[_dest_root] = None + +# We have removed everything we already imported +# Importing again +import sys + +_system_package = False +_dest_root = 'sklearn.externals.joblib' + +try: + import joblib + _system_package = True +except ImportError: + _system_package = False + +if _system_package: + # Check version + from distutils.version import StrictVersion + _valid_version = False + if StrictVersion(joblib.__version__) >= StrictVersion('0.8.0'): + _valid_version = True + + if _valid_version: + joblib.system_package = True + joblib.bundled_package = False + sys.modules[_dest_root] = joblib + else: + _system_package = False + +if not _system_package: + import sklearn.externals.bundled.joblib as joblib + joblib.system_package = False + joblib.bundled_package = True + sys.modules[_dest_root] = joblib + diff --git a/system-six.py b/system-six.py new file mode 100644 index 0000000..3a39d22 --- /dev/null +++ b/system-six.py @@ -0,0 +1,55 @@ +# Licensed under a 3-clause BSD style license - see README.rst +""" +Handle loading six package from system or from the bundled copy + +""" +import sys + +# Trying to load alternate six packages +sys.modules['sklearn.externals.six'] = None + +# We have removed everything we already imported +# Importing again + +import sys + +def _load_six_moves(base, dest): + _cur_sys_modules = list(sys.modules.items()) + for i,mod in _cur_sys_modules: + if i.startswith(base): + pre, full, trail = i.partition(base) + if not pre: + modname = dest + trail + sys.modules[modname] = mod + +_system_package = False + +_dest_moves = 'sklearn.externals.six.moves' +_dest_root = 'sklearn.externals.six' + +try: + import six + _system_package = True +except ImportError: + _system_package = False + +if _system_package: + # Check six version + _valid_version = True + if _valid_version: + # handle 'moves' + _base_moves = 'six.moves' + _load_six_moves(_base_moves, _dest_moves) + six.system_package = True + six.bundled_package = False + sys.modules[_dest_root] = six + +if not _system_package: + import astropy.extern.bundled.six as six + # handle 'moves' + _base_moves = 'sklearn.externals.six.bundled.six.moves' + _load_six_moves(_base_moves, _dest_moves) + six.system_package = False + six.bundled_package = True + sys.modules[_dest_root] = six + diff --git a/unbundle-six.sh b/unbundle-six.sh index 75f4bd6..c6cd933 100644 --- a/unbundle-six.sh +++ b/unbundle-six.sh @@ -2,7 +2,7 @@ # Changes all these six imports to imports of the system package -cd scikit-learn-0.14.1.six +cd scikit-learn-0.15.0b1.six for i in $(find -name "*.py"); do sed -i -e "s/from .externals import six/import six/" $i