
    eo                     x   d dl mZmZ d dlZd dlZd dlZd dl	m
Z
mZ d dlmZmZmZmZmZ d dlmZ d dlmZ d dlmZ d dlmZ 	 d d	lmZmZ n# e$ r dZY nw xY w eedu d
          ZdZ eedd          d         Z  eedd          d         Z! G d de          Z" G d de"          Z# G d de"          Z$dS )    )skipskipIfN)CycleStore)	ErrorBarsPoints
RectanglesTableVSpan)ComparisonTestCase)linear_gradient)link_selections)SelectionXY)	datashade	dynspreadzDatashader not available#ff0000z#000000	         c                   &   e Zd ZdZd Zd Zd#dZed             Zed             Z	d Z
d$d
Zd Zd Zd Zd%dZed             Zed             Zd Z	 d&dZd%dZd Zd%dZd Zd%dZd Zd%dZd Zd%dZd Zd%dZd Z d%dZ!d  Z"d%d!Z#d" Z$dS )'TestLinkSelectionsFc                 T    t          j        g dg dg ddg d          | _        d S )N)r      r   )r   r   r   )r         ?r   )xye)columns)pd	DataFramedataselfs    >lib/python3.11/site-packages/holoviews/tests/test_selection.pysetUpzTestLinkSelections.setUp   sF    L))))++  $OO
 
 
			    c                     t           N)NotImplementedError)r#   elements     r$   element_colorz TestLinkSelections.element_color'   s    !!r&   Nc                     || j         }|                     |                     |          |j                   |                     |j         |           d S r(   )r!   assertEqualr+   unselected_color)r#   base_pointslnk_selr!   s       r$   check_base_points_likez)TestLinkSelections.check_base_points_like*   s^    <9D{++$	
 	
 	
 	)400000r&   c                     |                                  D ]>\  }}t          ||          s%t          |t          j                  r|j        |k    r|c S ?t          d|           )NzNo key with type )items
isinstancehv
DynamicMaptypeKeyError)dhvtypekvs       r$   get_value_with_key_typez*TestLinkSelections.get_value_with_key_type4   sq    GGII 	 	DAq!V$$ q"-0056Vv5E5E3633444r&   c                     |j         |j         }n4| j                            d          d                             d          }|S )Nstyle)groupr   color)selected_coloroptsget)r*   r0   expected_colors      r$   expected_selection_colorz+TestLinkSelections.expected_selection_color=   sF    !-$3NN$\--G-<<Q?CCGLLNr&   c                     |                      |                     |          |                     ||                     |                      |j        |           d S r(   )r-   r+   rF   r!   )r#   overlay_pointsr0   r!   s       r$   check_overlay_points_likez,TestLinkSelections.check_overlay_points_likeE   s_    ~..)).'BB	
 	
 	

 	,d33333r&   Tc                    t          | j                  }|rt          j                            |          }t          j        |d          } ||          }|d         }|                     |t          j                   |	                                \  }}}	}
| 
                    ||           |                     ||| j                   t                              |j        t          j                   j        d         j        j        d         }|                     |t          j        j                   |                    d           |d         	                                \  }}}	}
| 
                    ||           |                     ||| j        j        dd                     |r&|                     |	t-          dg                     d S |                     |	t-          g                      d S )Nr   )show_regionsr.    r   r   r      rN   boundsr   )r   r!   r5   utilDynamicr   instanceassertIsInstanceOverlayvaluesr1   rI   r   r=   _selection_expr_streamsinput_streamsinput_streamstreamsr   eventilocr-   r	   )r#   dynamicrK   pointsr0   linkedcurrent_obj
unselectedselectedregionregion2selectionxys               r$   test_points_selectionz(TestLinkSelections.test_points_selectionM   s   	"" 	-W__V,,F!*<EG G GRj 	k2:6660;0B0B0D0D-
Hfg 	##J888 	&&x$)DDD )@@+RY
 

'a9 	k2:+ABBB...06r
0A0A0C0C-
Hfg 	##J888 	&&x$).:LMMM 	5VZ%?%?@@@@@VZ^^44444r&   c                 2    |                      d           d S )NF)rK   rf   r"   s    r$   !test_points_selection_hide_regionz4TestLinkSelections.test_points_selection_hide_regionv   s    """66666r&   c                 2    |                      d           d S NT)r]   rh   r"   s    r$   test_points_selection_dynamicz0TestLinkSelections.test_points_selection_dynamicy   s    ""4"00000r&   c                 4   t          | j                  }t          | j                  }t          j        dd          } |||z             }|d         }|                     |d         d         j         j        |           |                     |d         d         j         j        || j                   | 	                    | 
                    |d         d                   |j        gt          | j                  z             t                              |j        t           j                   j        d         j        j        d         }|                    d           |d         }|                     |d         d         j         j        |           |                     |d         d         j         j        || j        j        dd	g                    | 	                    | 
                    |d         d                   |j        |j        |j        g           d S )
