
    e.                         d Z ddlZddlmZ ddlZddlZddl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mZ ddlmZ dd	lmZmZ dd
lmZ ddl m!Z!  G d de          Z"dS )z$
Test cases for rendering exporters
    N)SkipTest)style)DiscreteSliderFloatSliderPlayer)CommManager)Curve
DynamicMap	GridSpaceHoloMapImage	ItemTableTable)ComparisonTestCase)	CurvePlotMPLRenderer)Renderer)Streamc                   ~    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S )MPLRendererTestz}
    Note if not possible to compare the hashes of SVG and WebM formats
    as the hashes are not stable across exports.
    c                 L   d| _         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          ddg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 )Nzno-filer            Image1)label   Image2r   r   TestMap)u   βu   Δ1)u   °Cu   3×4u	   Poincaréu   α Festkörperphysik)r   groupERRORF)basenamer   nparrayimage1image2r   map1r   unicode_tabler   instancerendererr   notebook_context	nbcontextcomm_managerparamlogging_levelr   selfs    Qlib/python3.11/site-packages/holoviews/tests/plotting/matplotlib/test_renderer.pysetUpzMPLRendererTest.setUp   sP   !BHqeQqE]338DDDBHqeQrF^44HEEEt{dk::)LLL	&o'F-8@VX X X $,..!2$1 )) 	0 	0(-H%$/H!	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0s   .DD Dc                     t          j        d          5  | j        t          _        | j        t          _        d d d            d S # 1 swxY w Y   d S )Nr#   )r0   r1   r.   r   r-   r/   r2   s    r4   tearDownzMPLRendererTest.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                     | j                             | j                  }| j                             |          \  }}|                     ||fd           d S )N   r:   )r,   get_plotr'   get_sizeassertEqualr3   plotwhs       r4   test_get_size_single_plotz)MPLRendererTest.test_get_size_single_plot0   sR    }%%dk22}%%d++1!Q,,,,,    c                    t          j        d          5  | j                            | j        | j        z             }d d d            n# 1 swxY w Y   | j                            |          \  }}||fdk    s
