
    yIf                     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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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
    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isc                     g | ]}d | S )z	builtins. ).0qnames     [/var/www/piapp/venv/lib/python3.11/site-packages/pylint/checkers/refactoring/not_checker.py
<listcomp>zNotChecker.<listcomp>+   s!    PPP%-e--PPP    )set	frozenset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                  rJ|j        }t          |j
                  dk    rd S |j
        d         \  }}|| j        vrd S |                                }|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   __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rightr1   _type
suggestions	            r   visit_unaryopzNotChecker.visit_unaryop-   s   7eF,gu}-- !	'*2E2E&nn&&(A(A(C(CD      
 // 	<D7;!##%k!nOHet..JJLLEzX%%(d*:*:/$//1G1GH 	 	 FFeT%788 FFug&677)@@@FF>>##UUdoh&?UU%//BSBSUU  &T9I9I:8V      3	 	r   )__name__
__module____qualname____doc__msgsr2   r0   r   Setr4   r7   r   only_required_for_messagesr)   r=   r   r   r   r   r      s          	,"F456
D D	 	J YLMPP;OPPP%U%&<==&%- &D & & & >=& & &r   r   )r5   r   pylintr   pylint.checkersr   BaseCheckerr   r   r   r   <module>rH      s   
              ! ! ! ! ! !H H H H H% H H H H Hr   