o
    Zh                     @   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sendZiopub_socketZ
get_parenttopic)selfmsg_typer   r   r   keyscontentr   r   J/var/www/html/lang_env/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   r3   r   r   r   Zshow_warningkwargsZ
had_kernelr   r   r   r   r6   L   s   zComm.__init__)r0   NNNT)r    r!   r"   r#   r   r   r   r   r   primaryr3   Ztarget_moduler   r   r   r+   r/   r6   r   r   r   r   r%   1   s$    

r%   )r#   r,   typingr   warningsr   Zcomm.base_commr(   Ztraitlets.configr7   r   r   r   r   r   Zipykernel.jsonutilr	   Zipykernel.kernelbaser
   Z	base_commr   r8   r9   r%   __all__r   r   r   r   <module>   s    
3