o
    g
                     @   sF   d dl Z d dl mZ d dlmZmZ d dlmZ G dd dejZdS )    N)nodes)checkers
interfaces)utilsc                	   @   sn   e Zd ZdZejfZddiZdZddddd	d
dddZ	e
jfZdd dD Zedde
jddfddZdS )
NotCheckerzchecks for too many not in comparison expressions

    - "not not" should trigger a warning
    - "not" followed by a comparison should trigger a warning
    C0113)zConsider changing "%s" to "%s"unneeded-notz=Used when a boolean expression contains an unneeded negation.refactoring>=><=<!===znot inzis not)r   r   r   r
   r   r   inisc                 C   s   g | ]}d | qS )z	builtins. ).0qnamer   r   e/home/ubuntu/cloudmapper/venv/lib/python3.10/site-packages/pylint/checkers/refactoring/not_checker.py
<listcomp>*   s    zNotChecker.<listcomp>)set	frozensetr   nodereturnNc           	      C   sB  |j dkrd S |j}t|tjr&|j dkr&| jd|| |j fd d S t|tjr|j}t	|j
dkr8d S |j
d \}}|| jvrFd S | }|jdkrU|dkrUd S t|t|fD ] }|sf d S t|| jro d S t|tjr| | jv r d S q_|  d| j|  d|  }| jd|| |fd d S d S )	Nnotr   )r   args   r   __ne__r    )opoperand
isinstancer   UnaryOpadd_message	as_stringCompareleftlenops
reverse_opframenamer   	node_typeskipped_nodesastroidInstancer   skipped_classnames)	selfr   r!   r'   operatorrightr+   _type
suggestionr   r   r   visit_unaryop,   sF   



 
zNotChecker.visit_unaryop)__name__
__module____qualname____doc__r   IAstroidChecker__implements__msgsr,   r*   r   Setr.   r1   r   check_messagesr#   r7   r   r   r   r   r      s&    r   )	r/   r   pylintr   r   pylint.checkersr   BaseCheckerr   r   r   r   r   <module>   s
   