Skip to content

Commit 56a9c70

Browse files
committed
refactor: remove JSON output option
Signed-off-by: Henry Schreiner <[email protected]>
1 parent a880907 commit 56a9c70

File tree

2 files changed

+24
-75
lines changed

2 files changed

+24
-75
lines changed

src/packaging/metadata.py

+1-39
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
from __future__ import annotations
22

33
import builtins
4-
import dataclasses
54
import email.feedparser
65
import email.header
76
import email.message
@@ -283,34 +282,6 @@ def _get_payload(msg: email.message.Message, source: bytes | str) -> str:
283282
_MULTI_FIELDS = {_RAW_TO_EMAIL_MAPPING[x] for x in _LIST_FIELDS | _DICT_FIELDS}
284283

285284

286-
@dataclasses.dataclass
287-
class _JSonMessageSetter:
288-
"""
289-
This provides an API to build a JSON message output in the same way as the
290-
classic Message. Line breaks are preserved this way.
291-
"""
292-
293-
data: dict[str, str | list[str]]
294-
295-
def __setitem__(self, name: str, value: str | None) -> None:
296-
key = name.replace("-", "_")
297-
if value is None:
298-
return
299-
300-
if name == "keywords":
301-
values = (x.strip() for x in value.split(","))
302-
self.data[key] = [x for x in values if x]
303-
elif name in _MULTI_FIELDS:
304-
entry = self.data.setdefault(key, [])
305-
assert isinstance(entry, list)
306-
entry.append(value)
307-
else:
308-
self.data[key] = value
309-
310-
def set_payload(self, payload: str) -> None:
311-
self["description"] = payload
312-
313-
314285
# This class is for writing RFC822 messages
315286
class RFC822Policy(email.policy.EmailPolicy):
316287
"""
@@ -935,16 +906,7 @@ def as_rfc822(self) -> RFC822Message:
935906
self._write_metadata(message)
936907
return message
937908

938-
def as_json(self) -> dict[str, str | list[str]]:
939-
"""
940-
Return a JSON message with the metadata.
941-
"""
942-
message: dict[str, str | list[str]] = {}
943-
smart_message = _JSonMessageSetter(message)
944-
self._write_metadata(smart_message)
945-
return message
946-
947-
def _write_metadata(self, message: RFC822Message | _JSonMessageSetter) -> None:
909+
def _write_metadata(self, message: RFC822Message) -> None:
948910
"""
949911
Return an RFC822 message with the metadata.
950912
"""

tests/test_metadata.py

+23-36
Original file line numberDiff line numberDiff line change
@@ -855,42 +855,6 @@ def test_large(self):
855855
}
856856
)
857857

858-
assert meta.as_json() == {
859-
"author": "Example!",
860-
"author_email": "Unknown <[email protected]>",
861-
"classifier": [
862-
"Development Status :: 4 - Beta",
863-
"Programming Language :: Python",
864-
],
865-
"description": "some readme 👋\n",
866-
"description_content_type": "text/markdown",
867-
"keywords": ["trampolim", "is", "interesting"],
868-
"license": "some license text",
869-
"maintainer_email": "Other Example <[email protected]>",
870-
"metadata_version": "2.1",
871-
"name": "full_metadata",
872-
"project_url": [
873-
"homepage, example.com",
874-
"documentation, readthedocs.org",
875-
"repository, github.com/some/repo",
876-
"changelog, github.com/some/repo/blob/master/CHANGELOG.rst",
877-
],
878-
"provides_extra": ["test"],
879-
"requires_dist": [
880-
"dependency1",
881-
"dependency2>1.0.0",
882-
"dependency3[extra]",
883-
'dependency4; os_name != "nt"',
884-
'dependency5[other-extra]>1.0; os_name == "nt"',
885-
'test_dependency; extra == "test"',
886-
'test_dependency[test_extra]; extra == "test"',
887-
'test_dependency[test_extra2]>3.0; os_name == "nt" and extra == "test"',
888-
],
889-
"requires_python": ">=3.8",
890-
"summary": "A package with all the metadata :)",
891-
"version": "3.2.1",
892-
}
893-
894858
core_metadata = meta.as_rfc822()
895859
assert core_metadata.items() == [
896860
("metadata-version", "2.1"),
@@ -928,3 +892,26 @@ def test_large(self):
928892
]
929893

930894
assert core_metadata.get_payload() == "some readme 👋\n"
895+
896+
def test_modern_license(self):
897+
meta = metadata.Metadata.from_raw(
898+
{
899+
"metadata_version": "2.4",
900+
"name": "full_metadata",
901+
"version": "3.2.1",
902+
"license_expression": "MIT",
903+
"license_files": ["LICENSE.txt", "LICENSE"],
904+
}
905+
)
906+
907+
core_metadata = meta.as_rfc822()
908+
assert core_metadata.items() == [
909+
("metadata-version", "2.4"),
910+
("name", "full_metadata"),
911+
("version", "3.2.1"),
912+
("license-expression", "MIT"),
913+
("license-file", "LICENSE.txt"),
914+
("license-file", "LICENSE"),
915+
]
916+
917+
assert core_metadata.get_payload() is None

0 commit comments

Comments
 (0)