
    yIfJ	                        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	m
Z
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)TYPE_CHECKING)nodes)BaseChecker)DUNDER_METHODSDUNDER_PROPERTIESEXTRA_DUNDER_METHODS)HIGH)PyLinterc                  B    e Zd ZdZdZddiZdg dddd	ffZddZddZdS )DunderCheckerz!Checks related to dunder methods.dunderW3201)z(Bad or misspelled dunder method name %s.bad-dunder-nameznUsed when a dunder method is misspelled or defined with a name not within the predefined list of dunder names.zgood-dunder-namescsvz<comma-separated names>z2Good dunder names which should always be accepted.)defaulttypemetavarhelpreturnNonec                    t           t          z   | j        j        j        z   | _        t          j                    D ]S\  }}|| j        j        j        k    r9| j        	                    t          |                                                     Td S N)r	   r   linterconfiggood_dunder_names_dunder_methodsr   items
py_versionextendlistkeys)self
since_versdunder_methodss      L/var/www/piapp/venv/lib/python3.11/site-packages/pylint/extensions/dunder.pyopenzDunderChecker.open+   s      k 23 	
 +9*>*@*@ 	I 	I&JT[/:::$++D1D1D1F1F,G,GHHH	I 	I    nodenodes.FunctionDefc                   |                                 sdS |j                            d          rM|j                            d          r5|j        | j        vr)|                     d||j        t                     dS dS dS dS )zoCheck if known dunder method is misspelled or dunder name is not one
        of the pre-defined names.
        N_r   )r)   args
confidence)	is_methodname
startswithendswithr   add_messager
   )r#   r)   s     r&   visit_functiondefzDunderChecker.visit_functiondef5   s    
 ~~ 	F I  %%
		""3''
	 	!555!i	      
	 
	 
	 
	 65r(   N)r   r   )r)   r*   r   r   )	__name__
__module____qualname____doc__r0   msgsoptionsr'   r4    r(   r&   r   r      s        ++D 
D  4L	 	

GI I I I     r(   r   r   r   r   r   c                J    |                      t          |                      d S r   )register_checkerr   )r   s    r&   registerr>   K   s$    
M&1122222r(   N)r   r   r   r   )
__future__r   typingr   astroidr   pylint.checkersr   pylint.constantsr   r   r	   pylint.interfacesr
   pylint.lintr   r   r>   r;   r(   r&   <module>rF      s   
 # " " " " "                   ' ' ' ' ' ' T T T T T T T T T T " " " " " " %$$$$$$5 5 5 5 5K 5 5 5p3 3 3 3 3 3r(   