U
    /eP                     @   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kri n|}|dkr(i n|}ttf || jd|}| jdkrZt  | _| 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content r   7/tmp/pip-unpacked-wheel-g43y689f/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                   @   st   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_kernelA   s    zComm._default_kernelr   c                 C   s
   t  jS r)   )uuidZuuid4hexr*   r   r   r   _default_comm_idF   s    zComm._default_comm_id c           	      K   sn   |rt dtdd d|k}|dd}|r2||d< tj| f|||d| |rX||d< tjjj| f| 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   r2   r   r   r   Zshow_warningkwargsZ
had_kernelr   r   r   r   r5   J   s,      zComm.__init__)r/   NNNT)r    r!   r"   r#   r   r   r   r   r   Zprimaryr2   Ztarget_moduler   r   r   r+   r.   r5   r   r   r   r   r%   0   s*   

         r%   )r#   r,   typingr   warningsr   Zcomm.base_commr(   Ztraitlets.configr6   r   r   r   r   r   Zipykernel.jsonutilr	   Zipykernel.kernelbaser
   Z	base_commr   r7   r8   r%   __all__r   r   r   r   <module>   s   4