a �DOg�,�@s�dZddlZddlZddlZeed�s.ed��gd�Zdadadd�Z dd �Z Gd d �d e �Z d d �Z Gdd�d�Zdd�Zdd�Zedkr�e �dS)�6�N�NLz4tokenize.NL doesn't exist -- tokenize module too old)�check�NannyNag�process_tokenscGs6d}|D]}tj�|t|��d}qtj�d�dS)N�� � )�sys�stderr�write�str)�args�sep�arg�r� /usr/lib64/python3.9/tabnanny.py�errprint"s rc Cs�ddl}z|�tjdd�d�\}}Wn0|jyV}zt|�WYd}~dSd}~00|D](\}}|dkrttda|dkr\tdaq\|s�tdtjdd�dS|D] }t|�q�dS)Nr�Zqvz-qz-vzUsage:z[-v] file_or_directory ...)�getoptr �argv�errorr� filename_only�verboser)rZoptsr�msg�o�arrrr�main)s   rc@s,eZdZdd�Zdd�Zdd�Zdd�Zd S) rcCs||||_|_|_dS�N)�linenor�line)�selfrrr rrr�__init__BszNannyNag.__init__cCs|jSr)r�r!rrr� get_linenoDszNannyNag.get_linenocCs|jSr)rr#rrr�get_msgFszNannyNag.get_msgcCs|jSr)r r#rrr�get_lineHszNannyNag.get_lineN)�__name__� __module__� __qualname__r"r$r%r&rrrrr=src CsXtj�|�r�tj�|�s�tr*td|f�t�|�}|D]J}tj�||�}tj�|�rbtj�|�rztj�|dd��dkr8t |�q8dSzt � |�}Wn6t y�}zt d||f�WYd}~dSd}~00tdkr�td|��zPztt �|j��W�n,t j�y@}z(t d||f�WYd}~W|��dSd}~0t�y�}z(t d||f�WYd}~W|��dSd}~0t�y(}z�|��}|��}t�r�td ||f�td |f�t|���n6d |v�r�d |d }t�r�t|�nt||t|��WYd}~W|��dSd}~00W|��n |��0t�rTtd |f�dS)Nz%r: listing directory�����z.pyz%r: I/O Error: %srzchecking %r ...z%r: Token Error: %sz%r: Indentation Error: %sz)%r: *** Line %d: trouble in tab city! ***zoffending line: %rr�"z%r: Clean bill of health.)�os�path�isdir�islinkr�print�listdir�join�normcaser�tokenize�open�OSErrorrr�generate_tokens�readline� TokenError�close�IndentationErrorrr$r&r%r�repr) �file�names�name�fullname�frZnagZbadliner rrrrKs`    ��   �  �  �rc@sLeZdZd\ZZdd�Zdd�Zdd�Zdd �Zd d �Z d d �Z dd�Z dS)� Whitespacez c Cs�||_tjtj}}g}d}}}|jD]v}||krH|d}|d}q*||kr�|d}|d}|t|�kr�|dg|t|�d}||d||<d}q*q�q*||_||_t|�|f|_t|�dk|_ dS)Nrr) �rawrB�S�T�len�n�nt�tuple�norm� is_simple) r!�wsrDrE�count�brGrHZchrrrr"�s(    zWhitespace.__init__cCs|j\}}tt|�d|�S�Nr)rJ�maxrF)r!rM�trailingrrr�longest_run_of_spaces�s z Whitespace.longest_run_of_spacescCsH|j\}}d}t|t|��D]}|||||}q||||jS)Nr)rJ�rangerFrH)r!�tabsizerMrQZil�irrr� indent_level�s  zWhitespace.indent_levelcCs |j|jkSr)rJ)r!�otherrrr�equal�szWhitespace.equalcCsbt|��|���d}g}td|d�D]4}|�|�|�|�kr(|�||�|�|�|�f�q(|SrO�rPrRrSrV�append�r!rWrGr�tsrrr�not_equal_witness�s���zWhitespace.not_equal_witnesscCsp|j|jkrdS|jr(|jr(|j|jkSt|��|���d}td|d�D]}|�|�|�|�krLdSqLdS)NFr�T)rGrKrHrPrRrSrV)r!rWrGr\rrr�less�s   ��zWhitespace.lesscCsbt|��|���d}g}td|d�D]4}|�|�|�|�kr(|�||�|�|�|�f�q(|SrOrYr[rrr�not_less_witnesss���zWhitespace.not_less_witnessN) r'r(r)rDrEr"rRrVrXr]r_r`rrrrrB�srBcCs8dd�|D�}d}t|�dkr&|d}|dd�|�S)Ncss|]}t|d�VqdS)rN)r )�.0�tuprrr� �z#format_witnesses..z at tab sizer�srz, )rFr2)�wZfirsts�prefixrrr�format_witnessess  rhcCstj}tj}tj}tjtjf}td�g}d}|D]�\}}} } } ||krLd}q0||kr�d}t|�} |d�| �s�|d�| �} dt | �}t | d|| ��|� | �q0||kr�d}|d=q0|r0||vr0d}t| �} |d� | �s0|d� | �} dt | �}t | d|| ��q0dS)Nrrr�����zindent not greater e.g. zindent not equal e.g. )r4�INDENT�DEDENT�NEWLINE�COMMENTrrBr_r`rhrrZrXr])�tokensrjrkrlZJUNK�indentsZ check_equal�type�token�start�endr ZthisguyZwitnessrrrrrs6       r�__main__)� __version__r,r r4�hasattr� ValueError�__all__rrrr� ExceptionrrrBrhrr'rrrr�s$ =7