§
    ÷yIf~  ã                  óš   — 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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d„ZdS )é    )Úannotations)ÚTYPE_CHECKING)Únodes)ÚBaseChecker)Ú	PYMETHODSÚdecorated_with_propertyÚis_overload_stubÚis_protocol_classÚoverrides_a_method)Ú	INFERENCE)ÚPyLinterc                  ób   ‡ — e Zd ZdZddddddgifiZdˆ fd„Zdd„Zdd„ZeZdd„Z	dd„Z
e
Zˆ xZS )ÚNoSelfUseCheckerÚno_self_useÚR6301zMethod could be a functionúno-self-usezYUsed when a method doesn't use its bound instance, and so could be written as a function.Ú	old_names)ÚR0201zold-no-self-useÚlinterr   ÚreturnÚNonec                óf   •— t          ¦   «                              |¦  «         g | _        d | _        d S ©N)ÚsuperÚ__init__Ú_first_attrsÚ_meth_could_be_func)Úselfr   Ú	__class__s     €úQ/var/www/piapp/venv/lib/python3.11/site-packages/pylint/extensions/no_self_use.pyr   zNoSelfUseChecker.__init__%   s1   ø€ Ý‰Œ×Ò˜Ñ Ô Ð Ø.0ˆÔØ04ˆÔ Ð Ð ó    Únodeú
nodes.Namec                óp   — | j         r,|j        | j         d         k    s| j         d         sd| _        dS dS dS )zYCheck if the name handle an access to a class member
        if so, register it.
        éÿÿÿÿFN)r   Únamer   ©r   r"   s     r    Ú
visit_namezNoSelfUseChecker.visit_name*   sO   € ð Ôð 	-ØŒI˜Ô*¨2Ô.Ò.Ð.°dÔ6GÈÔ6KÐ.à',ˆDÔ$Ð$Ð$ð	-ð 	-Ø.Ð.r!   únodes.FunctionDefc                ój   — |                      ¦   «         sd S d| _        |                      |¦  «         d S )NT)Ú	is_methodr   Ú_check_first_arg_for_typer'   s     r    Úvisit_functiondefz"NoSelfUseChecker.visit_functiondef3   s;   € Ø�~Š~ÑÔð 	ØˆFØ#'ˆÔ Ø×&Ò& tÑ,Ô,Ð,Ð,Ð,r!   c                ó  — |j         j        r|j         j        d         j        }n)|j         j         r|                     ¦   «         d         }nd}| j                             |¦  «         |j        dk    rd| j        d<   dS dS )z!Check the name of first argument.r   NÚstaticmethodr%   )ÚargsÚposonlyargsr&   Úargnamesr   ÚappendÚtype)r   r"   Ú	first_args      r    r,   z*NoSelfUseChecker._check_first_arg_for_type;   s‰   € ð Œ9Ô ð 	Øœ	Ô-¨aÔ0Ô5ˆIˆIØŒYŒ^ð 	ØŸš™œ¨Ô*ˆIˆIàˆIØÔ× Ò  Ñ+Ô+Ð+àŒ9˜Ò&Ð&Ø$(ˆDÔ˜bÑ!Ð!Ð!ð 'Ð&r!   c                ó  — |                      ¦   «         rÚ| j                             ¦   «         }|€dS |j                             ¦   «         }| j        rŸ|j        dk    r–|j        t          vrŠ| 	                    ¦   «         sxt          ||j        ¦  «        set          |¦  «        sXt          |¦  «        sKt          |¦  «        s>t          |¦  «        s1|                      d|t           ¬¦  «         dS dS dS dS dS dS dS dS dS dS dS )z¶On method node, check if this method couldn't be a function.

        ignore class, static and abstract methods, initializer,
        methods overridden from a parent class.
        NÚmethodr   )r"   Ú
confidence)r+   r   ÚpopÚparentÚframer   r4   r&   r   Úis_abstractr   r   Ú_has_bare_super_callr
   r	   Úadd_messager   )r   r"   ÚfirstÚ
class_nodes       r    Úleave_functiondefz"NoSelfUseChecker.leave_functiondefI   sK  € ð �>Š>ÑÔð 	QØÔ%×)Ò)Ñ+Ô+ˆEØˆ}Ø�Øœ×*Ò*Ñ,Ô,ˆJàÔ(ðQà”I Ò)Ð)Ø”I¥YÐ.Ð.à×$Ò$Ñ&Ô&ð /õ *¨*°d´iÑ@Ô@ð /õ /¨tÑ4Ô4ð	 /õ
 ,¨DÑ1Ô1ð /õ )¨Ñ4Ô4ð /õ (¨Ñ-Ô-ð /ð × Ò  °TÅiÐ ÑPÔPÐPÐPÐPð%	Qð 	Qð
Qð Qà)Ð)Ø.Ð.Ð.Ð.Ð.Ð.Ð.Ð.Ð.Ð.Ð.Ð.Ð.Ð.r!   ©r   r   r   r   )r"   r#   r   r   )r"   r)   r   r   )Ú__name__Ú
__module__Ú__qualname__r&   Úmsgsr   r(   r-   Úvisit_asyncfunctiondefr,   rA   Úleave_asyncfunctiondefÚ__classcell__)r   s   @r    r   r      sÄ   ø€ € € € € Ø€DàØ(Øð(àÐ7Ð8Ð9ð
ð€Dð5ð 5ð 5ð 5ð 5ð 5ð
-ð -ð -ð -ð-ð -ð -ð -ð /Ðð)ð )ð )ð )ðQð Qð Qð Qð4 /ÐÐÐÐÐr!   r   Úfundef_noder)   r   Úboolc                ó¶   — |                       t          j        ¦  «        D ]8}|j        }t	          |t          j        ¦  «        r|j        dk    r
|j        s dS Œ9dS )Nr   TF)Únodes_of_classr   ÚCallÚfuncÚ
isinstanceÚNamer&   r0   )rJ   ÚcallrO   s      r    r=   r=   f   s\   € Ø×*Ò*­5¬:Ñ6Ô6ð ð ˆØŒyˆÝ�d�EœJÑ'Ô'ð 	¨D¬I¸Ò,@Ð,@ÈÌÐ,@Ø�4�4øØˆ5r!   r   r   r   c                óJ   — |                       t          | ¦  «        ¦  «         d S r   )Úregister_checkerr   )r   s    r    ÚregisterrU   n   s%   € Ø
×ÒÕ,¨VÑ4Ô4Ñ5Ô5Ð5Ð5Ð5r!   N)rJ   r)   r   rK   rB   )Ú
__future__r   Útypingr   Úastroidr   Úpylint.checkersr   Úpylint.checkers.utilsr   r   r	   r
   r   Úpylint.interfacesr   Úpylint.lint.pylinterr   r   r=   rU   © r!   r    ú<module>r^      s(  ðð
 #Ð "Ð "Ð "Ð "Ð "à  Ð  Ð  Ð  Ð  Ð  à Ð Ð Ð Ð Ð à 'Ð 'Ð 'Ð 'Ð 'Ð 'ðð ð ð ð ð ð ð ð ð ð ð ð ð ð (Ð 'Ð 'Ð 'Ð 'Ð 'àð .Ø-Ð-Ð-Ð-Ð-Ð-ðJ/ð J/ð J/ð J/ð J/�{ñ J/ô J/ð J/ðZð ð ð ð6ð 6ð 6ð 6ð 6ð 6r!   