
    e             	          d dl Zd dlmZ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mZmZmZmZmZmZmZmZmZmZmZmZmZ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- 	 d dl.m/Z0 d dl1Z2d dl3Z4d d
l5m6Z6m7Z7m8Z8m9Z9m:Z:m;Z;m<Z<m=Z=m>Z>m?Z?m@Z@mAZAmBZB n# eC$ r  ed          w xY w	 d dlDZDd dlEZEn# eC$ r dZDY nw xY w	 d dlFZFn# eC$ r dZFY nw xY w eeFdu d          ZG eeDdu d          ZHd dlIZI eIjJ        d          ZKeKL                    eIjM                   de6_N         ejO                    d             ZP ejO                    d             ZQ G d de'          ZR G d de'          ZS G d de'          ZT G d de'          ZU G d de'          ZVejW        X                    de2jY        g dge2jZ        g dge2j[        g dge2j\        g dgf          d              Z]ejW        X                    d!e2jY        e2jZ        e2j[        e2j\        f          d"             Z^d# Z_ejW        X                    d$e2jY        e2jZ        e2j[        e2j\        f          d%             Z`d& Za G d' d(e'          Zb G d) d*e'          Zc G d+ d,e'          Zd G d- d.e'          ZeejW        X                    d/ejf        ejg        ejh        g          d0             Zid1 Zjd2 ZkdS )3    N)SkipTestskipIf)nan)Version)RGBAreaContoursCurveDataset	Dimension
DynamicMapGraphImage
ImageStack	NdOverlayNodesOverlayPathPointsPolygonsQuadMesh
RectanglesSegmentsSpikesSpreadTriMesh)ComparisonTestCase)
apply_when)Tap)render)AggregationOperation	aggregate	datashadedirectly_connect_edges
ds_versioninspectinspect_pointsinspect_polygons	rasterizeregridshadespreadstackzDatashader not availablezSpatialPandas not availablezcuDF not availablenumba c                      dt           j                            d           fddD             } t          j        | d          }|S )Nd      c                     i | ]a\  }}}}}|t          j        t          j                            ||          t          j                            ||          |||d           bS ))xysvalcat)pd	DataFramenprandomnormal).0r4   r5   r6   r7   r8   nums         Ilib/python3.11/site-packages/holoviews/tests/operation/test_datashader.py
<dictcomp>zpoint_data.<locals>.<dictcomp>Z   s        Aq!S# 	R\Y%%aC00Y%%aC00 
 
      ))   rC   gQ?r   d1)rC   皙?r2   d2)rE   rE         ?rC   d3)rE   rC         ?   d4)r   r         @   d5T)ignore_index)r;   r<   seedr9   concat)distsdfr?   s     @r@   
point_datarU   U   sa    
CINN1   "
  E$ 
5t	,	,	,BIrB   c                      t          |           S N)r   )rU   s    r@   
point_plotrX   p   s    *rB   c                      e Zd ZdZd Zd Ze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 Z"d  Z#d! Z$d" Z%d# Z&d$ Z'd6d&Z(d' Z)d( Z*d) Z+d* Z,d+ Z-d, Z.d- Z/d. Z0e1d/             Z2e1d0             Z3e1d1             Z4e1d2             Z5e1d3             Z6e1d4             Z7d5S )7DatashaderAggregateTests*
    Tests for datashader aggregation
    c                     t          g d          }t          |ddddd          }t          ddgddgdd	gdd	ggft          d
d	          g          }|                     ||           d S N皙?333333?皙?ffffff?)r   Gz?Fr   r2   rC   dynamicx_rangey_rangewidthheight      ?      ?r2   r   Countnodatavdims)r   r"   r   r   assertEqualselfpointsimgexpecteds       r@   test_aggregate_pointsz.DatashaderAggregateTests.test_aggregate_pointsz       ;;;<<+ + +4,t1v1v6FG )'! < < <=? ? ?h'''''rB   c                 :   t          ddt          j        fdddt          j        fgd          }t          |dd	d	d
d
t	          j        d                    }t          ddgddgddgddggft          dd          g          }|                     ||           d S )Nr`   ra   )rc   rd      r   re   zrr   Frf   rC   rh   ri   rj   rk   rl   
aggregatorrm   rn   r2   z Countrp   )	r   r;   r   r"   dscountr   r   rt   ru   s       r@   "test_aggregate_points_count_columnz;DatashaderAggregateTests.test_aggregate_points_count_column   s    #sBF+^abf=MNVYZZZbhsmmE E E4,t1v1v6FG ))A > > >?A A Ah'''''rB   c                    t          g ddg          }|                     |j        t          j                   t          |ddddd          }t          dd	gdd	gd
dgddggft          dd          g          }|                     |j        j        j        t          j
                   |                     ||           d S )Nr^   cuDFdatatypeFrf   rC   rg   rm   rn   r2   r   ro   rp   rr   )r   assertIsInstancedatacudfr:   r"   r   r   ro   cupyndarrayrt   ru   s       r@   test_aggregate_points_cudfz3DatashaderAggregateTests.test_aggregate_points_cudf   s    ;;;vhOOOfk4>:::+ + +4,t1v1v6FG )'! < < <=? ? ?chn14<@@@h'''''rB   c           	          t          ddg          }t          |dddddd          }t          g ddgt          j        d	          fd
dt          dd          g          }|                     ||           d S )Nr   r   r2   r2   rf   FrC   )ri   rj   expandrh   rk   rl   rm   rn   rC   r   r   r   r   r2   r2   ro   r   rp   boundsxdensityrs   )r   r)   r   r;   zerosr   rt   )rv   paggrx   s       r@    test_aggregate_zero_range_pointsz9DatashaderAggregateTests.test_aggregate_zero_range_points   s    FF#$$66%QV+ + +R$rx'7'78y'C'C'C&DF F Fc"""""rB   c                     t          g d          }t          ddgddgddgddggft          dd          g	          }t          |d
|          }|                     ||           d S )Nr^   rm   rn   r2   r   rC   ro   rp   rr   F)rh   targetr   r   r   r"   rt   rv   rw   ry   rx   s       r@   test_aggregate_points_targetz5DatashaderAggregateTests.test_aggregate_points_target   s    ;;;<<4,t1v1v6FG )'! < < <=? ? ?x@@@h'''''rB   c                     t          g d          }t          ddgddgddgddggft          dd          g	          }t          |d
dddd          }|                     ||           d S )Nr^   rm   rn   r2   r   rC   ro   rp   rr   Frf   rH   )rh   ri   rj   
x_sampling
y_samplingr   r   s       r@   test_aggregate_points_samplingz7DatashaderAggregateTests.test_aggregate_points_sampling   s    ;;;<<4,t1v1v6FG )'! < < <=? ? ?#&38 8 8h'''''rB   c                 r   t          g dd          }t          |dddddt          j        d                    }t	          j        dd	g          }t	          j        dd	g          }t	          j        d
dgddgg          }t	          j        dd
gddgg          }t	          j        dd
gddgg          }t          j        ||dd|fd|fd|fd          }t          |ddgg d          }	|j	        }
|	j	        
                    d          j        |
j        j        k                                    sJ d S N)r`   ra   A)rc   rd   B)r   re   Cr~   rr   Frf   rC   r   rm   rn   r2   r   r4   r5   abccoords	data_varsr4   r5   kdimsrs   )r   r"   r   	count_catr;   arrayxrr   r   r   to_arrayvaluesTallrv   rw   rx   r4   r5   r   r   r   xrdsry   actuals              r@   !test_aggregate_points_categoricalz:DatashaderAggregateTests.test_aggregate_points_categorical   s`   JJJRUVVVbl36G6GI I IHdD\""HdD\""Hq!fq!f%&&Hq!fq!f%&&Hq!fq!f%&&z##'O:q/UVXX
 
 
 d3*OOOLLL&&s++2fhoEJJLLLLLLLrB   c                 &   t          g dd          }t          |dddt          j        d          d          }g d	d
g}}t	          dd          }t          t          ||t          j        d          ffdt          dd          i|t          ||t          j        d          ffdt          dd          i|t          ||t          j        d          ffdt          dd          i|ddg          }| 
                    ||           d S )Nr   r~   rr   Fr   rf   rC   )rh   ri   rj   r   rl   rm   rn   r   r2   r   r   r   rs   r   r   rp   r   r   r   r   )r   r"   r   r   dictr   r   r;   r   r   rt   )rv   rw   rx   xsysparamsry   s          r@   ,test_aggregate_points_categorical_zero_rangezEDatashaderAggregateTests.test_aggregate_points_categorical_zero_range   sX   JJJRUVVV#%<#4#4Q@ @ @dD\B\A6665"b"(62B2B)C#t#t9U^ghKiKiKi#tms#t#t#("b"(62B2B)C#t#t9U^ghKiKiKi#tms#t#t#("b"(62B2B)C#t#t9U^ghKiKiKi#tms#t#tv v %(5* * * 	h'''''rB   c                     t          g d          }t          ddgddgddgddggft          dd          g          }t          |d	d
d
dd          }|                     ||           d S N)r_   rb   皙?re   rm   rn   r2   r   ro   rp   rr   Frf   rC   rg   )r
   r   r   r"   rt   rv   curvery   rx   s       r@   test_aggregate_curvez-DatashaderAggregateTests.test_aggregate_curve       ;;;<<4,t1v1v6FG )'! < < <=? ? ?uvv+ + +h'''''rB   c           	         t          j        ddd          }t          |g df          }t          |ddd          }t	          j        d	          d
t	          j        d          df}t	          j        d          t	          j        d          g}t          |ddgddgddggfdg|t          dd                    }|                     ||           d S )N
2016-01-01
2016-01-031Dstartendfreqr2   rC   rK   rC   Frk   rl   rh   2016-01-01T00:00:00.000000rJ   2016-01-03T00:00:00.000000rM   z2016-01-01T12:00:00.000000000z2016-01-02T12:00:00.000000000      ?      @r2   r   xarrayro   rp   r   r   rs   )	r9   
date_ranger
   r"   r;   
datetime64r   r   rt   )rv   datesr   rx   r   ry   s         r@   test_aggregate_curve_datetimesz7DatashaderAggregateTests.test_aggregate_curve_datetimes   s    LlNNNuiii())Qq%@@@- <==s- <==sD>??>??A%#sq!fq!f-=>#+*V9W]^C_C_C_a a ah'''''rB   c           	      6   t          j        t          j        d          dgt          j        ddd                    }t          j        |d          }t          |d	gdg
          }t          |ddd          }t          j	        d          dt          j	        d          df}t          j	        d          t          j	        d          g}t          |g dddgddgddggfd	dgt          dd          dg|          }|                     ||           d S )Ni  r   z
