
    c                        d dl mZ d dlmZ d dlmZ d dlmZ d dlm	Z	 d dl
mZ erd dlmZ  G d d	e	          ZddZdS )    )annotations)zip_longest)TYPE_CHECKING)nodes)BaseChecker)HIGH)PyLinterc                  <    e Zd ZdZdZdddZdZddZddZddZ	dS )LambdaExpressionCheckerz2Check for unnecessary usage of lambda expressions.zlambda-expressions)z\Lambda expression assigned to a variable. Define a function using the "def" keyword instead.unnecessary-lambda-assignmentzvUsed when a lambda expression is assigned to variable rather than defining a standard function with the "def" keyword.)zILambda expression called directly. Execute the expression inline instead.unnecessary-direct-lambda-callz[Used when a lambda expression is directly called rather than executing its contents inline.)C3001C3002 nodenodes.AssignreturnNonec                   t          |j        d         t          j                  rCt          |j        t          j                  r$|                     d|j        t                     dS t          |j        d         t          j                  rt          |j        t          j        t          j	        f          rt          |j        d         j        |j        j                  D ]a\  }}|| dS t          |t          j                  r7t          |t          j                  r|                     d|t                     ^dS dS dS )z5Check if lambda expression is assigned to a variable.r   r   r   
confidenceN)
isinstancetargetsr   
AssignNamevalueLambdaadd_messager   TupleListr   elts)selfr   lhs_elemrhs_elems       Blib/python3.11/site-packages/pylint/checkers/lambda_expressions.pyvisit_assignz$LambdaExpressionChecker.visit_assign(   sf   dl1ou'788 	ZJ>
 >
 	 /Z      
 Q55 	*Jej1;
 ;
 	 '2Q$djo' '  "(  x EEh(899 jel? ?  $$7%#' %   !	 	 	 	     nodes.NamedExprc                    t          |j        t          j                  rCt          |j        t          j                  r&|                     d|j        t                     d S d S d S )Nr   r   )r   targetr   r   r   r   r   r   r!   r   s     r$   visit_namedexprz'LambdaExpressionChecker.visit_namedexprH   s{    dk5#344 	J:
 :
 	 /Z      	 	 	 	r&   
nodes.Callc                    t          |j        t          j                  r|                     d|t
                     dS dS )z.Check if lambda expression is called directly.r   r   N)r   funcr   r   r   r   r*   s     r$   
visit_callz"LambdaExpressionChecker.visit_callR   sR    di.. 	0      	 	r&   N)r   r   r   r   )r   r'   r   r   )r   r,   r   r   )
__name__
__module____qualname____doc__namemsgsoptionsr%   r+   r/   r   r&   r$   r   r      sy        <<D

 D G   @        r&   r   linterr	   r   r   c                J    |                      t          |                      d S )N)register_checkerr   )r7   s    r$   registerr:   \   s%    
3F;;<<<<<r&   N)r7   r	   r   r   )
__future__r   	itertoolsr   typingr   astroidr   pylint.checkersr   pylint.interfacesr   pylint.lintr	   r   r:   r   r&   r$   <module>rB      s   
 # " " " " " ! ! ! ! ! !                   ' ' ' ' ' ' " " " " " " %$$$$$$F F F F Fk F F FR= = = = = =r&   