
    e                     Z    d dl Z d dl mZ d dlmZ d dlmZ  G d dej                        Zy)    N)nodes)checkers)utilsc            	           e Zd ZdZddddddgifiZdZd	d
dddddddZej                  fZ	dD  cg c]  }d| 	 c}} Z
 ej                  d      dej                  ddfd       Zyc c}} w )
NotCheckerzChecks for too many not in comparison expressions.

    - "not not" should trigger a warning
    - "not" followed by a comparison should trigger a warning
    C0117zConsider changing "%s" to "%s"unnecessary-negationzuUsed when a boolean expression contains an unneeded negation, e.g. when two negation operators cancel each other out.	old_names)C0113zunneeded-notrefactoring>=><=<!===znot inzis not)r   r   r   r   r   r   inis)set	frozensetz	builtins.nodereturnNc                    |j                   dk7  ry |j                  }t        |t        j                        rL|j                   dk(  r=| j                  d||j                         |j                  j                         f       y t        |t        j                        rG|j                  }t        |j                        dkD  ry |j                  d   \  }}|| j                  vry |j                         }|j                  dk(  r|dk(  ry t        j                  |      t        j                  |      fD ]W  }|s y t        || j                         r y t        |t"        j$                        s:|j'                         | j(                  v sW y  |j                          d| j                  |    d|j                          }| j                  d||j                         |f       y y )	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Instanceqnameskipped_classnames)	selfr   r    r&   operatorrightr*   _type
suggestions	            I/usr/lib/python3/dist-packages/pylint/checkers/refactoring/not_checker.pyvisit_unaryopzNotChecker.visit_unaryop-   s   77e,,gu}}-'**2E&nn&(A(A(CD  
 /<<D7;;!#%kk!nOHet.JJLEzzX%(d*://$/1GH 	eT%7%78ug&6&67)@)@@	 >>#$Adooh&?%@%//BSATU  &T9I:8V  3 0    )__name__
__module____qualname____doc__msgsr+   r)   r   Setr-   r1   r   only_required_for_messagesr"   r8   ).0r0   s   00r7   r   r      s     	,"F456
D D	J YYLM;OP%IeW-P%U%%&<=&%-- &D & >& Qs   A)r   )r.   r   pylintr   pylint.checkersr   BaseCheckerr    r9   r7   <module>rF      s'   
    !H%% Hr9   