
    #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__     _/var/www/oz-panel.ru/ozpay-pub/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   > "01G0JK&w// 077UCKKCQVW% &++-99;!!"3"9"9";< 			]S->)?)A%BBBL  ,113%%'F M (77  )f_  &SLb!);;sl}r1Bc1I45K4NOG*733  '( /:!2v. !&) '&u33&19F+%!)$(GG89O8RS.w77$$U[[]3!&!22!6&!@J&7yA.w77$$Z%6t%<=!&~~c"#CRj#%%m4!,S-?-A!B!4!:!:>!J 4UI>G27;;!((k)BCh. 1+AG27;;!((+)>t)Dv)MN!%O'&R  HH%67%%%dC088sC kF  :01G0J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   @ # 	   ' !bjj!34 %&CSI z  r   