comparison mercurial/demandload.py @ 2821:a8a7ce1a01a5

Teach demandload how to import as
author Matt Mackall <mpm@selenic.com>
date Mon, 07 Aug 2006 22:35:36 -0500
parents d01eac5968c6
children 61afc32c1a49
comparison
equal deleted inserted replaced
2820:0bf22c109cc3 2821:a8a7ce1a01a5
94 modules is a string listing module names, separated by white 94 modules is a string listing module names, separated by white
95 space. names are handled like this: 95 space. names are handled like this:
96 96
97 foo import foo 97 foo import foo
98 foo bar import foo, bar 98 foo bar import foo, bar
99 foo@bar import foo as bar
99 foo.bar import foo.bar 100 foo.bar import foo.bar
100 foo:bar from foo import bar 101 foo:bar from foo import bar
101 foo:bar,quux from foo import bar, quux 102 foo:bar,quux from foo import bar, quux
102 foo.bar:quux from foo.bar import quux''' 103 foo.bar:quux from foo.bar import quux'''
103 104
106 if col >= 0: 107 if col >= 0:
107 fromlist = mod[col+1:].split(',') 108 fromlist = mod[col+1:].split(',')
108 mod = mod[:col] 109 mod = mod[:col]
109 else: 110 else:
110 fromlist = [] 111 fromlist = []
112 as = None
113 if '@' in mod:
114 mod, as = mod.split("@")
111 importer = _importer(scope, mod, fromlist) 115 importer = _importer(scope, mod, fromlist)
112 if fromlist: 116 if fromlist:
113 for name in fromlist: 117 for name in fromlist:
114 scope[name] = _replacer_from(importer, name) 118 scope[name] = _replacer_from(importer, name)
115 else: 119 else:
124 later = object.__getattribute__(val, 'later') 128 later = object.__getattribute__(val, 'later')
125 later.append(mod[dot+1:]) 129 later.append(mod[dot+1:])
126 continue 130 continue
127 else: 131 else:
128 basemod = mod 132 basemod = mod
129 scope[basemod] = _replacer(importer, basemod) 133 if not as:
134 as = basemod
135 scope[as] = _replacer(importer, as)