§
    ÷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 )Ú
NotCheckerzŸChecks 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  € àŒ7�eÒÐØˆFØ”,ˆå�g�uœ}Ñ-Ô-ð !	°'´*ÀÒ2EÐ2EØ×ÒØ&ØØ—n’nÑ&Ô&¨¬×(AÒ(AÑ(CÔ(CÐDð ñ ô ð ð ð õ
 ˜¥¤Ñ/Ô/ñ 	Ø”<ˆDå�7”;ÑÔ !Ò#Ð#Ø�Ø%œk¨!œn‰OˆH�eØ˜tœÐ.Ð.Ø�à—J’J‘L”LˆEØŒz˜XÒ%Ð%¨(°dÒ*:Ð*:Ø�Ýœ/¨$Ñ/Ô/µ´ÀÑ1GÔ1GÐHð 	ð 	�Øð Ø�F�FÝ˜e TÔ%7Ñ8Ô8ð Ø�F�Få˜u¥gÔ&6Ñ7Ô7ðàŸš™œ¨Ô)@Ð@Ð@à�F�Føà—>’>Ñ#Ô#ÐUÐU d¤o°hÔ&?ÐUÐUÀ%Ç/Â/ÑBSÔBSÐUÐUð ð ×ÒØ&¨T¸¿ºÑ9IÔ9IÈ:Ð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ð ”Y�L€Mà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   