
    ]e8                     "   d dl Z 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Zd dlZd dlmZmZ d dl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 d d
lmZ d dlm Z  d dl!m"Z"  G d de          Z# G d de          Z$ G d de          Z%dS )    N)SkipTest)parameterized)Storerender)ImageQuadMeshPoints)
DynamicMap)Overlay)Scatter)ComparisonTestCase)HoloViewsConverter)makeTimeDataFrame)Versionc                      e Zd Zd Zd Z ej        ddg          d             Z ej        ddg          d             Z ej        ddg          d             Z	d Z
d	 Zd
 Zd Zd Z ej        ddg          d             Z ej        ddg          d             Z ej        ddg          d             Z ej        ddg          d             Zd Zd Zd Zd Z ej        g d          d             Z ej        g d          d             Zd Zd Zd Zd Zd Zd Zd  Zd! Z d" Z! ej        ddg          d#             Z" ej        d$e#fd%e$fg          d&             Z%d'S )(TestDatashaderc                     	 dd l }n#  t          d          xY wt          j        dk     rt          d          dd l}t          j        g dg dg dgg d	          | _        d S )
Nr   zDatashader not available        *Datashader does not support 32-bit systems)      A皙?)      Bg?)      Cg333333?)xycategorynumber)columns)
datashaderr   sysmaxsizehvplot.pandaspd	DataFramedf)selfr%   hvplots      ;lib/python3.11/site-packages/hvplot/tests/testoperations.pysetUpzTestDatashader.setUp   s    	7	75666;GHHH, 0 0 02B2B2BDTDTDTU'G'G'GI I Is    c                    ddl m} | j        j                            dddd          }|j        j        d         j        j        j        j	        }| 
                    ||           |                     |j        d           d S )Nr   )	count_catr    r!   r"   T)by	rasterize)datashader.reductionsr1   r+   r-   scattercallbackinputs	operationp
aggregatorassertIsInstanceassertEqualcolumn)r,   r1   dmapaggs       r.   test_rasterize_by_catz$TestDatashader.test_rasterize_by_cat%   s    333333w~%%c3:%NNm"1%.8:Ec9---Z00000    )r3   )	datashadec                     ddl m}  | j        j        j        dddi|di}|j        j        d         j        j        j        j	        }| 
                    ||           |                     |j        d           d S )	Nr   meanr    r!   cr#   Tr    r!   )r4   rE   r+   r-   r5   r6   r7   r8   r9   r:   r;   r<   r=   )r,   r8   rE   r>   r?   s        r.   test_color_dim_with_default_aggz.TestDatashader.test_color_dim_with_default_agg,   s    ......%tw~%PP(Py$>OPPm"1%.8:Ec4(((X.....rA   c                     ddl m}  | j        j        j        d	ddd|di}|j        j        d         j        j        j        j	        }| 
                    ||           |                     |j        d           d S )
Nr   )sumr    r!   r#   rJ   )rF   r:   TrG   )r4   rJ   r+   r-   r5   r6   r7   r8   r9   r:   r;   r<   r=   )r,   r8   rJ   r>   r?   s        r.   test_color_dim_with_string_aggz-TestDatashader.test_color_dim_with_string_agg4   s    ------%tw~%b(ubbQZ\`Pabbm"1%.8:Ec3'''X.....rA   c                 d   ddl m} | j                            d          } | j        j        j        d	ddi|di}|j        j        d         j        j        j	        j
        }|                     ||           |                     |j        d           |                    | j                  sJ d S )