2019-01-011min)r   periods)r   columnsindexrN   npartitionsr   r   rC   rK   Fr   z2019-01-01T00:00:00.000000        z2019-01-01T16:39:00.000000g     8@z2019-01-01T04:09:45.000000000z2019-01-01T12:29:15.000000000)g     d@g     8@g     @iL  r         iN  ro   rp   r   )r   rs   r   r   )r9   r:   r;   aranger   ddfrom_pandasr
   r"   r   r   r   rt   )rv   rT   ddfr   rx   r   r   ry   s           r@   #test_aggregate_curve_datetimes_daskz<DatashaderAggregateTests.test_aggregate_curve_datetimes_dask   s?   \43%-64HHH
 
 
 nRQ///c'3%888Qq%@@@- <==s- <==uF>??>??A%!6!6!6#qC:PQSVx8XY '~Ywq5Q5Q5Q#+*V= = = 	h'''''rB   c           	         t          j        ddd          }t          j        dd          }t          j        dd          }t	          |g df          }t          |d	d	||fd
          }t          j        d          dt          j        d          df}t          j        d          t          j        d          g}t          |ddgddgdd	ggfdg|t          dd                    }|                     ||           d S )Nr   r   r   r   2015-12-31T23:59:59.723518000us2016-01-03T00:00:00.276482000r   rC   F)rk   rl   ri   rh   2015-12-31T23:59:59.723518rJ   2016-01-03T00:00:00.276482rM   2016-01-01T11:59:59.8617590002016-01-02T12:00:00.138241000r   r   r2   r   r   ro   rp   r   )	r9   r   r;   r   r
   r"   r   r   rt   )rv   r   xstartxendr   rx   r   ry   s           r@   3test_aggregate_curve_datetimes_microsecond_timebasezLDatashaderAggregateTests.test_aggregate_curve_datetimes_microsecond_timebase   s   LlNNN>EE}<dCCuiii())Qq64.RWXXX- <==s- <==sD>@@>??A%#sq!fq!f-=>#+*V9W]^C_C_C_a a ah'''''rB   c           	         t          j        ddd          }t          j        dd          }t          j        dd          }t	          |g df          }t	          |g d	f          }t          ||d
d          }t          |t          j        d          dd||fd          }t          j        d          dt          j        d          df}t          j        d          t          j        d          g}t          |ddgddgddggfdg|t          dd                    }	t          |ddgddgddggfdg|t          dd                    }
|                     |d         |	           |                     |d         |
           d S )Nr   r   r   r   r   r   r   r   rK   rC   r2   rf   CatrC   F)r   rk   rl   ri   rh   r   rJ   r   rM   r   r   r   r   r2   r   r   ro   rp   r   )r9   r   r;   r   r
   r   r"   r   r   r   r   rt   )rv   r   r   r   r   curve2	ndoverlayimgsr   ry   	expected2s              r@   Atest_aggregate_ndoverlay_count_cat_datetimes_microsecond_timebasezZDatashaderAggregateTests.test_aggregate_ndoverlay_count_cat_datetimes_microsecond_timebase   s   LlNNN>EE}<dCCuiii())yyy)**%F33U;;	r|E/B/B!TU"($@ @ @- <==s- <==sD>@@>??A%#sq!fq!f-=>#+*V9W]^C_C_C_a a a53*1v1v.>?#+*V9W]^C_C_C_a a a	a(+++a),,,,,rB   c                    t          j        dt          j        d          it          j        ddd                    }t          t          |          dd	          }t          j        g d
d          }t          j        g           }t          j        d          dt          j        d          df}t          ||t          j
        d          fddgt          dd          dd|          }|                     ||           d S )Nr5   r1   
1980-01-01r   r   r   r   FrK   rh   rk   z1980-01-01T00:16:30.000000z1980-01-01T00:49:30.000000z1980-01-01T01:22:30.000000datetime64[us]dtype1980-01-01T00:00:00.000000rJ   1980-01-01T01:39:00.000000r   rK   r   ro   r   rp   r2   rs   r   ydensityr   )r9   r:   r;   onesr   r)   r
   r   r   r   emptyr   rt   )rv   rT   rx   r   r   r   ry   s          r@   &test_aggregate_dt_xaxis_constant_yaxisz?DatashaderAggregateTests.test_aggregate_dt_xaxis_constant_yaxis  s   \3-R]<Y\ci5j5j5jkkkb		5:::X 5 5 5<LN N NXb\\- <==s- <==sD"b"(6"2"23gs^(;;;a"#F4 4 4 	h'''''rB   c                 :   t          g dg d          } |j        t          ddgg d                                          }t	          ddgddgd	d
gdd
ggft          dd
          g          }t          |ddddd          }|                     ||           d S N))r`   ra   r   rc   rd   r2   )r   re   rC   r4   r5   r~   r   r4   r5   r~   rm   rn   r2   r   rC   ro   rp   rr   Frf   rg   )r   tor   overlayr   r   r"   rt   rv   r   r  ry   rx   s        r@   test_aggregate_ndoverlayz1DatashaderAggregateTests.test_aggregate_ndoverlay      AAAYYYBE&3*b#66>>@@	4,t1v1v6FG )'! < < <=? ? ?	5&&+ + +h'''''rB   c                     t          ddgddgg          }t          ddgddgddgddggft          d	d
          g          }t          |ddddd          }|                     ||           d S Nr_   rb   r   rm   rn   r2   r   rC   ro   rp   rr   Frf   rg   )r   r   r   r"   rt   rv   pathry   rx   s       r@   test_aggregate_pathz,DatashaderAggregateTests.test_aggregate_path&      j*-
K/HIJJ4,t1v1v6FG )'! < < <=? ? ?eff+ + +h'''''rB   c                     t          ddgddggd          }t          |d          }|                     |j        dg           d S )	N)r`   ra   r2   r  )rc   rd   rC   )r   re   rC   r~   rr   Frh   )r	   r)   rt   rs   rv   contoursrx   s      r@   !test_aggregate_contours_with_vdimz:DatashaderAggregateTests.test_aggregate_contours_with_vdim.  sV    m];m^=\]ehiii%000SE*****rB   c                     t          ddgddgg          }t          |d          }|                     |j        t	          dd          g           d S )	Nr_   rb   r   Fr(  Anyr   rp   )r	   r)   rt   rs   r   r)  s      r@   $test_aggregate_contours_without_vdimz=DatashaderAggregateTests.test_aggregate_contours_without_vdim3  s^    j*5
K7PQRR%000YuQ%?%?%?$@AAAAArB   c                 "   t          t          ddgddgg                                          g          }t          ddgddgddgddggft          d	d
          g          }t	          |ddddd          }|                     ||           d S r"  )r   dframer   r   r"   rt   r#  s       r@   test_aggregate_dframe_nan_pathz7DatashaderAggregateTests.test_aggregate_dframe_nan_path8  s    TJ
3j+5NOPPWWYYZ[[4,t1v1v6FG )'! < < <=? ? ?eff+ + +h'''''rB   c                     t          g d          }t          |ddd          }t          t          j        g dg          t          dd          d	d
d          }|                     ||           d S )Nr      Frk   rh   r   r2   r   r2   r   r2   ro   r   rp   r   r2   r2   r   rK   rH   r  r   r)   r   r;   r   r   rt   rv   spikesr   ry   s       r@   test_spikes_aggregate_countz4DatashaderAggregateTests.test_spikes_aggregate_count@  s    			""auEEE???"344IgVW<X<X<X"%.J J Jh'''''rB   c                     t          g ddg          }t          |ddd          }t          t          j        g dg          t          dd	
          ddd          }|                     ||           d S )Nr   daskr   r3  Fr4  r5  ro   r   rp   r   r2   r6  r  r7  r8  s       r@    test_spikes_aggregate_count_daskz9DatashaderAggregateTests.test_spikes_aggregate_count_daskG  s    			VH555auEEE???"344IgVW<X<X<X"%.J J Jh'''''rB   c           	         t          t          j        ddd          t          j        ddd          t          j        ddd          g          }t          |ddd          }t	          j        d          d	t	          j        d
          df}t          t	          j        g dg          t          dd	          |          }| 	                    ||           d S )N  r2   rC   rK   r3  Fr4  r   r   r   rH   r5  ro   rp   rs   r   
r   dtdatetimer)   r;   r   r   r   r   rt   rv   r9  r   r   ry   s        r@   test_spikes_aggregate_dt_countz7DatashaderAggregateTests.test_spikes_aggregate_dt_countN  s    T1a002;tQ3J3JBKX\^_abLcLcdeeauEEE- <==q- <==sD???"344IgVW<X<X<Xaghhhh'''''rB   c           	         t          t          j        ddd          t          j        ddd          t          j        ddd          gdg          }t          |ddd	          }t	          j        d
          dt	          j        d          df}t          t	          j        g dg          t          dd          |          }| 	                    ||           d S )Nr?  r2   rC   rK   r<  r   r3  Fr4  r   r   r   rH   r5  ro   rp   r@  rA  rD  s        r@   #test_spikes_aggregate_dt_count_daskz<DatashaderAggregateTests.test_spikes_aggregate_dt_count_daskV  s    T1a002;tQ3J3JBKX\^_abLcLcd"(+ + +auEEE- <==q- <==sD???"344IgVW<X<X<Xaghhhh'''''rB   c                     t          g d          }t          |dddd          }t          t          j        g dg          t          dd	          d
dd          }|                     ||           d S )Nr   r3  F   )rk   rh   r   spike_lengthr5  ro   r   rp   r   r2   )r2   r   rK         @r  r7  r8  s       r@   "test_spikes_aggregate_spike_lengthz;DatashaderAggregateTests.test_spikes_aggregate_spike_length_  s    			""auSTUUU???"344IgVW<X<X<X"%.J J Jh'''''rB   c                    t          g dd          }t          |dddd          }g d}g d	}t          j        g d
g d
g dg dg dg          }t	          |||ft          dd                    }|                     ||           d S )N)r2   r`   rC   r   )rK   rc   r5   rr   r3  rf   Frk   rl   rj   rh   g333333?皙?       @333333@gffffff@rF   ra   rH   rd   g?r5  r   r   r2   r   r2   r   r   r2   r   r   ro   r   rp   r   r)   r;   r   r   r   rt   rv   r9  r   r   r   arrry   s          r@   'test_spikes_aggregate_with_height_countz@DatashaderAggregateTests.test_spikes_aggregate_with_height_countf  s    666cBBBa65QQQ&&&&&&hOOOOOOOOOO
   "b#i.J.J.JKKKh'''''rB   c                    t          g dd          }t          |ddddd          }g d	}g d
}t          j        g dg dg dg dg dg          }t	          |||ft          dd                    }|                     ||           d S )NrN  r5   rr   r3  rf   ra   F)rk   rl   rj   rJ  rh   rQ  rU  r5  r   r   r   r   r   ro   r   rp   rX  rY  s          r@   0test_spikes_aggregate_with_height_count_overridezIDatashaderAggregateTests.test_spikes_aggregate_with_height_count_overrideu  s    666cBBBa6%(%9 9 9&&&&&&h''''	) * *
 "b#i.J.J.JKKKh'''''rB   c           
         t          ddgddgddgddggf          }t          ddgd	
          }t          g dg dg dg dg dg dgf          }t          j        g dg dg dg dg          }t          g dg d|ft	          dd          
          }||z  }t          |ddddddd          }|                     |j         j        |           |                     |j        j        |           d S )NrH   r   r   r2   rC   rK   )rH   r`   )r   r   r5   rr   rm   rn   g      ?g      ?r   r   r2   r2   rC   rC   rK   rK   r   r2   r   r2   r   r   r   r   ro   rp   rN   )r   rC   TF)rk   rl   ri   rj   rJ  upsamplerh   )r   r   r;   r   r   r)   rt   I)rv   rx   r9  expected_regrid
