
    niz                        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j        dej                  Z ej        d	ej                  Zd
e
de
fdZde
de
fdZde
de
fdZde
de
fdZde
de
fdZde
de
fdZde
de
f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                 ^    t          j        dd|           }|                                sJ |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)r   safes     \/root/projects/openclaw-proxy/venv/lib/python3.11/site-packages/setuptools/_normalization.pysafe_identifierr      s4     6-d++DK    	componentc                 8    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   s    r   	safe_namer      s     !!#y111r   versionc                 J   |                      dd          }	 t          t          j                            |                    S # t          j        j        $ rJ t                              d|          }t          t          j                            |                    cY S w xY w)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   )replacestrr   r   VersionInvalidVersionr   r   )r   vattempts      r   safe_versionr"   *   s     	S!!A79$,,Q//000+ 7 7 7$((a009$,,W55666667s   +A AB"!B"c                     	 t          |           S # t          j        j        $ rH t	          j        d| dd| ddd           |                     dd          }t          |          cY S w xY w)	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  	      )see_urldue_dater   )r"   r   r   r   r   emitr   r   )r   r    s     r   best_effort_versionr)   A   s    G$$$+   $),,,,   8"	
 	
 	
 	
 OOC%%||s    AA-,A-valuec                 T    |                      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*   s    r   filename_componentr.   _   s&     ==c""((---r   c                 :    t          t          |                     S )zBLike ``safe_name`` but can be used as filename component for wheel)r.   r   r-   s    r   
safer_namer0   h   s     i..///r   c                 :    t          t          |                     S )zLLike ``best_effort_version`` but can be used as filename component for wheel)r.   r)   r-   s    r   safer_best_effort_versionr2   n   s     1%88999r   )__doc__r   pathlibr   typingr   externr   warningsr   r   _PathcompileI_VALID_NAMEr   r   r   r"   r)   r.   r0   r2    r   r   <module>r=      s    
			                   2 2 2 2 2 2c4i bjErtLLRZ55 	# 	# 	 	 	 	2 2 2 2 2 27# 7# 7 7 7 7.     <.c .c . . . .0c 0c 0 0 0 0:S :S : : : : : :r   