Show More
@@ -133,6 +133,8 b' class _demandmod(object):' | |||
|
133 | 133 | self._load() |
|
134 | 134 | setattr(self._module, attr, val) |
|
135 | 135 | |
|
136 | _pypy = '__pypy__' in sys.builtin_module_names | |
|
137 | ||
|
136 | 138 | def _demandimport(name, globals=None, locals=None, fromlist=None, level=level): |
|
137 | 139 | if not locals or name in ignore or fromlist == ('*',): |
|
138 | 140 | # these cases we can't really delay |
@@ -191,7 +193,21 b' def _demandimport(name, globals=None, lo' | |||
|
191 | 193 | return _hgextimport(_origimport, name, globals, locals, |
|
192 | 194 | fromlist, level) |
|
193 | 195 | |
|
194 | mod = _hgextimport(_origimport, name, globals, locals, level=level) | |
|
196 | if _pypy: | |
|
197 | # PyPy's __import__ throws an exception if invoked | |
|
198 | # with an empty name and no fromlist. Recreate the | |
|
199 | # desired behaviour by hand. | |
|
200 | mn = globalname | |
|
201 | mod = sys.modules[mn] | |
|
202 | if getattr(mod, '__path__', nothing) is nothing: | |
|
203 | mn = mn.rsplit('.', 1)[0] | |
|
204 | mod = sys.modules[mn] | |
|
205 | if level > 1: | |
|
206 | mn = mn.rsplit('.', level - 1)[0] | |
|
207 | mod = sys.modules[mn] | |
|
208 | else: | |
|
209 | mod = _hgextimport(_origimport, name, globals, locals, | |
|
210 | level=level) | |
|
195 | 211 | |
|
196 | 212 | for x in fromlist: |
|
197 | 213 | processfromitem(mod, x) |
@@ -245,10 +261,6 b' def isenabled():' | |||
|
245 | 261 | |
|
246 | 262 | def enable(): |
|
247 | 263 | "enable global demand-loading of modules" |
|
248 | # PyPy doesn't work with demand import. | |
|
249 | if '__pypy__' in sys.builtin_module_names: | |
|
250 | return | |
|
251 | ||
|
252 | 264 | if os.environ.get('HGDEMANDIMPORT') != 'disable': |
|
253 | 265 | builtins.__import__ = _demandimport |
|
254 | 266 |
General Comments 0
You need to be logged in to leave comments.
Login now