
    bi                         d Z ddlZddlmZ ddlmZ ddlZddlZ	ddl	m
Z
mZmZmZmZ ddlmZ ddlmZ  G d d	ej&                  j(                        Z G d
 dee	j*                  j,                        ZdgZy)zBase class for a Comm    N)Optional)warn)BoolBytesInstanceUnicodedefault)
json_clean)Kernelc                   .    e Zd ZU dZdZed   ed<   ddZy)BaseCommzThe base class for comms.Nr   kernelc           	         t        j                         sy|i n|}|i n|}t        t        d|| j                  d|      }| j
                  t        j                         | _        | j
                  j                  J | j
                  j                  j                  | j
                  j                  ||t        |      | j
                  j                         | j                  |       y)z*Helper for sending a comm message on IOPubN)datacomm_id)metadataparentidentbuffers )r   initializedr
   dictr   r   instancesessionsendiopub_socket
get_parenttopic)selfmsg_typer   r   r   keyscontents          N/home/cdr/jupyterlab/.venv/lib/python3.12/site-packages/ipykernel/comm/comm.pypublish_msgzBaseComm.publish_msg   s    !!#\rt!)2xTJtT\\JTJK;; //+DK{{""...  KK$$);;))+** 	! 	
    )NNN)__name__
__module____qualname____doc__r   r   __annotations__r$   r   r%   r#   r   r      s    #!%FHX%
r%   r   c                       e Zd ZdZ edd      Z e       Z edd      Z	 ed      Z
 eddd	
      Z e       Z ed      d        Z ed      d        Z	 ddZy)Commz7Class for communicating between a Frontend and a Kernelzipykernel.kernelbase.KernelT)
allow_nonez#Am I the primary or secondary Comm?)helpcommNz8requirejs module from
        which to load comm target.)r-   r.   r   c                 T    t        j                         rt        j                         S y N)r   r   r   r   s    r#   _default_kernelzComm._default_kernelB   s    ??$$r%   r   c                 >    t        j                         j                  S r1   )uuiduuid4hexr2   s    r#   _default_comm_idzComm._default_comm_idH   s    zz|r%   c                     |rt        dt        d       d|v }|j                  dd      }|r||d<   t        j                  | f|||d| |r||d<   t        j                  j                  j                  | fi | y)zInitialize a comm.zThe `ipykernel.comm.Comm` class has been deprecated. Please use the `comm` module instead.For creating comms, use the function `from comm import create_comm`.   )
stacklevelr   Ntarget_name)r   r   r   )r   DeprecationWarningpopr   __init__	traitletsconfigLoggingConfigurable)	r   r<   r   r   r   show_warningkwargs
had_kernelr   s	            r#   r?   zComm.__init__L   s     W"	 '
Hd+$/F=!$XTHgXQWX%F8,,55dEfEr%   ) NNNT)r&   r'   r(   r)   r   r   r   r   r   primaryr<   target_moduler   r   r	   r3   r8   r?   r   r%   r#   r,   r,   1   s    A3EFiG4CDG&/K&M GEX 
 Y    TXFr%   r,   )r)   r5   typingr   warningsr   comm.base_commr/   traitlets.configr@   r   r   r   r   r	   ipykernel.jsonutilr
   ipykernel.kernelbaser   	base_commr   rA   rB   r,   __all__r   r%   r#   <module>rQ      sa    
      = = ) '
t~~&& 
<0F8Y%%99 0Ff (r%   