From 9f95fae2a7459fb1887085426fe1bf5cacd792ff Mon Sep 17 00:00:00 2001 From: Anderson Bravalheri Date: Wed, 8 Mar 2023 18:58:25 +0000 Subject: Add safe_extra to _normalization --- setuptools/_normalization.py | 11 +++++++++++ 1 file changed, 11 insertions(+) (limited to 'setuptools') diff --git a/setuptools/_normalization.py b/setuptools/_normalization.py index 31899f7a..3e94e662 100644 --- a/setuptools/_normalization.py +++ b/setuptools/_normalization.py @@ -14,6 +14,7 @@ _Path = Union[str, Path] # https://packaging.python.org/en/latest/specifications/core-metadata/#name _VALID_NAME = re.compile(r"^([A-Z0-9]|[A-Z0-9][A-Z0-9._-]*[A-Z0-9])$", re.I) _UNSAFE_NAME_CHARS = re.compile(r"[^A-Z0-9.]+", re.I) +_NON_ALPHANUMERIC = re.compile(r"[^A-Z0-9]+", re.I) def safe_identifier(name: str) -> str: @@ -92,6 +93,16 @@ def best_effort_version(version: str) -> str: return safe_name(v) +def safe_extra(extra: str) -> str: + """Normalize extra name according to PEP 685 + >>> safe_extra("_FrIeNdLy-._.-bArD") + 'friendly-bard' + >>> safe_extra("FrIeNdLy-._.-bArD__._-") + 'friendly-bard' + """ + return _NON_ALPHANUMERIC.sub("-", extra).strip("-").lower() + + def filename_component(value: str) -> str: """Normalize each component of a filename (e.g. distribution/version part of wheel) Note: ``value`` needs to be already normalized. -- cgit v1.2.1