Commit 11ef9a98 authored by Jason R. Coombs's avatar Jason R. Coombs

Suppress ValueError in fixup_namespace_packages. Fixes #520. Fixes #513.

parent 2388233e
...@@ -5,6 +5,9 @@ CHANGES ...@@ -5,6 +5,9 @@ CHANGES
v27.2.0 v27.2.0
------- -------
* #520 and #513: Suppress ValueErrors in fixup_namespace_packages
when lookup fails.
* Nicer, more consistent interfaces for msvc monkeypatching. * Nicer, more consistent interfaces for msvc monkeypatching.
v27.1.2 v27.1.2
......
...@@ -2066,6 +2066,15 @@ def _rebuild_mod_path(orig_path, package_name, module): ...@@ -2066,6 +2066,15 @@ def _rebuild_mod_path(orig_path, package_name, module):
""" """
sys_path = [_normalize_cached(p) for p in sys.path] sys_path = [_normalize_cached(p) for p in sys.path]
def safe_sys_path_index(entry):
"""
Workaround for #520 and #513.
"""
try:
return sys_path.index(entry)
except ValueError:
return float('inf')
def position_in_sys_path(path): def position_in_sys_path(path):
""" """
Return the ordinal of the path based on its position in sys.path Return the ordinal of the path based on its position in sys.path
...@@ -2073,7 +2082,7 @@ def _rebuild_mod_path(orig_path, package_name, module): ...@@ -2073,7 +2082,7 @@ def _rebuild_mod_path(orig_path, package_name, module):
path_parts = path.split(os.sep) path_parts = path.split(os.sep)
module_parts = package_name.count('.') + 1 module_parts = package_name.count('.') + 1
parts = path_parts[:-module_parts] parts = path_parts[:-module_parts]
return sys_path.index(_normalize_cached(os.sep.join(parts))) return safe_sys_path_index(_normalize_cached(os.sep.join(parts)))
orig_path.sort(key=position_in_sys_path) orig_path.sort(key=position_in_sys_path)
module.__path__[:] = [_normalize_cached(p) for p in orig_path] module.__path__[:] = [_normalize_cached(p) for p in orig_path]
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment