
    wi                        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	 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_expressionz^[A-Za-z0-9.-]*$r
   c                      e Zd ZdZy)r	   zRaised when a license-expression string is invalid

    >>> canonicalize_license_expression("invalid")
    Traceback (most recent call last):
        ...
    packaging.licenses.InvalidLicenseExpression: Invalid license expression: 'invalid'
    N)__name__
__module____qualname____doc__     Z/var/www/feuerwehr-webapp/venv/lib/python3.12/site-packages/packaging/licenses/__init__.pyr	   r	   2   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 ]  }|dv r |
j                  |j                                (|
r<|
d   dk(  r4|t        vrd|}t        |      |
j                  t        |   d          f|j                  d      r|d d }d}n|}d}|j	                  d      r=t        j                  |      sd|}t        |      |
j                  ||   |z          |t        vrd|}t        |      |
j                  t        |   d   |z          	 dj                  |
      }t!        d|j                  dd      j                  dd            S c c}w # t        $ r d| }t        |      d w xY w)NzInvalid license expression: (z ( )z ) zLicenseRef->   orandwithr   r   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   <   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.  O33$$U[[]3!22!6&!@J&7yA.w77$$Z%6t%<=~~c"#CRj#%%m4*00= 4[ODG27;;!((k)BV)KLh. 1+AG27;;!((+)>t)Dv)MN9O<  HH%67%%%dC088sC SF  :01G0JK&w/T9:s   	AJJ" "J=)r/   strreturnr
   )
__future__r   retypingr   r   _spdxr   r   __all__r)   r-   r=   r
   
ValueErrorr	   r   r   r   r   <module>rE      sa   @ # 	   ' !bjj!34 %&CSI z WW Wr   