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
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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
7b69e630d237 PEP 3147
Barry Warsaw <barry@python.org>
parents: 52115
diff changeset
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)