o
    )Õri»  ã                   @  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   úZ/home/air/biblejyuku/back/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 ]<}|d	vr:| d
¡ q.|dkrD| d¡ q.|dkrP|rP|d dvs\|dkre|re|d dkred| ›}t |ƒ‚| |¡ q.d |¡}zt|ddƒ W n ty‰   d| ›}t |ƒd ‚w 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d| 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    r   ú Ú ÚevalÚWITHzUnknown license exception: Úidú+zlicenseref-zInvalid licenseref: zUnknown license: r	   z( z ))r   ÚreplaceÚsplitr   ÚappendÚjoinÚcompileÚSyntaxErrorÚupperr   Úendswithr   Úlicense_ref_allowedÚmatchr   r   )r   ÚmessageÚlicense_expressionÚlicense_refsÚtokensÚpython_tokensÚtokenÚpython_expressionÚnormalized_tokensÚfinal_tokenÚsuffixÚnormalized_expressionr   r   r   r
   <   sx   

þÿ



þ






þr
   )r   r   r   r	   )Ú
__future__r   ÚreÚtypingr   r   Ú_spdxr   r   Ú__all__r.   r2   r   r	   Ú
ValueErrorr   r
   r   r   r   r   Ú<module>   s   


