mercurial/demandload.py
author Vadim Gelfer <vadim.gelfer@gmail.com>
Wed, 15 Feb 2006 10:49:30 -0800
changeset 1730 0f1d2c75db5e
parent 262 3db700146536
child 1826 f3abe0bdccdd
permissions -rw-r--r--
add prechangegroup and pretxnchangegroup hooks. prechangegroup lets you stop push, pull or unbundle before it begins. pretxnchangegroup lets you inspect changegroup before transaction is committed, and roll back if you not like it.

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