a
    Df
                     @  s   d Z ddlmZ ddlZddlmZmZmZmZm	Z	 ddl
Z
ddlmZ erpddlmZ ddlmZ dd	lmZ G d
d deZdS )z!
Renders Streamz Stream objects.
    )annotationsN)TYPE_CHECKINGAnyClassVarMappingOptional   )ReplacementPane)Document)Model)Commc                      s   e Zd ZU dZejdddZejddddZd	d	d
Z	de
d< d& fdd	Zejddddddd Zd'dddddd fddZd(dd fdd Zed!d"d#d$d%Z  ZS ))Streamzay  
    The `Streamz` pane renders streamz `Stream` objects emitting arbitrary
    objects, unlike the DataFrame pane which specifically handles streamz
    DataFrame and Series objects and exposes various formatting objects.

    Reference: https://panel.holoviz.org/reference/panes/Streamz.html

    :Example:

    >>> Streamz(some_streamz_stream_object, always_watch=True)
    Fz2
        Whether to watch even when not displayed.)defaultdocg?)r   Nz-
        The minimum interval between events.)r   Zboundsr   N)
rate_limitalways_watchz"ClassVar[Mapping[str, str | None]]_renamec                   s,   t  j|fi | d | _| jr(|   d S N)super__init___streamr   _setup_stream)selfobjectparams	__class__ _/nfs/NAS7/SABIOD/METHODE/ermites/ermites_venv/lib/python3.9/site-packages/panel/pane/streamz.pyr   +   s    zStreamz.__init__r   r   r   T)Zwatchc                 C  sh   | j d u s| jr| jrd S | jr0| j  d | _| jjs>| jrd| j  | j | _| j	| j
 d S r   )r   r   r   destroy_pane_modelsZlatestr   ZgatherZsinkZ_update_inner)r   r   r   r   r   1   s    
zStreamz._setup_streamr
   zOptional[Model]zOptional[Comm]r   )r   rootparentcommreturnc                   s   t  ||||}|   |S r   )r   
_get_modelr   )r   r   r"   r#   r$   modelr   r   r   r&   <   s    zStreamz._get_modelzModel | None)r"   c                   s.   t  | | jjs*| jr*| j  d | _d S r   )r   _cleanupr    r!   r   r   )r   r"   r   r   r   r(   D   s    
zStreamz._cleanupr   zfloat | bool | None)objr%   c                 C  s$   dt jv r ddlm} t||S dS )Nstreamzr   )StreamF)sysmodulesr*   r+   
isinstance)clsr)   r+   r   r   r   appliesN   s    

zStreamz.applies)N)NNN)N)__name__
__module____qualname____doc__paramBooleanr   Numberr   r   __annotations__r   dependsr   r&   r(   classmethodr0   __classcell__r   r   r   r   r      s   

  
r   )r4   
__future__r   r,   typingr   r   r   r   r   r5   baser	   Zbokeh.documentr
   Zbokeh.modelr   Zpyviz_commsr   r   r   r   r   r   <module>   s   