uBFjJ[ddlmZddlmZddlmZmZmZddlm Z m Z ddl m Z m Z ddlmZddlmZddlmZdd lmZmZdd lmZd ZGd d ZGddeZGddeZGddZGddeeZGddeZGddZ Gdde Z!Gdde!eZ"Gdde"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*Gd.d/e*eZ+Gd0d1eeZ,Gd2d3e*e,Z-d4S)5)abstractmethod) Parameter)OptionalTupleAny)find_statement_documentationclean_scope_docstring)ValueSet NO_VALUES)inference_state_method_cache) docstrings)memoize_method) deep_ast_copyinfer_call_of_leaf)plugin_managercPd}|D] }|r|dz }||z }!|S)Nz ------------------------------ ) py__doc__)namesdocnames BC:\PYTHON\_runtimes\venv\Lib\site-packages\jedi/inference/names.py_merge_name_docsrsF C    * ) )C t~~ JceZdZUdZeeeefed<eed<dZ dZ dZ e dZ dZddZd Zd Zd Zd Zd ZdZedZdZdS)AbstractNameDefinitionN start_pos string_nameTctNNotImplementedErrorselfs rinferzAbstractNameDefinition.infer#s!!rc|hSr r#s rgotozAbstractNameDefinition.goto's v rFcz|}||s|S|j}|dS||zSr )_get_qualified_namesget_root_context string_names)r$include_module_namesqualified_names module_namess rget_qualified_namesz*AbstractNameDefinition.get_qualified_names,sO3355  "*> "" ",,..;  4o--rcdSr r'r#s rr*z+AbstractNameDefinition._get_qualified_names6strc4|jSr )parent_contextr+r#s rr+z'AbstractNameDefinition.get_root_context:s"33555rc|jSr )rr#s rget_public_namez&AbstractNameDefinition.get_public_name=s rc|jd|jjd|jdSd|jjd|jd|jdS)Nz start_pos=)r __class____name__rr#s r__repr__zAbstractNameDefinition.__repr__@s_ > ! !-1^-D-D-DdFVFVFVW W "6:n6M6M6M6:6F6F6FX XrcdS)NFr'r#s r is_importz AbstractNameDefinition.is_importFsurcdS)Nrr'r#s rrz AbstractNameDefinition.py__doc__Isrrc|jjSr )r3api_typer#s rr@zAbstractNameDefinition.api_typeLs"++rcdS)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_valuePs trF)r: __module__ __qualname__rrrint__annotations__strr3 tree_name is_value_namerr%r(r0r*r+r5r;r=rpropertyr@rBr'rrrrs+/Ixc3h(///NIM""^" ....666   XXX ,,X,rrc"eZdZdZdZdZdZdS)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. Fc:||_||_|j|_dSr )inference_staterbuiltins_moduler3)r$rOstrings r__init__zAbstractArbitraryName.__init__`s#.!-=rctSr r r#s rr%zAbstractArbitraryName.infererN)r:rDrE__doc__rJrRr%r'rrrMrMXsC M>>> rrMceZdZUeed<eed<dZd fd ZdZdZdZ d Z e d Z e d Z xZS) AbstractTreeNamerIr3c"||_||_dSr )r3rI)r$r3rIs rrRzAbstractTreeName.__init__ms,"rFc~|jdd}||jdkr8|s<|r8|js1t d||jDSdSt |S)N import_name import_fromc3$K|] }|jV dSr )value).0ns r z7AbstractTreeName.get_qualified_names..{s$\\QW\\\\\\r) rIsearch_ancestorlevelr+ get_value is_packagetupleget_path_for_namesuperr0)r$r- import_noder9s rr0z$AbstractTreeName.get_qualified_namesqsn44]MRR  "K,=,B,B040E0E0G0G0Q0Q0S0S0^0^0`0`-C$ K,= \\k.K.KDN.[.[\\\\\\tww**+?@@@rc\|j}|dS||jjfzSr )r3r0rIr_)r$ parent_namess rr*z%AbstractTreeName._get_qualified_namess4*>>@@  4t~3555rc|rtd|jr|jSdS)Nz&Shouldn't really happen, please report)r=r"r3rer#s rrBz-AbstractTreeName.get_defining_qualified_valuesH >>   3%&NOO O   3&0022 2trc|j|jd}|<|j}|dkrjjdv}|r|gSn;|dvrddlm}|}|S|gSddlm}|}| d |DSj}|j} | d kra|jd d krO|jdkr=|j} | jd kr| j} | jdkr| jdkr! | jd } n| jj | } | jjd| } | ddkr| d | d} ddl m }| d dD]} || | } g}| D]U}|D]>}|D]'}|jjkr||(?V|Snh| dkrb|j }|dkrBt'|}g|j|d z d< |}fd|DS| dkr:|jddkr)t)d}|Sddp}|jdkr}|jS)NTimport_name_always expr_stmt)powertrailer)r\r[r) goto_import)%follow_error_node_imports_if_possiblecg|] }|j Sr'r)r`r_s r z)AbstractTreeName.goto..s777u 777rargumentr]=arglistclassdef decoratorawait) infer_trailer dotted_namecHg|]}|D]}|S) name_context)r()r`r_racontextrs rrxz)AbstractTreeName.goto..sP"ZZ7ZCCrrs.)cut_own_trailerrlambdef)position)r3rIget_definitiontypeparentjedi.inference.importsrtruchildren infer_nodeindexpopjedi.inference.syntax_treerget_signaturesget_param_namesrr_appendrrr(rcr)r$ definitiontype_is_simple_namertr/ruvaluespar node_typers value_setito_inferr param_namesr_ signature param_namer new_dottedstmtrrs @@rr(zAbstractTreeName.gotos%~((D(AA  !OE ##"&!19M!M!" 6M"888>>>>>>*{7D99 ##v T T T T T T::7DIIF!777777kH  " "s|A#'='=#,q/UYBYBYjG|y((!.|z))<;.. ' 2 273CA3F G GII/55g>>A&~6rr:H{g-- Q ' 2 28A; ? ?IHHHHHH#+ABB<OO$1M'9g$N$N  &??E%*%9%9%;%;?? *3*C*C*E*E??J)5CC + 2 2: > > >??#"%*&- ' 'L&&t,,Eqyy*3// 24 #EAIJJ/ ++J77!'  ! !cl1o&<&<'tLLLF;;t';:: :'' Y??G4DyI%%<<t~<>> >rc@|jdd}|duS)Nr\r[rIrc)r$imps rr=zAbstractTreeName.is_imports#n,,]MJJ$rc|jjSr )rIr_r#s rrzAbstractTreeName.string_names ~##rc|jjSr )rIrr#s rrzAbstractTreeName.start_poss ~''rrC)r:rDrErrGrRr0r*rBr(r=rKrr __classcell__r9s@rrXrXisNNN###AAAAAA 666 E?E?E?N$$X$((X(((((rrXcbeZdZUeed<eed<dZdZdZfdZdZ e dZ xZ S) ValueNameMixin_valuer3c,t|jgSr )r rr#s rr%zValueNameMixin.infers &&&rc|j}|s@|jr'ddlm}||gd}||vrt |S|S)Nr convert_namesFprefer_stub_to_compiled)rris_stub!jedi.inference.gradual.conversionrr)r$rrrs rrzValueNameMixin.py__doc__sxk##%% /t{**,, / G G G G G G!M4&%HHHE5  '... rc4|jSr )rr0r#s rr*z#ValueNameMixin._get_qualified_namess{..000rc|j|jStSr )r3r as_contextrir+r$r9s rr+zValueNameMixin.get_root_contexts6   &;))++ +ww'')))rc|j}|A|s|r|jSdSr )r3 is_moduleis_classre)r$rs rrBz+ValueNameMixin.get_defining_qualified_valuesL%  G$5$5$7$7 7;K;K;M;M &0022 2trc|jjSr )rr@r#s rr@zValueNameMixin.api_types {##r) r:rDrErrGr%rr*r+rBrKr@rrs@rrrs KKK'''111*****  $$X$$$$$rrc$eZdZfdZdZxZS) ValueNamecdt|j|||_dSr )rirRr3r)r$r_rIr9s rrRzValueName.__init__s+ -y999 rc6t|jjgSr )r rrr#s rr(zValueName.goto s)*+++r)r:rDrErRr(rrs@rrrsG,,,,,,,rrceZdZedddddZdZedZdZed Z e d d Z d S)TreeNameDefinitionmodulefunctionparamclass)r[r\funcdefrr|cPddlm}||jj|j|jS)Nr)tree_name_to_values)rrr3rOrI)r$rs rr%zTreeNameDefinition.infers=BBBBBB""   /   N   rc|jd}|dS|j|jdS)NTro statement)rIr _API_TYPESgetr)r$rs rr@zTreeNameDefinition.api_type s?^22d2KK  ;"":?K@@@rcg}d}|jj}|j}||jdvrt|jD]q\}}||krft |dz }|r8t t |j|z dz }t|| }|d||fnrtdd}n|jdkrd}n |jd vrn |}|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)] FN)testlist testlist_comptestlist_star_exprexprlistrzCouldn't find the assignment. star_exprT)rq sync_comp_for) rIrr enumeraterrFlensliceinsert LookupError) r$indexes is_star_exprnodecomparerchildrfrom_ends rassignment_indexesz%TreeNameDefinition.assignment_indexes's  ~$.y[[[ )$- 8 8 G GHAu'' #AE '<'*C ,>,>,Ba+G'H'HH$)%($;$;Eq5$-888 (&&EFFF$ k))# <<<G;D'(rc|jjSr )r3rOr#s rrOz"TreeNameDefinition.inference_statePs"22rr)defaultc|j}|dvrx|jr'ddlm}||gd}||vrt |St|j S|dkr'| }||vrt |S|dkr?|j r&t|j SdS) N)rrrKrrFrrrr) r@r3r+rrrrr rIrr( is_definitionr)r$r@rrs rrzTreeNameDefinition.py__doc__Us= 8 8 8"3355==?? 3KKKKKK% tfeLLLu$$+E222))F)F)H)HII I x  IIKKE5  '... { " "t~'C'C'E'E "/0M0M0O0OPP PrrN) r:rDrEdictrr%rKr@rrOr rr'rrrrs J   AAXA '''R33X3"!"---.-rrc8eZdZUeed<d dZd dZdZd dZdS) _ParamMixinget_kindTctjtjg}|r|tj||vSr )rPOSITIONAL_ONLYPOSITIONAL_OR_KEYWORDrVAR_POSITIONALr)r$ include_staroptionss rmaybe_positional_argumentz%_ParamMixin.maybe_positional_argumentosB'79XY  5 NN93 4 4 4}}'))rctjtjg}|r|tj||vSr )r KEYWORD_ONLYrr VAR_KEYWORDr)r$ include_starsrs rmaybe_keyword_argumentz"_ParamMixin.maybe_keyword_argumentusB'4i6UV  2 NN90 1 1 1}}'))rcv|}|tjkrdS|tjkrdSdS)N*z**rrrrrr$kinds r _kind_stringz_ParamMixin._kind_string{s:}} 9+ + +3 9( ( (4rrFcdSr r')r$r-s rr0z_ParamMixin.get_qualified_namesstrN)TrC) r:rDrErrGrrrr0r'rrrrlsjMMM**** **** rrc@eZdZdZdZdZdZedZdZ dS)ParamNameInterfacerctr r!r#s rrzParamNameInterface.get_kind!!rctr r!r#s r to_stringzParamNameInterface.to_stringrrcdS)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_names trcv|}|tjkrdS|tjkrdSdS)Nr]rrrrs r star_countzParamNameInterface.star_counts:}} 9+ + +1 9( ( (1qrctSr rTr#s r infer_defaultz ParamNameInterface.infer_defaultrUrN) r:rDrEr@rrrrKrrr'rrrrspH""""""   Xrrc(eZdZdZdZdZdZdZdS)BaseTreeParamNameNc||z}|j}|j}||d|dzz }||d|dzz }|S)N: F)include_prefixrz)rr5annotation_node default_nodeget_code)r$output annotationrs rrzBaseTreeParamName.to_strings""$$t';';'='==) #  ! dZ000FFF FF   cG,,E,BBB BF rcR|j}|dr |dd}|S)N__r)r startswithr$rs rr5z!BaseTreeParamName.get_public_names2 ??4  8D rc |gSr r')r$kwargss rr(zBaseTreeParamName.gotos v r)r:rDrErrrr5r(r'rrr r sKOLrr cjeZdZfdZdZedZd dZdZedZ d Z d Z xZ S) _ActualTreeParamNamec~t||||_dSr )rirRget_default_param_contextfunction_value)r$rrIr9s rrRz_ActualTreeParamName.__init__sA   4 4 6 6  C C C,rc6|jdS)Nrrr#s r_get_param_nodez$_ActualTreeParamName._get_param_nodes~--g666rc4|jSr )rrr#s rrz$_ActualTreeParamName.annotation_nodes##%%00rTFcddlm}||j||}|r,||j}|S)Nr) infer_param) ignore_stars)!jedi.inference.gradual.annotationr"rrexecute_annotationr)r$r%r#r"rs rinfer_annotationz%_ActualTreeParamName.infer_annotationssAAAAAA  !5!5!7!7%'''  `..t/B/\/\/^/^__F rcV|j}|tS|j|Sr )rr r3r)r$rs rrz"_ActualTreeParamName.infer_defaults,  < "--d333rc4|jSr )rrr#s rrz!_ActualTreeParamName.default_nodes##%%--rc|}|jdkr tjS|jdkr tjS|jjdr tjS|j }d}|j D]U}|r|dkrtjcS|dkrtj cS|j dkr|jrtj cS||krd}Vtj S) Nr]rrF/rrT)rrrrrrr_rrrrrrr)r$ tree_paramrparam_appearedps rrz_ActualTreeParamName.get_kinds))++  A % %+ +  A % %( ( ? + +D 1 1 -, ," . .A .88$444488$11116W$$|6(5555J)-..rc|}|r|Stj|j|}|Sr )r&r r"rr)r$r doc_paramss rr%z_ActualTreeParamName.infersG&&((  M+D,?AUAUAWAWXX r)TF) r:rDrErRrrKrr&rrrr%rrs@rrrs----- 77711X1444 ..X.///8rrceZdZejdfdZejdfdZxZS)AnonymousParamNamegoto_anonymous_paramrwcDtSr )rir(rs rr(zAnonymousParamName.gotosww||~~rinfer_anonymous_paramct}|r|Sddlm}|}||j|j}|r|S|jdkrddlm }||jj g}nZ|jdkrddlm }||jj i}n2|j tS|jj|j St!|hS)Nr)dynamic_param_lookupr]) FakeTupler)FakeDict)rir%jedi.inference.dynamic_paramsr6rrposition_indexrjedi.inference.value.iterabler7rOr8rr r3rr )r$rr6rr7r_r8r9s rr%zAnonymousParamName.infer s  MFFFFFF$$&&%%d&95;OPP  M  q ? ? ? ? ? ?Id1A2FFEE   " " > > > > > >HT0@"EEEE ] " &5@@OO O   r)r:rDrErdecorater(r%rrs@rr1r1s^"8999:9^"9:::!!!!;:!!!!!rr1c.eZdZfdZfdZdZxZS) ParamNamecZt||||_dSr )rirR arguments)r$rrIr@r9s rrRzParamName.__init__%s( 333"rct}|r|S|Sr )rir%r)r$rr9s rr%zParamName.infer)s?  M++--33555rcxddlm}||j|j}||jS)Nr)get_executed_param_names)jedi.inference.paramrCrr@rr:)r$rC params_namess rrz!ParamName.get_executed_param_name0sEAAAAAA//0CT^TT D0022ABBr)r:rDrErRr%rrrs@rr>r>$sg#####66666CCCCCCCrr>c eZdZdZdZdZdS)ParamNameWrapperc||_dSr )_wrapped_param_name)r$rs rrRzParamNameWrapper.__init__7s#-   rc,t|j|Sr )getattrrIrs r __getattr__zParamNameWrapper.__getattr__:st/666rc2d|jjd|jdS)Nr7r r8)r9r:rIr#s rr;zParamNameWrapper.__repr__=s#!^444d6N6N6NOOrNr:rDrErRrLr;r'rrrGrG6sF...777PPPPPrrGcreZdZdZdZdZd dZedZe dZ dZ ed Z d Z d S) ImportNamer]rrc"||_||_dSr )_from_module_contextr)r$r3rs rrRzImportName.__init__Es$2!&rFc|r?|jr0|jdks Jd|jj}||S||jfzS|jfSdS)Nr]z(Everything else is not supported for nowr')_levelrSr,r)r$r-r/s rr0zImportName.get_qualified_namesIsi  '{ :{a''')S'''#8E '''#t'7&999$& &rrc|j}|}|s|Stt|Sr )rSr%nextiterr)r$m import_valuess rr3zImportName.parent_contextTsH  %  HD''((33555rc~ddlm}|j}||j|jg||jS)Nr)Importer)rd)rr\rSrOrrUfollow)r$r\rYs rr%zImportName.infer^sL333333  %x)D,<+=q TTT[[]]]rc>d|DS)Ncg|] }|j Sr'rw)r`rYs rrxz#ImportName.goto..es---1---r)r%r#s rr(zImportName.gotods-- ----rcdS)Nrr'r#s rr@zImportName.api_typegsxrcDt|Sr )rr(r#s rrzImportName.py__doc__ks ,,,rNrC)r:rDrErrUrRr0rKr3rr%r(r@rr'rrrPrPAsI F'''    66X6^^^^ ...X-----rrPceZdZdZdS) SubModuleNamer]N)r:rDrErUr'rrrcrcos FFFrrcc eZdZdZdZdZdS) NameWrapperc||_dSr ) _wrapped_name)r$ wrapped_names rrRzNameWrapper.__init__ts)rc,t|j|Sr )rKrgrs rrLzNameWrapper.__getattr__wst)4000rc0|jjd|jdS)N())r9r:rgr#s rr;zNameWrapper.__repr__zs!>222D4F4F4FGGrNrNr'rrreressF***111HHHHHrrec>eZdZUeed<eed<eed<fdZxZS) StubNameMixinr@rIr%c(ddlm}|g}|jdkr>d|jjvrd|D}||d}||vr tSt|S)Nrrrrzcg|] }|j Sr'rw)r`vs rrxz+StubNameMixin.py__doc__..s222QV222rFr) rrr@rIrrr%rirr)r$rrr9s rrzStubNameMixin.py__doc__sCCCCCC =K ' 'C4>3P3P3R3R3[,[,[22TZZ\\222E eUCCC 5==77$$&& &$E** *r)r:rDrErHrGrrrrs@rrnrn~sUMMMNNN JJJ+++++++++rrnceZdZfdZxZS)StubNamect}|jdkrK|dkr!ddlmtfd|DS|S)N version_infosysr) VersionInfoc3.K|]}|VdSr r')r`crws rrbz!StubName.infer..s+==qKKNN======r)rir%rr+ py__name__!jedi.inference.gradual.stub_valuerwr )r$inferredrwr9s @rr%zStubName.infers77==??  ~ - -$2G2G2I2I2T2T2V2VZ_2_2_ E E E E E E====H===== =r)r:rDrEr%rrs@rrsrss8rrsc.eZdZdZdZedZdS) ModuleNamerQc"||_||_dSr )r_name)r$r_rs rrRzModuleName.__init__s  rc|jSr )rr#s rrzModuleName.string_names zrN)r:rDrErrRrKrr'rrr~r~sCIXrr~ceZdZdS)StubModuleNameN)r:rDrEr'rrrrsDrrN).abcrinspectrtypingrrrjedi.parser_utilsrr jedi.inference.base_valuer r jedi.inference.cacher jedi.inferencer jedi.cacherjedi.inference.helpersrr jedi.pluginsrrrrMrXrrrrrr rr1r>rGrPrcrernrsr~rr'rrrs{''''''''''QQQQQQQQ99999999======%%%%%%%%%%%%DDDDDDDD''''''<<<<<<<<~2"v(v(v(v(v(-v(v(v(r $ $ $ $ $ $ $ $F,,,,, 0,,,[[[[[)[[[|6B*,<4BBBBB,BBBJ!!!!!-!!!:CCCCC$CCC$PPPPP{PPP+-+-+-+-+-'+-+-+-\JHHHHHHHH++++++++0}0     !7        ]J     r