Nr   rD   T)deepr    r!   rF   _colorrG   )r4   rE   r+   copyr-   r5   r6   r7   r8   r9   r:   r;   r<   r=   equals)r,   r8   rE   original_datar>   r?   s         r.   test_color_dim_also_an_axisz*TestDatashader.test_color_dim_also_an_axis<   s    ......$//%tw~%KK#K)T9JKKm"1%.8:Ec4(((X...##DG,,,,,,,rA   c                     | j         j                            ddddd          }t          j        d|d          j        }|                     |                    d          d	           d S )
Nr    r!   FT)rF   dynamicr3   bokehstylecmapkbc_rr+   r-   r5   r   lookup_optionskwargsr<   getr,   plotoptss      r.   :test_rasterize_color_dim_with_new_column_gets_default_cmapzITestDatashader.test_rasterize_color_dim_with_new_column_gets_default_cmapF   sd    w~%%c3#uPT%UU#GT7;;B&))733333rA   c                     | j         j                            dddd          }t          j        d|d          j        }|                     |                    d          d	           d S )
Nr    r!   FTrT   r3   rU   rV   rW   rX   rY   r]   s      r.   test_rasterize_default_cmapz*TestDatashader.test_rasterize_default_cmapK   sa    w~%%c3%NN#GT7;;B&))733333rA   c                     | j         j                            dddd          }t          j        d|d          j        }|                     |                    d                     d S )	Nr    r!   FTrb   rU   r^   colorbar)r+   r-   r5   r   rZ   r[   
assertTruer\   r]   s      r.   test_rasterize_default_colorbarz.TestDatashader.test_rasterize_default_colorbarP   s]    w~%%c3%NN#GT6::A,,-----rA   c                 `   d}| j         j                            dddd|          }t          j        d|d          j        }|                     |                    d	          |           t          j        d|d
          j        }|                     |                    d                     d S )NRedsr    r!   FT)rT   r3   rW   rU   rV   rW   r^   re   )	r+   r-   r5   r   rZ   r[   r<   r\   rf   )r,   rW   r^   r_   s       r.   )test_rasterize_default_colorbar_with_cmapz8TestDatashader.test_rasterize_default_colorbar_with_cmapU   s    w~%%c3TX%YY#GT7;;B&))4000#GT6::A,,-----rA   c                     | j         j                            ddddd          }t          j        d|d          j        }|                     |                    d	          d           d S )
