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() |