o
    g\                     @   sP   d dl m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 )
    )nodes)BaseTokenChecker)check_messages)IAstroidCheckerITokenCheckerc                   @   s   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ejddfddZdejddfddZdejddfddZeddejddfddZdS )ElseifUsedCheckerz8Checks for use of "else if" when an "elif" could be usedelse_if_used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   Z/home/ubuntu/cloudmapper/venv/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_tokensr   returnc                 C   s   |    d S r   )r   )r   r   r   r   r   leave_module4   s   zElseifUsedChecker.leave_modulenodec                 C   s$   t |jtjr	d S |  jd7  _d S )N   )
isinstanceparentr   FormattedValuer   r   r   r   r   r   visit_ifexp7   s   zElseifUsedChecker.visit_ifexpc                 C   s   |  j t|j7  _ d S r   )r   lenifsr"   r   r   r   visit_comprehension<   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   )r   r    r   Iforelser   r   add_message)r   r   r(   r   r   r   visit_if?   s   zElseifUsedChecker.visit_ifr   )__name__
__module____qualname____doc__r   r   __implements__namemsgsr   r   r   r   Moduler   IfExpr#   Comprehensionr&   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)register_checkerr   )r   r   r   r   registerJ   s   r6   N)astroidr   pylint.checkersr   pylint.checkers.utilsr   pylint.interfacesr   r   r   r6   r   r   r   r   <module>   s   5