
    e                        d Z ddlmZ ddlmZ ddlZddlZddlZddl	m
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T ddlmZmZ ddlmZ ddlm Z  d Z!d Z" G d de          Z# G d d          Z$ G d de          Z% G d de           Z& G d de          Z'ej(        )                    d          d             Z* G d de          Z+ G d d e          Z, G d! d"e          Z- G d# d$e          Z. G d% d&e          Z/ G d' d(e          Z0 G d) d*e          Z1 G d+ d,e          Z2 G d- d.e3          Z4e56                    d/d01          Z7 G d2 d3e          Z8 G d4 d5e          Z9 G d6 d7e          Z:dS )8z!
Unit test of the streams system
    )defaultdict)SkipTestN)	IntSlider)
DynamicMap)Version)Curve	HistogramPointsPolygonsScatter)ComparisonTestCase)*)Dynamic	extension)dim   )LoggingComparisonTestCasec            	          d t                                                      D             } | D ]`}|j                                                                        D ]2\  }}|dk    r|j        dk    rt          d| d|j         d          3ad S )Nc                 f    g | ].}t          |t                    t          |t                    ,|/S  )
isinstancetype
issubclassStream).0vs     <lib/python3.11/site-packages/holoviews/tests/test_streams.py
<listcomp>z7test_all_stream_parameters_constant.<locals>.<listcomp>   sP     E E EA D))E.8F.C.CEa E E E    nameTz
Parameter z of stream z not declared constant)globalsvaluesparamobjectsitemsconstant	TypeError__name__)all_stream_cls
stream_clsr    ps       r   #test_all_stream_parameters_constantr,      s    E E!1!1!3!3 E E EN$ k k
!'//117799 	k 	kGD!v~~xzT!! iT i ij>Q i i ijjj "	kk kr   c                  "   t          j        t                    } |                                 D ]`}|j                                                                         D ]2\  }}|dk    r'|j        |k    rd}t          ||||j        fz            3adS )zETest to ensure operations can accept parameters in streams dictionaryr    zLinked stream %r has parameter %r which is inherited from %s. Parameter needs to be redeclared in the class definition of this linked stream.N)r#   concrete_descendentsLinkedStreamr"   r$   r%   owner	Exception)stream_classesstream_classr    r+   msgs        r   (test_all_linked_stream_parameters_ownersr5   "   s    /==N&--// E E#)113399;; 	E 	EGD!v~~17l#:#:H  |T17&C CDDD	EE E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 )TestStreamsDefinec                 :   t                               ddd          | _        t                               ddddd	d
g t                              g d                    | _        t          j        dd          }t                               d|          | _        d S )NXY              @xy	TypesTestTr   g333333?)r   astringr         )tur   wr=   r>   z*   Test docstring)defaultdocExplicitTesttest)	r   definer9   nparrayr?   r#   IntegerrM   )self
test_params     r   setUpzTestStreamsDefine.setUp/   s    --s-33{)-)*),*1)1*,+-88GGG+<+< ' > > ]23CDDD
"MM./9 * ; ;r   c                     |                      t          | j        j        d         t          j                  d           |                      t          | j        j        d         t          j                  d           d S )Nr=   Tr>   )assertEqualr   r9   r#   NumberrT   s    r   test_XY_typeszTestStreamsDefine.test_XY_types>   s^    DGM#$6EEdKKKDGM#$6EEdKKKKKr   c                     |                      | j        j        d         j        d           |                      | j        j        d         j        d           d S )Nr=   r:   r>   r;   )rX   r9   r#   rK   rZ   s    r   test_XY_defaultsz"TestStreamsDefine.test_XY_defaultsB   sL    s+3C888s+3S99999r   c                     |                      dd          }|                     |j        d           |                     |j        d           d S Nr   rC   r<   )r9   rX   r=   r>   rT   xys     r   test_XY_instancez"TestStreamsDefine.test_XY_instanceF   sM    WWq1Wq!!!q!!!!!r   c                     t          t          j                  t          d          k    rd}nd}|                     t          |          5  d| j        _        d d d            d S # 1 swxY w Y   d S )N2.0.0a21Number parameter 'XY.x' only takes numeric values'Parameter 'x' only takes numeric valuesrA   )r   r#   __version__assertRaisesRegex
ValueErrorr9   r=   rT   regexps     r   test_XY_set_invalid_class_xz-TestStreamsDefine.test_XY_set_invalid_class_xK       5$%%	(:(:::HFF>F##J77 	! 	! DGI	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	!   A%%A),A)c                     t          t          j                  t          d          k    rd}nd}|                     t          |          5  d| j        _        d d d            d S # 1 swxY w Y   d S )Nrd   1Number parameter 'XY.y' only takes numeric values'Parameter 'y' only takes numeric valuesrA   )r   r#   rg   rh   ri   r9   r>   rj   s     r   test_XY_set_invalid_class_yz-TestStreamsDefine.test_XY_set_invalid_class_yS   rm   rn   c                    |                      dd          }t          t          j                  t          d          k    rd}nd}|                     t
          |          5  d|_        d d d            d S # 1 swxY w Y   d S )Nr   rC   r<   rd   re   rf   rA   )r9   r   r#   rg   rh   ri   r=   rT   ra   rk   s      r   test_XY_set_invalid_instance_xz0TestStreamsDefine.test_XY_set_invalid_instance_x[       WWq1W5$%%	(:(:::HFF>F##J77 	 	BD	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	   "A77A;>A;c                    |                      dd          }t          t          j                  t          d          k    rd}nd}|                     t
          |          5  d|_        d d d            d S # 1 swxY w Y   d S )Nr   rC   r<   rd   rp   rq   rA   )r9   r   r#   rg   rh   ri   r>   rt   s      r   test_XY_set_invalid_instance_yz0TestStreamsDefine.test_XY_set_invalid_instance_yd   rv   rw   c                      G d d          } |            }|                      dd          }|                    |           |                    dd           |                     |j        d           d S )	Nc                       e Zd Zd Zd ZdS )=TestStreamsDefine.test_XY_subscriber_triggered.<locals>.Innerc                     d | _         d S NstaterZ   s    r   __init__zFTestStreamsDefine.test_XY_subscriber_triggered.<locals>.Inner.__init__p   s    4


r   c                     ||f| _         d S r~   r   )rT   r=   r>   s      r   __call__zFTestStreamsDefine.test_XY_subscriber_triggered.<locals>.Inner.__call__q   s    1TZZZr   Nr(   
__module____qualname__r   r   r   r   r   Innerr|   o   s"        ///55555r   r   r   rC   r<   rI     )rI   r   )r9   add_subscribereventrX   r   )rT   r   innerra   s       r   test_XY_subscriber_triggeredz.TestStreamsDefine.test_XY_subscriber_triggeredm   s    	6 	6 	6 	6 	6 	6 	6 	6 WWq1W
%   
2h/////r   c                 j   |                      t          | j        j        d         t          j                  d           |                      t          | j        j        d         t          j                  d           |                      t          | j        j        d         t          j                  d           |                      t          | j        j        d         t          j                  d           |                      t          | j        j        d         t          j                  d           |                      t          | j        j        d         t          j	                  d           |                      t          | j        j        d         t          j
                  d           d S )	NrE   TrF   r   rG   r=   r>   rH   )rX   r   r?   r#   BooleanrS   rY   TupleStringListArrayrZ   s    r   test_custom_typesz#TestStreamsDefine.test_custom_typesy   s<   DN$8$=u}MMdSSSDN$8$=u}MMdSSSDN$8$=u|LLTRRRDN$8$=u{KKDQQQDN$8$=u|LLTRRRDN$8$=uzJJ4PPPDN$8$=u{KKDQQQQQr   c                 .   |                      t          | j        j        d         t          j                  d           |                      | j        j        d         j        d           |                      | j        j        d         j        d           d S )NrO   TrI   rJ   )rX   r   rM   r#   rS   rK   rL   rZ   s    r   test_explicit_parameterz)TestStreamsDefine.test_explicit_parameter   s    D$5$;F$CU]SSTXYYY*08@DDD*08<>NOOOOOr   N)r(   r   r   rV   r[   r]   rb   rl   rr   ru   ry   r   r   r   r   r   r   r7   r7   -   s        ; ; ;L L L: : :" " "
! ! !! ! !    
0 
0 
0R R RP P P P Pr   r7   c                       e Zd ZddZd ZdS )_TestSubscriberNc                 0    d| _         d | _        || _        d S )Nr   
call_countkwargscb)rT   r   s     r   r   z_TestSubscriber.__init__   s    r   c                 n    | xj         dz  c_         || _        | j        r|                                  d S d S Nr   r   )rT   r   s     r   r   z_TestSubscriber.__call__   s>    17 	GGIIIII	 	r   r~   r   r   r   r   r   r      s7           
    r   r   c                   &    e Zd Zd Zd Zd Zd ZdS )TestPointerStreamsc                 "    t                       d S r~   )PointerXrZ   s    r   test_positionX_initz&TestPointerStreams.test_positionX_init   s    




