o
    bk	                     @   sL   d dl Z d dlmZ d dlmZ d dlmZmZ G dd deZdd Z	dS )	    N)BaseTokenChecker)check_messages)ITokenCheckerIAstroidCheckerc                   @   sf   e Zd ZdZeefZdZddiZdddZ	dd	 Z
d
d Zdd Zdd Zdd Zeddd ZdS )ElseifUsedCheckerz=Checks for use of "else if" when an "elif" could be used
    Zelse_if_usedZR5501)z*Consider using "elif" instead of "else if"else-if-usedzUsed when an else statement is immediately followed by an if statement and does not contain statements that would be unrelated to it.Nc                 C   s   t | | |   d S N)r   __init___init)selflinter r   [/var/www/secure340b-portal/env/lib/python3.10/site-packages/pylint/extensions/check_elif.pyr	       s   zElseifUsedChecker.__init__c                 C   s   g | _ d| _d S )Nr   )_elifs_if_counter)r   r   r   r   r
   $   s   
zElseifUsedChecker._initc                 C   sB   |D ]\}}}}}|dkr| j d q|dkr| j d qd S )NelifTifF)r   append)r   tokens_tokenr   r   r   process_tokens(   s   z ElseifUsedChecker.process_tokensc                 C   s   |    d S r   )r
   r   r   r   r   r   leave_module0   s   zElseifUsedChecker.leave_modulec                 C   s   |  j d7  _ d S )N   )r   r   r   r   r   visit_ifexp3   s   zElseifUsedChecker.visit_ifexpc                 C   s   |  j t|j7  _ d S r   )r   lenifs)r   noder   r   r   visit_comprehension6   s   z%ElseifUsedChecker.visit_comprehensionr   c                 C   sP   t |jtjr|jj}|r||gkr| j| j s| jd|d |  jd7  _d S )Nr   )r   r   )
isinstanceparentastroidIforelser   r   Zadd_message)r   r   r$   r   r   r   visit_if9   s   zElseifUsedChecker.visit_ifr   )__name__
__module____qualname____doc__r   r   Z__implements__nameZmsgsr	   r
   r   r   r   r   r   r%   r   r   r   r   r      s    

r   c                 C   s   |  t|  dS )zRequired method to auto register this checker.

    :param linter: Main interface object for Pylint plugins
    :type linter: Pylint object
    N)Zregister_checkerr   )r   r   r   r   registerD   s   r+   )
r"   Zpylint.checkersr   Zpylint.checkers.utilsr   Zpylint.interfacesr   r   r   r+   r   r   r   r   <module>   s   	4