Skip to content

Commit ebde2d3

Browse files
committed
Implement PEP 714
closes #997
1 parent 73605aa commit ebde2d3

File tree

4 files changed

+24
-20
lines changed

4 files changed

+24
-20
lines changed

CHANGES/997.feature

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Added core metadata to Simple API (PEP 714)

pulp_python/app/utils.py

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -58,13 +58,13 @@
5858
<h1>Links for {{ project_name }}</h1>
5959
{%- for pkg in project_packages %}
6060
<a href="{{ pkg.url }}#sha256={{ pkg.sha256 }}" rel="internal"
61-
{%- if pkg.metadata_sha256 %} data-dist-info-metadata="sha256={{ pkg.metadata_sha256 }}"
61+
{%- if pkg.metadata_sha256 %} data-dist-info-metadata="sha256={{ pkg.metadata_sha256 }}" data-core-metadata="sha256={{ pkg.metadata_sha256 }}"
6262
{%- endif %} {% if pkg.provenance -%}
6363
data-provenance="{{ pkg.provenance }}"{% endif %}>{{ pkg.filename }}</a><br/>
6464
{%- endfor %}
6565
</body>
6666
</html>
67-
"""
67+
""" # noqa: E501
6868

6969
DIST_EXTENSIONS = {
7070
".whl": "bdist_wheel",
@@ -536,12 +536,14 @@ def write_simple_detail_json(project_name, project_packages):
536536
"data-dist-info-metadata": (
537537
{"sha256": package["metadata_sha256"]} if package["metadata_sha256"] else False
538538
),
539+
# PEP 714
540+
"core-metadata": (
541+
{"sha256": package["metadata_sha256"]} if package["metadata_sha256"] else False
542+
),
539543
# yanked and yanked_reason are not implemented because they are mutable
540544
# (v1.1, PEP 700)
541545
"size": package["size"],
542546
"upload-time": format_upload_time(package["upload_time"]),
543-
# TODO in the future:
544-
# core-metadata (PEP 7.14)
545547
# (v1.3, PEP 740)
546548
"provenance": package.get("provenance", None),
547549
}

pulp_python/tests/functional/api/test_pypi_simple_api.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -142,6 +142,7 @@ def test_simple_json_detail_api(
142142
assert file_whl["hashes"] == {"sha256": PYTHON_WHEEL_SHA256}
143143
assert file_whl["requires-python"] is None
144144
assert file_whl["data-dist-info-metadata"] == {"sha256": PYTHON_WHEEL_METADATA_SHA256}
145+
assert file_whl["core-metadata"] == {"sha256": PYTHON_WHEEL_METADATA_SHA256}
145146
assert file_whl["size"] == 22455
146147
assert file_whl["upload-time"] is not None
147148
# Check data of a tarball
@@ -151,6 +152,7 @@ def test_simple_json_detail_api(
151152
assert file_tar["hashes"] == {"sha256": PYTHON_EGG_SHA256}
152153
assert file_tar["requires-python"] is None
153154
assert file_tar["data-dist-info-metadata"] is False
155+
assert file_tar["core-metadata"] is False
154156
assert file_tar["size"] == 19097
155157
assert file_tar["upload-time"] is not None
156158
assert file_tar["provenance"] is None

pulp_python/tests/functional/utils.py

Lines changed: 15 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -6,24 +6,23 @@
66

77
def _validate_metadata_sha_digest(link, filename, metadata_sha_digests):
88
"""
9-
Validate data-dist-info-metadata attribute for a release link.
9+
Validate data-dist-info-metadata and data-core-metadata attributes for a release link.
1010
"""
11-
data_dist_info_metadata = link.get("data-dist-info-metadata")
11+
expected_metadata_sha = metadata_sha_digests.get(filename)
12+
expected_attr = f"sha256={expected_metadata_sha}" if expected_metadata_sha else None
1213

13-
if expected_metadata_sha := metadata_sha_digests.get(filename):
14-
expected_attr = f"sha256={expected_metadata_sha}"
15-
if data_dist_info_metadata != expected_attr:
16-
return (
17-
f"\nFile {filename} has incorrect data-dist-info-metadata: "
18-
f"expected '{expected_attr}', got '{data_dist_info_metadata}'"
19-
)
20-
else:
21-
if data_dist_info_metadata:
22-
return (
23-
f"\nFile {filename} should not have data-dist-info-metadata "
24-
f"but has '{data_dist_info_metadata}'"
25-
)
26-
return ""
14+
msgs = ""
15+
for attr_name in ["data-dist-info-metadata", "data-core-metadata"]:
16+
attr_value = link.get(attr_name)
17+
if attr_value != expected_attr:
18+
if expected_attr:
19+
msgs += (
20+
f"\nFile {filename} has incorrect {attr_name}: "
21+
f"expected '{expected_attr}', got '{attr_value}'"
22+
)
23+
else:
24+
msgs += f"\nFile {filename} should not have {attr_name} but has '{attr_value}'"
25+
return msgs
2726

2827

2928
def ensure_simple(simple_url, packages, sha_digests=None, metadata_sha_digests=None):

0 commit comments

Comments
 (0)