Nz#aa0000r   )rB   r.   rL   r   r   r   r      r   rO   r   )r   r!   r
   r   rS   r1   IrI   IIr-   r+   rB   lenr   r=   rW   r5   rX   rY   r[   r\   r.   )r#   r^   tabler0   r_   r`   re   s          r$   "test_layout_selection_points_tablez5TestLinkSelections.test_layout_selection_points_table|   s"   	""di  !*$y
 
 
 %((Rj 	##N2%'	
 	
 	
 	&&{1~b'9'@'CW(,		3 	3 	3 	{1~b122#$s49~~5	
 	
 	
 )@@+RY
 

'a9 	...Rj 	##N2%'	
 	
 	
 	&&{1~b'9'@'CW(,	1v(>	@ 	@ 	@ 	{1~b122&(&	
 	
 	
 	
 	
r&   c                 &   t          | j                  }t          | j        dddg          }t          j        d          }||z  }|rt
          j                            |          } ||          }|d         }|                     |j         j	        |           |                     |j        j	        |           | 
                    |j         j        || j                   | 
                    |j        j        || j                   t                              |j        t
          j                   j        d         j        j        d         }|                    d	
           |d         }|                     |j         j	        |           |                     |j        j	        |           | 
                    |j         j        || j        j        ddg                    | 
                    |j        j        || j        j        ddg                    d S )Nr   r   r   )kdimsvdimsr   r.   rL   r   rn   rO   r   )r   r!   r   r   rS   r5   rQ   rR   r1   rp   rI   rq   r   r=   rW   rX   rY   r[   r\   )	r#   r]   r^   errorr0   overlayr_   r`   re   s	            r$   test_overlay_points_errorbarsz0TestLinkSelections.test_overlay_points_errorbars   s   	""$)3sCjAAA!*IFFF5. 	/goog..G!!Rj 	##K$6$8'BBB##K$9$;WEEE 	&&{'9'<gtyQQQ&&{'<'?$)TTT )@@+RY
 

'a9 	...Rj 	##K$6$8'BBB##K$9$;WEEE 	&&{'9'<g(,	1v(>	@ 	@ 	@&&{'<'?(,	1v(>	@ 	@ 	@ 	@ 	@r&   c           
         t          | j                  }|t          t          |                    z   }t	          j        d          } ||          }|d         }|                     |d         d         j         j        |           |                     |d         d         j         j	        || j                   | 
                    |d         d         j        j        t          t          ||j        d                    d                    | 
                    |d         d         j        j	        t          t          ||j        d                    d                    t                              |j        t"          j                   j        d         j        j        d         }|                     |t*                     |                    d	           |d         }|                     |d         d         j         j        |           |                     |d         d         j         j	        || j        j        dd                     | 
                    |d         d         j        j        t          t          ||j        d                    d                    | 
                    |d         d         j        j	        t          t          |j        dd          |j        d                    d                    d S )
Nr   rx   rL   r   r      cmapalpharM   rO   r   r!   r   r   r   rS   r1   rp   rI   rq   r-   RGBunselected_cmapselected_cmapr   r=   rW   r5   rX   rY   rT   r   r[   r\   r#   r^   layoutr0   r_   r`   re   s          r$   test_datashade_selectionz+TestLinkSelections.test_datashade_selection   s   	"")If$5$5666!*IFFFRj 	##KN2$6$=$?III 	&&{1~b'9'@'CWdiXXX 	N2"$&w'>cJJJ 	
 	
 	
 	N2"%&w'<CHHH 	
 	
 	
 )@@+RY
 