spikes_arrexpected_spikesr  r   s           r@   (test_rasterize_regrid_and_spikes_overlayzADatashaderAggregateTests.test_rasterize_regrid_and_spikes_overlay  sl   c3Z#sq!fq!f-=>??Z2#>>>!9!9!9!9!9!9".,,".,,".,,".,,"0!1 2 2 X|||+||+||+||- . .
  !9!9!9!9!9!9:!GNWX_hiNjNjNjl l l,qFF%(4H H Ho66677777rB   c                     t          g dddg          }t          |dddd          }g d	}g d
}t          j        g dg dg dg dg dg          }t	          |||ft          dd                    }|                     ||           d S )NrN  r5   r<  rs   r   r3  rf   FrP  rQ  rU  r5  rV  rW  ro   r   rp   rr   rX  rY  s          r@   ,test_spikes_aggregate_with_height_count_daskzEDatashaderAggregateTests.test_spikes_aggregate_with_height_count_dask  s    666cVHUUUa65QQQ&&&&&&hOOOOOOOOOO
   "b#i.J.J.JKKKh'''''rB   c                     t          g dddg          }t          |dddd          }g d	}g d
}t          j        g dg dg dg dg dg          }t	          |||ft          dd                    }|                     ||           d S )N)r2   gɿ)rC   皙鿩rK   皙ٿr5   r<  rl  r3  )r   FrP  rQ  )ggffffff      g333333ӿ皙r]  rW  rV  r5  ro   r   rp   rr   rX  rY  s          r@   0test_spikes_aggregate_with_negative_height_countzIDatashaderAggregateTests.test_spikes_aggregate_with_negative_height_count  s    999PVxXXXa7ERRR&&&+++hOOOOOOOOOO
   "b#i.J.J.JKKKh'''''rB   c                     t          g dddg          }t          |dddd          }g d	}g d
}t          j        g dg dg dg dg dg          }t	          |||ft          dd                    }|                     ||           d S )N)ro  rO  rq  r5   r<  rl  r3  rs  r2   FrP  rQ  )rp  rr  r   rc   r   r]  )r   r   r   r   r2   r5  rW  ro   r   rp   rr   rX  rY  s          r@   =test_spikes_aggregate_with_positive_and_negative_height_countzVDatashaderAggregateTests.test_spikes_aggregate_with_positive_and_negative_height_count  s    888vhWWWa7ERRR&&&(((hOOOOOOOOOO
   "b#i.J.J.JKKKh'''''rB   c                    t          ddg          }t          |ddd          }g d}g d}t          j        g dg dg d	g d
g          }t	          |||ft          dd                    }|                     ||           d S )N)r   r   r2   rC   )r2   r2   rK   rC   rN   Fr         ?g      ?g      ?g      @r`  r2   r2   r   r   r2   rC   r2   r2   rd  ro   r   rp   rr   )r   r)   r;   r   r   r   rt   rv   rectsr   r   r   rZ  ry   s          r@   test_rectangles_aggregate_countz8DatashaderAggregateTests.test_rectangles_aggregate_count  s    L,788Qq%@@@)))%%%hLLLLLLLL	
   "b#i.J.J.JKKKh'''''rB   c                    t          ddgdg          }t          |ddt          j        d          d          }g d}g d	}t	          j        g d
g d
g d
g dg          }t	          j        g dg dg dg dg          }t          |||ft          dd                    }t          |||ft          dd                    }t          ||ddg          }	| 	                    ||	           d S )N)r   r   r2   rC   r   )r2   r2   rK   rC   r   r8   rr   rN   Frk   rl   r   rh   r{  r`  r}  rd  r   r2   r2   r2   z	cat Countr   rp   )r   r   r   )
r   r)   r   r   r;   r   r   r   r   rt   )
rv   r  r   r   r   arr1arr2	expected1r  ry   s
             r@   #test_rectangles_aggregate_count_catz<DatashaderAggregateTests.test_rectangles_aggregate_count_cat  sF   -/@A%QQQQqR\%=P=P %' ' ')))%%%xLLLLLLLL	
   xLLLLLLLL	
   2r4.	+a0P0P0PQQQ	2r4.	+a0P0P0PQQQ	99==eWMMMh'''''rB   c           	      V   t          ddgdg          }t          |dddd          }g d	}g d
}t          j        ddt          t          gddt          t          gg dt          t          t          t          gg          }t          |||fd          }|                     ||           d S )N)r   r   r2   rC   rH   )r2   r2   rK   rC   r   valuerr   rN   sumFr  r{  r`  rH   )rH   rS  r   r   )r   r)   r;   r   r   r   rt   r  s          r@   test_rectangles_aggregate_sumz6DatashaderAggregateTests.test_rectangles_aggregate_sum  s    -/@A'SSSQqUERRR)))%%%h#sC #sC    #sC 	
   "b#g666h'''''rB   c                    t          dt          j        ddd          dt          j        ddd          fdt          j        ddd          dt          j        ddd          fg          }t          |ddd	          }g d
}t	          j        d          t	          j        d          t	          j        d          t	          j        d          g}t	          j        g dg dg dg dg          }dt	          j        d          dt	          j        d          f}t          |||f|t          dd                    }| 	                    ||           d S )Nr   r?  r2   rC   rN   rK   r3  Fr   rH   r   r         @2016-01-01T12:00:002016-01-02T12:00:002016-01-03T12:00:002016-01-04T12:00:00r   r2   r2   r   )r2   rC   rC   r2   rd  r   2016-01-01T00:00:00      @2016-01-05T00:00:00ro   rp   r   rs   )
r   rB  rC  r)   r;   r   r   r   r   rt   )rv   r  r   r   r   rZ  r   ry   s           r@   "test_rectangles_aggregate_dt_countz;DatashaderAggregateTests.test_rectangles_aggregate_dt_count  sg   D!Q''BKa,C,CDD!Q''BKa,C,CD
   Qq%@@@!!!M/00"-@U2V2VM/00"-@U2V2V
 hLLLLLLLL	
   r}%:;;r}%:;;="b#vYwWX=Y=Y=YZZZh'''''rB   c                    t          ddg          }t          |ddd          }g d}g d}t          j        g dg dg dg dg          }t	          |||ft          d	d
                    }|                     ||           d S )N)r   r2   rN   r2   )r2   r   r2   rN   rN   Fr   r  r   r2   r   r   r~  ro   r   rp   rr   )r   r)   r;   r   r   r   rt   )rv   segmentsr   r   r   rZ  ry   s          r@   test_segments_aggregate_countz6DatashaderAggregateTests.test_segments_aggregate_count  s    \<899!UCCC!!!!!!hLLLLLLLL	
   "b#i.J.J.JKKKh'''''rB   Fc           	      l   t          ddgdg          }|r% t          j        dddd          |d	d	
          }nt          |d	d	dd          }g d}g d}t          j        }t          j        |d	||gg d|d	||g|d	||gg          }t          |||fd          }|                     ||           d S )N)r   r2   rN   r2   rC   )r2   r   r2   rN   rN   r  rr   
   Fr  rk   rl   rh   r   rN   )rk   rl   r  )rC      rC   rC   )r   r)   instancer;   r   r   r   rt   )	rv   r  r  r   r   r   narZ  ry   s	            r@   test_segments_aggregate_sumz4DatashaderAggregateTests.test_segments_aggregate_sum  s   _o>wiPPP 	)$Uu  a+ + +CC !Uu  C "!!!!!VhBOOOBOBO	
   "b#g666h'''''rB   c                 2    |                      d           d S )NT)r  )r  rv   s    r@   $test_segments_aggregate_sum_instancez=DatashaderAggregateTests.test_segments_aggregate_sum_instance4  s    (($(77777rB   c                    t          dt          j        ddd          dt          j        ddd          fdt          j        ddd          dt          j        ddd          fg          }t          |ddd          }g d	}t	          j        d
          t	          j        d          t	          j        d          t	          j        d          g}t	          j        g dg dg dg dg          }dt	          j        d          dt	          j        d          f}t          |||f|t          dd                    }| 	                    ||           d S )Nr   r?  r2   rC   rN   r3  Fr   r  r  r  r  r  r  r~  r   r  r  r  ro   rp   r  )
r   rB  rC  r)   r;   r   r   r   r   rt   )rv   r  r   r   r   rZ  r   ry   s           r@    test_segments_aggregate_dt_countz9DatashaderAggregateTests.test_segments_aggregate_dt_count7  sg   D!Q''BKa,C,CDD!Q''BKa,C,CD
   !UCCC!!!M/00"-@U2V2VM/00"-@U2V2V
 hLLLLLLLL	
   r}%:;;r}%:;;="b#vYwWX=Y=Y=YZZZh'''''rB   c                    t          g d          }t          |dddd          }g d}g d}t          j        g dg dg d	g d
g          }t	          |||ft          dd                    }|                     ||           d S )N)r2   rC   r2   rN   r  FrP  r`  r{  r2   r2   r2   r2   r  rd  ro   r   rp   rr   r   r)   r;   r   r   r   rt   rv   arear   r   r   rZ  ry   s          r@    test_area_aggregate_simple_countz9DatashaderAggregateTests.test_area_aggregate_simple_countM  s    IIIAaOOO%%%)))hLLLLLLLL	
   "b#i.J.J.JKKKh'''''rB   c                    t          g d          }t          |dddd          }g d}g d}t          j        g dg d	g d
g d
g          }t	          |||ft          dd                    }|                     ||           d S )N)rs  rE   rN   )r  r   FrP  r`  )g      g      g      g      ؿr   r  r  ro   r   rp   rr   r  r  s          r@   "test_area_aggregate_negative_countz;DatashaderAggregateTests.test_area_aggregate_negative_count[  s    LLL!!Aa%PPP%%%---hLLLLLLLL	
   "b#i.J.J.JKKKh'''''rB   c                    t          g d          }t          |dddd          }g d}g d}t          j        g dg d	g d
