mercurial/demandload.py
author mason@suse.com
Fri, 26 Aug 2005 14:05:52 -0700
changeset 1071 8f0ac653f85e
parent 262 3db700146536
child 1826 f3abe0bdccdd
permissions -rw-r--r--
Add support for extension modules This adds support for an [extensions] section to hgrc. This has the form of: [extensions] mod=[path] If a path is specified, the python module found at that path is load. Otherwise, __import__ is used to find the module. Each module must implement a dict called cmdtable where the command line options for that module live. Each module must also implement a reposetup function: cmdtable = {} def reposetup(ui, repo): pass Index: hg/mercurial/ui.py ===================================================================

def demandload(scope, modules):
    class d:
        def __getattr__(self, name):
            mod = self.__dict__["mod"]
            scope = self.__dict__["scope"]
            scope[mod] = __import__(mod, scope, scope, [])
            return getattr(scope[mod], name)

    for m in modules.split():
        dl = d()
        dl.mod = m
        dl.scope = scope
        scope[m] = dl