'a9 	k;777...Rj 	##KN2$6$=$?III 	&&{1~b'9'@'CW(,	qrr(:	< 	< 	< 	N2"$&w'>cJJJ 	
 	
 	
 	N2"%KO'*?s    		
 	
 	
 	
 	
r&   c           
         t          | j                  }|t          t          |                    z  }t	          j        d          } ||          }|d         }|                     |d         j         j        |           |                     |d         j         j	        || j                   | 
                    |d         j        j        t          t          ||j        d                    d                    | 
                    |d         j        j	        t          t          ||j        d                    d                    t                              |j        t"          j                   j        d         j        j        d         }|                     |t*                     |                    d           |d         }|                     |d         j         j        |           |                     |d         j         j	        || j        j        d	d                     | 
                    |d         j        j        t          t          ||j        d                    d                    | 
                    |d         j        j	        t          t          |j        d	d          |j        d                    d                    d S )
Nr   rx   rL   r}   r~   r   rM   rO   r   r   r   s          r$   #test_datashade_in_overlay_selectionz6TestLinkSelections.test_datashade_in_overlay_selection  s   	"")If$5$5666!*IFFFRj 	##KO$:$<gFFF 	&&{2'='@'49UUU 	O!&w'>cJJJ 	
 	
 	
 	O"&w'<CHHH 	
 	
 	
 )@@+RY
 

'a9 	k;777...Rj 	##KO$:$<gFFF 	&&{2'='@''+y~abb'9	; 	; 	; 	O!&w'>cJJJ 	
 	
 	
 	O"KO'*?s    		
 	
 	
 	
 	
r&   c                    t           j                            | j        j        d d         d          }t          j        t          |g          }t          j        d          } ||          }t          
                    |j        t           j                  j        d         j        j        d         }|                     |t           j        j                   |                    d	           |d
         }|                     |j        j        || j        j        d d                    |                     |j        j        || j        j        dg                    |                    | j        j        dg                    |d
         }|                     |j        j        || j                   |                     |j        j        || j        j        ddg                    d S )Nr   F)index)rZ   r   rx   r   rn   rO   rL   )r5   rZ   Bufferr!   r\   r6   r   r   rS   r   r=   rW   rX   rY   rT   r   r[   r1   rp   rI   rq   send)r#   bufferr^   r0   r_   re   r`   s          r$   test_points_selection_streamingz2TestLinkSelections.test_points_selection_streamingZ  s   ""49>"1"#5U"CCvx888!*IFFF )@@+RY
 

'a9 	k2:+ABBB...Rj 	## '49>"1"+=	
 	
 	

 	&&{'9'<g(,	s(;	= 	= 	= 	DINA3'(((Rj 	## '49	
 	
 	

 	&&{'9'<g(,	1v(>	@ 	@ 	@ 	@ 	@r&   c                 &   t          | j                  }|                    dddd          }|r"|}t          j                            |          }n|}t          j        |||dd          } |||z             }|d         }|                     |d	         d         j         j	        |           | 
                    |d	         d         j         j        || j                   |                     t          |d	         d         j        j	                  d	           |d
         d         j        j	        }|                     |                     |          |j                   |                     |j        |j                   |d
         d         j        j        }|                     |                     |          |                     ||                     |                     ||           |d
         d         j        j	        j        }|                     |j        d d g           t*                              |j        t          j                   j        d	         j        j        d	         }|                     |t6                     |                    d           |d         }|                     |d	         d         j         j	        |           | 
                    |d	         d         j         j        || j        j        |                    |d	         d         j        j	        }|                     |t=          |                     |r.|                     |                     |          t>                     t*                              |j        t          j                  j        d	         j        j        d	         }|                     |t6                     |                    d           |d	         d                                          \  }}}}| 
                    ||| j        j        |                    |                     |t=          |                     |d
         d                                          \  }}} |                     |                     |          |j                   |                     |j        |j                   |r3|                     |                     |j                  tB                     t          |          s/|j"        dk    r$|                     t          |          d
           n"|                     |j        j        d	dg           |                     |                     |           |                     | |                     |                     | j        |#                    |j$        j        |                   j                   t*                              |j        t          j                   j        d	         j        j        d	         }|                     |t6                     |                    d           | 
                    |d	         d         j         j        || j        j        |                    |d	         d         j        j	        }|                     |t=          |	                     |d
         d         j        j        }|                     |j        |#                    |j$        j        |                   j                   |d
         d         j        j	        j        }t          |          s/|j"        dk    r$|                     t          |          d
           n|                     |j        d	dg           t*                              |j        t          j                  j        d	         j        j        d	         }|                     |t6                     |                    d           | 
                    |d	         d         j         j        || j        j        |                    |d	         d         j        j	        }|                     |t=          |
                     |d
         d         j        j	        j        }|r.|                     |                     |          tB                     t          |          s/|j"        dk    r$|                     t          |          d
           n\|j%        dk    r4|j%        dk    r|j"        dk    s|                     |j        d	dg           n|                     |j        ddg           |d
         d         j        j        }|                     |                     |          |                     ||                     |                     |j        |#                    |j$        j        |                   j                   d S )Nr   FrN   )adjoinnormednum_binsz#00ff00r   )selection_modecross_filter_moderK   rB   r.   rL   r   r   r   r   ro   ro   rO   )r   r         @r   inverser   r   r   ro   r   )r   r         @r   	overwrite	intersectr   r   )&r   r!   histr5   rQ   rR   r   rS   r1   rp   rI   rq   r-   rr   Curve	Histogramr+   r.   rF   	NdOverlaylastr   r=   rW   rX   rY   rT   r   r[   r\   r	   box_region_colorrV   hist_region_colorr   pipelinedatasetr   )!r#   r   r   	selected1	selected2	selected3	selected4points_region1points_region2points_region3points_region4hist_region2hist_region3hist_region4rK   r]   r^   r   	hist_origr0   r_   r`   	base_histselection_histregion_histpoints_selectionxyregion_boundshist_selectionxypoints_unsel
