##// END OF EJS Templates
demandimport: pass proper level to __import__ in Python 3...
Gregory Szorc -
r21290:74be3fb1 default
parent child Browse files
Show More
@@ -24,13 +24,17 b' These imports will not be delayed:'
24 24 b = __import__(a)
25 25 '''
26 26
27 import __builtin__, os
27 import __builtin__, os, sys
28 28 _origimport = __import__
29 29
30 30 nothing = object()
31 31
32 32 try:
33 _origimport(__builtin__.__name__, {}, {}, None, -1)
33 # Python 3 doesn't have relative imports nor level -1.
34 level = -1
35 if sys.version_info[0] >= 3:
36 level = 0
37 _origimport(__builtin__.__name__, {}, {}, None, level)
34 38 except TypeError: # no level argument
35 39 def _import(name, globals, locals, fromlist, level):
36 40 "call _origimport with no level argument"
@@ -55,7 +59,7 b' def _hgextimport(importfunc, name, globa'
55 59
56 60 class _demandmod(object):
57 61 """module demand-loader and proxy"""
58 def __init__(self, name, globals, locals, level=-1):
62 def __init__(self, name, globals, locals, level=level):
59 63 if '.' in name:
60 64 head, rest = name.split('.', 1)
61 65 after = [rest]
@@ -105,7 +109,7 b' class _demandmod(object):'
105 109 self._load()
106 110 setattr(self._module, attr, val)
107 111
108 def _demandimport(name, globals=None, locals=None, fromlist=None, level=-1):
112 def _demandimport(name, globals=None, locals=None, fromlist=None, level=level):
109 113 if not locals or name in ignore or fromlist == ('*',):
110 114 # these cases we can't really delay
111 115 return _hgextimport(_import, name, globals, locals, fromlist, level)
General Comments 0
You need to be logged in to leave comments. Login now