r   c                 |    t          dd          }|                     |j        t          dd                     d S )Nr   rD   r<   )	PointerXYrX   contentsdictrT   positions     r   test_positionXY_init_contentsz0TestPointerStreams.test_positionXY_init_contents   s=    qA&&&*D1NNN;;;;;r   c                     t                      }|                    dd           |                     |j        t	          dd                     d S )N   
   r<   )r   r   rX   r   r   r   s     r   test_positionXY_update_contentsz2TestPointerStreams.test_positionXY_update_contents   sJ    ;;b!!!*D1OOO<<<<<r   c                     t                      }	 d|_        t          d          # t          $ r.}|                     t          |          d           Y d }~d S d }~ww xY w)Nr   zNo constant parameter exceptionz)Constant parameter 'y' cannot be modified)PointerYr>   r1   r'   rX   str)rT   r   es      r   test_positionY_const_parameterz1TestPointerStreams.test_positionY_const_parameter   sy    ::	RHJ=>>> 	R 	R 	RSVV%PQQQQQQQQQ	Rs   & 
A#AAN)r(   r   r   r   r   r   r   r   r   r   r   r      sU          < < <= = =
R R R R Rr   r   c                   l     e Zd Z f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 Zd Z xZS )TestParamsStreamc                     t                                                        G d dt          j                  } G d d|          }|| _        || _        d S )Nc                   R    e Zd Z ej        d          Z ej        d          ZdS )%TestParamsStream.setUp.<locals>.Innerr   rK   N)r(   r   r   r#   rY   r=   r>   r   r   r   r   r      s6        q)))Aq)))AAAr   r   c                   2    e Zd Z ej        d           ZdS )+TestParamsStream.setUp.<locals>.InnerActionc                 6    | j                             d          S Nactionr#   triggeros    r   <lambda>z4TestParamsStream.setUp.<locals>.InnerAction.<lambda>       AGOOH4M4M r   r   N)r(   r   r   r#   Actionr   r   r   r   InnerActionr      s&        !U\*M*MNNNFFFr   r   )superrV   r#   Parameterizedr   inner_action)rT   r   r   	__class__s      r   rV   zTestParamsStream.setUp   s    	* 	* 	* 	* 	*E' 	* 	* 	*
	O 	O 	O 	O 	O% 	O 	O 	O 
'r   c                    t          | j                  }|                     t          |j                  | j        j        j        | j        j        j        h           |                     |j        ddd           g fd}|	                    |           d| j        _        |                     dddg           d S )Nr   r<   c                  2                         |            d S r~   appendr   r"   s    r   
subscriberz<TestParamsStream.test_param_stream_class.<locals>.subscriber       MM&!!!!!r   r   )
Paramsr   rX   set
parametersr#   r=   r>   r   r   )rT   streamr   r"   s      @r   test_param_stream_classz(TestParamsStream.test_param_stream_class   s    
##V.//$*2B2D26*2B2D2F 	G 	G 	G*:*:;;;	" 	" 	" 	" 	" 	j)))
"2"2!344444r   c                    |                      d          }t          |          }|                     t          |j                  |j        j        |j        j        h           |                     |j        ddd           g fd}|	                    |           d|_        |                     dddg           d S )NrC   r=   r   r<   c                  2                         |            d S r~   r   r   s    r   r   z?TestParamsStream.test_param_stream_instance.<locals>.subscriber   r   r   
r   r   rX   r   r   r#   r=   r>   r   r   rT   r   r   r   r"   s       @r   test_param_stream_instancez+TestParamsStream.test_param_stream_instance   s    

Q
V.//%+-1OPPP*:*:;;;	" 	" 	" 	" 	" 	j)))"2"2!344444r   c                 <   |                                  }t          |dg          }t          |dg          }t                              ||g          \  }}|                     t          |          d           |                     t          |          d           d S )Nr=   r>   rC   r   )r   r   r   _process_streamsrX   len)rT   r   xparamyparamvalidinvalids         r   .test_param_stream_instance_separate_parametersz?TestParamsStream.test_param_stream_instance_separate_parameters   s    

