Merge pull request #10827 from q0w/project-urls

Include Project-URLs in `pip show -v` output
This commit is contained in:
Pradyun Gedam 2022-04-23 21:39:51 +01:00 committed by GitHub
commit 7164b1af50
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 18 additions and 0 deletions

1
news/10799.feature.rst Normal file
View File

@ -0,0 +1 @@
Include Project-URLs in ``pip show`` output.

View File

@ -60,6 +60,7 @@ class _PackageInfo(NamedTuple):
classifiers: List[str]
summary: str
homepage: str
project_urls: List[str]
author: str
author_email: str
license: str
@ -126,6 +127,7 @@ def search_packages_info(query: List[str]) -> Generator[_PackageInfo, None, None
classifiers=metadata.get_all("Classifier", []),
summary=metadata.get("Summary", ""),
homepage=metadata.get("Home-page", ""),
project_urls=metadata.get_all("Project-URL", []),
author=metadata.get("Author", ""),
author_email=metadata.get("Author-email", ""),
license=metadata.get("License", ""),
@ -168,6 +170,9 @@ def print_results(
write_output("Entry-points:")
for entry in dist.entry_points:
write_output(" %s", entry.strip())
write_output("Project-URLs:")
for project_url in dist.project_urls:
write_output(" %s", project_url)
if list_files:
write_output("Files:")
if dist.files is None:

View File

@ -174,6 +174,17 @@ def test_show_verbose_installer(script: PipTestEnvironment, data: TestData) -> N
assert "Installer: pip" in lines
def test_show_verbose_project_urls(script: PipTestEnvironment) -> None:
"""
Test that project urls can be listed
"""
result = script.pip("show", "pip", "--verbose")
lines = result.stdout.splitlines()
assert "Name: pip" in lines
assert re.search(r"Project-URLs:\n( .+\n)+", result.stdout)
assert "Source, https://github.com/pypa/pip" in result.stdout
def test_show_verbose(script: PipTestEnvironment) -> None:
"""
Test end to end test for verbose show command.
@ -184,6 +195,7 @@ def test_show_verbose(script: PipTestEnvironment) -> None:
assert any(line.startswith("Installer: ") for line in lines)
assert "Entry-points:" in lines
assert "Classifiers:" in lines
assert "Project-URLs:" in lines
def test_all_fields(script: PipTestEnvironment) -> None: