# HG changeset patch # User Dan Villiom Podlaski Christiansen # Date 1249485577 -7200 # Node ID fb66a7d3f28f69e96369b8d69fc6d775837b40e4 # Parent 3f93f6838639e5938dd743b2f8301fa5122a8c69 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...) diff -r 3f93f6838639 -r fb66a7d3f28f mercurial/demandimport.py --- 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