uBFj&JdZddlZddlmZddlmZddlmZddlm Z ddl m Z ddl m Z dd lmZdd lmZdd lmZdd lmZdd lmZddlmZmZddlmZedgdZdZdZd+dZ dZ!dZ"dZ#Gdde$Z%dZ&dZ'dZ(d+dZ)Gdd Z*d!Z+d"Z,d#Z-d$Z.ed%d&Z/d'Z0d,d)Z1d*Z2dS)-z Helpers for the API N) namedtuple)dedent)chainwraps) Parameter)Parser)tree) NO_VALUES) infer_atom)infer_call_of_leaf)get_string_value_set)signature_time_cachememoize_method)get_parent_scopeCompletionParts)pathhas_dotnamec,||SN) startswith)string like_names >C:\PYTHON\_runtimes\venv\Lib\site-packages\jedi/api/helpers.py _start_matchrs   Y ' ''ct|dkr||vS||d}|dkr#t||dzd|ddSdS)NrF)lenfind _fuzzy_match)rrposs rr"r"sf 9~~F"" ++il # #C axxF3788,im<<< 5rFcF|rt||St||Sr)r"r)rrfuzzys rmatchr&&s* /FI...FI...rc&t|dS)Nc\t|jpd|jpd|jpd|jfS)Nr)str module_pathlinecolumnr)xs rz$sorted_definitions../s1s1=+>B'?'?'(v{'(x}1'(v'/r)key)sorted)defss rsorted_definitionsr3-s% $// 0 0 00rc,||}| |jdvrG||ddz }tjd|d|ddS|jdvrdS|jd|d|jdz S)N)r error_leafrrz (?!\d)\w+$|$)rkeywordr))get_leaf_for_positiontyperesearchgroupvalue start_pos) module_nodelinespositionleafr,s rget_on_completion_namerB5s  , ,X 6 6D |ty$<<<Xa[1_%y$| |*<==CCAFFF - - -r :6x{T^A%666 77rc||ddz |d}|dd|d|d<|d|dd|d<d|S)Nrrr))join) code_linesr=end_posr?s r _get_coderHCsb y|a' 2 3Eb +71:+&E"IQx ! &E!H 775>>rc$eZdZedZdS) OnErrorLeafc|jdSNr)argsselfs rr5zOnErrorLeaf.error_leafNsy|rN)__name__ __module__ __qualname__propertyr5rrrJrJMs- XrrJc|j|kr|}|dS|jdk}|jdkr#|}|dS|jdk#|jdks |jdkr(|jd|dkrdSt||} |jjdvrn|j}|r|jd|dkrdSt |||S) Nr)newliner5rrT) file_inputsuite simple_stmtr)r=get_previous_leafr8rJparentrHget_start_pos_of_prefix)rFrAr@is_after_newline user_stmts r_get_code_for_stackr_Ss* ~!!%%'' <2yI- )y %%'' <2 )y  yL  DI$9$9 >! x{ * *2$  )$(NNN!(I )  "1% 33rY%F%F%H%H(SSSrcnGddtfd}tt|||}d|dzz}tjd} |||n#$r |jcYSwxYwtd t||z) zU Returns the possible node names (e.g. import_from, xor_test or yield_stmt). ceZdZdS)/get_stack_at_position..EndMarkerReachedN)rPrQrRrTrrEndMarkerReachedrbs rrcc3 K|}|D]g}|jkr |jr |jr|V|VhdSr) _tokenizerprefixendswith)codetokenstokenrcgrammarsafewords rtokenize_without_endmarkerz9get_stack_at_position..tokenize_without_endmarkers""4((  E|x''&&(((&&x00 &&(((&&x00  &&(((   r)ZZZ_USER_WANTS_TO_COMPLETE_HERE_WITH_JEDI T)error_recovery)riz7This really shouldn't happen. There's a bug in Jedi: %s) Exceptionrr_r _pgen_grammarparsestack SystemErrorlist) rkrFrAr#rmrhprcrls ` @@rget_stack_at_positionrx{s     9   " %j$<< = =D;H #: Dw$T:::A 11$778888 w B ))$// 0 0 1  sA== B  B cl|jdkr|||S|j}t}|jdkr||j}n^|jdkrt ||}nBt |tjrt||S|jdvrt|S|S)Nratomtrailer)fstring_string fstring_start fstring_end) r8inferr[r infer_noder isinstancer Literalr r)inference_statecontextrAr[ definitionss rrrs yF$$Wd333 [FK {f((55  ! !($77 D$, ' '5'4((( H H H#O444 rc#K|D]l}|rRtt||}d}|r|D] }|jd} |r|V_|Ed{Vh|VmdS)N)follow_builtin_importsFT) is_importrvfilter_follow_importsgotor=)namesrr new_names found_builtinnew_names rrrs >>   2 '=I"M% - )--H)1(,  % $$$$$$$$$JJJJ#rcheZdZdZedZedZedZdZ dZ dZ dS) CallDetailsc0||_||_||_dSr) bracket_leaf _children _position)rOrchildrenr@s r__init__zCallDetails.__init__s(!!rcBt|j|jdSrL_get_index_and_keyrrrNs rindexzCallDetails.index!$.$.AA!DDrcBt|j|jdS)NrrrNs rkeyword_name_strzCallDetails.keyword_name_strrrcPtt|j|jSr)rv_iter_argumentsrrrNs r_list_argumentszCallDetails._list_argumentssODNDNCCDDDrcd}t}d}|}|s|rdSdSd}t|D]K\}\}}} || |dkzz}|r|dzt|kr| r||F|dz }Lt|D]\}} | } |s8| t jkr|cS| t jt j fvr ||kr|cS||dkr|dkry| j |vr\| t j ks| t jkr<||kr6|r|cS| r| j |kr|cSn| j |r|cS| t j kr|cSdS)NrrDFr)setr enumerater addget_kindrVAR_POSITIONALPOSITIONAL_OR_KEYWORDPOSITIONAL_ONLY string_name KEYWORD_ONLYr VAR_KEYWORD) rO param_namespositional_count used_names star_countrMis_kwargi key_start had_equal param_namekinds rcalculate_indexzCallDetails.calculate_indexsUU  ##%%  qt5>t__ . . 1A1 Iy  Z1_5 5H .q5CII%% ."y1111(A-(&{33  MAz&&((D !9333HHHI;Y=VWWW,,, $Z1__ a);;!Y%;;; $ (G G G!1Q!6!6!!  %%1Y>>#$HHH?&1<.remove_after_pos"s8 9  4z:8A;):::;;rc*g|]}|jk |SrTr=.0cr@s r z#_iter_arguments..(%???! h(>(>A(>(>(>rrDarglistFrargumentTr=r)*z**)rNFtestlist_star_exprr star_expr,r)) r8rrrr=r<r get_first_leafboolrr PythonLeaf) nodesr@r nodes_beforeprevious_node_yielded stars_seenrnodefirstsecond first_leafnbefores ` rrr!s<<<<< @???u???LB ))"<#3#.hrrrDrNrrrrr)r8rrrGr<r)rr@rkey_strlasts ` rrrds@???u???LB ))!,r"2";XFFFG  D yJ4=#3s#:#: a (H44-"( r"(   c " "G ++rcFttt|jD]q\}}|dkrf|j|kr[|dkrU|j|d}|}|B|jdks|jjdvrt|||z|cSrdS)N(rr)r{rz) reversedrvrrrGrZr8r[r)radditional_childrenr@relementrrs r&_get_signature_details_from_error_noderys"4 $-(@(@#A#ABB V Vw c>>go99eaii}UVV,H,,..D|yF""dk&6:M&M&M"7H7J,JHUUUUU V Vrc||d}|j|kr|}|dS|j}|!|jdvrdSg}t |jD]R}|j|krE|jdkr$t|||}||cS|j|dd<<|d|S|jdkr|jddks|jdkr||jd dkrk||jd ur ||j ksQ|}|dSt|jdkr |jdn |jd |j|S|j}|!dS) NT)include_prefixes)funcdefclassdef decorated async_stmt error_noderr{r decoratorrrD) r7r=rZr[r8rrrinsertrGr)moduler@rArrrresults rget_signature_detailsrs  ' '4 ' H HD ~!!%%'' <4 ;D   9J J J4 $-(( 1 1A{X%%6\))C.F)% /0z'!,#**1a000 9 ! !dmA&6#&=&=9 ++ a0@C0G0G DM"---(dl2J2J--//<4"(, Y(>(>DM!$$DMRSDTM {K  N 4rcall_signatures_validityc#K|ddz }||d|d}||jd|}d||gz}tjd|tj} |} | dVn | | |jfVt|||VdS)z'This function calculates the cache key.rrNr)z.*\() r=rEr9r&DOTALLget_root_context py__file__rrZ) rrrrFuser_pos line_index before_cursor other_lineswholebefore_bracketr+s rcache_signaturesrs!qJz*tdfd }|S)Nc|"tt|jdn|}d|cxkrt|jksntd|j|dz }t|}|dr|dz}n|dr|dz}||n|}d|cxkr|ksntd||||fz|||g|Ri|S)Nrrz)`line` parameter is not in a valid range.z r zH`column` parameter (%d) is not in a valid range (0-%d) for line %d (%r).)maxr _code_lines ValueErrorrg)rOr,r-rMkwargs line_stringline_lenfuncs rwrapperz%validate_line_column..wrappers>04 s3t'((!,,,$D1111C 0111111HII I&tax0 {##    ' '  MHH  ! !$ ' '  MH#^V''''x''''8!'4;FFGG GtD$8888888r)NNr)rrs` rvalidate_line_columnr s8 4[[99999[9$ NrTcfd}ttj}|sfdfd|D}t ||S)zZ Returns a dictionary with name parts as keys and their call paths as values. c>|}r|po| Sr) is_definition)ris_defr referencess rdef_ref_filterz(get_module_names..def_ref_filters+##%%%vB)BF BrcVt|}|r|jdkr|j}|dfvS)Nr)rr8r[)r parent_scopers ris_module_scope_namez.get_module_names..is_module_scope_names<+D11L 3 1\ A A+2 FD>1 1rc*g|]}| |SrTrT)rrrs rrz$get_module_names..s*===q%9%9!%<%<====r)rvr from_iterableget_used_namesvaluesfilter)r all_scopesrrrrrs` `` @rget_module_namesrs CCCCCC $V%:%:%<%<%C%C%E%EFF G GE  >  2 2 2 2 2>===E=== .% ( ((rcr|d\}}}|dkrd}||dfS)Nrodeffunction.) rpartitionsplit)rr8_ dotted_namess rsplit_search_stringr"sA OOC00D!\ u}} ##C(( ((r)F)TF)3__doc__r9 collectionsrtextwrapr itertoolsr functoolsrinspectrparso.python.parserr parso.pythonr jedi.inference.base_valuer jedi.inference.syntax_treer jedi.inference.helpersr jedi.inference.compiledr jedi.cacherrjedi.parser_utilsrrrr"r&r3rBrHrqrJr_rxrrrrrrrrr rr"rTrrr1s """"""&&&&&&//////111111555555888888;;;;;;;;......*.0K0K0KLL(((////000 8 8 8) %T%T%TP'''T(*PPPPPPPPf@(@(@(F,,,* V V V444n01121*.))))6)))))r