
    j                        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__     Z/var/www/html/python-test/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	   a1  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: Unknown license: '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}	t          |          D ]\  }
}|dv ri|d
k    r9|	r#|
dz   t          |          k    s||
dz            dv rd| }t          |          |                    |
                                           d}	s|rR|d         dk    rF|t          vrd|}t          |          |                    t          |         d                    d}	|                    d          r|dd         }d}n|}d}|                    d          rc|t          d          d         }|st                              |          sd|}t          |          |                    ||                    nF|t           vrd|}t          |          |                    t           |         d         |z              d}	d                    |          }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     evalNFr   WITHzUnknown license exception: id+zlicenseref-zInvalid licenseref: zUnknown license: Tr
   z( z ))r	   replacesplitr    appendjoincompileSyntaxError	enumerater"   upperr   endswithr!   license_ref_allowedmatchr   r   )r   messagelicense_expressionlicense_refstokenspython_tokenstokenpython_expressionnormalized_tokenslast_license_startindexfinal_tokensuffixlicense_ref_idnormalized_expressionr%   s                  @r   r   r   G   sJ   > " 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:
 !&)) '& '&u333& 19F++%!)$(GGGS9OSS.w777$$U[[]]333!& 	&!22!6&!@!@J&&AAA.w777$$Z%6t%<===!&~~c"" #CRCj#%%m44 
O!,S-?-?-A-A!B <!4!:!:>!J!J <>U>>G27;;;!((k)BCCCCh..A+AAG27;;;!((+)>t)Dv)M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>rP      s   @ # " " " " " 				                 ' ' ' ' ' ' ' '      !bj!344 %g&CSII     z        r   