g dg          }t	          |||ft          dd                    }|                     ||           d S )N)rs  rC   rK   rN   )r  rK   FrP  r`  )g      g      rn   g      @rd  r2   r   r   r   r  ra  ro   r   rp   rr   r  r  s          r@   #test_area_aggregate_crossover_countz<DatashaderAggregateTests.test_area_aggregate_crossover_counti  s    JJJAa%PPP%%%'''hLLLLLLLL	
   "b#i.J.J.JKKKh'''''rB   c                    t          g d          }t          |ddd          }g d}g d}t          j        g dg dg d	g d
g          }t	          |||ft          dd                    }|                     ||           d S )N))r   r2   r   )r2   rC   ra   )rC   rK   r   rN   Fr   r`  )g?g?g@g
@rd  r  r  r   ro   r   rp   rr   r   r)   r;   r   r   r   rt   rv   r,   r   r   r   rZ  ry   s          r@   %test_spread_aggregate_symmetric_countz>DatashaderAggregateTests.test_spread_aggregate_symmetric_countw  s    ???@@a5AAA%%%%%%hLLLLLLLL	
   "b#i.J.J.JKKKh'''''rB   c                    t          g dg d          }t          |ddd          }g d}g d}t          j        g d	g d
g dg dg          }t	          |||ft          dd                    }|                     ||           d S )N))r   r2   rc   r   )r2   rC   r   rc   )rC   rK   rH   r2   )r5   posnegrr   rN   Fr   r`  )g?g      ?g@g33333@rd  r  r  ra  ro   r   rp   r  r  s          r@   'test_spread_aggregate_assymmetric_countz@DatashaderAggregateTests.test_spread_aggregate_assymmetric_count  s    LLL1113 3 3a5AAA%%%---hLLLLLLLL	
   "b#i.J.J.JKKKh'''''rB   c                    ddgddgg dd}t          j        ddgddggddgddggd	dgdd
ggg          j        }t          j        |d|          }t          |ddg          }t          |dddd          }g d}g d}t          j        g dg dg dgg dg dg dgg dg dg dgg                              d          }t          |||f          }|                     ||           d S )Nr2   rC   r   r2   rC   )r4   r5   band   r  r         D   )r   dimsr   r4   r5   rK   FTrk   rl   rh   re  )gD^Ř?r   gRTU@)r  r  r  )r   r   r  )r2   r2   r   r   r   r   )r  r  r   )r   r   r  )r2   rC   r   )	r;   r   r   r   	DataArrayr   r)   	transposert   )	rv   r   rZ  daimr   r   r   ry   s	            r@   test_rgb_regrid_packedz/DatashaderAggregateTests.test_rgb_regrid_packed  sy   1vQFIII>>h2Y2YAYAYAY2Y
    	 \s);FKKKc3Z  !AutLLL''''''h^^^^^^ ^^^^^^ ^^^^^^

 
 
 9Y 	 B}%%h'''''rB   c                    t          g dddggdg          }t          |ddd          }g d	}g d
}t          j        g dg dg dg dg          }t	          |||ft          dd                    }|                     ||           d S )N)r   r   r   r   rf   spatialpandasr   rN   Fr   r`  g      ?r|  g      ?g      ?rC   r   r   r2   r2   r2   r   r2   r2   r2   r2   r   r2   r   r2   r   ro   r   rp   rr   r   r)   r;   r   r   r   rt   rv   r$  r   r   r   rZ  ry   s          r@   test_line_rasterizez,DatashaderAggregateTests.test_line_rasterize  s    ---/?@OK\]]]Aa???%%%)))hLLLLLLLL	
   "b#i.J.J.JKKKh'''''rB   c           	      Z   t          dddt          j        ddgdddt          j        ddgdgdg          }t          |ddd	          }g d
}g d}t          j        g dg dg dg dg          }t          |||ft          dd                    }|                     ||           d S )Nr   r2   rC   r   r  r   rN   Fr   r`  r  r  r  r  r  ro   rp   rr   )r   r;   r   r)   r   r   r   rt   r  s          r@   test_multi_line_rasterizez2DatashaderAggregateTests.test_multi_line_rasterize  s    Aq!RVQ2!Q261a9PQQR-.0 0 0Aa???%%%)))hLLLLLLLL	
   "b#i.J.J.JKKKh'''''rB   c                 $   t          g dg dddgdg          }t          |ddd	          }g d
}g d}t          j        g dg dg dg dg          }t	          |||ft          dd                    }|                     ||           d S )Nr  r   r2   r   Ring)r4   r5   	geom_typer  r   rN   Fr   r`  r  r  rc  r  )r   r   r2   r   ro   r   rp   rr   r  r  s          r@   test_ring_rasterizez,DatashaderAggregateTests.test_ring_rasterize  s    9999996JJKWfVghhhAa???%%%)))hLLLLLLLL	
   "b#i.J.J.JKKKh'''''rB   c           	      2   t          g dg dg dggdg          }t          |ddd          }g d}g d	}t          j        g d
g dg dg dg dg dg          }t	          |||ft          dd                    }|                     ||           d S )Nr  r  ))rR  r`   )r2   r   )rc   r`   )r4   r5   holesr  Fr   )gtE)!XU?rH   g?g(%?r   RTU?)guOU?rm   g?g?rn   g]QJVU?)r2   r2   r2   r2   r2   r2   )r   r   r   r   r   r   )r   r2   r   r   r2   r   )r   r   r2   r2   r   r   ro   r   rp   rr   )r   r)   r;   r   r   r   rt   rv   polyr   r   r   rZ  ry   s          r@   test_polygon_rasterizez/DatashaderAggregateTests.test_polygon_rasterize  s    ))))):::;<> >
   Aa??????AAAh
   "b#i.J.J.JKKKh'''''rB   c           	      t   t          g dg dddg dg dddgd	          }t          |d
d
dd          }g d}g d}t          j        g ddddt          j        gdddt          j        gddt          j        t          j        gg          }t          |||fd	          }|                     ||           d S )Nr  r  rT  r  r   r   r2   r   r2   r2   g@r~   rr   rN   Fmeanr  r`  r  )rT  rT  rT  rT  )r   r)   r;   r   r   r   rt   r  s          r@   test_polygon_rasterize_mean_aggz8DatashaderAggregateTests.test_polygon_rasterize_mean_agg  s    )))))#66)))))#66
    Aa6RRR%%%)))h&&&C#"&)C#"&)C"&"&)	+ , ,
 "b#c222h'''''rB   c           
      ^   t          dddt          j        dddgdddt          j        dddgdgdg          }t          |ddd	          }g d
}g d}t          j        g dg dg dg dg          }t          |||ft          dd                    }|                     ||           d S )Nr   r2   rC   r   r  r   rN   Fr   r`  r  r  r  r}  ro   rp   rr   )r   r;   r   r)   r   r   r   rt   r  s          r@   test_multi_poly_rasterizez2DatashaderAggregateTests.test_multi_poly_rasterize  s    1aAq9 !1aAq9; ; <"1!24 4 4 Aa???%%%)))hLLLLLLLL	
   "b#i.J.J.JKKKh'''''rB   N)F)8__name__
