
    jC                         d Z ddlZddlmZ ddlmZ ddlmZmZm	Z	m
Z
  G d d          Z G d d	          Z G d
 d          ZdS )zIO capturing utilities.    N)StringIO)TracebackType)AnyListOptionalTypec                   T    e Zd ZddZd Zd ZddZd Zd Zd	 Z	d
 Z
d Zd Zd ZdS )
RichOutputNFc                 J    |pi | _         |pi | _        |pi | _        || _        d S Ndatametadata	transientupdate)selfr   r   r   r   s        \/home/ubuntu/.hermes/hermes-agent/venv/lib/python3.11/site-packages/IPython/utils/capture.py__init__zRichOutput.__init__   s.    JB	 B"b    c                 X    ddl m}  || j        | j        | j        | j                   d S )Nr   )publish_display_datar   )IPython.displayr   r   r   r   r   )r   r   s     r   displayzRichOutput.display   sO    888888$)dm'+~dk	K 	K 	K 	K 	K 	Kr   c                 f    || j         vrd S | j         |         }|| j        v r|| j        |         fS |S r   r   r   )r   mimer   s      r   _repr_mime_zRichOutput._repr_mime_   sC    ty  Fy4=  t,,,Kr   c                     | j         | j        fS r   r   )r   includeexcludes      r   _repr_mimebundle_zRichOutput._repr_mimebundle_'   s    y$-''r   c                 ,    |                      d          S )Nz	text/htmlr   r   s    r   _repr_html_zRichOutput._repr_html_*       ,,,r   c                 ,    |                      d          S )Nz
text/latexr#   r$   s    r   _repr_latex_zRichOutput._repr_latex_-       ---r   c                 ,    |                      d          S )Nzapplication/jsonr#   r$   s    r   _repr_json_zRichOutput._repr_json_0   s     2333r   c                 ,    |                      d          S )Nzapplication/javascriptr#   r$   s    r   _repr_javascript_zRichOutput._repr_javascript_3   s     8999r   c                 ,    |                      d          S )Nz	image/pngr#   r$   s    r   
_repr_png_zRichOutput._repr_png_6   r&   r   c                 ,    |                      d          S )Nz
image/jpegr#   r$   s    r   _repr_jpeg_zRichOutput._repr_jpeg_9   r)   r   c                 ,    |                      d          S )Nzimage/svg+xmlr#   r$   s    r   
_repr_svg_zRichOutput._repr_svg_<   s    000r   )NNNF)NN)__name__
__module____qualname__r   r   r   r!   r%   r(   r+   r-   r/   r1   r3    r   r   r
   r
      s           K K K
  ( ( ( (- - -. . .4 4 4: : :- - -. . .1 1 1 1 1r   r
   c            	           e Zd ZdZ	 ddee         dee         deee                  fdZd Z	e
defd	            Ze
defd
            Ze
d             Zd ZeZdS )
CapturedIOa  Simple object for containing captured stdout/err and rich display StringIO objects

    Each instance `c` has three attributes:

    - ``c.stdout`` : standard output as a string
    - ``c.stderr`` : standard error as a string
    - ``c.outputs``: a list of rich display outputs

    Additionally, there's a ``c.show()`` method which will print all of the
    above in the same order, and can be invoked simply via ``c()``.
    Nstdoutstderroutputsc                 8    || _         || _        |g }|| _        d S r   )_stdout_stderr_outputs)r   r:   r;   r<   s       r   r   zCapturedIO.__init__M   s'     ?Gr   c                     | j         S r   )r:   r$   s    r   __str__zCapturedIO.__str__Y   s
    {r   returnc                 F    | j         sdS | j                                         S )zCaptured standard output )r>   getvaluer$   s    r   r:   zCapturedIO.stdout\   '     | 	2|$$&&&r   c                 F    | j         sdS | j                                         S )zCaptured standard errorrE   )r?   rF   r$   s    r   r;   zCapturedIO.stderrc   rG   r   c                 $    d | j         D             S )a  A list of the captured rich display outputs, if any.

        If you have a CapturedIO object ``c``, these can be displayed in IPython
        using::

            from IPython.display import display
            for o in c.outputs:
                display(o)
        c                 &    g | ]}t          d i |S )r7   )r
   ).0kargss     r   
