o
    ÚÁgô  ã                   @   s.   d dl Z d dlZd dlmZ G dd„ dƒZdS )é    N)Únodesc                   @   s,   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	S )
Ú	ASTWalkerc                 C   s.   d| _ t t¡| _t t¡| _|| _d| _d S )Nr   F)ÚnbstatementsÚcollectionsÚdefaultdictÚlistÚvisit_eventsÚleave_eventsÚlinterÚexception_msg)Úselfr
   © r   úU/home/ubuntu/cloudmapper/venv/lib/python3.10/site-packages/pylint/utils/ast_walker.pyÚ__init__   s
   
zASTWalker.__init__c                 C   s0   t |dƒsdS |jD ]}| j |¡r dS q
dS )NÚchecks_msgsTF)Úhasattrr   r
   Úis_message_enabled)r   ÚmethodÚmsg_descr   r   r   Ú_is_method_enabled   s   

ÿzASTWalker._is_method_enabledc                 C   sî   t ƒ }t ƒ }| j}| j}t|ƒD ]D}|dd… }|dkrq| d¡r9t||ƒ}|  |¡r8||  |¡ | |¡ q| d¡rTt||ƒ}	|  |	¡rT||  |	¡ | |¡ qt|ddƒ}
|
rst	j
D ]}|j ¡ }||vrr||  |
¡ q`dS dS )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   Úclsr   r   r   Úadd_checker   s:   



€



€

€üzASTWalker.add_checkerc              	   C   sÚ   |j j ¡ }| j |d¡}| j |d¡}z/|jr|  jd7  _|p"dD ]}||ƒ q#| ¡ D ]}|  	|¡ q.|p9dD ]}||ƒ q:W dS  t
yl   | jdu rkt| ¡ ddƒ}tdt|ƒ› d|› dƒ t ¡  d	| _‚ w )
zvcall visit events of astroid checkers for the given node, recurse on
        its children, then leave events.
        r   é   FÚfileNzException on node z
 in file 'ú'T)Ú	__class__r"   r#   r   Úgetr	   Úis_statementr   Úget_childrenÚwalkÚ	Exceptionr   r   ÚrootÚprintÚreprÚ	tracebackÚ	print_exc)r   Úastroidr*   r   r	   ÚcallbackÚchildr0   r   r   r   r6   9   s*   

ÿ
úzASTWalker.walkN)r"   Ú
__module__Ú__qualname__r   r   r.   r6   r   r   r   r   r   
   s
    r   )r   r;   r=   r   r   r   r   r   r   Ú<module>   s   