
    z%i-                         	 d Z ddlZddlZddlZg dZdadad Zd Z G d de	      Z
d Z G d	 d
      Zd Zd Zd Zedk(  r e        yy)6    N)checkNannyNagprocess_tokensc                      d}| D ]/  }t         j                  j                  |t        |      z          d}1 t         j                  j                  d       t        j                  d       y )N  
   )sysstderrwritestrexit)argssepargs      </home/uftp/.pyenv/versions/3.12.0/lib/python3.12/tabnanny.pyerrprintr       sT    
C 

s3x( JJTHHQK    c                  Z   dd l } 	 | j                  t        j                  dd  d      \  }}D ]"  \  }}|dk(  r	t
        dz   a|dk(  st        dz   a$ st	        dt        j                  d   d       |D ]  }t        |        y # | j                  $ r}t	        |       Y d }~yd }~ww xY w)Nr   r   qvz-qz-vzUsage:z[-v] file_or_directory ...)getoptr   argverrorr   filename_onlyverboser   )r   optsr   msgoar   s          r   mainr"   (   s    ]]388AB<6
d  "19)A-M9kG	"
 388A;(DE c
 << s   &B B*B%%B*c                   &    e Zd Z	 d Zd Zd Zd Zy)r   c                 0    |||c| _         | _        | _        y N)linenor   line)selfr&   r   r'   s       r   __init__zNannyNag.__init__?   s    +13(TXtyr   c                     | j                   S r%   )r&   r(   s    r   
get_linenozNannyNag.get_linenoA   s    {{r   c                     | j                   S r%   )r   r+   s    r   get_msgzNannyNag.get_msgC   s    xxr   c                     | j                   S r%   )r'   r+   s    r   get_linezNannyNag.get_lineE   s    yyr   N)__name__
__module____qualname__r)   r,   r.   r0    r   r   r   r   :   s    =r   r   c                    	 t         j                  j                  |       rt         j                  j                  |       st        rt        | d       t        j                  |       }|D ]  }t         j                  j                  | |      }t         j                  j                  |      rt         j                  j                  |      r&t         j                  j                  |dd        dk(  st        |        y 	 t        j                  |       }t        dkD  rt        d| z         	 t        t        j                  |j                                	 |j%                          t        rt        | d       y y # t        $ r}t        | d|       Y d }~y d }~ww xY w# t        j"                  $ r*}t        | d|       Y d }~|j%                          y d }~wt&        $ r*}t        | d|       Y d }~|j%                          y d }~wt(        $ r*}t        | d|       Y d }~|j%                          y d }~wt*        $ r}|j-                         }|j/                         }t        r8t        d	| |fz         t        d
|       t        |j1                                n4d| v rd| z   dz   } t2        rt        |        nt        | |t5        |             Y d }~|j%                          y d }~ww xY w# |j%                          w xY w)Nz: listing directoryz.pyz: I/O Error: r   zchecking %r ...z: Token Error: z: Indentation Error: z)%r: *** Line %d: trouble in tab city! ***zoffending line: r	   "z: Clean bill of health.)ospathisdirislinkr   printlistdirjoinnormcaser   tokenizeopenOSErrorr   r   generate_tokensreadline
TokenErrorcloseSyntaxErrorIndentationErrorr   r,   r0   r.   r   repr)	filenamesnamefullnamefr   nagbadliner'   s	            r   r   r   H   sL    
ww}}T277>>$#7T34

4  	 Dww||D$/Hh'GGNN8,  bc+u4h	  	MM$
 {$&'x//

;<8 	
	T34 M  c23  $450 	
	-  $45( 	
	%  c:;  	
	  .."||~=wOP$01#++- d{3:#3DeDkgtDz2 	
	 	
	sy   E= .(F# =	F FF #K56GK8 K5'H7K8 K5H=(K8 =K5	BK0K8 0K55K8 8L
c                   @    e Zd Zd\  ZZd Zd Zd Zd Zd Z	d Z
d Zy	)

Whitespacez 	c                    || _         t        j                  t        j                  }}g }dx}x}}| j                   D ]V  }||k(  r|dz   }|dz   }||k(  r>|dz   }|dz   }|t	        |      k\  r|dg|t	        |      z
  dz   z  z   }||   dz   ||<   d}V n || _        || _        t        |      |f| _        t	        |      dk  | _	        y )Nr   r   )
