[Python-checkins] cpython: Simplify importib._resolve_name().

brett.cannon python-checkins at python.org
Fri Feb 24 17:21:00 CET 2012


http://hg.python.org/cpython/rev/5cfc9c97af23
changeset:   75239:5cfc9c97af23
user:        Brett Cannon <brett at python.org>
date:        Fri Feb 24 11:20:54 2012 -0500
summary:
  Simplify importib._resolve_name().

files:
  Lib/importlib/_bootstrap.py |  16 +++++-----------
  1 files changed, 5 insertions(+), 11 deletions(-)


diff --git a/Lib/importlib/_bootstrap.py b/Lib/importlib/_bootstrap.py
--- a/Lib/importlib/_bootstrap.py
+++ b/Lib/importlib/_bootstrap.py
@@ -890,17 +890,11 @@
 
 def _resolve_name(name, package, level):
     """Resolve a relative module name to an absolute one."""
-    dot = len(package)
-    for x in range(level, 1, -1):
-        try:
-            dot = package.rindex('.', 0, dot)
-        except ValueError:
-            raise ValueError("attempted relative import beyond "
-                             "top-level package")
-    if name:
-        return "{0}.{1}".format(package[:dot], name)
-    else:
-        return package[:dot]
+    bits = package.rsplit('.', level-1)
+    if len(bits) < level:
+        raise ValueError('attempted relative import beyond top-level package')
+    base = bits[0]
+    return '{0}.{1}'.format(base, name) if name else base
 
 
 def _find_module(name, path):

-- 
Repository URL: http://hg.python.org/cpython


More information about the Python-checkins mailing list