§
    öyIfÀ  ã                  óŽ   — d Z ddlmZ ddlmZ ddlZddlmZmZmZ ddl	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 )z#Variables checkers for Python code.é    )Úannotations)ÚTYPE_CHECKINGN)Ú	argumentsÚbasesÚnodes)ÚBaseCheckerÚutils)Ú	INFERENCE)ÚPyLinterc                  ó†   — e Zd ZdZdZddddddifd	œZd
dddddœffZ ej        dd¦  «        dd„¦   «         Z	dd„Z
dd„ZdS )ÚMethodArgsCheckerzpBaseChecker for method_args.

    Checks for
    * missing-timeout
    * positional-only-arguments-expected
    Úmethod_args)zTMissing timeout argument for method '%s' can cause your program to hang indefinitelyúmissing-timeoutzïUsed when a method needs a 'timeout' parameter in order to avoid waiting for a long time. If no timeout is specified explicitly the default value is used. For example for 'requests' the program will never time out (i.e. hang indefinitely).zI`%s()` got some positional-only arguments passed as keyword arguments: %sú"positional-only-arguments-expectedz’Emitted when positional-only arguments have been passed as keyword arguments. Remove the keywords for the affected arguments in the function call.Ú
minversion)é   é   )ÚW3101ÚE3102ztimeout-methods)zrequests.api.deletezrequests.api.getzrequests.api.headzrequests.api.optionszrequests.api.patchzrequests.api.postzrequests.api.putzrequests.api.requestÚcsvz<comma separated list>zzList of qualified names (i.e., library.method) which require a timeout parameter e.g. 'requests.api.get,requests.api.post')ÚdefaultÚtypeÚmetavarÚhelpr   Únodeú
nodes.CallÚreturnÚNonec                óZ   — |                       |¦  «         |                      |¦  «         d S ©N)Ú_check_missing_timeoutÚ)_check_positional_only_arguments_expected)Úselfr   s     úO/var/www/piapp/venv/lib/python3.11/site-packages/pylint/checkers/method_args.pyÚ
visit_callzMethodArgsChecker.visit_callE   s2   € ð 	×#Ò# DÑ)Ô)Ð)Ø×6Ò6°tÑ<Ô<Ð<Ð<Ð<ó    c                ó,  — t          j        |j        ¦  «        }t          j                             |¦  «        }|rÑ|                     ¦   «         s¿t          |t          j	        t          j
        t          j        f¦  «        r�|                     ¦   «         | j        j        j        v rmd„ |j        D ¦   «         }|                     |j        ¦  «         d|vr@|                      d||j                             ¦   «         ft,          ¬¦  «         dS dS dS dS dS dS )zÈCheck if the call needs a timeout parameter based on package.func_name
        configured in config.timeout_methods.

        Package uses inferred node in order to know the package imported.
        c                ó   — g | ]	}|j         ‘Œ
S © ©Úarg)Ú.0Úkeywords     r$   ú
<listcomp>z<MethodArgsChecker._check_missing_timeout.<locals>.<listcomp>\   s   € Ð JÐ JÐ J° ¤Ð JÐ JÐ Jr&   Útimeoutr   ©r   ÚargsÚ
confidenceN)r	   Ú
safe_inferÚfuncr   ÚCallSiteÚ	from_callÚhas_invalid_keywordsÚ
isinstancer   ÚFunctionDefÚClassDefr   ÚUnboundMethodÚqnameÚlinterÚconfigÚtimeout_methodsÚkeywordsÚextendÚkeyword_argumentsÚadd_messageÚ	as_stringr
   )r#   r   ÚinferredÚ	call_siterB   s        r$   r!   z(MethodArgsChecker._check_missing_timeoutL   s;  € õ Ô# D¤IÑ.Ô.ˆÝÔ&×0Ò0°Ñ6Ô6ˆ	àð	à×2Ò2Ñ4Ô4ð	õ Ø�5Ô,­e¬n½eÔ>QÐRñô ð	ð —’Ñ Ô  D¤KÔ$6Ô$FÐFÐFà JÐ J¸D¼MÐ JÑ JÔ JÐØ×$Ò$ YÔ%@ÑAÔAÐAØÐ 1Ð1Ð1Ø× Ò Ø%ØØœ)×-Ò-Ñ/Ô/Ð1Ý(ð	 !ñ ô ð ð ð ð	ð 	ð 	ð 	ð 	ð 	ð GÐFð 2Ð1r&   c           	     óN  ‡— t          j        |j        ¦  «        }t          |t          j        t          j        f¦  «        r-|j        }t          |t          j        t          j        f¦  «        °-t          |t          j	        ¦  «        r|j
        j        sdS |j
        j        rdS d„ |j
        j        D ¦   «         Šˆfd„|j        D ¦   «         }|sdS |                      d||j                             ¦   «         d                     d„ |D ¦   «         ¦  «        ft"          ¬¦  «         dS )z~Check if positional only arguments have been passed as keyword arguments by
        inspecting its method definition.
        Nc                ó   — g | ]	}|j         ‘Œ
