0f3ec8ca89
- Unbundling patches modified - No checks for the moment
59 lines
1.6 KiB
Python
59 lines
1.6 KiB
Python
# 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))
|