blob: f817a40fa1c55420c53183161215669b49acfe2b [file] [log] [blame]
Brett Cannond2e7b332009-02-17 02:45:03 +00001"""Utility code for constructing importers, etc."""
Barry Warsaw28a691b2010-04-17 00:19:56 +00002
Brett Cannona3687f02013-05-28 17:29:34 -04003from ._bootstrap import ModuleManager
Brett Cannond2e7b332009-02-17 02:45:03 +00004from ._bootstrap import module_for_loader
Brett Cannon2cf03a82009-03-10 05:17:37 +00005from ._bootstrap import set_loader
Brett Cannon435aad82009-03-04 16:07:00 +00006from ._bootstrap import set_package
Brett Cannond200bf52012-05-13 13:45:09 -04007from ._bootstrap import _resolve_name
8
9
10def resolve_name(name, package):
11 """Resolve a relative module name to an absolute one."""
12 if not name.startswith('.'):
13 return name
14 elif not package:
15 raise ValueError('{!r} is not a relative name '
16 '(no leading dot)'.format(name))
17 level = 0
18 for character in name:
19 if character != '.':
20 break
21 level += 1
22 return _resolve_name(name[level:], package, level)