mercurial/demandimport.py
changeset 25327 2e7804110b14
parent 23643 2205d00b6d2b
child 25673 fa1f04529775
equal deleted inserted replaced
25326:238e5cd94bbc 25327:2e7804110b14
    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 __builtin__, os, sys
       
    28 from contextlib import contextmanager
       
    29 
    28 _origimport = __import__
    30 _origimport = __import__
    29 
    31 
    30 nothing = object()
    32 nothing = object()
    31 
    33 
    32 try:
    34 try:
   177         __builtin__.__import__ = _demandimport
   179         __builtin__.__import__ = _demandimport
   178 
   180 
   179 def disable():
   181 def disable():
   180     "disable global demand-loading of modules"
   182     "disable global demand-loading of modules"
   181     __builtin__.__import__ = _origimport
   183     __builtin__.__import__ = _origimport
       
   184 
       
   185 @contextmanager
       
   186 def deactivated():
       
   187     "context manager for disabling demandimport in 'with' blocks"
       
   188     demandenabled = isenabled()
       
   189     if demandenabled:
       
   190         disable()
       
   191 
       
   192     try:
       
   193         yield
       
   194     finally:
       
   195         if demandenabled:
       
   196             enable()