Ë
    úmxi–  ã                  ó  — d dl mZ d dlZd dlZd dlZd dlZd dlZd dlmZm	Z	m
Z
mZ d dlmZ erd dlmZmZ  ej"                  d«      Z ej"                  d«      Z ed«      ej(                  	 d	 	 	 dd	„«       «       Zdd
„Zdd„Zy)é    )ÚannotationsN)ÚTYPE_CHECKINGÚAnyÚLiteralÚcast)Úgather_metrics)Ú	GeneratorÚIterablez\s*z\s*
Úechoc              #  óÂ  ‡‡K  — ddl m}m}m}m} | dk(  r|}|}n |«       }|j                  }|j                  }	 t        j                  «       d   }|j                  |j                  xs d}
}	|j                  |	«      5 }|j                  «       }ddd«       t        j                  dj                  «      «      }i Šdˆˆfd„Š ‰|«       ‰|
   j                  d   j                  dz
  }‰|
   j                  }||| }t!        j"                  dj                  |«      «      }d–—  ||d	«       y# 1 sw Y   Œ£xY w# t$        $ r} |d
|› �«       Y d}~yd}~ww xY w­w)a‚  Use in a `with` block to draw some code on the app, then execute it.

    Parameters
    ----------
    code_location : "above" or "below"
        Whether to show the echoed code before or after the results of the
        executed code block.

    Example
    -------
    >>> import streamlit as st
    >>>
    >>> with st.echo():
    >>>     st.write('This code will be printed')

    r   )ÚcodeÚemptyÚsource_utilÚwarningÚbelowéýÿÿÿNÚ c                ó°   •— t        | d«      sy t        j                  | «      D ]0  }t        |d«      sŒ|‰t        d|j                  «      <    ‰|«       Œ2 y )NÚbodyÚlinenoÚint)ÚhasattrÚastÚiter_child_nodesr   r   )ÚnodeÚchildÚcollect_body_statementsÚline_to_node_maps     €€úN/home/htdocs/ttos/venv/lib/python3.12/site-packages/streamlit/commands/echo.pyr   z%echo.<locals>.collect_body_statementsN   sR   ø€ Ü˜4 Ô(ØÜ×-Ñ-¨dÓ3ò 3�ä˜5 (Õ+ØBGÐ$¤T¨%°·±Ó%>Ñ?Ù+¨EÕ2ñ	3ó    é   ÚpythonzUnable to display code. )r   zast.ASTÚreturnÚNone)Ú	streamlitr   r   r   r   Ú	tracebackÚextract_stackÚfilenamer   Úopen_python_fileÚ	readlinesr   ÚparseÚjoinr   Ú
end_linenoÚtextwrapÚdedentÚFileNotFoundError)Úcode_locationr   r   r   r   Ú	show_codeÚshow_warningÚplaceholderÚframer(   Ú
start_lineÚsource_fileÚsource_linesÚ	root_nodeÚecho_block_start_lineÚecho_block_end_lineÚlines_to_displayÚcode_stringÚerrr   r   s                      @@r   r   r   !   sa  ùè ø€ ÷* <Ó;à˜ÒØˆ	Ø‰á“gˆØ×$Ñ$ˆ	Ø"×*Ñ*ˆð(7ô ×'Ñ'Ó)¨"Ñ-ˆØ$Ÿ~™~¨u¯|©|Ò/@¸q�*ˆð ×)Ñ)¨(Ó3ð 	3°{Ø&×0Ñ0Ó2ˆL÷	3ô —I‘I˜bŸg™g lÓ3Ó4ˆ	Ø+-Ðö	3ñ 	  	Ô*ð !1°Ñ <× AÑ AÀ!Ñ D× KÑ KÈaÑ OÐØ.¨zÑ:×EÑEÐØ'Ð(=Ð>QÐRÐä—o‘o b§g¡gÐ.>Ó&?Ó@ˆó 	ñ 	�+˜xÕ(÷=	3ð 	3ûô@ ò 7ÙÐ/°¨uÐ5×6Ñ6ûð7üsH   „6E»AD> Á?D2ÂB!D> Ä1EÄ2D;Ä7D> Ä>	EÅEÅEÅEÅEc                ó4   — | D ]  }t        |«      }|€Œ|c S  y)zeReturn the indent of the first non-empty line in the list.
    If all lines are empty, return 0.
    r   )Ú_get_indent)ÚlinesÚlineÚindents      r   Ú_get_initial_indentrD   k   s-   € ð ò ˆÜ˜TÓ"ˆØÑØŠMðð
 r    c                ó€   — t         j                  | «      �yt        j                  | «      }|�|j                  «       S dS )z¢Get the number of whitespaces at the beginning of the given line.
    If the line is empty, or if it contains just whitespace and a newline,
    return None.
    Nr   )Ú_EMPTY_LINE_REÚmatchÚ
_SPACES_REÚend)rB   rG   s     r   r@   r@   w   s>   € ô
 ×Ñ˜DÓ!Ð-Øä×Ñ˜TÓ"€EØÐ+ˆ5�9‰9‹;Ð2°Ð2r    )Úabove)r1   zLiteral['above', 'below']r#   zGenerator[None, None, None])rA   zIterable[str]r#   r   )rB   Ústrr#   z
int | None)Ú
__future__r   r   Ú
contextlibÚrer.   r&   Útypingr   r   r   r   Ústreamlit.runtime.metrics_utilr   Úcollections.abcr	   r
   ÚcompilerH   rF   Úcontextmanagerr   rD   r@   © r    r   ú<module>rU      s‘   ðõ #ã 
Û Û 	Û Û ß 4Ó 4å 9áß3àˆR�Z‰Z˜Ó€
Ø�—‘˜HÓ%€ñ �ÓØ×Ñà/6ðE7Ø,ðE7à òE7ó ó ðE7óP	ô	3r    