||fdk    sJ d S d S )Ndefault)@  i  )rF   i  )r   contextr,   r;   r'   r(   r<   r>   s       r4   test_get_size_row_plotz&MPLRendererTest.test_get_size_row_plot5   s    ]9%% 	E 	E=))$+*CDDD	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E}%%d++11v##1v';';';';##';';s   (A		AAc                 4   t          j        d          5  | j                            | j        | j        z                       d                    }d d d            n# 1 swxY w Y   | j                            |          \  }}||fdk    s
||fdk    sJ d S d S )NrE   r   )r:   i  )r:   i  )r   rG   r,   r;   r'   r(   colsr<   r>   s       r4   test_get_size_column_plotz)MPLRendererTest.test_get_size_column_plot<   s    ]9%% 	O 	O=))4;+D*J*J1*M*MNND	O 	O 	O 	O 	O 	O 	O 	O 	O 	O 	O 	O 	O 	O 	O}%%d++11v##1v';';';';##';';s   ;AA #A 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jr3   s      r4   
<dictcomp>z;MPLRendererTest.test_get_size_grid_plot.<locals>.<dictcomp>D   s4    RRR!qRRA1a&$+RRRRrC   r   )Y  rS   )r   rN   r,   r;   r<   r=   )r3   gridr?   r@   rA   s   `    r4   test_get_size_grid_plotz'MPLRendererTest.test_get_size_grid_plotC   sy    RRRRuQxxRRRSS}%%d++}%%d++1!Q,,,,,rC   c                     t          t          d          dg          }| j                            |          }| j                            |          \  }}|                     ||fd           d S )N
   xkdimsr9   )r   rN   r,   r;   r<   r=   )r3   tabler?   r@   rA   s        r4   test_get_size_tablez#MPLRendererTest.test_get_size_tableI   sj    eBiiu---}%%e,,}%%d++1!Q,,,,,rC   c                     | j                             | j        d          \  }}|                     d|d                    d S )Ngifz<img src='data:image/gif	text/html)r,   
componentsr)   assertIn)r3   datametadatas      r4   test_render_gifzMPLRendererTest.test_render_gifO   s?    11$)UCCh0${2CDDDDDrC   c                    t           j        }	 t          j        ddg||           n# t          $ r t	          d          w xY w| j                            | j        d          \  }}|                     d|d                    d S )Nffmpegz-h)stdoutstderrz.ffmpeg not available, skipping mp4 export testmp4z<source src='data:video/mp4r_   )	
subprocessDEVNULLcall	Exceptionr   r,   r`   r)   ra   )r3   devnullrb   rc   s       r4   test_render_mp4zMPLRendererTest.test_render_mp4S   s    $	MOXt,WWMMMMM 	M 	M 	MKLLL	M11$)UCCh3T+5FGGGGGs	   ( Ac                     t          g           }| j                            |d           \  }}|                     |t                     d S )N)r	   r,   	_validateassertIsInstancer   )r3   curveobj_s       r4   test_render_staticz"MPLRendererTest.test_render_static\   sD    b		((55Qc9-----rC   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	   rO   rP   s     r4   rR   zBMPLRendererTest.test_render_holomap_individual.<locals>.<dictcomp>b   (    >>>5!Q++>>>rC      Tright
individualr   r   c                 0    g | ]}t          |          |fS  )strrz   s     r4   
<listcomp>zBMPLRendererTest.test_render_holomap_individual.<locals>.<listcomp>k   s"    .M.M.MqA{.M.M.MrC   )r   rN   r,   rq   rr   pnpane	HoloViewsr=   centerwidget_locationwidget_typelayoutselectr   lenoptionsdict)r3   hmaprt   ru   widgetssliders         r4   test_render_holomap_individualz.MPLRendererTest.test_render_holomap_individuala   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OrC   c                     t          d t          d          D                       }| j                            |          \  }}|                     d|d                    d S )Nc                 4    i | ]}|t          d d|g          S r    ry   rz   s     r4   rR   z@MPLRendererTest.test_render_holomap_embedded.<locals>.<dictcomp>n   r{   rC   r|   zState"r_   )r   rN   r,   r`   ra   )r3   r   rb   ru   s       r4   test_render_holomap_embeddedz,MPLRendererTest.test_render_holomap_embeddedm   s\    >>U1XX>>>??-**400ah[ 122222rC   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    ry   rz   s     r4   rR   z@MPLRendererTest.test_render_holomap_scrubber.<locals>.<dictcomp>x   r{   rC   r|   scrubberTbottomr   r   r   )r   rN   r,   rq   rr   r   r   r   r=   r   r   r   r   r   r   r   startendr3   r   rt   ru   r   players         r4   test_render_holomap_scrubberz,MPLRendererTest.test_render_holomap_scrubberw   s   >>U1XX>>>??((z::Qc27#4555T***,h777*555*##F++Wq)))q)))Q'''''rC   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    ry   rz   s     r4   rR   zDMPLRendererTest.test_render_holomap_scrubber_fps.<locals>.<dictcomp>   r{   rC   r|   r   )fpsr   r   r   i  )r   rN   r,   r+   rq   rr   r   r   r   r   r   r   r=   r   intervalr   s         r4    test_render_holomap_scrubber_fpsz0MPLRendererTest.test_render_holomap_scrubber_fps   s    >>U1XX>>>??''A'..88zJJQc27#4555*##F++Wq)))#.....rC   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    ry   rz   s     r4   rR   zRMPLRendererTest.test_render_holomap_individual_widget_position.<locals>.<dictcomp>   r{   rC   r|   top)r   Tr~   )r   rN   r,   r+   rq   rr   r   r   r   r=   r   r   r   )r3   r   rt   ru   s       r4   .test_render_holomap_individual_widget_positionz>MPLRendererTest.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7rC   c                 H   t          d dg          j                            d          }| j                            |d           \  }}| j                            |           |j                                        \  \  }}|j        d         }|	                                \  }}| 
                    |d         d           |j                            t                    d	         }d
|_        |	                                \  }}| 
                    |d         d
           d S )Nc                 &    t          dd| g          S Nr   r   ry   ys    r4   <lambda>zBMPLRendererTest.test_render_dynamicmap_with_dims.<locals>.<lambda>       E1a)$4$4 rC   r   rY   )皙?r|   r   artistr   r   r   g@)r
   redimrN   r,   rq   r`   _plotsvalueshandlesget_datar=   r   r   r   value)	r3   dmaprt   ru   r?   r   r   r   r   s	            r4    test_render_dynamicmap_with_dimsz0MPLRendererTest.test_render_dynamicmap_with_dims   s   44SEBBBHNNQYNZZ((t44Q  %%%**,,$h'""A1s###"";//2""A1s#####rC   c                 *    t          j        dd                      }t          d dg|g          }| j                            |d           \  }}| j                            |           |j                                        \  \  }}|j        d         }|	                                \  }}| 
                    |d         d           |                    d           |	                                \  }}| 
                    |d         d           d S )	NCustomr   r   c                 &    t          dd| g          S r   ry   r   s    r4   r   zDMPLRendererTest.test_render_dynamicmap_with_stream.<locals>.<lambda>   r   rC   r   rZ   streamsr   r   )r   definer
   r,   rq   r`   r   r   r   r   r=   event)	r3   streamr   rt   ru   r?   r   r   r   s	            r4   "test_render_dynamicmap_with_streamz2MPLRendererTest.test_render_dynamicmap_with_stream   s   -x1---//44SEF8TTT((t44Q  %%%**,,$h'""A1q!!!q""A1q!!!!!rC   c                     t          j        dd                      }t          d ddg|g          j                            g d	          }| j                            |d           \  }}| j                            |           |j                                        \  \  }}|j	        d
         }|
                                \  }}|                     |d         d           |                    d           |
                                \  }}|                     |d         d           |
                                \  }}|                     |d         d           |j                            t                    d         }	d|	_        |
                                \  }}|                     |d         d           d S )Nr   r   r   c                 &    t          | d|g          S )Nr   ry   )rX   r   s     r4   r   zIMPLRendererTest.test_render_dynamicmap_with_stream_dims.<locals>.<lambda>   s    uaAY'7'7 rC   rX   r   r   )r   r   r   )rX   r   r   r   r   )r   r   r
   r   r   r,   rq   r`   r   r   r   r=   r   r   r   r   r   )
