a
    XŠÝgS  ã                   @  st   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 
d¡ZedeƒZG dd	„ d	eƒZd
ddœdd„ZdS )é    )ÚannotationsN)ÚNewTypeÚcast)Ú
EXCEPTIONSÚLICENSES)ÚNormalizedLicenseExpressionÚInvalidLicenseExpressionÚcanonicalize_license_expressionz^[A-Za-z0-9.-]*$r   c                   @  s   e Zd ZdZdS )r   zõRaised 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__© r   r   úi/var/www/html/cobodadashboardai.evdpl.com/venv/lib/python3.9/site-packages/packaging/licenses/__init__.pyr   2   s   r   Ústr)Úraw_license_expressionÚreturnc                   s>  | sd| ›}t |ƒ‚|  dd¡ dd¡}d‰ ‡ fdd„| ¡ D ƒ}| ¡ }| ¡ }g }|D ]b}|d	vrt| d
¡ q\|dkrˆ| d¡ q\|dkr´|r´|d dvr´d| ›}t |ƒ‚q\| |¡ q\d |¡}zt|tƒ tƒ ƒ}W n t	yô   d}Y n0 |durd| ›}t |ƒd ‚g }	|D ]ü}|d	v r<|	 | 
¡ ¡ q|	r€|	d dkr€|tvrld|›}t |ƒ‚|	 t| d ¡ n–| d¡rž|d d… }
d}n|}
d}|
 d¡rät |
¡sÐd|
›}t |ƒ‚|	 ||
 | ¡ n2|
tvr d|
›}t |ƒ‚|	 t|
 d | ¡ qd |	¡}tt| dd¡ dd¡ƒS )NzInvalid license expression: ú(z ( ú)z ) úLicenseRef-c                   s8   i | ]0}|  ¡  ˆ   ¡ ¡r|  ¡ d |tˆ ƒd…  “qS )r   N)ÚlowerÚ
startswithÚlen)Ú.0Úref©Zlicenseref_prefixr   r   Ú
<dictcomp>G   s   þz3canonicalize_license_expression.<locals>.<dictcomp>>   r   Úwithr   ÚandÚorÚFalser   r   éÿÿÿÿ>   r   r   ú TFZWITHzUnknown license exception: Úidú+Ú zlicenseref-zInvalid licenseref: zUnknown license: z( z ))r   ÚreplaceÚsplitr   ÚappendÚjoinÚevalÚglobalsÚlocalsÚ	ExceptionÚupperr   Úendswithr   Úlicense_ref_allowedÚmatchr   r   r   )r   ÚmessageZlicense_expressionZlicense_refsÚtokensZpython_tokensÚtokenZpython_expressionÚinvalidZnormalized_tokensZfinal_tokenÚsuffixZnormalized_expressionr   r   r   r	   <   sr    

þ













þr	   )Ú
__future__r   ÚreÚtypingr   r   Zpackaging.licenses._spdxr   r   Ú__all__Úcompiler0   r   r   Ú
ValueErrorr   r	   r   r   r   r   Ú<module>    s   


