a
    g                     @  s  d dl mZ d dlZd dlZd dlZd dlZd dlZd dlZd dlm	Z	 d dlm
Z
 d dlmZ d dlmZ d dlmZ ejdk reeed	drd d
lmZ eeje_dZdZededefZG dd deZG dd deZedejZedZedZdddddZ ddddddZ!ddd d!d"Z"d#dd$d%d&Z#d'd(d$d)d*Z$dd+d d,d-Z%d'd.d/d0d1d2Z&d8d3d.d4d5d6Z'e(d7kre)e' dS )9    )annotationsN)	Generator)Iterable)Sequence)Pattern)
NamedTuple)   
   _compile)	lru_cache
ESCAPED_NLUNIMPORTANT_WSCOMMENTNLc                   @  s&   e Zd ZU dZded< dZded< dS )OffsetN
int | Nonelineutf8_byte_offset)__name__
__module____qualname__r   __annotations__r    r   r   J/var/www/lab.imftr.de/x/nb_venv/lib/python3.9/site-packages/tokenize_rt.pyr      s   
r   c                   @  sZ   e Zd ZU ded< ded< dZded< dZded< edd	d
dZddddddZdS )TokenstrnamesrcNr   r   r   r   )returnc                 C  s   t | j| jS N)r   r   r   )selfr   r   r   offset'   s    zToken.offsetbool)r   r   r   c                C  s   | j |ko| j|kS r   )r   r   )r    r   r   r   r   r   matches+   s    zToken.matches)	r   r   r   r   r   r   propertyr!   r#   r   r   r   r   r   !   s   
r   z^([^'"]*)(.*)$z\\(\n|\r\n|\r)z(?<!\\)(?:\\\\)*(\\N\{[^}]+\})r   )sr   c                 C  s"   t | }ddd t|D S )N c                 s  s6   | ].\}}|d  dkr*| dd ddn|V  qdS )   r   {z{{}z}}N)replace).0ipartr   r   r   	<genexpr>7   s   zcurly_escape.<locals>.<genexpr>)NAMED_UNICODE_REsplitjoin	enumerate)r%   partsr   r   r   curly_escape5   s    

r4   zPattern[str]ztuple[str, str, str])regexr%   r   c                 C  sJ   |  |}|r<|d |  |t|   || d  fS |ddfS d S )Nr&   )searchstartslicespanend)r5   r%   matchr   r   r   _re_partition=   s    
.r<   zlist[Token])r   r   c                 C  s  t | }dt| }|d g }d}d}d}t|j}|D ]\}}	\}
}\}}}|
|krB|| |d  }t|d |
D ]}||| 7 }q|dkr|||
 d | 7 }t	|rt
t|\}}}|r|tt||| |t| 7 }|tt||| d}|d7 }q|r<|tt||
d t| }nd}n:||kr|||| }|tt||
| |t| 7 }tj| }|dkrd|	v sd|	v rt|	}|t|t|	 7 }|}	|t||	|
| || }}|
|krt|| d |  }q@|t|	 7 }q@|S )N)r&   r      ZFSTRING_MIDDLEr(   r)   )ioStringIOtupleseektokenizegenerate_tokensreadlinerange_escaped_nl_rer6   r<   appendr   r   lenencoder   tok_namer4   )r   Ztokenize_targetlinestokens	last_lineZlast_col
end_offsetgentok_typeZtok_textslineZscolZelineZecolr   ZnewtoklinenowsnlrJ   Znew_tok_textr   r   r   src_to_tokensE   sZ    








rU   zIterable[Token])rL   r   c                 C  s   d dd | D S )Nr&   c                 s  s   | ]}|j V  qd S r   )r   )r+   tokr   r   r   r.          z tokens_to_src.<locals>.<genexpr>)r1   )rL   r   r   r   tokens_to_src   s    rX   zSequence[Token]zGenerator[tuple[int, Token]]c                 c  s(   t tt| D ]}|| | fV  qd S r   )reversedrE   rH   )rL   r,   r   r   r   reversed_enumerate   s    rZ   ztuple[str, str]c                 C  s*   t | }|dusJ |d|dfS )z5parse a string literal's source into (prefix, string)Nr=   r'   )
_string_rer;   group)r   r;   r   r   r   parse_string_literal   s    
r]   intztuple[int, ...])rL   r,   r   c                 C  s   g }d}t |ddD ]}| | }|jdkr6|| q|jtv rBq|jdkrV|d7 }q|r|jdkr|d8 }|dkrt |d ddD ]D}| | }|jtv rq|jdv s|jdkr|jtjvr  d	S  qq qq|r d	S  qqtt|S )
zfind the indicies of the string parts of a (joined) string literal

    - `i` should start at the end of the string literal
    - returns `()` (an empty tuple) for things which are not string literals
    r   STRING)r=   (>   ra   ]NAMEr   )	rE   r   rG   NON_CODING_TOKENSr   keywordkwlistr@   rY   )rL   r,   retdepthtokenjrV   r   r   r   rfind_string_parts   s<    





rl   zSequence[str] | None)argvr   c              	   C  s   t  }|d || }t|j}t| }W d    n1 sH0    Y  |D ]<}t|j	t|j
 }}t| d| d|j d|j qVdS )Nfilename: r   )argparseArgumentParseradd_argument
parse_argsopenrn   rU   readr   r   r   printr   r   )rm   parserargsfrL   rj   r   colr   r   r   main   s    

*$r|   __main__)N)*
__future__r   rq   r>   rf   resysrB   collections.abcr   r   r   r   typingr   version_infocallablegetattr	functoolsr   r
   r   r   	frozensetre   r   r   compileDOTALLr[   rF   r/   r4   r<   rU   rX   rZ   r]   rl   r|   r   
SystemExitr   r   r   r   <module>   sF   

<+
