o
    d                     @   s$  U d dl Z d dlZd dlmZ d dlmZmZmZmZ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,iZd-ed.< G d/d0 d0ZdS )1    N)	dataclass)DictIteratorNoReturnOptionalTupleUnion   )	Specifierc                   @   s&   e Zd ZU eed< eed< eed< dS )TokennametextpositionN)__name__
__module____qualname__str__annotations__int r   r   W/app/.heroku/python/lib/python3.10/site-packages/wheel/vendored/packaging/_tokenizer.pyr   	   s   
 r   c                       sH   e Zd ZdZdededeeef ddf fddZdefd	d
Z  Z	S )ParserSyntaxErrorz7The provided source text could not be parsed correctly.messagesourcespanreturnNc                   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   __doc__r   r   r   r   r&   __classcell__r   r   r   r   r      s    
r   ZLEFT_PARENTHESISz\(ZRIGHT_PARENTHESISz\)ZLEFT_BRACKETz\[ZRIGHT_BRACKETz\]	SEMICOLON;COMMA,Z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)
                |extra
            )\b
        Z	SPECIFIERATz\@URLz[^ \t]+
IDENTIFIERz\b[a-zA-Z0-9][a-zA-Z0-9._-]*\bZWSz[ \t]+ZEND$&Dict[str, Union[str, re.Pattern[str]]]DEFAULT_RULESc                	   @   s   e Zd ZdZdeddddfddZd	eddfd
dZddd	ededefddZd	edede	fddZ
de	fddZddddedee dee defddZejdededee fddZdS ) 	TokenizerzContext-sensitive token parsing.

    Provides methods to examine the input stream to check whether the next token
    matches.
    r   rulesr6   r   Nc                C   s*   || _ dd | D | _d | _d| _d S )Nc                 S   s   i | ]
\}}|t |qS r   )recompile).0r   patternr   r   r   
<dictcomp>d   s    z&Tokenizer.__init__.<locals>.<dictcomp>r   )r   itemsr9   
next_tokenr   )r   r   r9   r   r   r   r   ]   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   consumej   s   
zTokenizer.consumeF)peekrD   c                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 )zCheck 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)r@   r9   matchr   r   r   )r   r   rD   Z
expressionrE   r   r   r   rA   o   s   
zTokenizer.checkexpectedc                C   s"   |  |s| d| |  S )zsExpect a certain token name next, failing with a syntax error otherwise.

        The token is *not* read.
        z	Expected )rA   raise_syntax_errorrB   )r   r   rF   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)r@   r   lenr   )r   tokenr   r   r   rB      s
   zTokenizer.read)
span_startspan_endr   rK   rL   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   rK   rL   r   r   r   r   rG      s   	zTokenizer.raise_syntax_error
open_tokenclose_tokenc                 c   s`    |  |r| j}|   nd }|d uV  |d u rd S |  |s*| jd| |d |   d S )NzExpected closing )rK   )rA   r   rB   rG   )r   rM   rN   Zopen_positionr   r   r   enclosing_tokens   s   



zTokenizer.enclosing_tokens)r   r   r   r'   r   r   rC   boolrA   r   rH   rB   r   r   r   rG   
contextlibcontextmanagerr   rO   r   r   r   r   r8   V   s4    
	
 r8   )rQ   r:   dataclassesr   typingr   r   r   r   r   r   
specifiersr
   r   	Exceptionr   r;   VERBOSEZ_operator_regex_strZ_version_regex_str
IGNORECASEr7   r   r8   r   r   r   r   <module>   sn   
  %

)*+,-1