o
    i̖i                     @  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   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   ]/var/www/html/livekit_bhavya/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rd|}t ||t	| d  q|
dr|d d }	d}
n|}	d}
|	drt|	sd|	}t ||||	 |
  q|	tvrd|	}t ||t|	 d |
  qd|}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   


