
    e%Q                     "   d dl Zd dlmZmZ d dlmZ d dlZd dl	Z
d dlZd dlZd dlmZ d dlmZ d dlmZmZmZmZmZ d dlmZ d dlmZ d d	lmZmZmZm Z m!Z!m"Z" d d
l#m$Z$ d dl%m&Z&m'Z'm(Z(m)Z)m*Z*m+Z+m,Z,m-Z- d dl.m/Z/ d dl0m1Z1m2Z2m3Z3m4Z4m5Z5m6Z6m7Z7m8Z8m9Z9m:Z:m;Z;m<Z<  e/j=        d          Z> e/j=                    Z? G d de$          Z@ G d de@          ZA G d de@          ZB G d de@          ZC G d de@          ZD G d de@          ZEd ZFd ZGdS )    N)deque
namedtuple)SkipTest)Tap)
set_curdoc)ColumnDataSourcePlotPolyEditToolRange1d	Selection)
DynamicMap)Store)BoxCurvePointsPolygons
RectanglesTable)ComparisonTestCase)BoxEditCallbackCallbackCDSCallbackPointDrawCallbackPointerXCallbackPolyDrawCallbackPolyEditCallbackTapCallback)BokehRenderer)BoxEdit	CDSStream	PlotResetPlotSize	PointDrawPointerX	PointerXYPolyDrawPolyEditRangeXYSelection1D	SingleTapserver)modec                       e Zd Zd Zd ZdS )CallbackTestCasec                     t           j        | _        dt           _        t          j        | _        t
          j        t          _        d S )Nbokeh)r   current_backendprevious_backendbokeh_renderercomm_managercommsCommManagerselfs    Mlib/python3.11/site-packages/holoviews/tests/plotting/bokeh/test_callbacks.pysetUpzCallbackTestCase.setUp1   s1     % 5 '*7&+&7###    c                     | j         t          _        d t          _        d t
          _        i t          _        | j        t
          _        d S N)	r2   r   r1   bokeh_server_renderer	last_plotr3   r   
_callbacksr4   r7   s    r9   tearDownzCallbackTestCase.tearDown7   s7     $ 5*.'#'  &*&7###r;   N)__name__
__module____qualname__r:   rA    r;   r9   r.   r.   /   s2        8 8 88 8 8 8 8r;   r.   c                   >    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	S )
TestCallbacksc                    t          d g t                      g          }t                              |          }t          |           t	          |j                   |j        d                             ddd           |j        d         j	        }| 
                    |d         t          j        dg                     | 
                    |d	         t          j        dg                     d S )
Nc                 &    t          | |fg          S r=   r   xys     r9   <lambda>z4TestCallbacks.test_stream_callback.<locals>.<lambda>B       v1vh'7'7 r;   kdimsstreamsr   333333?皙?rK   sourcerL   rM   r   r%   r>   get_plotr   document	callbackson_msghandlesdataassertEqualnparrayr8   dmapplotr\   s       r9   test_stream_callbackz"TestCallbacks.test_stream_callbackA   s    77rIKK=YYY$--d33d###4=!!!q  s!5!5666|H%*cBHcUOO444cBHcUOO44444r;   c                    t          d g t                      g          }t                              |          }t          |           t	          |j                   |j        d                             ddd           |j        d         j	        }| 
                    |d         t          j        dg                     | 
                    |d	         t          j        d
