From 8da1bdc91e97d9363956777c75427e9e07f9d421 Mon Sep 17 00:00:00 2001 From: Danny McClanahan <1305167+cosmicexplorer@users.noreply.github.com> Date: Mon, 5 Sep 2022 10:04:37 -0400 Subject: [PATCH] ensure PEP 691 json parsing also supports PEP 658 dist-info-metadata --- src/pip/_internal/models/link.py | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/src/pip/_internal/models/link.py b/src/pip/_internal/models/link.py index 970bcf49b44..e0f436fa345 100644 --- a/src/pip/_internal/models/link.py +++ b/src/pip/_internal/models/link.py @@ -246,7 +246,12 @@ def from_json( if file_url is None: return None + url = _ensure_quoted_url(urllib.parse.urljoin(page_url, file_url)) + pyrequire = file_data.get("requires-python") yanked_reason = file_data.get("yanked") + dist_info_metadata = file_data.get("dist-info-metadata") + hashes = file_data.get("hashes", {}) + # The Link.yanked_reason expects an empty string instead of a boolean. if yanked_reason and not isinstance(yanked_reason, str): yanked_reason = "" @@ -255,11 +260,12 @@ def from_json( yanked_reason = None return cls( - _ensure_quoted_url(urllib.parse.urljoin(page_url, file_url)), + url, comes_from=page_url, - requires_python=file_data.get("requires-python"), + requires_python=pyrequire, yanked_reason=yanked_reason, - hashes=file_data.get("hashes", {}), + hashes=hashes, + dist_info_metadata=dist_info_metadata, ) @classmethod