u%%u%%00&&1ABBwUQ'''Wq)))))r   c                     |                                  }t          |          }t          |          }t                              ||g           | j                            dd           d S )NWARNINGz
['x', 'y'])r   r   r   r   log_handlerassertContains)rT   r   params1params2s       r   1test_param_stream_instance_overlapping_parameterszBTestParamsStream.test_param_stream_instance_overlapping_parameters   s]    

----' 2333''	<@@@@@r   c                    |                                  }t                              |j        j        |j        j        g          \  }}|\  }}|                     |j        |           |                     |j	        |j        j        g           |                     |j        |           |                     |j	        |j        j        g           d S r~   )
r   r   r   r#   r=   r>   assertIsparameterizedrX   r   )rT   r   r   r   r   r   s         r   1test_param_parameter_instance_separate_parameterszBTestParamsStream.test_param_parameter_instance_separate_parameters   s    

00%+-1OPPwf*E222*U[]O<<<f*E222*U[]O<<<<<r   c                     |                                  }t                              |j        j        |j        j        g           | j                            dd           d S )Nr   z['x'])r   r   r   r#   r=   r   r   )rT   r   s     r   4test_param_parameter_instance_overlapping_parameterszETestParamsStream.test_param_parameter_instance_overlapping_parameters   sO    

 >???''	7;;;;;r   c                 V   |                      d          }t          |dg          }|                     |j        |j        j        g           |                     |j        ddi           g fd}|                    |           d|_        |                     ddig           d S )NrC   r   r=   r   c                  2                         |            d S r~   r   r   s    r   r   zITestParamsStream.test_param_stream_parameter_override.<locals>.subscriber  r   r   rD   )r   r   rX   r   r#   r=   r   r   r   s       @r   $test_param_stream_parameter_overridez5TestParamsStream.test_param_stream_parameter_override   s    

Q
3%000*U[]O<<<3(333	" 	" 	" 	" 	" 	j)))3(,,,,,r   c                    |                      d          }t          |ddd          }|                     t          |j                  |j        j        |j        j        h           |                     |j        ddd           g fd	}|	                    |           d|_        |                     dddg           d S )
NrC   r   XYr<   )renamer   )r   r   c                  2                         |            d S r~   r   r   s    r   r   z=TestParamsStream.test_param_stream_rename.<locals>.subscriber  r   r   r   r   s       @r   test_param_stream_renamez)TestParamsStream.test_param_stream_rename  s    

Q
Cc&:&:;;;V.//%+-1OPPP*:*:;;;	" 	" 	" 	" 	" 	j)))"2"2!344444r   c                 b                                      t          dg                               t          j                  j        j        h           g  fd}                    |                                                               dj        ig           d S )Nr   c                                           |                                t          j                  t	                     ddh           d S N action_memoize_keyr   rX   r   hashkeyidr   r   rT   r   r"   s    r   r   z=TestParamsStream.test_param_stream_action.<locals>.subscriber  _    MM&!!!S00!#E333^DF F F F Fr   )r   r   rX   r   r   r#   r   r   rT   r   r   r   r"   s   ` @@@r   test_param_stream_actionz)TestParamsStream.test_param_stream_action  s    !!##z**V.//%+2D1EFFF	F 	F 	F 	F 	F 	F 	F 	F
 	j)))U8U\":!;<<<<<r   c                                                       t          ddg                               t          j                  j        j        j        j        h           g  fd}                    |                                          d_                             j        ddg           d S )Nr   r=   c                                           |                                t          j                  t	                     dt	                     ddh           d S Nr   z xr   r  r  s    r   r   zBTestParamsStream.test_param_stream_memoization.<locals>.subscriber.  q    MM&!!!FN##uII&&&2e99(8(8(8.IK K K K Kr   r   )r   r=   )	r   r   rX   r   r   r#   r   r=   r   r  s   ` @@@r   test_param_stream_memoizationz.TestParamsStream.test_param_stream_memoization(  s    !!###//V.//%+2Dekm1TUUU	K 	K 	K 	K 	K 	K 	K 	K 	j)))UU\"B"B!CDDDDDr   c                 J   t          dd          }t          |j        j        |j        j        g          }g fd}|                    |           |j                            dd           dddgk    sJ |                    dd           ddddddgk    sJ d S )	Nr   r   r<   r   c                  2                         |            d S r~   r   r   s    r   r   zCTestParamsStream.test_params_stream_batch_watch.<locals>.subscriber>  r   r   r=   r>   rC   )Tapr   r#   r=   r>   r   r   r   )rT   tapparamsr   r"   s       @r   test_params_stream_batch_watchz/TestParamsStream.test_params_stream_batch_watch9  s    AmmmCIK#=>>>	" 	" 	" 	" 	"j)))	#s###**+++++		A	**!!,<,<=======r   c                     t                      }t                      }t          |j        j        |j        j        g          }t	          |j                  dk    sJ d S )Nr   rD   r   r   r#   valuer   r  rT   r@   br+   s       r   test_params_no_namesz%TestParamsStream.test_params_no_namesJ  sP    KKKKqw}agm<===19~~""""""r   c                     t          d          }t          d          }t          |j        j        |j        j        g          }t	          |j                  dk    sJ d S )NName)r    r   rD   r  r  s       r   test_params_identical_namesz,TestParamsStream.test_params_identical_namesP  s^    6"""6"""qw}agm<===19~~""""""r   )r(   r   r   rV   r   r   r   r   r   r   r   r   r  r  r  r  r  __classcell__r   s   @r   r   r      s       ( ( ( ( (5 5 55 5 5* * *A A A	= 	= 	=< < <
- - -5 5 5= = =E E E"> > >"# # ## # # # # # #r   r   c                   h    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 Zd Zd Zd ZdS )TestParamMethodStreamc                     t          t          j                  t          d          k     rt          d           G d dt          j                  } G d d|          }|| _        || _        d S )Nz1.8.0z%Params stream requires param >= 1.8.0c                   h   e Zd Z ej        d           Z ej        d          Z ej        d          Z ej	        d          Z
 ej        d          d             Z ej        d          d             Z ej        dd          d             Z ej        d	          d
             Zd ZdS )*TestParamMethodStream.setUp.<locals>.Innerc                 6    | j                             d          S r   r   r   s    r   r   z3TestParamMethodStream.setUp.<locals>.Inner.<lambda>_  r   r   r   r   r=   c                 @    | xj         dz  c_         t          g           S r   countr
   rZ   s    r   methodz1TestParamMethodStream.setUp.<locals>.Inner.methodd      

a

bzz!r   r   c                     d S r~   r   rZ   s    r   action_methodz8TestParamMethodStream.setUp.<locals>.Inner.action_methodi      r   c                 @    | xj         dz  c_         t          g           S r   r%  rZ   s    r   action_number_methodz?TestParamMethodStream.setUp.<locals>.Inner.action_number_methodm  r(  r   r>   c                     d S r~   r   )rT   objs     r   	op_methodz4TestParamMethodStream.setUp.<locals>.Inner.op_methodr  r+  r   c                     d S r~   r   rZ   s    r   method_no_depsz9TestParamMethodStream.setUp.<locals>.Inner.method_no_depsv  s    r   N)r(   r   r   r#   r   r   rY   r=   r>   rS   r&  dependsr'  r*  r-  r0  r2  r   r   r   r   r"  ]  s       !U\*M*MNNNFq)))Aq)))A!EM!,,,EU]3" "  " U]8$$  %$ U]8S))" " *)" U]3       r   r   c                   ^    e Zd Z ej                    Z ej        d          d             ZdS )0TestParamMethodStream.setUp.<locals>.InnerSubObjzsub.xc                     d S r~   r   rZ   s    r   subobj_methodz>TestParamMethodStream.setUp.<locals>.InnerSubObj.subobj_method}  r+  r   N)r(   r   r   r#   	Parametersubr3  r7  r   r   r   InnerSubObjr5  y  sI        !%/##CU]7##  $#  r   r:  )r   r#   rg   r   r   r   innersubobj)rT   r   r:  s      r   rV   zTestParamMethodStream.setUpY  s    5$%%(8(888BCCC	 	 	 	 	E' 	 	 	8	 	 	 	 	% 	 	 	 
&r   c                 v   |                                  }t          |j                  }|                     t	          |j                  |j        j        h           |                     |j        i            g fd}|	                    |           d|_        d|_
        |                     i g           d S )Nc                  2                         |            d S r~   r   r   s    r   r   zCTestParamMethodStream.test_param_method_depends.<locals>.subscriber  r   r   rC   )r   ParamMethodr'  rX   r   r   r#   r=   r   r   r>   r   s       @r   test_param_method_dependsz/TestParamMethodStream.test_param_method_depends  s    

U\**V.//%+-AAA"---	" 	" 	" 	" 	" 	j)))"&&&&&r   c                     |                                  }t          j        |j        j                  d             }t	          |          }d|_        |                     |d         t          dg                     d S )Nc                 "    t          | g          S r~   r
   r   s    r   rO   z?TestParamMethodStream.test_param_function_depends.<locals>.test  s    1#;;r   r   r   )r   r#   r3  r=   r   rX   r
   rT   r   rO   dmaps       r   test_param_function_dependsz1TestParamMethodStream.test_param_function_depends  su    

	u{}	%	%	 	 
&	%	 $b62$<<00000r   c                     |                                  }d }t          |t          |j        j                            }d|_        |                     |d         t          dg                     d S )Nc                 "    t          | g          S r~   rB  r   s    r   rO   zCTestParamMethodStream.test_param_instance_steams_dict.<locals>.test      1#;;r   r   streamsr   r   )r   r   r   r#   r=   rX   r
   rC  s       r   test_param_instance_steams_dictz5TestParamMethodStream.test_param_instance_steams_dict  sp    

	 	 	 $u{}(=(=(=>>>b62$<<00000r   c                      G d dt           j                  }d }t          |t          |j         j                            }d|_        |                     |d         t          dg                     d S )Nc                   0    e Zd Z ej        d          ZdS )MTestParamMethodStream.test_param_class_steams_dict.<locals>.ClassParamExampler   r   N)r(   r   r   r#   rY   r=   r   r   r   ClassParamExamplerN    s"        Q'''AAAr   rO  c                 "    t          | g          S r~   rB  r   s    r   rO   z@TestParamMethodStream.test_param_class_steams_dict.<locals>.test  rH  r   r   rI  r   r   )r#   r   r   r   r=   rX   r
   )rT   rO  rO   rD  s       r   test_param_class_steams_dictz2TestParamMethodStream.test_param_class_steams_dict  s    	( 	( 	( 	( 	( 3 	( 	( 	(	 	 	 $/@/F/H(I(I(IJJJ b62$<<00000r   c                     dd l }|j                            d          }d }t          |t	          |                    }d|_        |                     |d         t          dg                     d S )	Nr   r   )r  c                 "    t          | g          S r~   rB  r   s    r   rO   z@TestParamMethodStream.test_panel_param_steams_dict.<locals>.test  rH  r   r   rI  r   r   )panelwidgetsFloatSliderr   r   r  rX   r
   )rT   pnwidgetrO   rD  s        r   test_panel_param_steams_dictz2TestParamMethodStream.test_panel_param_steams_dict  s    ''a'00	 	 	 $v777b62$<<00000r   c                    |                                  }t          |j                  }|                     t	          |j                  |j        j        |j        j        |j        j	        |j        j
        |j        j        h           |                     |j        i            g fd}|                    |           d|_        d|_        |                     i i g           d S )Nc                  2                         |            d S r~   r   r   s    r   r   zKTestParamMethodStream.test_param_method_depends_no_deps.<locals>.subscriber  r   r   rC   )r   r>  r2  rX   r   r   r#   r=   r>   r   r    r&  r   r   r   s       @r   !test_param_method_depends_no_depsz7TestParamMethodStream.test_param_method_depends_no_deps  s    

U122V.//KM5;=%+*<Kek/2
 	 	 	 	"---	" 	" 	" 	" 	" 	j)))"b*****r   c                 n   |                      |                                           }t          |j                  }|                     t          |j                  |j        j        j	        h           g fd}|
                    |           d|j        _	        |                     i g           d S )N)r9  c                  2                         |            d S r~   r   r   s    r   r   zMTestParamMethodStream.test_param_method_depends_on_subobj.<locals>.subscriber  r   r   rC   )r;  r   r>  r7  rX   r   r   r9  r#   r=   r   r   s       @r   #test_param_method_depends_on_subobjz9TestParamMethodStream.test_param_method_depends_on_subobj  s      TZZ\\ 22U011V.//%)/2C1DEEE	" 	" 	" 	" 	" 	j)))	"&&&&&r   c                    |                                  }t          |j                  }|                     t	          |j                  d           |j        d         }|                     |t                     |                     |j        i            g fd}|	                    |           d|_
        d|_        |                     i g           d S )Nr   r   c                  2                         |            d S r~   r   r   s    r   r   zKTestParamMethodStream.test_dynamicmap_param_method_deps.<locals>.subscriber  r   r   rC   )r   r   r'  rX   r   rJ  assertIsInstancer>  r   r   r=   r>   )rT   r   rD  r   r   r"   s        @r   !test_dynamicmap_param_method_depsz7TestParamMethodStream.test_dynamicmap_param_method_deps  s    

%,''T\**A...afk222"---	" 	" 	" 	" 	" 	j)))"&&&&&r   c                    |                                  }t          |j                  }|                     t	          |j                  |j        j        h           |                     |j        i            g fd}|	                    |           d|_        |j        
                    d           |                     i i g           d S )Nc                  2                         |            d S r~   r   r   s    r   r   zZTestParamMethodStream.test_param_method_depends_trigger_no_memoization.<locals>.subscriber  r   r   rC   r=   )r   r>  r'  rX   r   r   r#   r=   r   r   r   r   s       @r   0test_param_method_depends_trigger_no_memoizationzFTestParamMethodStream.test_param_method_depends_trigger_no_memoization  s    

U\**V.//%+-AAA"---	" 	" 	" 	" 	" 	j)))C   "b*****r   c                 b   |                                  }t          |j                  }|j        d         }|                     t          |j                  |j        j        h           |                     |j	        i            |d          |d          |                     |j
        d           d S )Nr   r   r   )r   r   r'  rJ  rX   r   r   r#   r=   r   r&  )rT   r   rD  r   s       r   -test_dynamicmap_param_method_deps_memoizationzCTestParamMethodStream.test_dynamicmap_param_method_deps_memoization  s    

%,''aV.//%+-AAA"---RRa(((((r   c                     |                                  }t          |j                  }|                     |j        g            d S r~   )r   r   r2  rX   rJ  )rT   r   rD  s      r   $test_dynamicmap_param_method_no_depsz:TestParamMethodStream.test_dynamicmap_param_method_no_deps  s=    

