1
1
#!/usr/bin/env python
2
2
"""Compiled modules may be out of date or missing"""
6
6
__author__ = "Peter Maxwell"
7
7
__copyright__ = "Copyright 2007-2009, The Cogent Project"
8
8
__credits__ = ["Peter Maxwell"]
11
11
__maintainer__ = "Peter Maxwell"
12
12
__email__ = "pm67nz@gmail.com"
13
13
__status__ = "Production"
15
15
class ExpectedImportError(ImportError):
19
print >>sys.stderr, msg
20
raise ExpectedImportError
18
def importVersionedModule(name, globals, min_version, log, alt_desc):
22
def importVersionedModule(name, globals, min_version, alt_desc):
19
23
if os.environ.has_key('COGENT_PURE_PYTHON'):
20
log.info('Not using compiled module "%s". Will use %s.' %
24
fail('Not using compiled module "%s". Will use %s.' %
22
raise ExpectedImportError
24
27
m = __import__(name, globals)
25
28
except ImportError:
26
log.warning('Compiled module "%s" not found. Will use %s.' %
29
fail('Compiled module "%s" not found. Will use %s.' %
28
raise ExpectedImportError
29
31
version = getattr(m, 'version_info', (0, 0))
30
32
desc = '.'.join(str(n) for n in version)
31
33
min_desc = '.'.join(str(n) for n in min_version)
32
34
max_desc = str(min_version[0])+'.x'
33
35
if version < min_version:
34
log.warning('Compiled module "%s" is too old as %s < %s. '
36
fail('Compiled module "%s" is too old as %s < %s. '
35
37
'Will use %s.' % (name, desc, min_desc, alt_desc))
36
raise ExpectedImportError
37
38
if version[0] > min_version[0]:
38
log.warning('Compiled module "%s" is too new as %s > %s. '
39
fail('Compiled module "%s" is too new as %s > %s. '
39
40
'Will use %s.' % (name, desc, max_desc, alt_desc))
40
raise ExpectedImportError