Mercurial > hg
comparison mercurial/demandimport.py @ 28175:c25e3fd38ff1
demandimport: enforce ignore list while processing modules in fromlist
If a module is loaded as "from . import x" form, there has been no way to
disable demand loading for that module because name is ''. This patch makes
it possible to prevent demand loading by '<package-name>.x'.
We don't use _hgextimport(_origimport) here since attr is known to be a
sub-module name. Adding hgext_ to attr wouldn't make sense.
author | Yuya Nishihara <yuya@tcha.org> |
---|---|
date | Sat, 06 Feb 2016 19:09:10 +0900 |
parents | ffb1ab1e4bba |
children | 9ff7261cc0f5 |
comparison
equal
deleted
inserted
replaced
28174:f16b84b1e40e | 28175:c25e3fd38ff1 |
---|---|
172 If the symbol doesn't exist in the parent module, it must be a | 172 If the symbol doesn't exist in the parent module, it must be a |
173 module. We set missing modules up as _demandmod instances. | 173 module. We set missing modules up as _demandmod instances. |
174 """ | 174 """ |
175 symbol = getattr(mod, attr, nothing) | 175 symbol = getattr(mod, attr, nothing) |
176 if symbol is nothing: | 176 if symbol is nothing: |
177 symbol = _demandmod(attr, mod.__dict__, locals, level=1) | 177 mn = '%s.%s' % (mod.__name__, attr) |
178 if mn in ignore: | |
179 importfunc = _origimport | |
180 else: | |
181 importfunc = _demandmod | |
182 symbol = importfunc(attr, mod.__dict__, locals, level=1) | |
178 setattr(mod, attr, symbol) | 183 setattr(mod, attr, symbol) |
179 | 184 |
180 # Record the importing module references this symbol so we can | 185 # Record the importing module references this symbol so we can |
181 # replace the symbol with the actual module instance at load | 186 # replace the symbol with the actual module instance at load |
182 # time. | 187 # time. |