%.//r*****r   c                 0                                      t          j                  }                     t	          |j                  d           |j        d                              t          j                  j        j	        h            
                    t                                          j        i            g  fd}                    |           	                                                    i g           d S )Nr   r   c                                           |                                t          j                  t	                     ddh           d S r   r  r  s    r   r   zSTestParamMethodStream.test_dynamicmap_param_method_action_param.<locals>.subscriber  r  r   )r   r   r*  rX   r   rJ  r   r   r#   r   rb  r>  r   r   )rT   rD  r   r   r   r"   s   `  @@@r   )test_dynamicmap_param_method_action_paramz?TestParamMethodStream.test_dynamicmap_param_method_action_param  s    

%-..T\**A...aV.//%+2D1EFFFfk222"---	F 	F 	F 	F 	F 	F 	F 	F
 	j)))U"&&&&&r   c                                                        t          j                                       t	          j                  d           j        d                              t          j                  j        j	        j        j
        h                                t                                          j        i            g  fd}                    |                               fd           	                                                    i g                                j        d           d_
                             i g                                j        d           d S )Nr   r   c                                           |                                t          j                  t	                     dt	                     ddh           d S r
  r  r  s    r   r   z]TestParamMethodStream.test_dynamicmap_param_action_number_method_memoizes.<locals>.subscriber0  r  r   c                      d         S Nr   r   )r   rD  s    r   r   z[TestParamMethodStream.test_dynamicmap_param_action_number_method_memoizes.<locals>.<lambda>7  s    tBx r   )r   r   r-  rX   r   rJ  r   r   r#   r   r=   rb  r>  r   r   r&  )rT   r   rD  r   r   r"   s   ` @@@@r   3test_dynamicmap_param_action_number_method_memoizeszITestParamMethodStream.test_dynamicmap_param_action_number_method_memoizes&  s   

%455T\**A...aV.//%+2Dekm1TUUUfk222"---	K 	K 	K 	K 	K 	K 	K 	K 	j)))7777888U"&&&a((("&&&a(((((r   c                   	 |                                  }t          |j                  }|j        d         }t	          ||j                  }|                     t          |j                  d           |j        d         }|                     t          |j	                  |j
        j        h           |                     |t                     |                     |j        i            g g c	fd}	fd}|                    |           |                    |           d|_        |                     g            |                     	i g           d S )Nr   )	operationr   c                  2                         |            d S r~   r   )r   values_xs    r   subscriber_xzZTestParamMethodStream.test_dynamicmap_param_method_dynamic_operation.<locals>.subscriber_xK      OOF#####r   c                  2                         |            d S r~   r   )r   values_ys    r   subscriber_yzZTestParamMethodStream.test_dynamicmap_param_method_dynamic_operation.<locals>.subscriber_yN  rx  r   rD   )r   r   r'  rJ  r   r0  rX   r   r   r   r#   r>   rb  r>  r   r   )
rT   r   rD  inner_streamop_dmapr   rw  r{  rv  rz  s
           @@r   .test_dynamicmap_param_method_dynamic_operationzDTestParamMethodStream.test_dynamicmap_param_method_dynamic_operation?  sc   

%,''|A$%/:::W_--q111#V.//%+-AAAfk222"---(	$ 	$ 	$ 	$ 	$	$ 	$ 	$ 	$ 	$ 	##L111l+++2&&&B4(((((r   N)r(   r   r   rV   r?  rE  rK  rQ  rY  r\  r_  rc  rf  rh  rj  rm  rr  r~  r   r   r   r  r  W  s        )' )' )'V' ' '
1 
1 
1	1 	1 	1
1 
1 
1
1 
1 
1+ + +$' ' '' ' '"+ + +	) 	) 	)+ + +
' ' '&) ) )2) ) ) ) )r   r  bokeh_backendc                  F   d } t          ddd          }t                      }t          t          j        | |          |g          }t          j        |          }|j        d         j        j	        d         d	         dk    sJ |j
        d
k    sJ |j        dk    sJ d S )Nc                 *    t          dddd| g          S )Nr   rC   rD      )r   )rH   x_rangey_ranges      r   	make_plotz;test_dynamicmap_partial_bind_and_streams.<locals>.make_plot\  s    aAq!_%%%r   Sliderr   r   )r    startend)rH   rI  r>   )r   r  )gٿg@)r   RangeXYr   r#   bindhvrender	renderersdata_sourcedatar  r  )r  sliderrange_xyrD  	bk_figures        r   (test_dynamicmap_partial_bind_and_streamsr  X  s    & & & HA2666FyyHejf555zJJJD	$Iq!-237;q@@@@v%%%%{******r   c                   2    e Zd Zd Zd Zd Zd Zd Zd ZdS )TestSubscribersc                     t                      }t          |g          }t          dd          } |j        di | |                     |j        |           d S NsubscribersrD   r  r<   r   r   r   r   r   rX   r   rT   r   r   r   s       r   test_exception_subscriberz)TestSubscribers.test_exception_subscriberm  se    $&&
*666Q     *F33333r   c                     t                      }t          |g          }t          dd          } |j        di | |                     |j        d            d S r  )r   r   r   updaterX   r   r  s       r   test_subscriber_disabledz(TestSubscribers.test_subscriber_disabledt  se    $&&
*666Q!!&!!!*D11111r   c                 
   t                      }t                      }t          ||g          }t          dd          } |j        di | |                     |j        |           |                     |j        |           d S r  r  )rT   subscriber1subscriber2r   r   s        r   test_subscribersz TestSubscribers.test_subscribers{  s    %''%''+{)CDDDQ     +V444+V44444r   c                    t                      }t          |g          }t          |g          }|                    d           |                    d           t                              ||g           |                     |j        t          dd                     |                     |j	        d           d S )Nr  r   r   r   r>   r<   r   
r   r   r   r  r   r   rX   r   r   r   )rT   r   	positionX	positionYs       r   test_batch_subscriberz%TestSubscribers.test_batch_subscriber  s    $&&
*666	*666	12	9-...*D1OOO<<<.22222r   c                 *   t                      }t                      }t          ||g          }t          ||g          }|                    d           |                    d           t                              ||g           |                     |j        t          dd                     |                     |j	        d           |                     |j        t          dd                     |                     |j	        d           d S )Nr  2   r   d   r  r<   r   r  )rT   r  r  r  r  s        r   test_batch_subscribersz&TestSubscribers.test_batch_subscribers  s   %''%''+{)CDDD	+{)CDDD	23	9-...+TB#->->->???/333+TB#->->->???/33333r   c                    fd}t          d          }t          ||g          fd}t          |          |                               d          |                    d           |                     j        d           d S )	Nc                 H    xj         dz  c_         t          d| fg          S )Nr   r   )r   r
   r  r   s    r   pointsz5TestSubscribers.test_pipe_memoization.<locals>.points  s+    !!Q&!!At9+&&&r   r   r  rI  c                       d          d S rq  r   )rD  s   r   r   z1TestSubscribers.test_pipe_memoization.<locals>.cb  s    HHHHr   r   r   rD   )Piper   r   r   sendrX   r   )rT   r  r   r   rD  r   s       @@r   test_pipe_memoizationz%TestSubscribers.test_pipe_memoization  s    	' 	' 	' 	' 	' 1&6(333	 	 	 	 	$R((
j)))RA 	.22222r   N)	r(   r   r   r  r  r  r  r  r  r   r   r   r  r  k  sn        4 4 42 2 25 5 53 3 34 4 4$3 3 3 3 3r   r  c                   2    e Zd Zd Zd Zd Zd Zd Zd ZdS )TestStreamSourcec                     t          j        d          5  t          t                    t          _        d d d            d S # 1 swxY w Y   d S )NERROR)r#   logging_levelr   listr   registryrZ   s    r   tearDownzTestStreamSource.tearDown  s     )) 	0 	0)$//FO	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0s   AAAc                 z    t          g           }t          |          }|                     |j        |           d S Nsource)r
   r   r   r  )rT   r  r   s      r   test_source_empty_elementz*TestStreamSource.test_source_empty_element  s9    (((fmV,,,,,r   c                 &   t          g           }t          |          }|                     |j        |           t	          g           }||_        |                     |t          j                   |                     |t          j                   d S r  )	r
   r   r   r  r   assertNotInr   r  assertIn)rT   r  r   curves       r   test_source_empty_element_remapz0TestStreamSource.test_source_empty_element_remap  sy    (((fmV,,,b		111eV_-----r   c                     t          d dg          }t          |          }|                     |j        |           d S )Nc                      t          g           S r~   rB  r   s    r   r   z9TestStreamSource.test_source_empty_dmap.<locals>.<lambda>  s    6":: r   r   )kdimsr  )r   r   r   r  )rT   points_dmapr   s      r   test_source_empty_dmapz'TestStreamSource.test_source_empty_dmap  sF     !5!5cUCCC---fm[11111r   c                     t          dg          }t          |           |                     |t          j                   d S )Nr   r   r  r
   r   r  r   r  rT   r  s     r   test_source_registryz%TestStreamSource.test_source_registry  s>    !!ffo.....r   c                     t          g           }t          |           |                     |t          j                   d S r  r  r  s     r   "test_source_registry_empty_elementz3TestStreamSource.test_source_registry_empty_element  s:    ffo.....r   N)	r(   r   r   r  r  r  r  r  r  r   r   r   r  r    sn        0 0 0- - -
