summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAnderson Bravalheri <andersonbravalheri@gmail.com>2023-03-08 18:58:25 +0000
committerAnderson Bravalheri <andersonbravalheri@gmail.com>2023-05-03 14:09:16 +0100
commit9f95fae2a7459fb1887085426fe1bf5cacd792ff (patch)
treebfad0869272927515326663041985c331fce8cbb
parent933db3395074ded71336ad813160ede2ec8fb437 (diff)
downloadpython-setuptools-git-9f95fae2a7459fb1887085426fe1bf5cacd792ff.tar.gz
Add safe_extra to _normalization
-rw-r--r--setuptools/_normalization.py11
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.