mercurial/demandimport.py
changeset 25673 fa1f04529775
parent 25327 2e7804110b14
child 25674 5d0847cd1587
equal deleted inserted replaced
25672:050dc6eabc92 25673:fa1f04529775
    22 
    22 
    23   from a import *
    23   from a import *
    24   b = __import__(a)
    24   b = __import__(a)
    25 '''
    25 '''
    26 
    26 
    27 import __builtin__, os, sys
    27 import os, sys
    28 from contextlib import contextmanager
    28 from contextlib import contextmanager
       
    29 import __builtin__ as builtins
    29 
    30 
    30 _origimport = __import__
    31 _origimport = __import__
    31 
    32 
    32 nothing = object()
    33 nothing = object()
    33 
    34 
    34 try:
    35 try:
    35     # Python 3 doesn't have relative imports nor level -1.
    36     # Python 3 doesn't have relative imports nor level -1.
    36     level = -1
    37     level = -1
    37     if sys.version_info[0] >= 3:
    38     if sys.version_info[0] >= 3:
    38         level = 0
    39         level = 0
    39     _origimport(__builtin__.__name__, {}, {}, None, level)
    40     _origimport(builtins.__name__, {}, {}, None, level)
    40 except TypeError: # no level argument
    41 except TypeError: # no level argument
    41     def _import(name, globals, locals, fromlist, level):
    42     def _import(name, globals, locals, fromlist, level):
    42         "call _origimport with no level argument"
    43         "call _origimport with no level argument"
    43         return _origimport(name, globals, locals, fromlist)
    44         return _origimport(name, globals, locals, fromlist)
    44 else:
    45 else:
   169     # setuptools 8 expects this module to explode early when not on windows
   170     # setuptools 8 expects this module to explode early when not on windows
   170     'distutils.msvc9compiler'
   171     'distutils.msvc9compiler'
   171     ]
   172     ]
   172 
   173 
   173 def isenabled():
   174 def isenabled():
   174     return __builtin__.__import__ == _demandimport
   175     return builtins.__import__ == _demandimport
   175 
   176 
   176 def enable():
   177 def enable():
   177     "enable global demand-loading of modules"
   178     "enable global demand-loading of modules"
   178     if os.environ.get('HGDEMANDIMPORT') != 'disable':
   179     if os.environ.get('HGDEMANDIMPORT') != 'disable':
   179         __builtin__.__import__ = _demandimport
   180         builtins.__import__ = _demandimport
   180 
   181 
   181 def disable():
   182 def disable():
   182     "disable global demand-loading of modules"
   183     "disable global demand-loading of modules"
   183     __builtin__.__import__ = _origimport
   184     builtins.__import__ = _origimport
   184 
   185 
   185 @contextmanager
   186 @contextmanager
   186 def deactivated():
   187 def deactivated():
   187     "context manager for disabling demandimport in 'with' blocks"
   188     "context manager for disabling demandimport in 'with' blocks"
   188     demandenabled = isenabled()
   189     demandenabled = isenabled()