
    eCL                        d dl Zd dlZd dlZd dlmZmZmZm	Z	m
Z
mZmZ d dlmZ d dlmZ d dlmZmZmZmZmZmZmZ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$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-dS )    N)DivGlyphRendererGridPlotSpacerTabsTitleToolbar)TabPanel)figure)	Dataset	Dimension
DynamicMapEmpty	GridSpaceHoloMapLayoutNdLayout	NdOverlay)Curve	HistogramImagePointsScatter)Stream)optsrender)dim   )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 Z!d  Z"d!S )"TestLayoutPlotc                    t          d t          dd          D                       }t          d t          dd          D                       }t          j        ||z             }d t	          |j                                                  D             \  }}|j        d         }|j        d         }|                     |j        d         j	                   | 
                    |j        d         j	                   |                    d	           | 
                    |j        d         j	                   |                     |j        d         j	                   d S )
Nc                 V    i | ]&}|t          t          j        |          d           'S )Alabelr   nparange.0is     Nlib/python3.11/site-packages/holoviews/tests/plotting/bokeh/test_layoutplot.py
<dictcomp>z=TestLayoutPlot.test_layout_update_visible.<locals>.<dictcomp>    s/    OOOa51S999OOO    r    r   c                 V    i | ]&}|t          t          j        |          d           'S )Br(   r*   r-   s     r0   r1   z=TestLayoutPlot.test_layout_update_visible.<locals>.<dictcomp>!   s/    PPPqE")A,,c:::PPPr2      c              3       K   | ]	\  }}|V  
d S N )r.   kps      r0   	<genexpr>z<TestLayoutPlot.test_layout_update_visible.<locals>.<genexpr>#   s&      JJDAqaJJJJJJr2   mainglyph_renderer)   )r   ranger"   get_plotsortedsubplotsitems
assertTruehandlesvisibleassertFalseupdate)selfhmaphmap2plotsubplot1subplot2s         r0   test_layout_update_visiblez)TestLayoutPlot.test_layout_update_visible   s:   OO5A;;OOOPPPPE!QKKPPPQQ&tEz22JJF4=3F3F3H3H,I,IJJJ($V,$V,()9:BCCC)*:;CDDDD)*:;CDDD()9:BCCCCCr2   c                    t          t          j        ddddf         d                                       d          }t          t          j        ddddf         d         dz                                d          }t	          j        ||z             }d |j                                        D             \  }}|j        d         }|j        d         }| 	                    |j
        d           | 	                    |j
        d           | 	                    |j        d           | 	                    |j        d           d S )	Nr   r5   T	framewise
   c              3   0   K   | ]}|j         d          V  dS r<   NrB   r.   sps     r0   r;   z<TestLayoutPlot.test_layout_framewise_norm.<locals>.<genexpr>0   s)      UUF 3UUUUUUr2   color_mapper(   )r   r+   mgridr   r"   r@   rB   valuesrE   assertEquallowhigh)rI   img1img2rL   	img1_plot	img2_plotimg1_cmapperimg2_cmappers           r0   test_layout_framewise_normz)TestLayoutPlot.test_layout_framewise_norm,   s1   RXac1Q3h'*++0040@@RXac1Q3h'*2-..33d3CC&tDy11UUdm>R>R>T>TUUU	9 (8 (8)1---)1---*B///*B/////r2   c                 ~   t          t          j        ddddf         d         d                              dd          } t	          j        dd	                      }t          d          |j        j        z  }t          t          j        ddddf         d         d          j	        
                    |
                              dd          }t          j        ||z             }|j        d         j        d         }|j        d         j        d         }|j        d         }|j        d         }	|                     |j        d           |                     |	j        d           |                     |j        d           |                     |	j        d           |                    d	           |                     |j        d           |                     |	j        d           |                    d	           |                     |j        d           |                     |	j        d           d S )Nr   r5   zvdimsT)rR   axiswisezscaler    value)rh   r   r   r<   r   r    rY   r>   rS   rZ         r   r+   r[   r   r   definer   paramrn   apply	transformr"   r@   rB   rE   r]   r^   r_   rH   
rI   r`   streamrw   ra   rL   rb   rc   rd   re   s
             r0   *test_layout_framewise_matching_norm_updatez9TestLayoutPlot.test_layout_framewise_matching_norm_update8   s   RXac1Q3h'*#666;;dUY;ZZ1xq11133HHV\//	RXac1Q3h'*#666<FF G  t<< 	&tDy11M&)26:	M&)26:	 (8 (8)1---)1---*A...*A...B*A...*B///A*A...*A.....r2   c                 z   t          t          j        ddddf         d         d                              d          } t	          j        dd	                      }t          d
          |j        j        z  }t          t          j        ddddf         d         d
          j	        
                    |                              d          }t          j        ||z             }|j        d         j        d         }|j        d         j        d         }|j        d         }|j        d         }	|                     |j        d           |                     |	j        d           |                     |j        d           |                     |	j        d           |                    d	           |                     |j        d           |                     |	j        d           |                    d	           |                     |j        d           |                     |	j        d           d S )Nr   r5   rh   ri   TrQ   rl   r    rm   z2)r|   ro   r<   rp   rY   r>   rS   rZ   rq   rr   rs   rx   s
             r0   -test_layout_framewise_nonmatching_norm_updatez<TestLayoutPlot.test_layout_framewise_nonmatching_norm_updateN   s   RXac1Q3h'*#666;;d;KK1xq11133IIfl00	RXac1Q3h'*$777=GG H  $$.. 	&tDy11M&)26:	M&)26:	 (8 (8)1---)1---*A...*A...B*A...*B///A*A...*A.....r2   c                 V   t          d t          d          D                       }t          d t          d          D                       }t          j        ||z             }|j        d         }|                     |t                     d}|                     |j        |           d S )Nc           	      j    i | ]0}|t          t          j                            d d                     1S rS   r   r+   randomrandr.   as     r0   r1   z4TestLayoutPlot.test_layout_title.<locals>.<dictcomp>e   2    KKKQE")..B"7"788KKKr2   r   c           	      j    i | ]0}|t          t          j                            d d                     1S r   r   r   s     r0   r1   z4TestLayoutPlot.test_layout_title.<locals>.<dictcomp>f   r   r2   titlem<span style="color:black;font-family:Arial;font-style:bold;font-weight:bold;font-size:12pt">Default: 0</span>)	r   r?   r"   r@   rE   assertIsInstancer   r]   textrI   hmap1rK   rL   r   r   s         r0   test_layout_titlez TestLayoutPlot.test_layout_titled   s    KK%((KKKLLKK%((KKKLL&uU{33W%eS)))ET*****r2   c                    d}t          t          g dd          t          g dd          ddd	d
                              t          j         |          t          j        |                    }t          j        |          j        d         }|                     |t                     d}|                     t          j
        d|j                  d         |           t          |          }d t          |                    dt          i                    D             }ddh}|                     ||           d S )Nz@Label: {label}, group: {group}, dims: {dimensions}, type: {type}ONEfirst)r)   groupTWOsecond)z	Element 1z	Element 2MYDIM	the_label	the_group)kdimsr)   r   )r   r   z:Label: the_label, group: the_group, dims: , type: NdLayoutz>|</r    c                     h | ]	}|j         
S r8   )r   )r.   r   s     r0   	<setcomp>z:TestLayoutPlot.test_layout_title_format.<locals>.<setcomp>   s'     
 
 
 EJ
 
 
r2   typez?Label: ONE, group: first, dims: MYDIM: Element 1, type: Scatterz@Label: TWO, group: second, dims: MYDIM: Element 2, type: Scatter)r   r   r   r"   r@   rE   r   r   r]   resplitr   r   listselectr   )rI   	title_strlayoutr   r   rL   titlestitles_corrects           r0   test_layout_title_formatz'TestLayoutPlot.test_layout_title_formatn   se   8	!   $  	  
 
 
 $t}9---t|)/L/L/L
M
M 	 '//7@eS)))K&%*55a8$???f~~
 
$(fe_)E)E$F$F
 
 
 NN
 	00000r2   c                    t          d t          d          D                       }t          d t          d          D                       }t          ||g                              ddi          }t	          j        |          }|j        d         }|                     |t                     d}| 	                    |j
        |           d S )Nc           	      j    i | ]0}|t          t          j                            d d                     1S r   r   r   s     r0   r1   z=TestLayoutPlot.test_layout_title_fontsize.<locals>.<dictcomp>   r   r2   r   c           	      j    i | ]0}|t          t          j                            d d                     1S r   r   r   s     r0   r1   z=TestLayoutPlot.test_layout_title_fontsize.<locals>.<dictcomp>   r   r2   r   12pt)fontsizer   )r   r?   r   r   r"   r@   rE   r   r   r]   r   )rI   r   rK   r   rL   r   r   s          r0   test_layout_title_fontsizez)TestLayoutPlot.test_layout_title_fontsize   s    KK%((KKKLLKK%((KKKLL'',,w6G,HH&v..W%eS)))ET*****r2   c                 H   t          d t          d          D                       }t          d t          d          D                       }t          ||g                              d          }t	          j        |          }|                     d|j        v           d S )Nc           	      j    i | ]0}|t          t          j                            d d                     1S r   r   r   s     r0   r1   zETestLayoutPlot.test_layout_title_show_title_false.<locals>.<dictcomp>   r   r2   r   c           	      j    i | ]0}|t          t          j                            d d                     1S r   r   r   s     r0   r1   zETestLayoutPlot.test_layout_title_show_title_false.<locals>.<dictcomp>   r   r2   F)
show_titler   )r   r?   r   r   r"   r@   rD   rE   )rI   r   rK   r   rL   s        r0   "test_layout_title_show_title_falsez1TestLayoutPlot.test_layout_title_show_title_false   s    KK%((KKKLLKK%((KKKLL'',,,>>&v..t|344444r2   c                    t          d t          d          D                       }t          d t          d          D                       }t          j        ||z             }|                    d           |j        d         }|                     |t                     d}|                     |j	        |           d S )Nc           	      j    i | ]0}|t          t          j                            d d                     1S r   r   r   s     r0   r1   z;TestLayoutPlot.test_layout_title_update.<locals>.<dictcomp>   r   r2   r   c           	      j    i | ]0}|t          t          j                            d d                     1S r   r   r   s     r0   r1   z;TestLayoutPlot.test_layout_title_update.<locals>.<dictcomp>   r   r2   r    r   zm<span style="color:black;font-family:Arial;font-style:bold;font-weight:bold;font-size:12pt">Default: 1</span>)
r   r?   r"   r@   rH   rE   r   r   r]   r   r   s         r0   test_layout_title_updatez'TestLayoutPlot.test_layout_title_update   s    KK%((KKKLLKK%((KKKLL&uU{33AW%eS)))ET*****r2   c                    t          d t          dd          D                       t          d t          dd          D                       z   t          t          d                    z                       d          }t	          j        |          }|j        }|                     |t                     | 	                    t          |j                  d           |                     |j        t                     |j        \  ^}}^}}^}}|                     |t                     |                     |t                     |                     |t                     | 	                    t          |j                  d           |j        \  }^}}}|                     |t                     | 	                    t          |j                  d           |j        \  }^}	}}|                     |	t                     ||	fD ]Q}
| 	                    t          |
j                  d           |
j        D ]^}}|                     |t                      Rd S )Nc           
      x    i | ]7}t          d d          D ]$}||ft          t          ||z                       %8S rq   r>   r?   r   r.   r/   js      r0   r1   z9TestLayoutPlot.test_layout_gridspaces.<locals>.<dictcomp>   \     2 2 21&+Aajj2 2!"  VU51::%6%6 2 2 2 2r2   r    r   c           
      x    i | ]7}t          d d          D ]$}||ft          t          ||z                       %8S r   r   r   s      r0   r1   z9TestLayoutPlot.test_layout_gridspaces.<locals>.<dictcomp>   r   r2   rS   rq   r>   )r   r?   r   colsr"   r@   stater   r   r]   lenchildrentoolbarr	   r   )rI   r   layout_plotrL   grid1_grid2figinner_grid1inner_grid2gridgfigs               r0   test_layout_gridspacesz%TestLayoutPlot.test_layout_gridspaces   sX    2 2a 2 2 2 3 3 2 2a 2 2 2 3 33 b		""	# %)DGG	 	
 %-f55 dH---T]++Q///dlG444.2m+[ea)3eX...eX...c6***U^,,a000"'.K!ak8444U^,,a000"'.K!ak8444 +. 	4 	4DS//333 M 4 4q%%dF33334	4 	4r2   c                    t          t          d                    t          t          d                    z   t          t          j                            dd                    z   t          t          d                    z   t          t          d                    z   }t          j        |          }g d}|                     t          |j
                                                  |           d S )NrS   )ro   rp   )r   rq   )r   r   r    r   )r   r?   r   r+   r   r   r"   r@   r]   rA   rB   keysrI   r   rL   	positionss       r0    test_layout_instantiate_subplotsz/TestLayoutPlot.test_layout_instantiate_subplots   s    b		""U599%5%55binnRPR>S>S8T8TTb		""#%*599%5%56&v..<<<	 2 2 4 455yAAAAAr2   c                    t          t          d                    t          t          d                    z   t          t          j                            dd                    z   t          t          d                    z   t          t          d                    z   }t          j        |                    d                    }g d}| 	                    t          |j                                                  |           d S )NrS   T)	transpose)ro   rp   r   )rq   r   )r   r   )r   r?   r   r+   r   r   r"   r@   r   r]   rA   rB   r   r   s       r0   +test_layout_instantiate_subplots_transposedz:TestLayoutPlot.test_layout_instantiate_subplots_transposed   s    b		""U599%5%55binnRPR>S>S8T8TTb		""#%*599%5%56&v{{T{'B'BCC<<<	 2 2 4 455yAAAAAr2   c                 z   t          g d          t                      z  t          g d          z  }t          j        |          }|j        d         }|                     t          |j                  d           |j        }|j        \  ^}}^}}^}}| 	                    |t                     | 	                    |t                     |                     |j        d           |                     |j        d           |                     |j        |j                   |                     |j        d           d S )N)r   r    r    rq   r   )r   r    r    r   r    ro   r   r   i,  )r   r   r"   r@   rB   r]   r   r   r   r   r   r   widthheight)	rI   adjointrL   adjoint_plotr   f1r   f2s1s	            r0   test_empty_adjoint_plotz&TestLayoutPlot.test_empty_adjoint_plot   s   $$/53E3EE&w//}V,\233Q777z'+}$a(2HR!dH---b&)))1%%%A&&&BI...C(((((r2   c                     t          t          d                    }|t                      z  |                    d          z  }t	          |           d S )NrS   F)adjoin)r   r?   r   histr"   )rI   scatteradjoin_layout_plots      r0   %test_empty_adjoint_plot_with_rendererz4TestLayoutPlot.test_empty_adjoint_plot_with_renderer   sN    %))$$$/7<<u<3M3MM 	)*****r2   c                    t          g           t          g                                           z                       d          }t          j        |          }|j        }|j        }|                     |t                     |                     |t                     |j
        D ]!\  }}}|                     |t                     "|                     d |j
        D             g d           d S )Nr    c                 R    g | ]$\  }}}t          d  |j        D                       %S )c                 <    g | ]}t          |t                    |S r8   )
isinstancer   )r.   rs     r0   
<listcomp>zLTestLayoutPlot.test_layout_plot_with_adjoints.<locals>.<listcomp>.<listcomp>   s'    UUUA
1m8T8TUaUUUr2   )r   	renderers)r.   fr   s      r0   r   zATestLayoutPlot.test_layout_plot_with_adjoints.<locals>.<listcomp>   sG     9 9 9&aA UUUUUVV 9 9 9r2   )r    r    r    )r   r   r   r"   r@   r   r   r   r	   r   r   r   rD   )rI   r   rL   r   r   r   r   s          r0   test_layout_plot_with_adjointsz-TestLayoutPlot.test_layout_plot_with_adjoints   s    ))eBiinn...44Q77&v..z,gw///dH---= 	/ 	/KS!Q!!#v.... 9 9*.-9 9 9:C))	E 	E 	E 	E 	Er2   c                    t          g           t          g                                           z                       d          }t          j        |          }|                     |j        t                     |j        j        \  }}|                     |t                     |                     |t                     | 
                    |j        d           | 
                    |j        d           d S )NT)tabszCurve IzAdjointLayout I)r   r   r   r"   r@   r   r   r   r   r
   r]   r   )rI   r   rL   panel1panel2s        r0   #test_layout_plot_tabs_with_adjointsz2TestLayoutPlot.test_layout_plot_tabs_with_adjoints   s    ))eBiinn...44$4??&v..dj$///fh///fh///y111'899999r2   c                 >   t          d t          d          D                       }|                    d t                    }|                    d t                    }|                    d           ||z                       d          }t          j        |          }|j        	                    dg           }|j        	                    d	i           }| 
                    t          |          d
           |d         }|j        }	|t          |                   }
| 
                    t          |
          h d           | 
                    t          |	                                          h d           |                    d           | 
                    |	d         |d
                             d                     | 
                    |	d         |d
                             d
                     | 
                    |	d         t%          j        |d
                             d          t$          j                             | 
                    |	d         t%          j        |d
                             d          t$          j                             d S )Nc           	      j    i | ]/t          fd t          d          D             g d          0S )c                 v    i | ]5}t          d |z             t          j                            dz             6S )A   rq   )chrr+   r   r   )r.   r   r/   s     r0   r1   zUTestLayoutPlot.test_layout_shared_source_synced_update.<locals>.<dictcomp>.<dictcomp>  sG     $7 $7 $7() %(1IIry~~ac/B/B $7 $7 $7r2   r>   )r'   r4   CDr   )r   r?   r-   s    @r0   r1   zJTestLayoutPlot.test_layout_shared_source_synced_update.<locals>.<dictcomp>  sr     + + + 7 $7 $7 $7 $7-21XX$7 $7 $7>R>R>RT T T + + +r2   r   c                 L    t          |                     ddg                    S )Nr'   r4   r   r   clonexs    r0   <lambda>zHTestLayoutPlot.test_layout_shared_source_synced_update.<locals>.<lambda>       6!''c
'*C*C#D#D r2   c                 L    t          |                     ddg                    S )Nr   r   r   r   r   s    r0   r   zHTestLayoutPlot.test_layout_shared_source_synced_update.<locals>.<lambda>  r   r2   )r    T)shared_datasourceshared_sourcessource_colsr    r   >   r'   r4   r   r   r'   r4   r   r   )r   r?   mapr   popr   r"   r@   rE   getr]   r   dataidsetr   rH   dimension_valuesr+   	full_likenan)rI   rJ   r   rK   r   rL   sourcesr  sourcer  r   s              r0   'test_layout_shared_source_synced_updatez6TestLayoutPlot.test_layout_shared_source_synced_update  sE    + +!&q+ + + , ,
 DDgNNDDgNN 			$%-%%%== &v.. ,""#3R88l&&}b99Wq))){2f::&T$8$8$8999 	TYY[[))+?+?+?@@@
 	DcE!H$=$=a$@$@AAAcE!H$=$=a$@$@AAAcBLq1J1J11M1Mrv$V$VWWWcBLq1J1J11M1Mrv$V$VWWWWWr2   c                    t          t          d                    }t          t          j                            dd                    }t          j        ||z             }|j        d         j        d         }|j	        d         |j	        d         }}| 
                    |j        |j        fd           | 
                    |j        |j        fd           d S )NrS   rp   r<   x_rangey_range)      	   )r   r?   r   r+   r   r   r"   r@   rB   rE   r]   startendrI   curveimgrL   r  r  s         r0   test_shared_axeszTestLayoutPlot.test_shared_axes*  s    eBii  BINN2b))**&uSy11}V$-f5<	2DL4K'-5x@@@'-5x@@@@@r2   c                    t          t          d                    }t          t          j                            dd                                        d          }t          j        ||z             }|j	        d         j	        d         }|j
        d         |j
        d         }}|                     |j        |j        fd           |                     |j        |j        fd           d S )	NrS   Fshared_axesrp   r<   r  r  )r  g      ?)r   r?   r   r+   r   r   r   r"   r@   rB   rE   r]   r  r  r  s         r0   test_shared_axes_disablez'TestLayoutPlot.test_shared_axes_disable3  s    eBii  BINN2b))**//E/BB&uSy11}V$-f5<	2DL4K'-5yAAA'-5yAAAAAr2   c           
         t          t          d                    t                      z   t                      z   t          dt	          t
          j                            dd                    i          z   }t          j	        |          }| 
                    t          |j                                                  d           | j                            dd           | j                            dd           d S )NrS   r    rq   WARNINGzskipping subplot)r   r?   r   r   r   r+   r   r   r"   r@   r]   r   rB   r\   log_handlerassertContainsrI   r   rL   s      r0   test_layout_empty_subplotsz)TestLayoutPlot.test_layout_empty_subplots<  s    uRyy!!IKK/'));gq%PRPYP^P^_abdPePeJfJfFg>h>hh&v..T]113344a888''	3EFFF''	3EFFFFFr2   c                    t          g           t          g           z                       d          }t          j        |          }|                     |j        t                     |                     |j        j        t                     d S )Nleftr   )
r   r   r   r"   r@   r   r   r   r   r	   r#  s      r0    test_layout_set_toolbar_locationz/TestLayoutPlot.test_layout_set_toolbar_locationC  sr    ))fRjj(..v.>>&v..dj(333dj0':::::r2   c                 .   t          g           t          g           z                       d           }t          j        |          }|                     |j        t                     |                     t          |j        j
                  d           d S )Nr'  rq   )r   r   r   r"   r@   r   r   r   r]   r   r   r#  s      r0   test_layout_disable_toolbarz*TestLayoutPlot.test_layout_disable_toolbarI  sz    ))fRjj(..t.<<&v..dj(333TZ011155555r2   c                    t          g           t          g           z                       dd          }t          j        |          }t	          t          |j                                                            j        d         }|                     |j	        d         j
        d           |                     |j	        d         j        d           d S )Nr   T)invert_yaxisr<   r  r    r   )r   r   r"   r@   nextiterrB   r\   r]   rE   r  r  )rI   r   rL   subplots       r0   !test_layout_shared_inverted_yaxisz0TestLayoutPlot.test_layout_shared_inverted_yaxisO  s    ))eBii'--gD-II&v..tDM00223344=fE391===37;;;;;r2   c                     t          j        dd                      }t          d dg|g          }|t          g           z   }t	          j        |          }|                     d|j        d         j                   |	                    d	           |                     d
|j        d         j                   |
                                 |                     |j        g            d S )NTestr   testc                      t          g           S r7   )r   r3  s    r0   r   zLTestLayoutPlot.test_layout_dimensioned_stream_title_update.<locals>.<lambda>X  s    uRyy r2   r4  r   streamsztest: 0r   r    ztest: 1)r   rt   r   r   r"   r@   assertInrE   r   eventcleanupr]   _subscribers)rI   ry   dmapr   rL   s        r0   +test_layout_dimensioned_stream_title_updatez:TestLayoutPlot.test_layout_dimensioned_stream_title_updateV  s    .vA...00006(SSSb		!&v..ig!6!;<<<!ig!6!;<<<,b11111r2   c                     t          g dd          t          g dd          z   }t          j        |          }d |j                                        D             \  }}|                     |j        d         |j        d                    d S )Nr    rq   r   r   r'   ri   c              3   0   K   | ]}|j         d          V  dS rU   rV   rW   s     r0   r;   zKTestLayoutPlot.test_layout_axis_link_matching_name_label.<locals>.<genexpr>d  )      GG""+f%GGGGGGr2   r  )r   r"   r@   rB   r\   assertIsrE   rI   r   rL   p1p2s        r0   )test_layout_axis_link_matching_name_labelz8TestLayoutPlot.test_layout_axis_link_matching_name_labela  s    yyy
333eIIIZ6X6X6XX&v..GG0D0D0F0FGGGBbj+RZ	-BCCCCCr2   c                     t          g dd          t          g dd          z   }t          j        |          }d |j                                        D             \  }}|                     |j        d         |j        d                    d S )Nr?  )br'   ri   r@  c              3   0   K   | ]}|j         d          V  dS rU   rV   rW   s     r0   r;   zNTestLayoutPlot.test_layout_axis_not_linked_mismatching_name.<locals>.<genexpr>j  rB  r2   r  )r   r"   r@   rB   r\   assertIsNotrE   rD  s        r0   ,test_layout_axis_not_linked_mismatching_namez;TestLayoutPlot.test_layout_axis_not_linked_mismatching_nameg  s    yyy
333eIIIZ6X6X6XX&v..GG0D0D0F0FGGGBI.
90EFFFFFr2   c                 >   t          g dt          dd                    t          g dd          z   }t          j        |          }d |j                                        D             \  }}|                     |j        d         |j        d                    d S )Nr?  lengthmunitri   c              3   0   K   | ]}|j         d          V  dS rU   rV   rW   s     r0   r;   zJTestLayoutPlot.test_layout_axis_linked_unit_and_no_unit.<locals>.<genexpr>q  rB  r2   r  )r   r   r"   r@   rB   r\   rC  rE   rD  s        r0   (test_layout_axis_linked_unit_and_no_unitz7TestLayoutPlot.test_layout_axis_linked_unit_and_no_unitm  s    			8#)F)F)FGGG			2223&v..GG0D0D0F0FGGGBbj+RZ	-BCCCCCr2   c                 \   t          g dt          dd                    t          g dt          dd                    z   }t          j        |          }d |j                                        D             \  }}|                     |j        d         |j        d                    d S )	Nr?  rN  rO  rP  ri   cmc              3   0   K   | ]}|j         d          V  dS rU   rV   rW   s     r0   r;   zNTestLayoutPlot.test_layout_axis_not_linked_mismatching_unit.<locals>.<genexpr>x  rB  r2   r  )r   r   r"   r@   rB   r\   rK  rE   rD  s        r0   ,test_layout_axis_not_linked_mismatching_unitz;TestLayoutPlot.test_layout_axis_not_linked_mismatching_unitt  s    			8#)F)F)FGGG			8$)G)G)GHHHI&v..GG0D0D0F0FGGGBI.
90EFFFFFr2   c                     t          j        dd                      }d }t          |dg|g          }t          j        |          }d}|                    |           |                     d|z   |j        d         j        |j        d         j                   |	                                 | 
                    |j        g            d S )	Nanamer   )rY  c                     t          j        ddd          }t           j                            d          }t	          ||f|           }t          |          }||z                       d          S )Nr   r    rS   )r   Fr  )r+   linspacer   randnr   r   r   )rY  r   yr  r   s        r0   cbzXTestLayoutPlot.test_dimensioned_streams_with_dynamic_callback_returns_layout.<locals>.cb}  sd    Aq"%%A	##A1a&...EQ<<DDL&&5&999r2   r6  XYZTzaname: r   )r   rt   r   r"   r@   r9  r8  rE   r   r:  r]   r;  )rI   ry   r^  rO  r:   Ts         r0   =test_dimensioned_streams_with_dynamic_callback_returns_layoutzLTestLayoutPlot.test_dimensioned_streams_with_dynamic_callback_returns_layout{  s    2wc22244	: 	: 	: r'VH===#A&&1i!mQYw%7%<ai>P>UVVV			,b11111r2   c                    t          g d          t          g d          z                       d          }t          j        |          }|j        d         j        d         |j        d         j        d         }}|                     |j        d         |j        d         u            |                     |j        d         j        d	           |                     |j        d         j	        d
           |                     |j        d         j        d           |                     |j        d         j	        d           d S )Nr?  )rS         Fr  ro   r<   rp   r  r    r   rS   rd  )
r   r   r"   r@   rB   rG   rE   r]   r  r  )rI   r   rL   cp1cp2s        r0    test_layout_shared_axes_disabledz/TestLayoutPlot.test_layout_shared_axes_disabled  s   			""U<<<%8%88>>5>QQ&v..=(1&94=;P;YZ`;aSY/3;y3IIJJJY/5q999Y/3Q777Y/5r:::Y/3R88888r2   c                    t          g d          }t          g d          }||z   }t          j        |          }|j        d         j        d         |j        d         j        d         }}|                     |j        d         |j        d                    |                     |j        d         |j        d                    d S )Nr?  ))r'   r   )r4   r    )r   rq   ro   r<   rp   r  r  )r   r"   r@   rB   rK  rE   rC  rI   curve1curve2r   rL   re  rf  s          r0   4test_layout_categorical_numeric_type_axes_not_linkedzCTestLayoutPlot.test_layout_categorical_numeric_type_axes_not_linked  s    yyy!!55566&&v..=(1&94=;P;YZ`;aSY/Y1GHHHck),ck).DEEEEEr2   c           	         t          g d          }t          t          j        ddd          dft          j        ddd          dft          j        ddd          dfg          }||z   }t          j        |          }|j        d         j        d         |j        d	         j        d         }}|                     |j        d
         |j        d
                    |                     |j        d         |j        d                    d S )Nr?  i  r    r   rq   r   ro   r<   rp   r  r  )	r   dtdatetimer"   r@   rB   rK  rE   rC  ri  s          r0   1test_layout_datetime_numeric_type_axes_not_linkedz@TestLayoutPlot.test_layout_datetime_numeric_type_axes_not_linked  s    yyy!!T1a00!4r{4A7N7NPQ6RUWU`aeghjkUlUlnoTpqrr&&v..=(1&94=;P;YZ`;aSY/Y1GHHHck),ck).DEEEEEr2   N)#__name__
