B
    )zf                 @   s  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 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ee  e ee e e f dddZ!e e	e dddZ"ee e ddd Z#ee eee$ef ddf dd!d"Z%e ee e f dd#d$Z&ee e$ee$d%f d&d'd(Z'd-eee   e$d)d*d+Z(e)d,kre*e(  dS ).    N)	Generator)Iterable)List)
NamedTuple)Optional)Pattern)Sequence)Tuple)   
   _compile)	lru_cache
ESCAPED_NLUNIMPORTANT_WSCOMMENTNLc               @   s.   e Zd ZU dZee ed< dZee ed< dS )OffsetNlineutf8_byte_offset)__name__
__module____qualname__r   r   int__annotations__r    r   r   N/home/ankuromar296_gmail_com/.local/lib/python3.7/site-packages/tokenize_rt.pyr      s   
r   c               @   sP   e Zd ZU eed< eed< dZee ed< dZee ed< e	e
dddZdS )	TokennamesrcNr   r   )returnc             C   s   t | j| jS )N)r   r   r   )selfr   r   r   offset(   s    zToken.offset)r   r   r   strr   r   r   r   r   propertyr   r!   r   r   r   r   r   "   s   
r   z^([^'"]*)(.*)$Zbfruz\\(\n|\r\n|\r))regexsr   c             C   sJ   |  |}|r<|d |  |t|   || d  fS |ddfS d S )N )searchstartslicespanend)r$   r%   matchr   r   r   _re_partition2   s    
.r-   )r   r   c             C   s  t | }dt| }|d g }d}d}d}t|j}x|D ]\}}	\}
}\}}}|
|krN|| |d  }x"t|d |
D ]}||| 7 }qW |dkr|||
 d | 7 }xht	|rt
t|\}}}|r|tt||| |t| 7 }|tt||| d}|d7 }qW |rH|tt||
d t| }nd}n:||kr||| }|tt||
| |t| 7 }tj| }|dkr|r|d jdkrt|d j tkr|d j|	 }|d j||d|d< n|dkr0|r0|d jdkr0|d j|d j|	 d	|d< nb|dkr~|	 d
kr~|r~|d jdkr~|d j|d j|	 d	|d< n|t||	|
| || }}|
|krt|| d |  }qD|t|	 7 }qDW |S )N)r&   r      STRINGNAME)r   r   NUMBER)r   l)ioStringIOtupleseektokenizegenerate_tokensreadlinerange_escaped_nl_rer'   r-   appendr   r   lenencoder   tok_namer   	frozensetr   lower_string_prefixes_replace)r   Ztokenize_targetlinestokens	last_lineZlast_colZ
end_offsetgentok_typeZtok_textslineZscolZelineZecolr   Znewtoklinenowsnlr@   Znewsrcr   r   r   src_to_tokens:   sl    

 




 
 

rN   )rF   r   c             C   s   d dd | D S )Nr&   c             s   s   | ]}|j V  qd S )N)r   ).0tokr   r   r   	<genexpr>   s    z tokens_to_src.<locals>.<genexpr>)join)rF   r   r   r   tokens_to_src   s    rS   c             c   s,   x&t tt| D ]}|| | fV  qW d S )N)reversedr;   r>   )rF   ir   r   r   reversed_enumerate   s    rV   c             C   s*   t | }|dk	st|d|dfS )z5parse a string literal's source into (prefix, string)Nr.      )
_string_rer,   AssertionErrorgroup)r   r,   r   r   r   parse_string_literal   s    
r[   .)rF   rU   r   c             C   s   g }d}xt |ddD ]}| | }|jdkr8|| q|jtkrDq|jdkrX|d7 }q|r|jdkr|d8 }|dkrxRt |d ddD ]>}| | }|jtkrq|jdks|jdkr|jtjkrd	S P qW P q|rd	S P qW 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   r0   r/   )r.   (>   ]r\   r1   r   )	r;   r   r=   NON_CODING_TOKENSr   keywordkwlistr6   rT   )rF   rU   retdepthtokenjrP   r   r   r   rfind_string_parts   s6    






rf   )argvr   c          	   C   s   t  }|d || }t|j}t| }W d Q R X xD|D ]<}t|j	t|j
 }}t| d| d|j d|j qDW dS )Nfilename: r   )argparseArgumentParseradd_argument
parse_argsopenrh   rN   readr"   r   r   printr   r   )rg   parserargsfrF   rd   r   colr   r   r   main   s    


&rv   __main__)N)+rk   r4   r`   resysr8   typingr   r   r   r   r   r   r   r	   version_infocallablegetattr	functoolsr   r   r   r   rA   r_   r   r   compileDOTALLrX   rC   r<   r"   r-   rN   rS   r   rV   r[   rf   rv   r   exitr   r   r   r   <module>   sF   

 O +