S r)   )Úname)r,   Úas     r$   r.   zOMethodArgsChecker._check_positional_only_arguments_expected.<locals>.<listcomp>t   s   € ÐCÐCÐC˜q�A”FÐCÐCÐCr&   c                ó0   •— g | ]}|j         ‰v ¯|j         ‘ŒS r)   r*   )r,   ÚkÚpos_argss     €r$   r.   zOMethodArgsChecker._check_positional_only_arguments_expected.<locals>.<listcomp>u   s'   ø€ ÐAÐAÐA˜¨q¬u¸Ð/@Ð/@ˆqŒuÐ/@Ð/@Ð/@r&   r   z, c              3  ó"   K  — | ]
}d |› d �V — ŒdS )ú'Nr)   )r,   rL   s     r$   ú	<genexpr>zNMethodArgsChecker._check_positional_only_arguments_expected.<locals>.<genexpr>|   s*   è è € Ð2IÐ2IÀ°8°q°8°8°8Ð2IÐ2IÐ2IÐ2IÐ2IÐ2Ir&   r0   )r	   r3   r4   r8   ÚastroidÚBoundMethodr;   Ú_proxiedr   r9   r1   ÚposonlyargsÚkwargr@   rC   rD   Újoinr
   )r#   r   Úinferred_funcÚkwsrM   s       @r$   r"   z;MethodArgsChecker._check_positional_only_arguments_expectedf   s<  ø€ õ Ô(¨¬Ñ3Ô3ˆÝ˜­Ô)<½gÔ>SÐ(TÑUÔUð 	3Ø)Ô2ˆMõ ˜­Ô)<½gÔ>SÐ(TÑUÔUð 	3õ �}¥uÔ'8Ñ:Ô:ð	àÔ"Ô.ð	ð ˆFØÔÔ#ð 	ØˆFØCÐC MÔ$6Ô$BÐCÑCÔCˆØAÐAÐAÐA˜dœmÐAÑAÔAˆØð 	ØˆFà×ÒØ0ØØ”)×%Ò%Ñ'Ô'¨¯ªÐ2IÐ2IÀSÐ2IÑ2IÔ2IÑ)IÔ)IÐJÝ ð	 	ñ 	
ô 	
ð 	
ð 	
ð 	
r&   N)r   r   r   r   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__rI   ÚmsgsÚoptionsr	   Úonly_required_for_messagesr%   r!   r"   r)   r&   r$   r   r      sß   € € € € € ðð ð €Dð
ð XØ0ðSà˜6Ð"ð
ðð €Dð& ð	ð Ø3ð<ðð ð	
ð€Gð, &€UÔ%ØÐ?ñô ð=ð =ð =ñô ð=ðð ð ð ð4
ð 
ð 
ð 
ð 
ð 
r&   r   r=   r   r   r   c                óJ   — |                       t          | ¦  «        ¦  «         d S r    )Úregister_checkerr   )r=   s    r$   Úregisterrb   �   s%   € Ø
×ÒÕ-¨fÑ5Ô5Ñ6Ô6Ð6Ð6Ð6r&   )r=   r   r   r   )r\   Ú
__future__r   Útypingr   rQ   r   r   r   Úpylint.checkersr   r	   Úpylint.interfacesr
   Úpylint.lintr   r   rb   r)   r&   r$   ú<module>rh      sí   ðð
 *Ð )à "Ð "Ð "Ð "Ð "Ð "à  Ð  Ð  Ð  Ð  Ð  à €€€Ø +Ð +Ð +Ð +Ð +Ð +Ð +Ð +Ð +Ð +à .Ð .Ð .Ð .Ð .Ð .Ð .Ð .Ø 'Ð 'Ð 'Ð 'Ð 'Ð 'àð %Ø$Ð$Ð$Ð$Ð$Ð$ði
ð i
ð i
ð i
ð i
˜ñ i
ô i
ð i
ðX7ð 7ð 7ð 7ð 7ð 7r&   