
Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­
<!DOCTYPE html>
<html>
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rœeƒ  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 |s–tdtjd dƒ d S x|D ]}t|ƒ qœW 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| ƒr�t jj| ƒ r�tr,td| f ƒ t j| ƒ}xT|D ]L}t jj| |ƒ}t jj|ƒrht jj|ƒ s€t 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rät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�r¶td	| |f ƒ td
|f ƒ t|jƒ ƒ n6d| k�rÌd|  d } t�rÜt| ƒ 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r¦d}t|ƒ}|d j|ƒsš|d j|ƒ}dt	|ƒ }t
|	d ||ƒ‚|j|ƒ q2||krºd}|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