<listcomp>z&CapturedIO.outputs.<locals>.<listcomp>u   s&    AAA$$e$$AAAr   )r@   r$   s    r   r<   zCapturedIO.outputsj   s     BA$-AAAAr   c                 ^   t           j                            | j                   t           j                            | j                   t           j                                         t           j                                         | j        D ] }t          di |                                 !dS )z0write my output to sys.stdout/err as appropriateNr7   )sysr:   writer;   flushr@   r
   r   )r   rL   s     r   showzCapturedIO.showw   s    
%%%
%%%

] 	* 	*E''))))	* 	*r   r   )r4   r5   r6   __doc__r   r   r   r   r   rB   propertystrr:   r;   r<   rR   __call__r7   r   r   r9   r9   @   s        
 
  (,	
  
 "
  "
  $s)$	
  
  
  
    ' ' ' ' X' ' ' ' ' X' 
B 
B X
B* * * HHHr   r9   c                       e Zd ZdZdZdZdZddededefdZde	fdZ
d	eee                  d
ee         dee         fdZdS )capture_outputz(context manager for capturing stdout/errTr:   r;   r   c                 >    || _         || _        || _        d | _        d S r   )r:   r;   r   shell)r   r:   r;   r   s       r   r   zcapture_output.__init__   s"    


r   rC   c                 F   ddl m} ddlm} ddlm} t          j        | _        t          j	        | _
        | j        r$ |            | _        | j        d | _        d| _        d x}x}}| j        rt                      x}t          _        | j	        rt                      x}t          _	        | j        rc| j        j        | _         |            | j        _        | j        j        j        }t          j        | _         || j        |          t          _        t'          |||          S )Nr   )get_ipython)CapturingDisplayPublisher)CapturingDisplayHookF)rZ   r<   )IPython.core.getipythonr\   IPython.core.displaypubr]   IPython.core.displayhookr^   rO   r:   
sys_stdoutr;   
sys_stderrr   rZ   save_display_pubr   display_pubr<   displayhooksave_display_hookr9   )r   r\   r]   r^   r:   r;   r<   s          r   	__enter__zcapture_output.__enter__   s4   777777EEEEEEAAAAAA**< 	%$DJz!(,%$$((('; 	-"***,FSZ; 	-"***,FSZ< 	D$(J$:D!%>%>%@%@DJ"j,4G%(_D"22;BD D DCO &&'222r   exc_type	exc_value	tracebackc                     | j         t          _        | j        t          _        | j        r+| j        r&| j        | j        _        | j	        t          _
        d S d S d S r   )rb   rO   r:   rc   r;   r   rZ   rd   re   rg   rf   )r   ri   rj   rk   s       r   __exit__zcapture_output.__exit__   sV    _
_
< 	5DJ 	5%)%:DJ""4COOO	5 	5 	5 	5r   N)TTT)r4   r5   r6   rS   r:   r;   r   boolr   r9   rh   r   r   BaseExceptionr   rm   r7   r   r   rX   rX      s        22FFG t $ d    3: 3 3 3 3:5$}*=!> 58TaKb 5ow  yF  pG 5 5 5 5 5 5r   rX   )rS   rO   ior   typesr   typingr   r   r   r   r
   r9   rX   r7   r   r   <module>rs      s      


             , , , , , , , , , , , ,+1 +1 +1 +1 +1 +1 +1 +1\@ @ @ @ @ @ @ @F.5 .5 .5 .5 .5 .5 .5 .5 .5 .5r   