
    e;                         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 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 G d de          ZdS )    N)style)	PolarAxes)FormatStrFormatterFuncFormatterPercentFormatter)
DynamicMap)CurveHeatMapImageScatter	Scatter3D)Stream   )LoggingComparisonTestCase   )TestMPLPlotmpl_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S )TestElementPlotc                 T    t          j        dd                      }t          d |g          }t          j        |          }|                     t          |j                             |                                 | 	                    t          |j                             d S )NTestr   testc                      t          g           S )N)r	   r   s    Tlib/python3.11/site-packages/holoviews/tests/plotting/matplotlib/test_elementplot.py<lambda>z5TestElementPlot.test_stream_cleanup.<locals>.<lambda>   s    uRyy     )streams)
r   definer   r   get_plot
assertTruebool_subscriberscleanupassertFalse)selfstreamdmapplots       r   test_stream_cleanupz#TestElementPlot.test_stream_cleanup   s    .vA...00006(CCC$T**V011222f12233333r   c                     d }t          t          d          d                              |g          }t          j        |          }|                     |j        d                                         d           d S )Nc                 F    | j         d                             d           d S )NtitleCalled)handlesset_text)r)   elements     r   hookz0TestElementPlot.test_element_hooks.<locals>.hook   s#    L!**844444r   
   z
Not Calledlabel)hooksr-   r.   )r	   rangeoptsr   r    assertEqualr/   get_text)r&   r2   curver)   s       r   test_element_hooksz"TestElementPlot.test_element_hooks   s{    	5 	5 	5eBii|444999GG$U++g.77998DDDDDr   c                    t          t          d                                        dd          }t          j        ddddd          5  t          j        |          }d d d            n# 1 swxY w Y   |j        d         }|                     |j	        
                                d           |                     |j        j        
                                d	           |                     |j        j        
                                d	           |                     |j        j        d
         d	           |                     |j        j        d
         d	           d S )Nr3      A title)	fontscaler-      axes.labelsizeaxes.titlesizextick.labelsizeytick.labelsizeaxis      	labelsizer	   r7   optionsr   contextr   r    r/   r9   r-   get_fontsizexaxisr5   yaxis_major_tick_kwr&   r;   r)   axs       r   test_element_font_scalingz)TestElementPlot.test_element_font_scaling   s{   eBii  ((1I(FF]"$"$#%#%	 
 
 	0 	0  (//D	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 \&!..00"5554466;;;4466;;;0=rBBB0=rBBBBBs   A,,A03A0c                    t          t          d                                        ddd          }t          j        dddddd          5  t          j        |          }d d d            n# 1 swxY w Y   |j        d         }|                     |j	        
                                d	           |                     |j        j        
                                d	           |                     |j        j        
                                d	           |                     |j        j        d
         d           |                     |j        j        d
         d           d S )Nr3   r>      r?   r@   fontsizer-   rA   )rC   rD   z	font.sizerE   rF   rG      rJ   rI   rK   rR   s       r   2test_element_font_scaling_fontsize_override_commonzBTestElementPlot.test_element_font_scaling_fontsize_override_common1   s   eBii  ((1r(SS]"$"$#%#% 
 
 		0 		0  (//D		0 		0 		0 		0 		0 		0 		0 		0 		0 		0 		0 		0 		0 		0 		0 \&!..00"5554466;;;4466;;;0=rBBB0=rBBBBBs   A..A25A2c                    t          t          d                                        dddddd          }t          j        ddddd	          5  t          j        |          }d d d            n# 1 swxY w Y   |j        d
         }|                     |j	        
                                d           |                     |j        j        
                                d           |                     |j        j        
                                d           |                     |j        j        d         d           |                     |j        j        d         d           d S )Nr3   r>      rA      )r-   xticksxlabelr?   rW   rB   rG       rI   rJ   rH   )r	   r7   r8   r   rM   r   r    r/   r9   r-   rN   rO   r5   rP   rQ   rR   s       r   4test_element_font_scaling_fontsize_override_specificzDTestElementPlot.test_element_font_scaling_fontsize_override_specificD   s   eBii  %%B""J"JR[ & ] ]]"$"$#%#%	 
 
 	0 	0  (//D	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 \&!..00"5554466;;;4466;;;0=rBBB0=rBBBBBs   A11A58A5c                    t          t          d                                        d d           }t          j        |          j        d         }|                                }|                                }|                     |	                                d           |                     |	                                d           d S )Nr3   )rO   rP   rG   F)
r	   r7   r8   r   r    r/   	get_xaxis	get_yaxisr9   get_visible)r&   r1   axesrO   rP   s        r   test_element_no_xaxis_yaxisz+TestElementPlot.test_element_no_xaxis_yaxisW   s    b		""''d$'??$W--5f=    **,,e444**,,e44444r   c                     t          t          d                                        d          }t          j        |          j        d         }|                     |                                d           d S )Nr3   zcustom x-label)r_   rG   )r	   r7   r8   r   r    r/   r9   
get_xlabelr&   r1   rf   s      r   test_element_xlabelz#TestElementPlot.test_element_xlabel_   f    b		""''/?'@@$W--5f=**,<=====r   c                     t          t          d                                        d          }t          j        |          j        d         }|                     |                                d           d S )Nr3   zcustom y-label)ylabelrG   )r	   r7   r8   r   r    r/   r9   
get_ylabelrj   s      r   test_element_ylabelz#TestElementPlot.test_element_ylabeld   rl   r   c                 F   t          t          d                                        d          }t          j        |          }|j        d         j        }|                                }|                     |t                     | 
                    |j        d           d S )Nr3   %d