__module____qualname____doc__rz   r   	cudf_skipr   r   r   r   r   r   r   r   r   r   r  r  r  r%  r+  r.  r1  r:  r=  rE  rG  rL  r[  r^  rj  rm  rv  ry  r  r  r  r  r  r  r  r  r  r  r  r  r  r  spatialpandas_skipr  r  r  r  r  r   rB   r@   rZ   rZ   u   sq        ( ( (( ( ( ( ( Y(# # #( ( (( ( (M M M"
( 
( 
(( ( (
( 
( 
(( ( ("( ( (- - -(( ( (( ( (( ( (+ + +
B B B
( ( (( ( (( ( (( ( (( ( (( ( (( ( (( ( (8 8 8.( ( (( ( (( ( (( ( (( ( (.( ( (( ( (,( ( (( ( ( (,8 8 8( ( (,( ( (( ( (( ( (( ( (( ( (( ( (: ( ( ( ( ( ( ( ( ( ( ( (& ( ( (  ( ( ( ( (rB   rZ   c                        e Zd Zd Zd Zd ZdS )DatashaderCatAggregateTestsc                 T    t           t          d          k     rt          d          d S )Nz0.11.0z0Regridding operations require datashader>=0.11.0r%   r   r   r  s    r@   setUpz!DatashaderCatAggregateTests.setUp  s,    ))))MNNN *)rB   c                    t          g dd          }t          |dddddt          j        dt          j                                        }t          j        dd	g          }t          j        dd	g          }t          j        d
dgddgg          }t          j        dd
gddgg          }t          j        dd
gddgg          }t          j        ||dd|fd|fd|fd          }t          |ddgg d          }	|j
        }
|	j
                            d          j        |
j        j        k                                    sJ d S r   )r   r"   r   byr   r;   r   r   r   r   r   r   r   r   r   r   s              r@   r   z=DatashaderCatAggregateTests.test_aggregate_points_categorical  sh   JJJRUVVVbeC6L6LN N NHdD\""HdD\""Hq!fq!f%&&Hq!fq!f%&&Hq!fq!f%&&z##'O:q/UVXX
 
 
 d3*OOOLLL&&s++2fhoEJJLLLLLLLrB   c                 \   t          g dddg          }t          |dddddt          j        dt          j        d                              }t          j        d	d
g          }t          j        d	d
g          }t          j        dt
          j        gt
          j        t
          j        gg          }t          j        t
          j        dgt
          j        t
          j        gg          }t          j        t
          j        dgt
          j        t
          j        gg          }t          j	        ||dd|fd|fd|fd          }t          |ddgg d          }	|j        }
t
          j                            |	j                            d          j        |
j        j                   d S )N))r`   ra   r   rF   )rc   rd   r   r`   )r   re   r   ra   r8   r~   rr   Frf   rC   r   rm   rn   rF   r`   ra   r   r   r   r4   r5   r   )r   r"   r   r  r  r;   r   r   r   r   r   r   testingassert_equalr   r   r   r   s              r@   &test_aggregate_points_categorical_meanzBDatashaderCatAggregateTests.test_aggregate_points_categorical_mean.  s   YYYbgilamnnnbeE273<<6P6PR R RHdD\""HdD\""HsBFmbfbf%5677Hrvsmbfbf%5677Hrvsmbfbf%5677z##'O:q/UVXX
 
 
 d3*OOOLLL

 6 6s ; ; BFHOTTTTTrB   N)r  r  r  r  r   r  r  rB   r@   r  r    sL        O O OM M M"U U U U UrB   r  c                        e Zd Zd Zd Zd ZdS )DatashaderShadeTestsc                    ddgddg}}t          t          ||t          j        ddgddggd          fdgt	          dd	          
          t          ||t          j        ddgddggd          fdgt	          dd	          
          t          ||t          j        ddgddggd          fdgt	          dd	          
          ddg          }t          |d          }ddgddgg}ddgddgg}ddgddgg}ddgddgg}t          ||||||fdgt          j        t	          dd          gz   
          }	|                     ||	           d S )Nrm   rn   r2   r   u4r  r   r   rp   r   rs   r   r~   r   Frescale_discrete_levels   x   B      m         _      (   r  gridr   rf   range	r   r   r;   r   r   r+   r   rs   rt   
rv   r   r   r   shadedrgr   r   ry   s
             r@   $test_shade_categorical_images_xarrayz9DatashaderShadeTests.test_shade_categorical_images_xarrayB  s   d|Bub"bhAA7Gt.T.T.T%U/7j	)\]@^@^@^ `  `  `$b"bhAA7Gt.T.T.T%U/7j	)\]@^@^@^ `  `  `$b"bhAA7Gt.T.T.T%U/7j	)\]@^@^@^ `  `  `	a a !$u& & & tU;;;3Z"c##Yc
#"XRy!!WsAhB1a+vh Y	#V(D(D(D'EEG G G*****rB   c                    ddgddg}}t          t          ||t          j        ddgddggd          fdgt	          dd	          
          t          ||t          j        ddgddggd          fdgt	          dd	          
          t          ||t          j        ddgddggd          fdgt	          dd	          
          ddg          }t          |d          }ddgddgg}ddgddgg}ddgddgg}ddgddgg}t          ||||||fdgt          j        t	          dd          gz   
          }	|                     ||	           d S )Nrm   rn   r2   r   r   r  r  r   rp   r  r   r~   r   Fr  r  r  r  r  r  r	  r
  r  r  r  r  r   rf   r  r  r  s
             r@   "test_shade_categorical_images_gridz7DatashaderShadeTests.test_shade_categorical_images_gridT  s   d|Bub"bhAA7Gt.T.T.T%U/5hi	Z[>\>\>\ ^  ^  ^$b"bhAA7Gt.T.T.T%U/5hi	Z[>\>\>\ ^  ^  ^$b"bhAA7Gt.T.T.T%U/5hi	Z[>\>\>\ ^  ^  ^	_ _ !$u& & & tU;;;3Z"c##Yc
#"XRy!!WsAhB1a+vh Y	#V(D(D(D'EEG G G*****rB   c                 
   t          j        dt          j        d          it          j        ddd                    }t          t          t          |          dd	                    }t          j        g d
d          }t          j        g           }t          j	        d          dt          j	        d          df}t          ||t          j        d          fddgdd|          }|                     ||           d S )Nr5   r1   r  r   r	  r
  FrK   r  r  r  r  r  rJ   r  )r   rK   rN   r   r2   )r   r  r   )r9   r:   r;   r  r   r+   r)   r
   r   r   r   r  rt   )rv   rT   rgbr   r   r   ry   s          r@   "test_shade_dt_xaxis_constant_yaxisz7DatashaderShadeTests.test_shade_dt_xaxis_constant_yaxisf  s   \3-R]<Y\ci5j5j5jkkkIeBiia@@@AAX 5 5 5<LN N NXb\\- <==s- <==sDB 3 34wn !Af> > >h'''''rB   N)r  r  r  r  r  r  r  rB   r@   r  r  @  sA        + + +$+ + +$
( 
( 
( 
( 
(rB   r  c                   N    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S )DatashaderRegridTestsr[   c                 T    t           t          d          k    rt          d          d S )Nz0.5.0z/Regridding operations require datashader>=0.6.0r  r  s    r@   r  zDatashaderRegridTests.setUpy  s,    ))))LMMM *)rB   c                 `   t          t          d          t          d          t          j        d          t          j        d          t          j                 j        z  f          }t          |ddd          }t          ddgdd	gd
dgddggf          }|                     ||           d S Nr  r3  rC   Fr   rS  rK  rn         
@r2   r  r}   r   r  r;   r   newaxisr   r*   rt   rv   rx   	regriddedry   s       r@   test_regrid_meanz&DatashaderRegridTests.test_regrid_mean}      U2YYa")B--")A,,rz:R:T*TUVV3a5AAA	2r(T4LAq6Ar72CDEEH-----rB   c                    t          t          d          t          d          t          j        d          t          j        d          t          j                 j        z  fdg          }|j                                        |_        t          |ddd          }t          dd	gd
dgddgddggf          }| 	                    ||           d S )Nr  r3  r   r   rC   Fr   rS  rK  rn   r!  r2   r  r}   )
r   r  r;   r   r#  r   r   r  r*   rt   r$  s       r@   "test_regrid_mean_xarray_transposedz8DatashaderRegridTests.test_regrid_mean_xarray_transposed  s    U2YYa")B--")A,,rz:R:T*TU&Z) ) )8%%''3a5AAA	2r(T4LAq6Ar72CDEEH-----rB   c                    t          j        d          t          j        d          t           j                 j        z                      d          }t          t          d          t          d          ||dz  |dz  f          }t          |ddd          }t          j        ddgd	d
gg          }t          ddgddg||dz  |dz  fdg          }| 	                    ||           d S )Nr  r3  float64rC   Fr   rR  gffffff@g@gffffff6@rS  rK  rn   r!  r   r   )
r;   r   r#  r   astyper   r  r*   r   rt   )rv   rZ  r  r%  new_arrry   s         r@   test_regrid_rgb_meanz*DatashaderRegridTests.test_regrid_rgb_mean  s    y}}ry||BJ799AA)LL599eAhhSUCE:;;3a5AAA	(S#Jd455R4,GAINZbYcdddH-----rB   c                 b   t          t          d          t          d          t          j        d          t          j        d          t          j                 j        z  f          }t          |dddd          }t          ddgd	d
gddgddggf          }|                     ||           d S )Nr  r3  maxrC   F)r   rk   rl   rh   rS  rK  rn   r!           $   r"  r$  s       r@   test_regrid_maxz%DatashaderRegridTests.test_regrid_max  s    U2YYa")B--")A,,rz:R:T*TUVV35!USSS	2r(T4LAr7RH2EFGGH-----rB   c           	          t          ddgddgddgddggf          }t          |dddd	
          }t          g dg dg dg dg dg dgf          }|                     ||           d S )NrH   r   r   r2   rC   rK   rN   TF)rk   rl   re  rh   r`  ra  rb  r   r*   rt   r$  s       r@   test_regrid_upsamplingz,DatashaderRegridTests.test_regrid_upsampling  s    c3Z#sq!fq!f-=>??3aD%PPP	2224L4L4L'<<'<<'<<'<<)* + +
 	H-----rB   c           	          t          ddgddgddgddggf          }t          |dddd	d
          }t          g dg dg dg dg dg dgf          }|                     ||           d S )NrH   r   r   r2   rC   rK   rN   TlinearF)rk   rl   re  interpolationrh   r`  r   r  )r2   r2   rC   rC   )rC   rC   rC   rK   r7  r$  s       r@   test_regrid_upsampling_linearz3DatashaderRegridTests.test_regrid_upsampling_linear  s    c3Z#sq!fq!f-=>??3aDPXbghhh	2224L4L4L'<<'<<'<<'<<)* + +
 	H-----rB   c                     t          ddgddgddgddggf          }t          |dddd          }|                     ||           d S )	NrH   r   r   r2   rC   rK   Fr  r7  rv   rx   r%  s      r@   test_regrid_disabled_upsamplingz5DatashaderRegridTests.test_regrid_disabled_upsampling  s_    c3Z#sq!fq!f-=>??3a55QQQ	C(((((rB   c           	          t          ddgddgddgddggf          }t          |ddddd	d	
          }|                     ||           d S )NrH   r   r   rJ   rS  rM   rC   )rE   rN   F)rk   rl   ri   rj   r   rh   r7  r>  s      r@   test_regrid_disabled_expandz1DatashaderRegridTests.test_regrid_disabled_expand  sk    c3Z#sr2hR-ABCC3a7G\a#(* * *	C(((((rB   c                 n   t          j        ddd          }t          j        ||          \  }}t          t          j        |          t          j        |          z  d          }t          |ddd          }t          t          j        d	          d
dd          }|                     ||           d S )Nr   r     ra  r   )rs  rt  Fri   rj   rh   r   rd  r2   )r   r   r  )	r;   linspacemeshgridr   sincosr*   r   rt   )rv   lsxxyyrx   r%  ry   s          r@   test_regrid_zero_rangez,DatashaderRegridTests.test_regrid_zero_range  s    [B$$R$$BBF2JJrvbzz),???3
JPUVVV	&)),UVWWWH-----rB   N)r  r  r  r  r  r&  r)  r.  r5  r8  r<  r?  rA  rM  r  rB   r@   r  r  t  s         N N N. . .. . .. . .. . .. . .. . .) ) )
) ) ). . . . .rB   r  c                       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 )DatashaderRasterizeTestsr[   c                     t           t          d          k    rt          d          ddg| _        g d| _        ddg| _        g d| _        d S )	Nz0.6.4/Regridding operations require datashader>=0.7.0r  r   ))r   r   )r   rJ   )rJ   r   r   )r   r2   rC   rH   )rK   rC   r2   r   )r   r   r2   r   rJ   rC   )rJ   r   rK   )r2   r2   rN   )r%   r   r   	simplexesverticessimplexes_vdimvertices_vdimr  s    r@   r  zDatashaderRasterizeTests.setUp  s^    ))))LMMM#Y/===-~>NNNrB   c                    t          | j        | j        f          }t          |ddd          }t	          t          j        g dg dg dg          dt          dd          	          }|                     ||           d S )
NrK   Fr   TTTra  r-  r   rp   r  )	r   rT  rU  r)   r   r;   r   r   rt   rv   trimeshrx   images       r@   test_rasterize_trimesh_no_vdimsz8DatashaderRasterizeTests.test_rasterize_trimesh_no_vdims  s    4>4=9::qEBBBbh 2 2 24F4F4FHZHZHZ[\\)51K1K1KM M Me$$$$$rB   c           	          t          | j        | j        f          }t          |ddd          }t	          g ddgt          j        d          fdd	t          d
d                    }|                     ||           d S )NrC   r   F)rl   ri   rh   rm   rn   r   r   r2   r-  r   rp   r   )	r   rT  rU  r)   r   r;   r   r   rt   rZ  s       r@   *test_rasterize_trimesh_no_vdims_zero_rangezCDatashaderRasterizeTests.test_rasterize_trimesh_no_vdims_zero_range  s    4>4=9::65IIIrD$<&)9)9:)AYuUV=W=W=WY Y Ye$$$$$rB   c                    t          | j        | j        fdg          }t          |dddd d          }t	          j        g dg dg dg          }t          |dt          d	d
                    }|                     ||           d S )Nr~   rr   rK   anyF)rk   rl   r   r;  rh   rY  ra  r-  r   rp   r  )	r   rV  rU  r)   r;   r   r   r   rt   rv   r[  rx   r   r\  s        r@   .test_rasterize_trimesh_with_vdims_as_wireframezGDatashaderRasterizeTests.test_rasterize_trimesh_with_vdims_as_wireframe  s    4.>seLLLquTXbghhh
  
 eL	%PQ8R8R8RSSSe$$$$$rB   c                     t          | j        | j        fdg          }t          |ddd          }t	          j        g dg dg dg          }t          |d	
          }|                     ||           d S )Nr~   rr   rK   Fr   rH   r   r   rH   rH   r   rH   rH   rH   ra  rD  r   rV  rU  r)   r;   r   r   rt   rb  s        r@   test_rasterize_trimeshz/DatashaderRasterizeTests.test_rasterize_trimesh  s    4.>seLLLqEBBBOOOOOO
  
 eL111e$$$$$rB   c                 J   t          j        | j        g d          }t          j        | j        g d          }t	          ||f          }t          |ddd          }t          j        g dg dg d	g          }t          |d
          }| 	                    ||           d S )Nv0v1v2r   r  rK   Fr   WUU@k}@r  r  r   gWUU	@r   rq  rr  ra  rD  )
