o
    üÞh¾  ã                   @  s$  U d dl mZ d dlZd dlZd dlmZ d dlmZmZ ddl	m
Z
 eG dd„ dƒƒZG d	d
„ d
eƒZi dd“dd“dd“dd“dd“dd“de dej¡“dd“dd“dd“dd “d!e d"ej¡“d#e e
je
j ejejB ¡“d$d%“d&d'“d(d)“d*d+“d,d-d.d/œ¥Zd0ed1< G d2d3„ d3ƒZdS )4é    )ÚannotationsN)Ú	dataclass)ÚIteratorÚNoReturné   )Ú	Specifierc                   @  s&   e Zd ZU ded< ded< ded< dS )ÚTokenÚstrÚnameÚtextÚintÚpositionN)Ú__name__Ú
__module__Ú__qualname__Ú__annotations__© r   r   úT/var/www/html/premium_crap/venv/lib/python3.10/site-packages/packaging/_tokenizer.pyr      s   
 r   c                      s,   e Zd ZdZd‡ fd	d
„Zddd„Z‡  ZS )ÚParserSyntaxErrorz7The provided source text could not be parsed correctly.Úmessager	   ÚsourceÚspanútuple[int, int]ÚreturnÚNonec                  s    || _ || _|| _tƒ  ¡  d S )N)r   r   r   ÚsuperÚ__init__)Úselfr   r   r   ©Ú	__class__r   r   r      s   zParserSyntaxError.__init__c                 C  s>   d| j d  d| j d | j d    d }d | j| j|g¡S )Nú r   ú~r   ú^z
    )r   Újoinr   r   )r   Úmarkerr   r   r   Ú__str__"   s   *zParserSyntaxError.__str__)r   r	   r   r	   r   r   r   r   )r   r	   )r   r   r   Ú__doc__r   r%   Ú__classcell__r   r   r   r   r      s    r   ÚLEFT_PARENTHESISz\(ÚRIGHT_PARENTHESISz\)ÚLEFT_BRACKETz\[ÚRIGHT_BRACKETz\]Ú	SEMICOLONú;ÚCOMMAú,ÚQUOTED_STRINGzk
            (
                ('[^']*')
                |
                ("[^"]*")
            )
        ÚOPz(===|==|~=|!=|<=|>=|<|>)ÚBOOLOPz\b(or|and)\bÚINz\bin\bÚNOTz\bnot\bÚVARIABLEa¬  
            \b(
                python_version
                |python_full_version
                |os[._]name
                |sys[._]platform
                |platform_(release|system)
                |platform[._](version|machine|python_implementation)
                |python_implementation
                |implementation_(name|version)
                |extras?
                |dependency_groups
            )\b
        Ú	SPECIFIERÚATz\@ÚURLz[^ \t]+Ú
IDENTIFIERz\b[a-zA-Z0-9][a-zA-Z0-9._-]*\bÚVERSION_PREFIX_TRAILz\.\*z\+[a-z0-9]+(?:[-_\.][a-z0-9]+)*z[ \t]+ú$)ÚVERSION_LOCAL_LABEL_TRAILÚWSÚENDú dict[str, str | re.Pattern[str]]ÚDEFAULT_RULESc                   @  sj   e Zd ZdZd(dd	„Zd)dd„Zddœd*dd„Zd+dd„Zd,dd„Zdddœd-d d!„Z	e
jd.d&d'„ƒZdS )/Ú	Tokenizerz„Context-sensitive token parsing.

    Provides methods to examine the input stream to check whether the next token
    matches.
    r   r	   Úrulesr?   r   r   c                C  s*   || _ dd„ | ¡ D ƒ| _d | _d| _d S )Nc                 S  s   i | ]
\}}|t  |¡“qS r   )ÚreÚcompile)Ú.0r
   Úpatternr   r   r   Ú
<dictcomp>i   s    ÿz&Tokenizer.__init__.<locals>.<dictcomp>r   )r   ÚitemsrB   Ú
next_tokenr   )r   r   rB   r   r   r   r   b   s   ÿ
zTokenizer.__init__r
   c                 C  s   |   |¡r|  ¡  dS dS )z8Move beyond provided token name, if at current position.N)ÚcheckÚread)r   r
   r   r   r   Úconsumeo   s   
ÿzTokenizer.consumeF)ÚpeekrM   Úboolc                C  sz   | j du sJ d|›d| j ›�ƒ‚|| jv sJ d|›�ƒ‚| j| }| | j| j¡}|du r/dS |s;t||d | jƒ| _ dS )zÿCheck whether the next token has the provided name.

        By default, if the check succeeds, the token *must* be read before
        another check. If `peek` is set to `True`, the token is not loaded and
        would need to be checked again.
        NzCannot check for z, already have zUnknown token name: Fr   T)rI   rB   Úmatchr   r   r   )r   r
   rM   Ú
expressionrO   r   r   r   rJ   t   s   ÿ
zTokenizer.checkÚexpectedr   c                C  s"   |   |¡s|  d|› �¡‚|  ¡ S )zsExpect a certain token name next, failing with a syntax error otherwise.

        The token is *not* read.
        z	Expected )rJ   Úraise_syntax_errorrK   )r   r
   rQ   r   r   r   Úexpect‰   s   
zTokenizer.expectc                 C  s0   | j }|dus	J ‚|  jt|jƒ7  _d| _ |S )z%Consume the next token and return it.N)rI   r   Úlenr   )r   Útokenr   r   r   rK   ’   s
   zTokenizer.readN)Ú
span_startÚspan_endr   rV   ú
int | NonerW   r   c                C  s4   |du r| j n||du r| j n|f}t|| j|d�‚)z.Raise ParserSyntaxError at the given position.N)r   r   )r   r   r   )r   r   rV   rW   r   r   r   r   rR   œ   s   	þýzTokenizer.raise_syntax_errorÚ
open_tokenÚclose_tokenÚaroundúIterator[None]c                c  sh   � |   |¡r| j}|  ¡  nd }d V  |d u rd S |   |¡s.| jd|› d|› d|› �|d� |  ¡  d S )NzExpected matching z for z, after )rV   )rJ   r   rK   rR   )r   rY   rZ   r[   Úopen_positionr   r   r   Úenclosing_tokens®   s   €


þzTokenizer.enclosing_tokens)r   r	   rB   r?   r   r   )r
   r	   r   r   )r
   r	   rM   rN   r   rN   )r
   r	   rQ   r	   r   r   )r   r   )r   r	   rV   rX   rW   rX   r   r   )rY   r	   rZ   r	   r[   r	   r   r\   )r   r   r   r&   r   rL   rJ   rS   rK   rR   Ú
contextlibÚcontextmanagerr^   r   r   r   r   rA   [   s    



	ûrA   )Ú
__future__r   r_   rC   Údataclassesr   Útypingr   r   Ú
specifiersr   r   Ú	Exceptionr   rD   ÚVERBOSEÚ_operator_regex_strÚ_version_regex_strÚ
IGNORECASEr@   r   rA   r   r   r   r   Ú<module>   st    ÿþýüûúøùïîíìñë&

þÚ*Ö+Õ,Ô-Ó.Ð4