
    eA                         d dl mZ d dlZd dlmZ d dlmZ d dl	m
Z
 d dlmZ d dlmZ ddlmZ ej        d	         Z G d
 de
          Z G d de          Z G d de          ZdS )    N)concrete_descendents)Store)ComparisonTestCase)ElementPlot)figure_grid   )option_intersectionsplotlyc                   &    e Zd Zd Zd Zd Zd ZdS )TestPlotlyPlotc                 *   t           j        | _        t          j        d           t          j        | _        t          j        t          _        i | _        t          t                                                    D ]}|j        | j        |<   d|_        d S )Nr
   r   )r   current_backendprevious_backendset_current_backendplotly_renderercomm_managercommsCommManager_paddingr   r   valuespadding)selfplots     Ilib/python3.11/site-packages/holoviews/tests/plotting/plotly/test_plot.pysetUpzTestPlotlyPlot.setUp   s     % 5!(++++8','8$(55<<>> 	 	D"&,DM$DLL	 	    c                     | j         t          _        | j        t          _        | j                                        D ]\  }}||_        d S N)r   r   r   r   r   r   itemsr   )r   r   r   s      r   tearDownzTestPlotlyPlot.tearDown   sL     $ 5'+'8$!]0022 	# 	#MD'"DLL	# 	#r   c                 :    t                               |          }|S r   )r   get_plot_state)r   elementfig_dicts      r   _get_plot_statezTestPlotlyPlot._get_plot_state!   s    "11'::r   c                     |                                 D ]a\  }}|                    d          }|}|dd         D ]}|                    |i           }|                     |||d                             bdS )a  
        Assert that a dictionary has the specified properties, handling magic underscore
        notation

        For example

        self.assert_property_values(
            {'a': {'b': 23}, 'c': 42},
            {'a_b': 23, 'c': 42}
        )

        will pass this test
        _N)r   splitgetassertEqual)r   objpropspropval
prop_partsprop_parent	prop_parts           r   assert_property_valuesz%TestPlotlyPlot.assert_property_values%   s      	? 	?ID#CJK'_ = =	)ooi<<S+jn"=>>>>	? 	?r   N)__name__
__module____qualname__r   r    r%   r3    r   r   r   r      sP          # # #  ? ? ? ? ?r   r   c                       e Zd Zg Zd ZdS )TestPlotDefinitionsc                 V    |                      t          d          | j                   d S )Nr
   )r+   r	   known_clashes)r   s    r   test_plotly_option_definitionsz2TestPlotDefinitions.test_plotly_option_definitionsA   s*    -h779KLLLLLr   N)r4   r5   r6   r;   r<   r7   r   r   r9   r9   =   s-        MM M M M Mr   r9   c                   D    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
S )TestPlotlyFigureGridc                 x   t          ddddggidgdddd	d
dddgigdgdddd	ggdd          }t          j        |           |                     |d         d         d         d           |                     |d         d         d         ddgddgd           |                     |d         d         d         d
           |                     |d         d         d         ddgddgd           |                     |d         d         d           |                     |d         d         d           d S )Ntabler   OneTwotypeheader    widthheightdatalayout	parcoords   r   rD   
dimensionsX  r   )row_spacingcolumn_spacingrL   rD   domain皙?g              ?xyrM   rI   rJ   r   goFigurer+   r   figs     r   test_figure_grid_solo_tracesz1TestPlotlyFigureGrid.test_figure_grid_solo_tracesH   s   &"*eU^,<!=? ? @     +'/!Q&8%9; ; <   
  !- - -  		# 	VQ/999VQ1 !3xsCj99	; 	; 	; 	VQ/===VQ1 #SzC99	; 	; 	; 	Xw/666Xx0$77777r   c                 v   t          ddddggidgdddd	d
dddgigdgdddd	ggd          }t          j        |           |                     |d         d         d         d           |                     |d         d         d         ddgddgd           |                     |d         d         d         d
           |                     |d         d         d         ddgddgd           |                     |d         d         d           |                     |d         d         d           d S )Nr@   r   rA   rB   rC   rF   rG   rH   rK   rN   rO   r   rP   rR   r   )rT   rL   rD   rU   rV   rW   rX   rM   rI   rJ   r[   r^   s     r   -test_figure_grid_solo_traces_fig_width_heightzBTestPlotlyFigureGrid.test_figure_grid_solo_traces_fig_width_heighti   s   &"*eU^,<!=? ? @!$55   +'/!Q&8%9; ; <!$557 7
     		# 	VQ/999VQ1 !3xq#h77	9 	9 	9 	VQ/===VQ1 #SzC99	; 	; 	; 	Xw/666Xx0$77777r   c           	      v   t          dddgddgdgdddd	gd
ddgddgdgdddddiidd	ggd          }t          j        |           |                     |d         d         d         d           |                     |d         d         d         d           |                     |d         d         d         ddgddgd           |                     |d         d         d         d
           |                     |d         d         d         d           |                     |d         d         d         ddgddgd           |                     |d         d         d           |                     |d         d         d            |                     |d         d         d         ddi           d S )!Nscatterpolarr   Z         ?rW   rD   thetari  rH   rK   barpolar   g      $@
