
    mi                        d Z ddlmZ ddlZddlZddlZddlZddlm	Z	m
Z
 ddlZddlZ G d d          ZdddZ G d de
          ZddddZd dZdS )!zCLI interface for pytokens.    )annotationsN)Iterable
NamedTuplec                  .    e Zd ZU ded<   ded<   ded<   dS )CLIArgsstrfilepathboolvalidateissue_128233_handlingN__name__
__module____qualname____annotations__     d/var/www/html/bestrading.cuttalo.com/scripts/kaggle-env/lib/python3.11/site-packages/pytokens/cli.pyr   r      s0         MMMNNNr   r   argvlist[str] | Nonereturnintc                    t          j                    }|                    d           |                    ddd           |                    dd           |                    | t	                      	          }t
          j                            |j                  rt          |j                  }d
}n
|j        g}d}t          |          D ]-}t          |d          5 }	 t          j        |j                  \  }}n5# t          $ r( |j        rt#          ddd           Y ddd           b w xY wd                    |          |                                z   }	ddd           n# 1 swxY w Y   |j        rt!          ||	|||j                   |	                    |          }
t-          j        |
|j                  D ]3}|
|j        |j                 }t#          t3          |          |           4/dS )zCLI interface.r	   z--no-128233-handlingr   store_false)destactionz
--validate
store_true)r   )	namespaceFTrb[1;33mS[0m endflushNr   )verboser   r   r   )argparseArgumentParseradd_argument
parse_argsr   ospathisdirr	   find_all_python_filessortedopentokenizedetect_encodingreadlineSyntaxErrorr   printjoinreadr   decodepytokensstart_index	end_indexrepr)r   parserargsfilesr%   r	   fileencoding
read_bytessource
source_strtokentoken_sources                r   clirG      s   $&&F

###
$    
 \:::TWYY77D	w}}T]## %dm445MM 1 1(D!! 	8T'/'?'N'N$**   = .BdCCCC	8 	8 	8 	8 	8 	8 	8  XXj))DIIKK7F	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 = 	1&*&@      x00J!*&*&@   1 1  *%*;eo*MNd<((%00001 1s6   "E,$D E,#D3$E,1D33-E,,E0	3E0	c                  .    e Zd ZU ded<   ded<   ded<   dS )
TokenTupler   typeztuple[int, int]startr#   Nr   r   r   r   rI   rI   K   s3         IIIr   rI   T)r%   r	   r   rC   bytesrA   r   r
   r%   Nonec                  t          j        d           t          |          dk    s|dd         dk    r|dz   }d |                    d          D             }|                    d           t          j        |          }t          j        |j                  }t          |           	 d |D             }n(# t          j
        $ r t          dd	d
           Y dS w xY w|d         g}	t          |dd         d          D ]-\  }
}|	d         }|}|j        |j        cxk    rdk    r7n n4|	                                 t          |j        |j        |j                  }|
dz   t          |          k     r||
dz            }|j        dk    r|j        dk    sN|j        dk    rx|j        dk    rm|j        d         |j        d         k    rQ|j        d         |j        d         k    r5|	                    t          |j        |j        |j                             |	                    |           /|                    |          }d t'          j        ||          D             }t)          |	|d
          D ]V\  }}||k    }|s|r t          d|           t          d|           |r%t          d|            t          dd	d
            dS Wt          dd	d
           dS )zValidate the source code.ignorer   N   
c                    g | ]}|d z   S )rQ   r   ).0lines     r   
<listcomp>zvalidate.<locals>.<listcomp>a   s    @@@D4%<@@@r   c                n    g | ]2}t          t          j        |j                 |j        |j                  3S r   )rI   r1   tok_namerJ   rK   r#   rS   rE   s     r   rU   zvalidate.<locals>.<listcomp>k   sB     '
 '
 '
 x(4ek59MM'
 '
 '
r   r    r!   Tr"      )rK   FSTRING_MIDDLEOPFSTRING_ENDc              3     K   | ]^}|j         t          j        j        k    t	          |j                                         |j        |j        f|j        |j	        f          V  _d S N)
rJ   r9   	TokenType
whitespacerI   to_python_token
start_line	start_colend_lineend_colrX   s     r   	<genexpr>zvalidate.<locals>.<genexpr>   s{       
 
  :+666 	J&&((u/^U]+	
 	
 7666
 
r   r&   )strictEXPECTEDz---- GOTz	Filepath:z[1;31mF[0mz[1;32m.[0m)warningssimplefilterlensplitappendioBytesIOr1   r3   next
TokenErrorr5   	enumeraterJ   poprI   rK   r#   r8   r9   zip)r	   rC   rA   r   r%   sourcelinessource_filebuiltin_tokensexpected_tokens_unprocessedexpected_tokensindexrE   
last_tokencurrent_token
next_tokensource_string
our_tokensbuiltin_token	our_tokenmismatchs                       r   r   r   Q   s    (### 6{{a6"##;%//% A@FLL,?,?@@@Ku*V$$K&{';<<N'
 '
''
 '
 '
##    "$7777 3156O!"=abb"AKKK '. '.u$R(
DDDD4DDDDDD!!!&" ! M 19s67777 5UQY?J#'777JOt<S<S!&*:::"=88$Q'=+<Q+???$Q'-*;A*>>>&&%*%+"(    }----MM(++M
 
 &1F
 
 

 
 
J %(D$Q$Q$Q 
 
 y I- 	)w 	)*m,,,*i((( 	+x(((&Bd;;;;FF		 

Bd333333s   ,B9 9!CC	directoryIterable[str]c                    t                      }t          j        | d          D ]S\  }}}|D ]J}|                    d          r3|                    t          j                            ||                     KT|S )z9Recursively find all Python files in the given directory.F)followlinksz.py)setr+   walkendswithaddr,   r6   )r   python_filesroot_r?   r@   s         r   r.   r.      s    55L')??? ; ;a 	; 	;D}}U## ;  dD!9!9:::	; r   r^   )r   r   r   r   )r	   r   rC   rL   rA   r   r   r
   r%   r
   r   rM   )r   r   r   r   )__doc__
__future__r   r'   rn   os.pathr+   r1   typingr   r   ri   r9   r   rG   rI   r   r.   r   r   r   <module>r      s   ! ! " " " " " "  				   ' ' ' ' ' ' ' '                 3 3 3 3 3l        e4 e4 e4 e4 e4 e4P     r   