diff options
author | Anderson Bravalheri <andersonbravalheri@gmail.com> | 2023-03-08 18:58:25 +0000 |
---|---|---|
committer | Anderson Bravalheri <andersonbravalheri@gmail.com> | 2023-05-03 14:09:16 +0100 |
commit | 9f95fae2a7459fb1887085426fe1bf5cacd792ff (patch) | |
tree | bfad0869272927515326663041985c331fce8cbb | |
parent | 933db3395074ded71336ad813160ede2ec8fb437 (diff) | |
download | python-setuptools-git-9f95fae2a7459fb1887085426fe1bf5cacd792ff.tar.gz |
Add safe_extra to _normalization
-rw-r--r-- | setuptools/_normalization.py | 11 |
1 files changed, 11 insertions, 0 deletions
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. |