TL iZbddlmZddlmZddlmZmZddlmZddl m Z m Z ddl m Z ddlmZmZddlmZdd lmZdd lmZdd lmZmZdd lmZd ZGddZGddeZGddeZGddZ Gdde eZ!GddeZ"GddZ#Gdde#Z$Gdde$eZ%Gd d!e%Z&Gd"d#e&Z'Gd$d%e&Z(Gd&d'e#Z)Gd(d)eZ*Gd*d+e*Z+Gd,d-Z,Gd.d/Z-Gd0d1e-e"Z.Gd2d3e eZ/Gd4d5e-e/Z0y6)7)abstractmethod) Parameter)OptionalTuple)search_ancestor)find_statement_documentationclean_scope_docstring)unite)ValueSet NO_VALUES)inference_state_method_cache) docstrings)memoize_method) deep_ast_copyinfer_call_of_leaf)plugin_managercLd}|D]}|r|dz }||jz }|S)Nz ------------------------------ ) py__doc__)namesdocnames Z/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/jedi/inference/names.py_merge_name_docsrs> C   ) )C t~~  JceZdZUdZeeeefed<eed<dZ dZ dZ e dZ e dZddZdZd Zd Zd Zd Zd ZedZdZy)AbstractNameDefinitionN start_pos string_nameTctNNotImplementedErrorselfs rinferzAbstractNameDefinition.infer&s!!rc|hSr!r$s rgotozAbstractNameDefinition.goto*s v rcr|j}||s|S|jj}|y||zSr!)_get_qualified_namesget_root_context string_names)r%include_module_namesqualified_names module_namess rget_qualified_namesz*AbstractNameDefinition.get_qualified_names0sG335  "*>" ",,.;;  o--rcyr!r(r$s rr+z+AbstractNameDefinition._get_qualified_names:src6|jjSr!)parent_contextr,r$s rr,z'AbstractNameDefinition.get_root_context>s""3355rc|jSr!)rr$s rget_public_namez&AbstractNameDefinition.get_public_nameAsrc|j'd|jjd|jdSd|jjd|jd|jdS)Nz start_pos=)r __class____name__rr$s r__repr__zAbstractNameDefinition.__repr__DsT >> !-1^^-D-DdFVFVW W "6:nn6M6M6:6F6FX Xrcy)NFr(r$s r is_importz AbstractNameDefinition.is_importJsrcy)Nrr(r$s rrz AbstractNameDefinition.py__doc__Msrc.|jjSr!)r4api_typer$s rrAzAbstractNameDefinition.api_typePs""+++rcy)z Returns either None or the value that is public and qualified. Won't return a function, because a name in a function is never public. Nr(r$s rget_defining_qualified_valuez3AbstractNameDefinition.get_defining_qualified_valueTs rF)r; __module__ __qualname__rrrint__annotations__strr4 tree_name is_value_namerr&r)r1r+r,r6r<r>rpropertyrArCr(rrrrs+/Ixc3h(/NIM"" .6 X ,,rrc eZdZdZdZdZdZy)AbstractArbitraryNamez When you e.g. want to complete dicts keys, you probably want to complete string literals, which is not really a name, but for Jedi we use this concept of Name for completions as well. FcB||_||_|j|_yr!)inference_staterbuiltins_moduler4)r%rPstrings r__init__zAbstractArbitraryName.__init__ds .!-==rctSr!r r$s rr&zAbstractArbitraryName.inferirN)r;rErF__doc__rKrSr&r(rrrNrN\s M> rrNc^eZdZdZd fd ZdZdZdZdZe dZ e dZ xZ S) AbstractTreeNamec ||_||_yr!)r4rJ)r%r4rJs rrSzAbstractTreeName.__init__ns,"rc>t|jdd}|u|jdk(r,|jj j s:|r7|js+t d|j|jDSyt|%|S)N import_name import_fromc34K|]}|jywr!)value).0ns r z7AbstractTreeName.get_qualified_names..|s\QWW\s) rrJlevelr, get_value is_packagetupleget_path_for_namesuperr1)r%r. import_noder:s rr1z$AbstractTreeName.get_qualified_namesrs%dnnm]S  "K,=,=,B040E0E0G0Q0Q0S0^0^0`#K,=,=\k.K.KDNN.[\\\w*+?@@rcp|jj}|y||jjfzSr!)r4r1rJr`)r% parent_namess rr+z%AbstractTreeName._get_qualified_namess7**>>@  t~~33555rc|jr td|jr|jjSy)Nz&Shouldn't really happen, please report)r>r#r4rer$s rrCz-AbstractTreeName.get_defining_qualified_values9 >> %&NO O  &&002 2rc$|j|jjd}|F|j}|dk(rjjdv}|rF|gS|dvrddlm}|}|S|gSddlm}|}||Dcgc]}|jc}Sj} | j} | d k(rp| jd d k(r]| jdk(rJ| j} | jd k(r | j} | jd k7r{| jdk(rj| jd } n| jjj| } | jjd| }|ddk(r|jdj|d} ddl m}|d dD] } || | } g}| D]W}|jD]B}|j!D]-}|j"j$k(s|j'|/DY|S| dk(rc| jj}|dkDrCt)| }g|j|d z dj|}t+fd|DS| dk(r3| jddk(r!t-d}|j/St1ddxs}|jdk(r}j/|j2Scc}w)NTimport_name_always expr_stmt)powertrailer)r]r\r) goto_import)%follow_error_node_imports_if_possibleargumentr^=arglistclassdef decoratorawait) infer_trailer dotted_namec3DK|]}|jyw) name_contextN)r))rar`contextrs rrcz(AbstractTreeName.goto..s&JJt'J:s rs.)cut_own_trailerrlambdef)position)r4rJget_definitiontypeparentjedi.inference.importsrtrurchildren infer_nodeindexpopjedi.inference.syntax_treer|get_signaturesget_param_namesrr`appendrr rr)rr)r% definitiontype_is_simple_namertr0ruvaluesr`par node_typers value_setito_inferr| param_names signature param_namer new_dottedstmtrrs @@rr)zAbstractTreeName.gotos%%~~((D(A  !OOE #"&!1!19M!M! 6M88>*7D9 ##v T:7DIF!067u 77kkHH  "s||A#'=#,,q/UYBYjjG||y(!..||z)<<;. ' 2 273C3CA3F GI//55g>A&~~66r:H{g- Q ' 2 28A; ?IH#+AB<O$1'9g$N O &?E%*%9%9%;? *3*C*C*E?J)55C + 2 2: >??? #" - 'LL&&t,Eqy*3/ 24 ##EAIJ/ ++J7!'  !cll1o&<'tLF;;t';: :"k9 yyI%<<t~~<> >a8s L c8t|jdd}|duS)Nr]r\rrJ)r%imps rr>zAbstractTreeName.is_importsdnnm]K$rc.|jjSr!)rJr`r$s rrzAbstractTreeName.string_names~~###rc.|jjSr!)rJrr$s rrzAbstractTreeName.start_poss~~'''rrD) r;rErFrSr1r+rCr)r>rLrr __classcell__r:s@rrYrYmsL#A 6 F?P$$((rrYcFeZdZdZdZdZfdZdZedZ xZ S)ValueNameMixinc.t|jgSr!)r _valuer$s rr&zValueNameMixin.infers &&rc|jj}|s:|jjr ddlm}||gd}||vr t |S|S)Nr convert_namesFprefer_stub_to_compiled)rris_stub!jedi.inference.gradual.conversionrr)r%rrrs rrzValueNameMixin.py__doc__sOkk##%t{{**, G!4&%HE5 '.. rc6|jjSr!)rr1r$s rr+z#ValueNameMixin._get_qualified_namess{{..00rcl|j|jjSt|Sr!)r4r as_contextrir,r%r:s rr,zValueNameMixin.get_root_contexts0    &;;))+ +w'))rc|j}|:|js|jr|jjSyr!)r4 is_moduleis_classre)r%rs rrCz+ValueNameMixin.get_defining_qualified_valuesA%%  G$5$5$77;K;K;M&&002 2rc.|jjSr!)rrAr$s rrAzValueNameMixin.api_types{{###r) r;rErFr&rr+r,rCrLrArrs@rrrs0'1*  $$rrc$eZdZfdZdZxZS) ValueNamecHt||j|||_yr!)rirSr4r)r%r`rJr:s rrSzValueName.__init__s --y9 rcBt|jjgSr!)r rrr$s rr)zValueName.goto s))*++r)r;rErFrSr)rrs@rrrs ,rrcpeZdZedddddZdZedZdZed Z e d d Z y )TreeNameDefinitionmodulefunctionparamclass)r\r]funcdefrrycrddlm}||jj|j|jS)Nr)tree_name_to_values)rrr4rPrJ)r%rs rr&zTreeNameDefinition.infers1B"    / /    NN  rc|jjd}|y|jj|jdS)NTro statement)rJr _API_TYPESgetr)r%rs rrAzTreeNameDefinition.api_types=^^22d2K  "":??K@@rcg}d}|jj}|j}||jdvrt|jD]a\}}||k(s t |dz }|r1t t |j|z dz }t|| }|jd||fn tdd}n#|jdk(rd}n|jdvr |S|}|j}||S) a Returns an array of tuple(int, node) of the indexes that are used in tuple assignments. For example if the name is ``y`` in the following code:: x, (y, z) = 2, '' would result in ``[(1, xyz_node), (0, yz_node)]``. When searching for b in the case ``a, *b, c = [...]`` it will return:: [(slice(1, -1), abc_node)] F)testlist testlist_comptestlist_star_exprexprlistrzCouldn't find the assignment. star_exprT)rq sync_comp_for) rJrr enumeraterrGlensliceinsert LookupError) r%indexes is_star_exprnodecomparerchildrfrom_ends rassignment_indexesz%TreeNameDefinition.assignment_indexes&s  ~~$$..yy[[ )$-- 8 GHAu' #AE ''*C ,>,Ba+G'HH$)%($;Eq5$-8 G&&EFF$ k)# <<G;;D'(rc.|jjSr!)r4rPr$s rrPz"TreeNameDefinition.inference_stateOs""222rr)defaultc|j}|dvrk|jjjr ddlm}||gd}||vr t |St|jjS|dk(r|j}||vr t |S|dk(r=|jjr#t|jjSy) N)rrrLrrFrrrr) rAr4r,rrrrr rJrr) is_definitionr)r%rArrs rrzTreeNameDefinition.py__doc__Ts== 8 8""335==?K%tfeLu$+E22))F)F)HI I x IIKE5 '.. { "t~~'C'C'E/0M0M0OP PrN) r;rErFdictrr&rLrArrPr rr(rrrr si J AA 'R33""-.rrc*eZdZddZddZdZddZy) _ParamMixinctjtjg}|r|jtj|j |vSr!)rPOSITIONAL_ONLYPOSITIONAL_OR_KEYWORDrVAR_POSITIONALget_kind)r% include_staroptionss rmaybe_positional_argumentz%_ParamMixin.maybe_positional_argumentls>,,i.M.MN  NN933 4}}'))rctjtjg}|r|jtj|j |vSr!)r KEYWORD_ONLYrr VAR_KEYWORDr)r% include_starsrs rmaybe_keyword_argumentz"_ParamMixin.maybe_keyword_argumentrs>))9+J+JK  NN900 1}}'))rct|j}|tjk(ry|tjk(ryy)N*z**rrrrrr%kinds r _kind_stringz_ParamMixin._kind_stringxs2}} 9++ + 9(( (rcyr!r()r%r.s rr1z_ParamMixin.get_qualified_namessrN)TrD)r;rErFrrrr1r(rrrrks* * rrc8eZdZdZdZdZdZedZdZ y)ParamNameInterfacerctr!r"r$s rrzParamNameInterface.get_kind!!rctr!r"r$s r to_stringzParamNameInterface.to_stringrrcy)as For dealing with type inference and working around the graph, we sometimes want to have the param name of the execution. This feels a bit strange and we might have to refactor at some point. For now however it exists to avoid infering params when we don't really need them (e.g. when we can just instead use annotations. Nr(r$s rget_executed_param_namez*ParamNameInterface.get_executed_param_namesrct|j}|tjk(ry|tjk(ryy)Nr^rrrrs r star_countzParamNameInterface.star_counts2}} 9++ + 9(( (rctSr!rUr$s r infer_defaultz ParamNameInterface.infer_defaultrVrN) r;rErFrArrrrLrrr(rrrrs/H"" rrc&eZdZdZdZdZdZdZy)BaseTreeParamNameNc|j|jz}|j}|j}||d|j dzz }||d|j dzz }|S)N: F)include_prefixrw)rr6annotation_node default_nodeget_code)r%output annotationrs rrzBaseTreeParamName.to_strings""$t';';'==)) ##  ! dZ000FF FF   cG,,E,BB BF rcJ|j}|jdr|dd}|S)N__r)r startswithr%rs rr6z!BaseTreeParamName.get_public_names+ ??4 8D rc |gSr!r()r%kwargss rr)zBaseTreeParamName.gotos v r)r;rErFr r rr6r)r(rrrrsOLrrc^eZdZfdZdZedZd dZdZedZ dZ dZ xZ S) _ActualTreeParamNamecPt||j|||_yr!)rirSget_default_param_contextfunction_value)r%rrJr:s rrSz_ActualTreeParamName.__init__s'   4 4 6  C,rc.t|jdS)Nrrr$s r_get_param_nodez$_ActualTreeParamName._get_param_nodest~~w77rc6|jjSr!)rrr$s rr z$_ActualTreeParamName.annotation_nodes##%000rc|ddlm}||j|j|}|r|j }|S)Nr) infer_param) ignore_stars)!jedi.inference.gradual.annotationrrrexecute_annotation)r%r"r rrs rinfer_annotationz%_ActualTreeParamName.infer_annotations>A   !5!5!7%' ..0F rc`|j}|tS|jj|Sr!)r r r4r)r%rs rrz"_ActualTreeParamName.infer_defaults/   < ""--d33rc6|jjSr!)rrr$s rr z!_ActualTreeParamName.default_nodes##%---rc4|j}|jdk(rtjS|jdk(rtjS|j j jdrtjS|j}d}|jD]i}|r|dk(s tjcS|dk(rtjcS|jdk(sD|jrtjcS||k(shd}ktjS) Nr^rrF/rrT)rrrrrrr`rrrrrrr)r% tree_paramrparam_appearedps rrz_ActualTreeParamName.get_kinds))+  A %++ +  A %(( ( ?? + +D 1,, ,"" .A8$4448$11166W$||(555J)- ....rc|j}|r|Stj|j|j }|Sr!)r#rrrr)r%r doc_paramss rr&z_ActualTreeParamName.infers?&&( M++D,?,?AUAUAWX r)TF) r;rErFrSrrLr r#rr rr&rrs@rrrsI- 8114 ../8rrceZdZejdfdZejdfdZxZS)AnonymousParamNamegoto_anonymous_param)rc t|Sr!)rir)rs rr)zAnonymousParamName.gotosw|~rinfer_anonymous_paramct|}|r|Sddlm}|j }||j |j }|r|S|jdk(r$ddlm }||j jg}nt|jdk(r$ddlm }||j ji}nA|jtS|j jj|jSt!|hS)Nr)dynamic_param_lookupr^) FakeTupler)FakeDict)rir&jedi.inference.dynamic_paramsr3rrposition_indexrjedi.inference.value.iterabler4rPr5rr r4rr )r%rr3rr4r`r5r:s rr&zAnonymousParamName.infer s MF$$&%d&9&95;O;OP M   q ?d11AA2FE    " >T00@@"EE ]] " &&55@@O O  r)r;rErFrdecorater)r&rrs@rr.r.sE^"89:^"9:!;!rr.c.eZdZfdZfdZdZxZS) ParamNamec4t|||||_yr!)rirS arguments)r%rrJr=r:s rrSzParamName.__init__"s 3"rcdt|}|r|S|jjSr!)rir&r)r%rr:s rr&zParamName.infer&s. M++-3355rcddlm}||j|j}||j j S)Nr)get_executed_param_names)jedi.inference.paramr@rr=rr7)r%r@ params_namess rrz!ParamName.get_executed_param_name-s5A/0C0CT^^T D002AABBr)r;rErFrSr&rrrs@rr;r;!s#6Crr;ceZdZdZdZdZy)ParamNameWrapperc||_yr!)_wrapped_param_name)r%rs rrSzParamNameWrapper.__init__4s #- rc.t|j|Sr!)getattrrFrs r __getattr__zParamNameWrapper.__getattr__7st//66rcPd|jjd|jdS)Nr8r r9)r:r;rFr$s rr<zParamNameWrapper.__repr__:s!^^44d6N6NOOrNr;rErFrSrIr<r(rrrDrD3s.7PrrDc^eZdZdZdZdZd dZedZe dZ dZ edZ d Z y ) ImportNamer^rrc ||_||_yr!)_from_module_contextr)r%r4rs rrSzImportName.__init__Bs$2!&rc|rY|jr@|jdk(sJd|jj}||S||jfzS|jfSy)Nr^z(Everything else is not supported for nowr()_levelrPr-r)r%r.r0s rr1zImportName.get_qualified_namesFsg {{{{a'S)SS'#88EE '''#t'7'7&999$$& &rc|j}|j}|s|Stt|j Sr!)rPr&nextiterr)r%m import_valuess rr4zImportName.parent_contextQs;  % % HD'(3355rcddlm}|j}||j|jg||j j S)Nr)Importer)rd)rrYrPrPrrRfollow)r%rYrVs rr&zImportName.infer[s=3  % %))D,<,<+=q T[[]]rc\|jDcgc]}|jc}Scc}wr!)r&r)r%rVs rr)zImportName.gotoas $ -1---s)cy)Nrr(r$s rrAzImportName.api_typedsrc4t|jSr!)rr)r$s rrzImportName.py__doc__hs ,,rNrD)r;rErFrrRrSr1rLr4rr&r)rArr(rrrMrM>s^I F' 66^^ .-rrMceZdZdZy) SubModuleNamer^N)r;rErFrRr(rrr_r_ls Frr_ceZdZdZdZdZy) NameWrapperc||_yr!) _wrapped_name)r% wrapped_names rrSzNameWrapper.__init__qs )rc.t|j|Sr!)rHrcrs rrIzNameWrapper.__getattr__tst))400rcN|jjd|jdS)N())r:r;rcr$s rr<zNameWrapper.__repr__ws>>22D4F4FGGrNrKr(rrraraps*1HrraceZdZfdZxZS) StubNameMixinc&ddlm}|g}|jdk(rMd|jj j vr'|j Dcgc]}|j}}||d}||vrt|%St|Scc}w)NrrrrwFr) rrrArJrrr&rrirr)r%rrvr:s rrzStubNameMixin.py__doc__|sC ==K 'C4>>3P3P3R3[3[,[%)ZZ\2QVV2E2eUC 5=7$& &$E* *3sB)r;rErFrrrs@rrjrj{s ++rrjceZdZfdZxZS)StubNamect|}|jdk(r;|jj dk(rddlmtfd|DS|S)N version_infosysr) VersionInfoc3.K|] }|ywr!r()racrrs rrcz!StubName.infer..s=qKN=s)rir&rr, py__name__!jedi.inference.gradual.stub_valuerrr )r%inferredrrr:s @rr&zStubName.infersO7=?   ~ -$2G2G2I2T2T2VZ_2_ E=H== =r)r;rErFr&rrs@rrnrns rrnc&eZdZdZdZedZy) ModuleNamerNc ||_||_yr!)r_name)r%r`rs rrSzModuleName.__init__s  rc|jSr!)r{r$s rrzModuleName.string_names zzrN)r;rErFrrSrLrr(rrryrys Irryc eZdZy)StubModuleNameN)r;rErFr(rrr~r~srr~N)1abcrinspectrtypingrr parso.treerjedi.parser_utilsrr jedi.inference.utilsr jedi.inference.base_valuer r jedi.inference.cacher jedi.inferencer jedi.cacherjedi.inference.helpersrr jedi.pluginsrrrrNrYrrrrrrrr.r;rDrMr_rarjrnryr~r(rrrs="&Q&9=%%D'==@2"t(-t(n$$@, 0,[)[|2B*,<4B,BJ!-!:C$C$P{P+-'+-\JHH++(}0 !7  ]J r