xformatterrG   )r	   r7   r8   r   r    r/   rO   get_major_formatterassertIsInstancer   r9   fmt)r&   r;   r)   rO   rt   s        r   test_element_xformatter_stringz.TestElementPlot.test_element_xformatter_stringi       eBii  %%%66$U++V$*..00
j*<===.....r   c                 F   t          t          d                                        d          }t          j        |          }|j        d         j        }|                                }|                     |t                     | 
                    |j        d           d S )Nr3   rr   
yformatterrG   )r	   r7   r8   r   r    r/   rP   ru   rv   r   r9   rw   )r&   r;   r)   rP   r|   s        r   test_element_yformatter_stringz.TestElementPlot.test_element_yformatter_stringq   ry   r   c                 ,   t          g                               d          }t          j        |          }|j        d         j        }|                                }|                     |t                     | 	                    |j
        d           d S )Nrr   
zformatterrG   )r   r8   r   r    r/   zaxisru   rv   r   r9   rw   )r&   r;   r)   r   r   s        r   test_element_zformatter_stringz.TestElementPlot.test_element_zformatter_stringy   s    """d"33$U++V$*..00
j*<===.....r   c                    d }t          t          d                                        |          }t          j        |          }|j        d         j        }|                                }|                     |t                     d S )Nc                 &    t          |           dz   S Nz %strvalues    r   	formatterzCTestElementPlot.test_element_xformatter_function.<locals>.formatter       u::$$r   r3   rs   rG   )
r	   r7   r8   r   r    r/   rO   ru   rv   r   r&   r   r;   r)   rO   rt   s         r    test_element_xformatter_functionz0TestElementPlot.test_element_xformatter_function       	% 	% 	%eBii  %%%;;$U++V$*..00
j-88888r   c                    d }t          t          d                                        |          }t          j        |          }|j        d         j        }|                                }|                     |t                     d S )Nc                 &    t          |           dz   S r   r   r   s    r   r   zCTestElementPlot.test_element_yformatter_function.<locals>.formatter   r   r   r3   r{   rG   )
r	   r7   r8   r   r    r/   rP   ru   rv   r   r&   r   r;   r)   rP   r|   s         r    test_element_yformatter_functionz0TestElementPlot.test_element_yformatter_function   r   r   c                     d }t          g                               |          }t          j        |          }|j        d         j        }|                                }|                     |t                     d S )Nc                 &    t          |           dz   S r   r   r   s    r   r   zCTestElementPlot.test_element_zformatter_function.<locals>.formatter   r   r   r   rG   )	r   r8   r   r    r/   r   ru   rv   r   r&   r   r;   r)   r   r   s         r    test_element_zformatter_functionz0TestElementPlot.test_element_zformatter_function   sy    	% 	% 	%"""i"88$U++V$*..00
j-88888r   c                 "   t                      }t          t          d                                        |          }t	          j        |          }|j        d         j        }|                                }| 	                    ||           d S )Nr3   rs   rG   )
r   r	   r7   r8   r   r    r/   rO   ru   assertIsr   s         r    test_element_xformatter_instancez0TestElementPlot.test_element_xformatter_instance   {    $&&	eBii  %%%;;$U++V$*..00
j),,,,,r   c                 "   t                      }t          t          d                                        |          }t	          j        |          }|j        d         j        }|                                }| 	                    ||           d S )Nr3   r{   rG   )
r   r	   r7   r8   r   r    r/   rP   ru   r   r   s         r    test_element_yformatter_instancez0TestElementPlot.test_element_yformatter_instance   r   r   c                    t                      }t          g                               |          }t          j        |          }|j        d         j        }|                                }|                     ||           d S )Nr   rG   )	r   r   r8   r   r    r/   r   ru   r   r   s         r    test_element_zformatter_instancez0TestElementPlot.test_element_zformatter_instance   ss    $&&	"""i"88$U++V$*..00
j),,,,,r   c                    t          j        ddd          }t          j        t          |                    }t	          ||fdd                              d          }t          j        |          }|j        d         }| 	                    |t                     |                     |                                dd	t           j        z  f           d S )
Nr   g@g?thetarpolar)
projectionrG   r>   )nparangeoneslenr   r8   r   r    r/   rv   r   r9   get_xlimpi)r&   r   r   scatterr)   rS   s         r   test_element_polar_xlimitsz*TestElementPlot.test_element_polar_xlimits   s    	!S#&&GCJJ5!*gs3388G8LL$W--\&!b),,,AI77777r   c                    t          g d                              ddddgddgd	          }t          j        |          }|j        d
         }|                     |j        j                                        	                                d           |                     |
                                d           d |j                                        D             }|                     |ddg           d S )Nr   r>   r   )r>   r      )r   r      TTesting      @r   AB)zcolorbar.set_labelzcolorbar.set_tickszcolorbar.ax.yticklabelscolorbarbackend_optscbarr   r   c                 6    g | ]}|                                 S  r:   .0	ticklabels     r   
<listcomp>z=TestElementPlot.test_element_backend_opts.<locals>.<listcomp>   $    ZZZyi((**ZZZr   r
   r8   r   r    r/   r9   rS   rP   	get_labelr:   	get_ticksget_yticklabelsr&   heat_mapr)   r   
ticklabelss        r   test_element_backend_optsz)TestElementPlot.test_element_backend_opts   s    <<<==BB&/'*Ah,/:  C 
 
 $X..<'*4466??AA9MMM++--x888ZZHK<W<W<Y<YZZZ
c3Z00000r   c                    t          g d                              ddddgddgd	          }t          j        |          }|j        d
         }|                     |j        j                                        	                                d           |                     |
                                d           d |j                                        D             }|                     |ddg           d S )Nr   Tr   r   r   r   r   )zcbar.set_labelzcbar.set_tickszcbar.ax.yticklabelsr   r   r   c                 6    g | ]}|                                 S r   r   r   s     r   r   zCTestElementPlot.test_element_backend_opts_alias.<locals>.<listcomp>   r   r   r   r   s        r   test_element_backend_opts_aliasz/TestElementPlot.test_element_backend_opts_alias   s    <<<==BB"+#&((+Sz  C 
 
 $X..<'*4466??AA9MMM++--x888ZZHK<W<W<Y<YZZZ
c3Z00000r   c                    t          g dd          }t          g dd          }||z                      dddi	          }t          j        |          }|j        d
         }|                     |                                           d S )Nr   ar4   r   r   	   bTzlegend.frame_onFshow_legendr   legend)r	   r8   r   r    r/   r%   get_frame_onr&   r   r   r;   r)   r   s         r    test_element_backend_opts_methodz0TestElementPlot.test_element_backend_opts_method   s    )))3''')))3'''Q!5  
 
 $U++h',,../////r   c                 @   t          g dd          }t          g dd          }||z                      dddi	          }t          j        |          }|j        d
         }|                     |                                                                d           d S )Nr   r   r4   r   r   Tzlegend.get_title().set_fontsize   r   r   )r	   r8   r   r    r/   r9   	get_titlerN   r   s         r   +test_element_backend_opts_sequential_methodz;TestElementPlot.test_element_backend_opts_sequential_method   s    )))3''')))3'''Q13  
 
 $U++h'))++88::C@@@@@r   c                    t          g dd          }t          g dd          }t          g dd          }t          g dd	          }t          g dd
          }||z  |z  |z  |z                      ddddd          }t          j        |          }|j        d         }|                     |                                d                                         d           |                     |                                d                                         d           |                     |                                d                                         d           |                     |                                d                                         d           |                     |                                d                                         d           d S )Nr   r   r4   r   r   )r   r      c)r   r   $   deTr   i   i  )zlegend.get_texts()[0].fontsizez legend.get_texts()[1:3].fontsizez legend.get_texts()[3,4].fontsizer   r   r   r   r>   r   r   )r	   r8   r   r    r/   r9   	get_textsrN   )	r&   r   r   r   r   r   r;   r)   r   s	            r   !test_element_backend_opts_getitemz1TestElementPlot.test_element_backend_opts_getitem   s   )))3''')))3'''***C(((***C(((***C(((QQ"((254747  ) 
 
 $U++h'))++A.;;==sCCC))++A.;;==sCCC))++A.;;==sCCC))++A.;;==sCCC))++A.;;==sCCCCCr   c                     t          g d                              dddi          }t          j        |           | j                            dd           d S )Nr   Tr   r   r   WARNINGz-Custom option 'colorbar' expects at least twor
   r8   r   r    log_handlerassertContainsr&   r   s     r   'test_element_backend_opts_two_accessorsz7TestElementPlot.test_element_backend_opts_two_accessors  st    <<<==BBY(? C 
 
 	h'''''F	
 	
 	
 	
 	
r   c                     t          g d                              dddi          }t          j        |           | j                            dd           d S )Nr   Tzcb.titler   r   r   zcb model could not ber   r   s     r   ,test_element_backend_opts_model_not_resolvedz<TestElementPlot.test_element_backend_opts_model_not_resolved  st    <<<==BBY(? C 
 
 	h'''''.	
 	
 	
 	
 	
r   c                     t          g dd          }t          g dd          }||z                      dddi	          }t          j        |           | j                            d
d           d S )Nr   r   r4   r   r   Tz legend.get_texts()[0,1].f0ntzisei+  r   r   z#valid method on the specified model)r	   r8   r   r    r   r   )r&   r   r   r;   s       r   .test_element_backend_opts_model_invalid_methodz>TestElementPlot.test_element_backend_opts_model_invalid_method#  s    )))3''')))3'''Q2C  
 
 	e$$$''<	
 	
 	
 	
 	
r   N)__name__
__module____qualname__r*   r<   rT   rZ   ra   rg   rk   rp   rx   r}   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r      s       4 4 4E E EC C C$C C C&C C C&5 5 5> > >
> > >
/ / // / // / /9 9 99 9 99 9 9- - -- - -- - -8 8 81 1 1 1 1 1 0 0 0A A AD D D,
 
 

 
 

 
 
 
 
r   r   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 )TestColorbarPlotc                    t          t          j        g dg dg                              d                    }t	          j        |          }|j        d         }|                     |                                d           d S )Nr   r   r   r>   r>   r>   r   r   uint16artist)r   r   )	r   r   arrayastyper   r    r/   r9   get_climr&   imgr)   r   s       r   test_colormapper_unsigned_intz.TestColorbarPlot.test_colormapper_unsigned_int4  sv    BHlllLLL9::AA(KKLL$S))h'**F33333r   c                    t          t          j        ddgddgg                                        d          }t	          j        |          }|j        d         }|                     |                                d           d S )	Nr   r   r>   r   T)	symmetricr   )r   	r   r   r   r8   r   r    r/   r9   r   r   s       r   test_colormapper_symmetricz+TestColorbarPlot.test_colormapper_symmetric:  sy    BHq!fq!f-..//44t4DD$S))h'**G44444r   c                    t          t          j        ddgddgg                                        d          }t	          j        |          }|j        d         }|                     |                                d           d S )Nr   r   r>   r   )r   r   )climsr   r  r   s       r   test_colormapper_climsz'TestColorbarPlot.test_colormapper_clims@  sy    BHq!fq!f-..//4464BB$S))h'**F33333r   c                    t          t          j        ddgddgg                                        d          }t	          j        |          }|j        d         }|                     t          |j	        j
                  d           d S )Nr   r   r>   r   r   )color_levelsr   )r   r   r   r8   r   r    r/   r9   r   cmapcolorsr   s       r   test_colormapper_color_levelsz.TestColorbarPlot.test_colormapper_color_levelsF  s|    BHq!fq!f-..//44!4DD$S))h'V[/00!44444r   c                    t          t          j        ddgddgg                                        ddi          }t	          j        |          }|j        d         j        }|                     |j	        d	           d S )
Nr   r   r>   r   NaNtransparentclipping_colorsr   )      ?r  r  r   )
r   r   r   r8   r   r    r/   r	  r9   	_rgba_badr&   r   r)   r	  s       r    test_colormapper_transparent_nanz1TestColorbarPlot.test_colormapper_transparent_nanL  sz    BHq!fq!f-..//44e]E[4\\$S))|H%*);<<<<<r   c                 :   t          t          j        ddgddgg                                        ddd          }t	          j        |          }|j        d	         j        }|                     |j	        d
           |                     |j
        d           d S )Nr   r   r>   r   redblue)minmaxr  r   )r  r   r   r   )r   r   r  r   )r   r   r   r8   r   r    r/   r	  r9   _rgba_under
_rgba_overr  s       r   test_colormapper_min_max_colorsz0TestColorbarPlot.test_colormapper_min_max_colorsR  s    BHq!fq!f-..//44U[aEbEb4cc$S))|H%*)>:::.99999r   c                 $   t          t          j                            dd          ddg                              dd          }t          j        |          }|j        d	         }|                     |	                                d           d S )
Nd   r   ycolorvdimsr>   T)color_indexr   cax
r   r   randomrandr8   r   r    r/   r9   ro   r&   r   r)   cbar_axs       r   test_colorbar_labelz$TestColorbarPlot.test_colorbar_labelY  s    ")..a00gGGGLLYZeiLjj$W--,u%++--w77777r   c                    t          t          j        g dg dg                                        dd          }t	          j        |          }|j        d         }|                     |                                d           d S )Nr   r    T)clabelr   r$  )	r   r   r   r8   r   r    r/   r9   r   )r&   r   r)   r   s       r   test_colorbar_empty_clabelz+TestColorbarPlot.test_colorbar_empty_clabel_  s~    BHlllLLL9::;;@@UY@ZZ$S))<&++--r22222r   c                 $   t          t          j                            dd          ddg                              dd          }t          j        |          }|j        d         }|                     |	                                d           d S )	Nr  r   r  r   r!  T)r   r   r$  r%  r(  s       r   !test_colorbar_label_style_mappingz2TestColorbarPlot.test_colorbar_label_style_mappinge  s    ")..a00gGGGLLSZeiLjj$W--,u%++--w77777r   N)r   r   r   r   r  r  r  r  r  r*  r.  r0  r   r   r   r   r   2  s        4 4 45 5 54 4 45 5 5= = =: : :8 8 83 3 38 8 8 8 8r   r   c                       e Zd Zd ZdS )TestOverlayPlotc                 <   t          t          j                            d                                          d          t          t          j                            d                                          d          z                      ddd          }t          j        |          }|j        d	         	                                }| 
                    |                                d           | 
                    |                                d
           d S )Nr3   r   r4   r         ?r  )
framealpha	facecolor)legend_optsr   )r          r8  r4  )r	   r   r&  randncumsumr8   r   r    r/   	get_framer9   	get_alphaget_facecolor)r&   overlayr)   legend_frames       r   test_overlay_legend_optsz(TestOverlayPlot.test_overlay_legend_optsn  s    ")//"%%,,..c:::")//"%%,,..c:::;
$#EBB$
C
C 	 $W--|H-7799//11377733557KLLLLLr   N)r   r   r   r@  r   r   r   r2  r2  l  s(        M M M M Mr   r2  )numpyr   
matplotlibr   matplotlib.projectionsr   matplotlib.tickerr   r   r   holoviews.core.spacesr   holoviews.elementr	   r
   r   r   r   holoviews.streamsr   utilsr   	test_plotr   r   r   r   r2  r   r   r   <module>rJ     sj             , , , , , , Q Q Q Q Q Q Q Q Q Q , , , , , , G G G G G G G G G G G G G G $ $ $ $ $ $ . . . . . . 0 0 0 0 0 0 0 0a
 a
 a
 a
 a
/ a
 a
 a
H	78 78 78 78 78{ 78 78 78t
M 
M 
M 
M 
Mk 
M 
M 
M 
M 
Mr   