bgЀUdZddlmZddlZddlZddlZddlmZm Z m Z m Z ddl m Z mZddlmZmZmZmZmZmZddlmZddlmZmZdd lmZmZmZmZm Z dd l!m"Z"dd l#m$Z$m%Z%m&Z&ej'd Z(ej'd Z)edej*ej+Z,ddZ-ddZ.dZ/ddddddddddddd d! Z0d"e01DZ2d#e01DZ3d$d%d&dd'Z4ej5ej6ej7ej8d'Z9d(e:d)<dd.Z;d/ej*_<d0ej+_<d1ej=_<d2ej>_<d3ej?_<d4d5d6d7d8d9d:d;d<d=d>d?ej@d! ZAeBeA1D] \ZCZDeDeAeCd@z<ejEddMZFeFej>_GddPZHddTZIejEddWZJeJej*_GeJej+_GejEddZZKeKejL_GeKejM_G d[ZNejO dddbZPePejQ_RePejS_R ddddZTeTej*_ReTej+_R dddfZUeUejV_ReUejW_RddiZX dddkZYeYejZ_RejO dddmZ[ dddoZ\e[ej]_Re\ej^_Re[ej__RdpZ`ejO dddrZaeaejb_RdsZcejO ddduZdedeje_RejO dddwZfefejg_RejE dddyZheheji_RejE ddd~Zjejejk_RejE dddZlelejm_RejE dddZnenejo_RdS)zcThis module contains a set of functions to handle python protocols for nodes where it makes sense. ) annotationsN)Callable GeneratorIteratorSequence)AnyTypeVar) argumentsbases decoratorshelpersnodesutil)Context)InferenceContext copy_context)AstroidIndexErrorAstroidTypeErrorAttributeInferenceErrorInferenceError NoDefault) node_classes)ConstFactoryResultInferenceResultSuccessfulInferenceResult raw_buildingobjects_TupleListNodeTreturnstrcd|ddzS)N__rnames b/builddir/build/BUILD/cloudlinux-venv-1.0.7/venv/lib/python3.11/site-packages/astroid/protocols.py_reflected_namer() 48 cd|ddzS)N__ir#r$r%s r'_augmented_namer--r)r*zcontextlib.contextmanager__add____sub__ __truediv__ __floordiv____mul____pow____mod____and____or____xor__ __lshift__ __rshift__ __matmul__) +-/z//***%&|^z<>@c4i|]\}}|t|Sr$)r(.0keyvalues r' rJBs3$0S%C  r*c:i|]\}}|dzt|S)=)r-rFs r'rJrJEs7*63C#Iu%%r*__pos____neg__ __invert__)r;r<~notzdict[str, Callable[[Any], Any]]_UNARY_OPERATORSobjroprcr|tur|}nt|}||}tj|S)z{Perform unary operation on `obj`, unless it is `NotImplemented`. Can raise TypeError if operation is unsupported. )NotImplementedrRr const_factory)rSrTrIfuncs r'_infer_unary_oprYWs>  n#S   u % %%r*cFtt|j|SN)rYtupleeltsselfrTs r'r`dsoeDI>N>NPR.S.Sr*c,t|j|Sr[)rYr]r^s r'r`r`es_TY-K-Kr*cFtt|j|Sr[)rYsetr]r^s r'r`r`fsOC NNB,O,Or*c,t|j|Sr[)rYrIr^s r'r`r`gsodj".M.Mr*cFtt|j|Sr[)rYdictitemsr^s r'r`r`hs_T$*=M=Mr-R-Rr*c ||zSr[r$abs r'r`r`m a!er*c ||z Sr[r$ris r'r`r`nrlr*c ||z Sr[r$ris r'r`r`orlr*c ||zSr[r$ris r'r`r`p qAvr*c ||zSr[r$ris r'r`r`qrlr*c ||zSr[r$ris r'r`r`rs q!tr*c ||zSr[r$ris r'r`r`srlr*c ||zSr[r$ris r'r`r`trlr*c ||zSr[r$ris r'r`r`urlr*c ||z Sr[r$ris r'r`r`vrlr*c ||zSr[r$ris r'r`r`wrpr*c ||z Sr[r$ris r'r`r`xrpr*rLr_ nodes.Constopnodenodes.AugAssign | nodes.BinOpoperatorotherrcontextr_r@Generator[ConstFactoryResult | util.UninferableBase, None, None]c#Ktjt}t|tjr|dkr^t|jt t fr=t|jt t fr|jdks |jdkr|VdS t|} tj||j|jVdS#t$r|VYnt$rtj VYnwxYwdSdS#t$r|VYdSwxYwt|jtr|dkrtj VdS|VdS)Nr?gj@r@)rConstrV isinstancerIintfloat BIN_OP_IMPLrW TypeError Exceptionr Uninferabler )r_rzr|r}r~rnot_implementedimpls r'const_infer_binary_oprsk.11O%%%   4:U|44 5;e 55 c!!U[3%6%6! ! ! ! F "x(D ')$$tz5;*G*GHHHHHHH & & &%%%%%% ' ' '&&&&&& '&%&& " " "! ! ! ! ! ! ! " DJ $ $Ss< D)*CC?#D%C?<D>C??DDDrIrc||}|dkrtjg|_|Sfd|jD}t ||z|_|S)NparentgחAc3K|]?}t|tjtj|p tjV@dSr[)rrUninferableBaser safe_inferr)rGeltr~s r' z'_multiply_seq_by_int..s_ #t3443((>> ( (D s{{%&  9M ]##e+DI Kr*r]Sequence[InferenceResult]#Iterator[SuccessfulInferenceResult]c# K|D]~}t|tjrtjV2||D]6}t|tjs|V!tjV7dSr[)rrrrUnknowninfer)r]r~rinferreds r'_filter_uninferable_nodesrs** c4/ 0 0 *-// ! ! ! !IIg.. * *!(D,@AA*"NNNN-//))))  * **r*methodKGenerator[_TupleListNodeT | nodes.Const | util.UninferableBase, None, None]c #$Kd|_tjt}t ||jro|dkri||}t tjt|j |t|j ||_ |VdSt |tjrA|dkr;t |j ts|VdSt|||j |VdSt |tjrp|dkrjt!j|}|st$jVdSt |j tst)dt|||j |VdS|VdS)zInfer a binary operation on a tuple or list. The instance on which the binary operation is performed is a tuple or list. This refers to the left-hand side of the operation, so: 'tuple() + 1' or '[] + A()' Nr;rr>zPlease open a bug report.) boundnoderrrVrrr itertoolschainrr]rIrrr Instancer class_instance_as_indexrrAssertionError) r_rzr|r}r~rrras_indexs r'tl_infer_binary_oprs Gk.11O%((X__~~V~,, O)$)W==)%*g>>      E5; ' 'HOO%+s++ ! ! ! ! F"4gFFFFFFF E5> * * x32599 N" " " " " "HNC00 N !<== =&tVX^WMM M M M M Mr*bases.Instance | nodes.ClassDef&Generator[InferenceResult, None, None]c.|||Sr[)infer_call_result)r_rzr|r}r~rs r'instance_class_infer_binary_oprs  # #D' 2 22r*c#K|dd}|d}|D]C}t|tjrt |ds/ |}n#t $rYQwxYw t||tjtj fr|g}n#t$rYnwxYw|D]}tj|} | ||}n#tttf$rYGwxYw|s|VRt|tjrn= t||||Ed{V#t"$rYnwxYwEdS)z@UVVI // T7KK K K K K K K K F t{$R(( ~ 4$+"2j"@"@+$**,,C00223FK  tz#B''  w''%%d++11'::::::::: sA JJ10J1nodes.Argumentsc |j}n#t$rd}YnwxYw|r;|jr4|jj}t |dr|j}t |dnt |||S|r}t|dd|djkrO|j}t|}d|_tj ||}| |j ||St |||S)Nrr&Tfuturer~)r&rrrrrrrframerr rrr)r_rr~r node_namerrargss r'arguments_assigned_stmtsrs' I   B7&B$+fj)) %_Ffj)) %(iAAA D--41H1H1MMM) w''"!+w???""4; 7CCC #D)W = ==s  0nodes.AugAssign | nodes.Assign | nodes.AnnAssignc#K|s |jVdSt|j|||Ed{V||||dSNr)rI_resolve_assignment_partsrrs r'assign_assigned_stmtsrs jt( !!; "   r*nodes.AnnAssignc#^Kt||||D]}|tjV|VdSr[)rrr)r_rr~rrs r'assign_annassigned_stmtsrsR *$g{KK  " " " " "NNNN r*c#HK|dd}|d}|D]}d}t|tjr$ |j|\}}ng#t $rYdSwxYwt |drEtj|} |||}n#ttf$rYdSwxYw|sdS|s|Vt|tj rdS t||||Ed{V#t$rYdSwxYwdS)z3Recursive function to resolve multiple assignments.Nrr)rrrDictrgrrrrrrrrrrr)rrr~rrrrrs r'rrsaaa.K OOA  E!! dEJ ' '  "j/ !!    T9 % % U++J << G<<$&78      FF NNNN $"6 7 7  FF 4NN7++['"    A!!s6A A#"A# B""B87B8%*D DDnodes.ExceptHandlerc#Ktj|jD]:}t|tjrt |}|V;||||dSr)r unpack_inferrrrrrExceptionInstance)r_rr~rrs r'excepthandler_assigned_stmtsr 8sq!-di88 h / / ;00::H"   r*c#"K t||}n##t$r}t||d}~wwxYwt |t jr|j}|jstd||jj D]_}t||d}t |tj r| tkrn`t| t| VdS#t$r}t||d}~wwxYwt |t jr t|d|}n0#tt tf$r} t|| d} ~ wwxYwt |t jst||||Ed{VdSt|)Nr)rz,No decorators found on inferred generator %s __enter__)nextr StopIterationrrr rrr r FunctionDefqname_CONTEXTLIB_MGRinfer_yield_typesrigetattrr BoundMethodr) r_mgrr~rerXdecorator_node decoratorenterrs r'_infer_context_managerrOsM. ' 2233 ...#&&&A-.(EO,,'  >T #o3 , ,N^11'1BBDIII)U%677 ??$$77E!d+++ + 3x113344 4 4 4 4 4 3 3 3 d+++ 2 3 Hen - - ' 9**;*HHIIEE 7G 9 9 9 h///S 8 9%!233 - e,,, ,**499999999999#&&&&sD#( AAA#D&& E0EE$$F F6 F11F6 nodes.Withc #K tfd|jD}n#t$rYdSwxYw|t|||Ed{Vnt|||D]}|}|D]}}t |dst d||| |j|}5#t$r}t d||||d}~wt$r}t d||||d}~wwxYw|V|||dS) aInfer names and other nodes from a *with* statement. This enables only inference for name binding in a *with* statement. For instance, in the following code, inferring `func` will return the `ContextManager` class, not whatever ``__enter__`` returns. We are doing this intentionally, because we consider that the context manager result is whatever __enter__ returns and what it is binded using the ``as`` keyword. class ContextManager(object): def __enter__(self): return 42 with ContextManager() as f: pass # ContextManager().infer() will return ContextManager # f.infer() will return 42. Arguments: self: nodes.With node: The target of the assignment, `as (a, b)` in `with foo as (a, b)`. context: Inference context used for caching already inferred objects assign_path: A list of indices, where each index specifies what item to fetch from the inference results. c3.K|]\}}|k |VdSr[r$)rGrvarsrs r'rz&with_assigned_stmts..s+EE;C 3 EEr*Nr]z0Wrong type ({targets!r}) for {node!r} assignment)rtargetsrr~zCTried to infer a nonexistent target with index {index} in {node!r}.z1Tried to unpack a non-iterable value in {node!r}.r) rrgrrrrr]rr) r_rr~rrresultrSrrs ` r'with_assigned_stmtsr"usBEEEE$*EEEEE tt)$W==========,T3@@  FC$  sF++(J! $$/ ' (5/CC!('! $$/ ' !(K! $$/ '   IIII"   s0 & 44 B C#'B<< C# CC#nodes.NamedExprc#K|j|kr#|j|Ed{VdStd|||)z:Infer names and other nodes from an assignment expression.rNz$Cannot infer NamedExpr node {node!r}r)targetrIrrrs r'named_expr_assigned_stmtsr&si {d:##G#44444444444 2#     r* nodes.Starredc#d Kdfd |d }t|tjtjfst d |||| |t }t|tjr]|j}|jd}t|tj stj VdStd| tjDdkrt d|||| t||}n&#t t"f$rtj VYdSwxYwt|tjst'|dstj VdS t)j|}n#t.$rtj VYdSwxYwt1|jD]\} } t| tjs|sn|8t)jt7|j| d} | D]} t| tjs|sni|5tjt<j||j |j!} | "tG|| Vt|tjr3 t|j$|}n&#t t"f$rtj VYdSwxYwt|tjst'|dstj VdS |}n#t.$rtj VYdSwxYw|j%}t|tj&st d|g}||||st d||d\}}||dz k}tO||rdn||z }|}|D]}d}t1|D]\} }t'|dsnl| dztQ|ur|}n|d} |}||}|}V#tR$rYn t.$rtj VYdSwxYwtjt<j||j |j!}|"|pg|VdStj VdSdS)aD Arguments: self: nodes.Starred node: a node related to the current underlying Node. context: Inference context used for caching already inferred objects assign_path: A list of indices, where each index specifies what item to fetch from the inference results. starredr'r% nodes.Tuplelookupslist[tuple[int, int]]rNonec|}t|D]\}}t|tjrA|jj|jjkr'||t|fdSt|tj rC||t|f|||dSr[) r enumeraterrStarredrIr&appendlenr)r)r%r+rrelement$_determine_starred_iteration_lookupss r'r4zDstarred_assigned_stmts.._determine_starred_iteration_lookupss'// P PNE77EM22 M&'-*<<<s6{{3444'5;// Ps7>>+;+;'<'<=>>>44WgwOOO P Pr*TrzDStatement {stmt!r} enclosing {node!r} must be an Assign or For node.)rrrr~Nrc3K|]}dVdS)Nr$)rGrs r'rz)starred_assigned_stmts..s"<>> & &D dU\595 6 6  R     "$$$ %%= l1o#u233 " " " " F <<#,,U];;<<< < > g xG G  " " " " F &--//FF   " " " " FF &%+..  J  *,,,T67CCC  GQX  3:"+//,1Dq1HI # SDD*=@R*R  # ( ( G!M!*7!3!3 , , vw11E19G ,,.9JJ"(J ,+2>>+;+;(2:>G%,MM"EE ****FFFFzM{? H   =#6B  7 7 7NNN FFiTTs`"D55EE&F==GG>(L''M  M NN98N9 R(( S5SSnodes.MatchMappingnodes.AssignNamer-#Generator[nodes.NodeNG, None, None]c# KdSzbReturn empty generator (return -> raises StopIteration) so inferred value is Uninferable. Nr$rs r'match_mapping_assigned_stmtsr_  Fr*nodes.MatchStarc# KdSr^r$rs r'match_star_assigned_stmtsrcr`r* nodes.MatchAsc#Kt|jtjr@t|jjtjr|j|jjjVdSdSdSdS)z}Infer MatchAs as the Match subject if it's the only MatchCase pattern else raise StopIteration to yield Uninferable. N)rrr MatchCaseMatchpatternsubjectrs r'match_as_assigned_stmtsrjsw 4;00) t{)5; 7 7) L k (((((( )))) ! r*)rr )rSrrTr rr)r_ryrzr{r|r r}rr~rrrrr) r_rrzr{rIrr~rrr)r]rr~rrr)r_rrzr{r|r r}rr~rrrrr)r_rrzr{r|r r}rr~rrrrr)NNN) r_rrrr~rrrrr) r_rrrr~rrrrr) r_rrrr~rrrrr)r&rr~rrr) r_rrrr~rrrrr) r_rrrr~rrrrr) r_rrrr~rrrrr) r_rrrr~rrrrr) r_rrrr~rrrrr)NN) r_r#rrr~rrrrr) r_r'rrr~rrrrr) r_rZrr[r~rrr-rr\) r_rarr[r~rrr-rr\) r_rdrr[r~rrr-rr\)p__doc__ __future__rrArr| operator_modcollections.abcrrrrtypingrr astroidr r r r rr astroid.constrastroid.contextrrastroid.exceptionsrrrrr astroid.nodesrastroid.typingrrr lazy_importrrrrrr(r-r BIN_OP_METHODrgREFLECTED_BIN_OP_METHODAUGMENTED_OP_METHODUNARY_OP_METHODposneginvertnot_rR__annotations__rYinfer_unary_opSetrrmatmulrr_KEY_IMPLyes_if_nothing_inferredrinfer_binary_oprrrrrrrraise_if_nothing_inferredrr=r Comprehensionrr AssignName AssignAttrrr Argumentsrrr< AnnAssign AugAssignrr  ExceptHandlerrr"Withr& NamedExprrYr0r_ MatchMappingrc MatchStarrjMatchAsr$r*r'rs #"""""CCCCCCCCCCCCFFFFFFFFFFFFFFFF!!!!!!::::::::'&&&&&  t// $ 9 % %'+U[%*EE.              4A4G4G4I4I:G:M:M:O:O              55 & & & &TS KK OO MM RR                            4 ))++,,$$KD%#Ks  #!!!$#!H4 & * * * * #***$#*Z1 /  #333$#3"@!? &&&R %48'+$( &%8. %7" 48'+$( 05 3  48'+$( BBBBB#8"7::::~48'+$( >>>>>:": %48'+$( &%.48'+$(     4 !9!6%%%P %48'+$( &%&&B"#'#'#'L %48'+$( LLLL&%L^0  %(,$(     &% $"; #48'+$( AAAA$#AH 6  #(,     $#  %A! #(,     $#  "; #(, ))))$#)" 7 r*