a
    QIhS                     @  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)InvalidLicenseExpressionNormalizedLicenseExpressioncanonicalize_license_expressionz^[A-Za-z0-9.-]*$r   c                   @  s   e Zd ZdZdS )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__ r   r   U/var/www/html/venv_bot_3.9/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rd| }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rt|
sd|
}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>>   andwithr   r   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   