Nr    r!   FT)r   r   )rT   r3   climrU   r^   rl   rY   r]   s      r.   test_rasterize_set_climz&TestDatashader.test_rasterize_set_clim]   sd    w~%%c3TZ%[[#GT6::A&))622222rA   )aspect)data_aspectc                 T    | j         j        ddddd|di}t          j        d|d         d          j        }|                     ||         d           |                     |                    d	          d            |                     |                    d
          d            d S )Nr    r!   Tr    r!   rB   r   rU    r^   heightframe_heightr+   r-   r   rZ   r[   r<   r\   r,   optr^   r_   s       r.   test_aspect_with_datashadez)TestDatashader.test_aspect_with_datashadeb   s    tw~GsdGGsAhGG#GT"Xv>>EcA&&&(++T222.11488888rA   c                 V    | j         j        dddddd|di}t          j        d|d         d	          j        }|                     ||         d           |                     |                    d
          d            |                     |                    d          d            d S )Nr    r!   TF)r    r!   rB   rT   r   rU   rr   r^   rs   rt   ru   rv   s       r.   /test_aspect_with_datashade_and_dynamic_is_falsez>TestDatashader.test_aspect_with_datashade_and_dynamic_is_falsej   s    tw~VsdEVVcSTXVV#GT"Xv>>EcA&&&(++T222.11488888rA   c                     | j         j        dddddd|di}t          j        d|d         d	          j        }|                     ||         d           |                     |                    d
          d           |                     |                    d          d            |                     |                    d          d            d S )Nr    r!      T)r    r!   rt   rB   r   rU   rr   r^   rt   rs   frame_widthru   rv   s       r.   +test_aspect_and_frame_height_with_datashadez:TestDatashader.test_aspect_and_frame_height_with_datashader   s    tw~YsYYQTVWPXYY#GT"Xv>>EcA&&&.113777(++T222-00$77777rA   c           	          | j         j        d	dddddd|di}t          j        d|d	         d
          j        }|                     ||         d           |                     |                    d          d           |                     |                    d          d            |                     |                    d          d            d S )Nr    r!   r|   TF)r    r!   rt   rB   rT   r   rU   rr   r^   rt   rs   r}   ru   rv   s       r.   @test_aspect_and_frame_height_with_datashade_and_dynamic_is_falsezOTestDatashader.test_aspect_and_frame_height_with_datashade_and_dynamic_is_false{   s    tw~hsV[hh`cef_ghh#GT"Xv>>EcA&&&.113777(++T222-00$77777rA   c           	      
   dddd}| j         j                            ddd|d	           |                     t                    5  | j         j                            ddddd
|           d d d            d S # 1 swxY w Y   d S )Nz#ff0000z#00ff00z#0000ff)r   r   r   r    r!   r"   T)r    r!   r2   rW   rB   rX   )r    r!   r2   rB   rW   	color_key)r+   r-   pointsassertRaises	TypeError)r,   r   s     r.   test_cmap_can_be_color_keyz)TestDatashader.test_cmap_can_be_color_key   s    #))DD	sz	UYZZZy)) 	E 	EGN!!C3:'.) " E E E	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	Es   &A88A<?A<c                     | j                             ddd          }t          j        d|d         d          j        }d|                    d	          vsJ d S )
Nr    r!   Trq   rU   rr   r^   hovertoolsr+   r-   r   rZ   r[   r\   r]   s      r.   9test_when_datashade_is_true_set_hover_to_false_by_defaultzHTestDatashader.test_when_datashade_is_true_set_hover_to_false_by_default   sY    w~~sd~;;#GT"Xv>>Edhhw////////rA   c                     | j                             dddd          }t          j        d|d         d          j        }d|                    d	          v sJ d S )
Nr    r!   T)r    r!   rB   r   rU   rr   r^   r   r   r   r]   s      r.   3test_when_datashade_is_true_hover_can_still_be_truezBTestDatashader.test_when_datashade_is_true_hover_can_still_be_true   s[    w~~sd$~GG#GT"Xv>>E$((7++++++++rA   c                     t          j        t          j                            d                                                    }|                    ddd          }|                    d          dk    sJ d S )Nd   )r   i N  TF)xlimrB   rT   r   )r)   r*   nprandomrandncumsumr-   range)r,   dataimgs      r.   test_xlim_affects_x_rangez(TestDatashader.test_xlim_affects_x_range   sc    |BIOOC007799::kkzT5kIIyy||z))))))rA   ))r5   )line)areac                 l   t                      }t                                          t          |j                  d|          }t          j        d         }|j        j        d         j        j        j	        j
        |k    sJ |j        j        d         j        j        j	        j        j        dk    sJ d S )NT)r!   rB   kindcategoricalr   Variable)r   r-   listr$   r   _default_cmapsr6   r7   r8   r9   rW   r:   r=   )r,   r   r+   r^   expected_cmaps        r.   1test_wide_charts_categorically_shaded_explicit_ysz@TestDatashader.test_wide_charts_categorically_shaded_explicit_ys   s       ""))D,<,<SW)XX*9-H}#A&/9;@MQQQQ$Q'0:<GNR\\\\\\\rA   c                 *   t                                          d|          }t          j        d         }|j        j        d         j        j        j        j        |k    sJ |j        j        d         j        j        j        j	        j
        dk    sJ d S )NT)rB   r   r   r   r   )r   r-   r   r   r6   r7   r8   r9   rW   r:   r=   )r,   r   r^   r   s       r.   1test_wide_charts_categorically_shaded_implicit_ysz@TestDatashader.test_wide_charts_categorically_shaded_implicit_ys   s     ""))Dt)DD*9-H}#A&/9;@MQQQQ$Q'0:<GNR\\\\\\\rA   c                 .   d}| j         j                            dd|d          }t          j        d         }|j        j        d         j        j        j        j	        |k    sJ |j        j        d         j        j        j        j
        j        |k    sJ d S )Nr"   r    r!   T)r2   rB   r   r   )r+   r-   r5   r   r   r6   r7   r8   r9   rW   r:   r=   )r,   cat_colr^   r   s       r.   (test_wide_charts_categorically_shaded_byz7TestDatashader.test_wide_charts_categorically_shaded_by   s    w~%%c37d%KK*9-H$Q'0:<A]RRRR$Q'0:<GNRYYYYYYYrA   c                     d}| j                             ddd|          }t          j        d|d         d          j        }|                    d	          |k    sJ d S )
Neq_histr    r!   T)r    r!   r3   cnormrU   rr   r^   r   r   r,   expectedr^   r_   s       r.   test_rasterize_cnormz#TestDatashader.test_rasterize_cnorm   s`    w~~sd(~KK#GT"Xv>>Exx  H,,,,,,rA   c                     d}| j                             ddd|          }|j        j        d         j        j        j        d         }||k    sJ d S )Nr   r    r!   Tr    r!   rB   r   r   r   r+   r-   r6   r7   r8   r9   r,   r   r^   actuals       r.   test_datashade_cnormz#TestDatashader.test_datashade_cnorm   sV    w~~sd(~KK%a(1;=gF!!!!!!rA   c                     d}| j                             dddd|          }t          j        d|d         d	          j        }|                    d
          |u sJ d S )NFr    r!   Tr   )r    r!   r3   r   rescale_discrete_levelsrU   rr   r^   r   r   r   s       r.   &test_rasterize_rescale_discrete_levelsz5TestDatashader.test_rasterize_rescale_discrete_levels   sd    w~~sd)em~nn#GT"Xv>>Exx122h>>>>>>rA   c                     d}| j                             dddd|          }|j        j        d         j        j        j        d         }||u sJ d S )	NFr    r!   Tr   )r    r!   rB   r   r   r   r   r   r   s       r.   &test_datashade_rescale_discrete_levelsz5TestDatashader.test_datashade_rescale_discrete_levels   sZ    w~~sd)em~nn%a(1;=>WX!!!!!!rA   c                     d}| j                             dddd          }|j        j        d         j        j        j        d         }||u sJ d S )NTr    r!   r   r   r   r   r   r   s       r.   3test_datashade_rescale_discrete_levels_default_TruezBTestDatashader.test_datashade_rescale_discrete_levels_default_True   sW    w~~sd)~LL%a(1;=>WX!!!!!!rA   c                 0   t          t          j                  t          d          k     rt          d          ddlm} d}| j                            dd|dd	
          }t          ||          sJ |j	        d         t          j        d         k    sJ d S )Nz1.18.0a1z'hv.ImageStack introduced after 1.18.0a1r   )
