Ë
    úmxi3$  ã                  óê   — U d dl mZ d dlZd dlZd dlmZmZ d dlmZ dZ	de
d<   dd„Z	 	 	 d	 	 	 	 	 	 	 	 	 dd	„Zdd
„Zdd„Zdd„Z	 	 	 	 	 	 	 	 	 	 	 	 	 	 dd„Zdd„Zdd„Zdd„Z	 	 	 	 	 	 	 	 dd„Zdd„Zy)é    )ÚannotationsN)ÚAnyÚFinal)ÚconfigÚ__streamlitmagic__r   ÚMAGIC_MODULE_NAMEc                óh   — t        j                  | |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_rootÚfile_ends_in_semicolon)ÚastÚparseÚ_does_file_end_in_semicolonÚ_modify_ast_subtree)ÚcodeÚscript_pathÚtreer   s       ú[/home/htdocs/ttos/venv/lib/python3.12/site-packages/streamlit/runtime/scriptrunner/magic.pyÚ	add_magicr      s:   € ô" �9‰9�T˜;¨Ó/€Dä8¸¸tÓDÐäØ�dÐ3Iõð €Kó    c                óü  — t        | |«      }t        |«      D �]?  \  }}t        |«      }|t        j                  u s6|t        j
                  u s$|t        j                  u s|t        j                  u rt        |«       Œf|t        j                  u s$|t        j                  u s|t        j                  u rt        |«       t        |d«       Œ´|t        j                  u rJ|j                  D ]9  }t        |«      t        j                  t        j                  hv sŒ/t        |«       Œ; �Œ|t        j                  u s%t        j                   dk\  rU|t        j"                  u rCt        |«       t        |d¬«       t        |d¬«       |j$                  D ]  }	t        |	«       Œ �ŒŠ|t        j&                  u rt        |«       t        |d«       �Œµt        j                   dk\  r0|t        j(                  u r|j*                  D ]  }
t        |
«       Œ �Œø|t        j,                  u s�Œt/        ||t        | «      ||t1        |«      dz
  k(  |¬«      }|€�Œ9||_        �ŒB |rt5        | «       t        j6                  | «       y)	z;Parses magic commands and modifies the given AST (sub)tree.Úorelse)é   é   Ú	finalbody)Ú	body_attr)r   é
   é   )Úparent_typer   Úis_last_exprr   N)ÚgetattrÚ	enumerateÚtyper   ÚFunctionDefÚWithÚAsyncFunctionDefÚ	AsyncWithr   ÚForÚWhileÚAsyncForÚClassDefÚbodyÚTryÚsysÚversion_infoÚTryStarÚhandlersÚIfÚMatchÚcasesÚExprÚ_get_st_write_from_exprÚlenÚvalueÚ_insert_import_statementÚfix_missing_locations)r   r   r   r   r,   ÚiÚnodeÚ	node_typeÚ
inner_nodeÚhandler_nodeÚ	case_noder8   s               r   r   r   8   s   € ô �4˜Ó#€Dä˜T“?ó >#‰ˆˆ4Ü˜“Jˆ	ð œŸ™Ñ(ØœCŸH™HÑ$ØœC×0Ñ0Ñ0ØœCŸM™MÑ)ä Õ%ð œŸ™Ñ  I´·±Ñ$:¸iÌ3Ï<É<Ñ>Wä Ô%Ü  hÕ/ð œ#Ÿ,™,Ñ&Ø"Ÿi™iò 4�
Ü˜
Ó#¬¯©¼×9MÑ9MÐ'NÒNÜ'¨
Õ3ò4ð œ#Ÿ'™'Ñ!Ü×Ñ Ò'¨I¼¿¹Ñ,Dä Ô%Ü °Õ<Ü °Õ9Ø $§¡ò 2�Ü# LÕ1ò2ð œ#Ÿ&™&Ñ Ü Ô%Ü  hÖ/ä×Ñ Ò(¨Y¼#¿)¹)Ñ-CØ!ŸZ™Zò /�	Ü# IÕ.ò/ð œ#Ÿ(™(Ó"Ü+ØØÜ  ›JØØ¤3 t£9¨q¡=Ñ0Ø'=ôˆEð Ò Ø"�–
ð}>#ñ@ ä  Ô&ä×Ñ˜dÕ#r   c                ó€  — t        «       }| j                  rUt        | j                  d   «      t        j                  t        j
                  hv r| j                  j                  d|«       yt        | j                  «      dkD  rŸt        | j                  d   «      t        j                  u rwt        | j                  d   j                  «      rUt        | j                  d   «      t        j                  t        j
                  hv r| j                  j                  d|«       y| j                  j                  d|«       y)z>Insert Streamlit import statement at the top(ish) of the tree.r   r   é   N)Ú_build_st_import_statementr,   r#   r   Ú
