Show More
@@ -40,22 +40,23 b' else:' | |||
|
40 | 40 | |
|
41 | 41 | class _demandmod(object): |
|
42 | 42 | """module demand-loader and proxy""" |
|
43 | def __init__(self, name, globals, locals): | |
|
43 | def __init__(self, name, globals, locals, level=-1): | |
|
44 | 44 | if '.' in name: |
|
45 | 45 | head, rest = name.split('.', 1) |
|
46 | 46 | after = [rest] |
|
47 | 47 | else: |
|
48 | 48 | head = name |
|
49 | 49 | after = [] |
|
50 |
object.__setattr__(self, "_data", |
|
|
50 | object.__setattr__(self, "_data", | |
|
51 | (head, globals, locals, after, level)) | |
|
51 | 52 | object.__setattr__(self, "_module", None) |
|
52 | 53 | def _extend(self, name): |
|
53 | 54 | """add to the list of submodules to load""" |
|
54 | 55 | self._data[3].append(name) |
|
55 | 56 | def _load(self): |
|
56 | 57 | if not self._module: |
|
57 | head, globals, locals, after = self._data | |
|
58 |
mod = _ |
|
|
58 | head, globals, locals, after, level = self._data | |
|
59 | mod = _import(head, globals, locals, None, level) | |
|
59 | 60 | # load submodules |
|
60 | 61 | def subload(mod, p): |
|
61 | 62 | h, t = p, None |
@@ -105,7 +106,7 b' def _demandimport(name, globals=None, lo' | |||
|
105 | 106 | if isinstance(locals[base], _demandmod): |
|
106 | 107 | locals[base]._extend(rest) |
|
107 | 108 | return locals[base] |
|
108 | return _demandmod(name, globals, locals) | |
|
109 | return _demandmod(name, globals, locals, level) | |
|
109 | 110 | else: |
|
110 | 111 | if level != -1: |
|
111 | 112 | # from . import b,c,d or from .a import b,c,d |
@@ -129,6 +129,45 b" Check hgweb's load order:" | |||
|
129 | 129 | $ echo 'foo = !' >> $HGRCPATH |
|
130 | 130 | $ echo 'bar = !' >> $HGRCPATH |
|
131 | 131 | |
|
132 | Check "from __future__ import absolute_import" support for external libraries | |
|
133 | ||
|
134 | $ mkdir $TESTTMP/libroot | |
|
135 | $ echo "s = 'libroot/ambig.py'" > $TESTTMP/libroot/ambig.py | |
|
136 | $ mkdir $TESTTMP/libroot/mod | |
|
137 | $ touch $TESTTMP/libroot/mod/__init__.py | |
|
138 | $ echo "s = 'libroot/mod/ambig.py'" > $TESTTMP/libroot/mod/ambig.py | |
|
139 | ||
|
140 | #if absimport | |
|
141 | $ cat > $TESTTMP/libroot/mod/ambigabs.py <<EOF | |
|
142 | > from __future__ import absolute_import | |
|
143 | > import ambig # should load "libroot/ambig.py" | |
|
144 | > s = ambig.s | |
|
145 | > EOF | |
|
146 | $ cat > loadabs.py <<EOF | |
|
147 | > import mod.ambigabs as ambigabs | |
|
148 | > def extsetup(): | |
|
149 | > print 'ambigabs.s=%s' % ambigabs.s | |
|
150 | > EOF | |
|
151 | $ (PYTHONPATH=$PYTHONPATH:$TESTTMP/libroot; hg --config extensions.loadabs=loadabs.py root) | |
|
152 | ambigabs.s=libroot/ambig.py | |
|
153 | $TESTTMP/a | |
|
154 | #endif | |
|
155 | ||
|
156 | #if no-py3k | |
|
157 | $ cat > $TESTTMP/libroot/mod/ambigrel.py <<EOF | |
|
158 | > import ambig # should load "libroot/mod/ambig.py" | |
|
159 | > s = ambig.s | |
|
160 | > EOF | |
|
161 | $ cat > loadrel.py <<EOF | |
|
162 | > import mod.ambigrel as ambigrel | |
|
163 | > def extsetup(): | |
|
164 | > print 'ambigrel.s=%s' % ambigrel.s | |
|
165 | > EOF | |
|
166 | $ (PYTHONPATH=$PYTHONPATH:$TESTTMP/libroot; hg --config extensions.loadrel=loadrel.py root) | |
|
167 | ambigrel.s=libroot/mod/ambig.py | |
|
168 | $TESTTMP/a | |
|
169 | #endif | |
|
170 | ||
|
132 | 171 | $ cd .. |
|
133 | 172 | |
|
134 | 173 | hide outer repo |
General Comments 0
You need to be logged in to leave comments.
Login now