rawrR   STlennnttuplenorm	is_simple)	r(   wsrU   rV   countbrX   rY   chs	            r   r)   zWhitespace.__init__   s    ||Z\\1A(( 	BQwEEqE!VE
?!QC1s5z>A+=$>>E 8a<a	 %L!O	Uqr   c                 P    | j                   \  }}t        t        |      dz
  |      S Nr   )r[   maxrW   )r(   r^   trailings      r   longest_run_of_spacesz Whitespace.longest_run_of_spaces   s$    ))x3u:a<**r   c                     | j                   \  }}d}t        |t        |            D ]  }|||z  ||   z  z   } |||| j                  z   z  z   S )Nr   )r[   rangerW   rY   )r(   tabsizer^   rd   ilis         r   indent_levelzWhitespace.indent_level   s_     ))xwE
+ 	,Aaj58++B	,'R$''\222r   c                 4    | j                   |j                   k(  S r%   )r[   )r(   others     r   equalzWhitespace.equal   s    yyEJJ&&r   c                 4   t        | j                         |j                               dz   }g }t        d|dz         D ]X  }| j                  |      |j                  |      k7  s'|j	                  || j                  |      |j                  |      f       Z |S rb   rc   re   rg   rk   appendr(   rm   rX   r!   tss        r   not_equal_witnesszWhitespace.not_equal_witness       **,++-/1231Q3- 	5B  $(:(:2(>>2,,R0 --b13 5	5
 r   c                 b   | j                   |j                   k\  ry| j                  r%|j                  r| j                  |j                  k  S t        | j	                         |j	                               dz   }t        d|dz         D ]'  }| j                  |      |j                  |      k\  s' y y)NFr      T)rX   r\   rY   rc   re   rg   rk   )r(   rm   rX   rs   s       r   lesszWhitespace.less   s    66UWW>>eoo77ehh&&**,++-/123 1Q3- 	B  $(:(:2(>>	 r   c                 4   t        | j                         |j                               dz   }g }t        d|dz         D ]X  }| j                  |      |j                  |      k\  s'|j	                  || j                  |      |j                  |      f       Z |S rb   rp   rr   s        r   not_less_witnesszWhitespace.not_less_witness  ru   r   N)r1   r2   r3   rU   rV   r)   re   rk   rn   rt   rx   rz   r4   r   r   rR   rR      s.    DAq*)2+3.'	0"	r   rR   c                 l    d | D        }d}t        |       dkD  r|dz   }|dz   dj                  |      z   S )Nc              3   8   K   | ]  }t        |d            yw)r   N)r   ).0tups     r   	<genexpr>z#format_witnesses.<locals>.<genexpr>  s     'cc#a&k's   zat tab sizer   sr	   z, )rW   r>   )wfirstsprefixs      r   format_witnessesr     s=    'Q'FF
1vz#C<$))F+++r   c                     	 t        |        y # t        $ r0}t        |j                  |j                  |j
                        d }~ww xY wr%   )_process_tokensTabErrorr   r&   r   text)tokenses     r   r   r     s:    0 0qxx//0s    	A+AAc                    t         j                  }t         j                  }t         j                  }t         j                  t         j
                  f}t        d      g}d}| D ]  \  }}}	}
}||k(  rd}||k(  red}t        |      }|d   j                  |      s2|d   j                  |      }dt        |      z   }t        |	d   ||      |j                  |       {||k(  rd}|d= |s||vsd}t        |      }|d   j                  |      r|d   j                  |      }dt        |      z   }t        |	d   ||       y )Nr   r   r   zindent not greater e.g. zindent not equal e.g. )r@   INDENTDEDENTNEWLINECOMMENTNLrR   rx   rz   r   r   rq   rn   rt   )r   r   r   r   JUNKindentscheck_equaltypetokenstartendr'   thisguywitnessr   s                  r   r   r     sQ   __F__FGX[[(D"~GK+1 ,4'ueS$7? KV^K 'G2;##G,!"+66w?03CG3LLuQxd33NN7#V^ KT- K &G2;$$W-!"+77@.1A'1JJuQxd33Y,4r   __main__)__version__r8   r   r@   __all__r   r   r   r"   	Exceptionr   r   rR   r   r   r   r1   r4   r   r   <module>r      sv   
$  	 
 
1
$y ?5BD DL,044n zF r   