B
    dz                 @   s   d Z ddlZddlmZ ddlmZ ddlmZ ddlm	Z	 ee
ef ZedejZed	ejZe
e
d
ddZe
e
dddZe
e
dddZe
e
dddZe
e
dddZe
e
dddZe
e
dddZdS )zZ
Helpers for normalization as expected in wheel/sdist/module file names
and core metadata
    N)Path)Union   )	packaging)SetuptoolsDeprecationWarningz)^([A-Z0-9]|[A-Z0-9][A-Z0-9._-]*[A-Z0-9])$z[^A-Z0-9.]+)namereturnc             C   s   t dd| }| st|S )zMake 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'
    z
\W|^(?=\d)_)resubisidentifierAssertionError)r   safe r   K/var/www/html/venv/lib/python3.7/site-packages/setuptools/_normalization.pysafe_identifier   s    r   )	componentr   c             C   s   t d| S )zEscape a component used as a project name according to Core Metadata.
    >>> safe_name("hello world")
    'hello-world'
    >>> safe_name("hello?world")
    'hello-world'
    -)_UNSAFE_NAME_CHARSr   )r   r   r   r   	safe_name   s    r   )versionr   c             C   sR   |  dd}yttj|S  tjjk
rL   td|}ttj|S X dS )a  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'
     .r   N)replacestrr   r   VersionInvalidVersionr   r   )r   vattemptr   r   r   safe_version*   s    r   c          	   C   sX   yt | S  tjjk
rR   tjd| dd| dddd | dd}t|S X d	S )
a  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'
    zInvalid version: r   z
            Version z 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.
            z!https://peps.python.org/pep-0440/)i  	      )Zsee_urlZdue_dater   N)r   r   r   r   r   emitr   r   )r   r   r   r   r   best_effort_versionA   s    

r#   )valuer   c             C   s   |  dddS )zNormalize 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'
    r   r	   )r   strip)r$   r   r   r   filename_component_   s    r&   c             C   s   t t| S )zBLike ``safe_name`` but can be used as filename component for wheel)r&   r   )r$   r   r   r   
safer_nameh   s    r'   c             C   s   t t| S )zLLike ``best_effort_version`` but can be used as filename component for wheel)r&   r#   )r$   r   r   r   safer_best_effort_versionn   s    r(   )__doc__r
   pathlibr   typingr   Zexternr   warningsr   r   Z_PathcompileIZ_VALID_NAMEr   r   r   r   r#   r&   r'   r(   r   r   r   r   <module>   s   	