. . .2 2 2
/ / /
/ / / / /r   r  c                   J    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S )TestParameterRenamingc                 l    t          ddddd          }|                     |j        ddd           d S )Nxtestytestr<   r   r  r   r=   r>   r  r  )r   rX   r   r`   s     r   test_simple_rename_constructorz4TestParameterRenaming.test_simple_rename_constructor  sD    788ACCCq!&<&<=====r   c                    d}|                      t          |          5  t          ddddd           |                     t	          t
                                                    d           d d d            d S # 1 swxY w Y   d S )	N(.+?)is not a stream parameterr  r  r=   rH   r   r  r  T)rh   KeyErrorr   rX   r   cmendswithrj   s     r   test_invalid_rename_constructorz5TestParameterRenaming.test_invalid_rename_constructor  s    1##Hf55 	7 	7'w771BBBBSWW--//666	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7s   AA;;A?A?c                     d}|                      t          |          5  t          ddddd           d d d            d S # 1 swxY w Y   d S )N(.+?)parameter of the same namer  r=   r<   r   r  r  )rh   r  r   rj   s     r    test_clashing_rename_constructorz6TestParameterRenaming.test_clashing_rename_constructor  s    2##Hf55 	? 	?'s33qA>>>>	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	?s   AAAc                     t          dd          }|                    dd          }|                     |j        ddd           d S )Nr   r  r<   r  r  r  r   r   rX   r   rT   ra   renameds      r   test_simple_rename_methodz/TestParameterRenaming.test_simple_rename_method  sP    a   ))g)11)Aq+A+ABBBBBr   c                     t          dd          }d}|                     t          |          5  |                    dd           d d d            d S # 1 swxY w Y   d S )Nr   r  r<   r  r  r  r  r   rh   r  r   rt   s      r   test_invalid_rename_methodz0TestParameterRenaming.test_invalid_rename_method  s    a   1##Hf55 	, 	,II7I+++	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	,   AAAc                     t          dd          }d}|                     t          |          5  |                    dd           d d d            d S # 1 swxY w Y   d S )Nr   r  r<   r  r  r=   r  rt   s      r   test_clashing_rename_methodz1TestParameterRenaming.test_clashing_rename_method  s    a   2##Hf55 	( 	(II3I'''	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	(r  c                     t          dd          }|                    dd          }|                    dd           |                     |j        ddd           d S )Nr   r  r<   r  r     r  )r   r   r   rX   r   r  s      r   test_update_rename_validz.TestParameterRenaming.test_update_rename_valid  sf    a   ))g)11Q)Aq+A+ABBBBBr   c                     t          dd          }|                    d          }d}|                     t          |          5  |                    d           d d d            d S # 1 swxY w Y   d S )	Nr   r  r<   r  r  z!ytest' is not a parameter of(.+?)r  )r  )r   r   rh   ri   r   )rT   ra   r  rk   s       r   test_update_rename_invalidz0TestParameterRenaming.test_update_rename_invalid  s    a   ))g)&&4##J77 	# 	#MMM"""	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	#s   A))A-0A-c                     t          dd                              d           }|                     |j        ddi           d S )Nr   r<   r   r>   r  )rT   r  s     r   test_rename_suppressionz-TestParameterRenaming.test_rename_suppression  sH    a!$$$++d+33)C733333r   c                     t          dd                              d           }|                     |j        ddi           |                    d          }|                     |j        ddd           d S )Nr   r<   r   r>   foo)r  r>   r  )rT   r  	reenableds      r    test_rename_suppression_reenablez6TestParameterRenaming.test_rename_suppression_reenable  s|    a!$$$++d+33)C7333NNUN++	+A1-=-=>>>>>r   N)r(   r   r   r  r  r  r  r  r  r  r  r  r  r   r   r   r  r    s        > > >7 7 7? ? ?
C C C
, , ,( ( (C C C# # #4 4 4? ? ? ? ?r   r  c                   &    e Zd Zd Zd Zd Zd ZdS )TestPlotSizeTransformc                 h    t          ddd          }|                     |j        dddd           d S )N,          ?widthheightscalePlotSizerX   r   rT   plotsizes     r    test_plotsize_initial_contents_1z6TestPlotSizeTransform.test_plotsize_initial_contents_1  s@    #c===*S3PS,T,TUUUUUr   c                     t          d          }|                    dd           |                     |j        dddd           d S )	Nr  r  r  r  r  r        r  r	  r   rX   r   r
  s     r   test_plotsize_update_1z,TestPlotSizeTransform.test_plotsize_update_1  sR    #&&&S---*S3PS,T,TUUUUUr   c                 h    t          ddd          }|                     |j        dddd           d S )NX  r  rC   r  r  r
  s     r    test_plotsize_initial_contents_2z6TestPlotSizeTransform.test_plotsize_initial_contents_2"  s@    #c;;;*S3PQ,R,RSSSSSr   c                     t          d          }|                    dd           |                     |j        dddd           d S )	NrC   r  r  r  r  i  r  r  r  r
  s     r   test_plotsize_update_2z,TestPlotSizeTransform.test_plotsize_update_2&  sR    !$$$S---*TCQR,S,STTTTTr   N)r(   r   r   r  r  r  r  r   r   r   r  r    s^        V V VV V V
T T TU U U U Ur   r  c                        e Zd Zd Zd Zd ZdS )TestPipeStreamc                     fdd _         t                      }|                               |                    d           |                     |j        d           |                     j         d           d S )Nc                     | _         d S r~   rN   r  s    r   r   z1TestPipeStream.test_pipe_send.<locals>.subscriber/      "JOOOr   Test)rO   r  r   r  rX   r  rT   piper   s     @r   test_pipe_sendzTestPipeStream.test_pipe_send.  s    	# 	# 	# 	# 	#
vvJ'''		&F+++&11111r   c                     fdd _         t                      }|                               |                    d           |                     |j        d           |                     j         d           d S )Nc                     | _         d S r~   rN   r  s    r   r   z2TestPipeStream.test_pipe_event.<locals>.subscriber:  r  r   r  r  )rO   r  r   r   rX   r  r  s     @r   test_pipe_eventzTestPipeStream.test_pipe_event9  s    	# 	# 	# 	# 	#
vvJ'''


F+++&11111r   c                     t                      }|                    d           |                     |j        d           d S )Nr  r  )r  r   rX   r  )rT   r   s     r   test_pipe_updatezTestPipeStream.test_pipe_updateD  s=    vv


F+++++r   N)r(   r   r   r!  r$  r&  r   r   r   r  r  ,  sA        	2 	2 	2	2 	2 	2, , , , ,r   r  c                   >    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	S )
TestBufferArrayStreamc                     t                               ddgg          }t          |          }|                     |j        |           d S )Nr   r   rQ   rR   BufferrX   r  )rT   arrbuffs      r   test_init_buffer_arrayz,TestBufferArrayStream.test_init_buffer_arrayM  sB    hhAx  c{{C(((((r   c                     d}|                      t          |          5  t          t                              ddg                     d d d            d S # 1 swxY w Y   d S )Nz-Only 2D array data may be streamed by Buffer.r   r   )rh   ri   r+  rQ   rR   )rT   errors     r    test_buffer_array_ndim_exceptionz6TestBufferArrayStream.test_buffer_array_ndim_exceptionR  s    ?##J66 	% 	%288QF##$$$	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	%s   *AAAc                 ,   t          t                              ddgg                    }|                    t                              ddgg                     |                     |j        t                              ddgddgg                     d S )Nr   r   rC   r+  rQ   rR   r  rX   r  rT   r-  s     r   test_buffer_array_sendz,TestBufferArrayStream.test_buffer_array_sendW  s|    bhhAx(())		"((QF8$$%%%BHHq!fq!f-=$>$>?????r   c                 *   t          t                              ddgg          d          }|                    t                              ddgg                     |                     |j        t                              ddgg                     d S )Nr   r   lengthrC   r3  r4  s     r   $test_buffer_array_larger_than_lengthz:TestBufferArrayStream.test_buffer_array_larger_than_length\  sz    bhhAx((333		"((QF8$$%%%BHHq!fX$6$677777r   c                 0   t          t                              ddgg          d          }|                    t                              ddgddgg                     |                     |j        t                              ddgg                     d S )Nr   r   r7  rC   rD   r3  r4  s     r   *test_buffer_array_patch_larger_than_lengthz@TestBufferArrayStream.test_buffer_array_patch_larger_than_lengtha  s    bhhAx((333		"((QFQF+,,---BHHq!fX$6$677777r   c                 "   t          t                              ddgg                    }d}|                     t          |          5  |                    t                              dg                     d d d            d S # 1 swxY w Y   d S )Nr   r   z+Streamed array data must be two-dimensionalr+  rQ   rR   rh   ri   r  rT   r-  r0  s      r   'test_buffer_array_send_verify_ndim_failz=TestBufferArrayStream.test_buffer_array_send_verify_ndim_failf  s    bhhAx(())=##J66 	% 	%IIbhhsmm$$$	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	%s   /BBBc                 &   t          t                              ddgg                    }d}|                     t          |          5  |                    t                              g dg                     d d d            d S # 1 swxY w Y   d S )Nr   r   z6Streamed array data expected to have 2 columns, got 3.rB   r=  r>  s      r   (test_buffer_array_send_verify_shape_failz>TestBufferArrayStream.test_buffer_array_send_verify_shape_faill  s    bhhAx(())H##J66 	- 	-IIbhh			{++,,,	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	-s   1BB
B
c                     t          t                              ddgg                    }d}|                     t          |          5  |                    dg           d d d            d S # 1 swxY w Y   d S )Nr   r   z/Input expected to be of type ndarray, got list.)r+  rQ   rR   rh   r'   r  r>  s      r   'test_buffer_array_send_verify_type_failz=TestBufferArrayStream.test_buffer_array_send_verify_type_failr  s    bhhAx(())A##Iu55 	 	IIqcNNN	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   A,,A03A0N)r(   r   r   r.  r1  r5  r9  r;  r?  rA  rC  r   r   r   r(  r(  K  s        ) ) )
% % %
@ @ @
8 8 8
8 8 8
% % %- - -    r   r(  c                   2    e Zd Zd Zd Zd Zd Zd Zd ZdS )TestBufferDictionaryStreamc                     t                               dg          t                               dg          d}t          |          }|                     |j        |           d S r_   r*  rT   r  r-  s      r   test_init_buffer_dictz0TestBufferDictionaryStream.test_init_buffer_dict{  sP    XXqc]]1#77d||D)))))r   c                    t                               dg          t                               dg          d}t          |          }|                    t                               dg          t                               dg          d           |                     |j        t                               ddg          t                               ddg          d           d S )Nr   r   r<   rC   rQ   rR   r+  r  rX   r  rG  s      r   test_buffer_dict_sendz0TestBufferDictionaryStream.test_buffer_dict_send  s    XXqc]]1#77d||		!BHHaSMM::;;;"((Aq6*:*:1a&AQAQ$R$RSSSSSr   c                 d   t                               dg          t                               dg          d}t          |d          }t                               dg          t                               dg          d}|                    |           |                     |j        |           d S )Nr   r   r<   r7  rC   rJ  rT   r  r-  chunks       r   #test_buffer_dict_larger_than_lengthz>TestBufferDictionaryStream.test_buffer_dict_larger_than_length  s    XXqc]]1#77d1%%%hhsmm"((A3--88		%E*****r   c                    t                               dg          t                               dg          d}t          |d          }t                               ddg          t                               ddg          d}|                    |           |                     |j        t                               dg          t                               dg          d           d S )Nr   r   r<   r7  rC   rD   rJ  rM  s       r   )test_buffer_dict_patch_larger_than_lengthzDTestBufferDictionaryStream.test_buffer_dict_patch_larger_than_length  s    XXqc]]1#77d1%%%hh1v&&RXXq!f-=-=>>		%"((A3--bhhsmm$L$LMMMMMr   c                 ^   t                               dg          t                               dg          d}t          |          }d}|                     t          |          5  |                    dt                               dg          i           d d d            d S # 1 swxY w Y   d S )Nr   r   r<   8Input expected to have columns \['x', 'y'\], got \['x'\]r=   rC   )rQ   rR   r+  rh   
IndexErrorr  rT   r  r-  r0  s       r   (test_buffer_dict_send_verify_column_failzCTestBufferDictionaryStream.test_buffer_dict_send_verify_column_fail  s    XXqc]]1#77d||K##J66 	, 	,IIsBHHaSMM*+++	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	,s   $1B""B&)B&c                    t                               dg          t                               dg          d}t          |          }d}|                     t          |          5  |                    t                               dg          t                               ddg          d           d d d            d S # 1 swxY w Y   d S )Nr   r   r<   z7Input columns expected to have the same number of rows.rC   rD   r  )rQ   rR   r+  rh   ri   r  rU  s       r   'test_buffer_dict_send_verify_shape_failzBTestBufferDictionaryStream.test_buffer_dict_send_verify_shape_fail  s    XXqc]]1#77d||I##J66 	C 	CIIBHHaSMM!Q0@0@AABBB	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	Cs   $AB==CCN)	r(   r   r   rH  rK  rO  rQ  rV  rX  r   r   r   rE  rE  y  sy        * * *
T T T+ + +N N N, , ,C C C C Cr   rE  c                   >    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	S )
TestBufferDataFrameStreamc                     t          j        t                              dg          t                              dg          d          }t	          |d          }|                     |j        |           d S )Nr   rC   r<   Findex)pd	DataFramerQ   rR   r+  rX   r  rG  s      r   test_init_buffer_dframez1TestBufferDataFrameStream.test_init_buffer_dframe  sa    |"((A3--bhhsmmDDEEd%(((D)))))r   c                    t          j        t                              dg          t                              dg          d          }t	          |          }|                     |j        |                                           d S r_   )r^  r_  rQ   rR   r+  rX   r  reset_indexrG  s      r   "test_init_buffer_dframe_with_indexz<TestBufferDataFrameStream.test_init_buffer_dframe_with_index  sf    |"((A3--bhhsmmDDEEd||D$4$4$6$677777r   c                 R   t          j        t                              dg          t                              dg          d          }t	          |d          }|                    t          j        t                              dg          t                              dg          d                     t          j        t                              ddg          t                              ddg          d          }|                     |j        j        |j                   d S )Nr   r   r<   Fr\  rC   	r^  r_  rQ   rR   r+  r  rX   r  r"   rT   r  r-  dframes       r   test_buffer_dframe_sendz1TestBufferDataFrameStream.test_buffer_dframe_send  s    |"((A3--bhhsmmDDEEd%(((		",RXXqc]]1#GGHHIIIBHHaV$4$4288QF;K;KLLMM)6=99999r   c                 z   t          j        t                              dg          t                              dg          d          }t	          |          }|                    t          j        t                              dg          t                              dg          d                     t          j        t                              ddg          t                              ddg          dddg          }|                     |j        j        |	                                j                   d S )Nr   r   r<   rC   r\  )
r^  r_  rQ   rR   r+  r  rX   r  r"   rb  rf  s       r   "test_buffer_dframe_send_with_indexz<TestBufferDataFrameStream.test_buffer_dframe_send_with_index  s    |"((A3--bhhsmmDDEEd||		",RXXqc]]1#GGHHIIIBHHaV$4$4288QF;K;KLLUVXYTZ[[[)6+=+=+?+?+FGGGGGr   c                    t          j        t                              dg          t                              dg          d          }t	          |dd          }t          j        t                              dg          t                              dg          d          }|                    |           |                     |j        j        |j                   d S )Nr   r   r<   Fr8  r]  rC   re  rM  s       r   %test_buffer_dframe_larger_than_lengthz?TestBufferDataFrameStream.test_buffer_dframe_larger_than_length  s    |"((A3--bhhsmmDDEEd1E222288QC==rxx}}EEFF		%)5<88888r   c                 X   t          j        t                              dg          t                              dg          d          }t	          |dd          }t          j        t                              ddg          t                              ddg          d          }|                    |           t          j        t                              dg          t                              dg          d          }|                     |j        j        |j                   d S )Nr   r   r<   Frl  rC   rD   re  )rT   r  r-  rN  rg  s        r   +test_buffer_dframe_patch_larger_than_lengthzETestBufferDataFrameStream.test_buffer_dframe_patch_larger_than_length  s    |"((A3--bhhsmmDDEEd1E222288QF#3#3"((Aq6:J:JKKLL		%BHHaSMM!FFGG)6=99999r   c           	         t          j        t                              dg          t                              dg          d          }t	          |d          }d}|                     t          |          5  |                    t          j        dt                              dg          i                     d d d            d S # 1 swxY w Y   d S )	Nr   r   r<   Fr\  rS  r=   rC   )r^  r_  rQ   rR   r+  rh   rT  r  rU  s       r   *test_buffer_dframe_send_verify_column_failzDTestBufferDataFrameStream.test_buffer_dframe_send_verify_column_fail  s    |"((A3--bhhsmmDDEEd%(((K##J66 	: 	:IIblC1##788999	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	:s   8ACCCc                     t          j        dg di          }t          |          }|                                 |                     |j        |j        d dd d f                                                    d S )Nr@   rB   r   )r^  r_  r+  clearrX   r  ilocrb  rG  s      r   #test_clear_buffer_dframe_with_indexz=TestBufferDataFrameStream.test_clear_buffer_dframe_with_index  so    |S))),--d||

DIbqb!!!e$4$@$@$B$BCCCCCr   N)r(   r   r   r`  rc  rh  rj  rm  ro  rq  ru  r   r   r   rZ  rZ    s        * * *
8 8 8
: : :H H H9 9 9: : :: : :D D D D Dr   rZ  c                   n     e Zd Z ej        d          Zd fd	Zed             Ze	d             Z
 xZS )	SumT)r&   Fr   c                 \    || _         t                                          ||           d S )N)input_streams	exclusive)baser   r   )rT   val_streamsrz  r{  r   s       r   r   zSum.__init__  s-    	{iHHHHHr   c                 ,    t          | j                  S )Nr{  )r   r{  rZ   s    r   	constantszSum.constants  s    ####r   c                 f    t          d |D                       }t          ||d         z             S )Nc                 .    g | ]}|d          
|d          S r   r   )r   vals     r   r   z*Sum.transform_function.<locals>.<listcomp>  s%    ???cc#h?S???r   r{  r  )sumr   )clsstream_valuesr  r   s       r   transform_functionzSum.transform_function  s9    ??]???@@a)F++,,,,r   )Fr   )r(   r   r   r#   rY   r   r   propertyr  classmethodr  r  r  s   @r   rw  rw    s        d###AI I I I I I $ $ X$ - - [- - - - -r   rw  Valr:   r  c                   &    e Zd Zd Zd Zd Zd ZdS )TestDerivedStreamc                 b   t          d          }t          d          }t          ||g          }|                     |j        d           |                    d           |                     |j        d           |                    d           |                     |j        d           d S )	N      ?r         @      @      @g      "@       g      r  rw  rX   r   r   rT   v0v1s0s       r   test_simple_derived_streamz,TestDerivedStream.test_simple_derived_stream  s    3ZZZ3ZZZ "b]] 	s### 	3s### 	4t$$$$$r   c                    t          d          }t          d          }t          d          }t          ||g          }t          ||g          }|                     |j        d           |                    d           |                     |j        d           |                    d           |                     |j        d	           d S )
Nr  r        @r  g      (@       @g      *@r;   g      ,@r  )rT   r  r  v2s1r  s         r   test_nested_derived_streamz,TestDerivedStream.test_nested_derived_stream  s    3ZZZ3ZZZ3ZZZ "b]]"b]] 	t$$$ 	3t$$$ 	3t$$$$$r   c                 &   t          d          }t          d          }t          d          }t          |||gd          }|                     |j        d           |                    d           |                     |j        d	           d S )
Nr  r  r  r  r  r~  g      \@r  g     @\@r  )rT   r  r  r  r  s        r   test_derived_stream_constantsz/TestDerivedStream.test_derived_stream_constants  s    3ZZZ3ZZZ3ZZZ "b"C((( 	u%%% 	3u%%%%%r   c                 b   t                      }t          d          }t          ||gd          }|                     |j        d           |                    d           |                     |j        d           |                    d           |                     |j        d           d S )Nr  r  T)rz  r  r  r  r  s       r   test_exclusive_derived_streamz/TestDerivedStream.test_exclusive_derived_stream&  s    UU3ZZZ
 "bT*** 	s### 	3s### 	4t$$$$$r   N)r(   r   r   r  r  r  r  r   r   r   r  r    sP        % % %&% % %(& & &% % % % %r   r  c                        e Zd Zd Zd Zd ZdS )TestHistoryStreamc                     t          d          }t          |          }|                     |j        d|j        gi           d S )Nr  r  r"   )r  HistoryrX   r   rT   r  historys      r   "test_initial_history_stream_valuesz4TestHistoryStream.test_initial_history_stream_values=  sB    Cjjj#,,)Hs|n+EFFFFFr   c                 J   t          d          }t          |          }|                    d           |                    d           |                     |j        dddiddiddigi           |                                 |                     |j        dg i           d S )Nr  r  r  r  r"   r   )r  r  r   rX   r   clear_historyr  s      r   #test_history_stream_values_appendedz5TestHistoryStream.test_history_stream_values_appendedC  s    Cjjj#,,		C			C	c
