
    i}                        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	dd	Z
 ej        d
          Z ede          Z	  G d de          ZddZdS )    )annotationsN)NewTypecast   )
EXCEPTIONSLICENSES)InvalidLicenseExpressionNormalizedLicenseExpressioncanonicalize_license_expressionreturn	list[str]c                     t           S )N)__all__     b/home/ubuntu/.hermes/hermes-agent/venv/lib/python3.11/site-packages/packaging/licenses/__init__.py__dir__r   /   s    Nr   z^[A-Za-z0-9.-]*$r
   c                      e Zd ZdZdS )r	   a<  Raised when a license-expression string is invalid

    >>> from packaging.licenses import canonicalize_license_expression
    >>> canonicalize_license_expression("invalid")
    Traceback (most recent call last):
        ...
    packaging.licenses.InvalidLicenseExpression: Invalid license expression: 'invalid'
    N)__name__
__module____qualname____doc__r   r   r   r	   r	   <   s           r   r	   raw_license_expressionstrc                   | sd| }t          |          |                     dd                              dd          }dfd|                                D             }|                                }|                                }g }|D ]}|dvr|                    d	           |d
k    r|                    d           8|dk    r|r
|d         dvs|dk    r"|r |d         dk    rd| }t          |          |                    |           d                    |          }	 t          |dd           n## t          $ r d| }t          |          dw xY wg }|D ]P}|dv r(|                    |                                           /|rP|d         dk    rD|t          vrd|}t          |          |                    t          |         d                    |
                    d          r|dd         }	d}
n|}	d}
|	                    d          rNt                              |	          sd|	}t          |          |                    ||	         |
z              
|	t          vrd|	}t          |          |                    t          |	         d         |
z              Rd                    |          }t          d|                    dd                              dd                    S )a  
    This function takes a valid License-Expression, and returns the normalized
    form of it.

    The return type is typed as :class:`NormalizedLicenseExpression`. This
    allows type checkers to help require that a string has passed through this
    function before use.

    :param str raw_license_expression: The License-Expression to canonicalize.
    :raises InvalidLicenseExpression: If the License-Expression is invalid due to an
        invalid/unknown license identifier or invalid syntax.

    .. doctest::

        >>> from packaging.licenses import canonicalize_license_expression
        >>> canonicalize_license_expression("mit")
        'MIT'
        >>> canonicalize_license_expression("mit and (apache-2.0 or bsd-2-clause)")
        'MIT AND (Apache-2.0 OR BSD-2-Clause)'
        >>> canonicalize_license_expression("(mit")
        Traceback (most recent call last):
          ...
        InvalidLicenseExpression: Invalid license expression: '(mit'
        >>> canonicalize_license_expression("Use-it-after-midnight")
        Traceback (most recent call last):
          ...
        InvalidLicenseExpression: Unknown license: 'Use-it-after-midnight'
    zInvalid license expression: (z ( )z ) LicenseRef-c                    i | ]h}|                                                                                                ;|                                 d |t                    d         z   iS )r   N)lower
startswithlen).0reflicenseref_prefixs     r   
<dictcomp>z3canonicalize_license_expression.<locals>.<dictcomp>n   su       99;;!!"3"9"9";";<<		]S->)?)?)A)A%BB  r   >   orandwithr   r   Falser)   r'   >   r'   r(   r     evalN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%   s               @r   r   r   G   s   > " 0K1GKK&w/// 077UCCKKCQVWW%   %++--  L ,1133%%''F M ( (777  ))))f__  &&&&SLL b!);;;sll}lr1Bc1I1IO5KOOG*7333  ''''//:!2v.... : : :K1GKK&w//T9:
  O O333$$U[[]]333 	O!22!6&!@!@J&&AAA.w777$$Z%6t%<====~~c"" #CRCj#%%m44 	O*00== <D[DDG27;;;!((k)BV)KLLLLh..A+AAG27;;;!((+)>t)Dv)MNNNNHH%677%%%dC0088sCC  s   .E    E )r   r   )r   r   r   r
   )
__future__r   retypingr   r   _spdxr   r   r   r   r6   r:   r   r
   
ValueErrorr	   r   r   r   r   <module>rL      s   @ # " " " " " 				                 ' ' ' ' ' ' ' '      !bj!344 %g&CSII     z   s s s s s sr   