mercurial/demandload.py
author Thomas Arendsen Hein <thomas@intevation.de>
Thu, 12 Jan 2006 13:58:36 +0100
changeset 1619 1ba0d7041ac4
parent 262 3db700146536
child 1826 f3abe0bdccdd
permissions -rw-r--r--
Distinguish removed and deleted files. Tests are not fixed yet. hg status will now show "R filename" for "hg rm"ed files and "! filename" for files which were deleted manually. Manually deleted files are considered unmodified.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
262
3db700146536 implement demand loading hack
mpm@selenic.com
parents:
diff changeset
     1
def demandload(scope, modules):
3db700146536 implement demand loading hack
mpm@selenic.com
parents:
diff changeset
     2
    class d:
3db700146536 implement demand loading hack
mpm@selenic.com
parents:
diff changeset
     3
        def __getattr__(self, name):
3db700146536 implement demand loading hack
mpm@selenic.com
parents:
diff changeset
     4
            mod = self.__dict__["mod"]
3db700146536 implement demand loading hack
mpm@selenic.com
parents:
diff changeset
     5
            scope = self.__dict__["scope"]
3db700146536 implement demand loading hack
mpm@selenic.com
parents:
diff changeset
     6
            scope[mod] = __import__(mod, scope, scope, [])
3db700146536 implement demand loading hack
mpm@selenic.com
parents:
diff changeset
     7
            return getattr(scope[mod], name)
3db700146536 implement demand loading hack
mpm@selenic.com
parents:
diff changeset
     8
3db700146536 implement demand loading hack
mpm@selenic.com
parents:
diff changeset
     9
    for m in modules.split():
3db700146536 implement demand loading hack
mpm@selenic.com
parents:
diff changeset
    10
        dl = d()
3db700146536 implement demand loading hack
mpm@selenic.com
parents:
diff changeset
    11
        dl.mod = m
3db700146536 implement demand loading hack
mpm@selenic.com
parents:
diff changeset
    12
        dl.scope = scope
3db700146536 implement demand loading hack
mpm@selenic.com
parents:
diff changeset
    13
        scope[m] = dl
3db700146536 implement demand loading hack
mpm@selenic.com
parents:
diff changeset
    14
3db700146536 implement demand loading hack
mpm@selenic.com
parents:
diff changeset
    15