Skip to content

Commit a716c52

Browse files
authored
Fix uninformative error message (#830)
* Test against non-specific message * Make error on invalid dynamic metadata more informative
1 parent 2b06f90 commit a716c52

File tree

2 files changed

+9
-3
lines changed

2 files changed

+9
-3
lines changed

src/packaging/metadata.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -589,10 +589,12 @@ def _process_dynamic(self, value: list[str]) -> list[str]:
589589
for dynamic_field in map(str.lower, value):
590590
if dynamic_field in {"name", "version", "metadata-version"}:
591591
raise self._invalid_metadata(
592-
f"{value!r} is not allowed as a dynamic field"
592+
f"{dynamic_field!r} is not allowed as a dynamic field"
593593
)
594594
elif dynamic_field not in _EMAIL_TO_RAW_MAPPING:
595-
raise self._invalid_metadata(f"{value!r} is not a valid dynamic field")
595+
raise self._invalid_metadata(
596+
f"{dynamic_field!r} is not a valid dynamic field"
597+
)
596598
return list(map(str.lower, value))
597599

598600
def _process_provides_extra(

tests/test_metadata.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -608,8 +608,12 @@ def test_invalid_dynamic_value(self):
608608
def test_disallowed_dynamic(self, field_name):
609609
meta = metadata.Metadata.from_raw({"dynamic": [field_name]}, validate=False)
610610

611-
with pytest.raises(metadata.InvalidMetadata):
611+
message = f"{field_name!r} is not allowed"
612+
with pytest.raises(metadata.InvalidMetadata, match=message) as execinfo:
612613
meta.dynamic # noqa: B018
614+
# The name of the specific offending field should be used,
615+
# not a list with all fields:
616+
assert "[" not in str(execinfo.value)
613617

614618
@pytest.mark.parametrize(
615619
"field_name",

0 commit comments

Comments
 (0)