points_selpoints_regionpoints_region_polysel_hists!                                    r$   do_crossfilter_points_histogramz2TestLinkSelections.do_crossfilter_points_histogram~  s	   
 	""{{3uUQ{GG 	IW__V,,FFI!*)/%$&
 
 
 $''Rj 	##N2%'	
 	
 	
 	&&{1~b'9'@'CW(,		3 	3 	3 	[^B/5788!<<<  N2&02	y))7+C	
 	
 	
 	888 %Q+58~..)).'BB	
 	
 	
 	333 "!nR(249)D$<888 0GG+RY
 

'a9 	0+>>>   555 Rj 	##N2%'	
 	
 	
 	&&{1~b'9'@'CW'+y~i'@	B 	B 	B $Ar*57
>(B(BCCC 	""=11    .EE+R\
 

'a9 	.<<<n555FQRSnUWFXF_F_FaFaCj-1C 	&&z7DIN9<UVVV
>(B(BCCC ,7q>"+=+D+D+F+F(	;++I668PQQQ888  	VT//0@AACTUUU<   	W%;y%H%HS--q1111 %3x  
 	x(())(G<<	
 	
 	
 	M9--i.?.DY.OPPU	
 	
 	

 0GG+RY
 

'a9 	0+>>>   777 	&&{1~b'9'@'CW(,	y(A	C 	C 	C $Ar*57
>(B(BCCC %Q+58!3!3I4E4J94U!V!V![	
 	
 	

 "!nR(249<   	9W%;y%H%HS--q1111[-3x888 .EE+R\
 

'a9 	.<<<&6777 	&&{1~b'9'@'CW'+y~i'@	B 	B 	B $Ar*57
>(B(BCCC "!nR(249 	"";//1B   <   	;W%;y%H%HS--q1111';66(K77G<RVa<a<a[-3x8888[-Sz::: %Q+58~..)).'BB	
 	
 	
 	!3!3I4E4J94U!V!V![	
 	
 	
 	
 	
r&   c                 h    |                      ddddgddgddgddgdgg dgg ddgg ddg|           d S )Nr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r]   r   r#   r]   s     r$   )test_points_histogram_overwrite_overwritez<TestLinkSelections.test_points_histogram_overwrite_overwriteB  k    ,,&+!fA1a&QPQF(>*+Qb1v 	- 		
 		
 		
 		
 		
r&   c                 2    |                      d           d S rk   )r   r"   s    r$   1test_points_histogram_overwrite_overwrite_dynamiczDTestLinkSelections.test_points_histogram_overwrite_overwrite_dynamicN      66t6DDDDDr&   c                 h    |                      ddddgddgddgddgdgg dgg ddgg ddg|           d S )	Nr   r   r   r   r   r   r   r   r   r   s     r$   )test_points_histogram_intersect_overwritez<TestLinkSelections.test_points_histogram_intersect_overwriteQ  r   r&   c                 2    |                      d           d S rk   )r   r"   s    r$   1test_points_histogram_intersect_overwrite_dynamiczDTestLinkSelections.test_points_histogram_intersect_overwrite_dynamic]  r   r&   c                 h    |                      ddddgddgddgddgdgg dgg ddgg ddg|           d S )	Nunionr   r   r   r   r   r   r   r   r   s     r$   %test_points_histogram_union_overwritez8TestLinkSelections.test_points_histogram_union_overwrite`  sk    ,,"k!fA1a&QPQF(>*+Qb1v 	- 		
 		
 		
 		
 		
r&   c                 2    |                      d           d S rk   )r   r"   s    r$   -test_points_histogram_union_overwrite_dynamicz@TestLinkSelections.test_points_histogram_union_overwrite_dynamicl      2242@@@@@r&   c                 j    |                      ddddgdgdgdgdgdgdgdgddgddgddg|           d S )	Nr   r   r   r   r   r   r   r   r   r   s     r$   )test_points_histogram_overwrite_intersectz<TestLinkSelections.test_points_histogram_overwrite_intersectp  sm    ,,&+!fsqc(>(>*+*+Qq!fAq6 	- 		
 		
 		
 		
 		
r&   c                 2    |                      d           d S rk   )r   r"   s    r$   1test_points_histogram_overwrite_intersect_dynamiczDTestLinkSelections.test_points_histogram_overwrite_intersect_dynamic|  r   r&   c                 X    |                      ddddgdgdgdgg g g g g g g d|           d S )Nr   r   r   r   r   F)r   r   r   r   r   r   r   r   r   r   r   r   r   rK   r]   r   r   s     r$   5test_points_histogram_overwrite_intersect_hide_regionzHTestLinkSelections.test_points_histogram_overwrite_intersect_hide_region  sY    ,,&+!fsqc"2 	- 		
 		
 		
 		
 		
r&   c                 2    |                      d           d S rk   )r   r"   s    r$   =test_points_histogram_overwrite_intersect_hide_region_dynamiczPTestLinkSelections.test_points_histogram_overwrite_intersect_hide_region_dynamic  s    BB4BPPPPPr&   c                 h    |                      ddddgdgg g dgdgddgddgddgddgdg|           d S )Nr   r   r   r   r   r   r   r   r   s     r$   )test_points_histogram_intersect_intersectz<TestLinkSelections.test_points_histogram_intersect_intersect  sk    ,,&+!frR(>(>(.9(.9Qq!fA3 	- 		
 		
 		
 		
 		
r&   c                 2    |                      d           d S rk   )r   r"   s    r$   1test_points_histogram_intersect_intersect_dynamiczDTestLinkSelections.test_points_histogram_intersect_intersect_dynamic  r   r&   c                 r    |                      ddddgdgddgg ddgdgddgddgddgddgg d|	           d S )
Nr   r   r   r   r   )r   r   r   r   r   r   r   r   s     r$   %test_points_histogram_union_intersectz8TestLinkSelections.test_points_histogram_union_intersect  su    ,,"k!f1v(>(>(.9(.9Qq!f999 	- 		
 		
 		
 		
 		
r&   c                 2    |                      d           d S rk   )r   r"   s    r$   -test_points_histogram_union_intersect_dynamicz@TestLinkSelections.test_points_histogram_union_intersect_dynamic  r   r&   c                 Z    |                      dddgg g g dgdgddgddgg g g |           d S )Nr   r   r   r   r   r   r   r   s     r$   'test_points_histogram_inverse_intersectz:TestLinkSelections.test_points_histogram_inverse_intersect  s]    ,,$cR2(>(>(.9(.9"2 	- 		
 		
 		
 		
 		
r&   c                 2    |                      d           d S rk   )r   r"   s    r$   /test_points_histogram_inverse_intersect_dynamiczBTestLinkSelections.test_points_histogram_inverse_intersect_dynamic  s    44T4BBBBBr&   r(   )FT)F)TF)%__name__
__module____qualname____test__r%   r+   r1   staticmethodr=   rF   rI   rf   ri   rl   rt   r{   ds_skipr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rL   r&   r$   r   r      s       H
 
 
" " "1 1 1 1 5 5 \5   \4 4 4'5 '5 '5 '5R7 7 71 1 14
 4
 4
l$@ $@ $@ $@L >
 >
 W>
@ >
 >
 W>
@"@ "@ "@P 6;	A
 A
 A
 A
H

 

 

 

E E E

 

 

 

E E E

 

 

 

A A A

 

 

 

E E E

 

 

 

Q Q Q

 

 

 

E E E

 

 

 

A A A

 

 

 

C C C C Cr&   r   c                   0     e Zd ZdZ fdZd ZddZ xZS )TestLinkSelectionsPlotlyTc                     dd l }t                                                       t          j        | _        t          j        d           d S )Nr   plotly)holoviews.plotting.plotlysuperr%   r   current_backend_backendset_current_backendr#   	holoviews	__class__s     r$   r%   zTestLinkSelectionsPlotly.setUp  sA    ((((-!(+++++r&   c                 (    | j         t          _        d S r(   r   r   r   r"   s    r$   tearDownz!TestLinkSelectionsPlotly.tearDown       $r&   Nc                    t          |t                    r&|j                            d          j        d         }ngt          |t
          t          f          r&|j                            d          j        d         }n%|j                            d          j        d         }t          |t          t          f          r|S t          |          S )Nr?   fill
line_colorrA   )
r4   r
   rC   rD   kwargsr	   r   r   strlist)r#   r*   
color_proprA   s       r$   r+   z&TestLinkSelectionsPlotly.element_color  s    gu%% 	>L$$W--4V<EE*e!455 	>L$$W--4\BEEL$$W--4W=EeeS\** 	L;;r&   r(   )r   r   r   r   r%   r   r+   __classcell__r   s   @r$   r   r     s`        H, , , , ,. . .       r&   r   c                        e Zd ZdZ fdZd Zd Z ed          d             Z ed          d             Z	 ed          d	             Z
d
 Z xZS )TestLinkSelectionsBokehTc                     dd l }t                                                       t          j        | _        t          j        d           d S )Nr   bokeh)holoviews.plotting.bokehr   r%   r   r   r   r   r   s     r$   r%   zTestLinkSelectionsBokeh.setUp  sA    ''''-!'*****r&   c                 (    | j         t          _        d S r(   r   r"   s    r$   r   z TestLinkSelectionsBokeh.tearDown  r   r&   c                     |j                             d          j        d         }t          |t                    r|S t          |          S )Nr?   rA   )rC   rD   r   r4   r   r   )r#   r*   rA   s      r$   r+   z%TestLinkSelectionsBokeh.element_color  sB      ))09eS!! 	L;;r&   z&Coloring Bokeh table not yet supportedc                     d S r(   rL   r"   s    r$   rt   z:TestLinkSelectionsBokeh.test_layout_selection_points_table      r&   z+Bokeh ErrorBars selection not yet supportedc                     d S r(   rL   r"   s    r$   r{   z5TestLinkSelectionsBokeh.test_overlay_points_errorbars  r  r&   c                     d S r(   rL   r"   s    r$   %test_overlay_points_errorbars_dynamicz=TestLinkSelectionsBokeh.test_overlay_points_errorbars_dynamic  r  r&   c                    t          j        ddgddgddgd          t          j                            ddg          }fd}t
          j                                        } |t          j        t          j	        ||                              } |t          j        t          j	        ||                              }t          j
        d                              ||z              dg|_        d S )	Nr   r   AB)r   r   cat)optionsc                 j    t          j        d                             |                              S )Nr  )r5   Scatterisin)checkdfs    r$   funcz7TestLinkSelectionsBokeh.test_empty_layout.<locals>.func   s(    :bE!6!67888r&   r  )r   r    pnwidgetsCheckBoxGroupr5   r   rS   r6   bindrendererget_plotvalue)r#   
checkboxesr  lsabr  s         @r$   test_empty_layoutz)TestLinkSelectionsBokeh.test_empty_layout  s    \AaVS#JGGHHZ--sCj-AA
	9 	9 	9 	9 	9 ((**Br}RWT:667788Br}RWT:667788
G%%a!e,,,5
r&   )r   r   r   r   r%   r   r+   r   rt   r{   r  r&  r  r  s   @r$   r  r    s        H+ + + + +. . .   
T
233  43 
T
788  98 
T
788  98! ! ! ! ! ! !r&   r  )%unittestr   r   pandasr   panelr  r   r5   holoviews.core.optionsr   r   holoviews.elementr   r   r	   r
   r   holoviews.element.comparisonr   holoviews.plotting.utilr   holoviews.selectionr   holoviews.streamsr   holoviews.operation.datashaderr   r   ImportErrorr   r.   r   r   r   r   r  rL   r&   r$   <module>r2     s    ! ! ! ! ! ! ! !             / / / / / / / / I I I I I I I I I I I I I I ; ; ; ; ; ; 3 3 3 3 3 3 / / / / / / ) ) ) ) ) )CCCCCCCCC   III &d"$>
?
?  "?#3YBB1E #O$4iCCAF _
C _
C _
C _
C _
C+ _
C _
C _
CF    1   8/! /! /! /! /!0 /! /! /! /! /!s   A AA