
    ^hP                     `    S r SSKrSSKJr  SSKJr  SSKJr   " S S\5      r " S	 S
\5      r	g)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_datac                   \   ^  \ rS rSrSrSU 4S jjrSS jrSSSS.SS jjjrSS	 jrS
r	U =r
$ )DisplayPublisher    zA 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                 2   > Xl         [        TU ]  " U0 UD6  g N)shellsuper__init__)selfr   argskwargs	__class__s       Q/home/james-whalen/.local/lib/python3.13/site-packages/IPython/core/displaypub.pyr   DisplayPublisher.__init__'   s    
$)&)    c                     [        U[        5      (       d  [        SU-  5      eUb$  [        U[        5      (       d  [        SU-  5      egg)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_dataDisplayPublisher._validate_data+   sP     $%%:TABBh-- BT IJJ .  r   F	transientupdatec                    0 nU R                   b  [        U R                   S0 5      nUR                  5        H'  u  pX;   d  M  U	" X   UR                  US5      5          g   SU;   a  [	        US   5        gg)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.
Nmime_renderersz
text/plain)r   getattritemsgetprint)
r   r   r   sourcer   r    r   handlersmimehandlers
             r   publishDisplayPublisher.publish=   su    Z ::!tzz+;R@H%^^-MD|
HLLt$<= .
 4$|$%  r   c                     [        SSS9  [        R                  R                  5         [        SSS9  [        R                  R                  5         g)z.Clear the output of the cell receiving output.z[2K )endN)r&   sysstdoutflushstderr)r   waits     r   clear_outputDisplayPublisher.clear_outputv   s6    kr"

kr"

r   )r   r   NN)returnNF)__name__
__module____qualname____firstlineno____doc__r   r   r+   r5   __static_attributes____classcell__r   s   @r   r   r       s2    *K$7&TRW 7& 7&r r   r   c                   R   ^  \ rS rSrSr\" 5       rS	SSS.S jjrS
U 4S jjrSr	U =r
$ )CapturingDisplayPublisher~   zA DisplayPublisher that storesNFr   c                @    U R                   R                  XXES.5        g )N)r   r   r   r    )outputsappend)r   r   r   r'   r   r    s         r   r+   !CapturingDisplayPublisher.publish   s     D)2E 	Fr   c                 `   > [         [        U ]  U5        U R                  R	                  5         g r   )r   rC   r5   rF   clear)r   r4   r   s     r   r5   &CapturingDisplayPublisher.clear_output   s%    ';DA 	r    r7   r9   )r:   r;   r<   r=   r>   r   rF   r+   r5   r?   r@   rA   s   @r   rC   rC   ~   s(    (fGFTRW F r   rC   )
r>   r0   traitlets.config.configurabler   	traitletsr   display_functionsr   r   rC   rL   r   r   <module>rP      s6   $  6  4[| [| 0 r   