S#Jc
;<	
 	
 	
 	)Hb>:::::r   c                    t          d          }t          |          }g fd}|                    |           |                     g            d d = |                    d           |                     d         dddiddigi           d d = |                    d           |                     d         dddiddiddigi           d d = |                                 |                                 |                     d         dg i           d d = |                    d	           |                     d         ddd	igi           d S )
Nr  r  c                  2                         |            d S r~   r   )r   callback_inputs    r   r   zCTestHistoryStream.test_history_stream_trigger_callbacks.<locals>.cbY  s    !!&)))))r   r  r   r"   r   r  r  )r  r  r   rX   r   r  )rT   r  r  r   r  s       @r   %test_history_stream_trigger_callbacksz7TestHistoryStream.test_history_stream_trigger_callbacksR  s   Cjjj#,, 	* 	* 	* 	* 	*r""",,, 111		C	1c
S#J/0	
 	
 	

 111		C	1c
S#Jc
;<	
 	
 	
 1111rN	
 	
 	
 111		C	1c
|$	
 	
 	
 	
 	
r   N)r(   r   r   r  r  r  r   r   r   r  r  <  sD        G G G; ; ;*
 *
 *
 *
 *
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d Zd ZdS )TestExprSelectionStreamc                 $    t          d           d S )Nbokeh)r   rZ   s    r   rV   zTestExprSelectionStream.setUp  s    'r   c                    t           g}|D ]} |g dg df          }t          |          }|                     t          |j                  d           |                     |j        d         t                     |                     |j        d         t                     |                     |j        d         t                     | 	                    |j
                   | 	                    |j                   |j        d                             d           |                     t          |j                  t          t          d	          dk    t          d	          dk    z  t          d
          dk    t          d
          dk    z  z                       |                     |j
        ddd           d S )NrB   r   r   r   rD   r   r   rC   r   r   rD   r  boundsr=   r>   r  r   rD   r   r  r<   )r
   SelectionExprrX   r   ry  rb  SelectionXYLassoSelection1DassertIsNonebboxselection_exprr   reprr   rT   element_type_2Delement_typeelementexpr_streams        r   &test_selection_expr_stream_2D_elementsz>TestExprSelectionStream.test_selection_expr_stream_2D_elements  s   !(+ 	 	L"lIIIzzz#:;;G'00K S!:;;Q???!!+";A">LLL!!+";A">FFF!!+";A">LLLk.///k8999 %a(..l.CCC [/00s3xx{SXXq[1SXXq[3s88Q;4OPQQ    6**   +	 	r   c           
         t           g}|D ]=} |g dg df          }t          |          }|                     t          |j                  d           |                     |j        d         t                     |                     |j                   |                     |j	                   |j        d         
                    d           |                     t          |j	                  t          t          d          dk    t          d          dk    z                       |                     |j        dd	i           ?d S 