ImageStackr"   r    r!   TF)r    r!   r2   r3   rT   rW   glasbey_category10)r   hv__version__r   holoviews.elementr   r+   r-   
isinstancer_   ccpalette)r,   r   r   r^   s       r.   test_rasterize_byz TestDatashader.test_rasterize_by   s    2>""WZ%8%888DEEE000000w~~sx4QV~WW$
+++++y BJ/C$DDDDDDDrA   c                     | j         j                            dgd          }t          j        d|d         d          j        }|                    d          dk    sJ d S )	Nr!   T)r!   r3   rU   rr   rV   rW   rX   )r+   r-   r   r   rZ   r[   r\   r]   s      r.   +test_rasterize_single_y_in_list_linear_cmapz:TestDatashader.test_rasterize_single_y_in_list_linear_cmap   s^    w~""cUd";;#GT"Xw??Fxx7******rA   c                     t          j        t          d          5  | j                            ddd           d d d            d S # 1 swxY w Y   d S )Nz!At least one resampling operation)matchr    r!   
   )r    r!   resample_when)pytestraises
ValueErrorr+   r-   )r,   s    r.   (test_resample_when_error_unset_operationz7TestDatashader.test_resample_when_error_unset_operation   s    ]5
 
 
 	; 	; GNNSCrN:::		; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	;s   AAAc                    t          j        t          j                            dddgddggd                                        dddd	          } |j        j        dd
di|di}t          |t                    sJ t          |           |                                d         d         }t          |t                    sJ |                    d          }t          |t                    sJ t          |j                  dk    sJ |                    d          }t          |t"                    sJ t          |j                  dk    sJ d S )Nr   r   r         ?i  r    r!   r   r   r   axisr     Tr   rG   )r)   r*   r   r   multivariate_normalrenamer-   r5   r   r
   r   itemsr   r\   r   lenr   r   )r,   r8   r+   r>   overlayimager5   s          r.   test_operation_resample_whenz+TestDatashader.test_operation_resample_when   sJ   \I))&C:Sz2JGTT
 

