o
    iw                     @   s   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	 d	ejjZG d
d dee	jjZdgZdS )zBase class for a Comm    N)Optional)warn)BoolBytesInstanceUnicodedefault)
json_clean)Kernelc                   @   s,   e Zd ZU dZdZed ed< dddZdS )BaseCommzThe base class for comms.Nr
   kernelc              	   K   s   t  sdS |du ri n|}|du ri n|}ttd|| jd|}| jdu r-t  | _| jjdus5J | jjj| jj	||t|| j
 | j|d dS )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contentr   r   N/var/www/edux/Edux_v2/venv/lib/python3.10/site-packages/ipykernel/comm/comm.pypublish_msg   s"   


zBaseComm.publish_msg)NNN)__name__
__module____qualname____doc__r   r   __annotations__r!   r   r   r   r    r      s   
 r   c                   @   sv   e Zd ZdZedddZe ZedddZ	edZ
eddd	d
Ze Zeddd Zeddd Z	dddZdS )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                 C   s   t  rt  S d S N)r
   r   r   r   r   r   r    _default_kernelB   s   zComm._default_kernelr   c                 C   s
   t  jS r+   )uuiduuid4hexr,   r   r   r    _default_comm_idH   s   
zComm._default_comm_id c           	      K   sr   |r	t dtdd d|v }|dd}|r||d< tj| f|||d| |r,||d< tjjj| fi | dS )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   r5   r   r   r   show_warningkwargs
had_kernelr   r   r   r    r8   L   s   zComm.__init__)r2   NNNT)r"   r#   r$   r%   r   r   r   r   r   primaryr5   target_moduler   r   r   r-   r1   r8   r   r   r   r    r'   1   s$    

r'   )r%   r.   typingr   warningsr   comm.base_commr*   traitlets.configr9   r   r   r   r   r   ipykernel.jsonutilr	   ipykernel.kernelbaser
   	base_commr   r:   r;   r'   __all__r   r   r   r    <module>   s    
3