[python-scikit-learn] New upstream (0.15.1), bugfix

Sergio Pascual sergiopr at fedoraproject.org
Sat Aug 2 17:52:11 UTC 2014


commit 429db3813ca3e829f0501427201598a8ed788eb3
Author: Sergio Pascual <sergiopr at fis.ucm.es>
Date:   Sat Aug 2 19:51:32 2014 +0200

    New upstream (0.15.1), bugfix

 .gitignore               |    1 +
 python-scikit-learn.spec |    5 ++-
 sources                  |    2 +-
 system-six.py            |  101 +++++++++++++++++++++++-----------------------
 4 files changed, 57 insertions(+), 52 deletions(-)
---
diff --git a/.gitignore b/.gitignore
index c58dfb9..9b8aa5f 100644
--- a/.gitignore
+++ b/.gitignore
@@ -3,3 +3,4 @@
 /scikit-learn-0.15.0b1.tar.gz
 /scikit-learn-0.15.0b2.tar.gz
 /scikit-learn-0.15.0.tar.gz
+/scikit-learn-0.15.1.tar.gz
diff --git a/python-scikit-learn.spec b/python-scikit-learn.spec
index 21eb420..b37e7fe 100644
--- a/python-scikit-learn.spec
+++ b/python-scikit-learn.spec
@@ -2,7 +2,7 @@
 %global with_python3 1
 
 Name: python-scikit-learn
-Version: 0.15.0
+Version: 0.15.1
 Release: 1%{?dist}
 Summary: Machine learning in Python
 License: BSD
@@ -124,6 +124,9 @@ popd
 %endif # with_python3
 
 %changelog
+* Sat Aug 02 2014 Sergio Pascual <sergiopr at fedoraproject.org> - 0.15.1-1
+- New upstream (0.15.1), bugfix
+
 * Tue Jul 15 2014 Sergio Pascual <sergiopr at fedoraproject.org> - 0.15.0-1
 - New upstream (0.15.0), final
 
diff --git a/sources b/sources
index 88a5c79..2c333b7 100644
--- a/sources
+++ b/sources
@@ -1 +1 @@
-7017e300ee98475d2c3648ba9b9046b5  scikit-learn-0.15.0.tar.gz
+236aa05b1a6d067c28f34d5e9942af17  scikit-learn-0.15.1.tar.gz
diff --git a/system-six.py b/system-six.py
index 3a39d22..4888620 100644
--- a/system-six.py
+++ b/system-six.py
@@ -1,55 +1,56 @@
 # 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
 
+import imp
+from distutils.version import StrictVersion
+
+
+_SIX_MIN_VERSION = StrictVersion('1.5.0')
+
+# Update this to prevent Astropy from using its bundled copy of six
+# (but only if some other version of at least _SIX_MIN_VERSION can
+# be provided)
+_SIX_SEARCH_PATH = ['six', 'sklearn.externals.bundled.six']
+
+
+def _find_module(name, path=None):
+    """
+    Alternative to `imp.find_module` that can also search in subpackages.
+    """
+
+    parts = name.split('.')
+
+    for part in parts:
+        if path is not None:
+            path = [path]
+
+        fh, path, descr = imp.find_module(part, path)
+
+    return fh, path, descr
+
+
+for mod_name in _SIX_SEARCH_PATH:
+    try:
+        mod_info = _find_module(mod_name)
+    except ImportError:
+        continue
+
+    mod = imp.load_module(__name__, *mod_info)
+
+    try:
+        if StrictVersion(mod.__version__) >= _SIX_MIN_VERSION:
+            break
+    except (AttributeError, ValueError):
+        # Attribute error if the six module isn't what it should be and doesn't
+        # have a .__version__; ValueError if the version string exists but is
+        # somehow bogus/unparseable
+        continue
+else:
+    raise ImportError(
+        "sklearn requires the 'six' module of minimum version {0}; "
+        "normally this is bundled with the astropy package so if you get "
+        "this warning consult the packager of your sklearn "
+        "distribution.".format(_SIX_MIN_VERSION))


More information about the ml mailing list