__module____qualname__rO   rf   rz   r}   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r$  r(  r*  r0  r=  rG  rL  rS  rW  ra  rg  rl  rp  r8   r2   r0   r$   r$      s"       D D D
0 
0 
0/ / /,/ / /,+ + +1 1 1B	+ 	+ 	+5 5 5	+ 	+ 	+4 4 4>B B BB B B) ) )+ + +
E 
E 
E: : :#X #X #XJA A AB B BG G G; ; ;6 6 6< < <	2 	2 	2D D DG G GD D DG G G2 2 2 9 9 9F F FF F F F Fr2   r$   ).ro  rn  r   numpyr+   bokeh.modelsr   r   r   r   r   r   r	   bokeh.models.layoutsr
   bokeh.plottingr   holoviews.corer   r   r   r   r   r   r   r   r   holoviews.elementr   r   r   r   r   holoviews.streamsr   holoviews.utilr   r   holoviews.util.transformr   utilsr   	test_plotr!   r"   r$   r8   r2   r0   <module>r     s       				     S S S S S S S S S S S S S S S S S S ) ) ) ) ) ) ! ! ! ! ! !
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 G F F F F F F F F F F F F F $ $ $ $ $ $ ' ' ' ' ' ' ' ' ( ( ( ( ( ( . . . . . . 4 4 4 4 4 4 4 4HF HF HF HF HF. HF HF HF HF HFr2   