
    -eA                       d Z ddlmZ ddlZ ej        e          ZddlmZm	Z	m
Z
 ddlmZ ddlmZ erddlmZ d	Ze	g df         Z G d
 d          Z G d de          Z G d de          Z G d de          Z G d d          ZdS )zf Provide classes to represent callback code that can be associate with
Bokeh Documents and Sessions.

    )annotationsN)TYPE_CHECKINGCallableSequence   )ID)_CallbackGroup)IOLoop)NextTickCallbackPeriodicCallbackSessionCallbackTimeoutCallbackc                  V    e Zd ZU dZded<   dd	Zedd
            Zedd            ZdS )r   zZ A base class for callback objects associated with Bokeh Documents
    and Sessions.

    r   _idcallbackCallbackcallback_idreturnNonec               "    || _         || _        dS )S

         Args:
            callback (callable) :

            id (ID) :

        N)r   	_callback)selfr   r   s      6lib/python3.11/site-packages/bokeh/server/callbacks.py__init__zSessionCallback.__init__;   s      $,    c                    | j         S )z( A unique ID for this callback

        )r   r   s    r   idzSessionCallback.idI   s    
 xr   c                    | j         S )z1 The callable that this callback wraps.

        )r   r   s    r   r   zSessionCallback.callbackP   s    
 ~r   Nr   r   r   r   r   r   )r   r   )r   r   )	__name__
__module____qualname____doc____annotations__r   propertyr   r    r   r   r   r   3   s          
 GGG, , , ,    X    X  r   r   c                  $     e Zd ZdZd	 fdZ xZS )
r   zE Represent a callback to execute on the next ``IOLoop`` "tick".

    r   r   r   r   r   r   c               N    t                                          ||           dS )r   r   r   N)superr   )r   r   r   	__class__s      r   r   zNextTickCallback.__init___   s(     	(DDDDDr   r!   )r"   r#   r$   r%   r   __classcell__r-   s   @r   r   r   [   sQ         	E 	E 	E 	E 	E 	E 	E 	E 	E 	Er   r   c                  H     e Zd ZU dZded<   d fdZedd            Z xZS )r   zp Represent a callback to execute periodically on the ``IOLoop`` at a
    specified periodic time interval.

    int_periodr   r   periodr   r   r   r   c               \    t                                          ||           || _        dS )zn

        Args:
            callback (callable) :

            period (int) :

            id (ID) :

        r+   N)r,   r   r2   )r   r   r3   r   r-   s       r   r   zPeriodicCallback.__init__r   s-     	(DDDr   c                    | j         S )zc The period time (in milliseconds) that this callback should
        repeat execution at.

        )r2   r   s    r   r3   zPeriodicCallback.period   s     |r   )r   r   r3   r1   r   r   r   r   r   r1   )	r"   r#   r$   r%   r&   r   r'   r3   r.   r/   s   @r   r   r   j   st          
 LLL         X    r   r   c                  H     e Zd ZU dZded<   d fdZedd            Z xZS )r   zi Represent a callback to execute once on the ``IOLoop`` after a specified
    time interval passes.

    r1   _timeoutr   r   timeoutr   r   r   r   c               \    t                                          ||           || _        dS )zo

        Args:
            callback (callable) :

            timeout (int) :

            id (ID) :

        r+   N)r,   r   r8   )r   r   r9   r   r-   s       r   r   zTimeoutCallback.__init__   s-     	(DDDr   c                    | j         S )zL The timeout (in milliseconds) that the callback should run after.

        )r8   r   s    r   r9   zTimeoutCallback.timeout   s    
 }r   )r   r   r9   r1   r   r   r   r   r6   )	r"   r#   r$   r%   r&   r   r'   r9   r.   r/   s   @r   r   r      st          
 MMM               X    r   r   c                  :    e Zd ZdZddZddZdd
ZddZddZdS )DocumentCallbackGroupz

    io_loopr
   r   r   c                .    t          |          | _        dS 


        N)r	   _group)r   r>   s     r   r   zDocumentCallbackGroup.__init__   s     %W--r   c                8    | j                                          dS r@   )rB   remove_all_callbacksr   s    r   rD   z*DocumentCallbackGroup.remove_all_callbacks   s     	((*****r   	callbacksSequence[SessionCallback]c                :    |D ]}|                      |           dS r@   )add_session_callback)r   rE   cbs      r   add_session_callbacksz+DocumentCallbackGroup.add_session_callbacks   s4      	* 	*B%%b))))	* 	*r   callback_objr   c                   t          |t                    r-| j                            |j        |j        |j                   dS t          |t                    r-| j                            |j        |j	        |j                   dS t          |t                    r'| j                            |j        |j                   dS t          d|j                   )rA   zTExpected callback of type PeriodicCallback, TimeoutCallback, NextTickCallback, got: N)
isinstancer   rB   add_periodic_callbackr   r3   r   r   add_timeout_callbackr9   r   add_next_tick_callback
ValueErrorr   rK   s     r   rH   z*DocumentCallbackGroup.add_session_callback   s     l$455 	MK--l.C\EXZfZijjjjjo66 	MK,,\-BLDXZfZijjjjj&677 	MK..|/DloVVVVV  L  uA  uJ  L  L  M  M  Mr   c                n   	 t          |t                    r!| j                            |j                   dS t          |t
                    r!| j                            |j                   dS t          |t                    r!| j                            |j                   dS dS # t          $ r Y dS w xY wr@   )
rM   r   rB   remove_periodic_callbackr   r   remove_timeout_callbackr   remove_next_tick_callbackrQ   rR   s     r   remove_session_callbackz-DocumentCallbackGroup.remove_session_callback   s    	,(899 G44\_EEEEEL/:: G33LODDDDDL*:;; G55loFFFFFG G 	 	 	DD	s   4B& 4B& .4B& &
B43B4N)r>   r
   r   r   )r   r   )rE   rF   r   r   )rK   r   r   r   )	r"   r#   r$   r%   r   rD   rJ   rH   rW   r(   r   r   r=   r=      s         . . . .+ + + +* * * *M M M M     r   r=   )r%   
__future__r   logging	getLoggerr"   logtypingr   r   r   
core.typesr   util.tornador	   tornado.ioloopr
   __all__r   r   r   r   r   r=   r(   r   r   <module>ra      s    # " " " " " g!! 5 4 4 4 4 4 4 4 4 4       ) ) ) ) ) ) &%%%%%% BH" " " " " " " "PE E E E E E E E       <    o   B5 5 5 5 5 5 5 5 5 5r   