bgdZddlmZddlmZddlZddlmZmZmZddl m Z m Z ddl m Z erddlmZGd d e ZddZdS)z#Variables checkers for Python code.) annotations) TYPE_CHECKINGN) argumentsbasesnodes) BaseCheckerutils) INFERENCE)PyLinterceZdZdZdZddddddifd Zd d d d ddffZejddddZ ddZ ddZ dS)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 indefinitelymissing-timeoutzUsed 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-expectedzEmitted when positional-only arguments have been passed as keyword arguments. Remove the keywords for the affected arguments in the function call. minversion))W3101E3102ztimeout-methods)zrequests.api.deletezrequests.api.getzrequests.api.headzrequests.api.optionszrequests.api.patchzrequests.api.postzrequests.api.putzrequests.api.requestcsvzzzList of qualified names (i.e., library.method) which require a timeout parameter e.g. 'requests.api.get,requests.api.post')defaulttypemetavarhelprnode nodes.CallreturnNonecZ||||dSN)_check_missing_timeout)_check_positional_only_arguments_expected)selfrs l/builddir/build/BUILD/cloudlinux-venv-1.0.7/venv/lib/python3.11/site-packages/pylint/checkers/method_args.py visit_callzMethodArgsChecker.visit_callEs2 ##D))) 66t<<<<<c,tj|j}tj|}|r|st|tj tj tj fr| |jjjvrmd|jD}||jd|vr@|d||jft,dSdSdSdSdSdS)zCheck 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. cg|] }|j Sarg).0keywords r$ z.\s J J J J J Jr&timeoutrrargs confidenceN)r safe_inferfuncrCallSite from_callhas_invalid_keywords isinstancer FunctionDefClassDefr UnboundMethodqnamelinterconfigtimeout_methodskeywordsextendkeyword_arguments add_message as_stringr )r#rinferred call_siterBs r$r!z(MethodArgsChecker._check_missing_timeoutLs; #DI..&0066  2244 5,ene>QR    DK$6$FFF J JDM J J J   $ $Y%@ A A A 111  %)--//1( !       GF21r&c Ntj|j}t|tjtjfr-|j}t|tjtjf-t|tj r |j j sdS|j j rdSd|j j Dfd|j D}|sdS|d||jdd|Dft"dS)z~Check if positional only arguments have been passed as keyword arguments by inspecting its method definition. Ncg|] }|j Sr))name)r,as r$r.zOMethodArgsChecker._check_positional_only_arguments_expected..tsCCCqAFCCCr&c0g|]}|jv |jSr)r*)r,kpos_argss r$r.zOMethodArgsChecker._check_positional_only_arguments_expected..us'AAAqu/@/@qu/@/@/@r&rz, c3"K|] }d|dV dS)'Nr))r,rLs r$ zNMethodArgsChecker._check_positional_only_arguments_expected..|s*2I2I8q8882I2I2I2I2I2Ir&r0)r r3r4r8astroid BoundMethodr;_proxiedrr9r1 posonlyargskwargr@rCrDjoinr )r#r inferred_funckwsrMs @r$r"z;MethodArgsChecker._check_positional_only_arguments_expectedfs<(33 )S(TUU 3)2M)S(TUU 3 }u'8 : : ".  F   #  FCCM$6$BCCCAAAAdmAAA  F  0)%%''2I2IS2I2I2I)I)IJ      r&N)rrrr) __name__ __module__ __qualname____doc__rImsgsoptionsr 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 rrcJ|t|dSr )register_checkerr )r=s r$registerrbs% -f5566666r&)r=r rr)r\ __future__rtypingrrQrrrpylint.checkersrr pylint.interfacesr pylint.lintr r rbr)r&r$rhs *)"""""" ++++++++++........''''''%$$$$$$i i i i i i i i X777777r&