TL i&JxdZddlZddlmZddlmZddlmZddlm Z ddl m Z ddl m Z dd lmZdd lmZdd lmZdd lmZdd lmZddlmZmZddlmZedgdZdZdZd)dZ dZ!dZ"dZ#Gdde$Z%dZ&dZ'dZ(d)dZ)GddZ*d Z+d!Z,d"Z-d#Z.ed$d%Z/d&Z0d*d'Z1d(Z2y)+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$|j|SN) startswith)string like_names V/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/jedi/api/helpers.py _start_matchrs   Y ''ct|dkr||vS|j|d}|dk\rt||dzd|ddSy)NrF)lenfind _fuzzy_match)rrposs rr"r"sS 9~F"" ++il #C axF378,im<< rc6|r t||St||Sr)r"r)rrfuzzys rmatchr&&s FI..FI..rct|dS)Nct|jxsd|jxsd|jxsd|jfS)Nr)str module_pathlinecolumnr)xs rz$sorted_definitions../s6s1==+>B'?'(vv{'(xx}1'(vv'/r)key)sorted)defss rsorted_definitionsr3-s $/ 00rc|j|}||jdvr6||ddz }tjd|d|dj dS|jdvry|j d|d|j dz S)N)r error_leafrrz (?!\d)\w+$|$)rkeywordr))get_leaf_for_positiontyperesearchgroupvalue start_pos) module_nodelinespositionleafr,s rget_on_completion_namerB5s  , ,X 6D |tyy$<<Xa[1_%yy$| *<=CCAFF - - ::6x{T^^A%66 77rcx||ddz |d}|dd|d|d<|d|dd|d<dj|S)Nrrr))join) code_linesr=end_posr?s r _get_coderHCsY y|a' 3Eb +71:&E"IQx ! &E!H 775>rceZdZedZy) OnErrorLeafc |jdSNr)argsselfs rr5zOnErrorLeaf.error_leafNsyy|rN)__name__ __module__ __qualname__propertyr5rrrJrJMs rrJc|j|k\r|j}|y|jdk(}|jdk(r#|j}|y|jdk(r#|jdk(s|jdk(r!|jd|dkryt||} |jjdvrn |j}&|r|jd|dkDryt ||j |S)Nr)newliner5rr) file_inputsuite simple_stmtr)r=get_previous_leafr8rJparentrHget_start_pos_of_prefix)rFrAr@is_after_newline user_stmts r_get_code_for_stackr_Ss ~~!%%' <yyI- ))y %%' < ))y  yyL DII$9 >>! x{ *$ $$(NN!((I ""1% 3Y%F%F%H(SSrc<Gddtfd}tt|||}d|dzz}tjd} |j ||td t||z#$r|j cYSwxYw) zU Returns the possible node names (e.g. import_from, xor_test or yield_stmt). c eZdZy)/get_stack_at_position..EndMarkerReachedN)rPrQrRrTrrEndMarkerReachedrbs rrcc3Kj|}|D]d}|jk(r|jjr|jjr ||fywr) _tokenizerprefixendswith)codetokenstokenrcgrammarsafewords rtokenize_without_endmarkerz9get_stack_at_position..tokenize_without_endmarkers}""4( E||x'&((&&x0&((&&x0 &((  sA> 2 '=I"M% )-H))1(, - $$$J#%sAA1A1"A/# A1cTeZdZdZedZedZedZdZ dZ dZ y) CallDetailsc.||_||_||_yr) bracket_leaf _children _position)rOrchildrenr@s r__init__zCallDetails.__init__s(!!rcHt|j|jdSrL_get_index_and_keyrrrNs rindexzCallDetails.index!$..$..A!DDrcHt|j|jdS)NrrrNs rkeyword_name_strzCallDetails.keyword_name_strrrcTtt|j|jSr)rv_iter_argumentsrrrNs r_list_argumentszCallDetails._list_argumentssODNNDNNCDDrcd}t}d}|j}|s|ryyd}t|D]B\}\}}} || |dk(zz}|r|dzt|k7s*| r|j |>|dz }Dt|D]\}} | j } |sB| t jk(r|cS| t jt jfvr ||k(r|cS|dk(r|dk(sg| j|vre| t jk(s| t jk(r?||kr:|r|cS r| j|k(r#|cS| jj|r|cS| t jk(s|cSy)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_indexsU  ##%5>t_ . 1A1 Iy  Z1_5 5Hq5CI% "y1(A-( .'{3 MAz&&(D9333HI;;Y=V=VWW,, $Z1_ a));!Y%;%;; $ (G(G G!1Q!6!  %11Y>#$H%11<| jkr!| jd k(rd| j dfnsd|| dfne| d vr!t | j || dfn@|j} | jd k(r| jk\rd|| dfnd d}|jd k(ri|jdddD]1} | jdk(rd}| jd} ||| dfd}3tt |jdz}Yt|tjr|j dk(r|s |ddfd}d}t|tjr%|j d vrt |j }|d k(s|dsd}||dz } | jd k(rd| j dfnd d}|s+|djd k(r|||ddfy|ddfyycc}w7Zw)Nch|jdk7ry|jdd|jdz S)Nrr)r8r<r=)rr@s rremove_after_posz)_iter_arguments..remove_after_pos"s6 99 zz:8A;)::;;rrDarglistFrargumentTr=r)*z**)rNFtestlist_star_exprr star_expr,r)) r=r8rrrr<r get_first_leafboolrr PythonLeaf)nodesr@rc nodes_beforeprevious_node_yielded stars_seenrnodefirstsecond first_leafnbefores ` rrr!s< %?! h(>A?L?B )"<#3#<#A?L?B )!,r"2";";XFFG  D yyJ4==#3s#: a ((H4--"(( r"((   c "G ++@s CCcPttt|jD]|\}}|dk(s |j|ks|dkDs"|j|d}|j }|D|j dk(s|jj dvslt|||z|cSy)N(rr)r{rz) reversedrvrrrGrZr8r[r)radditional_childrenr@relementrrs r&_get_signature_details_from_error_noderys"4 $--(@#AB Vw c>goo9eai}}UV,H,,.D|yyF"dkk&6&6:M&M"7H7J,JHUU Vrc|j|d}|j|k\r|j}|y|j}|F|jdvryg}t |j D]V}|j|ks|jdk(r#t|||}||cS|j |ddE|jd|X|jdk(r|j ddk(s!|jdk(r|j d dk(ru||j d ur||jk\sU|j}|yt|jdk(r|j dn|j d |j |S|j}|Fy) NT)include_prefixes)funcdefclassdef decorated async_stmt error_noderr{r decoratorrrD) r7r=rZr[r8rrrinsertrGr)moduler@rArrrresults rget_signature_detailsrs  ' '4 ' HD ~~!%%' < ;;D   99J J $--( 1A{{X%66\)C.F)% /0zz'!,#**1a0 1 99 !dmmA&6#&=99 + a0@C0G DMM"--(dll2J--/<"(, Y(>DMM!$DMMRSDTMM {{K  N rcall_signatures_validityc#pK|ddz }||d|d}||jd|}dj||gz}tjd|tj} |j j } | dn| | |jft|||jyw)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*.wrappers04 s3t''(!,$D1C 0 011HI I2HI I&&tax0 {#    ' MH  ! !$ ' MH#^V'x'8!'4;FFG GD$8888r)NNr)rrs` rvalidate_line_columnrs  4[99$ Nrcfd}ttjjj }|sfd}|Dcgc] }||s |}}t ||Scc}w)zZ Returns a dictionary with name parts as keys and their call paths as values. cB|j}xr|xsxr| Sr) is_definition)ris_defr referencess rdef_ref_filterz(get_module_names..def_ref_filters(##%%vB)BF Brc`t|}|r|jdk(r |j}|dfvS)Nr)rr8r[)r parent_scopers ris_module_scope_namez.get_module_names..is_module_scope_names7+D1L 1 1\ A+22 FD>1 1r)rvr from_iterableget_used_namesvaluesfilter)r all_scopesrrrrr rs` `` rget_module_namesrsi C $$V%:%:%<%C%C%EF GE   2"=q%9!%<== .% ((>s  A/A/c`|jd\}}}|dk(rd}||jdfS)Nrodeffunction.) rpartitionsplit)rr8_ dotted_namess rsplit_search_stringrs9 OOC0D!\ 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_rxrrrrrrrrrrrrTrrr)s "&/158;..0KL(/0 8) %TP'T(*PPf@(F,* V4n012*.)6)r