§
    WŠtj¦  ã                   óª  — d Z ddlZddlm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ed	efd„Z	 ddlmZ dS # e$ r eseZY dS Y dS w xY w)zZ
Helpers for normalization as expected in wheel/sdist/module file names
and core metadata
é    N)ÚTYPE_CHECKINGz)^([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 )zÍ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'
    z
\W|^(?=\d)Ú_)ÚreÚsubÚisidentifier)r   Úsafes     úW/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/setuptools/_normalization.pyÚsafe_identifierr      s4   € õ Œ6�-  dÑ+Ô+€DØ×ÒÑÔÐÐÐØ€Kó    Ú	componentc                 ó8   — t                                d| ¦  «        S )zãEscape 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ð7øøøs   ˜+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+   E   sì   € ð 4Ý˜GÑ$Ô$Ð$øÝÔÔ+ð 4ð 4ð 4Ø�OŠO˜C Ñ%Ô%ˆÝ ×'Ò'¨Ñ*Ô*ˆØð 	Ø˜”=ˆDØ•S˜‘Y”Y�[�[”>ˆDˆDàˆDØˆDÝ%×)Ò)¨#¨tÑ4Ô4×:Ò:¸3Ñ?Ô?ˆ	Ø(˜YÐ(Ð(×.Ò.¨sÑ3Ô3ˆÝ˜tÐ2Ð2¨5Ð2Ð2Ñ3Ô3Ð3Ð3Ð3ð4øøøs   ‚ ‘CCÃCÚextrac                 ó‚   — t                                d| ¦  «                             d¦  «                             ¦   «         S )z¬Normalize 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/   e   s4   € õ × Ò   eÑ,Ô,×2Ò2°3Ñ7Ô7×=Ò=Ñ?Ô?Ð?r   Úvaluec                 óT   — |                       dd¦  «                             d¦  «        S )z»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'
    r   r   )r   r&   ©r0   s    r   Úfilename_componentr3   o   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   r2   s    r   Úfilename_component_brokenr5   x   s   € ð �=Š=˜˜cÑ"Ô"Ð"r   c                 ó”   — t          j        ddt          | ¦  «        ¦  «                             ¦   «                              dd¦  «        S )zBLike ``safe_name`` but can be used as filename component for wheelz[-_.]+r   r   )r   r	   r   r.   r   r2   s    r   Ú
safer_namer7   ‡   s?   € õ
 	Ü	ˆY˜�Y uÑ-Ô-ñ	/ô 	/ç	Š‰Œç	Š��cÑ	Ô	ðr   c                 ó:   — t          t          | ¦  «        ¦  «        S )zLLike ``best_effort_version`` but can be used as filename component for wheel)r3   r+   r2   s    r   Úsafer_best_effort_versionr9   ”   s   € õ Õ1°%Ñ8Ô8Ñ9Ô9Ð9r   Ú
expressionc                 ó    — t          d¦  «        ‚)a  
    Defer import error to affect only users that actually use it
    https://github.com/pypa/setuptools/issues/4894
    >>> _missing_canonicalize_license_expression("a OR b")
    Traceback (most recent call last):
    ...
    ImportError: ...Cannot import `packaging.licenses`...
    z´Cannot import `packaging.licenses`.
        Setuptools>=77.0.0 requires "packaging>=24.2" to work properly.
        Please make sure you have a suitable version installed.
        )ÚImportError)r:   s    r   Ú(_missing_canonicalize_license_expressionr=   ›   s   € õ ð	ñô ð r   )Úcanonicalize_license_expression)Ú__doc__r   Útypingr   r   ÚcompileÚ
IGNORECASEÚ_VALID_NAMEr   r%   r"   r   r   r   r   r+   r/   r3   r5   r7   r9   r=   Úpackaging.licensesr>   Ú _canonicalize_license_expressionr<   © r   r   ú<module>rG      sl  ððð ð
 
€	€	€	Ø  Ð  Ð  Ð  Ð  Ð  à Ð Ð Ð ð ˆbŒjÐEÀrÄ}ÑUÔU€Ø�R”ZÐ 0°"´-Ñ@Ô@Ð Ø�B”J˜}¨b¬mÑ<Ô<Ð Ø�2”:Ø3°R´]ñô Ð ð
	˜#ð 	 #ð 	ð 	ð 	ð 	ð	2˜ð 	2 ð 	2ð 	2ð 	2ð 	2ð7˜#ð 7 #ð 7ð 7ð 7ð 7ð24 ð 4¨ð 4ð 4ð 4ð 4ð@@�cð @˜cð @ð @ð @ð @ð.˜cð . cð .ð .ð .ð .ð# Sð #¨Sð #ð #ð #ð #ð
�cð 
˜cð 
ð 
ð 
ð 
ð: Sð :¨Sð :ð :ð :ð :ð¸ð Àð ð ð ð ð$Tðð ð ð ð ð ð ð øð ð Tð Tð TØð Tà+SÐ(Ð(Ð(Ð(ðTð Tð TðTøøøs   Â:C Ã	CÃC