qBFjRpddlZddlZddlZddlZddlmZddlmZmZmZm Z m Z m Z m Z ddl mZddlmZddlmZmZe rddlmZejd fejd fejd fejd fejd fejdfiZejd fejd fejd fejd fejdfejd fiZGddZdS)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&d Z'd!Z(d"Z)e)Z*e)Z+d#Z,d$S)& 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|_dSN)_coder NodeMethods_methods_iter_children)selfcodes CC:\PYTHON\_runtimes\venv\Lib\site-packages\asttokens/mark_tokens.py__init__zMarkTokens.__init__1s'DJ$&&DMDcxtj||_tj||j|jdSr)r iter_children_funcr visit_tree_visit_before_children_visit_after_children)rnodes r!r&zMarkTokens.visit_tree7s51$77DOD$5t7QRRRRRr#ct|dd}| |j|j|nd}|s/t j|r|jdd}|p||fS)N col_offsetr r)getattrrget_token_from_utf8linenor is_module get_token)rr) parent_tokencoltokens r!r'z!MarkTokens._visit_before_children<sx $ d + +C@CDJ * *4; < < z7MarkTokens._expand_to_matching_pairs..s4HH ux33HHHHHHr#),:) 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|sNMz%%k:>>>>RaRh >Hr(::: + + +28<==== , , ,28<===.)) Z " ": . .d HHHHZHHH H H+z$$T** HHHHZHHH H H+  $ ' ' ' ' j##K00e % (% ( ( (  $$r#c ||fSrrr)r6r8s r! visit_defaultzMarkTokens.visit_defaults  $$r#c~|j|}tj|tj|||fSr)rrMr expect_tokenr3rI)r open_bracer)r6r8befores r! handle_compzMarkTokens.handle_comps;Z " "; / /Ffeh 333 J r#cZ|j|tjdd}||fS)NforTreverse)r find_tokenr3NAME)rr)r6r8r?s r!visit_comprehensionzMarkTokens.visit_comprehensions/ J ! !+uz5$ ! O OE : r#cb|jdvr#|j|}|jdv#||fS)N)ifelifstringrrMrgs r!visit_ifzMarkTokens.visit_ifs@  N 2 2J))+66k  N 2 2  ""r#c|j|tjd}|j|}t j|tj||fS)N.)rrrr3rIrLr rjrs)rr)r6r8dotnames r! handle_attrzMarkTokens.handle_attrsT *   EHc : :C :  % %DdEJ'''  r#c4|jsGt|ddst|ddr%|j|tj}|jdkr<|j|}tj |tj dr|}||fS)Ndoc_nodedocr@) bodyr,rrrr3STRINGr7rMr rGrI)rr)r6r8prevs r! handle_defzMarkTokens.handle_defs 9C'$ D99CWT5RV=W=WC:((U\BBj1 Z " "; / /d $# . .  $$r#cttt|j|}|j|jtj|}|j |j kr|}|Sr) nextrrrrrrr8r3rIr7)rr)r8opening_bracket first_child call_starts r!handle_following_bracketsz$MarkTokens.handle_following_bracketssc:tHd&9::4@@AAK&&{'=uxYYJ****j r#c|||d}tj|tjdr|j|}||fS)Nrr)rr rGr3rIrrLrgs r! visit_callzMarkTokens.visit_callsT//j#FFJ   UXs337J))+66k  $$r#c8|||d}||fS)Nrrrgs r!visit_matchclasszMarkTokens.visit_matchclasss$//j#FFJ  $$r#c8|||d}||fS)Nrrrgs r!visit_subscriptzMarkTokens.visit_subscripts& //j#FFJ  $$r#c |j|}|jdkrn|}) |j|}|jdkrn|})||fS)NTrX)rrMryrL)rr)r6r8rnext_s r! visit_slicezMarkTokens.visit_slicesw Z " "; / /d    k  j##J//e    j   $$r#c|j|}tj|tjdr|}||fS)NrW)rrLr rGr3rI)rr)r6r8 maybe_commas r!handle_bare_tuplezMarkTokens.handle_bare_tuplesB*'' 33K  UXs33j  $$r#c@t|tjst|tsJ|jd}t rt t|}||j |j d\}}||kr| |||S||fS)NrT) isinstanceastr AstroidBaseContainereltsr rr_gobble_parensr6r8r)rr)r6r8rA child_first child_lasts r!handle_tuple_nonemptyz MarkTokens.handle_tuple_nonempty$s dCI & &P*T;O*P*PPP P IaLE#7E""e"11%2CUEUW[\\Kk!!  # #D+z B BB  $$r#ct|tjst|tsJ|js||fS||||Sr)rrr rrrrgs r! visit_tuplezMarkTokens.visit_tuple1sW dCI & &P*T;O*P*PPP P 9': &&  % %dK D DDr#Fc|jdkr||j|}|j|}t j|t jdr't j|t jdr||}}|r ||fS)Nrrr)r7rrMrLr rGr3rI)rr6r8 include_allrrs r!rzMarkTokens._gobble_parens9s  a   Z " "; / /d Z " ": . .d $# . .43CD%(TW3X3X"&Z     $$r#c.|||Sr handle_strrgs r! visit_strzMarkTokens.visit_strG ??; 3 33r#cjtjdkr|||S|} tj|t t drd}|dkr{|j|}tj|t t dr|dz }n-tj|t t dr|dz}|dk{|}|j|}n=tj|t j r|}|j|}nn||fS)N) T FSTRING_STARTr r FSTRING_END) sys version_inforr rGr,r3rrLr)rr)r6r8r@counts r!visit_joinedstrzMarkTokens.visit_joinedstrKs7  '!! __[* 5 55 D $ ? ? @ @ aii&&t,,$  dGE?$C$C D D  QJEEge]&C&CDD  QJE aii z$$Z00  D%, / / z$$Z00 +,  $$r#c.|||Srrrgs r! visit_byteszMarkTokens.visit_bytesnrr#c|j|}tj|tjr;|}|j|}tj|tj;||fSr)rrLr rGr3r)rr6r8r@s r!rzMarkTokens.handle_strrsp :  , ,D  4 . ./j Z " ": . .d  4 . ./  $$r#c\tj|tjr9|j|}tj|tj9t |tr|j}|dkr/|j tj kr|j |}||fS)Nr) r rGr3rIrrLrcompleximagrKNUMBERrM)rr)valuer6r8s r! handle_numzMarkTokens.handle_num{s  :ux 0 05:((44j  :ux 0 05%!!je qyy[%55j++K88  $$r#c|j}t|tttjfsJ|||||Sr)nrrintnumbersNumberr)rr)r6r8rs r! visit_numzMarkTokens.visit_nums@ A a'37 8 888 8 ??4K < <j##J#>>e!%!6!6u!=!==kJ  $$r#cT|jdks|j|}||fS)Nasyncrxrgs r! handle_asynczMarkTokens.handle_asyncs0   ( (J))+66k  $$r#ctj|tjdr|j|}||||S)Ndef)r rGr3rsrrMvisit_functiondefrgs r!visit_asyncfunctiondefz!MarkTokens.visit_asyncfunctiondefsJ   UZ777J))+66k  ! !$ 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,sR SSS * * *(((T$$$#%#%#%R%%%       ###  / - % % %.     % % %%%% %%%%%%(%%% % % %EEE % % % %444!%!%!%F444%%%%%%,=== %%%. % % %%%%%%%%%%  . / A A A A Ar#r)rrrr3rtypingrrrrrr r r asttokensr astroid_compatrrrrrrIr[r]rrfr#r!rs  NNNNNNNNNNNNNNNNNN ]]]]]]]]  8S/EHc?8S/EHc?8S/EHc? 8S/EHc?8S/EHc?8S/EHc?iAiAiAiAiAiAiAiAiAiAr#