radialaxistitleradial)rI   rJ   polard   rS   rL   rD   subplotro   rM   rU   ?)rZ   rY   rO   polar2皙?rI   rJ   rG   r[   r^   s     r   test_figure_grid_polar_subplotsz4TestPlotlyFigureGrid.test_figure_grid_polar_subplots   s@   -!"BsCj: : ;   
  *!#S	d= = > ''8)<=  
   $ 		# 	VQ/@@@VQ	2G<<<Xw/9 !4y3x88	: 	: 	: 	VQ/<<<VQ	2H===Xx0: $c{!S::	< 	< 	< 	Xw/555Xx0$777 	Xx0>!8,	. 	. 	. 	. 	.r   c                 b   t          dg ddgdddddgdg d	dgddd
ddggd          }t          j        |           |                     d|d                    |                     t          |d         d                   d           |                     |d         d         d         d         d           |                     |d         d         d         d         d
           |                     |d         d         d           |                     |d         d         d           d S )NscatterrO      r   rD   rZ   rF   zScatter!)rI   rJ   rm   rK   barr   rz   rO   zBar!rp   rq   rm   rM   annotationsr   r   textrO   rI   rJ   i  )r   r\   r]   assertNotInr+   lenr^   s     r   $test_titles_converted_to_annotationsz9TestPlotlyFigureGrid.test_titles_converted_to_annotations   s   (%II' ' ( $  
  %%II' ' (    
  !  & 		##h-000S]=9::A>>>X}5a8@*MMMX}5a8@&III 	Xw/555Xx0#66666r   c                 P   t          dg ddgdddddddd	d
ddddd	gdddg ddgdddddddd	dddddd	gddgg          }t          j        |           |d         d         }|                     t	          |          d           |                     |d         d         d           |                     |d         d         d           |                     |d         d         d           |                     |d         d         d
           |                     |d         d         d           |                     |d         d         d           |                     |d         d         d           |                     |d         d         d           |                     |d         d         d           |                     |d         d         d           |                     |d         d         d           |                     |d         d         d           d S )Nrx   ry   r{   rF   rA   rY   rZ   r   )r   xrefyrefrY   rZ   rB   rO   )rI   rJ   r~   rK   r|   r}   Threer   Fourrz   rM   r~      r   r   r   x2y2r   r\   r]   r+   r   )r   r_   r~   s      r    test_annotations_stick_with_axisz5TestPlotlyFigureGrid.test_annotations_stick_with_axis   s   (%II' ' ( #!31& & $!31& &	!
 
   %%II' ' ( %!31& & %!31& &	!
 
 
   > 		#(mM2[))1---Q/777Q/555Q/555Q/777Q/555Q/555Q/999Q/666Q/666Q/888Q/666Q/66666r   c                 `   t          dg ddgdddddddd	d	d
dddd	d	ddd
gdddg ddgdddddddd	dd
dddddddd
gddgg          }t          j        |           |d         d         }|                     t	          |          d           |                     |d         d         d           |                     |d         d         d           |                     |d         d         d           |                     |d	         d         d           |                     |d	         d         d           |                     |d	         d         d           |                     |d         d         d           |                     |d         d         d           |                     |d         d         d           |                     |d         d         d           |                     |d         d         d           |                     |d         d         d           d S )Nrx   ry   r{   rF   rectrY   rZ   r   rO   )rD   r   r   x0y0x1y1circler   )rI   rJ   shapesrK   r|   r}   linerz   path   rM   r   r   rD   r   r   r   r   r   )r   r_   r   s      r   test_shapes_stick_with_axisz0TestPlotlyFigureGrid.test_shapes_stick_with_axis  s   (%II' ' ( $!3Qaq: : '!3Qaq: :	
 
   %%II' ' ( $!3Qaq: : %!3Qaq: :	
 
 
   > 		#Xx(Va(((6*F3336*C0006*C0006*H5556*C0006*C0006*F3336*D1116*D1116*F3336*D1116*D11111r   c                 P   t          dg ddgdddddddd	d
ddddd	gdddg ddgdddddddd	dddddd	gddgg          }t          j        |           |d         d         }|                     t	          |          d           |                     |d         d         d           |                     |d         d         d           |                     |d         d         d           |                     |d         d         d
           |                     |d         d         d           |                     |d         d         d           |                     |d         d         d           |                     |d         d         d           |                     |d         d         d           |                     |d         d         d           |                     |d         d         d           |                     |d         d         d           d S )Nrx   ry   r{   rF   zOne.pngrY   rZ   r   )sourcer   r   rY   rZ   zTwo.pngrO   )rI   rJ   imagesrK   r|   r}   z	Three.pngr   zFour.pngrz   rM   r   r   r   r   r   r   r   r   )r   r_   r   s      r   test_images_stick_with_axisz0TestPlotlyFigureGrid.test_images_stick_with_axis5  s   (%II' ' (  )!31& & !*!31& &	
 
   %%II' ' ( $/"%s q* * %/"%s q* *	
 
 !
   @ 		#Xx(Va(((8,i8886*C0006*C0008,i8886*C0006*C0008,k:::6*D1116*D1118,j9996*D1116*D11111r   c                 ^   t          dg ddgdddddg ddgddddgd	d
dgddgdgddddddddggidgddddggdddd          }d
dgddgg}d
dgddgg}|                     |d         d          d!         |d
                    |                     |d         d"         d!         |d
                    |                     |d         d#         d!         |d                    |                     |d         d$         d!         |d
                    |                     |d         d%         d!         d&         |d
                    |                     |d         d%         d!         d'         |d                    |                     |d(         d)         d!         d&         |d                    |                     |d(         d)         d!         d'         |d                    |                     |d         d*         d           |                     |d         d+         d           d S ),Nrx   ry   r{   i|  rH   rK   r|   r}   rd   r   re   rf   rW   rg   it  r@   r   rA   rB   rC   (   P   rF   i   )rT   rS   rI   rJ   rs   ru   rO   g?g?rM   xaxisrU   yaxisxaxis2yaxis2ro   rY   rZ   rL   rz   rI   rJ   )r   r+   )r   r_   expected_x_domainsexpected_y_domainss       r   test_width_height_with_spacingz3TestPlotlyFigureGrid.test_width_height_with_spacingj  s   (%II' ' (    ! !  %%II' ' (    ! !
  .!"BsCj: : ;     '"*eU^,<!=? ? @ ! ! 
2 2c5# # #:  !$i$3 %j5!*5 	Xw/9;Ma;PQQQXw/9;Ma;PQQQ 	Xx0:<Nq<QRRRXx0:<Nq<QRRR 	Xw/9#>@RST@UVVVXw/9#>@RST@UVVV 	VQ1#68J18MNNNVQ1#68J18MNNN 	Xw/555Xx0#66666r   c           	         t          dg dddddg ddd	dgd
d
ddiddiddgdg dddddg ddd	dgd
d
ddiddiddggdd          }|                     |d         d         d         d           |                     |d         d         d         d           |                     |d         d         d         d           |                     |d         d         d         d	           |                     |d         d         d         d           |                     |d         d         d         d           |                     |d         d         d         d           |                     |d         d         d         d           |                     |d         d                             dd           d            |                     |d         d                             dd           d            |                     |d         d                             dd           d           |                     |d         d                             dd           d           |                     |d         d                             dd           d            |                     |d         d                             dd           d            |                     |d         d                             dd           d           |                     |d         d                              dd           d           d S )!Nrx   ry   rY   rZ   )rD   rZ   r   r   r|   r}   r   r   rF   matches)rI   rJ   r   r   rK   r   )rT   rS   rL   r   r   rO   r   x3y3rz   x4y4rM   r   r   xaxis3yaxis3xaxis4yaxis4)r   r+   r*   r^   s     r   test_axis_matching_offsetz.TestPlotlyFigureGrid.test_axis_matching_offset  s   (%II # #% %  %%II $ $ 	 %s+%s+	  
"  )%II # # 
  %%II $ $ 	 %s+%s+	  
!!B !C!- !- !-H 	VQ0#666VQ0#666VQ0$777VQ0$777VQ0$777VQ0$777VQ0$777VQ0$777 	Xw/33ItDDdKKKXw/33ItDDdKKKXx044YEEsKKKXx044YEEsKKKXx044YEEtLLLXx044YEEtLLLXx044YEEtLLLXx044YEEtLLLLLr   N)r4   r5   r6   r`   rb   rv   r   r   r   r   r   r   r7   r   r   r>   r>   F   s        8 8 8B8 8 88'. '. '.R7 7 7>27 27 27h22 22 22h32 32 32j37 37 37j9M 9M 9M 9M 9Mr   r>   )plotly.graph_objs
graph_objsr\   pyviz_commsr   paramr   holoviews.corer   holoviews.element.comparisonr   !holoviews.plotting.plotly.elementr   holoviews.plotting.plotly.utilr    r	   	renderersr   r   r9   r>   r7   r   r   <module>r      sA             & & & & & &             ; ; ; ; ; ; 9 9 9 9 9 9 6 6 6 6 6 6 # # # # # #/(++? +? +? +? +?' +? +? +?\M M M M M. M M MRM RM RM RM RM> RM RM RM RM RMr   