
    eF                         d dl Zd dlZd dlmZmZmZmZm	Z	 d dl
mZmZmZmZ d dlmZmZmZmZmZmZmZmZmZ d dlmZ d dlmZmZ d dlmZ dd	l m!Z! d
dl"m#Z#m$Z$  G d de!e#          Z% G d de#          Z&dS )    N)FactorRangeFixedTicker	HoverToolRange1dSpan)
DynamicMapHoloMap	NdOverlayOverlay)	BarsBoxCurve	ErrorBarsHLinePointsScatterTextVLine)property_to_dict)StreamTap)Dynamic   )LoggingComparisonTestCase   )TestBokehPlotbokeh_rendererc                       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 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 ) TestOverlayPlotc           	      J   t          t          d                    t          t          d                    z                      dd          }t          j        |          }|                     t          d |                    |i           D                                  d S )N
   r   F)apply_rangesc              3   >   K   | ]}t          j        |          V  d S )N)npisnan).0es     Olib/python3.11/site-packages/holoviews/tests/plotting/bokeh/test_overlayplot.py	<genexpr>zETestOverlayPlot.test_overlay_apply_ranges_disabled.<locals>.<genexpr>   s*      OOABHQKKOOOOOO    )r   rangeoptsr   get_plot
assertTrueallget_extentsselfoverlayplots      r(   "test_overlay_apply_ranges_disabledz2TestOverlayPlot.test_overlay_apply_ranges_disabled   s    r##eE"II&6&66<<WSX<YY&w//OO1A1A'21N1NOOOOOPPPPPr*   c                    t          d t          dd          D                       }t          j        |          }|                    d           |j                                        \  }}|                     |j        d         j	        d         t          j        d                     |                     |j        d         j	        d         t          j        d          dz             d S )	Nc           	          i | ]M}|t          t          j        |          d           t          t          j        |          dz  d          z  NS )Alabel   Br   r$   aranger&   is     r(   
<dictcomp>z?TestOverlayPlot.test_overlay_update_sources.<locals>.<dictcomp>!   s`     0 0 0 E")A,,c:::!")A,,q.<<<= 0 0 0r*   r!      )   sourceyrC   r;   )r	   r+   r   r-   updatesubplotsvaluesassertEqualhandlesdatar$   r>   )r2   hmapr4   subplot1subplot2s        r(   test_overlay_update_sourcesz+TestOverlayPlot.test_overlay_update_sources    s     0 0!&r20 0 0 1 1 &t,,E!]1133()(38=ry}}MMM)(38=ry}}QOOOOOr*   c                 H   g dg dg dd}g dg dg dd}t          |ddd	g                              d	d
          }t          |ddd	g                              d	d
          }t          j        ||z            }|j                                        \  }}|j        d         }|j        d         }	|                     |j        d           |                     |	j        d           |                     |j	        d           |                     |	j	        d           d S )N)r   r   r;   )r   2   d   )XYZ)r         )r   r!      )rQ   rQ      rS   rT   rU   T)color	framewisecolor_color_mapperr   rY   )
r   r,   r   r-   rG   rH   rJ   rI   lowhigh)
r2   absasbr4   sa_plotsb_plot
sa_cmapper
sb_cmappers
             r(   test_overlay_framewise_normz+TestOverlayPlot.test_overlay_framewise_norm*   sD   
 
 
 

 Qc3Z((--C4-HHQc3Z((--C4-HH&rBw//=//11_%9:
_%9:
++++++#...#.....r*   c                 Z   t          d t          dd          D                       }t          d t          dd          D                       }t          j        ||z            }|j                                        \  }}|                     |j        d         j                   | 	                    |j        d         j                   |
                    d           | 	                    |j        d         j                   |                     |j        d         j                   d S )Nc                 V    i | ]&}|t          t          j        |          d           'S )r8   r9   r=   r?   s     r(   rA   z?TestOverlayPlot.test_overlay_update_visible.<locals>.<dictcomp>A   s/    OOOa51S999OOOr*   r   r   c                 V    i | ]&}|t          t          j        |          d           'S )r<   r9   r=   r?   s     r(   rA   z?TestOverlayPlot.test_overlay_update_visible.<locals>.<dictcomp>B   s/    PPPqE")A,,c:::PPPr*   rW   glyph_renderer)rV   )r	   r+   r   r-   rG   rH   r.   rJ   visibleassertFalserF   )r2   rL   hmap2r4   rM   rN   s         r(   test_overlay_update_visiblez+TestOverlayPlot.test_overlay_update_visible@   s
   OO5A;;OOOPPPPE!QKKPPPQQ&tEz22!]1133(()9:BCCC)*:;CDDDD)*:;CDDD()9:BCCCCCr*   c                 b   dg}t          |          }t          t          j                            dd                                        |g          t          t          j                            dd                    z  }t          j        |          }|j	        d         }| 
                    t          |j        d         j                  d           |                     |j        d	         |j        d         j                   | 
                    |j        d         j        |           d S )
N)indexz$index)tooltipsr!   r;   tools)r   Ihoverr   rk   )r   r   r$   randomrandr,   r   r   r-   rG   rI   lenrJ   	renderersassertInrr   )r2   rr   rv   r3   r4   
curve_plots         r(   -test_hover_tool_instance_renderer_associationz=TestOverlayPlot.test_hover_tool_instance_renderer_associationK   s    '(8,,,	r!,,--22%2AAF29>>Z\]^K_K_D`D``&w//]>2
Z/8BCCQGGGj()9:J<Nw<W<abbbg.7BBBBBr*   c                 >   t          t          t          d                    t          t          d                    ddg          }t          t          t          d                    t          t          d                    ddg          }||z                      dd	g
          }t	          j        |          }|                     t          |j        d	         j	                  d           |                     |j        d	         j
        g d           d S )Nr;   r   r   r   TestkdimsrV   rW   r   rv   rs   ))r   z@{Test})xz@{x})rE   z@{y})r
   r   r+   r,   r   r-   rI   ry   rJ   rz   rr   )r2   overlay1overlay2nested_overlayr4   s        r(   (test_hover_tool_nested_overlay_renderersz8TestOverlayPlot.test_hover_tool_nested_overlay_renderers[   s    uQxxU588__EEfXVVVuQxxU588__EEfXVVV"X-33GG93MM&~66T\'2<==qAAAg.7LLL	N 	N 	N 	N 	Nr*   c                 
   t          t          d                    t                      z  }t          j        |          }|                     t          |j                  d           | j        	                    dd           d S )Nr!   r   WARNINGz,is empty and will be skipped during plotting)
