blob: 19eb104c4ca0aa1daf87ca532918c967d74fcd22 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
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))
|