summaryrefslogtreecommitdiff
path: root/dev-python/astropy/files/astropy-ply.py
diff options
context:
space:
mode:
authorJustin Lecher <jlec@gentoo.org>2015-09-14 13:39:58 +0200
committerJustin Lecher <jlec@gentoo.org>2015-09-14 13:55:54 +0200
commit9bfc3cd91fb88333c88bd9b6e2976a64f1bc99e2 (patch)
tree336bd4015e8b1f35d73572836738d6ae80d3fdde /dev-python/astropy/files/astropy-ply.py
parent7bfadf57996a90c629e9238a0ae292f5dfb77746 (diff)
downloadgentoo-9bfc3cd91fb88333c88bd9b6e2976a64f1bc99e2.tar.gz
gentoo-9bfc3cd91fb88333c88bd9b6e2976a64f1bc99e2.tar.bz2
gentoo-9bfc3cd91fb88333c88bd9b6e2976a64f1bc99e2.zip
dev-python/astropy: Version Bump
import patches from fedora for unbundling Closes gentoo/gentoo#10 Gentoo-Bug: https://bugs.gentoo.org/show_bug.cgi?id=556884 Package-Manager: portage-2.2.20.1 Signed-off-by: Justin Lecher <jlec@gentoo.org>
Diffstat (limited to 'dev-python/astropy/files/astropy-ply.py')
-rw-r--r--dev-python/astropy/files/astropy-ply.py58
1 files changed, 58 insertions, 0 deletions
diff --git a/dev-python/astropy/files/astropy-ply.py b/dev-python/astropy/files/astropy-ply.py
new file mode 100644
index 000000000000..19eb104c4ca0
--- /dev/null
+++ b/dev-python/astropy/files/astropy-ply.py
@@ -0,0 +1,58 @@
+# Licensed under a 3-clause BSD style license - see LICENSE.rst
+
+"""
+Handle loading ply package from system or from the bundled copy
+"""
+
+import imp
+from distutils.version import StrictVersion
+
+
+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
+
+_PLY_MIN_VERSION = StrictVersion('3.4')
+
+# Update this to prevent Astropy from using its bundled copy of ply
+# (but only if some other version of at least _PLY_MIN_VERSION can
+# be provided)
+_PLY_SEARCH_PATH = ['ply']
+
+
+for mod_name in _PLY_SEARCH_PATH:
+ try:
+ mod_info = _find_module(mod_name)
+ #mod_lex_info = _find_module(mod_name + '.lex')
+ except ImportError:
+ continue
+
+ mod = imp.load_module(__name__, *mod_info)
+ #mod_lex = imp.load_module(__name__ + '.lex', *mod_lex_info)
+
+ try:
+ # if StrictVersion(mod_lex.__version__) >= _PLY_MIN_VERSION:
+ # break
+ break
+ except (AttributeError, ValueError):
+ # Attribute error if the ply 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(
+ "Astropy requires the 'ply' module of minimum version {0}; "
+ "normally this is bundled with the astropy package so if you get "
+ "this warning consult the packager of your Astropy "
+ "distribution.".format(_PLY_MIN_VERSION))