Don't allow non-string email in authors (#8520)

This commit is contained in:
konsti 2024-10-24 17:25:52 +02:00 committed by GitHub
parent a642676236
commit 6caeb6aba1
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 37 additions and 30 deletions

View file

@ -605,14 +605,19 @@ enum License {
/// The entry is derived from the email format of `John Doe <john.doe@example.net>`. You need to /// The entry is derived from the email format of `John Doe <john.doe@example.net>`. You need to
/// provide at least name or email. /// provide at least name or email.
#[derive(Deserialize, Debug, Clone)] #[derive(Deserialize, Debug, Clone)]
#[serde(untagged, expecting = "a table with 'name' and/or 'email' keys")] // deny_unknown_fields prevents using the name field when the email is not a string.
#[serde(
untagged,
deny_unknown_fields,
expecting = "a table with 'name' and/or 'email' keys"
)]
enum Contact { enum Contact {
/// TODO(konsti): RFC 822 validation.
NameEmail { name: String, email: String },
/// TODO(konsti): RFC 822 validation. /// TODO(konsti): RFC 822 validation.
Name { name: String }, Name { name: String },
/// TODO(konsti): RFC 822 validation. /// TODO(konsti): RFC 822 validation.
Email { email: String }, Email { email: String },
/// TODO(konsti): RFC 822 validation.
NameEmail { name: String, email: String },
} }
/// The `[build-system]` section of a pyproject.toml as specified in PEP 517. /// The `[build-system]` section of a pyproject.toml as specified in PEP 517.

View file

@ -110,6 +110,7 @@ fn valid() {
Summary: A Python package Summary: A Python package
Keywords: demo,example,package Keywords: demo,example,package
Author: Ferris the crab Author: Ferris the crab
Author-email: Ferris the crab <ferris@rustacean.net>
License: THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, License: THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
@ -123,6 +124,7 @@ fn valid() {
Requires-Dist: flask>=3,<4 Requires-Dist: flask>=3,<4
Requires-Dist: sqlalchemy[asyncio]>=2.0.35,<3 Requires-Dist: sqlalchemy[asyncio]>=2.0.35,<3
Maintainer: Konsti Maintainer: Konsti
Maintainer-email: Konsti <konstin@mailbox.org>
Project-URL: Homepage, https://github.com/astral-sh/uv Project-URL: Homepage, https://github.com/astral-sh/uv
Project-URL: Repository, https://astral.sh Project-URL: Repository, https://astral.sh
Provides-Extra: mysql Provides-Extra: mysql