bgdZddlmZddlZddlmZddlmZmZddl m Z ddl m Z m Z ddlmZerdd lmZejejejejjfZGd d e ZddZdS)z*Check for use of nested min/max functions.) annotationsN) TYPE_CHECKING)nodesobjects) BaseChecker)only_required_for_messages safe_infer) INFERENCE)PyLinterc|eZdZdZdZdZddiZedd Zedd Z e dddZ dS)NestedMinMaxCheckerzMultiple nested min/max calls on the same line will raise multiple messages. This behaviour is intended as it would slow down the checker to check for nested call with minimal benefits. )z builtins.minz builtins.maxnested_min_maxW3301)z@Do not use nested call of '%s'; it's possible to do '%s' insteadnested-min-maxzHNested calls ``min(1, min(2, 3))`` can be rewritten as ``min(1, 2, 3)``.node nodes.NodeNGreturnboolct|tjsdSt|j}t|tjo||jvS)NF) isinstancerCallr func FunctionDefqname FUNC_NAMES)clsrinferreds o/builddir/build/BUILD/cloudlinux-venv-1.0.7/venv/lib/python3.11/site-packages/pylint/checkers/nested_min_max.pyis_min_max_callz#NestedMinMaxChecker.is_min_max_call/sX$ ++ 5di(( x!2 3 3 3  CN2 nodes.Calllist[nodes.Call]c.fdjDS)Ncrg|]3}|r|jjjjk1|4S)rrname).0argrrs r z;NestedMinMaxChecker.get_redundant_calls..<sN   ""3'' -0HMTY^,K,K ,K,K,Kr )args)rrs``rget_redundant_callsz'NestedMinMaxChecker.get_redundant_calls:s6     y    r rNonec ||sdS||}|sdStj|}t|dkrt |jD]u\}}t |tjr!td|jDrdS||vr1|jd||jz|j|dzdz|_nv||}t|dkt |jD]\}}t |tj st|}t |tj tj tjgtRrLtj|j}||_|jd||gz|j|dz|z|_|d||jj|ft.dS)Nrc3JK|]}t|tjVdSN)rr GeneratorExp)r'as r z1NestedMinMaxChecker.visit_call..Ps@77:;Jq%"455777777r )linenor)rr* confidence)rr+copylen enumerater*rrranyConstr ListTupleSet DICT_TYPESStarredr4value add_messagerr& as_stringr ) selfrredundant_calls fixed_nodeir(idxr splat_nodes r visit_callzNestedMinMaxChecker.visit_callBsB##D))  F22488  FYt__ /""Q&&#JO44  3c5:..377?Bx77744FF/))"+ch6Q9QQOE * #66zBBO/""Q&&""*/22  HCc5;// %c??uz5; OJOO "'ho!F!F!FJ'*J$"-%,'$/#'C-89O  ).*"6"6"8"89      r N)rrrr)rr!rr")rr!rr,) __name__ __module__ __qualname____doc__rr&msgs classmethodrr+rrIr%r rr r s 2J D  D   [    [   011- - - 21- - - r r linterr rr,cJ|t|dSr/)register_checkerr )rPs rregisterrSss% /7788888r )rPr rr,)rM __future__rr6typingrastroidrrpylint.checkersrpylint.checkers.utilsrr pylint.interfacesr pylint.lintr DictValuesDictKeys DictItems node_classesDictr>r rSr%r rr`s 10"""""" """"""""''''''HHHHHHHH''''''%$$$$$$      S S S S S +S S S l999999r