r   r+   r
   r   r-   rI   ry   rG   log_handlerassertContainsr1   s      r(   test_overlay_empty_layersz)TestOverlayPlot.test_overlay_empty_layersd   sn    b		""Y[[0&w//T]++Q///''	3abbbbbr*   c                    t          t          d                    t          t          d                    z                      d          }t          j        |          j        }|                     |j        d           d S )Nr!   F)
show_framer   )r   r+   r,   r   r-   staterI   outline_line_alphar1   s      r(    test_overlay_show_frame_disabledz0TestOverlayPlot.test_overlay_show_frame_disabledj   sk    r##eE"II&6&66<<<NN&w//50!44444r*   c                    t          t          d                    t          t          d                    z                      d           }t          j        |          j        }|                     |j        d         j                   d S )Nr!   )xaxisr   )	r   r+   r,   r   r-   r   rm   r   rl   r1   s      r(   test_overlay_no_xaxisz%TestOverlayPlot.test_overlay_no_xaxiso   o    r##eE"II&6&66<<4<HH&w//5A./////r*   c                    t          t          d                    t          t          d                    z                      d           }t          j        |          j        }|                     |j        d         j                   d S )Nr!   )yaxisr   )	r   r+   r,   r   r-   r   rm   r   rl   r1   s      r(   test_overlay_no_yaxisz%TestOverlayPlot.test_overlay_no_yaxist   r   r*   c                    t          t          d                    t          t          d                    z                      d          }t          j        |          j        }|                     |j        d         j        d           d S Nr!   zcustom x-label)xlabelr   	r   r+   r,   r   r-   r   rI   r   
axis_labelr1   s      r(   test_overlay_xlabel_overridez,TestOverlayPlot.test_overlay_xlabel_overridey   s    r##eE"II&6&66<<DT<UU&w//5A13CDDDDDr*   c                    t          t          d                    t          t          d                    z                      d          }t          j        |          j        }|                     |j        d         j        d           d S Nr!   zcustom y-label)ylabelr   	r   r+   r,   r   r-   r   rI   r   r   r1   s      r(   test_overlay_ylabel_overridez,TestOverlayPlot.test_overlay_ylabel_override~   r   r*   c                    t          t          d                                        d          t          t          d                    z  }t          j        |          j        }|                     |j        d         j        d           d S r   r   r1   s      r(   'test_overlay_xlabel_override_propagatedz7TestOverlayPlot.test_overlay_xlabel_override_propagated   t    r##((0@(AAE%PR))DTDTT&w//5A13CDDDDDr*   c                    t          t          d                                        d          t          t          d                    z  }t          j        |          j        }|                     |j        d         j        d           d S r   r   r1   s      r(   'test_overlay_ylabel_override_propagatedz7TestOverlayPlot.test_overlay_ylabel_override_propagated   r   r*   c                 8   t          t          d                    t          t          d                    z                      d          }t          j        |          j        }|                     |j        d         j        t          j
        dz             d S )Nr!   Z   )	xrotationr   r;   )r   r+   r,   r   r-   r   rI   r   major_label_orientationr$   pir1   s      r(   test_overlay_xrotationz&TestOverlayPlot.test_overlay_xrotation   w    r##eE"II&6&66<<r<JJ&w//5A>aHHHHHr*   c                 8   t          t          d                    t          t          d                    z                      d          }t          j        |          j        }|                     |j        d         j        t          j
        dz             d S )Nr!   r   )	yrotationr   r;   )r   r+   r,   r   r-   r   rI   r   r   r$   r   r1   s      r(   test_overlay_yrotationz&TestOverlayPlot.test_overlay_yrotation   r   r*   c                    t          t          d                    t          t          d                    z                      g d          }t          j        |          j        }|                     |j        d         j        t                     | 
                    |j        d         j        j        g d           d S )Nr!   r   rW   r!   )xticksr   )r   r+   r,   r   r-   r   assertIsInstancer   tickerr   rI   ticksr1   s      r(   test_overlay_xticks_listz(TestOverlayPlot.test_overlay_xticks_list       r##eE"II&6&66<<JJJ<OO&w//5djm2K@@@A-3ZZZ@@@@@r*   c                    t          t          d                    t          t          d                    z                      g d          }t          j        |          j        }|                     |j        d         j        t                     | 
                    |j        d         j        j        g d           d S )Nr!   r   )yticksr   )r   r+   r,   r   r-   r   r   r   r   r   rI   r   r1   s      r(   test_overlay_yticks_listz(TestOverlayPlot.test_overlay_yticks_list   r   r*   c                    t          t          g           t          g           z                      d          t          g           t          g           z                      d          d          }t          j        |          }|                     |j        j        j        d           |	                    d           |                     |j        j        j        d           d S Nr8   )titler<   r   r   
