Mercurial > hg > mercurial-crew-with-dirclash
annotate mercurial/demandload.py @ 3755:05120e210c65
Use unsigned version format.
This way can use one additional bit, and when encountering invalid revlogs
with the first bit set don't produce python warnings or strange error messages.
author | Thomas Arendsen Hein <thomas@intevation.de> |
---|---|
date | Fri, 01 Dec 2006 23:27:53 +0100 |
parents | 61afc32c1a49 |
children |
rev | line source |
---|---|
1826
f3abe0bdccdd
rewrite demandload module to be more flexible.
Vadim Gelfer <vadim.gelger@gmail.com>
parents:
262
diff
changeset
|
1 '''Demand load modules when used, not when imported.''' |
f3abe0bdccdd
rewrite demandload module to be more flexible.
Vadim Gelfer <vadim.gelger@gmail.com>
parents:
262
diff
changeset
|
2 |
f3abe0bdccdd
rewrite demandload module to be more flexible.
Vadim Gelfer <vadim.gelger@gmail.com>
parents:
262
diff
changeset
|
3 __author__ = '''Copyright 2006 Vadim Gelfer <vadim.gelfer@gmail.com>. |
f3abe0bdccdd
rewrite demandload module to be more flexible.
Vadim Gelfer <vadim.gelger@gmail.com>
parents:
262
diff
changeset
|
4 This software may be used and distributed according to the terms |
f3abe0bdccdd
rewrite demandload module to be more flexible.
Vadim Gelfer <vadim.gelger@gmail.com>
parents:
262
diff
changeset
|
5 of the GNU General Public License, incorporated herein by reference.''' |
f3abe0bdccdd
rewrite demandload module to be more flexible.
Vadim Gelfer <vadim.gelger@gmail.com>
parents:
262
diff
changeset
|
6 |
f3abe0bdccdd
rewrite demandload module to be more flexible.
Vadim Gelfer <vadim.gelger@gmail.com>
parents:
262
diff
changeset
|
7 # this is based on matt's original demandload module. it is a |
f3abe0bdccdd
rewrite demandload module to be more flexible.
Vadim Gelfer <vadim.gelger@gmail.com>
parents:
262
diff
changeset
|
8 # complete rewrite. some time, we may need to support syntax of |
f3abe0bdccdd
rewrite demandload module to be more flexible.
Vadim Gelfer <vadim.gelger@gmail.com>
parents:
262
diff
changeset
|
9 # "import foo as bar". |
f3abe0bdccdd
rewrite demandload module to be more flexible.
Vadim Gelfer <vadim.gelger@gmail.com>
parents:
262
diff
changeset
|
10 |
f3abe0bdccdd
rewrite demandload module to be more flexible.
Vadim Gelfer <vadim.gelger@gmail.com>
parents:
262
diff
changeset
|
11 class _importer(object): |
f3abe0bdccdd
rewrite demandload module to be more flexible.
Vadim Gelfer <vadim.gelger@gmail.com>
parents:
262
diff
changeset
|
12 '''import a module. it is not imported until needed, and is |
f3abe0bdccdd
rewrite demandload module to be more flexible.
Vadim Gelfer <vadim.gelger@gmail.com>
parents:
262
diff
changeset
|
13 imported at most once per scope.''' |
f3abe0bdccdd
rewrite demandload module to be more flexible.
Vadim Gelfer <vadim.gelger@gmail.com>
parents:
262
diff
changeset
|
14 |
f3abe0bdccdd
rewrite demandload module to be more flexible.
Vadim Gelfer <vadim.gelger@gmail.com>
parents:
262
diff
changeset
|
15 def __init__(self, scope, modname, fromlist): |
f3abe0bdccdd
rewrite demandload module to be more flexible.
Vadim Gelfer <vadim.gelger@gmail.com>
parents:
262
diff
changeset
|
16 '''scope is context (globals() or locals()) in which import |
f3abe0bdccdd
rewrite demandload module to be more flexible.
Vadim Gelfer <vadim.gelger@gmail.com>
parents:
262
diff
changeset
|
17 should be made. modname is name of module to import. |
f3abe0bdccdd
rewrite demandload module to be more flexible.
Vadim Gelfer <vadim.gelger@gmail.com>
parents:
262
diff
changeset
|
18 fromlist is list of modules for "from foo import ..." |
f3abe0bdccdd
rewrite demandload module to be more flexible.
Vadim Gelfer <vadim.gelger@gmail.com>
parents:
262
diff
changeset
|
19 emulation.''' |
f3abe0bdccdd
rewrite demandload module to be more flexible.
Vadim Gelfer <vadim.gelger@gmail.com>
parents:
262
diff
changeset
|
20 |
f3abe0bdccdd
rewrite demandload module to be more flexible.
Vadim Gelfer <vadim.gelger@gmail.com>
parents:
262
diff
changeset
|
21 self.scope = scope |
f3abe0bdccdd
rewrite demandload module to be more flexible.
Vadim Gelfer <vadim.gelger@gmail.com>
parents:
262
diff
changeset
|
22 self.modname = modname |
f3abe0bdccdd
rewrite demandload module to be more flexible.
Vadim Gelfer <vadim.gelger@gmail.com>
parents:
262
diff
changeset
|
23 self.fromlist = fromlist |
f3abe0bdccdd
rewrite demandload module to be more flexible.
Vadim Gelfer <vadim.gelger@gmail.com>
parents:
262
diff
changeset
|
24 self.mod = None |
f3abe0bdccdd
rewrite demandload module to be more flexible.
Vadim Gelfer <vadim.gelger@gmail.com>
parents:
262
diff
changeset
|
25 |
f3abe0bdccdd
rewrite demandload module to be more flexible.
Vadim Gelfer <vadim.gelger@gmail.com>
parents:
262
diff
changeset
|
26 def module(self): |
f3abe0bdccdd
rewrite demandload module to be more flexible.
Vadim Gelfer <vadim.gelger@gmail.com>
parents:
262
diff
changeset
|
27 '''import the module if needed, and return.''' |
f3abe0bdccdd
rewrite demandload module to be more flexible.
Vadim Gelfer <vadim.gelger@gmail.com>
parents:
262
diff
changeset
|
28 if self.mod is None: |
f3abe0bdccdd
rewrite demandload module to be more flexible.
Vadim Gelfer <vadim.gelger@gmail.com>
parents:
262
diff
changeset
|
29 self.mod = __import__(self.modname, self.scope, self.scope, |
f3abe0bdccdd
rewrite demandload module to be more flexible.
Vadim Gelfer <vadim.gelger@gmail.com>
parents:
262
diff
changeset
|
30 self.fromlist) |
f3abe0bdccdd
rewrite demandload module to be more flexible.
Vadim Gelfer <vadim.gelger@gmail.com>
parents:
262
diff
changeset
|
31 del self.modname, self.fromlist |
f3abe0bdccdd
rewrite demandload module to be more flexible.
Vadim Gelfer <vadim.gelger@gmail.com>
parents:
262
diff
changeset
|
32 return self.mod |
f3abe0bdccdd
rewrite demandload module to be more flexible.
Vadim Gelfer <vadim.gelger@gmail.com>
parents:
262
diff
changeset
|
33 |
f3abe0bdccdd
rewrite demandload module to be more flexible.
Vadim Gelfer <vadim.gelger@gmail.com>
parents:
262
diff
changeset
|
34 class _replacer(object): |
f3abe0bdccdd
rewrite demandload module to be more flexible.
Vadim Gelfer <vadim.gelger@gmail.com>
parents:
262
diff
changeset
|
35 '''placeholder for a demand loaded module. demandload puts this in |
f3abe0bdccdd
rewrite demandload module to be more flexible.
Vadim Gelfer <vadim.gelger@gmail.com>
parents:
262
diff
changeset
|
36 a target scope. when an attribute of this object is looked up, |
f3abe0bdccdd
rewrite demandload module to be more flexible.
Vadim Gelfer <vadim.gelger@gmail.com>
parents:
262
diff
changeset
|
37 this object is replaced in the target scope with the actual |
f3abe0bdccdd
rewrite demandload module to be more flexible.
Vadim Gelfer <vadim.gelger@gmail.com>
parents:
262
diff
changeset
|
38 module. |
f3abe0bdccdd
rewrite demandload module to be more flexible.
Vadim Gelfer <vadim.gelger@gmail.com>
parents:
262
diff
changeset
|
39 |
f3abe0bdccdd
rewrite demandload module to be more flexible.
Vadim Gelfer <vadim.gelger@gmail.com>
parents:
262
diff
changeset
|
40 we use __getattribute__ to avoid namespace clashes between |
f3abe0bdccdd
rewrite demandload module to be more flexible.
Vadim Gelfer <vadim.gelger@gmail.com>
parents:
262
diff
changeset
|
41 placeholder object and real module.''' |
f3abe0bdccdd
rewrite demandload module to be more flexible.
Vadim Gelfer <vadim.gelger@gmail.com>
parents:
262
diff
changeset
|
42 |
f3abe0bdccdd
rewrite demandload module to be more flexible.
Vadim Gelfer <vadim.gelger@gmail.com>
parents:
262
diff
changeset
|
43 def __init__(self, importer, target): |
f3abe0bdccdd
rewrite demandload module to be more flexible.
Vadim Gelfer <vadim.gelger@gmail.com>
parents:
262
diff
changeset
|
44 self.importer = importer |
f3abe0bdccdd
rewrite demandload module to be more flexible.
Vadim Gelfer <vadim.gelger@gmail.com>
parents:
262
diff
changeset
|
45 self.target = target |
f3abe0bdccdd
rewrite demandload module to be more flexible.
Vadim Gelfer <vadim.gelger@gmail.com>
parents:
262
diff
changeset
|
46 # consider case where we do this: |
f3abe0bdccdd
rewrite demandload module to be more flexible.
Vadim Gelfer <vadim.gelger@gmail.com>
parents:
262
diff
changeset
|
47 # demandload(globals(), 'foo.bar foo.quux') |
f3abe0bdccdd
rewrite demandload module to be more flexible.
Vadim Gelfer <vadim.gelger@gmail.com>
parents:
262
diff
changeset
|
48 # foo will already exist in target scope when we get to |
f3abe0bdccdd
rewrite demandload module to be more flexible.
Vadim Gelfer <vadim.gelger@gmail.com>
parents:
262
diff
changeset
|
49 # foo.quux. so we remember that we will need to demandload |
f3abe0bdccdd
rewrite demandload module to be more flexible.
Vadim Gelfer <vadim.gelger@gmail.com>
parents:
262
diff
changeset
|
50 # quux into foo's scope when we really load it. |
f3abe0bdccdd
rewrite demandload module to be more flexible.
Vadim Gelfer <vadim.gelger@gmail.com>
parents:
262
diff
changeset
|
51 self.later = [] |
f3abe0bdccdd
rewrite demandload module to be more flexible.
Vadim Gelfer <vadim.gelger@gmail.com>
parents:
262
diff
changeset
|
52 |
f3abe0bdccdd
rewrite demandload module to be more flexible.
Vadim Gelfer <vadim.gelger@gmail.com>
parents:
262
diff
changeset
|
53 def module(self): |
f3abe0bdccdd
rewrite demandload module to be more flexible.
Vadim Gelfer <vadim.gelger@gmail.com>
parents:
262
diff
changeset
|
54 return object.__getattribute__(self, 'importer').module() |
f3abe0bdccdd
rewrite demandload module to be more flexible.
Vadim Gelfer <vadim.gelger@gmail.com>
parents:
262
diff
changeset
|
55 |
f3abe0bdccdd
rewrite demandload module to be more flexible.
Vadim Gelfer <vadim.gelger@gmail.com>
parents:
262
diff
changeset
|
56 def __getattribute__(self, key): |
f3abe0bdccdd
rewrite demandload module to be more flexible.
Vadim Gelfer <vadim.gelger@gmail.com>
parents:
262
diff
changeset
|
57 '''look up an attribute in a module and return it. replace the |
f3abe0bdccdd
rewrite demandload module to be more flexible.
Vadim Gelfer <vadim.gelger@gmail.com>
parents:
262
diff
changeset
|
58 name of the module in the caller\'s dict with the actual |
f3abe0bdccdd
rewrite demandload module to be more flexible.
Vadim Gelfer <vadim.gelger@gmail.com>
parents:
262
diff
changeset
|
59 module.''' |
262 | 60 |
1826
f3abe0bdccdd
rewrite demandload module to be more flexible.
Vadim Gelfer <vadim.gelger@gmail.com>
parents:
262
diff
changeset
|
61 module = object.__getattribute__(self, 'module')() |
f3abe0bdccdd
rewrite demandload module to be more flexible.
Vadim Gelfer <vadim.gelger@gmail.com>
parents:
262
diff
changeset
|
62 target = object.__getattribute__(self, 'target') |
f3abe0bdccdd
rewrite demandload module to be more flexible.
Vadim Gelfer <vadim.gelger@gmail.com>
parents:
262
diff
changeset
|
63 importer = object.__getattribute__(self, 'importer') |
f3abe0bdccdd
rewrite demandload module to be more flexible.
Vadim Gelfer <vadim.gelger@gmail.com>
parents:
262
diff
changeset
|
64 later = object.__getattribute__(self, 'later') |
f3abe0bdccdd
rewrite demandload module to be more flexible.
Vadim Gelfer <vadim.gelger@gmail.com>
parents:
262
diff
changeset
|
65 |
f3abe0bdccdd
rewrite demandload module to be more flexible.
Vadim Gelfer <vadim.gelger@gmail.com>
parents:
262
diff
changeset
|
66 if later: |
f3abe0bdccdd
rewrite demandload module to be more flexible.
Vadim Gelfer <vadim.gelger@gmail.com>
parents:
262
diff
changeset
|
67 demandload(module.__dict__, ' '.join(later)) |
f3abe0bdccdd
rewrite demandload module to be more flexible.
Vadim Gelfer <vadim.gelger@gmail.com>
parents:
262
diff
changeset
|
68 |
f3abe0bdccdd
rewrite demandload module to be more flexible.
Vadim Gelfer <vadim.gelger@gmail.com>
parents:
262
diff
changeset
|
69 importer.scope[target] = module |
f3abe0bdccdd
rewrite demandload module to be more flexible.
Vadim Gelfer <vadim.gelger@gmail.com>
parents:
262
diff
changeset
|
70 |
f3abe0bdccdd
rewrite demandload module to be more flexible.
Vadim Gelfer <vadim.gelger@gmail.com>
parents:
262
diff
changeset
|
71 return getattr(module, key) |
f3abe0bdccdd
rewrite demandload module to be more flexible.
Vadim Gelfer <vadim.gelger@gmail.com>
parents:
262
diff
changeset
|
72 |
f3abe0bdccdd
rewrite demandload module to be more flexible.
Vadim Gelfer <vadim.gelger@gmail.com>
parents:
262
diff
changeset
|
73 class _replacer_from(_replacer): |
f3abe0bdccdd
rewrite demandload module to be more flexible.
Vadim Gelfer <vadim.gelger@gmail.com>
parents:
262
diff
changeset
|
74 '''placeholder for a demand loaded module. used for "from foo |
f3abe0bdccdd
rewrite demandload module to be more flexible.
Vadim Gelfer <vadim.gelger@gmail.com>
parents:
262
diff
changeset
|
75 import ..." emulation. semantics of this are different than |
f3abe0bdccdd
rewrite demandload module to be more flexible.
Vadim Gelfer <vadim.gelger@gmail.com>
parents:
262
diff
changeset
|
76 regular import, so different implementation needed.''' |
f3abe0bdccdd
rewrite demandload module to be more flexible.
Vadim Gelfer <vadim.gelger@gmail.com>
parents:
262
diff
changeset
|
77 |
f3abe0bdccdd
rewrite demandload module to be more flexible.
Vadim Gelfer <vadim.gelger@gmail.com>
parents:
262
diff
changeset
|
78 def module(self): |
f3abe0bdccdd
rewrite demandload module to be more flexible.
Vadim Gelfer <vadim.gelger@gmail.com>
parents:
262
diff
changeset
|
79 importer = object.__getattribute__(self, 'importer') |
f3abe0bdccdd
rewrite demandload module to be more flexible.
Vadim Gelfer <vadim.gelger@gmail.com>
parents:
262
diff
changeset
|
80 target = object.__getattribute__(self, 'target') |
f3abe0bdccdd
rewrite demandload module to be more flexible.
Vadim Gelfer <vadim.gelger@gmail.com>
parents:
262
diff
changeset
|
81 |
f3abe0bdccdd
rewrite demandload module to be more flexible.
Vadim Gelfer <vadim.gelger@gmail.com>
parents:
262
diff
changeset
|
82 return getattr(importer.module(), target) |
f3abe0bdccdd
rewrite demandload module to be more flexible.
Vadim Gelfer <vadim.gelger@gmail.com>
parents:
262
diff
changeset
|
83 |
2310
d01eac5968c6
demandload: implement __call__
John Arbash Meinel <john@arbash-meinel.com>
parents:
1826
diff
changeset
|
84 def __call__(self, *args, **kwargs): |
d01eac5968c6
demandload: implement __call__
John Arbash Meinel <john@arbash-meinel.com>
parents:
1826
diff
changeset
|
85 target = object.__getattribute__(self, 'module')() |
d01eac5968c6
demandload: implement __call__
John Arbash Meinel <john@arbash-meinel.com>
parents:
1826
diff
changeset
|
86 return target(*args, **kwargs) |
d01eac5968c6
demandload: implement __call__
John Arbash Meinel <john@arbash-meinel.com>
parents:
1826
diff
changeset
|
87 |
1826
f3abe0bdccdd
rewrite demandload module to be more flexible.
Vadim Gelfer <vadim.gelger@gmail.com>
parents:
262
diff
changeset
|
88 def demandload(scope, modules): |
f3abe0bdccdd
rewrite demandload module to be more flexible.
Vadim Gelfer <vadim.gelger@gmail.com>
parents:
262
diff
changeset
|
89 '''import modules into scope when each is first used. |
f3abe0bdccdd
rewrite demandload module to be more flexible.
Vadim Gelfer <vadim.gelger@gmail.com>
parents:
262
diff
changeset
|
90 |
f3abe0bdccdd
rewrite demandload module to be more flexible.
Vadim Gelfer <vadim.gelger@gmail.com>
parents:
262
diff
changeset
|
91 scope should be the value of globals() in the module calling this |
f3abe0bdccdd
rewrite demandload module to be more flexible.
Vadim Gelfer <vadim.gelger@gmail.com>
parents:
262
diff
changeset
|
92 function, or locals() in the calling function. |
f3abe0bdccdd
rewrite demandload module to be more flexible.
Vadim Gelfer <vadim.gelger@gmail.com>
parents:
262
diff
changeset
|
93 |
f3abe0bdccdd
rewrite demandload module to be more flexible.
Vadim Gelfer <vadim.gelger@gmail.com>
parents:
262
diff
changeset
|
94 modules is a string listing module names, separated by white |
f3abe0bdccdd
rewrite demandload module to be more flexible.
Vadim Gelfer <vadim.gelger@gmail.com>
parents:
262
diff
changeset
|
95 space. names are handled like this: |
262 | 96 |
1826
f3abe0bdccdd
rewrite demandload module to be more flexible.
Vadim Gelfer <vadim.gelger@gmail.com>
parents:
262
diff
changeset
|
97 foo import foo |
f3abe0bdccdd
rewrite demandload module to be more flexible.
Vadim Gelfer <vadim.gelger@gmail.com>
parents:
262
diff
changeset
|
98 foo bar import foo, bar |
2821
a8a7ce1a01a5
Teach demandload how to import as
Matt Mackall <mpm@selenic.com>
parents:
2310
diff
changeset
|
99 foo@bar import foo as bar |
1826
f3abe0bdccdd
rewrite demandload module to be more flexible.
Vadim Gelfer <vadim.gelger@gmail.com>
parents:
262
diff
changeset
|
100 foo.bar import foo.bar |
f3abe0bdccdd
rewrite demandload module to be more flexible.
Vadim Gelfer <vadim.gelger@gmail.com>
parents:
262
diff
changeset
|
101 foo:bar from foo import bar |
f3abe0bdccdd
rewrite demandload module to be more flexible.
Vadim Gelfer <vadim.gelger@gmail.com>
parents:
262
diff
changeset
|
102 foo:bar,quux from foo import bar, quux |
f3abe0bdccdd
rewrite demandload module to be more flexible.
Vadim Gelfer <vadim.gelger@gmail.com>
parents:
262
diff
changeset
|
103 foo.bar:quux from foo.bar import quux''' |
262 | 104 |
1826
f3abe0bdccdd
rewrite demandload module to be more flexible.
Vadim Gelfer <vadim.gelger@gmail.com>
parents:
262
diff
changeset
|
105 for mod in modules.split(): |
f3abe0bdccdd
rewrite demandload module to be more flexible.
Vadim Gelfer <vadim.gelger@gmail.com>
parents:
262
diff
changeset
|
106 col = mod.find(':') |
f3abe0bdccdd
rewrite demandload module to be more flexible.
Vadim Gelfer <vadim.gelger@gmail.com>
parents:
262
diff
changeset
|
107 if col >= 0: |
f3abe0bdccdd
rewrite demandload module to be more flexible.
Vadim Gelfer <vadim.gelger@gmail.com>
parents:
262
diff
changeset
|
108 fromlist = mod[col+1:].split(',') |
f3abe0bdccdd
rewrite demandload module to be more flexible.
Vadim Gelfer <vadim.gelger@gmail.com>
parents:
262
diff
changeset
|
109 mod = mod[:col] |
f3abe0bdccdd
rewrite demandload module to be more flexible.
Vadim Gelfer <vadim.gelger@gmail.com>
parents:
262
diff
changeset
|
110 else: |
f3abe0bdccdd
rewrite demandload module to be more flexible.
Vadim Gelfer <vadim.gelger@gmail.com>
parents:
262
diff
changeset
|
111 fromlist = [] |
2960
61afc32c1a49
Avoid Python 2.5 warning
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
2821
diff
changeset
|
112 as_ = None |
2821
a8a7ce1a01a5
Teach demandload how to import as
Matt Mackall <mpm@selenic.com>
parents:
2310
diff
changeset
|
113 if '@' in mod: |
2960
61afc32c1a49
Avoid Python 2.5 warning
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
2821
diff
changeset
|
114 mod, as_ = mod.split("@") |
1826
f3abe0bdccdd
rewrite demandload module to be more flexible.
Vadim Gelfer <vadim.gelger@gmail.com>
parents:
262
diff
changeset
|
115 importer = _importer(scope, mod, fromlist) |
f3abe0bdccdd
rewrite demandload module to be more flexible.
Vadim Gelfer <vadim.gelger@gmail.com>
parents:
262
diff
changeset
|
116 if fromlist: |
f3abe0bdccdd
rewrite demandload module to be more flexible.
Vadim Gelfer <vadim.gelger@gmail.com>
parents:
262
diff
changeset
|
117 for name in fromlist: |
f3abe0bdccdd
rewrite demandload module to be more flexible.
Vadim Gelfer <vadim.gelger@gmail.com>
parents:
262
diff
changeset
|
118 scope[name] = _replacer_from(importer, name) |
f3abe0bdccdd
rewrite demandload module to be more flexible.
Vadim Gelfer <vadim.gelger@gmail.com>
parents:
262
diff
changeset
|
119 else: |
f3abe0bdccdd
rewrite demandload module to be more flexible.
Vadim Gelfer <vadim.gelger@gmail.com>
parents:
262
diff
changeset
|
120 dot = mod.find('.') |
f3abe0bdccdd
rewrite demandload module to be more flexible.
Vadim Gelfer <vadim.gelger@gmail.com>
parents:
262
diff
changeset
|
121 if dot >= 0: |
f3abe0bdccdd
rewrite demandload module to be more flexible.
Vadim Gelfer <vadim.gelger@gmail.com>
parents:
262
diff
changeset
|
122 basemod = mod[:dot] |
f3abe0bdccdd
rewrite demandload module to be more flexible.
Vadim Gelfer <vadim.gelger@gmail.com>
parents:
262
diff
changeset
|
123 val = scope.get(basemod) |
f3abe0bdccdd
rewrite demandload module to be more flexible.
Vadim Gelfer <vadim.gelger@gmail.com>
parents:
262
diff
changeset
|
124 # if base module has already been demandload()ed, |
f3abe0bdccdd
rewrite demandload module to be more flexible.
Vadim Gelfer <vadim.gelger@gmail.com>
parents:
262
diff
changeset
|
125 # remember to load this submodule into its namespace |
f3abe0bdccdd
rewrite demandload module to be more flexible.
Vadim Gelfer <vadim.gelger@gmail.com>
parents:
262
diff
changeset
|
126 # when needed. |
f3abe0bdccdd
rewrite demandload module to be more flexible.
Vadim Gelfer <vadim.gelger@gmail.com>
parents:
262
diff
changeset
|
127 if isinstance(val, _replacer): |
f3abe0bdccdd
rewrite demandload module to be more flexible.
Vadim Gelfer <vadim.gelger@gmail.com>
parents:
262
diff
changeset
|
128 later = object.__getattribute__(val, 'later') |
f3abe0bdccdd
rewrite demandload module to be more flexible.
Vadim Gelfer <vadim.gelger@gmail.com>
parents:
262
diff
changeset
|
129 later.append(mod[dot+1:]) |
f3abe0bdccdd
rewrite demandload module to be more flexible.
Vadim Gelfer <vadim.gelger@gmail.com>
parents:
262
diff
changeset
|
130 continue |
f3abe0bdccdd
rewrite demandload module to be more flexible.
Vadim Gelfer <vadim.gelger@gmail.com>
parents:
262
diff
changeset
|
131 else: |
f3abe0bdccdd
rewrite demandload module to be more flexible.
Vadim Gelfer <vadim.gelger@gmail.com>
parents:
262
diff
changeset
|
132 basemod = mod |
2960
61afc32c1a49
Avoid Python 2.5 warning
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
2821
diff
changeset
|
133 if not as_: |
61afc32c1a49
Avoid Python 2.5 warning
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
2821
diff
changeset
|
134 as_ = basemod |
61afc32c1a49
Avoid Python 2.5 warning
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
2821
diff
changeset
|
135 scope[as_] = _replacer(importer, as_) |