g                     d S )Nc                 &    t          | |fg          S r=   rJ   rK   s     r9   rN   z?TestCallbacks.test_point_stream_callback_clip.<locals>.<lambda>L   rO   r;   rP   r   g333333ӿg333333?rK   rU   rL   rM      rV   r`   s       r9   test_point_stream_callback_clipz-TestCallbacks.test_point_stream_callback_clipK   s    77rIKK=YYY$--d33d###4=!!!q  t#!6!6777|H%*cBHaSMM222cBHaSMM22222r;   c                    t          g           }t          |          }t                              |                                          }t          |           t          |j                   |j        d                             ddd           | 	                    |j
        d           | 	                    |j        d           d S )NrU   r   皙?rS   rK   )r   r%   r>   rW   cloner   rX   rY   rZ   r]   rL   rM   )r8   pointsstreamrb   s       r9   test_stream_callback_on_clonez+TestCallbacks.test_stream_callback_on_cloneU   s    &)))$--fllnn==d###4=!!!q  s!5!56663'''3'''''r;   c                    t          g           }t          |           t                              |                    d                    }t          |           |                     t          |j                  dk               d S )Nri   F)linkr   )r   r%   r>   rW   rk   
assertTruelenrY   r8   rl   rb   s      r9   &test_stream_callback_on_unlinked_clonez4TestCallbacks.test_stream_callback_on_unlinked_clone_   st        $--flll.F.FGGd###DN++q011111r;   c                 ,   t          d g t                      g          }t                              |          }t          |           t	          |j                   |j        }|j        d                             |j	        d         dd|j	        d         ddd           |j
        d	         j        }|                     |d
         t          j        dg                     |                     |d         t          j        dg                     d S )Nc                 &    t          | |fg          S r=   rJ   rK   s     r9   rN   z=TestCallbacks.test_stream_callback_with_ids.<locals>.<lambda>g   rO   r;   rP   r   id      ?rw   valueg?rK   rU   rL   rM   )r   r%   r>   rW   r   rX   staterY   rZ   refr[   r\   r]   r^   r_   )r8   ra   rb   modelr\   s        r9   test_stream_callback_with_idsz+TestCallbacks.test_stream_callback_with_idsf   s   77rIKK=YYY$--d33d###4=!!!
q  eio'L'L.3io'L'L"N "N 	O 	O 	O|H%*cBHcUOO444cBHcUOO44444r;   c                     t          d          fd}t          d          }t          |g |g          }t                              |          }t          |           t          |j                   t          d          D ]}|                    |           |j	        d         j
        }|                     |d	         t          j        d                     |                     |d
         t          j        dd                     d S )N
   )maxlenc                 f                         |            t          t                              S r=   )appendr   list)rL   historys    r9   history_callbackzHTestCallbacks.test_stream_callback_single_call.<locals>.history_callbackt   s)    NN1g'''r;   r   rL   rP      rU   rL   rM   )r   r$   r   r>   rW   r   rX   rangeeventr[   r\   r]   r^   arange)r8   r   rm   ra   rb   ir\   r   s          @r9    test_stream_callback_single_callz.TestCallbacks.test_stream_callback_single_callr   s   r"""	( 	( 	( 	( 	( A*"vhGGG$--d33d###4=!!!r 	 	ALL1L|H%*cBIbMM222cBIb"$5$566666r;   c                    t          d          }t          d |g          }t                              |          }|                     t          |j                             |                     t          t          j                             |	                                 | 
                    t          |j                             | 
                    t          t          j                             d S )Nr   r   c                 "    t          | g          S r=   r   r   s    r9   rN   z5TestCallbacks.test_callback_cleanup.<locals>.<lambda>   s    E1#JJ r;   )rR   )r$   r   r>   rW   rq   bool_subscribersr   r@   cleanupassertFalse)r8   rm   ra   rb   s       r9   test_callback_cleanupz#TestCallbacks.test_callback_cleanup   s    A..AAA$--d33V011222X011222f122333h12233333r;   c                     t          g d                              ddg          }t          |          }t                              |           |                     |j        ddg           d S )N)r   r   rf   rf      r   r   r   )selectedri   )r   optsr)   r3   rW   r]   indexr8   rl   rm   s      r9   "test_selection1d_syncs_to_selectedz0TestCallbacks.test_selection1d_syncs_to_selected   sq    0001166A6GGF+++'''1v.....r;   N)rB   rC   rD   rc   rg   rn   rt   r~   r   r   r   rE   r;   r9   rG   rG   ?   s        5 5 53 3 3( ( (2 2 2
5 
5 
57 7 7 4 4 4/ / / / /r;   rG   c                       e Zd Zd ZdS )TestResetCallbackc                 Z   g fd}t          g           }t          |          }|                    |           t                              |          }|j        d                             ddi           |                     dg           |                     |j	        |           d S )Nc                 2                         |            d S r=   )r   )	resettingresetss    r9   recordz5TestResetCallback.test_reset_callback.<locals>.record   s    MM)$$$$$r;   ri   r   resetT)
r   r!   add_subscriberr>   rW   rY   rZ   r]   assertIsrU   )r8   r   curverm   rb   r   s        @r9   test_reset_callbackz%TestResetCallback.test_reset_callback   s    	% 	% 	% 	% 	%b		%(((f%%%$--e44q  '4111$(((fmU+++++r;   N)rB   rC   rD   r   rE   r;   r9   r   r      s#        
, 
, 
, 
, 
,r;   r   c                       e Zd Zd Zd ZdS )TestPointerCallbacksc           
         t          t          j        ddd          dft          j        ddd          dfg                              d          }t	          |           t
                              |          }t          |j                   |j	        d         }| 
                    |t                     |                    ddi          }|                     |d         t          j        t          j        ddd                               |                    dd	i          }|                     |d         t          j        t          j        ddd                               d S )
N  rf      r   )paddingri   rL          a$)r   dtdatetimer   r$   r>   rW   r   rX   rY   assertIsInstancer   _process_msgr]   r^   
datetime64r8   rl   rb   callbackmsgs        r9   %test_pointer_x_datetime_out_of_boundsz:TestPointerCallbacks.test_pointer_x_datetime_out_of_bounds   s=   "+dAq1115D!Q8O8OQR7STUUZZcdZee$--f554=!!!>!$h(8999##S$K00S2=T1a1H1H#I#IJJJ##S.$9::S2=T1a1H1H#I#IJJJJJr;   c                    t          t          j        ddd          dft          j        ddd          dfg          }t          |           t                              |          }t          |j                   |j        d         }| 	                    |t                     |                    ddd          }|                     |i            |                    d	dd          }|                     |i            d S )
Nr   rf   r   ri   r   r   r   rK   r   )r   r   r   r*   r>   rW   r   rX   rY   r   r   r   r]   r   s        r9   test_tap_datetime_out_of_boundsz4TestPointerCallbacks.test_tap_datetime_out_of_bounds   s    "+dAq1115D!Q8O8OQR7STUU    $--f554=!!!>!$h444##$Q$7$788b!!!##.q$A$ABBb!!!!!r;   N)rB   rC   rD   r   r   rE   r;   r9   r   r      s5        
K 
K 
K
" 
" 
" 
" 
"r;   r   c                       e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zej                            d          d             Zd Zd Zd ZdS )TestEditToolCallbacksc                 p   t          dg          }t          |          }t                              |          }|                     |j        d         t                     |j        d         }g dg dd}|                    d|i           |                     |j	        t          |                     d S )Nr   rf   ri   r   rf   r   r   rK   r\   )
r   r#   r>   rW   r   rY   r   rZ   r]   element)r8   rl   
point_drawrb   r   r\   s         r9   test_point_draw_callbackz.TestEditToolCallbacks.test_point_draw_callback   s    !!f---
$--f55dnQ/1BCCC>!$YYYYY//'''+VD\\:::::r;   c                     t          dg          }t          |           t                              |          }d|j        d         j        v sJ d S )Nr   ri   r\   rU   )r   r#   r>   rW   r[   r@   rs   s      r9   +test_point_draw_callback_initialized_serverzATestEditToolCallbacks.test_point_draw_callback_initialized_server   sV    !!    $--f55h/:::::::r;   c                    t          dgdg          }t          |          }t                              |           |                     |j                            d          t          j        dg                     d S )Nr   rf   Ar   vdimsri   )	r   r#   r>   rW   r]   r   dimension_valuesr^   r_   r   s      r9   2test_point_draw_callback_with_vdims_initializationzHTestEditToolCallbacks.test_point_draw_callback_with_vdims_initialization   sr    cU333&)))&&v...88==rxOOOOOr;   c                    t          dgdg          }t          |          }t                              |          }|                     |j        d         t                     |j        d         }g dg dg dd}|                    d	|i           t          |t          j
        t          j
        d
g          }|                     |j        t          |dg                     d S )Nr   r   r   ri   r   r   )NNrf   rL   rM   r   r\   rf   )r   )r   r#   r>   rW   r   rY   r   rZ   dictr^   nanr]   r   )r8   rl   r   rb   r   r\   	processeds          r9   #test_point_draw_callback_with_vdimsz9TestEditToolCallbacks.test_point_draw_callback_with_vdims   s    cU333f---
$--f55dnQ/1BCCC>!$YYYYY___EE'''"&"&!!4555	+VIcU-K-K-KLLLLLr;   c                    t          g dg          }t          |          }t                              |          }|                     |j        d         t                     |j        d         }g dg dgg dg dgd}|                    d|i           t          g dg d	g          }|                     |j	        |           d S 
Nr   r   )   r   ri   r   r   r   r      rK   r\   r   r   r   r   r   )r   r   )r   r   
r   r&   r>   rW   r   rY   r   rZ   r]   r   r8   polys	poly_drawrb   r   r\   r   s          r9   test_poly_draw_callbackz-TestEditToolCallbacks.test_poly_draw_callback   s    222344E***	$--e44dnQ/1ABBB>!$ii+999iii2HII'''4446N6N6NOPP*G44444r;   c                     t          g dg          }t          |           t                              |          }d|j        d         j        v sJ d S Nr   ri   r\   rU   )r   r&   r>   rW   r[   r@   r8   r   rb   s      r9   *test_poly_draw_callback_initialized_serverz@TestEditToolCallbacks.test_poly_draw_callback_initialized_server   ^    222344$--e44h/:::::::r;   c                    t          g dg dddgdg          }t          |          }t                              |          }|                     |j        d         t                     |j        d         }g d	g d
gg d	g d
gddgd}|                    d|i           t          g d	g d	ddg d
g d
ddgdg          }|                     |j	        |           d S )Nr   r   r   r   r   r   rf   r   r   r   ri   r   r   r   r   r\   r   r   s          r9   "test_poly_draw_callback_with_vdimsz8TestEditToolCallbacks.test_poly_draw_callback_with_vdims   s'   						BBCC5QQQE***	$--e44dnQ/1ABBB>!$ii+999iii2HPQSTvVV'''))))))!DD"+)))))!DDFNQUT T T*G44444r;   c                    t          g dg dddgdg                              d           }t          |          }t                              |          }|                     |j        d	         t                     |j        d	         }g d
g dgg d
g dgddgd}|                    d|i           t          g d
g d
ddg dg dddgdg          }| 	                    |j
        |           d S )Nr   r   rf   r   r   r   )color_indexri   r   r   r   r   r\   )r   optionsr&   r>   rW   r   rY   r   rZ   r]   r   r   s          r9   1test_poly_draw_callback_with_vdims_no_color_indexzGTestEditToolCallbacks.test_poly_draw_callback_with_vdims_no_color_index   s9   						BBCC5QQQYYfjYkkE***	$--e44dnQ/1ABBB>!$ii+999iii2HPQSTvVV'''))))))!DD"+)))))!DDFNQUT T T*G44444r;   c                    t          dg          }t          |          }t                              |          }|                     |j        d         t                     |j        d         }|j        d         }|                     |j	        d         dg           |                     |j	        d         dg           |                     |j	        d         d	g           |                     |j	        d
         d	g           ddgddgddgddgd}|
                    d|i           t          ddg          }|                     |j        |           d S )N)      r   rx   rx   ri   r   cdsleftr   bottomrightrx   top      п      ?      ?r   rf         ?r   r   r   r   r\   )r   r   r   rf   )r   r   r   r   )r   r   r>   rW   r   rY   r   r[   r]   r\   rZ   r   r8   boxesbox_editrb   r   rU   r\   r   s           r9   test_box_edit_callbackz,TestEditToolCallbacks.test_box_edit_callback  sT   2344%((($--e44dnQ/AAA>!$e$V,tf555X.777W-u555U+cU333
r4jD!9VWY]U^__'''24FGHH)733333r;   c                    t          t          ddd          g          }t          |          }t                              |          }|                     |j        d         t                     |j        d         }|j        d         }| 	                    |j
        d         dg           | 	                    |j
        d         dg           | 	                    |j
        d         d	g           | 	                    |j
        d
         d	g           ddgddgddgddgd}|                    d|i           t          t          ddd          t          ddd          g          }| 	                    |j        |           d S )Nr   rf   ri   r   r   r   r   r   rx   r   r   r   r   r   r   r   r   r\   )rx   r   )r   rx   )r   r   r   r>   rW   r   rY   r   r[   r]   r\   rZ   r   r   s           r9   test_box_edit_callback_legacyz3TestEditToolCallbacks.test_box_edit_callback_legacy  sr   #aA,,((%((($--e44dnQ/AAA>!$e$V,tf555X.777W-u555U+cU333
r4jD!9VWY]U^__'''C1h//Q81D1DEFF)733333r;   c                     t          t          ddd          g          }t          |           t                              |          }d|j        d         j        v sJ d S )Nr   rf   ri   r\   r   )r   r   r   r>   rW   r[   r@   )r8   r   rb   s      r9   )test_box_edit_callback_initialized_serverz?TestEditToolCallbacks.test_box_edit_callback_initialized_server+  s`    #aA,,((u$--e44e,7777777r;   r   )rerunsc                    t          g dg          }t          |          }t                              |          }|                     |j        d         t                     |j        d         }g dg dgg dg dgd}|                    d|i           t          g dg d	g          }|                     |j	        |           d S r   )
r   r'   r>   rW   r   rY   r   rZ   r]   r   )r8   r   	poly_editrb   r   r\   r   s          r9   test_poly_edit_callbackz-TestEditToolCallbacks.test_poly_edit_callback1  s    222344E***	$--e44dnQ/1ABBB>!$ii+999iii2HII'''4446N6N6NOPP*G44444r;   c                     t          g dg          }t          |           t                              |          }d|j        d         j        v sJ d S r   )r   r'   r>   rW   r[   r@   r   s      r9   *test_poly_edit_callback_initialized_serverz@TestEditToolCallbacks.test_poly_edit_callback_initialized_server=  r   r;   c                 x   t          g dg          }t          g dg          }t          |d          }t          |d          }t                              ||z            }d |j        j        D             }|                     t          |          d           |j        	                                \  }}| 
                    |j        d         t                     |j        d         }	g dg dgg dg dgd	}
