blob: 13164371025404591a62b1a58bcaac937d6aee0d [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 Cannond2e7b332009-02-17 02:45:03 +00003from ._bootstrap import module_for_loader
Brett Cannon2cf03a82009-03-10 05:17:37 +00004from ._bootstrap import set_loader
Brett Cannon435aad82009-03-04 16:07:00 +00005from ._bootstrap import set_package
Brett Cannond200bf52012-05-13 13:45:09 -04006from ._bootstrap import _resolve_name
7
8
9def resolve_name(name, package):
10 """Resolve a relative module name to an absolute one."""
11 if not name.startswith('.'):
12 return name
13 elif not package:
14 raise ValueError('{!r} is not a relative name '
15 '(no leading dot)'.format(name))
16 level = 0
17 for character in name:
18 if character != '.':
19 break
20 level += 1
21 return _resolve_name(name[level:], package, level)