Ë
    ©Õ°j³  ã                  ó¦   — d dl mZ d dlZd dlmZmZ ddlmZmZ g d¢Z	dd„Z
 ej                  d«      Z ed	e«      Z	  G d
„ de«      Z	 	 	 	 dd„Zy)é    )ÚannotationsN)ÚNewTypeÚcasté   )Ú
EXCEPTIONSÚLICENSES)ÚInvalidLicenseExpressionÚNormalizedLicenseExpressionÚcanonicalize_license_expressionc                 ó   — t         S )N)Ú__all__© ó    úQ/var/www/mission/venv/lib/python3.12/site-packages/packaging/licenses/__init__.pyÚ__dir__r   /   s   € Ü€Nr   z^[A-Za-z0-9.-]+$r
   c                  ó   — e Zd ZdZy)r	   a1  Raised when a license-expression string is invalid

    >>> from packaging.licenses import canonicalize_license_expression
    >>> canonicalize_license_expression("invalid")
    Traceback (most recent call last):
        ...
    packaging.licenses.InvalidLicenseExpression: Unknown license: 'invalid'
    N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   r   r	   r	   <   s   „ òr   r	   c           	     ó&  — | sd| ›�}t        |«      ‚| j                  dd«      j                  dd«      }d}|j                  «       D �ci c]O  }|j                  «       j	                  |j                  «       «      r |j                  «       d|t        |«      d z   “ŒQ }}|j                  «       }|j                  «       }g }|D ]m  }|dvr|j                  d	«       Œ|d
k(  r|j                  d«       Œ0|dk(  r	|r|d   dvs|dk(  r|r|d   dk(  rd| ›�}t        |«      ‚|j                  |«       Œo dj                  |«      }		 t        |	dd«       g }
d}t        |«      D �]N  \  }}|dv rT|d
k(  r-|r|dz   t        |«      k(  s
||dz      dv rd| ›�}t        |«      ‚|
j                  |j                  «       «       d}Œ_|
r>|
d   dk(  r6|t        vrd|›�}t        |«      ‚|
j                  t        |   d   «       d}ŒŸ|j                  d«      r|dd }d}n|}d}|j	                  d«      rJ|t        d«      d }|st        j                  |«      sd|›�}t        |«      ‚|
j                  ||   «       n6|t         vrd|›�}t        |«      ‚|
j                  t         |   d   |z   «       d}�ŒQ dj                  |
«      }t#        d|j                  dd«      j                  dd«      «      S c c}w # t        $ r d| ›�}t        |«      d‚w xY w)a˜  
    This function takes a valid License-Expression, and returns the normalized
    form of it.

    The return type is typed as :class:`NormalizedLicenseExpression`. This
    allows type checkers to help require that a string has passed through this
    function before use.

    :param str raw_license_expression: The License-Expression to canonicalize.
    :raises InvalidLicenseExpression: If the License-Expression is invalid due to an
        invalid/unknown license identifier or invalid syntax.

    .. doctest::

        >>> from packaging.licenses import canonicalize_license_expression
        >>> canonicalize_license_expression("mit")
        'MIT'
        >>> canonicalize_license_expression("mit and (apache-2.0 or bsd-2-clause)")
        'MIT AND (Apache-2.0 OR BSD-2-Clause)'
        >>> canonicalize_license_expression("(mit")
        Traceback (most recent call last):
          ...
        InvalidLicenseExpression: Invalid license expression: '(mit'
        >>> canonicalize_license_expression("Use-it-after-midnight")
        Traceback (most recent call last):
          ...
        InvalidLicenseExpression: Unknown license: 'Use-it-after-midnight'
    zInvalid license expression: ú(z ( ú)z ) zLicenseRef-N>   ÚorÚandÚwithr   r   ÚFalser   r   éÿÿÿÿ>   r   r   r   ú Ú ÚevalFr   ÚWITHzUnknown license exception: Úidú+zlicenseref-zInvalid licenseref: zUnknown license: Tr
   z( z ))r	   ÚreplaceÚsplitÚlowerÚ
startswithÚlenÚappendÚjoinÚcompileÚSyntaxErrorÚ	enumerateÚupperr   ÚendswithÚlicense_ref_allowedÚmatchr   r   )Úraw_license_expressionÚmessageÚlicense_expressionÚlicenseref_prefixÚrefÚlicense_refsÚtokensÚpython_tokensÚtokenÚpython_expressionÚnormalized_tokensÚlast_license_startÚindexÚfinal_tokenÚsuffixÚlicense_ref_idÚnormalized_expressions                    r   r   r   G   sš  € ñ> "Ø0Ð1GÐ0JÐKˆÜ& wÓ/Ð/ð 0×7Ñ7¸¸UÓC×KÑKÈCÐQVÓWÐØ%Ðð &×+Ñ+Ó-öàØ�9‰9‹;×!Ñ!Ð"3×"9Ñ"9Ó";Ô<ð 	�	‰	‹�] S¬Ð->Ó)?Ð)AÐ%BÑBÑBð€Lð ð ,×1Ñ1Ó3Ðà×%Ñ%Ó'€Fð €MØò (ˆØÐ7Ñ7Ø× Ñ  Õ)Ø�fŠ_Ø× Ñ  Õ&à�SŠLÙØ˜bÑ!Ð);Ñ;Ø�sŠl™}°¸rÑ1BÀcÒ1IØ4Ð5KÐ4NÐOˆGÜ*¨7Ó3Ð3à× Ñ  Õ'ð(ð Ÿ™ Ó/Ðð:ÜÐ! 2 vÔ.ð ÐØÐÜ! &Ó)ó '&‰ˆˆuØÐ3Ñ3Ø˜ŠÙ&Ø˜1‘9¤ F£Ò+Ø˜% !™)Ñ$Ð(GÑGà8Ð9OÐ8RÐS�Ü.¨wÓ7Ð7Ø×$Ñ$ U§[¡[£]Ô3Ø!&ÐØáÐ!2°2Ñ!6¸&Ò!@ØœJÑ&Ø7¸°yÐA�Ü.¨wÓ7Ð7à×$Ñ$¤Z°Ñ%6°tÑ%<Ô=Ø!&Ñà�~‰~˜cÔ"Ø# C R˜j�Ø‘à#�Ø�à×%Ñ% mÔ4Ø!,¬S°Ó-?Ð-AÐ!B�ÙÔ!4×!:Ñ!:¸>Ô!JØ 4°U°IÐ>�GÜ2°7Ó;Ð;Ø!×(Ñ(¨°kÑ)BÕCà¤hÑ.Ø 1°+°ÐA�GÜ2°7Ó;Ð;Ø!×(Ñ(¬°+Ñ)>¸tÑ)DÀvÑ)MÔNØ!%ÒðO'&ðR  ŸH™HÐ%6Ó7ÐäØ%Ø×%Ñ% d¨CÓ0×8Ñ8¸¸sÓCóð ùòkøôF ò :Ø0Ð1GÐ0JÐKˆÜ& wÓ/°TÐ9ð:ús   Á	AK0ÅK5 Ë5L)Úreturnz	list[str])r3   ÚstrrD   r
   )Ú
__future__r   ÚreÚtypingr   r   Ú_spdxr   r   r   r   r,   r1   rE   r
   Ú
ValueErrorr	   r   r   r   r   ú<module>rK      sk   ðõ@ #ã 	ß  ç 'ò€óð !�b—j‘jÐ!3Ó4Ð á%Ð&CÀSÓIÐ ðô˜zô ðØðà ôr   