
    c0	                        d Z ddlmZ ddlmZ ddlmZ ddlmZm	Z	 erddl
mZ ddd	d
dZ ed          Z G d de          ZddZdS )zjChecks for yoda comparisons (variable before constant)
See https://en.wikipedia.org/wiki/Yoda_conditions.
    )annotations)TYPE_CHECKING)nodes)BaseCheckerutils)PyLinter>>=<<=)r   r   r	   r
   )z==z!=r   r	   r   r
   c                  l    e Zd ZdZdZddddddgifiZd	ZddZ ej	        d          dd            Z
dS )"MisplacedComparisonConstantCheckerz1Checks the placement of constants in comparisons.zcomparison-placementC2201zComparison should be %smisplaced-comparison-constantzUsed when the constant is placed on the left side of a comparison. It is usually clearer in intent to place it in the right hand side of the comparison.	old_names)C0122z!old-misplaced-comparison-constant nodenodes.Compareleftnodes.NodeNGrightoperatorstrreturnNonec                    t          |t          j                  rd S t                              ||          }|                                 d| d|j        }|                     d||f           d S )N r   )r   args)
isinstancer   ConstREVERSED_COMPSget	as_stringvalueadd_message)selfr   r   r   r   
suggestions         Flib/python3.11/site-packages/pylint/extensions/comparison_placement.py_check_misplaced_constantz<MisplacedComparisonConstantChecker._check_misplaced_constant*   s}     eU[)) 	F!%%h99))EEHEEtzEE
8t:-XXXXX    c                    t          |j                  dk    rd S |j        }|j        d         \  }}|t          v r4t	          |t
          j                  r|                     ||||           d S d S d S )N   r   )lenopsr   COMPARISON_OPERATORSr    r   r!   r*   )r'   r   r   r   r   s        r)   visit_comparez0MisplacedComparisonConstantChecker.visit_compare7   s     tx==A 	Fy(1+%++ 	H
40M0M 	H**4uhGGGGG	H 	H 	H 	Hr+   N)
r   r   r   r   r   r   r   r   r   r   )r   r   r   r   )__name__
__module____qualname____doc__namemsgsoptionsr*   r   only_required_for_messagesr1   r   r+   r)   r   r      s        ;; "D%+A IJK
	D GY Y Y Y &U%&EFF	H 	H 	H GF	H 	H 	Hr+   r   linterr   r   r   c                J    |                      t          |                      d S )N)register_checkerr   )r:   s    r)   registerr=   D   s%    
>vFFGGGGGr+   N)r:   r   r   r   )r5   
__future__r   typingr   astroidr   pylint.checkersr   r   pylint.lintr   r"   	frozensetr0   r   r=   r   r+   r)   <module>rD      s   
  # " " " " "                   . . . . . . . . %$$$$$$$S== y!CDD )H )H )H )H )H )H )H )HXH H H H H Hr+   