r3   r   r   rt   ru   r?   r   r   r   r   s
             r4   'test_render_dynamicmap_with_stream_dimsz7MPLRendererTest.test_render_dynamicmap_with_stream_dims   s   -x1---//77Sz#)(, , ,,1&&999&2E2E 	((t44Q  %%%**,,$h'""A1q!!!q""A1q!!!""A1q!!!"">2215""A1q!!!!!rC   N)__name__
__module____qualname____doc__r5   r7   rB   rH   rK   rU   r\   rd   ro   rv   r   r   r   r   r   r   r   r   r   rC   r4   r   r      s5        
0 0 0 6 6 6
- - -
< < << < <- - -- - -E E EH H H. . .

P 
P 
P3 3 3( ( (/ / /8 8 8$ $ $" " "" " " " "rC   r   )#r   rj   unittestr   numpyr%   panelr   r0   
matplotlibr   panel.widgetsr   r   r   pyviz_commsr   	holoviewsr	   r
   r   r   r   r   r   holoviews.element.comparisonr   holoviews.plotting.mplr   r   holoviews.plotting.rendererr   holoviews.streamsr   r   r   rC   r4   <module>r      sU                             = = = = = = = = = = # # # # # # T T T T T T T T T T T T T T T T T T ; ; ; ; ; ; 9 9 9 9 9 9 9 9 0 0 0 0 0 0 $ $ $ $ $ $p" p" p" p" p"( p" p" p" p" p"rC   