
    e(                          d dl mZ d dlmZ d dlZd dlZd dlZd dl	Z	d dl
mZ d dlmZ d dlmZmZmZ d dlmZ d dlmZmZmZmZmZmZ d d	lmZ d d
lmZ d dlm Z  d dl!m"Z"  G d de          Z#dS )    )BytesIO)SkipTestN)curdoc)Theme)DiscreteSliderFloatSliderPlayer)CommManager)Curve
DynamicMap	GridSpaceHoloMapImageTable)ComparisonTestCase)Renderer)BokehRenderer)Streamc                   L   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ej                            d          d             Zej                            d          d             Zej                            d          d             ZdS )BokehRendererTestc                    t          t          j        ddgddgg          d          | _        t          t          j        ddgddgg          d	          | _        t          | j        | j        d
d          | _        t          j                    | _	        t          j        | _        t          j        | _        t          j        d          5  dt          _        t           t          _        d d d            d S # 1 swxY w Y   d S )Nr            Image1)label   Image2r   r   TestMapERRORF)r   nparrayimage1image2r   map1r   instancerendererr   notebook_context	nbcontextcomm_managerparamlogging_levelr
   selfs    Llib/python3.11/site-packages/holoviews/tests/plotting/bokeh/test_renderer.pysetUpzBokehRendererTest.setUp   s    BHqeQqE]338DDDBHqeQrF^44HEEEt{dk::)LLL	%.00!2$1 )) 	0 	0(-H%$/H!	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0s   C99C= C=c                     t          j        d          5  | j        t          _        | j        t          _        d d d            d S # 1 swxY w Y   d S )Nr"   )r-   r.   r+   r   r*   r,   r/   s    r1   tearDownzBokehRendererTest.tearDown!   s     )) 	6 	6(,H%$($5H!	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6s   #AA	A	c                 b    t                      }| j                            | j        |           d S )N)r   r)   saver%   )r0   bytesios     r1   test_save_htmlz BokehRendererTest.test_save_html&   s+    ))4;00000    c                     | j                             d          }|                    | j                  }|                     |j        t                                 d S )Nserver)mode)r)   r(   get_plotr%   assertIsdocumentr   )r0   r)   plots      r1   test_render_get_plot_server_docz1BokehRendererTest.test_render_get_plot_server_doc*   sO    =))x)88  --dmVXX.....r9   c                     | j                             | j                  }| j                             |          \  }}|                     ||fd           d S )N),  rC   )r)   r=   r%   get_sizeassertEqualr0   r@   whs       r1   test_get_size_single_plotz+BokehRendererTest.test_get_size_single_plot/   sR    }%%dk22}%%d++1!Q,,,,,r9   c                     | j                             | j        | j        z             }| j                             |          \  }}|                     ||fd           d S )N)X  rC   )r)   r=   r%   r&   rD   rE   rF   s       r1   test_get_size_row_plotz(BokehRendererTest.test_get_size_row_plot4   sY    }%%dk$+&=>>}%%d++1!Q,,,,,r9   c                     | j                             | j        | j        z                       d                    }| j                             |          \  }}|                     ||fd           d S )Nr   )rC   rK   )r)   r=   r%   r&   colsrD   rE   rF   s       r1   test_get_size_column_plotz+BokehRendererTest.test_get_size_column_plot9   sg    }%%t{4;'>&D&DQ&G&GHH}%%d++1!Q,,,,,r9   c                      t           fdt          d          D                       } j                            |          } j                            |          \  }}                     ||fd           d S )Nc                 H    i | ]}t          d           D ]}||fj        S )r   )ranger%   ).0ijr0   s      r1   
<dictcomp>z=BokehRendererTest.test_get_size_grid_plot.<locals>.<dictcomp>?   s4    RRR!qRRA1a&$+RRRRr9   r   )i  i  )r   rR   r)   r=   rD   rE   )r0   gridr@   rG   rH   s   `    r1   test_get_size_grid_plotz)BokehRendererTest.test_get_size_grid_plot>   sy    RRRRuQxxRRRSS}%%d++}%%d++1!Q,,,,,r9   c                     t          t          d          dg          }| j                            |          }| j                            |          \  }}|                     ||fd           d S )N
   xkdims)i  rC   r   rR   r)   r=   rD   rE   r0   tabler@   rG   rH   s        r1   test_get_size_tablez%BokehRendererTest.test_get_size_tableD   sj    eBiiu---}%%e,,}%%d++1!Q,,,,,r9   c                     t          t          d          dg          }| j                            ||z             }| j                            |          \  }}|                     ||fd           d S )NrZ   r[   r\   )i   rC   r^   r_   s        r1   test_get_size_tables_in_layoutz0BokehRendererTest.test_get_size_tables_in_layoutJ   sn    eBiiu---}%%eEk22}%%d++1!Q,,,,,r9   c                    dddii}t          d|i          }|| j        _        | j                            t	          g                     }| j                            |d           |                     |j        j        d           d S )Nfigureoutline_line_colorz#444444attrs)jsonhtml)	r   r)   themer=   r   
componentsrE   staterf   )r0   rg   rj   r@   s       r1   test_theme_renderingz&BokehRendererTest.test_theme_renderingP   s    0)<=Ge,---#}%%eBii00  v...6	BBBBBr9   c                    t          g           }t          j        d          }	  ||          \  }}n# t          $ r t	          d          w xY w|                     |t                     |                     |d         d           d S )Npng)figzTest requires seleniumzfile-ext)r   r   r(   RuntimeErrorr   assertIsInstancebytesrE   )r0   curver)   ro   infos        r1   test_render_to_pngz$BokehRendererTest.test_render_to_pngX   s    b		 )e444	5 IC 	5 	5 	53444	5c5)))j)511111s	   5 Ac                 V   t          g           }| j                            |d           \  }}|                     |t          j        j                   |                     |j        d           | 	                    |j        | j                   |                     |j
        d           d S )NTbokeh)r   r)   	_validaterr   pnpane	HoloViewsrE   centerr>   backend)r0   rt   obj_s       r1   test_render_staticz$BokehRendererTest.test_render_staticb   s    b		((55Qc27#4555T***clDM222g.....r9   c           	         t          d t          d          D                       }| j                            |d           \  }}|                     |t
          j        j                   |                     |j	        d           |                     |j
        d           |                     |j        d           |j                            t                    }|                     t          |          d           |d         }|                     |j        t#          d t          d          D                                  d S )	Nc                 4    i | ]}|t          d d|g          S r    r   rS   rT   s     r1   rV   zDBokehRendererTest.test_render_holomap_individual.<locals>.<dictcomp>k   (    >>>5!Q++>>>r9      Tright
individualr   r   c                 0    g | ]}t          |          |fS  )strr   s     r1   
<listcomp>zDBokehRendererTest.test_render_holomap_individual.<locals>.<listcomp>t   s"    .M.M.MqA{.M.M.Mr9   )r   rR   r)   ry   rr   rz   r{   r|   rE   r}   widget_locationwidget_typelayoutselectr   lenoptionsdict)r0   hmapr   r   widgetssliders         r1   test_render_holomap_individualz0BokehRendererTest.test_render_holomap_individualj   s   >>U1XX>>>??((t44Qc27#4555T***,g666,777*##N33Wq))).M.ME!HH.M.M.M)N)NOOOOOr9   c                     t          d t          d          D                       }| j                            |          \  }}|                     d|d                    d S )Nc                 4    i | ]}|t          d d|g          S r    r   r   s     r1   rV   zBBokehRendererTest.test_render_holomap_embedded.<locals>.<dictcomp>w   r   r9   r   zState"z	text/html)r   rR   r)   rk   assertIn)r0   r   datar   s       r1   test_render_holomap_embeddedz.BokehRendererTest.test_render_holomap_embeddedv   s\    >>U1XX>>>??-**400ah[ 122222r9   c                 z   t          d t          d          D                       }| j                            |d          \  }}|                     |t
          j        j                   |                     |j	        d           |                     |j
        d           |                     |j        d           |j                            t                    }|                     t          |          d           |d         }|                     |j        d           |                     |j        d           d S )	Nc                 4    i | ]}|t          d d|g          S r    r   r   s     r1   rV   zBBokehRendererTest.test_render_holomap_scrubber.<locals>.<dictcomp>   r   r9   r   scrubberTbottomr   r   r   )r   rR   r)   ry   rr   rz   r{   r|   rE   r}   r   r   r   r   r	   r   startendr0   r   r   r   r   players         r1   test_render_holomap_scrubberz.BokehRendererTest.test_render_holomap_scrubber   s   >>U1XX>>>??((z::Qc27#4555T***,h777*555*##F++Wq)))q)))Q'''''r9   c                    t          d t          d          D                       }| j                            d                              |d          \  }}|                     |t          j        j                   |j	        
                    t                    }|                     t          |          d           |d         }|                     |j        d           d S )	Nc                 4    i | ]}|t          d d|g          S r    r   r   s     r1   rV   zFBokehRendererTest.test_render_holomap_scrubber_fps.<locals>.<dictcomp>   r   r9   r   r   )fpsr   r   r   i  )r   rR   r)   r(   ry   rr   rz   r{   r|   r   r   r	   rE   r   intervalr   s         r1    test_render_holomap_scrubber_fpsz2BokehRendererTest.test_render_holomap_scrubber_fps   s    >>U1XX>>>??''A'..88zJJQc27#4555*##F++Wq)))#.....r9   c                    t          d t          d          D                       }| j                            d                              |d           \  }}|                     |t          j        j                   | 	                    |j
        d           | 	                    |j        d           | 	                    |j        d           d S )Nc                 4    i | ]}|t          d d|g          S r    r   r   s     r1   rV   zTBokehRendererTest.test_render_holomap_individual_widget_position.<locals>.<dictcomp>   r   r9   r   top)r   Tr   )r   rR   r)   r(   ry   rr   rz   r{   r|   rE   r}   r   r   )r0   r   r   r   s       r1   .test_render_holomap_individual_widget_positionz@BokehRendererTest.test_render_holomap_individual_widget_position   s    >>U1XX>>>??'''>>HHtTTQc27#4555T***,e444,77777r9   z2ignore:Attempted to send message over Jupyter Commc                    t          d dg          j                            d          }| j                            |d           \  }}| j                            |           |j                                        \  \  }}|j        d         }| 	                    |j
        d         d         d           |j                            t                    d	         }d
|_        | 	                    |j
        d         d         d
           d S )Nc                 &    t          dd| g          S Nr   r   r   ys    r1   <lambda>zDBokehRendererTest.test_render_dynamicmap_with_dims.<locals>.<lambda>       E1a)$4$4 r9   r   r\   )皙?r   r   cdsr   r   r   g@)r   redimrR   r)   ry   rk   _plotsvalueshandlesrE   r   r   r   r   value)r0   dmapr   r   r@   r{   r   r   s           r1    test_render_dynamicmap_with_dimsz2BokehRendererTest.test_render_dynamicmap_with_dims   s    44SEBBBHNNQYNZZ((t44Q  %%%**,,$l5!#q)3///"";//2#q)3/////r9   c                     t          j        dd                      }t          d dg|g          }| j                            |d           \  }}| j                            |           |j                                        \  \  }}|j        d         }| 	                    |j
        d         d         d           |                    d           | 	                    |j
        d         d         d           d S )	NCustomr   r   c                 &    t          dd| g          S r   r   r   s    r1   r   zFBokehRendererTest.test_render_dynamicmap_with_stream.<locals>.<lambda>   r   r9   r   r]   streamsr   r   )r   definer   r)   ry   rk   r   r   r   rE   r   event)r0   streamr   r   r   r@   r{   r   s           r1   "test_render_dynamicmap_with_streamz4BokehRendererTest.test_render_dynamicmap_with_stream   s    -x1---//44SEF8TTT((t44Q  %%%**,,$l5!#q)1---q#q)1-----r9   c                 &    t          j        dd                      }t          d ddg|g          j                            g d	          }| j                            |d           \  }}| j                            |           |j                                        \  \  }}|j	        d
         }| 
                    |j        d         d         d           |                    d           | 
                    |j        d         d         d           | 
                    |j        d         d         d           |j                            t                    d         }d|_        | 
                    |j        d         d         d           d S )Nr   r   r   c                 &    t          | d|g          S )Nr   r   )r[   r   s     r1   r   zKBokehRendererTest.test_render_dynamicmap_with_stream_dims.<locals>.<lambda>   s    uaAY'7'7 r9   r[   r   r   )r   r   r   )r[   r   r   r   r   )r   r   r   r   r   r)   ry   rk   r   r   rE   r   r   r   r   r   r   )	r0   r   r   r   r   r@   r{   r   r   s	            r1   'test_render_dynamicmap_with_stream_dimsz9BokehRendererTest.test_render_dynamicmap_with_stream_dims   sp   -x1---//77Sz#)(, , ,,1&&999&2E2E 	((t44Q  %%%**,,$l5!#q)1---q#q)1---#q)1---"">2215#q)1-----r9   N)__name__
__module____qualname__r2   r4   r8   rA   rI   rL   rO   rX   ra   rc   rm   rv   r   r   r   r   r   r   pytestmarkfilterwarningsr   r   r   r   r9   r1   r   r      s       	0 	0 	06 6 6
1 1 1/ / /
- - -
- - -
- - -
- - -- - -- - -C C C2 2 2/ / /
P 
P 
P3 3 3( ( (/ / /8 8 8 [ TUU
0 
0 VU
0 [ TUU
. 
. VU
. [ TUU. . VU. . .r9   r   )$ior   unittestr   numpyr#   panelrz   r-   r   bokeh.ior   bokeh.themes.themer   panel.widgetsr   r   r	   pyviz_commsr
   	holoviewsr   r   r   r   r   r   holoviews.element.comparisonr   holoviews.plottingr   holoviews.plotting.bokehr   holoviews.streamsr   r   r   r9   r1   <module>r      s^                               $ $ $ $ $ $ = = = = = = = = = = # # # # # # I I I I I I I I I I I I I I I I ; ; ; ; ; ; ' ' ' ' ' ' 2 2 2 2 2 2 $ $ $ $ $ $u. u. u. u. u.* u. u. u. u. u.r9   