demandload: implement __call__
authorJohn Arbash Meinel <john@arbash-meinel.com>
Thu, 18 May 2006 13:52:55 -0700
changeset 2310 d01eac5968c6
parent 2309 b2f37c7026ca
child 2312 4f04368423ec
demandload: implement __call__ demandload can now load functions and classes, and not just modules. (So if you access foo() rather than just foo.* it still works). demandload still doesn't work for constants.
mercurial/demandload.py
--- a/mercurial/demandload.py	Thu May 18 13:48:12 2006 -0700
+++ b/mercurial/demandload.py	Thu May 18 13:52:55 2006 -0700
@@ -81,6 +81,10 @@
 
         return getattr(importer.module(), target)
 
+    def __call__(self, *args, **kwargs):
+        target = object.__getattribute__(self, 'module')()
+        return target(*args, **kwargs)
+
 def demandload(scope, modules):
     '''import modules into scope when each is first used.