changeset 9315:fb66a7d3f28f

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...)
author Dan Villiom Podlaski Christiansen <danchr@gmail.com>
date Wed, 05 Aug 2009 17:19:37 +0200
parents 3f93f6838639
children 23cf7b52785a 74e717a21779 872d49dd577a
files mercurial/demandimport.py
diffstat 1 files changed, 4 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- 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