
    {f                        d dl mZ d dlZd dlZd dlmZ d dlmZ d dlm	Z	m
Z
 d dlmZ e	rd dlmZ d dlmZ e
ej"                  gdf   Z G d	 d
      Zy)    )annotationsN)defaultdict)Sequence)TYPE_CHECKINGCallable)nodes)BaseChecker)PyLinterc                  ,    e Zd ZddZddZddZd	dZy)
	ASTWalkerc                ~    d| _         t        t              | _        t        t              | _        || _        d| _        y )Nr   F)nbstatementsr   listvisit_eventsleave_eventslinterexception_msg)selfr   s     S/home/lukas/deratizacia/env/lib/python3.12/site-packages/pylint/utils/ast_walker.py__init__zASTWalker.__init__   s3    ALTARALTAR"    c                Z     t        |d      syt         fd|j                  D              S )Nchecks_msgsTc              3  T   K   | ]  }j                   j                  |       ! y w)N)r   is_message_enabled).0mr   s     r   	<genexpr>z/ASTWalker._is_method_enabled.<locals>.<genexpr>(   s      Q4;;11!4Qs   %()hasattranyr   )r   methods   ` r   _is_method_enabledzASTWalker._is_method_enabled%   s'    v}-Qf>P>PQQQr   c                   t               }t               }| j                  }| j                  }t        |      D ]  }|dd }|dk(  r|j	                  d      rDt        ||      }| j                  |      s=||   j                  |       |j                  |       c|j	                  d      sut        ||      }	| j                  |	      s||   j                  |	       |j                  |        t        |dd      }
|
rIt        j                  D ]5  }|j                  j                         }||vs"||   j                  |
       7 yy)z>Walk to the checker's dir and collect visit and leave methods.   Ndefaultvisit_leave_visit_default)setr   r   dir
startswithgetattrr"   appendaddr   ALL_NODE_CLASSES__name__lower)r   checkervcidslcidsvisitsleavesmembercidv_methl_methr(   clss               r   add_checkerzASTWalker.add_checker*   s2   %%""""'l 	#F*Ci  * &1**623K&&v.IIcN""8, &1**623K&&v.IIcN	#   $?-- 6ll((*e#3K&&}56 r   c                p   |j                   j                  j                         }| j                  j	                  |d      }| j
                  j	                  |d      }	 |j                  r| xj                  dz  c_        |D ]
  } ||        |j                         D ]  }| j                  |        |D ]
  } ||        y# t        $ rh | j                  du rXt        |j                         dd      }t        d|d| dt        j                   	       t#        j$                          d
| _         w xY w)zvCall visit events of astroid checkers for the given node, recurse on
        its children, then leave events.
            FfileNzException on node z
 in file '')r@   T)	__class__r0   r1   r   getr   is_statementr   get_childrenwalk	Exceptionr   r,   rootprintsysstderr	traceback	print_exc)r   astroidr8   r   r   callbackchildr@   s           r   rF   zASTWalker.walkH   s.    ((..0 /3.?.?.C.CC.L.2.?.?.C.CC.L	##!!Q&!( "!" !--/ !		% !( "!" 		!!U*w||~vt<(:dV1E ##%%)"		s   A%C A1D5N)r   r
   returnNone)r!   AstCallbackrQ   bool)r2   r	   rQ   rR   )rN   znodes.NodeNGrQ   rR   )r0   
__module____qualname__r   r"   r<   rF   r>   r   r   r   r      s    #R
6<"r   r   )
__future__r   rJ   rL   collectionsr   collections.abcr   typingr   r   rN   r   pylint.checkers.base_checkerr	   pylint.lintr
   NodeNGrS   r   r>   r   r   <module>r^      sH   
 # 
  # $ * 8$ ~t+,N Nr   