137 # level >= 0: absolute only (Python 2 w/ absolute_import and Python 3). |
137 # level >= 0: absolute only (Python 2 w/ absolute_import and Python 3). |
138 # The modern Mercurial convention is to use absolute_import everywhere, |
138 # The modern Mercurial convention is to use absolute_import everywhere, |
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. |
146 mod = _hgextimport(_origimport, name, globals, locals) |
163 mod = _hgextimport(_origimport, name, globals, locals) |
147 # recurse down the module chain |
164 # recurse down the module chain |