&SS!!&
*
* 	 !ry SSS)TARSS$
+++++t**,,q/!$'7+++++A%'''''5:""""++a..'7+++++7<  A%%%%%%rA   r   r5   c                    t          j        t          j                            dddgddggd                                        dddd	          }|                    |ddd
d          }t          |t                    sJ t          |           |
                                d         d         }t          |t                    sJ |                    d          }t          ||          sJ t          |          dk    sJ |                    d          }t          ||          sJ t          |          dk    sJ d S )Nr   r   r   r   r    r!   r   r   r   r   T)r   r    r!   r   
downsampler   )r)   r*   r   r   r   r   r-   r   r
   r   r   r   r\   r   )r,   r   eltyper+   r>   r   downsampledelements           r.   test_downsample_resample_whenz,TestDatashader.test_downsample_resample_when   s>   \I))&C:Sz2JGTT
 

&SS!!&
*
* 	 yydcSQUyVV$
+++++t**,,q/!$'7+++++kk!nn+v.....;!####++a..'6*****7||q      rA   N)&__name__
__module____qualname__r/   r@   r   expandrH   rK   rR   r`   rc   rg   rj   rm   rx   rz   r~   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r	   r   r   rr   rA   r.   r   r      sa       	I 	I 	I1 1 1 ]>>:;;/ / <;/ ]>>:;;/ / <;/ ]>>:;;- - <;-4 4 4
4 4 4
. . .
. . .3 3 3
 ];(89::9 9 ;:9 ];(89::9 9 ;:9 ];(89::8 8 ;:8 ];(89::8 8 ;:8E E E0 0 0
, , ,
* * *
 ]>>>??] ] @?] ]>>>??] ] @?]Z Z Z- - -" " "? ? ?" " "" " "	E 	E 	E+ + +; ; ; ]>>:;;& & <;&& ]Hf-	7/CDEE! ! FE! ! !rA   r   c                       e Zd Zd Z ej        defdefg          d             Z ej        defdefg          d             Z	dS )TestChart2Dc                 j   	 dd l }dd l}n#  t          d          xY wt          j        dk     rt          d          dd l}t          j        dd                              dd          }t          j        d          }t          j        d          }|	                    |||dd	          | _
        d S )
Nr   z"xarray or datashader not availabler   r   <   r   r   )r!   r    )coordsdims)xarrayr%   r   r&   r'   hvplot.xarrayr   arangereshape	DataArrayda)r,   xrdsr-   r   r    r!   s          r.   r/   zTestChart2D.setUp  s    	A#####	A?@@@;GHHHyB''2..IbMMIaLL,,t,-A&6&6$.  0 0s    r   quadmeshc                 P   | j                             |          }t          |j        j                            d                              d          dk              sJ t          |j        j                            d                              d          dk              sJ d S )N)r   r    r   r   r!   r   r-   allr   r    diffroundr!   r,   r   r   r^   s       r.   test_plot_resolutionz TestChart2D.test_plot_resolution   s    w~~4~((49;##C((..q11Q67777749;##C((..q11Q67777777rA   c                 X   | j                             |dddd          }t          |j        j                            d                              d          dk              sJ t          |j        j                            d                              d          dk              sJ d S )	NFTr   r   )r   rT   r3   
x_sampling
y_samplingr    r   r!   r   r   s       r.   #test_plot_resolution_with_rasterizez/TestChart2D.test_plot_resolution_with_rasterize&  s    w~~4$)*q  : :49;##C((..q11Q67777749;##C((..q11Q67777777rA   N)
r   r   r   r/   r   r   r   r   r   r  rr   rA   r.   r   r     s        0 0 0  ]GU+j(-CDEE8 8 FE8
 ]GU+j(-CDEE8 8 FE8 8 8rA   r   c                        e Zd Zd Zd Zd ZdS )TestDownsamplec                 z    dd l }t          j        t          j                            d                    | _        d S )Nr   r   )r(   r)   r*   r   r   r+   )r,   r-   s     r.   r/   zTestDownsample.setUp/  s3    ,ry//4455rA   c                     ddl m} | j        j                            d          }t          |j        j        |          sJ |j        j        j        dk    sJ d S )Nr   )downsample1dT)r   lttb)	holoviews.operation.downsampler  r+   r-   r   r   r6   r8   	algorithm)r,   r  r^   s      r.   test_downsample_defaultz&TestDownsample.test_downsample_default3  sh    ??????w~""d"33$-1<@@@@@}&0F::::::rA   c                 .   | j         j                            ddddd          }|j        j        j        j        dk    sJ |j        j        j        j        dk    sJ |j        j        j        j        dk    sJ |j        j        j        j	        dk    sJ d S )NTr   2   r   )r   r   )r   widthrs   r   r   )
r+   r-   r   r6   r8   r9   r  rs   r   x_range)r,   r^   s     r.   test_downsample_optsz#TestDownsample.test_downsample_opts;  s    w~""d#bUV]c"dd}&(.#5555}&(/25555}&(3q8888}&(0F::::::rA   N)r   r   r   r/   r
  r  rr   rA   r.   r  r  .  sA        6 6 6; ; ;; ; ; ; ;rA   r  )&r&   unittestr   r   colorcetr   	holoviewsr   r(   r-   numpyr   pandasr)   r   r   r   r   r   r   r	   holoviews.core.spacesr
   holoviews.core.overlayr   holoviews.element.chartr   holoviews.element.comparisonr   hvplot.converterr   hvplot.tests.utilr   packaging.versionr   r   r   r  rr   rA   r.   <module>r     s   



       ' ' ' ' ' '                      # # # # # # # # 5 5 5 5 5 5 5 5 5 5 , , , , , , * * * * * * + + + + + + ; ; ; ; ; ; / / / / / / / / / / / / % % % % % %s! s! s! s! s!' s! s! s!l8 8 8 8 8$ 8 8 8@; ; ; ; ;' ; ; ; ; ;rA   