Mercurial > cpython-lru_cache-weakref
annotate Lib/importlib/util.py @ 79691:05c8928362ee
Merge __next__ method link fixes with 3.3.
| author | Ezio Melotti <ezio.melotti@gmail.com> |
|---|---|
| date | Fri, 12 Oct 2012 13:46:37 +0300 |
| parents | 767503ba72e7 |
| children | 3a1976680717 |
| rev | line source |
|---|---|
|
51681
147fcebacb5b
Implement the more specific PEP 302 semantics for loaders and what happens upon
Brett Cannon <bcannon@gmail.com>
parents:
diff
changeset
|
1 """Utility code for constructing importers, etc.""" |
| 60648 | 2 |
|
51681
147fcebacb5b
Implement the more specific PEP 302 semantics for loaders and what happens upon
Brett Cannon <bcannon@gmail.com>
parents:
diff
changeset
|
3 from ._bootstrap import module_for_loader |
|
52115
afd7118c8ccf
Implement importlib.util.set_loader: a decorator to automatically set
Brett Cannon <bcannon@gmail.com>
parents:
52002
diff
changeset
|
4 from ._bootstrap import set_loader |
|
52002
76a579b6bade
Rename importlib.util.set___package__ to set_package.
Brett Cannon <bcannon@gmail.com>
parents:
51945
diff
changeset
|
5 from ._bootstrap import set_package |
|
76905
767503ba72e7
Add importlib.util.resolve_name().
Brett Cannon <brett@python.org>
parents:
60648
diff
changeset
|
6 from ._bootstrap import _resolve_name |
|
767503ba72e7
Add importlib.util.resolve_name().
Brett Cannon <brett@python.org>
parents:
60648
diff
changeset
|
7 |
|
767503ba72e7
Add importlib.util.resolve_name().
Brett Cannon <brett@python.org>
parents:
60648
diff
changeset
|
8 |
|
767503ba72e7
Add importlib.util.resolve_name().
Brett Cannon <brett@python.org>
parents:
60648
diff
changeset
|
9 def resolve_name(name, package): |
|
767503ba72e7
Add importlib.util.resolve_name().
Brett Cannon <brett@python.org>
parents:
60648
diff
changeset
|
10 """Resolve a relative module name to an absolute one.""" |
|
767503ba72e7
Add importlib.util.resolve_name().
Brett Cannon <brett@python.org>
parents:
60648
diff
changeset
|
11 if not name.startswith('.'): |
|
767503ba72e7
Add importlib.util.resolve_name().
Brett Cannon <brett@python.org>
parents:
60648
diff
changeset
|
12 return name |
|
767503ba72e7
Add importlib.util.resolve_name().
Brett Cannon <brett@python.org>
parents:
60648
diff
changeset
|
13 elif not package: |
|
767503ba72e7
Add importlib.util.resolve_name().
Brett Cannon <brett@python.org>
parents:
60648
diff
changeset
|
14 raise ValueError('{!r} is not a relative name ' |
|
767503ba72e7
Add importlib.util.resolve_name().
Brett Cannon <brett@python.org>
parents:
60648
diff
changeset
|
15 '(no leading dot)'.format(name)) |
|
767503ba72e7
Add importlib.util.resolve_name().
Brett Cannon <brett@python.org>
parents:
60648
diff
changeset
|
16 level = 0 |
|
767503ba72e7
Add importlib.util.resolve_name().
Brett Cannon <brett@python.org>
parents:
60648
diff
changeset
|
17 for character in name: |
|
767503ba72e7
Add importlib.util.resolve_name().
Brett Cannon <brett@python.org>
parents:
60648
diff
changeset
|
18 if character != '.': |
|
767503ba72e7
Add importlib.util.resolve_name().
Brett Cannon <brett@python.org>
parents:
60648
diff
changeset
|
19 break |
|
767503ba72e7
Add importlib.util.resolve_name().
Brett Cannon <brett@python.org>
parents:
60648
diff
changeset
|
20 level += 1 |
|
767503ba72e7
Add importlib.util.resolve_name().
Brett Cannon <brett@python.org>
parents:
60648
diff
changeset
|
21 return _resolve_name(name[level:], package, level) |