r	   r   r,   r   r-   rI   r   r   textrF   r2   rL   r4   s      r(   test_overlay_update_plot_optsz-TestOverlayPlot.test_overlay_update_plot_opts   s    rU2YY&,,3,77rU2YY&,,3,779 9
 
 &t,,).444D).44444r*   c                    t          t          g                               d          t          g           z  t          g                               d          t          g           z  d          }t          j        |          }|                     |j        j        j        d           |	                    d           |                     |j        j        j        d           d S r   r   r   s      r(   'test_overlay_update_plot_opts_inheritedz7TestOverlayPlot.test_overlay_update_plot_opts_inherited   s    rc**U2YY6rc**U2YY69 9
 
 &t,,).444D).44444r*   c                 Z   t          d t          d          D                       }t          d |D                       }t          ddd          }t	          j        ||z  |z            }|j        d         }|j        d         }|                     |t                     g d	}| 	                    |j
        g d	           |                     |t                     |j        d
         }t          |j        d         j        d         |          D ]\  }	}
| 	                    |
|	           d S )Nc           	          i | ]E}|t          t          d |z             gdz  t          j                            d          f          FS A   r!   r   chrr$   rw   randnr?   s     r(   rA   zZTestOverlayPlot.test_points_errorbars_text_ndoverlay_categorical_xaxis.<locals>.<dictcomp>   U     0 0 0!" RTBryr7J7J'K L L 0 0 0r*   rW   c                     g | ]C}|d          d         t          j        |d                   t          j        |d                   fDS r   r   rE   r$   meanstdr&   els     r(   
<listcomp>zZTestOverlayPlot.test_points_errorbars_text_ndoverlay_categorical_xaxis.<locals>.<listcomp>   Q     . . .! sGAJ3(8(8"&C//J . . .r*   Cr   r   x_rangey_ranger8   r<   r   DE)r   ru   rD   base)r
   r+   r   r   r   r-   rJ   r   r   rI   factorsr   rG   ziprK   )r2   r3   errorr   r4   r   r   r   
error_plotxsfactors              r(   6test_points_errorbars_text_ndoverlay_categorical_xaxiszFTestOverlayPlot.test_points_errorbars_text_ndoverlay_categorical_xaxis   sS    0 0&+Ahh0 0 0 1 1 . .%,. . . / /CF##&wu}T'9::,y),y)g{333+++*C*C*CDDDgw///]#56
j0:?GQQ 	) 	)JBVR((((	) 	)r*   c                 ,   t          g dddg          }t          j        |t          d          z            }|j        d         }t          |t                    sJ |j        g dk    sJ t          |j        j	        d         t                    sJ d S )	N))r8   r_   r   )r<   r`   r;   )r8   r`   r   )r<   r_   rV   UpperLowerr   r;   r   ))r8   r_   )r8   r`   )r<   r_   )r<   r`   )r   r   r-   r   rJ   
isinstancer   r   r   rz   r   )r2   barsr4   r   s       r(   "test_overlay_categorical_two_levelz2TestOverlayPlot.test_overlay_categorical_two_level   s    PPP"G,. . . &teAhh77,y)';/////"R"R"RRRRR$*.r2D9999999r*   c                    t          d t          d          D                       }t          d |D                                           d          }t	          ddd          }t          j        ||z  |z            }|j        d	         }|j        d
         }|                     |t                     |                     |t                     |                     |j        g d           d S )Nc           	          i | ]E}|t          t          d |z             gdz  t          j                            d          f          FS r   r   r?   s     r(   rA   zfTestOverlayPlot.test_points_errorbars_text_ndoverlay_categorical_xaxis_invert_axes.<locals>.<dictcomp>   r   r*   rW   c                     g | ]C}|d          d         t          j        |d                   t          j        |d                   fDS r   r   r   s     r(   r   zfTestOverlayPlot.test_points_errorbars_text_ndoverlay_categorical_xaxis_invert_axes.<locals>.<listcomp>   r   r*   T)invert_axesr   r   r   r   r   r   )r
   r+   r   r,   r   r   r-   rJ   r   r   r   rI   r   )r2   r3   r   r   r4   r   r   s          r(   Btest_points_errorbars_text_ndoverlay_categorical_xaxis_invert_axeszRTestOverlayPlot.test_points_errorbars_text_ndoverlay_categorical_xaxis_invert_axes   s    0 0&+Ahh0 0 0 1 1 . .%,. . . / //3tt/E/E 	CF##&wu}T'9::,y),y)gw///g{333*C*C*CDDDDDr*   c                 (   t          g           j                            d          t          g           j                            d          z  }t	          j        |          }|                    |i           }|                     |d           d S )N)r!   r   )rX   rE   )r   r   r!   rX   )r   redimr+   r   r   r-   r0   rI   )r2   r3   r4   extentss       r(   !test_overlay_empty_element_extentz1TestOverlayPlot.test_overlay_empty_element_extent   s    ))/'')'44vbzz7G7M7MPY7M7Z7ZZ&w//""7B//"455555r*   c                    d }t          |dg          j                            d          }t          j        |          }|                     t          |j                  d           |                    d           |                     t          |j                  d           t          |j        
                                          D ] \  }}|                     |j        |           !d S )	Nc                 N    t          d t          |           D                       S )Nc                 X    i | ]'}|t          t          j        d           |z             (S )r!   r=   r?   s     r(   rA   zMTestOverlayPlot.test_dynamic_subplot_creation.<locals>.cb.<locals>.<dictcomp>   s.    JJJAary}}Q!7!7JJJr*   r
   r+   rS   s    r(   cbz9TestOverlayPlot.test_dynamic_subplot_creation.<locals>.cb   s%    JJqJJJKKKr*   rS   r   )r   r!   r   r   r   r   )r   r   r+   r   r-   rI   ry   rG   rF   	enumeraterH   cyclic_index)r2   r  dmapr4   r@   subplots         r(   test_dynamic_subplot_creationz-TestOverlayPlot.test_dynamic_subplot_creation   s    	L 	L 	L"SE***0666AA&t,,T]++Q///DT]++Q///#DM$8$8$:$:;; 	6 	6JAwW115555	6 	6r*   c                    d t          j        ddd          D             }t          |g d          j                            d          }t          |          |z  t          d	          z  }t          j        |          }|j	        d
         }|j	        d         }| 
                    |j        d           | 
                    |j        d           | 
                    |j        d           | 
                    |j        d           d S )Nc                 b    g | ],}d |z  t          j        d |z            |dz   dz  |dz   dz  f-S )g?r   g      @g      @)r$   sinr?   s     r(   r   z>TestOverlayPlot.test_complex_range_example.<locals>.<listcomp>   sA    ^^^3q5"&Q--!A#rAaC8<^^^r*   r   rR      )rE   yerrnegyerrpos)vdims)r   Nr   rV   r   r   g      $@g;3@)r$   linspacer   r   r+   r   r   r   r-   rJ   rI   startend)r2   errorsr3   r4   r   r   s         r(   test_complex_range_examplez*TestOverlayPlot.test_complex_range_example   s    ^^bkRSUXZ\F]F]^^^6)D)D)DEEEKQQT]Q^^--&(5883&w//,y),y)***d+++***&899999r*   c                    t          t          j        d          d          t          t          j        d          dz  dz   d                              d          z  }t	          j        |          }|j                                        \  }}|                     |j	        d         j
                   |                     |j	        d         j
                   d S )	NrW   increaser9   r   decreaseT)mutedrk   )r   r$   r>   r,   r   r-   rG   rH   rm   rJ   r  r.   )r2   r3   r4   unmutedr  s        r(   test_overlay_muted_rendererz+TestOverlayPlot.test_overlay_muted_renderer   s    1j999E29Q<<PR?STCT]g<h<h<h<m<mtx<m<y<yy&w//--//)9:@AAA&67=>>>>>r*   c                 >   t                      }d }t          t          j        ||j        j                            }t          j        |          }|                    d           |j	        
                                \  }}|j        d         j        dk    sJ d S )Nc                 H    t          g d          t          | pd          z  S Nr   r;   r   r   r   r   r   s    r(   testzDTestOverlayPlot.test_overlay_params_bind_linked_stream.<locals>.test  #    ##eAFmm33r*   r   r   glyph)r   r   pnbindparamr   r   r-   eventrG   rH   rJ   locationr2   tapr  r  r4   _
vline_plots          r(   &test_overlay_params_bind_linked_streamz6TestOverlayPlot.test_overlay_params_bind_linked_stream  s    ee	4 	4 	4"'$#)+66677&t,,		A	,,..:!'*3q888888r*   c                    t                      }d }t          |d|j        j        i          }t	          j        |          }|                    d           |j                                        \  }}|j	        d         j
        dk    sJ d S )Nc                 H    t          g d          t          | pd          z  S r  r  r   s    r(   r  zDTestOverlayPlot.test_overlay_params_dict_linked_stream.<locals>.test  r   r*   r   streamsr   r   r!  )r   r   r$  r   r   r-   r%  rG   rH   rJ   r&  r'  s          r(   &test_overlay_params_dict_linked_streamz6TestOverlayPlot.test_overlay_params_dict_linked_stream  s    ee	4 	4 	4$cik(:;;;&t,,		A	,,..:!'*3q888888r*   c                     t          ddg          }t          ddg          }t          ||d                                           d S )Nr   r   r!   rX   )r_   r`   )r   r   rH   )r2   c1c2s      r(   test_overlay_iterablez%TestOverlayPlot.test_overlay_iterable  sH    Aq6]]B8__br""))++,,,,,r*   N)!__name__
__module____qualname__r5   rO   rg   ro   r}   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r+  r0  r4   r*   r(   r   r      s       Q Q Q
P P P/ / /,	D 	D 	DC C C N N Nc c c5 5 5
0 0 0
0 0 0
E E E
E E E
E E E
E E E
I I I
I I I
A A AA A A5 5 55 5 5) ) )": : :E E E6 6 6	6 	6 	6
: 
: 
:? ? ?	9 	9 	9	9 	9 	9- - - - -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 )
TestLegendsc                    t          t          d          d          t          t          d          d          z  }t          j        |          }d |j        j        d         j        D             }|                     |ddg           d S )Nr!   r8   r9   r<   c                 (    g | ]}|j         d          S valuer9   r&   ls     r(   r   z3TestLegends.test_overlay_legend.<locals>.<listcomp>%      NNNa)NNNr*   r   )r   r+   r   r-   r   legenditemsrI   r2   r3   r4   legend_labelss       r(   test_overlay_legendzTestLegends.test_overlay_legend"  s    b		---eBiis0K0K0KK&w//NN4:3DQ3G3MNNNc
33333r*   c                 H   t          t          d          d          t          t          d          d          z                      ddd          }t          j        |          }d	 |j        j        d
         j        D             }|                     |ddg           d S )Nr!   r8   r9   r<   zA CurvezB Curve)r8   r<   )rE  c                 (    g | ]}|j         d          S r=  r9   r?  s     r(   r   z?TestLegends.test_overlay_legend_with_labels.<locals>.<listcomp>,  rA  r*   r   )	r   r+   r,   r   r-   r   rB  rC  rI   rD  s       r(   test_overlay_legend_with_labelsz+TestLegends.test_overlay_legend_with_labels(  s    r#...uRyy1L1L1LLRR )	:: S < <&w//NN4:3DQ3G3MNNNI(>?????r*   c                 <   t          d t          d          D                       }t          j        |          }d |j        j        d         j        D             }|                     |ddiddig           |                    d           d	 |j        j        d         j        D             }|                     |ddidd
ig           |                    d           d |j        j        d         j        D             }|                     |ddiddig           d S )Nc           
          i | ]=}|t          g d t          d|z   dz                       t          g d d          z  >S r  r   r;   r9   r<   r   r   r?   s     r(   rA   z;TestLegends.test_holomap_legend_updates.<locals>.<dictcomp>0  `     + + + 5#bd1f++>>>yyyX[A\A\A\\ + + +r*   r   c                 6    g | ]}t          |j                  S r8  r   r:   r&   items     r(   r   z;TestLegends.test_holomap_legend_updates.<locals>.<listcomp>3  #    ]]]$)$*55]]]r*   r   r>  r   r<   r   c                 6    g | ]}t          |j                  S r8  rP  rQ  s     r(   r   z;TestLegends.test_holomap_legend_updates.<locals>.<listcomp>6  rS  r*   r   r;   c                 6    g | ]}t          |j                  S r8  rP  rQ  s     r(   r   z;TestLegends.test_holomap_legend_updates.<locals>.<listcomp>9  rS  r*   r   	r	   r+   r   r-   r   rB  rC  rI   rF   r2   rL   r4   rE  s       r(   test_holomap_legend_updatesz'TestLegends.test_holomap_legend_updates/  s9    + +!&q+ + + , ,&t,,]]$*BSTUBVB\]]]'3'3(HIIID]]$*BSTUBVB\]]]'3'3(HIIID]]$*BSTUBVB\]]]'3'3(HIIIIIr*   c                 >   t          d t          dd          D                       }t          j        |          }d |j        j        d         j        D             }|                     |ddig           |                    d           d	 |j        j        d         j        D             }|                     |ddidd
