
    Xi}                        S SK Jr  S SKrS SKJrJr  SSKJrJr  / SQr	SS jr
\R                  " S5      r\" S	\5      r  " S
 S\5      r    SS jrg)    )annotationsN)NewTypecast   )
EXCEPTIONSLICENSES)InvalidLicenseExpressionNormalizedLicenseExpressioncanonicalize_license_expressionc                     [         $ )N)__all__     N/var/www/html/venv/lib/python3.13/site-packages/packaging/licenses/__init__.py__dir__r   /   s    Nr   z^[A-Za-z0-9.-]*$r
   c                      \ rS rSrSrSrg)r	   <   a$  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: Invalid license expression: 'invalid'
r   N)__name__
__module____qualname____firstlineno____doc____static_attributes__r   r   r   r	   r	   <   s    r   r	   c           	        U (       d  SU < 3n[        U5      eU R                  SS5      R                  SS5      nSnUR                  5        Vs0 s HW  nUR                  5       R	                  UR                  5       5      (       d  M7  UR                  5       SU[        U5      S -   _MY     nnUR                  5       nUR                  5       n/ nU H  nUS;  a  UR                  S	5        M  US
:X  a  UR                  S5        M5  US:X  a  U(       a	  US   S;  d  US:X  a!  U(       a  US   S:X  a  SU < 3n[        U5      eUR                  U5        M     SR                  U5      n	 [        U	SS5        / n
U GH'  nUS;   a!  U
R                  UR                  5       5        M+  U
(       aA  U
S   S:X  a8  U[        ;  a  SU< 3n[        U5      eU
R                  [        U   S   5        Ms  UR                  S5      (       a  USS nSnOUnSnUR	                  S5      (       aC  [        R                  U5      (       d  SU< 3n[        U5      eU
R                  X[   U-   5        M  U[        ;  a  SU< 3n[        U5      eU
R                  [        U   S   U-   5        GM*     SR                  U
5      n[!        SUR                  SS5      R                  SS5      5      $ s  snf ! [         a    SU < 3n[        U5      Sef = f)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>   r   r   orandwithFalser   r   >   r   r   r     evalWITHzUnknown license exception: id+zlicenseref-zInvalid licenseref: zUnknown license: r
   z( z ))r	   replacesplitlower
startswithlenappendjoincompileSyntaxError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final_tokensuffixnormalized_expressions                 r   r   r   G   s%   > "01G0JK&w// 077UCKKCQVW% &++--C99;!!"3"9"9";< 	C		]S->)?)A%BBB-   ,113%%'F M77  )f_  &SLb!);;sl}r1Bc1I45K4NOG*733  '  /:!2v. 33$$U[[]3!22!6&!@J&7yA.w77$$Z%6t%<=~~c""#CRj#%%m44*00== 4[ODG27;;!(()BV)KLh. 1+AG27;;!((+)>t)Dv)MN9 <  HH%67%%%dC088sC SF  :01G0JK&w/T9:s   6K&	$K&,K+ +L)returnz	list[str])r5   strrC   r
   )
__future__r   retypingr   r   _spdxr   r   r   r   r/   r3   rD   r
   
ValueErrorr	   r   r   r   r   <module>rJ      si   @ # 	   ' jj!34 %&CSI z ss sr   