ImportFromÚImportÚinsertr7   r5   Ú_is_string_constant_noder8   )r   Ú	st_imports     r   r9   r9   ‰   s×   € ô +Ó,€Ið ‡y‚y”T˜$Ÿ)™) A™,Ó'¬C¯N©N¼C¿J¹JÐ+GÑGØ�	‰	×Ñ˜˜IÕ&ô 	ˆD�I‰I‹˜Òä�—‘˜1‘Ó¤#§(¡(Ñ*Ü(¨¯©°1©×);Ñ);Ô<ä�—‘˜1‘Ó¤3§>¡>´3·:±:Ð">Ñ>à�	‰	×Ñ˜˜IÕ&ð 	�	‰	×Ñ˜˜IÕ&r   c                 ób   — t        j                  t        j                  dt        ¬«      g¬«      S )z>Build AST node for `import magic_funcs as __streamlitmagic__`.z*streamlit.runtime.scriptrunner.magic_funcs)ÚnameÚasname)Únames)r   rE   Úaliasr   © r   r   rC   rC   ¤   s*   € ä�:‰:ä�I‰IØAÜ(ôð
ôð r   c           
     óØ   — t        j                  t        j                  dt        j                  t        t        j
                  «       ¬«      t        j
                  «       ¬«      | g ¬«      S )zBBuild AST node for `__streamlitmagic__.transparent_write(*nodes)`.Útransparent_write)ÚidÚctx)Úattrr8   rR   )ÚfuncÚargsÚkeywords)r   ÚCallÚ	AttributeÚNamer   ÚLoad)Únodess    r   Ú_build_st_write_callr\   °   sH   € ä�8‰8Ü�]‰]Ø$Ü—(‘(Ô/´S·X±X³ZÔ@Ü—‘“
ô
ð
 Øôð r   c                ó6  — t        | j                  «      t        j                  u rt	        |||«      sy t        | j                  ||«      rt        |«      sy t        | j                  «      t        j                  u s%t        | j                  «      t        j                  u ry t        | j                  «      t        j                  u ry t        | j                  «      t        j                  u r| j                  j                  n| j                  g}t        |«      S ©N)r#   r8   r   rW   Ú_is_displayable_last_exprÚ_is_docstring_nodeÚ*_should_display_docstring_like_node_anywayÚYieldÚ	YieldFromÚAwaitÚTupleÚeltsr\   )r<   r;   r   r   r    r   rU   s          r   r6   r6   ½   sÌ   € ô ˆD�J‰JÓœ3Ÿ8™8Ñ#Ô,EØ�Ð5ô-ð ô Ø�
‰
�A�{ôä8¸ÔAØô ˆD�J‰JÓœ3Ÿ9™9Ñ$¬¨T¯Z©ZÓ(8¼C¿M¹MÑ(IØô ˆD�J‰JÓœ3Ÿ9™9Ñ$Øô
 # 4§:¡:Ó.´#·)±)Ñ;ˆ4�:‰:�?Š?À$Ç*Á*À€DÜ Ó%Ð%r   c                ón   — t        | t        j                  «      xr t        | j                  t        «      S r^   )Ú
isinstancer   ÚConstantr8   Ústr)r<   s    r   rG   rG   æ   s#   € Ü�dœCŸL™LÓ)ÒI¬j¸¿¹ÄSÓ.IÐIr   c                óŒ   — |dk(  xr> t        | «      xr1 |t        j                  t        j                  t        j                  hv S )Nr   )rG   r   r$   r&   ÚModule)r<   Ú
node_indexr   s      r   r`   r`   ê   s?   € à�a‰ò 	OÜ$ TÓ*ò	OàœCŸO™O¬S×-AÑ-AÄ3Ç:Á:ÐNÐNðr   c                ó  — d}t        j                  d«      rlt        | j                  «      dk(  ryt	        | j                  d   dd «      }|�7|j                  d«      |dz
     }|j                  d«      j                  d	«      }|S )
NFú"magic.displayLastExprIfNoSemicolonr   éÿÿÿÿÚ
end_linenoú
r   ú ú;)r   Ú
get_optionr7   r,   r!   ÚsplitÚstripÚendswith)r   r   r   Úlast_line_numÚlast_line_strs        r   r   r   ò   s‚   € Ø"Ðô ×ÑÐ=Ô>Üˆt�y‰y‹>˜QÒØä §	¡	¨"¡¨|¸TÓBˆàÐ$Ø!%§¡¨DÓ!1°-À!Ñ2CÑ!DˆMØ%2×%8Ñ%8¸Ó%=×%FÑ%FÀsÓ%KÐ"à!Ð!r   c                óF   — |xr | xr | xr t        j                  d«      S )Nro   ©r   ru   )r   r    r   s      r   r_   r_     s:   € ð 	ò 	Dàò	Dð 'Ð&ò		Dô ×ÑÐBÓCð
r   c                ó4   — t        j                  d«      xr | S )Nzmagic.displayRootDocStringr|   )r   s    r   ra   ra     s   € Ü×ÑÐ9Ó:ÒF¸wÐFr   )r   rj   r   rj   Úreturnr   )r,   FF)
r   r   r   rj   r   Úboolr   r   r~   ÚNone)r   r   r~   r€   )r~   z
ast.Import)r[   z	list[Any]r~   zast.Call)r<   r   r;   Úintr   r   r   r   r    r   r   r   r~   zast.Call | None)r<   r   r~   r   )r<   r   rm   r�   r   r   r~   r   )r   r   r   rj   r~   r   )r   r   r    r   r   r   r~   r   )r   r   r~   r   )Ú
__future__r   r   r.   Útypingr   r   Ú	streamlitr   r   Ú__annotations__r   r   r9   rC   r\   r6   rG   r`   r   r_   ra   rN   r   r   ú<module>r†      sÿ   ðö #ã 
Û 
ß å ð 0Ð �5Ó /óð< ØØ#(ð	N$Ø
ðN$àðN$ð ðN$ð !ð	N$ð
 
óN$ób'ó6	ó
ð&&Ø
ð&&à
ð&&ð ð&&ð ð	&&ð
 ð&&ð !ð&&ð ó&&óRJóó"ð$ØðØ!%ðØ?Cðà	óô Gr   