o
    sÇhS  ã                   @  sn   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„ZdS )é    )ÚannotationsN)ÚNewTypeÚcast)Ú
EXCEPTIONSÚLICENSES)ÚInvalidLicenseExpressionÚNormalizedLicenseExpressionÚ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   úo/var/www/html/construction_image-detection-poc/venv/lib/python3.10/site-packages/packaging/licenses/__init__.pyr   2   s    r   Úraw_license_expressionÚstrÚreturnc                   s&  | sd| ›}t |ƒ‚|  dd¡ dd¡}d‰ ‡ fdd„| ¡ D ƒ}| ¡ }| ¡ }g }|D ]0}|d	vr:| d
¡ q.|dkrD| d¡ q.|dkrY|rY|d dvrYd| ›}t |ƒ‚| |¡ q.d |¡}z
t|tƒ tƒ ƒ}W n t	yy   d}Y nw |durˆd| ›}t |ƒd ‚g }	|D ]t}|d	v rš|	 | 
¡ ¡ qŒ|	r¹|	d dkr¹|tvr¯d|›}t |ƒ‚|	 t| d ¡ qŒ| d¡rÇ|d d… }
d}n|}
d}|
 d¡rèt |
¡sÞd|
›}t |ƒ‚|	 ||
 | ¡ qŒ|
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 | ]}|  ¡  ˆ   ¡ ¡r|  ¡ d |tˆ ƒd…  “qS )r   N)ÚlowerÚ
startswithÚlen)Ú.0Úref©Úlicenseref_prefixr   r   Ú
<dictcomp>G   s    ýÿz3canonicalize_license_expression.<locals>.<dictcomp>>   ÚorÚandÚwithr   r   ÚFalser    r   éÿÿÿÿ>   r   r   ú TFÚ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   ÚmessageÚlicense_expressionÚlicense_refsÚtokensÚpython_tokensÚtokenÚpython_expressionÚinvalidÚnormalized_tokensÚfinal_tokenÚsuffixÚnormalized_expressionr   r   r   r	   <   st   

þ

ÿ








þr	   )r   r   r   r   )Ú
__future__r   ÚreÚtypingr   r   Úpackaging.licenses._spdxr   r   Ú__all__Úcompiler2   r   r   Ú
ValueErrorr   r	   r   r   r   r   Ú<module>   s   


