
    c                     X    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dS )    N)nodes)checkers)utilsc            	           e Zd ZdZddiZdZddddd	d
dddZej        fZ	d dD             Z
 ej        d          dej        ddf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                     g | ]}d | S )z	builtins. ).0qnames     Glib/python3.11/site-packages/pylint/checkers/refactoring/not_checker.py
<listcomp>zNotChecker.<listcomp>)   s!    PPP%-e--PPP    )set	frozensetr	   nodereturnNc                    |j         dk    rd S |j        }t          |t          j                  rP|j         dk    rE|                     d||                                |j                                        f           d S t          |t          j                  rL|j        }t          |j
                  dk    rd S |j
        d         \  }}|| j        vrd S |                    d          }|j        dk    r|d	k    rd S t          j        |          t          j        |          fD ]W}|s d S t          || j                  r d S t          |t"          j                  r|                                | j        v r d S X|                                 d
| j        |          d
|                                 }|                     d||                                |f           d S d S )Nnotr	   )r   args   r   T)future__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rightr0   _type
suggestions	            r   visit_unaryopzNotChecker.visit_unaryop+   s'   7e 	F,gu}-- !	'*2E !	nn&&(A(A(C(CD      
 // 	<D7;!# %k!nOHet. JJdJ++EzX% (d*: /$//1G1GH 	 	 FFeT%788 FFug&677)@@ FF>>##UUdoh&?UU%//BSBSUU  T1A1A:0N      3	 	r   )__name__
__module____qualname____doc__msgsr1   r/   r   Setr3   r6   r   only_required_for_messagesr(   r<   r   r   r   r   r      s          	 
D D	 	J YLMPP;OPPP%U%n55&%- &D & & & 65& & &r   r   )r4   r   pylintr   pylint.checkersr   BaseCheckerr   r   r   r   <module>rG      s   
              ! ! ! ! ! !F F F F F% F F F F Fr   