|	                    d
|
i           | 
                    |j        d         t                     |j        d         }	g dg dgg dg dgd	}
|	                    d
|
i           t          g dg dg          }|                     |j        |           |                     |j        |           d S )Nr   T)rU   sharedc                 <    g | ]}t          |t                    |S rE   )
isinstancer
   ).0ts     r9   
<listcomp>zHTestEditToolCallbacks.test_poly_edit_shared_callback.<locals>.<listcomp>I  s'    QQQAZ<5P5PQaQQQr;   rf   r   r   r   rK   r\   r   r   )r   r'   r>   rW   r{   toolsr]   rr   subplotsvaluesr   rY   r   rZ   r   )r8   r   polys2r  
poly_edit2rb   
edit_toolsplot1plot2r   r\   r   s               r9   test_poly_edit_shared_callbackz4TestEditToolCallbacks.test_poly_edit_shared_callbackC  s   222344333455E$777	VD999
$--eFl;;QQ!1QQQ
Z!,,,}++--ueoa02BCCC?1%ii+999iii2HII'''eoa02BCCC?1%ii+999iii2HII'''4446N6N6NOPP*G444+W55555r;   c                    t          g d          }t          |j        ddg          }||z                       dd          }t	          |           |                     |j        |j                   t                              |          }|j        d         j        d	         }|j        d
         j        d	         }|                     |j	        d         |j	        d                    d S )Nr   rL   rM   TF)shared_datasourcerk   ri   r   mainr   rU   )
