L iRddlZddlZddlZddlZddlmZddlmZmZmZm Z m Z m Z m Z ddl mZddlmZddlmZmZe rddlmZej.d fej.d fej.d fej.d fej.d fej.dfiZej.d fej.d fej.d fej.d fej.dfej.d fiZGddZy)N)Module)CallableListUnioncastOptionalTuple TYPE_CHECKING)util) ASTTokens)astroid_node_classes BaseContainer)AstNode()[]{}ceZdZdZdZdZdZdZdZdZ dZ d Z d Z d Z d ZeZeZeZd ZeZeZdZdZdZdZdZdZdZdZd$dZdZdZdZ dZ!dZ"dZ#dZ$e$Z%dZ&dZ'd Z(d!Z)e)Z*e)Z+d"Z,y#)% MarkTokensz Helper that visits all nodes in the AST tree and assigns .first_token and .last_token attributes to each of them. This is the heart of the token-marking logic. cR||_tj|_d|_yN)_coder NodeMethods_methods_iter_children)selfcodes [/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/asttokens/mark_tokens.py__init__zMarkTokens.__init__1s!DJ$$&DMDctj||_tj||j|j yr)r iter_children_funcr visit_tree_visit_before_children_visit_after_children)rnodes r!r&zMarkTokens.visit_tree7s111$7DOOD$55t7Q7QRr#ct|dd}|&|jj|j|nd}|s1t j |r|jj dd}|xs||fS)N col_offsetr r)getattrrget_token_from_utf8linenor is_module get_token)rr) parent_tokencoltokens r!r'z!MarkTokens._visit_before_children<sg $ d +C@CDJJ * *4;; z7MarkTokens._expand_to_matching_pairs..s$H  uxx3Hs/2),:) r token_rangepop_matching_pairs_leftappend_matching_pairs_rightreversedrLanyr rGrM) rr6r8r)to_match_right to_match_lefttoktok_infomatchr?r@s @r!r<z$MarkTokens._expand_to_matching_pairs|sONMzz%%k:>>Rah Hr(:: + +28<= , ,28<=>.) ZZ " ": .d HZH Hzz$$T* HZH H   $ ' ' jj##K0e  % (% (   $$r#c ||fSrrr)r6r8s r! visit_defaultzMarkTokens.visit_defaults  $$r#c|jj|}tj|tj |||fSr)rrMr expect_tokenr3rI)r open_bracer)r6r8befores r! handle_compzMarkTokens.handle_comps9ZZ " "; /Ffehh 3 J r#cd|jj|tjdd}||fS)NforTreverse)r find_tokenr3NAME)rr)r6r8r?s r!visit_comprehensionzMarkTokens.visit_comprehensions0 JJ ! !+uzz5$ ! OE : r#cz|jdvr*|jj|}|jdvr*||fS)N)ifelifstringrrMrgs r!visit_ifzMarkTokens.visit_ifs?   N 2JJ))+6k   N 2  ""r#c|jj|tjd}|jj |}t j |tj||fS)N.)rrrr3rIrLr rjrs)rr)r6r8dotnames r! handle_attrzMarkTokens.handle_attrsS **   EHHc :C ::  %DdEJJ'  r#cL|jsDt|dds t|ddr*|jj|tj }|j dkDrB|jj|}tj|tjdr|}||fS)Ndoc_nodedocr@) bodyr,rrrr3STRINGr7rMr rGrI)rr)r6r8prevs r! handle_defzMarkTokens.handle_defs 99'$ D9WT5RV=W::((U\\Bj1 ZZ " "; /d  $# .  $$r#cttt|j|}|jj |j tj|}|j|jkDr|}|Sr) nextrrrrrrr8r3rIr7)rr)r8opening_bracket first_child call_starts r!handle_following_bracketsz$MarkTokens.handle_following_bracketssd:tHd&9&9:4@AK&&{'='=uxxYJ****j r#c|j||d}tj|tjdr|j j |}||fS)Nrr)rr rGr3rIrrLrgs r! visit_callzMarkTokens.visit_callsM//j#FJ   UXXs3JJ))+6k  $$r#c0|j||d}||fS)Nrrrgs r!visit_matchclasszMarkTokens.visit_matchclasss!//j#FJ  $$r#c0|j||d}||fS)Nrrrgs r!visit_subscriptzMarkTokens.visit_subscripts# //j#FJ  $$r#c |jj|}|jdk7rn|}. |jj|}|jdk7r ||fS|}2)NrX)rrMryrL)rr)r6r8rnext_s r! visit_slicezMarkTokens.visit_slicess  ZZ " "; /d   k  jj##J/e    $$j r#c|jj|}tj|tj dr|}||fS)NrW)rrLr rGr3rI)rr)r6r8 maybe_commas r!handle_bare_tuplezMarkTokens.handle_bare_tuples>**'' 3K  UXXs3j  $$r#c0t|tjst|tsJ|jd}t rt t|}|j|j|jd\}}||k(r|j|||S||fS)NrT) isinstanceastr AstroidBaseContainereltsr rr_gobble_parensr6r8r)rr)r6r8rA child_first child_lasts r!handle_tuple_nonemptyz MarkTokens.handle_tuple_nonempty$s dCII &*T;O*PP P IIaLE7E"e"11%2C2CUEUEUW[\Kk!  # #D+z BB  $$r#ct|tjst|tsJ|js||fS|j |||Sr)rrr rrrrgs r! visit_tuplezMarkTokens.visit_tuple1sG dCII &*T;O*PP P 99: &&  % %dK DDr#c@|jdkDr|jj|}|jj|}t j |t jdr,t j |t jdr||}}|r ||fS||fS)Nrrr)r7rrMrLr rGr3rI)rr6r8 include_allrrs r!rzMarkTokens._gobble_parens9s   a  ZZ " "; /d ZZ " ": .d  $# .43C3CD%((TW3X"&Z    $$K $$r#c&|j||Sr handle_strrgs r! visit_strzMarkTokens.visit_strG ??; 33r#c^tjdkr|j||S|} tj|t t drd}|dkDrt|jj|}tj|t t dr|dz }n)tj|t t dr|dz}|dkDrt|}|jj|}nGtj|t jr|}|jj|}n ||fS)N) FSTRING_STARTr r FSTRING_END) sys version_inforr rGr,r3rrLr)rr)r6r8r@counts r!visit_joinedstrzMarkTokens.visit_joinedstrKs  '! __[* 55 D   $ ? @ ai&&t,$   dGE?$C D QJEge]&CD QJE ai zz$$Z0   D%,, / zz$$Z0  $$- r#c&|j||Srrrgs r! visit_byteszMarkTokens.visit_bytesnrr#c |jj|}tj|tj rB|}|jj|}tj|tj rB||fSr)rrLr rGr3r)rr6r8r@s r!rzMarkTokens.handle_strrsh ::  ,D   4 .j ZZ " ": .d   4 .  $$r#ctj|tjr@|jj |}tj|tjr@t |tr |j}|dkr8|jtjk(r|jj|}||fS)Nr) r rGr3rIrrLrcompleximagrKNUMBERrM)rr)valuer6r8s r! handle_numzMarkTokens.handle_num{s   :uxx 0::((4j   :uxx 0%!jje qy[%%5jj++K8  $$r#c|j}t|tttj fsJ|j ||||Sr)nrrintnumbersNumberr)rr)r6r8rs r! visit_numzMarkTokens.visit_nums; A a'37 88 8 ??4K <e!%!6!6u!==kJ  $$r#c^|jdk(s|jj|}||fS)Nasyncrxrgs r! handle_asynczMarkTokens.handle_asyncs/    (JJ))+6k  $$r#ctj|tjdr|jj |}|j |||S)Ndef)r rGr3rsrrMvisit_functiondefrgs r!visit_asyncfunctiondefz!MarkTokens.visit_asyncfunctiondefsC   UZZ7JJ))+6k  ! !$ Z @@r#N)F)-__name__ __module__ __qualname____doc__r"r&r'r(r:r<rhrmrtrzrvisit_attributevisit_assignattr visit_delattrrvisit_classdefrrrrrrrrrrrrrrrrrvisit_constantrrrrvisit_asyncforvisit_asyncwithrrfr#r!rr,s S *(T$#%R%   #  / - %.   %% %%(% %E %4!%F4%%,= %. %%%%  . / Ar#r)rrrr3rtypingrrrrrr r r asttokensr astroid_compatrrrrrrIr[r]rrfr#r!rs  NNN ]  88S/EHHc?88S/EHHc?88S/EHHc? 88S/EHHc?88S/EHHc?88S/EHHc?iAiAr#