ig           |                    d           d |j        j        d         j        D             }|                     |ddidd
iddig           d S )Nc           	      \    i | ])}|t          d  t          |          D                       *S )c           	      V    g | ]&}t          d d|gt          d|z                       'S r   r;   r   r9   rM  r&   js     r(   r   zVTestLegends.test_holomap_legend_updates_varying_lengths.<locals>.<dictcomp>.<listcomp>=  5    #X#X#X!E1a)3r!t99$E$E$E#X#X#Xr*   r   r+   r?   s     r(   rA   zKTestLegends.test_holomap_legend_updates_varying_lengths.<locals>.<dictcomp>=  9    ooo^_7#X#XuUVxx#X#X#XYYooor*   r   rV   c                 6    g | ]}t          |j                  S r8  rP  rQ  s     r(   r   zKTestLegends.test_holomap_legend_updates_varying_lengths.<locals>.<listcomp>?  rS  r*   r   r>  r8   rU  c                 6    g | ]}t          |j                  S r8  rP  rQ  s     r(   r   zKTestLegends.test_holomap_legend_updates_varying_lengths.<locals>.<listcomp>B  rS  r*   r<   r  c                 6    g | ]}t          |j                  S r8  rP  rQ  s     r(   r   zKTestLegends.test_holomap_legend_updates_varying_lengths.<locals>.<listcomp>E  rS  r*   r   rW  rX  s       r(   +test_holomap_legend_updates_varying_lengthsz7TestLegends.test_holomap_legend_updates_varying_lengths<  s2   oochijlmcncnooopp&t,,]]$*BSTUBVB\]]]'3(8999D]]$*BSTUBVB\]]]'3'3(HIIID]]$*BSTUBVB\]]]'3'3'SV(XYYYYYr*   c                 Z   t          d t          d          D                       }t          |          }t          j        |          }d |j        j        d         j        D             }|                     |ddiddig           |	                    d           d	 |j        j        d         j        D             }|                     |ddidd
ig           |	                    d           d |j        j        d         j        D             }|                     |ddiddig           d S )Nc           
          i | ]=}|t          g d t          d|z   dz                       t          g d d          z  >S rL  rM  r?   s     r(   rA   z>TestLegends.test_dynamicmap_legend_updates.<locals>.<dictcomp>I  rN  r*   r   c                 6    g | ]}t          |j                  S r8  rP  rQ  s     r(   r   z>TestLegends.test_dynamicmap_legend_updates.<locals>.<listcomp>M  rS  r*   r   r>  r   r<   r   c                 6    g | ]}t          |j                  S r8  rP  rQ  s     r(   r   z>TestLegends.test_dynamicmap_legend_updates.<locals>.<listcomp>P  rS  r*   r   rU  c                 6    g | ]}t          |j                  S r8  rP  rQ  s     r(   r   z>TestLegends.test_dynamicmap_legend_updates.<locals>.<listcomp>S  rS  r*   r   
r	   r+   r   r   r-   r   rB  rC  rI   rF   r2   rL   r  r4   rE  s        r(   test_dynamicmap_legend_updatesz*TestLegends.test_dynamicmap_legend_updatesH  sD    + +!&q+ + + , ,t}}&t,,]]$*BSTUBVB\]]]'3'3(HIIID]]$*BSTUBVB\]]]'3'3(HIIID]]$*BSTUBVB\]]]'3'3(HIIIIIr*   c                 \   t          d t          dd          D                       }t          |          }t          j        |          }d |j        j        d         j        D             }|                     |ddig           |	                    d           d	 |j        j        d         j        D             }|                     |ddidd
ig           |	                    d           d |j        j        d         j        D             }|                     |ddidd
iddig           d S )Nc           	      \    i | ])}|t          d  t          |          D                       *S )c           	      V    g | ]&}t          d d|gt          d|z                       'S r]  rM  r^  s     r(   r   z[TestLegends.test_dynamicmap_legend_updates_add_dynamic_plots.<locals>.<dictcomp>.<listcomp>W  r`  r*   ra  r?   s     r(   rA   zPTestLegends.test_dynamicmap_legend_updates_add_dynamic_plots.<locals>.<dictcomp>W  rb  r*   r   rV   c                 6    g | ]}t          |j                  S r8  rP  rQ  s     r(   r   zPTestLegends.test_dynamicmap_legend_updates_add_dynamic_plots.<locals>.<listcomp>Z  rS  r*   r   r>  r8   rU  c                 6    g | ]}t          |j                  S r8  rP  rQ  s     r(   r   zPTestLegends.test_dynamicmap_legend_updates_add_dynamic_plots.<locals>.<listcomp>]  rS  r*   r<   r  c                 6    g | ]}t          |j                  S r8  rP  rQ  s     r(   r   zPTestLegends.test_dynamicmap_legend_updates_add_dynamic_plots.<locals>.<listcomp>`  rS  r*   r   rl  rm  s        r(   0test_dynamicmap_legend_updates_add_dynamic_plotsz<TestLegends.test_dynamicmap_legend_updates_add_dynamic_plotsV  s=   oochijlmcncnoooppt}}&t,,]]$*BSTUBVB\]]]'3(8999D]]$*BSTUBVB\]]]'3'3(HIIID]]$*BSTUBVB\]]]'3'3'SV(XYYYYYr*   c                 .    t          j        dd                      }d }t          ||g          }t          j        |          }|                    d           |                     t          d |j        j	        D                       d           d S )Nselectedr   rC  c                 N    t          d t          |           D                       S )Nc           
      P    i | ]#}|t          t          d d|g          g          $S )r   r;   )r   r   r^  s     r(   rA   zbTestLegends.test_dynamicmap_ndoverlay_shrink_number_of_items.<locals>.callback.<locals>.<dictcomp>f  s3    SSSa%Aq	*:*:);!<!<SSSr*   r   rx  s    r(   callbackzNTestLegends.test_dynamicmap_ndoverlay_shrink_number_of_items.<locals>.callbacke  s%    SSeEllSSSTTTr*   r.  r;   c                      g | ]}|j         	|S r8  )rl   )r&   rs     r(   r   zPTestLegends.test_dynamicmap_ndoverlay_shrink_number_of_items.<locals>.<listcomp>j  s    KKKAKaKKKr*   )