r   r   r\   r   r#   r   r3   rW   r  r[   )r8   rl   tablelayoutrb   
point_plot
table_plots          r9   *test_point_draw_shared_datasource_callbackz@TestEditToolCallbacks.test_point_draw_shared_datasource_callbackX  s    			""fkC:..5.&&U&KK    fk5:...&&v..]6*3F;
]6*3F;
j(2J4Fx4PQQQQQr;   N)rB   rC   rD   r   r   r   r   r   r   r   r   r  r  r  pytestmarkflakyr	  r  r  r#  rE   r;   r9   r   r      s        ; ; ;; ; ;P P P	M 	M 	M	5 	5 	5; ; ;
5 
5 
5
5 
5 
54 4 4 4 4 4 8 8 8 [a  	5 	5 ! 	5; ; ;6 6 6*	R 	R 	R 	R 	Rr;   r   c                   P    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd ZdS )TestServerCallbacksc                     t          dd          }t          j        d|          }|                     ||j        d         dd           d S )Nr   r   startendzx_range.attributes.startrw   ry   r   r   resolve_attr_specr]   r|   r8   range1dr   s      r9   4test_server_callback_resolve_attr_spec_range1d_startzHTestServerCallbacks.test_server_callback_resolve_attr_spec_range1d_startf  sR    r***()CWMMW[%6CCDDDDDr;   c                     t          dd          }t          j        d|          }|                     ||j        d         dd           d S )Nr   r   r*  zx_range.attributes.endrw   ry   r-  r/  s      r9   2test_server_callback_resolve_attr_spec_range1d_endzFTestServerCallbacks.test_server_callback_resolve_attr_spec_range1d_endk  sR    r***()A7KKW[%6DDEEEEEr;   c                     t                      }g d|j        _        t          j        d|          }|                     ||j        d         g dd           d S )Nr   zcb_obj.selected.indicesrw   ry   )r   r   indicesr   r.  r]   r|   )r8   rU   r   s      r9   6test_server_callback_resolve_attr_spec_source_selectedzJTestServerCallbacks.test_server_callback_resolve_attr_spec_source_selectedp  s]    !##"+))()BFKKVZ%5			JJKKKKKr;   c                     t                      }t          |d          }t          j        d||          }|                     ||j        d         dd           d S )N*   r   zcb_obj.xrw   ry   )r	   r   r   r.  r]   r|   )r8   rb   r   r   s       r9   0test_server_callback_resolve_attr_spec_tap_eventzDTestServerCallbacks.test_server_callback_resolve_attr_spec_tap_eventv  sX    vvDB(UDAATXd^bAABBBBBr;   c                 P   t          g d          }t          |           t                              |          }t	          ddg          }|j        d         }|j        d         }|                    |||          }|                     ||j	        d         ddgd	           d S )
Nr   ri   r   r   r5  r   r}   rw   ry   )
r   r)   r>   rW   r   rY   
attributesr.  r]   r|   )r8   rl   rb   r   r   specresolveds          r9   test_selection1d_resolvesz-TestServerCallbacks.test_selection1d_resolves|  s    			""6""""$--f55aV,,,>!$"7+--dHH-MM(,t*<1v#N#NOOOOOr;   c                 R   t          g dd          }t          |           t                              |          }t	          ddg          }|j        d         }|j        d         }|                    |||          }|                     ||j	        d	         ddgd
           d S )Nr   rL   ri   r   r   r;  r   r<  rw   ry   )
r   r)   r>   rW   r   rY   r=  r.  r]   r|   )r8   r  rb   r   r   r>  r?  s          r9   test_selection1d_resolves_tablez3TestServerCallbacks.test_selection1d_resolves_table  s    iii%%5!!!!$--e44aV,,,>!$"7+--dHH-MM(,t*<1v#N#NOOOOOr;   c                    t          g d          }t          |           t                              |          }|j        d         } t          dd          dddd	i          }|j        d
         }|j        d         }|                    |||          }|                     |d	dd           |                    |||          }|                     |d	dd           d S )Nr   ri   r   r	   zinner_width inner_height refi  i,  rw   Testwidthheightr<  ry   )	r   r"   r>   rW   rY   r   r=  r.  r]   )r8   rl   rb   r   r}   
width_specheight_specr?  s           r9   test_plotsize_resolvesz*TestServerCallbacks.test_plotsize_resolves  s    			""$--f55>!$B
6#ABB3dTZ^\\(1
)(3--j%u-MM&3#?#?@@@--k5-NN&3#?#?@@@@@r;   c                 f   t          g d          }t          |           t                              |          }|j        d         }|j        d         }|j        d         }|                    |||          }|                     ||j	        d         |
                                d           d S )	Nr   ri   r   r   r\   r<  rw   ry   )r   r    r>   rW   r[   rY   r=  r.  r]   r|   columns)r8   rl   rb   r   r   	data_specr?  s          r9   test_cds_resolvesz%TestServerCallbacks.test_cds_resolves  s    			""    $--f55l5!>!$'/	--iC-HH#'$--3^^-=-=$? $? 	@ 	@ 	@ 	@ 	@r;   c           	         t          j        t          j                            d                              d          t          d          t          j        ddd                    }t          |d	d
          }t          |          }t                              |          }|j        d         }|                    |j        d         |j        d         ddd           |                     |j        d         |j        d                    |                     |j        d         |j        d                    |                     |j        d           d S )Nr   )   r   ABCDz
2018-01-01DrO  )freqperiods)r\   rK  r   r   Cri   r   r   )r   r   rT   rj   )x0x1y0y1rf   )rT   rj   )pd	DataFramer^   randomdefault_rngstandard_normalr   
date_ranger   r(   r>   rW   rY   rZ   ilocr]   x_rangey_range)r8   dfr   rm   rb   r   s         r9   test_rangexy_datetimez)TestServerCallbacks.test_rangexy_datetime  s5   \9((++;;GDDLL-3CCC
 
 

 b'3''&&&$--e44>!$uz$/uz$7G"#/ / 	0 	0 	0*EJt,<===*EJt,<===44444r;   c                      t          d          )Nz(The fix for this was reverted, see #4396)r   r(   r   redimr   r>   rW   r   updater]   ra  )r8   rm   r   rb   s       r9   test_rangexy_framewise_resetz0TestServerCallbacks.test_rangexy_framewise_reset  s    ABBBr;   c                 B   t          dd          }t          d dg|g          j                            d          }t                              |                    d	
                     |                    d           |                     |j	        d           d S )N)r   r   r   )r`  ra  c                 &    t          dd| g          S )Nrf   r   r   )zr`  ra  s      r9   rN   zTTestServerCallbacks.test_rangexy_framewise_not_reset_if_triggering.<locals>.<lambda>  s    uaAY7G7G r;   rj  rP   )r   r   )rj  T)	framewise)r`  )
r(   r   re  r   r>   rW   r   r   r]   r`  )r8   rm   r   s      r9   .test_rangexy_framewise_not_reset_if_triggeringzBTestServerCallbacks.test_rangexy_framewise_not_reset_if_triggering  s    888GG"%: : ::? 	&&uzzDz (
 (
 	 	 	V$$$00000r;   N)rB   rC   rD   r1  r3  r6  r9  r@  rB  rI  rM  rc  rg  rl  rE   r;   r9   r(  r(  d  s        E E E
F F F
L L LC C CP P PP P PA A A	@ 	@ 	@5 5 5 / / /1 1 1 1 1r;   r(  c                     ddddgg} dd| ii}t          d d d                               |          }|d         d         }t          j        g d          }t          j        ||                                          sJ d S )Nz,AAAAAAAAJEAAAAAAAAA0QAAAAAAAAD5AAAAAAAAAREA=float64littler   r\   rL   )g      $@g      4@g      >@g      D@)r   r   r^   r_   equalall)data_before
msg_before	msg_after
data_afterdata_expecteds        r9   test_msg_with_base64_arrayrw    s    A9hYZX[\K3,-JD$--:::FFI6"3'JH55566M8M:..224444444r;   c                     t          t          j        d                                          d          } t          t          j        d                                           d          }t	          |            t	          |           | |z                      dd          }t                              |          }|j        	                                \  }}|j
        j        |j        d	         u sJ d|j
        j        v sJ |j
        j        d         |j        d	         u sJ |j        d
         j        |u sJ |j        d
         j        |u sJ d S )Nd   rM   r   y2ri   r0   T)backendmulti_yra  r   )r   r^   r   cumsumr(   r   r>   rW   r  r  r{   ra  r[   extra_y_rangesrY   rb   )c1c2overlayrb   p1p2s         r9   test_rangexy_multi_yaxesr    sG   	ry~~$$&&c	2	2	2B		#%%'''t	4	4	4B22BwnnWdn;;G ))'22D]!!##FB:I!666664:,,,,,:$T*bj.CCCCC <?2%%%%<?2%%%%%%r;   )Hr   r   collectionsr   r   unittestr   numpyr^   pandasrY  r$  pyviz_commsr5   bokeh.eventsr   bokeh.io.docr   bokeh.modelsr   r	   r
   r   r   holoviews.corer   holoviews.core.optionsr   holoviews.elementr   r   r   r   r   r   holoviews.element.comparisonr   "holoviews.plotting.bokeh.callbacksr   r   r   r   r   r   r   r   !holoviews.plotting.bokeh.rendererr   holoviews.streamsr   r    r!   r"   r#   r$   r%   r&   r'   r(   r)   r*   instancer>   r3   r.   rG   r   r   r   r(  rw  r  rE   r;   r9   <module>r     s       ) ) ) ) ) ) ) )                          # # # # # # Q Q Q Q Q Q Q Q Q Q Q Q Q Q % % % % % % ( ( ( ( ( ( M M M M M M M M M M M M M M M M ; ; ; ; ; ;	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 < ; ; ; ; ;                            /.H=== ''))8 8 8 8 8) 8 8 8 Q/ Q/ Q/ Q/ Q/$ Q/ Q/ Q/h, , , , ,( , , , " " " " "+ " " "8bR bR bR bR bR, bR bR bRJd1 d1 d1 d1 d1* d1 d1 d1N5 5 5& & & & &r;   