???<!-- GIF89;a -->
123123123123
.....................................................................................................................................???<!-- GIF89;a -->
123123123123
.....................................................................................................................................3

  \,                 @   s   d Z ddlZddlZddlZddlZeeds6eddddgZdada	dd	 Z
d
d ZG dd deZdd ZG dd dZdd Zdd Zedkre  dS )6    NNLz4tokenize.NL doesn't exist -- tokenize module too oldcheckNannyNagprocess_tokensc              G   s:   d}x$| D ]}t jj|t|  d}q
W t jjd d S )N  
)sysstderrwritestr)argsseparg r    /usr/lib64/python3.6/tabnanny.pyerrprint#   s
    
r   c              C   s   yt j tjdd  d\} }W n* t jk
rH } zt| d S d }~X nX x0| D ](\}}|dkrhtd a|dkrPtd aqPW |stdtjd d d S x|D ]}t| qW d S )N   Zqvz-qz-vzUsage:r   z[-v] file_or_directory ...)getoptr
   argverrorr   filename_onlyverboser   )Zoptsr   msgoar   r   r   r   main*   s    
r   c               @   s,   e Zd Zdd Zdd Zdd Zdd Zd	S )
r   c             C   s   |||  | _ | _| _d S )N)linenor   line)selfr   r   r   r   r   r   __init__A   s    zNannyNag.__init__c             C   s   | j S )N)r   )r    r   r   r   
get_linenoC   s    zNannyNag.get_linenoc             C   s   | j S )N)r   )r    r   r   r   get_msgE   s    zNannyNag.get_msgc             C   s   | j S )N)r   )r    r   r   r   get_lineG   s    zNannyNag.get_lineN)__name__
__module____qualname__r!   r"   r#   r$   r   r   r   r   r   <   s   c       	   %   C   s"  t jj| rt jj|  rtr,td| f  t j| }xT|D ]L}t jj| |}t jj|rht jj| st jj|dd  dkr<t	| q<W d S yt
j| }W n0 tk
r } ztd| |f  d S d }~X nX tdkrtd|   zytt
j|j W  n t
jk
r2 } ztd| |f  d S d }~X n tk
rb } ztd| |f  d S d }~X n tk
r } z||j }|j }trtd	| |f  td
|f  t|j  n6d| krd|  d } trt|  nt| |t| d S d }~X nX W d |j  X trtd| f  d S )Nz%r: listing directory   z.pyz%r: I/O Error: %sr   zchecking %r ...z%r: Token Error: %sz%r: Indentation Error: %sz)%r: *** Line %d: trouble in tab city! ***zoffending line: %rr   "z%r: Clean bill of health.)ospathisdirislinkr   printlistdirjoinnormcaser   tokenizeopenOSErrorr   r   generate_tokensreadline
TokenErrorIndentationErrorr   r"   r$   r#   r   reprclose)	filenamesnamefullnamefr   Znagbadliner   r   r   r   r   J   sT    



  

c               @   sL   e Zd Zd\ZZdd Zdd Zdd Zdd	 Zd
d Z	dd Z
dd ZdS )
Whitespacez 	c       	      C   s   || _ tjtj }}g }d } }}x~| j D ]t}||krJ|d }|d }q,||kr|d }|d }|t|kr|dg|t| d   }|| d ||< d}q,P q,W || _|| _t||f| _t|dk| _	d S )Nr   r   )
rawrB   STlennnttuplenorm	is_simple)	r    ZwsrD   rE   countbrG   rH   Zchr   r   r   r!      s(    
zWhitespace.__init__c             C   s   | j \}}tt|d |S )Nr   )rJ   maxrF   )r    rL   trailingr   r   r   longest_run_of_spaces   s    
z Whitespace.longest_run_of_spacesc             C   sL   | j \}}d}x*t|t|D ]}||| ||   }qW |||| j   S )Nr   )rJ   rangerF   rH   )r    tabsizerL   rO   Zilir   r   r   indent_level   s
    
zWhitespace.indent_levelc             C   s   | j |j kS )N)rJ   )r    otherr   r   r   equal   s    zWhitespace.equalc             C   sf   t | j |j d }g }xFtd|d D ]4}| j||j|kr*|j|| j||j|f q*W |S )Nr   )rN   rP   rQ   rT   append)r    rU   rG   r   tsr   r   r   not_equal_witness   s    zWhitespace.not_equal_witnessc             C   sr   | j |j krdS | jr(|jr(| j|jkS t| j |j d }x.td|d D ]}| j||j|krNdS qNW dS )NFr      T)rG   rK   rH   rN   rP   rQ   rT   )r    rU   rG   rX   r   r   r   less   s    zWhitespace.lessc             C   sf   t | j |j d }g }xFtd|d D ]4}| j||j|kr*|j|| j||j|f q*W |S )Nr   )rN   rP   rQ   rT   rW   )r    rU   rG   r   rX   r   r   r   not_less_witness  s    zWhitespace.not_less_witnessN)r%   r&   r'   rD   rE   r!   rP   rT   rV   rY   r[   r\   r   r   r   r   rB      s   rB   c             C   s8   dd | D }d}t | dkr&|d }|d dj| S )Nc             s   s   | ]}t |d  V  qdS )r   N)r   ).0tupr   r   r   	<genexpr>  s    z#format_witnesses.<locals>.<genexpr>zat tab sizer   sr   z, )rF   r1   )wZfirstsprefixr   r   r   format_witnesses  s
    rc   c             C   s  t j}t j}t j}t jt jf}tdg}d}x| D ]\}}}	}
}||krNd}q2||krd}t|}|d j|s|d j|}dt	| }t
|	d |||j| q2||krd}|d= q2|o||kr2d}t|}|d	 j|s2|d
 j|}dt	| }t
|	d ||q2W d S )Nr   r   r   zindent not greater e.g. zindent not equal e.g. rd   rd   rd   rd   )r3   INDENTDEDENTNEWLINECOMMENTr   rB   r[   r\   rc   r   rW   rV   rY   )tokensre   rf   rg   ZJUNKindentsZcheck_equaltypetokenstartendr   ZthisguyZwitnessr   r   r   r   r     s6    

__main__)__version__r+   r
   r   r3   hasattr
ValueError__all__r   r   r   r   	Exceptionr   r   rB   rc   r   r%   r   r   r   r   <module>   s&   

= 7