
    Mh:                         d Z ddlZddlmZ ddlmZ ddlmZ ddlm	Z	 ddl
Z e            Z G d d	e          Z G d
 de          ZdS )a  An interface for publishing rich data to frontends.

There are two components of the display system:

* Display formatters, which take a Python object and compute the
  representation of the object in various formats (text, HTML, SVG, etc.).
* The display publisher that is used to send the representation data to the
  various frontends.

This module defines the logic display publishing. The display publisher uses
the ``display_data`` message type that is defined in the IPython messaging
spec.
    N)Configurable)List   )publish_display_data)HistoryOutputc                   b     e Zd ZdZd fd	ZddZdefddd	 ddZed	             Z	dd
Z
 xZS )DisplayPublisherzA traited class that publishes display data to frontends.

    Instances of this class are created by the main IPython object and should
    be accessed there.
    Nc                 V    || _         d| _         t                      j        |i | d S )NF)shell_is_publishingsuper__init__)selfr   argskwargs	__class__s       W/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/IPython/core/displaypub.pyr   zDisplayPublisher.__init__+   s4    
#$)&)))))    c                     t          |t                    st          d|z            |'t          |t                    st          d|z            dS dS )zValidate the display data.

        Parameters
        ----------
        data : dict
            The formata data dictionary.
        metadata : dict
            Any metadata for the data.
        zdata must be a dict, got: %rNz metadata must be a dict, got: %r)
isinstancedict	TypeError)r   datametadatas      r   _validate_datazDisplayPublisher._validate_data0   sl     $%% 	C:TABBBh-- K BT IJJJ  K Kr   F	transientupdatereturnc                   |t           ur!ddl}|                    dt          d           i }| j        t          | j        di           }| j        j        j        }	|	| j        j                 	                    t          d|                     |                                D ]2\  }
}|
|v r) |||
         |                    |
d                      dS 3d	| _        d
|v rt          |d
                    d| _        dS )a  Publish data and metadata to all frontends.

        See the ``display_data`` message in the messaging documentation for
        more details about this message type.

        The following MIME types are currently implemented:

        * text/plain
        * text/html
        * text/markdown
        * text/latex
        * application/json
        * application/javascript
        * image/png
        * image/jpeg
        * image/svg+xml

        Parameters
        ----------
        data : dict
            A dictionary having keys that are valid MIME types (like
            'text/plain' or 'image/svg+xml') and values that are the data for
            that MIME type. The data itself must be a JSON'able data
            structure. Minimally all data should have the 'text/plain' data,
            which can be displayed by all frontends. If more than the plain
            text is given, it is up to the frontend to decide which
            representation to use.
        metadata : dict
            A dictionary for metadata related to the data. This can contain
            arbitrary key, value pairs that frontends can use to interpret
            the data.  Metadata specific to each mime-type can be specified
            in the metadata dict with the same mime-type keys as
            the data itself.
        source : str, deprecated
            Unused.
        transient : dict, keyword-only
            A dictionary for transient data.
            Data in this dictionary should not be persisted as part of saving this output.
            Examples include 'display_id'.
        update : bool, keyword-only, default: False
            If True, only update existing outputs with the same display_id,
            rather than creating a new output.
        r   NzThe 'source' parameter is deprecated since IPython 3.0 and will be ignored (this warning is present since 9.0). `source` parameter will be removed in the future.   )
stacklevelmime_renderersdisplay_data)output_typebundleTz
text/plainF)	_sentinelwarningswarnDeprecationWarningr   getattrhistory_manageroutputsexecution_countappendr   itemsgetr   print)r   r   r   sourcer   r   r   r(   handlersr-   mimehandlers               r   publishzDisplayPublisher.publishB   s0   l ""OOOMMi"	     :!tz+;R@@H*,4
*+22nTBBB	
 	
 	
 &^^-- 	 	MD't||T
HLLt$<$<===  #4$|$%%%#r   c                     | j         S N)r   )r   s    r   is_publishingzDisplayPublisher.is_publishing   s    ""r   c                     t          dd           t          j                                         t          dd           t          j                                         dS )z.Clear the output of the cell receiving output.z[2K )endN)r2   sysstdoutflushstderr)r   waits     r   clear_outputzDisplayPublisher.clear_output   sV    kr""""
kr""""
r   r9   )r   NF)__name__
__module____qualname____doc__r   r   r'   r7   propertyr:   rC   __classcell__r   s   @r   r	   r	   $   s         * * * * * *
K K K K* 	R$ R$ R$ 
R$ R$ R$ R$h # # X#       r   r	   c                   V     e Zd ZU dZ e            Zeed<   	 dddddZd	 fd	Z xZ	S )
CapturingDisplayPublisherzA DisplayPublisher that storesr-   NFr   c                D    | j                             ||||d           d S )N)r   r   r   r   )r-   r/   )r   r   r   r3   r   r   s         r   r7   z!CapturingDisplayPublisher.publish   s>     	$& 	 	
 	
 	
 	
 	
r   c                     t          t          |                               |           | j                                         d S r9   )r   rM   rC   r-   clear)r   rB   r   s     r   rC   z&CapturingDisplayPublisher.clear_output   s>    '..;;DAAA 	r   )NNrD   )
rE   rF   rG   rH   r   r-   __annotations__r7   rC   rJ   rK   s   @r   rM   rM      s         ((DFFGT +/

=A%

 

 

 

 

         r   rM   )rH   r>   traitlets.config.configurabler   	traitletsr   display_functionsr   historyr   typingtobjectr'   r	   rM    r   r   <module>rZ      s    " 


 6 6 6 6 6 6       4 3 3 3 3 3 " " " " " "     FHH	{ { { { {| { { {|     0     r   