[PATCH 3 of 6 misc] demandimport: make it possible to disable by setting HGDEMANDIMPORT=disable
Mads Kiilerich
mads at kiilerich.com
Sun Apr 13 12:13:47 CDT 2014
# HG changeset patch
# User Mads Kiilerich <madski at unity3d.com>
# Date 1396913713 -7200
# Tue Apr 08 01:35:13 2014 +0200
# Node ID 9d250940811ae2c5556b00ac5e02ff1e06565d41
# Parent 0759c3fdc3e3847e95ef34729a7a133e1fd374f7
demandimport: make it possible to disable by setting HGDEMANDIMPORT=disable
Convenient for debugging weird problems that are caused by demandimport or
obfuscated by it.
This is an undocumented developer feature.
diff --git a/mercurial/demandimport.py b/mercurial/demandimport.py
--- a/mercurial/demandimport.py
+++ b/mercurial/demandimport.py
@@ -24,7 +24,7 @@ These imports will not be delayed:
b = __import__(a)
'''
-import __builtin__
+import __builtin__, os
_origimport = __import__
nothing = object()
@@ -167,7 +167,8 @@ def isenabled():
def enable():
"enable global demand-loading of modules"
- __builtin__.__import__ = _demandimport
+ if os.environ.get('HGDEMANDIMPORT') != 'disable':
+ __builtin__.__import__ = _demandimport
def disable():
"disable global demand-loading of modules"
diff --git a/tests/test-demandimport.py b/tests/test-demandimport.py
--- a/tests/test-demandimport.py
+++ b/tests/test-demandimport.py
@@ -37,3 +37,9 @@ print "fred =", f(fred)
print "re =", f(re)
print "re.stderr =", f(re.stderr)
print "re =", f(re)
+
+demandimport.disable()
+os.environ['HGDEMANDIMPORT'] = 'disable'
+demandimport.enable()
+from mercurial import node
+print "node =", f(node)
diff --git a/tests/test-demandimport.py.out b/tests/test-demandimport.py.out
--- a/tests/test-demandimport.py.out
+++ b/tests/test-demandimport.py.out
@@ -13,3 +13,4 @@ fred = <proxied module 're'>
re = <unloaded module 'sys'>
re.stderr = <open file '<whatever>', mode 'w' at 0x?>
re = <proxied module 'sys'>
+node = <module 'mercurial.node' from '?'>
More information about the Mercurial-devel
mailing list