Skip to content

Commit fca773c

Browse files
committed
Allow truststore to not import on Python 3.9 and earlier
1 parent 63f19b5 commit fca773c

File tree

1 file changed

+11
-4
lines changed

1 file changed

+11
-4
lines changed

src/pip/_internal/commands/debug.py

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -46,22 +46,29 @@ def create_vendor_txt_map() -> Dict[str, str]:
4646
return dict(line.split("==", 1) for line in lines)
4747

4848

49-
def get_module_from_module_name(module_name: str) -> ModuleType:
49+
def get_module_from_module_name(module_name: str) -> Optional[ModuleType]:
5050
# Module name can be uppercase in vendor.txt for some reason...
5151
module_name = module_name.lower().replace("-", "_")
5252
# PATCH: setuptools is actually only pkg_resources.
5353
if module_name == "setuptools":
5454
module_name = "pkg_resources"
5555

56-
__import__(f"pip._vendor.{module_name}", globals(), locals(), level=0)
57-
return getattr(pip._vendor, module_name)
56+
try:
57+
__import__(f"pip._vendor.{module_name}", globals(), locals(), level=0)
58+
return getattr(pip._vendor, module_name)
59+
except ImportError:
60+
# We allow 'truststore' to fail to import due
61+
# to being unavailable on Python 3.9 and earlier.
62+
if module_name == "truststore" and sys.version_info < (3, 10):
63+
return None
64+
raise
5865

5966

6067
def get_vendor_version_from_module(module_name: str) -> Optional[str]:
6168
module = get_module_from_module_name(module_name)
6269
version = getattr(module, "__version__", None)
6370

64-
if not version:
71+
if module and not version:
6572
# Try to find version in debundled module info.
6673
assert module.__file__ is not None
6774
env = get_environment([os.path.dirname(module.__file__)])

0 commit comments

Comments
 (0)