|
@@
-78,6
+78,13
b' def _importfrom(pkgname, modname):'
|
|
78
|
(r'cext', r'parsers'): 1,
|
|
78
|
(r'cext', r'parsers'): 1,
|
|
79
|
}
|
|
79
|
}
|
|
80
|
|
|
80
|
|
|
|
|
|
81
|
# map import request to other package or module
|
|
|
|
|
82
|
_modredirects = {
|
|
|
|
|
83
|
(r'cffi', r'base85'): (r'pure', r'base85'),
|
|
|
|
|
84
|
(r'cffi', r'diffhelpers'): (r'pure', r'diffhelpers'),
|
|
|
|
|
85
|
(r'cffi', r'parsers'): (r'pure', r'parsers'),
|
|
|
|
|
86
|
}
|
|
|
|
|
87
|
|
|
81
|
def _checkmod(pkgname, modname, mod):
|
|
88
|
def _checkmod(pkgname, modname, mod):
|
|
82
|
expected = _cextversions.get((pkgname, modname))
|
|
89
|
expected = _cextversions.get((pkgname, modname))
|
|
83
|
actual = getattr(mod, r'version', None)
|
|
90
|
actual = getattr(mod, r'version', None)
|
|
@@
-94,11
+101,14
b' def importmod(modname):'
|
|
94
|
raise ImportError(r'invalid HGMODULEPOLICY %r' % policy)
|
|
101
|
raise ImportError(r'invalid HGMODULEPOLICY %r' % policy)
|
|
95
|
assert verpkg or purepkg
|
|
102
|
assert verpkg or purepkg
|
|
96
|
if verpkg:
|
|
103
|
if verpkg:
|
|
|
|
|
104
|
pn, mn = _modredirects.get((verpkg, modname), (verpkg, modname))
|
|
97
|
try:
|
|
105
|
try:
|
|
98
|
mod = _importfrom(verpkg, modname)
|
|
106
|
mod = _importfrom(pn, mn)
|
|
99
|
_checkmod(verpkg, modname, mod)
|
|
107
|
if pn == verpkg:
|
|
|
|
|
108
|
_checkmod(pn, mn, mod)
|
|
100
|
return mod
|
|
109
|
return mod
|
|
101
|
except ImportError:
|
|
110
|
except ImportError:
|
|
102
|
if not purepkg:
|
|
111
|
if not purepkg:
|
|
103
|
raise
|
|
112
|
raise
|
|
104
|
return _importfrom(purepkg, modname)
|
|
113
|
pn, mn = _modredirects.get((purepkg, modname), (purepkg, modname))
|
|
|
|
|
114
|
return _importfrom(pn, mn)
|