##// END OF EJS Templates
demandimport: support lazy loading for absolute_import...
Gregory Szorc -
r25937:4f1144c3 default
parent child Browse files
Show More
@@ -139,7 +139,24 b' def _demandimport(name, globals=None, lo'
139 # so modern Mercurial code will have level >= 0.
139 # so modern Mercurial code will have level >= 0.
140
140
141 if level >= 0:
141 if level >= 0:
142 return _origimport(name, globals, locals, fromlist, level)
142 # Mercurial's enforced import style does not use
143 # "from a import b,c,d" or "from .a import b,c,d" syntax. In
144 # addition, this appears to be giving errors with some modules
145 # for unknown reasons. Since we shouldn't be using this syntax
146 # much, work around the problems.
147 if name:
148 return _hgextimport(_origimport, name, globals, locals,
149 fromlist, level)
150
151 mod = _hgextimport(_origimport, name, globals, locals, level=level)
152 for x in fromlist:
153 # Missing symbols mean they weren't defined in the module
154 # itself which means they are sub-modules.
155 if getattr(mod, x, nothing) is nothing:
156 setattr(mod, x,
157 _demandmod(x, mod.__dict__, locals, level=level))
158
159 return mod
143
160
144 # But, we still need to support lazy loading of standard library and 3rd
161 # But, we still need to support lazy loading of standard library and 3rd
145 # party modules. So handle level == -1.
162 # party modules. So handle level == -1.
General Comments 0
You need to be logged in to leave comments. Login now