NrB   r  r   r   r  r  r=   rD   r  )r   r  rX   r   ry  rb  r  r  r  r  r   r  r   rT   element_type_1Dr  r  r  s        r   &test_selection_expr_stream_1D_elementsz>TestExprSelectionStream.test_selection_expr_stream_1D_elements  sS   ")+ 	 	L"lIIIzzz#:;;G'00K S!:;;Q???!!+";A">LLLk.///k8999 %a(..l.CCC [/00c#hhkCHHaK011    f   '	 	r   c                    t           g}|D ]} |g dg df                              d          }t          |          }|                     t	          |j                  d           |                     |j        d         t                     |                     |j        d         t                     |                     |j        d         t                     | 
                    |j                   | 
                    |j                   |j        d                             d	
           |                     t          |j                  t          t          d          dk    t          d          dk    z  t          d          dk    t          d          dk    z  z                       |                     |j        ddd           d S )NrB   r  Tinvert_axesrD   r   r   rC   r  r  r>   r=   r  r  r  )r>   r=   r
   optsr  rX   r   ry  rb  r  r  r  r  r  r  r   r  r   r  s        r   2test_selection_expr_stream_invert_axes_2D_elementszJTestExprSelectionStream.test_selection_expr_stream_invert_axes_2D_elements  s   !(+ 	 	L"lIIIzzz#:;;@@T@RRG'00K S!:;;Q???!!+";A">LLL!!+";A">FFF!!+";A">LLLk.///k8999 %a(..l.CCC [/00s3xx{SXXq[1SXXq[3s88Q;4OPQQ    6**   +	 	r   c           
         t           g}|D ]Q} |g dg df                              d          }t          |          }|                     t	          |j                  d           |                     |j        d         t                     |                     |j	                   |                     |j
                   |j        d                             d           |                     t          |j
                  t          t          d	          dk    t          d	          d
k    z                       |                     |j	        d	di           Sd S )NrB   r  Tr  r   r   r  r  r=   r  r  r   r  r  rX   r   ry  rb  r  r  r  r  r   r  r   r  s        r   2test_selection_expr_stream_invert_axes_1D_elementszJTestExprSelectionStream.test_selection_expr_stream_invert_axes_1D_elements  sd   ")+ 	 	L"lIIIzzz#:;;@@T@RRG'00K S!:;;Q???!!+";A">LLLk.///k8999 %a(..l.CCC [/00c#hhkCHHaK011    f   '	 	r   c                    t           g}|D ]} |g dg df                              dd          }t          |          }|                     t	          |j                  d           |                     |j        d         t                     |                     |j        d         t                     |                     |j        d         t                     | 
                    |j                   | 
                    |j                   |j        d                             d	
           |                     t          |j                  t          t          d          dk    t          d          dk    z  t          d          dk    t          d          dk    z  z                       |                     |j        ddd           d S )NrB   r  Tinvert_xaxisinvert_yaxisrD   r   r   rC   rD   r  r   r   r  r=   r>   r  r  r  r<   r  r  s        r   9test_selection_expr_stream_invert_xaxis_yaxis_2D_elementszQTestExprSelectionStream.test_selection_expr_stream_invert_xaxis_yaxis_2D_elements  s   !(+ 	 	L #lIIIzzz#:;;@@!! A  G (00K S!:;;Q???!!+";A">LLL!!+";A">FFF!!+";A">LLLk.///k8999 %a(..l.CCC [/00s3xx{SXXq[1SXXq[3s88Q;4OPQQ    6**   3	 	r   c           
         t           g}|D ]R} |g dg df                              dd          }t          |          }|                     t	          |j                  d           |                     |j        d         t                     |                     |j	                   |                     |j
                   |j        d                             d           |                     t          |j
                  t          t          d	          dk    t          d	          d
