
    ϶vg                     Z   d Z ddlZddlZ ej        dej                  Z ej        dej                  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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
    Nz)^([A-Z0-9]|[A-Z0-9][A-Z0-9._-]*[A-Z0-9])$z[^A-Z0-9._-]+z
[^A-Z0-9]+z,^v?(?P<safe>(?:[0-9]+!)?[0-9]+(?:\.[0-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     V/var/www/pixelcanvas.ch/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'
    >>> 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.
    Can still raise an ``InvalidVersion`` exception.
    To avoid exceptions use ``best_effort_version``.
    >>> 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):
    ...
    packaging.version.InvalidVersion: Invalid version: 'ubuntu.lts'
     .r   )replacestr	packagingr   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        $ r |                     dd          }t
                              |          }|r |d         }|t          |          d         }nd}| }t          	                    d|          
                    d          }d| 
                    d          }t          | d|           cY S w xY w)a  Convert an arbitrary string into a version-like string.
    Fallback when ``safe_version`` is not safe enough.
    >>> best_effort_version("v0.2 beta")
    '0.2b0'
    >>> best_effort_version("ubuntu lts")
    '0.dev0+sanitized.ubuntu.lts'
    >>> best_effort_version("0.23ubuntu1")
    '0.23.dev0+sanitized.ubuntu1'
    >>> best_effort_version("0.23-")
    '0.23.dev0+sanitized'
    >>> best_effort_version("0.-_")
    '0.dev0+sanitized'
    >>> best_effort_version("42.+?1")
    '42.dev0+sanitized.1'
    r   r   r
   N0z
sanitized.z.dev0+)r   r   r   r   r   _PEP440_FALLBACKsearchlen_NON_ALPHANUMERICr   strip)r   r   matchr
   rest	safe_restlocals          r   best_effort_versionr*   C   s    "4G$$$+ 4 4 4OOC%% ''** 	=DSYY[[>DDDD%))#t44::3??	(Y((..s33t22522333334s    CCCextrac                     t                               d|                               d                                          S )zNormalize extra name according to PEP 685
    >>> safe_extra("_FrIeNdLy-._.-bArD")
    'friendly-bard'
    >>> safe_extra("FrIeNdLy-._.-bArD__._-")
    'friendly-bard'
    r   )r$   r   r%   lower)r+   s    r   
safe_extrar.   d   s4       e,,22377==???r   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   r%   r/   s    r   filename_componentr2   n   s&     ==c""((---r   c                 .    |                      dd          S )a  
    Produce the incorrect filename component for compatibility.

    See pypa/setuptools#4167 for detailed analysis.

    TODO: replace this with filename_component after pip 24 is
    nearly-ubiquitous.

    >>> filename_component_broken('foo_bar-baz')
    'foo-bar-baz'
    r   r   )r   r1   s    r   filename_component_brokenr4   w   s     ==c"""r   c                 :    t          t          |                     S )zBLike ``safe_name`` but can be used as filename component for wheel)r2   r   r1   s    r   
safer_namer6      s     i..///r   c                 :    t          t          |                     S )zLLike ``best_effort_version`` but can be used as filename component for wheel)r2   r*   r1   s    r   safer_best_effort_versionr8      s     1%88999r   )__doc__r   r   compileI_VALID_NAMEr   r$   r!   r   r   r   r   r*   r.   r2   r4   r6   r8    r   r   <module>r>      s   
 
			     bjErtLLRZ 0"$77 BJ}bd33 2:MrtTT 	# 	# 	 	 	 	
2 
2 
2 
2 
2 
27# 7# 7 7 7 724 4 4 4 4 4B@c @c @ @ @ @.c .c . . . .#S #S # # # #0c 0c 0 0 0 0:S :S : : : : : :r   