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.
--- 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.