Commits

Rémy HUBSCHER committed e75fac8

#12703 - Patch of the resolve.name function

Comments (0)

Files changed (1)

Lib/packaging/util.py

     parts = name.split('.')
     cursor = len(parts)
     module_name = parts[:cursor]
-
+    last_error = None
+    last_error_module_path = None
     while cursor > 0:
         try:
             ret = __import__('.'.join(module_name))
             break
-        except ImportError:
+        except ImportError as ext:
+            last_error = ext
+            args = []
+            if root is not None:
+                args.append(root)
+            args += module_name
+            last_error_module_path = '%s.py' % os.path.join(*args)
             if cursor == 0:
                 raise
             cursor -= 1
             module_name = parts[:cursor]
             ret = ''
-
+        else:
+            last_error = None
+            last_error_module_path = None
     for part in parts[1:]:
         try:
             ret = getattr(ret, part)
         except AttributeError as exc:
+            if last_error is not None \
+                    and os.path.isfile(last_error_module_path):
+                raise last_error
             raise ImportError(exc)
-
     return ret
 
 
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.