o
    Zh)                     @   sL   d Z ddlZddlmZ G dd deZG dd deZG dd	 d	eZdS )
zIO capturing utilities.    N)StringIOc                   @   sh   e Zd ZdddZdd Z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S )
RichOutputNFc                 C   s(   |pi | _ |pi | _|pi | _|| _d S Ndatametadata	transientupdate)selfr   r   r   r	    r   L/var/www/html/lang_env/lib/python3.10/site-packages/IPython/utils/capture.py__init__   s   



zRichOutput.__init__c                 C   s(   ddl m} || j| j| j| jd d S )Nr   )publish_display_datar   )IPython.displayr   r   r   r   r	   )r
   r   r   r   r   display   s   

zRichOutput.displayc                 C   s4   || j vrd S | j | }|| jv r|| j| fS |S r   r   r   )r
   mimer   r   r   r   _repr_mime_   s   


zRichOutput._repr_mime_c                 C   s   | j | jfS r   r   )r
   includeexcluder   r   r   _repr_mimebundle_%   s   zRichOutput._repr_mimebundle_c                 C   
   |  dS )Nz	text/htmlr   r
   r   r   r   _repr_html_(      
zRichOutput._repr_html_c                 C   r   )Nz
text/latexr   r   r   r   r   _repr_latex_+   r   zRichOutput._repr_latex_c                 C   r   )Nzapplication/jsonr   r   r   r   r   _repr_json_.   r   zRichOutput._repr_json_c                 C   r   )Nzapplication/javascriptr   r   r   r   r   _repr_javascript_1   r   zRichOutput._repr_javascript_c                 C   r   )Nz	image/pngr   r   r   r   r   
_repr_png_4   r   zRichOutput._repr_png_c                 C   r   )Nz
image/jpegr   r   r   r   r   _repr_jpeg_7   r   zRichOutput._repr_jpeg_c                 C   r   )Nzimage/svg+xmlr   r   r   r   r   
_repr_svg_:   r   zRichOutput._repr_svg_)NNNF)NN)__name__
__module____qualname__r   r   r   r   r   r   r   r   r   r    r!   r   r   r   r   r      s    

	r   c                   @   sR   e Zd ZdZdddZdd Zedd Zed	d
 Zedd Z	d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()``.
    Nc                 C   s"   || _ || _|d u rg }|| _d S r   )_stdout_stderr_outputs)r
   stdoutstderroutputsr   r   r   r   K   s
   
zCapturedIO.__init__c                 C   s   | j S r   )r)   r   r   r   r   __str__R   s   zCapturedIO.__str__c                 C      | j sdS | j  S )zCaptured standard output )r&   getvaluer   r   r   r   r)   U      
zCapturedIO.stdoutc                 C   r-   )zCaptured standard errorr.   )r'   r/   r   r   r   r   r*   \   r0   zCapturedIO.stderrc                 C   s   d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                 S   s   g | ]	}t d i |qS )r   )r   ).0kargsr   r   r   
<listcomp>n   s    z&CapturedIO.outputs.<locals>.<listcomp>)r(   r   r   r   r   r+   c   s   zCapturedIO.outputsc                 C   sR   t j| j t j| j t j  t j  | jD ]}tdi |  qdS )z0write my output to sys.stdout/err as appropriateNr   )sysr)   writer*   flushr(   r   r   )r
   r2   r   r   r   showp   s   


zCapturedIO.showr   )r"   r#   r$   __doc__r   r,   propertyr)   r*   r+   r7   __call__r   r   r   r   r%   >   s    



	r%   c                   @   s6   e Zd ZdZdZdZdZd
ddZdd Zdd Z	d	S )capture_outputz(context manager for capturing stdout/errTc                 C   s   || _ || _|| _d | _d S r   )r)   r*   r   shell)r
   r)   r*   r   r   r   r   r      s   
zcapture_output.__init__c                 C   s   ddl m} ddlm} ddlm} tj| _tj	| _
| jr,| | _| jd u r,d | _d| _d  } }}| jr;t  }t_| j	rDt  }t_	| jrb| jj| _| | j_| jjj}tj| _|| j|dt_t|||S )Nr   )get_ipython)CapturingDisplayPublisher)CapturingDisplayHookF)r<   r+   )ZIPython.core.getipythonr=   ZIPython.core.displaypubr>   ZIPython.core.displayhookr?   r4   r)   
sys_stdoutr*   
sys_stderrr   r<   save_display_pubr   display_pubr+   displayhooksave_display_hookr%   )r
   r=   r>   r?   r)   r*   r+   r   r   r   	__enter__   s0   



zcapture_output.__enter__c                 C   s:   | j t_| jt_| jr| jr| j| j_| j	t_
d S d S d S r   )r@   r4   r)   rA   r*   r   r<   rB   rC   rE   rD   )r
   exc_type	exc_value	tracebackr   r   r   __exit__   s   
zcapture_output.__exit__N)TTT)
r"   r#   r$   r8   r)   r*   r   r   rF   rJ   r   r   r   r   r;   |   s    
r;   )r8   r4   ior   objectr   r%   r;   r   r   r   r   <module>   s   .>