r9   r:   rT  rW  r   r)   r;   r   r   rt   )rv   
simplex_df	vertex_dfr[  rx   r   r\  s          r@   ,test_rasterize_pandas_trimesh_implicit_nodeszEDatashaderRasterizeTests.test_rasterize_pandas_trimesh_implicit_nodes  s    \$.:L:L:LMMM
L!3___MMM	:y122qEBBB*********
  
 eL111e$$$$$rB   c                    t          j        | j        g d          }t          j        | j        g d          }t	          j        |d          }t	          j        |d          }t          ||f          }t          j                    } ||dddd	          }|j	        }| 
                    t          |          d
           |                     |j        |           |                     ||j                 d         t          j                   t          j        g dg dg dg          }	t#          |	d          }
| 
                    ||
           d S )Nrk  ro  r  rC   r   rK   FTrk   rl   rh   
precomputer2   meshrp  rs  rt  ra  rD  )r9   r:   rT  rW  r   r   r   r)   r  _precomputedrt   lenassertIn_plot_idr   r;   r   r   )rv   ru  rv  simplex_ddf
vertex_ddfr[  rirx   cacher   r\  s              r@   *test_rasterize_dask_trimesh_implicit_nodeszCDatashaderRasterizeTests.test_rasterize_dask_trimesh_implicit_nodes  s\   \$.:L:L:LMMM
L!3___MMM	nZQ???^I1===
;
344!!b!UtLLLUQ'''g&...eG$45f=r|LLL*********
  
 eL111e$$$$$rB   c                    t          j        | j        g d          }t          j        | j        ddg          }t	          j        |d          }t	          j        |d          }t          |g d          }t          ||fdg	          }t          j	                    } ||d
d
dd          }|j
        }	|                     t          |	          d           |                     |j        |	           |                     |	|j                 d         t          j                   t!          j        g dg dg dg          }
t%          |
d          }|                     ||           d S )N)rl  rm  rn  r~   ro  r4   r5   rC   r   r4   r5   r   r~   rr   rK   FTry  r2   r{  re  rf  rg  ra  rD  )r9   r:   rV  rU  r   r   r   r   r)   r  r|  rt   r}  r~  r  r   r;   r   r   rv   ru  rv  r  r  	tri_nodesr[  r  rx   r  r   r\  s               r@   test_rasterize_dask_trimeshz4DatashaderRasterizeTests.test_rasterize_dask_trimesh  ss   \$"5?V?V?VWWW
Lc
CCC	nZQ???^I1===
*&9&9&9::	;	23%@@@!!b!UtLLLUQ'''g&...eG$45f=r|LLLOOOOOO
  
 eL111e$$$$$rB   c                    t          j        | j        g d          }t          j        | j        g d          }t	          j        |d          }t	          j        |d          }t          |g ddg          }t          ||f          }t          j	                    } ||ddd	d
          }|j
        }	|                     t          |	          d           |                     |j        |	           |                     |	|j                 d         t          j                   t!          j        g dg dg dg          }
