__ __ __ __ _____ _ _ _____ _ _ _ | \/ | \ \ / / | __ \ (_) | | / ____| | | | | | \ / |_ __\ V / | |__) | __ ___ ____ _| |_ ___ | (___ | |__ ___| | | | |\/| | '__|> < | ___/ '__| \ \ / / _` | __/ _ \ \___ \| '_ \ / _ \ | | | | | | |_ / . \ | | | | | |\ V / (_| | || __/ ____) | | | | __/ | | |_| |_|_(_)_/ \_\ |_| |_| |_| \_/ \__,_|\__\___| |_____/|_| |_|\___V 2.1 if you need WebShell for Seo everyday contact me on Telegram Telegram Address : @jackleetFor_More_Tools:
"""
Helpers for normalization as expected in wheel/sdist/module file names
and core metadata
"""
import re
from pathlib import Path
from typing import Union
from .extern import packaging
from .warnings import SetuptoolsDeprecationWarning
_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)
def safe_identifier(name: str) -> str:
"""Make a string safe to be used as Python identifier.
>>> safe_identifier("12abc")
'_12abc'
>>> safe_identifier("__editable__.myns.pkg-78.9.3_local")
'__editable___myns_pkg_78_9_3_local'
"""
safe = re.sub(r'\W|^(?=\d)', '_', name)
assert safe.isidentifier()
return safe
def safe_name(component: str) -> str:
"""Escape a component used as a project name according to Core Metadata.
>>> safe_name("hello world")
'hello-world'
>>> safe_name("hello?world")
'hello-world'
"""
# See pkg_resources.safe_name
return _UNSAFE_NAME_CHARS.sub("-", component)
def safe_version(version: str) -> str:
"""Convert an arbitrary string into a valid version string.
>>> safe_version("1988 12 25")
'1988.12.25'
>>> safe_version("v0.2.1")
'0.2.1'
>>> safe_version("v0.2?beta")
'0.2b0'
>>> safe_version("v0.2 beta")
'0.2b0'
>>> safe_version("ubuntu lts")
Traceback (most recent call last):
...
setuptools.extern.packaging.version.InvalidVersion: Invalid version: 'ubuntu.lts'
"""
v = version.replace(' ', '.')
try:
return str(packaging.version.Version(v))
except packaging.version.InvalidVersion:
attempt = _UNSAFE_NAME_CHARS.sub("-", v)
return str(packaging.version.Version(attempt))
def best_effort_version(version: str) -> str:
"""Convert an arbitrary string into a version-like string.
>>> best_effort_version("v0.2 beta")
'0.2b0'
>>> import warnings
>>> warnings.simplefilter("ignore", category=SetuptoolsDeprecationWarning)
>>> best_effort_version("ubuntu lts")
'ubuntu.lts'
"""
# See pkg_resources.safe_version
try:
return safe_version(version)
except packaging.version.InvalidVersion:
SetuptoolsDeprecationWarning.emit(
f"Invalid version: {version!r}.",
f"""
Version {version!r} is not valid according to PEP 440.
Please make sure to specify a valid version for your package.
Also note that future releases of setuptools may halt the build process
if an invalid version is given.
""",
see_url="https://peps.python.org/pep-0440/",
due_date=(2023, 9, 26), # See setuptools/dist _validate_version
)
v = version.replace(' ', '.')
return safe_name(v)
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.
>>> filename_component("my-pkg")
'my_pkg'
"""
return value.replace("-", "_").strip("_")
def safer_name(value: str) -> str:
"""Like ``safe_name`` but can be used as filename component for wheel"""
# See bdist_wheel.safer_name
return filename_component(safe_name(value))
def safer_best_effort_version(value: str) -> str:
"""Like ``best_effort_version`` but can be used as filename component for wheel"""
# See bdist_wheel.safer_verion
# TODO: Replace with only safe_version in the future (no need for best effort)
return filename_component(best_effort_version(value))
| Name | Type | Size | Permission | Actions |
|---|---|---|---|---|
| __pycache__ | Folder | 0755 |
|
|
| _distutils | Folder | 0755 |
|
|
| _vendor | Folder | 0755 |
|
|
| command | Folder | 0755 |
|
|
| config | Folder | 0755 |
|
|
| extern | Folder | 0755 |
|
|
| __init__.py | File | 9.04 KB | 0644 |
|
| _entry_points.py | File | 2.18 KB | 0644 |
|
| _imp.py | File | 2.38 KB | 0644 |
|
| _importlib.py | File | 1.43 KB | 0644 |
|
| _itertools.py | File | 675 B | 0644 |
|
| _normalization.py | File | 3.62 KB | 0644 |
|
| _path.py | File | 1.03 KB | 0644 |
|
| _reqs.py | File | 882 B | 0644 |
|
| archive_util.py | File | 7.16 KB | 0644 |
|
| build_meta.py | File | 19.62 KB | 0644 |
|
| dep_util.py | File | 936 B | 0644 |
|
| depends.py | File | 5.4 KB | 0644 |
|
| discovery.py | File | 20.65 KB | 0644 |
|
| dist.py | File | 45.74 KB | 0644 |
|
| errors.py | File | 2.41 KB | 0644 |
|
| extension.py | File | 5.46 KB | 0644 |
|
| glob.py | File | 4.75 KB | 0644 |
|
| installer.py | File | 4.87 KB | 0644 |
|
| launch.py | File | 812 B | 0644 |
|
| logging.py | File | 1.21 KB | 0644 |
|
| monkey.py | File | 4.58 KB | 0644 |
|
| msvc.py | File | 46.38 KB | 0644 |
|
| namespaces.py | File | 2.97 KB | 0644 |
|
| package_index.py | File | 38.96 KB | 0644 |
|
| py312compat.py | File | 330 B | 0644 |
|
| sandbox.py | File | 14.01 KB | 0644 |
|
| script (dev).tmpl | File | 218 B | 0644 |
|
| script.tmpl | File | 138 B | 0644 |
|
| unicode_utils.py | File | 941 B | 0644 |
|
| version.py | File | 161 B | 0644 |
|
| warnings.py | File | 3.61 KB | 0644 |
|
| wheel.py | File | 8.43 KB | 0644 |
|
| windows_support.py | File | 719 B | 0644 |
|