Skip to content

Commit d96eb5d

Browse files
committed
Handle missing optional dependencies in dep_versions()
PR #1159 made keyring optional on some (non-Desktop) architectures. However the CLI attempts to determine dependency versions, in failure codepaths. Rather than blow up entirely, report the dependency as missing. Part of: #1158
1 parent a723876 commit d96eb5d

File tree

1 file changed

+11
-2
lines changed

1 file changed

+11
-2
lines changed

twine/cli.py

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -76,15 +76,24 @@ def configure_output() -> None:
7676

7777
def list_dependencies_and_versions() -> List[Tuple[str, str]]:
7878
deps = [
79-
"keyring",
79+
"keyring", # optional for non-desktop use
8080
"pkginfo",
8181
"requests",
8282
"requests-toolbelt",
8383
"urllib3",
8484
]
8585
if sys.version_info < (3, 10):
8686
deps.append("importlib-metadata")
87-
return [(dep, importlib_metadata.version(dep)) for dep in deps]
87+
88+
result: List[Tuple[str, str]] = []
89+
for dep in deps:
90+
try:
91+
version = importlib_metadata.version(dep)
92+
except importlib_metadata.PackageNotFoundError:
93+
version = "NOT INSTALLED"
94+
result.append((dep, version))
95+
96+
return result
8897

8998

9099
def dep_versions() -> str:

0 commit comments

Comments
 (0)