t%          |
d          }|                     ||           d S )Nrk  ro  r  rC   r   r  r~   rK   FTry  r2   r{  rp  rs  rt  ra  rD  )r9   r:   rT  rW  r   r   r   r   r)   r  r|  rt   r}  r~  r  r   r;   r   r   r  s               r@   +test_rasterize_dask_trimesh_with_node_vdimszDDatashaderRasterizeTests.test_rasterize_dask_trimesh_with_node_vdims6  sv   \$.:L:L:LMMM
L!3___MMM	nZQ???^I1===
*&9&9&9C5AA	;	233!!b!UtLLLUQ'''g&...eG$45f=r|LLL*********
  
 eL111e$$$$$rB   c                    t          | j        dg          }t          | j        |fdg          }t	          |ddd          }t          j        g dg dg d	g          }t          |d
d          }|                     ||           d S )Nnode_zrr   r~   rK   Fr   rp  rs  rt  ra  r  )	r   rW  r   rV  r)   r;   r   r   rt   rv   nodesr[  rx   r   r\  s         r@   +test_rasterize_trimesh_node_vdim_precedencezDDatashaderRasterizeTests.test_rasterize_trimesh_node_vdim_precedenceP  s    t)(<<<4.6seDDDqEBBB*********
  
 eLAAAe$$$$$rB   c           	      :   t          | j        dg          }t          | j        |fdg          }t	          |dddt          j        d                    }t          j        g dg dg d	g          }t          |d
          }| 
                    ||           d S )Nr  rr   r~   rK   Fr  re  rf  rg  ra  rD  )r   rW  r   rV  r)   r   r  r;   r   r   rt   r  s         r@   )test_rasterize_trimesh_node_explicit_vdimzBDatashaderRasterizeTests.test_rasterize_trimesh_node_explicit_vdim]  s    t)(<<<4.6seDDDqEbgVYll[[[OOOOOO
  
 eL111e$$$$$rB   c                     t          | j        | j        fdg          }t          |ddd          }t	          g ddgt          j        d	          fd
d          }|                     ||           d S )Nr~   rr   r   rC   F)ri   rl   rh   rm   rn   r   r   r2   r   )r   rV  rU  r)   r   r;   r   rt   rZ  s       r@   !test_rasterize_trimesh_zero_rangez:DatashaderRasterizeTests.test_rasterize_trimesh_zero_rangej  s    4.>seLLL5IIIrD$<&)9)9:)A7 7 7e$$$$$rB   c                    ddg}g d}t          |t          |d          f          }t          |ddd          }t          j        g d	g d
g dg          }t          |dd          }|                     ||           d S )Nr  r   )rR  rS  )rJ   r   rK   )rJ   rJ   rN   r~   rr   rK   Fr   rp  rs  rt  ra  r  )r   r   r)   r;   r   r   rt   )rv   	simplicesrU  r[  rx   r   r\  s          r@   #test_rasterize_trimesh_vertex_vdimsz<DatashaderRasterizeTests.test_rasterize_trimesh_vertex_vdimsq  s    	*	GGG9fXS&A&A&ABCCqEBBB*********
  
 eL<<<e$$$$$rB   c           	         t          | j        | j        fdg          }t          |dddt	          j        d                    }t          j        g dg dg dg          }t          |d	
          }| 	                    ||           d S )Nr~   rr   rK   Fr  re  rf  rg  ra  rD  )
r   rV  rU  r)   r   r  r;   r   r   rt   rb  s        r@   $test_rasterize_trimesh_ds_aggregatorz=DatashaderRasterizeTests.test_rasterize_trimesh_ds_aggregator  s    4.>seLLLqEbgVYll[[[OOOOOO
  
 eL111e$$$$$rB   c                     t          | j        | j        fdg          }t          |dddd          }t	          j        g dg dg d	g          }t          |d
          }|                     ||           d S )Nr~   rr   rK   Fr  r  re  rf  rg  ra  rD  rh  rb  s        r@   (test_rasterize_trimesh_string_aggregatorzADatashaderRasterizeTests.test_rasterize_trimesh_string_aggregator  s    4.>seLLLqEfUUUOOOOOO
  
 eL111e$$$$$rB   c           	      2   t          ddgddgt          j        ddgddgg          f          }t          |dddt	          j        d                    }t          t          j        g dg dg d	g          d
          }|                     ||           d S )Nr   r2   rC   rK   Fr~   r  rC   rK   rK   r  rt  rt  r   r   rD  )r   r;   r   r)   r   r  r   rt   rv   qmeshrx   r\  s       r@   test_rasterize_quadmeshz0DatashaderRasterizeTests.test_rasterize_quadmesh  s    1a&1a&"(QFQF3C*D*DEFFQq%BGTWLLYYYbh			999iii@AA13 3 3e$$$$$rB   c           	         t          ddgddgt          j        ddgddgg          f          }t          |dddd          }t	          t          j        g dg dg d	g          d
          }|                     ||           d S )Nr   r2   rC   rK   Fr  r  r  r  r  rD  )r   r;   r   r)   r   rt   r  s       r@   )test_rasterize_quadmesh_string_aggregatorzBDatashaderRasterizeTests.test_rasterize_quadmesh_string_aggregator  s    1a&1a&"(QFQF3C*D*DEFFQq%FSSSbh			999iii@AA13 3 3e$$$$$rB   c                     t          g d          }t          |ddddd          }t          ddgddgdd	gdd	ggft          d
d	          g          }|                     ||           d S r]   )r   r)   r   r   rt   ru   s       r@   test_rasterize_pointsz.DatashaderRasterizeTests.test_rasterize_points  r{   rB   c                     t          g d          }t          ddgddgddgddggft          dd          g          }t          |d	d
d
dd          }|                     ||           d S r   )r
   r   r   r)   rt   r   s       r@   test_rasterize_curvez-DatashaderRasterizeTests.test_rasterize_curve  r   rB   c                 :   t          g dg d          } |j        t          ddgg d                                          }t	          ddgddgd	d
gdd
ggft          dd
          g          }t          |ddddd          }|                     ||           d S r  )r   r  r   r  r   r   r)   rt   r  s        r@   test_rasterize_ndoverlayz1DatashaderRasterizeTests.test_rasterize_ndoverlay  r   rB   c                     t          ddgddgg          }t          ddgddgddgddggft          d	d
          g          }t          |ddddd          }|                     ||           d S r"  )r   r   r   r)   rt   r#  s       r@   test_rasterize_pathz,DatashaderRasterizeTests.test_rasterize_path  r&  rB   c                 `   t          t          d          t          d          t          j        d          t          j        d          t          j                 j        z  f          }t          |ddd          }t          ddgdd	gd
dgddggf          }|                     ||           d S r   r"  r$  s       r@   test_rasterize_imagez-DatashaderRasterizeTests.test_rasterize_image  r'  rB   c                 b   t          t          d          t          d          t          j        d          t          j        d          t          j                 j        z  f          }t          |dddd          }t          ddgd	d
gddgddggf          }|                     ||           d S )Nr  r3  rC   Fr  r  rS  rK  rn   r!  r2   r  r}   r"  r$  s       r@   &test_rasterize_image_string_aggregatorz?DatashaderRasterizeTests.test_rasterize_image_string_aggregator  s    U2YYa")B--")A,,rz:R:T*TUVV3a5VTTT	2r(T4LAq6Ar72CDEEH-----rB   c                    t           j        rJ t          j        d                              dd          }t          j        d          }t          j        |t          ||                    }t          dddd	          }t          t          |          fi |}|j
        d
                                         }t          j                            ||j                   t          j        |                                          rJ t          t          |          fddi|}|j
        d
                                         }t          j        |                                          sJ d S )Ng      Y@r  g      $@r   )r   )rs  r  TF)ri   rj   rz  rh   r~   r   )r*   r   r;   r   reshaper   r  r   r)   r   r   to_numpyr  assert_array_equalr   isnanra  )rv   r   r   r  
rast_inputrx   outputs          r@   #test_rasterize_image_expand_defaultz<DatashaderRasterizeTests.test_rasterize_image_expand_default  s@   =   y''B//IdOO\$ta1~~~666(HW\]]]
b		00Z00#''))

%%fdf5558F##''))))) b		==$=*==#''))x##%%%%%%%rB   c                    t          j        t          j                            dddgddggd                    }ddg|_        t          |dgdg          }t          j        d	          }d
di|j	        k    sJ t          ||d           }t          |d           t          |t                    sJ |                                d         d         }t          |t                    sJ t!          |          dk    sJ d S )Nr   rF   rJ   )r1   r   r   r   rC   )
line_widthr  c                 (    t          |           dk    S )Nr  )r}  )r4   s    r@   <lambda>z]DatashaderRasterizeTests.test_rasterize_apply_when_instance_with_line_width.<locals>.<lambda>  s    3q66B; rB   )	operation	predicatebokehr   r2   )r9   r:   r;   r<   multivariate_normalr   r
   r)   r  _rasterize__instance_kwargsr   r    
isinstancer   itemsr   r}  )rv   rT   r   custom_rasterizer  r  s         r@   2test_rasterize_apply_when_instance_with_line_widthzKDatashaderRasterizeTests.test_rasterize_apply_when_instance_with_line_width  s!   \I))c3Z#s,f6 6
 
 3Z
bcU333$-;;;a $4$PPPPP-9N9N
 
 
 	vw&*-----,,..#A&'7+++++7||q      rB   N)r  r  r  r  r  r]  r_  rc  ri  rw  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  rB   r@   rO  rO    s        O O O% % %% % %	% 	% 	%	% 	% 	%% % %% % %2% % %4% % %4% % %% % %% % %% % %	% 	% 	%	% 	% 	%% % %% % %( ( (( ( (( ( (( ( (. . .. . .& & &&! ! ! ! !rB   rO  zagg_input_fn,index_col)i7    i5    )i  i    r  )i  r  r  r  c                    t          j         |d                    }t          ddddd          }t          | fd|i|}t	          |j                  g dk    sJ t	          |j                  g dk    sJ t          j        	                    |j        d	         j        
                                |           t          | fd |d          i|}t          j        	                    |d         |d                    d S )
Nr7   Frx  rC   rg   r   )r   r6   r7   r8   )r7   r6   r8   r   )r   wherer   r)   listr   rs   r;   r  r  flatten)rX   agg_input_fn	index_colagg_fnr  rx   
img_simples          r@   "test_rasterize_where_agg_no_columnr    s    Xll5))**FegwaXYZZZJ
J
@
@6
@Z
@
@C>>9999999	??1111111 J!!#(7"3"8"@"@"B"BINNN:TT,,u2E2ETTTJJ!!*U"3SZ@@@@@rB   r  c           	      j   t          j         |d          d          }t          ddddd          }t          | fd|i|}t	          |j                  dgk    sJ t          | fdt          j         |d                    i|}t          j                            |d         |d                    d S )Nr7   r6   Frx  rC   rg   r   )	r   r  r   r)   r  r   r;   r  r  )rX   r  r  r  rx   img_no_columns         r@   $test_rasterize_where_agg_with_columnr    s    Xll5))3//FegwaXYZZZJ
J
@
@6
@Z
@
@C>>cU""""jaaRXll5>Q>Q5R5RaV`aaMJ!!#c(M#,>?????rB   c                    t          j                    t          j        d          }}t          j        ||          }t	          ddddd          }t          | fd|i|}t          | fd|i|}t          | fd|i|}t          j                            |d         |d                    t          j                            |d	         t          j	        |d
                              d S )Nr7   )r   firstFrx  rC   rg   r   r  r   ro   )
r   r   r  summaryr   r)   r;   r  r  
nan_to_num)rX   agg_fn_countagg_fn_firstr  r  img_sum	img_count	img_firsts           r@   test_rasterize_summerizer    s    !#RXe__,LZl,???FegwaXYZZZJ
DDvDDDG*LLLLLI*LLLLLIJ!!''"2Ie4DEEE J!!''"2BM)GBT4U4UVVVVVrB   sel_fnc           	         t          ddddd          }t          | fd |d          i|}t          |j                  g dk    sJ t          |j                  g dk    sJ t          | fd	t          j         |d                    i|}d
D ].}t          j        	                    ||         ||                    /t          | fi |}t          j        	                    |d         |d                    d S )NFrx  rC   rg   selectorr7   )ro   r   r6   r7   r8   )ro   r6   r7   r8   r   )r6   r7   r8   ro   )
r   r)   r  r   rs   r   r  r;   r  r  )rX   r  r  rx   img_aggr   r  s          r@   test_rasterize_selectorr  *  s   egwaXYZZZJ
J
E
E
E*
E
EC >>BBBBBBB	??::::::: 
UUrxu/F/FU*UUG  : :

%%c!fgaj9999 *33
33IJ!!#g,	'0BCCCCCrB   c            	         d} t          j        t          j                            dd|           t          j                            dd|           t          j        d| d          t          j                            |           d	z  d
          }t          |          }t          ddddd          }t          |fdt          j        d          i|}|d         j        t          j        d          k    sJ d S )NrN   iL   iZ   z
2023-01-01D)r   r   r   r1   )r4   r5   	TimestampValueFrx  rC   rg   r  r  r  zdatetime64[ns])r9   r:   r;   r<   uniformr   randr   r   r)   r   r  r  )nrT   rX   r  r  s        r@   #test_rasterize_with_datetime_columnr  >  s    	A	YtS!,,YsB**]qsKKK""S(	  
 
B JegwaXYZZZJ
MMRXg->->M*MMG;%2B)C)CCCCCCCrB   c                       e Zd Zd Zd ZdS )DatashaderSpreadTestsc           	         t          j        g dg dg dgg dg dg dgg dg dg dggt           j                  j        dz  }t	          t          |                    }t          j        g dg dg dgg dg dg dgg dg dg dgg dg dg dggt           j                  j        dz  }|                     |t          |                     d S )Nr  r  r  r  r  r2   r2   r2   )r;   r   uint8r   r,   r   rt   rv   rZ  spreadeds      r@   test_spread_rgb_1pxz)DatashaderSpreadTests.test_spread_rgb_1pxP  s7   hIIIyyy9"IIIyyy9"IIIyyy9;BD(L L LLMcR #c((##hIIIyyy9"IIIyyy9"IIIyyy9"IIIyyy9; CE(L L L MNcR 	3s88,,,,,rB   c                 Z   t           t          d          k     rt          d          t          j        g dg dg dg          j        }t          t          |                    }t          j        g dg dg dg          j        }|                     |t          |                     d S )Nz0.12.0z)Datashader does not support DataArray yetr  r  )rC   rK   rC   )	r%   r   r   r;   r   r   r,   r   rt   r  s      r@   test_spread_img_1pxz)DatashaderSpreadTests.test_spread_img_1px[  s    ))))FGGGh			999iii899;%**%%h			999iii899;5::.....rB   N)r  r  r  r  r  r  rB   r@   r  r  N  s2        	- 	- 	-/ / / / /rB   r  c                   2    e Zd Zd Zd Zd Zd Zd Zd ZdS )DatashaderStackTestsc                 r   t          j        ddgddggddgddggddgddgggt           j                  j        dz  | _        t          j        ddgddggddgddggddgddgggt           j                  j        dz  | _        t          | j                  | _        t          | j                  | _        d S )Nr   r2   r  r  )	r;   r   r  r   rgb1_arrrgb2_arrr   rgb1rgb2r  s    r@   r  zDatashaderStackTests.setUpf  s    Aq6Aq6"2$%q6Aq6"2$%q6Aq6"2"4;=8E E EEFsK Aq6Aq6"2$%q6Aq6"2$%q6Aq6"2"4;=8E E EEFsK &&	&&			rB   c                     t          | j        | j        z  d          }t          j        g dg dgg dg dggt          j                  }t          |          }|                     ||           d S )Nadd
compositor)r   r  r  )r  r   r   r  )r-   r  r  r;   r   r  r   rt   )rv   combinedrZ  ry   s       r@   test_stack_add_compositorz.DatashaderStackTests.test_stack_add_compositorq  s{    49,???h


3kkk===5QRZ\Zbcccs888,,,,,rB   c                 x    t          | j        | j        z  d          }|                     || j                   d S Noverr   r-   r  r  rt   rv   r  s     r@   test_stack_over_compositorz/DatashaderStackTests.test_stack_over_compositorw  ;    49,@@@49-----rB   c                 x    t          | j        | j        z  d          }|                     || j                   d S r  r-   r  r  rt   r  s     r@   "test_stack_over_compositor_reversez7DatashaderStackTests.test_stack_over_compositor_reverse{  r
  rB   c                 x    t          | j        | j        z  d          }|                     || j                   d S Nsaturater   r  r  s     r@   test_stack_saturate_compositorz3DatashaderStackTests.test_stack_saturate_compositor  ;    49,DDD49-----rB   c                 x    t          | j        | j        z  d          }|                     || j                   d S r  r  r  s     r@   &test_stack_saturate_compositor_reversez;DatashaderStackTests.test_stack_saturate_compositor_reverse  r  rB   N)	r  r  r  r  r  r	  r  r  r  r  rB   r@   r  r  d  sn        ' ' '- - -. . .. . .. . .. . . . .rB   r  c                       e Zd Zd Zd ZdS )GraphBundlingTestsc                     t           t          d          k    rt          d          t          j        d          | _        t          j        d          | _        t          | j        | j        ff          | _	        d S )Nz0.7.0rQ  r1  )
r%   r   r   r;   r   sourcer   r   r   graphr  s    r@   r  zGraphBundlingTests.setUp  sa    ))))LMMMillhqkkT[$+6899


rB   c                 x    t          | j                  j        }|                     || j        j                   d S rW   )r$   r  _split_edgepathsrt   	edgepaths)rv   directs     r@   test_directly_connect_pathsz.GraphBundlingTests.test_directly_connect_paths  s5    '
33D!566666rB   N)r  r  r  r  r  r  rB   r@   r  r    s2        : : :7 7 7 7 7rB   r  c                   `    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S )InspectorTestsz(
    Tests for inspector operations
    c                    t          g d          }t          |ddddd          | _        t          d S g dg dg dg d	f\  }}}}g d
g dgg}|||dd||g gddg}t	          t          |dgdg          ddd          | _        d S )Nr^   Frf   rN   rg   r   )r  rI  rK   )rC   r   rI  )rI  r3  rC   ))r   rC   )rC   rK   )rR  rR  ))g @g      @)r   r3  )gffffff@r  r2   )r4   r5   r  r~   rC   r~   r  rl  )r   rI  rE  )r   r)   pntsimgr  r#   r   polysrgb)rv   rw   xs1xs2ys1ys2r  polydatas           r@   r  zInspectorTests.setUp  s    ;;;<< %+V1QP P P F&YY			999iiiGS#s1113U3U3UVXC%a@@C2$Q??A!(8C55D4E#G #G #G*0&%Q Q QrB   c                 8    d\  t           _        t           _        d S )N)NN)r   r4   r5   r  s    r@   tearDownzInspectorTests.tearDown  s    !suuurB   c           	         t           t          d          t          | j        ddddd          }|                     |t          g dg d	d
dgd                     t          | j        ddddd          }|                     |                    d          t          j	        g                      |                     |                    d          t          j	        g                      d S )N+Polygon inspect tests require spatialpandasrK   Fr2   r  r3  max_indicatorsrh   pixelsr4   r5   r  rK   rI  rI  rC   r3  rC   r  r~   rr   ru  r4   r5   )
r  r   r&   r#  rt   r   r"  dimension_valuesr;   r   )rv   polysrw   s      r@   test_inspect_points_or_polygonsz.InspectorTests.test_inspect_points_or_polygons  s     HIII'(%Q!M M M						PQ*R*R)S[^ _ _ _```aqTX\`aaa0055rx||DDD0055rx||DDDDDrB   c                 &   t          | j        ddddd          }|                     |                    d          t	          j        g                      |                     |                    d          t	          j        g                      d S )NrK   Fr2   ru  r-  r4   r5   r'   r"  rt   r2  r;   r   rv   rw   s     r@   test_points_inspection_1px_maskz.InspectorTests.test_points_inspection_1px_mask  s    QVW[_cghhh0055rx||DDD0055rx||DDDDDrB   c                 *   t          | j        ddddd          }|                     |                    d          t	          j        dg                     |                     |                    d          t	          j        d	g                     d S )
NrK   FrC   ru  r-  r4   r`   r5   ra   r6  r7  s     r@   test_points_inspection_2px_maskz.InspectorTests.test_points_inspection_2px_mask  s    QVW[_cghhh0055rxGGG0055rxGGGGGrB   c                 .   t          | j        ddddd          }|                     |                    d          t	          j        ddg                     |                     |                    d	          t	          j        d
dg                     d S )NrK   FrN   ru  r-  r4   r`   rc   r5   ra   rd   r6  r7  s     r@   test_points_inspection_4px_maskz.InspectorTests.test_points_inspection_4px_mask  s    QVW[_cghhh0055rxc
7K7KLLL0055rxc
7K7KLLLLLrB   c                 .   t          | j        ddddd          }|                     |                    d          t	          j        g d                     |                     |                    d          t	          j        g d	                     d S )
NrK   Fr3  ru  r-  r4   )r`   rc   r   r5   ra   rd   re   r6  r7  s     r@   test_points_inspection_5px_maskz.InspectorTests.test_points_inspection_5px_mask  s    QVW[_cghhh0055rx7N7NOOO0055rx@P@P@P7Q7QRRRRRrB   c                    t          j        ddddd          } || j                   |                     t	          |j        d                   g d           |                     t	          |j        d                   g d	           d S )
NrK   Fr3  ru  r-  r4   )r`   rc   r   r5   r>  )r&   r  r"  rt   r  hits)rv   	inspectors     r@   "test_inspection_5px_mask_points_dfz1InspectorTests.test_inspection_5px_mask_points_df  s    $AuQ'+t5 5 5		$,inS122===AAAinS122>>>BBBBBrB   c           
         d\  t           _        t           _        t          | j        dddt          t           j        j        t           j        j                            }|                     t          |j	                  d           |                     t          |j	        d         t                     d           |                     |j	        d         j        d           |                     |j	        d         j        d	           d S )
Nrb   rK   Tr2   r   r.  rh   r/  streamsr   rc   rd   )r   r4   r5   r'   r"  r   paramrt   r}  rF  r  r7  s     r@   #test_points_inspection_dict_streamsz2InspectorTests.test_points_inspection_dict_streams  s    suQ'($	2T2T2TV V VV^,,a000FN1$5s;;TBBB*,c222*,c22222rB   c           	      2   d\  t           _        t           _        t          j        dddt          t           j        j        t           j        j                            } || j                  }|                     t          |j
                  d           |                     t          |j
        d         t                     d           |                     |j
        d         j        d           |                     |j
        d         j        d	           d S )
Nr_   rK   Tr2   r   rE  r   r`   ra   )r   r4   r5   r'   r  r   rG  r"  rt   r}  rF  r  )rv   rB  rw   s      r@   ,test_points_inspection_dict_streams_instancez;InspectorTests.test_points_inspection_dict_streams_instance  s    su"+1dST4839;#)+4V4V4VX X X	4<((V^,,a000FN1$5s;;TBBB*,c222*,c22222rB   c           	          t           t          d          t          | j        ddddd          }|                     |t          g dg d	d
dgd                     d S )Nr,  rK   Fr2   r  r3  r-  r0  r1  rC   r  r~   rr   r  r   r(   r#  rt   r   rv   r3  s     r@   "test_polys_inspection_1px_mask_hitz1InspectorTests.test_polys_inspection_1px_mask_hit  s     HIII 015aSTV V V						PQ*R*R)S/2!4 !4 !4 	5 	5 	5 	5 	5rB   c                 x   t           t          d          t          j        ddddd          } || j                   |                     t          |j                  d           g dg}|                     |j        j        d	         j	        t           j	        j
                            |                     d S )
Nr,  rK   Fr2   r  r3  r-  )      @rK  rM   rS  rK  g      @rP  rK  r   )r  r   r&   r  r#  rt   r}  rA  ilocgeometrypolygonPolygon)rv   rB  r   s      r@    test_inspection_1px_mask_poly_dfz/InspectorTests.test_inspection_1px_mask_poly_df  s     HIII$AuQRSWXYYY		$-   Y^,,a0008889,Q/8&/7??EE	G 	G 	G 	G 	GrB   c                     t           t          d          t          | j        ddddd          }|                     |t          g d                     d S )	Nr,  rK   Fr2   r   r-  r~   rr   rL  rM  s     r@   #test_polys_inspection_1px_mask_missz2InspectorTests.test_polys_inspection_1px_mask_miss  sg     HIII 015aSTV V V3 7 7 788888rB   N)r  r  r  r  r  r*  r4  r8  r:  r<  r?  rC  rH  rJ  rN  rU  rW  r  rB   r@   r   r     s         Q Q Q" " "E E EE E E
H H H
M M M
S S S
C C C3 3 33 3 35 5 5G G G9 9 9 9 9rB   r   r  c                 2   t          j        t          j        d|           dg          }t	          |          }t          |ddd          }t          j        |j        d                   t          j        d          k    	                                sJ d S )	NrC   r  r   ro  Fr  rh   rl   rk   ro   )
r9   r:   r;   r   r
   r)   asarrayr   eyer   )r  rT   r   rx   s       r@   test_uint_dtyper\     s    	bi///#	?	?	?B"IIE
E52
>
>
>CJsx())RVBZZ7<<>>>>>>>rB   c                     t          j        t          j        dt          j                  dg          } t          |           }t          j        t          d          5  t          |ddd	           d d d            d S # 1 swxY w Y   d S )
NrC   r  r   ro  z.Dtype of uint64 for column A is not supported.)matchFr  rY  )
r9   r:   r;   r   uint64r
   pytestraises	TypeErrorr)   )rT   r   s     r@   test_uint64_dtyperc    s    	bi333cU	C	C	CB"IIE	y(X	Y	Y	Y = =%r<<<<= = = = = = = = = = = = = = = = = =s    BBBc            
      d   t          j        d          } t          j        | | t	          t          t          |                     d          }t          |ddgdg          }t          |t          j
        dt          j                              t          j                  }t          |           d S )N   )r4   r5   languager4   r5   rf  )r   	color_key)r;   r   r9   r:   r  mapstrr   r#   r   r  r   ccglasbey_lightr    )drT   rw   ops       r@   $test_imagestack_datashader_color_keyrn    s    
	"A	AA4C3D3DEE	F	FBBc
ZL11F 
5RXZZ00"
 
 
B
 2JJJJJrB   )lrC  rB  unittestr   r   colorcetrj  numpyr;   pandasr9   r`  r   packaging.versionr   	holoviewsr   r   r	   r
   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   holoviews.element.comparisonr   holoviews.operationr   holoviews.streamsr   holoviews.utilr    dask.dataframe	dataframer   
datashaderr   r   r   holoviews.operation.datashaderr!   r"   r#   r$   r%   r&   r'   r(   r)   r*   r+   r,   r-   ImportErrorr   r   r  r  r  logging	getLoggernumba_loggersetLevelWARNINGvdim_prefixfixturerU   rX   rZ   r  r  r  rO  markparametrizer  lastminr0  r  r  r  r  r  r  r  r  r   r  uint16uint32r\  rc  rn  r  rB   r@   <module>r     s       % % % % % % % %                    % % % % % %                                               0 < ; ; ; ; ; * * * * * * ! ! ! ! ! ! ! ! ! ! ! !/                                / / /
(-
.
../KKKKKKK   DDD   MMM VMT13PQQ F44<!566	  w ))   go & & &#%     4   ^
( ^
( ^
( ^
( ^
(1 ^
( ^
( ^
(D&U &U &U &U &U"4 &U &U &UR0( 0( 0( 0( 0(- 0( 0( 0(hJ. J. J. J. J.. J. J. J.\s! s! s! s! s!1 s! s! s!l	 1	'''(	&&&'	%%%&	%%%&	 A A A  "(BGRVRV)LMM@ @ NM@W W W BHbgrvrv#FGGD D HGD&D D D / / / / /. / / /,!. !. !. !. !.- !. !. !.H7 7 7 7 7+ 7 7 7h9 h9 h9 h9 h9' h9 h9 h9V 28RY	"BCC? ? DC?= = =    s0   2,B B04B= =CCC CC