dispatch: also pass level argument to __import__ for ignored modules
I wanted to check if mercurial.demandimport could speed up the loading of
PyObjC, and ran into this: the level argument for __import__, available in
Python 2.5 and later, is silently dropped when doing an 'import *'. I have no
idea what these arguments mean, but this minor change made it work.
(Oh, and because of that 'from ... import *', PyObjC still took about 2s...)
--- a/mercurial/demandimport.py Wed Aug 05 14:58:30 2009 +0200
+++ b/mercurial/demandimport.py Wed Aug 05 17:19:37 2009 +0200
@@ -81,7 +81,10 @@
def _demandimport(name, globals=None, locals=None, fromlist=None, level=None):
if not locals or name in ignore or fromlist == ('*',):
# these cases we can't really delay
- return _origimport(name, globals, locals, fromlist)
+ if level is None:
+ return _origimport(name, globals, locals, fromlist)
+ else:
+ return _origimport(name, globals, locals, fromlist, level)
elif not fromlist:
# import a [as b]
if '.' in name: # a.b