k    z                       |                     |j	        d	di           Td S )NrB   r  Tr  r   r   r  r  r=   rD   r  r  r  s        r   9test_selection_expr_stream_invert_xaxis_yaxis_1D_elementszQTestExprSelectionStream.test_selection_expr_stream_invert_xaxis_yaxis_1D_elements  ss   ")+ 	 	L #lIIIzzz#:;;@@!! A  G (00K S!:;;Q???!!+";A">LLLk.///k8999 %a(..l.CCC [/00c#hhkCHHaK011    f   /	 	r   c           	         t          g dg df          }t          |          }|                     t          |j                  d           |                     |j        d         t                     |                     |j                   |                     |j	                   |j        d         
                    d           |                     t          |j	                  t          t          d          dk    t          d          d	k    z                       |                     |j        dd
i           |j        d         
                    d           |                     t          |j	                  t          t          d          dk    t          d          dk    z                       |                     |j        ddi           d S )Nr   rC   rD   r  r   r   r   rC   rD      r   r   )      ?      @ffffff@   r  r=   r  r  r  r  )r  r  r   r  r  r  r  )r	   r  rX   r   ry  rb  r  r  r  r  r   r  r   rT   histr  s      r   test_selection_expr_stream_histz7TestExprSelectionStream.test_selection_expr_stream_hist/  s   ///???;<<#D)) 	[677;;;k7:KHHH+*++++4555 	!!$**2D*EEE+,,#c((C-#c((C-011	
 	
 	
 	)C+<===
 	!!$**2C*DDD+,,#c((C-#c((A+.//	
 	
 	
 	)C?;;;;;r   c           	         t          g dg df                              d          }t          |          }|                     t	          |j                  d           |                     |j        d         t                     |                     |j	                   |                     |j
                   |j        d                             d           |                     t          |j
                  t          t          d	          d
k    t          d	          dk    z                       |                     |j	        d	di           |j        d                             d           |                     t          |j
                  t          t          d	          dk    t          d	          dk    z                       |                     |j	        d	di           d S )Nr  r  Tr  r   r   )r  r  r  r  r  r=   r  r  r  )r  r  r   r  r  r  r  r	   r  r  rX   r   ry  rb  r  r  r  r  r   r  r   r  s      r   +test_selection_expr_stream_hist_invert_axeszCTestExprSelectionStream.test_selection_expr_stream_hist_invert_axesM  s   ///???;<<AA B 
 
 $D)) 	[677;;;k7:KHHH+*++++4555 	!!$**2D*EEE+,,#c((C-#c((C-011	
 	
 	
 	)C+<===
 	!!$**2C*DDD+,,#c((C-#c((A+.//	
 	
 	
 	)C?;;;;;r   c           	         t          g dg df                              dd          }t          |          }|                     t	          |j                  d           |                     |j        d         t                     |                     |j	                   |                     |j
                   |j        d                             d           |                     t          |j
                  t          t          d	          d
k    t          d	          dk    z                       |                     |j	        d	di           |j        d                             d           |                     t          |j
                  t          t          d	          dk    t          d	          dk    z                       |                     |j	        d	di           d S )Nr  r  Tr  r   r   )r  r  r  r  r  r=   r  r  r  )r  r   r  r  r  r  r  r  r  s      r   2test_selection_expr_stream_hist_invert_xaxis_yaxiszJTestExprSelectionStream.test_selection_expr_stream_hist_invert_xaxis_yaxism  s   ///???;<<AA!! B 
 
 $D)) 	[677;;;k7:KHHH+*++++4555 	!!$**2D*EEE+,,#c((C-#c((C-011	
 	
 	
 	)C+<===
 	!!$**2C*DDD+,,#c((C-#c((A+.//	
 	
 	
 	)C?;;;;;r   c           	          dd l }n2# t          $ r% dd l}n# t          $ r t          d          w xY wY nw xY wt	          g dg dg dgdg          }g t          |dg          }|                    fd	           |                     t          |j	                  d
           | 
                    |j	        d         t                     | 
                    |j	        d         t                     | 
                    |j	        d         t                     |                     |j                   |                     |j                   |j	        d                             ddg           |                     t%          |j                  t%          t'          d                              ddg                               |                     |j        d            |                     t                    d           |j	        d                             d           |                     t%          |j                  t%          t'          d                              ddg                               |                     t                    d           |j	        d                             t*                              g d                     |                     t%          |j                  t%          t'          d                              g d                               |                     t                    d           |j	        d                             ddg           |                     t%          |j                  t%          t'          d                              ddg                               |                     |j        d            |                     t                    d
           d S )Nr   z&Shapely required for polygon selection))r   r   r@   )rC   r   r@   )r   r   r@   ))rC   r   r  )r  r   r  )rD   r   r  ))r   r   c)rD   r   r  )rC   rC   r  cat)vdims)
index_colsc                  .                         |           S r~   r   )r   eventss    r   r   zWTestExprSelectionStream.test_selection_expr_stream_polygon_index_cols.<locals>.<lambda>  s    FMM&4I4I r   rD   r   rC   r\  r@   r  )r   r   r  r   r  )r  )r  r   )r  rC   )r   rC   )geometry)r@   r  r  r  )shapelyImportErrorspatialpandasr   r   r  r   rX   r   ry  rb  r  r  r  r  r  r  r   r  r   isinrQ   rR   )rT   r  r  polyr  r  s        @r   -test_selection_expr_stream_polygon_index_colszETestExprSelectionStream.test_selection_expr_stream_polygon_index_cols  s   ^^^^ 	Y 	Y 	Y%%%%%XXXh/W&X&X XX &%	Y 333333333
 	   #DeW===""#I#I#I#IJJJ 	[677;;;k7:KHHHk7:EBBBk7:KHHH+*++++4555!!$**!Q*888+,,U#s,,--	
 	
 	
 	)4000Va((( 	!!$**,*???+,,U#s,,--	
 	
 	
 	Va((( 	!!$**BHH=]=]=]4^4^*___+,,U1122	
 	
 	
 	Va((( 	!!$**!Q*888+,,U#s,,--	
 	
 	
 	)4000Va(((((s    
66066c                    t           g}|D ]s}t           |g dg df                    }t          |          }|                     t	          |j                  d           |                     |j        d         t                     |                     |j	                   |                     |j
                   |j        d                             d           |                     t          |j
                  t          t          d          dk    t          d          dk    z  t          d	          dk    t          d	          d
k    z  z                       |                     |j	        ddd           ud S )NrB   r  rD   r   r  r  r=   r   r>   r  r  r  r<   )r
   r   r  rX   r   ry  rb  r  r  r  r  r   r  r   )rT   r  r  rD  r  s        r   2test_selection_expr_stream_dynamic_map_2D_elementszJTestExprSelectionStream.test_selection_expr_stream_dynamic_map_2D_elements  s}   !(+ 	 	L<<JJJ(?@@AAD'--K S!:;;Q???!!+";A">LLLk.///k8999 %a(..l.CCC [/00s3xx{SXXq[1SXXq[3s88Q;4OPQQ    6**   '	 	r   c           
         t           g}|D ]J}t           |g dg df                    }t          |          }|                     t	          |j                  d           |                     |j        d         t                     |                     |j	                   |                     |j
                   |j        d                             d           |                     t          |j
                  t          t          d          dk    t          d          dk    z                       |                     |j	        dd	i           Ld S r  )r   r   r  rX   r   ry  rb  r  r  r  r  r   r  r   )rT   r  r  rD  r  s        r   2test_selection_expr_stream_dynamic_map_1D_elementszJTestExprSelectionStream.test_selection_expr_stream_dynamic_map_1D_elements  s[   ")+ 	 	L<<JJJ(?@@AAD'--K S!:;;Q???!!+";A">LLLk.///k8999 %a(..l.CCC [/00c#hhkCHHaK011    f   '	 	r   N)r(   r   r   rV   r  r  r  r  r  r  r  r  r  r   r  r  r   r   r   r  r    s            8  6  8  4  @  << < <<< < <@< < <D7) 7) 7)r  4    r   r  );__doc__collectionsr   unittestr   pandasr^  r#   pytestpanel.widgetsr   	holoviewsr  holoviews.core.spacesr   holoviews.core.utilr   holoviews.elementr   r	   r
   r   r   holoviews.element.comparisonr   holoviews.streamsholoviews.utilr   r   holoviews.util.transformr   utilsr   r,   r5   r7   r   r   r   r  markusefixturesr  r  r  r  r  r  r(  rE  rZ  Derivedrw  r   rP   r  r  r  r  r   r   r   <module>r     s    $ # # # # #             # # # # # #     , , , , , , ' ' ' ' ' ' I I I I I I I I I I I I I I ; ; ; ; ; ;     - - - - - - - - ( ( ( ( ( ( , , , , , ,k k k	E 	E 	EXP XP XP XP XP* XP XP XPv       R R R R R+ R R R0f# f# f# f# f#0 f# f# f#R~) ~) ~) ~) ~). ~) ~) ~)B ))+ + *)+$H3 H3 H3 H3 H3( H3 H3 H3X!/ !/ !/ !/ !/) !/ !/ !/H8? 8? 8? 8? 8?. 8? 8? 8?xU U U U U. U U U*, , , , ,' , , ,>+ + + + +. + + +\'C 'C 'C 'C 'C!3 'C 'C 'CT4D 4D 4D 4D 4D 2 4D 4D 4Dn- - - - -' - - -" mmESm!!K% K% K% K% K%* K% K% K%\@
 @
 @
 @
 @
* @
 @
 @
F{ { { { {0 { { { { {r   