L i3$UddlmZddlZddlZddlmZmZddlmZdZ de d<ddZ d dd Z dd Z dd Zdd Z dd ZddZddZddZ ddZddZy)) annotationsN)AnyFinal)config__streamlitmagic__rMAGIC_MODULE_NAMEchtj||d}t||}t|d||S)a Modifies the code to support magic Streamlit commands. Parameters ---------- code : str The Python code. script_path : str The path to the script file. Returns ------- ast.Module The syntax tree for the code. execT)is_rootfile_ends_in_semicolon)astparse_does_file_end_in_semicolon_modify_ast_subtree)code script_pathtreer s j/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/streamlit/runtime/scriptrunner/magic.py add_magicrs:" 99T; /D8tD d3I Kc t||}t|D]?\}}t|}|tjus6|tj us$|tj us|tjur t|f|tjus$|tjus|tjurt|t|d|tjurJ|jD]9}t|tjtj hvs/t|;|tjus%tj dk\rU|tj"urCt|t|dt|d|j$D] } t| |tj&urt|t|dtj dk\r0|tj(ur|j*D] } t| |tj,us t/||t|||t1|dz k(|} | 9| |_B|r t5|tj6|y) z;Parses magic commands and modifies the given AST (sub)tree.orelse) finalbody) body_attr)r ) parent_typer is_last_exprr N)getattr enumeratetyper FunctionDefWithAsyncFunctionDef AsyncWithrForWhileAsyncForClassDefbodyTrysys version_infoTryStarhandlersIfMatchcasesExpr_get_st_write_from_exprlenvalue_insert_import_statementfix_missing_locations) rrr r r,inode node_type inner_node handler_node case_noder8s rrr8s 4 #DT?>#4J  (CHH$C000CMM)  %  I$:i3<<>W  % h /#,, &"ii 4  #9M9M'NN' 3 4 #'' !    'I,D  %  <  9 $  2 #L1 2 #&&  % h /    (Y#))-C!ZZ / #I. /#(( "+ J3t9q=0'= E " }>#@ &d#rct}|jrUt|jdtjtj hvr|jj d|yt|jdkDrt|jdtjurwt|jdjrUt|jdtjtj hvr|jj d|y|jj d|y)z>Insert Streamlit import statement at the top(ish) of the tree.rrN) _build_st_import_statementr,r#r ImportFromImportinsertr7r5_is_string_constant_noder8)r st_imports rr9r9s+,I yyT$))A,'CNNCJJ+GG I& DII 1 #(( *(1););< 1 3>>3::"> > I& I&rcbtjtjdtgS)z>Build AST node for `import magic_funcs as __streamlitmagic__`.z*streamlit.runtime.scriptrunner.magic_funcs)nameasname)names)r rEaliasrrrrCrCs* :: IIA(   rc tjtjdtjttj tj |gS)zBBuild AST node for `__streamlitmagic__.transparent_write(*nodes)`.transparent_write)idctx)attrr8rR)funcargskeywords)r Call AttributeNamerLoad)nodess r_build_st_write_callr\sH 88 ]]$((/SXXZ@   rc6t|jtjurt |||syt |j||r t |syt|jtjus%t|jtjuryt|jtjuryt|jtjur|jjn |jg}t|SN) r#r8r rW_is_displayable_last_expr_is_docstring_node*_should_display_docstring_like_node_anywayYield YieldFromAwaitTupleeltsr\)r<r;rr r r rUs rr6r6s DJJ388#,E5-  A{8A DJJ399$TZZ(8CMM(I DJJ399$ #4::.#));4::??$**D  %%rcnt|tjxrt|jtSr^) isinstancer Constantr8str)r<s rrGrGs# dCLL ) IjS.IIrc|dk(xr>t|xr1|tjtjtjhvS)Nr)rGr r$r&Module)r< node_indexrs rr`r`s?a O $T * O COOS-A-A3::N Nrc d}tjdrlt|jdk(ryt |jddd}|7|j d|dz }|j djd }|S) NF"magic.displayLastExprIfNoSemicolonr end_lineno r ;)r get_optionr7r,r!splitstripendswith)rrr last_line_num last_line_strs rrrs"=> tyy>Q  " |TB  $!%D!1-!2C!DM%2%8%8%=%F%Fs%K " !!rcF|xr|xr| xrtjdS)Nrorru)r r r s rr_r_s:  D  D' &  D   B C rc4tjdxr|S)Nzmagic.displayRootDocStringr|)r s rraras   9 : FwFr)rrjrrjreturnr)r,FF) rrrrjr boolr rr~None)rrr~r)r~z ast.Import)r[z list[Any]r~zast.Call)r<rr;intrrr rr rr rr~zast.Call | None)r<rr~r)r<rrmrrrr~r)rrrrjr~r)r rr rr rr~r)r rr~r) __future__rr r.typingrr streamlitrr__annotations__rrr9rCr\r6rGr`rr_rarNrrrs# 05/<#( N$ N$N$N$! N$  N$b'6  && && &&&& &&  && ! &&&&RJ"$   !% ?C    Gr