r   definer   r   r-   r%  rI   ry   r   rz   )r2   rw  r{  r  r4   s        r(   0test_dynamicmap_ndoverlay_shrink_number_of_itemsz<TestLegends.test_dynamicmap_ndoverlay_shrink_number_of_itemsc  s    56=155577	U 	U 	U(XJ777&t,,QKK)=KKKLLaPPPPPr*   c                 T    t          j        ddg                      }d }t          ||g          }t          j        |          }t          |j                  dk    sJ |                    g d           t          |j                  dk    sJ |                    ddg           |j                                        \  }}}|j	        d	         j
        d
         d                                         dk    sJ |j	        d         j        sJ |j	        d	         j
        d
         d                                         dk    sJ |j	        d         j        sJ |j	        d	         j
        d
         d                                         dk    sJ |j	        d         j        rJ d S )Nrw  r   rx  c                 4    t          d | D                       S )Nc                 6    g | ]}t          d d |dz            S )r   r;   )r   )r&   radiuss     r(   r   zYTestLegends.test_dynamicmap_variable_length_overlay.<locals>.callback.<locals>.<listcomp>o  s(    DDDFC1fQh//DDDr*   )r   rx  s    r(   r{  zETestLegends.test_dynamicmap_variable_length_overlay.<locals>.callbackn  s    DDeDDDEEEr*   r.  )r   r;   rV   r   rV   cdsr   r   r   rk   )r   r~  r   r   r-   ry   rG   r%  rH   rJ   rK   minrl   )r2   rw  r{  r  r4   sp1sp2sp3s           r(   'test_dynamicmap_variable_length_overlayz3TestLegends.test_dynamicmap_variable_length_overlayl  s   76=A377799	F 	F 	F(XJ777&t,,4=!!Q&&&&YYY'''4=!!Q&&&&aV$$$,,..S#{5!&t,Q/3355;;;;{+,4444{5!&t,Q/3355;;;;{+,4444{5!&t,Q/3355;;;;;/0888888r*   N)r5  r6  r7  rF  rI  rY  rf  rn  ru  r  r  r8  r*   r(   r:  r:     s        4 4 4@ @ @J J J
Z 
Z 
ZJ J JZ Z ZQ Q Q9 9 9 9 9r*   r:  )'numpyr$   panelr"  bokeh.modelsr   r   r   r   r   holoviews.corer   r	   r
   r   holoviews.elementr   r   r   r   r   r   r   r   r   holoviews.plotting.bokeh.utilr   holoviews.streamsr   r   holoviews.utilr   utilsr   	test_plotr   r   r   r:  r8  r*   r(   <module>r     s           K K K K K K K K K K K K K K B B B B B B B B B B B B
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 ; : : : : : ) ) ) ) ) ) ) ) " " " " " " . . . . . . 4 4 4 4 4 4 4 4D- D- D- D- D-/ D- D- D-N\9 \9 \9 \9 \9- \9 \9 \9 \9 \9r*   