
    |Le~                   @A   d dl mZ d dlZd dlmZ d dlZd dlZ	d dl
Zd dlmZ d dlmZ d dlZd dlmZ d dlmZ d dlZ	 d dlZd dlZn# e$ r dZY nw xY wd dlmZmZmZ  ej        d            e  e! ej"        d	d                               Z# e	j$         ej%        d
gdz  dgdz  z              ej%        d
gdz  dgdz  z   d gdz  z   dgdz  z              ej%        dgdz  dgdz  z              ej%        dgdz  dgdz  z   dgdz  z   dgdz  z              ej&        dd           ej&        dd           ej&        dd           ej&        dd           ej&        dd d           ej&        dd          ddgdz  z   ej%        d
gdz  ej        gdz  z             dgdz  dgdz  z   dgdz  z   dgdz  z   g ddz   ej%        dgdz  dgdz  z   dgdz  z   dgdz  z             d          Z'e'j(        )                    d           e'_(        e'j*        )                    d           e'_*        ee'j+        d!<   ee'j+        d"<   ee'j+        d#<   ee'j+        d$<    ej,        e'd%&          Z-d' Z.	 d dl/Z/d dl0Z0d dl1Z1e#se e1j2        e-          Z3e-e3gZ4d( Z5e.e5gZ6n# e$ r dxZ/xZ0Z1dZ3e-gZ4e.gZ6dZ5Y nw xY w ej7        d%d%d)d)*          Z8 ej7        d%d%d+d)d,-          Z9 ej7        d%d%d)d+d,.          Z: ej7        d%d%d+d+d,d,/          Z;ej<        =                                Z>e>?                    e>@                    d)d%          d%          ZAeAeAgZBd0d1gZCd2 ZDd3 ZEd4 ZFejG        H                    d5e4          ejG        H                    d6g d7          d8                         ZIejG        H                    d5e4          ejG        H                    d6g d7          d9                         ZJejG        H                    d5e4          ejG        H                    d6g d7          d:                         ZKejG        H                    d5e4          ejG        H                    d6g d7          d;                         ZLejG        H                    d5e4          ejG        H                    d6g d7          d<                         ZMejG        H                    d5e4          ejG        H                    d6g d7          d=                         ZNejG        H                    d5e4          ejG        H                    d6g d7          d>                         ZOejG        H                    d5e4          ejG        H                    d6g d7          d?                         ZPejG        H                    d5e4          ejG        H                    d6g d7          d@                         ZQejG        H                    d5e4          ejG        H                    d6g d7          dA                         ZRejG        H                    d5e4          ejG        H                    d6g d7          dB                         ZSejG        H                    d5e4          ejG        H                    d6g d7          dC                         ZTejG        H                    d5e4          ejG        H                    d6g d7          dD                         ZUejG        H                    d5e4          ejG        H                    d6g d7          dE                         ZVejG        H                    d5e4          ejG        H                    d6g d7          dF                         ZWejG        H                    d5e4          ejG        H                    d6g d7          dG                         ZXejG        H                    d5e4          ejG        H                    d6g d7          dH                         ZYejG        H                    d5e4          ejG        H                    d6g d7          dI                         ZZejG        H                    d5e4          ejG        H                    d6g d7          dJ                         Z[ejG        H                    d5e4          ejG        H                    d6g d7          dK                         Z\ejG        H                    d5e4          ejG        H                    d6g d7          dL                         Z]ejG        H                    d5e4          ejG        H                    d6g d7          dM                         Z^ejG        H                    d5e4          ejG        H                    d6g d7          dN                         Z_ejG        H                    d5e4          ejG        H                    d6g d7          dO                         Z`ejG        H                    d5e4          ejG        H                    d6g d7          dP                         ZaejG        H                    d5e4          ejG        H                    d6g d7          dQ                         ZbejG        H                    d5e4          ejG        H                    d6g d7          dR                         ZcejG        H                    d5e4          ejG        H                    d6g d7          dS                         ZdejG        H                    d5e4          ejG        H                    d6g d7          dT                         ZeejG        H                    d5e4          ejG        H                    d6g d7          dU                         ZfejG        H                    d5e4          ejG        H                    d6g d7          dV                         ZgejG        H                    d5e4          ejG        H                    d6g d7          dW                         ZhejG        H                    d5e4          ejG        H                    d6g d7          dX                         ZiejG        H                    d5e4          ejG        H                    d6g d7          dY                         ZjejG        H                    d5e4          ejG        H                    d6g d7          dZ                         ZkejG        H                    d5e4          ejG        H                    d6g d7          d[                         ZlejG        H                    d5e-g          ejG        H                    d6g d7          d\                         ZmejG        H                    d5e-g          ejG        H                    d6g d7          d]                         ZnejG        H                    d5e4          ejG        H                    d6g d7          d^                         ZoejG        H                    d5e4          ejG        H                    d6g d7          d_                         ZpejG        H                    d5e4          ejG        H                    d6g d7          d`                         ZqejG        H                    d5e4          ejG        H                    d6g d7          da                         ZrejG        H                    d5e4          ejG        H                    d6g d7          db                         ZsejG        H                    d5e4          ejG        H                    d6g d7          dc                         ZtejG        H                    d5e4          ejG        H                    d6g d7          dd                         ZuejG        H                    d5e4          ejG        H                    d6g d7          de                         ZvejG        H                    d5e4          ejG        H                    d6g d7          df                         ZwejG        H                    d5e4          ejG        H                    d6g d7          dg                         ZxejG        H                    d5e4          ejG        H                    d6g d7          dh                         ZyejG        H                    die6          dj             ZzejG        H                    die6          dk             Z{ejG        H                    die6          ejG        H                    dlg dm          ejG        H                    dnd g          do                                     Z|ejG        H                    d5e4          dp             Z}ejG        ~                    e dqr          ds             ZejG        H                    die6          dt             Z eg dug dvg dwg dvg dxg dvdyz           eg d{g d|d}          f eg dvg d~g dvd|z           e ej%        g d          g d|d}          f edd dej        dd dej        dd dgd dd ej        d dd ej        d d d gdz           ed1d0d }          f eg dg dg dg dg dg dvdyz           eg d{g d|d }          f eg dg dg dg dvdz           edg d|d }          f e eg dg dg           eg dg dg          dd           ed1d0d}          fgZer4e                     edg dg dgid           ed          f           ejG        H                    die6dd                   ejG        H                    dedd                   d                         Z eg dvg dg dvg dwg dvg dudyz           eg d{g d|d}          f eg dvg dg dvd{z           eg d{ ej%        g d          d}          f ed dd ej        d d d ej        d dd gdd dej        dd dej        dd dgdz           ed1d0d }          f eg dg dvg dg dg dg ddyz           eg d{g d|d }          f eg dg dvg dg ddz           eg d{dd }          f eg dg dvg dgg dg dg dgdd           ed1d0d}          fgZer7e                     edg dg dg dgid           ed          f           ejG        H                    die6          ejG        H                    de          d                         ZejG        H                    die6          d             ZejG        H                    d5e4          d             ZejG        H                    die6          d             ZejG        H                    die6          ejG        H                    d edej        gdd%gd dgd ej        gddgd d gdyd           eg d{g d|d}          f eddd ej        d%dgd dd ej        dd gdz           ed1d0d }          f eg dej        d%dgg dej        dd gdd           eddgddgd }          f e e	j%        g dd%dggd           e	j%        g ddd ggd          dd           ed1d0d}          fg          d                         ZejG        H                    die6          ejG        H                    d edd gdd%gd dgd d gddgd d gdyd           eg d{g d|d}          f edd gdd%gd dgd{d           eg d{ ej%        g dd          d}          f eg dg ddz           ed1d0d }          f eg dg dg dg ddd           eddgddgd }          f eg dg dg ddd           eddgdd }          f eg dg dgg dg dgdd           ed1d0d}          fg          d                         ZejG        H                    die6          ejG        H                    d edej        gdd%gd dgd ej        gddgd d gdyd           eg d{g d|d}          f eddd ej        d%dgd dd ej        dd gdz           ed1d0d }          f eg dej        d%dgg dej        dd gdd           eddgddgd }          f eg dd%dggg ddd ggdd           ed1d0d}          fg          d                         ZejG        H                    die6          ejG        H                    d edd gdd%gd dgd d gddgd d gd d gddgd d gd	d           eg d{g d|g dd          f edd gdd%gd dgd{d           eg d{ ej%        g d           ej%        g dd          d          f eg dg dg ddz           ed1d0dd           f eg dg dg dg dg dg ddd           eddgddgddgd           f eg dg dg dg ddd           eddgddd           f eg dg dgg dg dgg dg dgdd           ed1d0dd          fg          d                         ZejG        H                    die6          ejG        H                    d edej        gdd%gd dgd ej        gddgd d gd d gd d gd d gd	d           eg d{g d|g dd          f eddd ej        d%dgd dd ej        dd gg ddz           ed1d0dd           f eg dej        d%dgg dej        dd gg dvg dvdd           eddgddgddgd           f eg dd%dggg ddd ggg dvd d ggdd           ed1d0dd          fg          d                         Zd ZejG        H                    d6 e edd                              d             ZejG        H                    d5e4          ejG        H                    d ej                    e ej        f ej                    ej        ej        f ej        d          ej        ej        f ej        d          ej        ej        f ej        d          ej        ej        fg          d                         ZejG        H                    d5e4          ejG        H                    d ej7        d,¦           ej7        d,d)æ           ej7        d,Ħ           ej7        d,d)Ŧ          g          dƄ                         ZejG        H                    d6g dǢ          dȄ             ZdɄ ZejG        H                    d5e4          ejG        H                    d6g dǢ          dʄ                         ZejG        H                    dddg          d΄             ZejG        H                    d5e4          ejG        H                    d6g d7          dτ                         ZejG        H                    d5e4          ejG        H                    d6g d7          dЄ                         ZejG        H                    d5e4          ejG        H                    d6g d7          dф                         ZejG        H                    d5e4          ejG        H                    d6g d7          d҄                         ZejG        H                    d5e4          ejG        H                    d6g d7          dӄ                         ZejG        H                    d5e4          ejG        H                    d6g d7          dԄ                         ZejG        H                    d5e4          ejG        H                    d6g d7          dՄ                         ZejG        H                    d5e4          ejG        H                    d6g d7          dք                         ZdS )    )annotationsN)config)nan)RaggedArray)assert_eq_xrassert_eq_ndarrayvaluessynchronous)	schedulerDATASHADER_TEST_GPU        
               ?   i4dtypei8f4f8   abcdr   r   r   r            )xylog_xlog_yi32i64f32f64reverse	plusminus	empty_bincatcat2cat_intcategory)   r)   )r2   r*   )   r+   )r2   r,   r2   npartitionsc                     |                     dd          rt          j        | i |}nt          j        | i |}t          j        |d          S )NgeoFr2   r4   )popspGeoDataFramepd	DataFrameddfrom_pandas)argskwargsdfs      :lib/python3.11/site-packages/datashader/tests/test_dask.pydask_DataFramerC   8   sW    zz% +_d-f--\4*6**>"!,,,,    c                     |                     dd          rJ t          j                            t	          j        | i |d          }t          j        |d          S )Nr7   F)nan_as_nullr2   r4   )r8   cudfr<   r>   r;   	dask_cudf	from_cudf)r?   r@   cdfs      rB   dask_cudf_DataFramerK   L   sd    ::eU+++++n((L$)&))u ) 
 
 "3A6666rD   r   r   
plot_widthplot_heightx_rangey_ranger   r   log)rN   rO   rP   rQ   x_axis_type)rN   rO   rP   rQ   y_axis_type)rN   rO   rP   rQ   rT   rU   r$   r#   c                4    |                      |          sJ d S )N)equals)aggr   s     rB   	assert_eqrY   j   s    ::a==rD   c              #  @   K   	 | V  | t          j        |           z   } )z4Returns contiguous list of floats from initial point)npspacingns    rB   floatsr_   n   s+      
1rD   c                 R    t           rt          t          j        d           d S d S d S )NzDcudf, cupy, and/or dask_cudf not available and DATASHADER_TEST_GPU=1)test_gpurG   pytestfail rD   rB   test_gpu_dependenciesre   u   s=     
DLR	
 	
 	
 	
 	

 
LLrD   ddfr5   )r   r2         c           
        |                      |          } | j        |k    sJ t          j        t	          j        ddgddggd          t          t                    }t          t          
                    | ddt          j        d                    |           t          t          
                    | ddt          j        d                    |           t          t          
                    | ddt          j                              |           t          j        t	          j        d	dgddggd          t          t                    }t          t          
                    | ddt          j        d
                    |           t          t          
                    | ddt          j        d                    |           d S )Nr   r   r   coordsdimsr#   r$   r'   r(   rh   r)   r*   )repartitionr5   xr	DataArrayr[   arrayrk   rl   r   r   pointsdscountrf   r5   outs      rB   
test_countrv   |   sp    //+
&
&C?k))))
,rx!Q!Q 0===$41 1 1C#sC%993???#sC%993???#sC44c:::
,rx!Q!Q 0===$41 1 1C#sC%993???#sC%993?????rD   c           
        |                      |          } | j        |k    sJ t          j        t	          j        ddgddgg          t          t                    }t          t          
                    | ddt          j        d                    |           t          t          
                    | ddt          j        d                    |           t          t          
                    | ddt          j                              |           t          j        t	          j        ddgddgg          t          t                    }t          t          
                    | ddt          j        d                    |           d S )	NTrj   r#   r$   r(   r*   Fr-   )rm   r5   rn   ro   r[   rp   rk   rl   r   r   rq   rr   anyrt   s      rB   test_anyry      s>    //+
&
&C?k))))
,rx$d| <==$41 1 1C#sC77===#sC77===#sC22C888
,rx$e} =>>$41 1 1C#sC)<)<==sCCCCCrD   c           
        |                      |          } | j        |k    sJ t          j        t	          t
          j                                      d                              dd          j	        t          t                    }t          t                              | ddt          j        d                    |           t          t                              | ddt          j        d	                    |           t          j        t!          j        t	          t
          j                                      d          d
          j	        t          t                    }t          t                              | ddt          j        d                    |           t          t                              | ddt          j        d                    |           d S Nr2   r2   r   r2   r   axisr   rj   r#   r$   r'   r(   r~   r)   r*   )rm   r5   rn   ro   r	   df_pdr'   reshapesumTrk   rl   r   r   rq   rr   r[   nansumr*   rt   s      rB   test_sumr      sn    //+
&
&C?k))))
,uy!!),,00at0DDFD" " "C #sC77===#sC77===
,
	&##++I66Q???AD" " "C #sC77===#sC77=====rD   c           
        |                      |          } | j        |k    sJ t          j        ddgddggt          t
                    }t          t                              | ddt          j
        d                    |           t          t                              | ddt          j
        d	                    |           t          t                              | ddt          j
        d
                    |           t          t                              | ddt          j
        d                    |           d S )Nr   r   r   r   rj   r#   r$   r'   r(   r)   r*   )rm   r5   rn   ro   rk   rl   r   r   rq   rr   firstrt   s      rB   
test_firstr      s     //+
&
&C?k))))
,B!R)&t
D
D
DC#sC%993???#sC%993???#sC%993???#sC%993?????rD   c           
        |                      |          } | j        |k    sJ t          j        ddgddggt          t
                    }t          t                              | ddt          j
        d                    |           t          t                              | ddt          j
        d	                    |           t          t                              | ddt          j
        d
                    |           t          t                              | ddt          j
        d                    |           d S )Nrh      	      rj   r#   r$   r'   r(   r)   r*   )rm   r5   rn   ro   rk   rl   r   r   rq   rr   lastrt   s      rB   	test_lastr      s     //+
&
&C?k))))
,B!R)&t
D
D
DC#sC88#>>>#sC88#>>>#sC88#>>>#sC88#>>>>>rD   c           
         |                      |          } | j        |k    sJ t          j        t	          t
          j                                      d                              d          	                    d          j
        t          t                    }t          t                              | ddt!          j        d                    |           t          t                              | ddt!          j        d	                    |           t          t                              | ddt!          j        d
                    |           t          t                              | ddt!          j        d                    |           d S Nr|   r2   r   r   rj   r#   r$   r'   r(   r)   r*   )rm   r5   rn   ro   r	   r   r(   r   minastyper   rk   rl   r   r   rq   rr   rt   s      rB   test_minr      0    //+
&
&C?k))))
,uy!!),,00a088??EEGD" " "C #sC77===#sC77===#sC77===#sC77=====rD   c           
         |                      |          } | j        |k    sJ t          j        t	          t
          j                                      d                              d          	                    d          j
        t          t                    }t          t                              | ddt!          j        d                    |           t          t                              | ddt!          j        d	                    |           t          t                              | ddt!          j        d
                    |           t          t                              | ddt!          j        d                    |           d S r   )rm   r5   rn   ro   r	   r   r(   r   maxr   r   rk   rl   r   r   rq   rr   rt   s      rB   test_maxr      r   rD   c           	        |                      |          } | j        |k    sJ t          j        ddgddggt          t
                    }t          t                              | ddt          j
                              |           d S )Nr   r   r   r   rj   r#   r$   )rm   r5   rn   ro   rk   rl   r   r   rq   rr   _min_row_indexrt   s      rB   test_min_row_indexr      |     //+
&
&C?k))))
,B!R)&t
D
D
DC#sC):)<)<==sCCCCCrD   c           	        |                      |          } | j        |k    sJ t          j        ddgddggt          t
                    }t          t                              | ddt          j
                              |           d S )Nrh   r   r   r   rj   r#   r$   )rm   r5   rn   ro   rk   rl   r   r   rq   rr   _max_row_indexrt   s      rB   test_max_row_indexr      r   rD   c                h   |                      |          } | j        |k    sJ t          j        ddddt          t          gddddd	t          ggd
ddddt          gdddddt          ggg          }t          dd          D ]}t                              | ddt          j	        d|                    }|d d d d d |f         }t          |j        |           |dk    rTt          |d d d d df         j        t                              | ddt          j        d                    j                   d S )Nr   r   rh   r   r!   r   r3            r      r#   r$   r,   r]   )rm   r5   r[   rp   r   ranger   rq   rr   min_nr   datar   rf   r5   solutionr^   rX   ru   s         rB   
test_min_nr      sL    //+
&
&C?k))))x2r1ac2S#r2r34OPr2q!S1Cc2r33OPR S SH1a[[ d dhhsCbh{a&@&@&@AAqqq!!!RaRx #(C(((66c!!!QQQ'l/#sCP[I\I\1]1]1bcccd drD   c                h   |                      |          } | j        |k    sJ t          j        ddddt          t          gddddd	t          ggd
ddddt          gdddddt          ggg          }t          dd          D ]}t                              | ddt          j	        d|                    }|d d d d d |f         }t          |j        |           |dk    rTt          |d d d d df         j        t                              | ddt          j        d                    j                   d S )Nrh   r   r   r   r   r!   r   r   r   r   r3   r   r   r   r   r   r   r   r   r   r   r#   r$   r,   r]   )rm   r5   r[   rp   r   r   r   rq   rr   max_nr   r   r   r   s         rB   
test_max_nr     sL    //+
&
&C?k))))x1aRc2RRc34OPaRS1BCc33OPR S SH1a[[ d dhhsCbh{a&@&@&@AAqqq!!!RaRx #(C(((66c!!!QQQ'l/#sCP[I\I\1]1]1bcccd drD   c                   |                      |          } | j        |k    sJ t          j        g dg dgg dg dgg          }t	          dd          D ]}t
                              | ddt          j        |	                    }|d d d d d |f         }t          |j
        |           |dk    rSt          |d d d d d
f         j
        t
                              | ddt          j                              j
                   d S )N)r   r   r2   rg   rh   r   r   r    r!   r"   r   r   r   r3   r   r   r   r   r   r      r   r   r   r   r   r#   r$   r]   r   )rm   r5   r[   rp   r   r   rq   rr   _min_n_row_indexr   r   r   r   s         rB   test_min_n_row_indexr     0    //+
&
&C?k))))x---/G/G/GH---/G/G/GHJ K KH1a[[ d dhhsCb&9A&>&>&>??qqq!!!RaRx #(C(((66c!!!QQQ'l/#sCIZI\I\1]1]1bcccd drD   c                   |                      |          } | j        |k    sJ t          j        g dg dgg dg dgg          }t	          dd          D ]}t
                              | ddt          j        |	                    }|d d d d d |f         }t          |j
        |           |dk    rSt          |d d d d d
f         j
        t
                              | ddt          j                              j
                   d S )N)rh   rg   r2   r   r   r   r   r"   r!   r    r   r   r   r   r   r3   r   r   r   r   r   r   r   r   r   r   r#   r$   r]   r   )rm   r5   r[   rp   r   r   rq   rr   _max_n_row_indexr   r   r   r   s         rB   test_max_n_row_indexr      r   rD   c                h   |                      |          } | j        |k    sJ t          j        ddddt          t          gddddd	t          ggd
ddddt          gdddddt          ggg          }t          dd          D ]}t                              | ddt          j	        d|                    }|d d d d d |f         }t          |j        |           |dk    rTt          |d d d d df         j        t                              | ddt          j        d                    j                   d S )Nr   r   r   rh   r   r   r!   r   r   r   r3   r   r   r   r   r   r   r   r   r   r   r#   r$   r,   r]   )rm   r5   r[   rp   r   r   r   rq   rr   first_nr   r   r   r   s         rB   test_first_nr   /  sU    //+
&
&C?k))))x1b"ac2Rb#r34OPq"aS1CS"c33OPR S SH1a[[ S ShhsCbj&B&B&BCCqqq!!!RaRx #(C(((66c!!!QQQ'l/hhsCbh{6K6KLLQS S SS SrD   c                h   |                      |          } | j        |k    sJ t          j        ddddt          t          gddddd	t          ggd
ddddt          gdddddt          ggg          }t          dd          D ]}t                              | ddt          j	        d|                    }|d d d d d |f         }t          |j        |           |dk    rTt          |d d d d df         j        t                              | ddt          j        d                    j                   d S )Nrh   r   r   r   r   r   r!   r   r   r   r   r   r3   r   r   r   r   r   r   r   r   r#   r$   r,   r]   )rm   r5   r[   rp   r   r   r   rq   rr   last_nr   r   r   r   s         rB   test_last_nr   ?  sL    //+
&
&C?k))))x1b"ac2Rb#r34OPq"aS1CS"c33OPR S SH1a[[ e ehhsCbiq&A&A&ABBqqq!!!RaRx #(C(((66c!!!QQQ'l/#sCQ\I]I]1^1^1cddde erD   c           
        |                      |          } | j        |k    sJ t          j        g dg dgg dg dggt          j                  }t          t                              | ddt          j	        d                    j
        |           t                              | ddt          j        t          j	        d          	                    }t          |d
         j
        |           d S )N)r2   r   r   r   )r   r   r2   r   )r   r2   r   r   )r   r   r   r2   r   r#   r$   r/   )namer   )rm   r5   r[   rp   uint32r   r   rq   rr   byr   summary)rf   r5   soldatasets       rB   test_categorical_countr   N  s     //+
&
&C?k))))
(\\\<<<0<<<2NOWYW`
a
a
aCahhsCbeFmm<<A3GGG hhsCbjbeFmm&D&D&DEEGgfo*C00000rD   c                   |                      |          } | j        |k    sJ t          j        g dg dgg dg dggt          j                  }t          j        ddt
          dgg dgg dg dgg          }t          t                              | d	d
t          j
        dt          j        d                              j        |           t          t                              | d	d
t          j
        dt          j        d                              j        |           t          t                              | d	d
t          j
        dt          j        d                              j        |           t          t                              | d	d
t          j
        dt          j        d                              j        |           d S )Nr   r   r2   rg   r!   r"   r   r    r   r   r3   r   r   r   r   r   r   r   r   rg   r#   r$   r/   r'   r(   r)   r*   )rm   r5   r[   rp   float64r   r   r   rq   rr   r   r   r   rf   r5   sol_int	sol_floats       rB   test_categorical_minr   [      //+
&
&C?k))))h'7'7'78<<<IYIYIY:Z[Z) ) )GAq#q>+;+;+;<|||M]M]M]>^_``IahhsCbeFBF5MM.J.JKKPRYZZZahhsCbeFBF5MM.J.JKKPRYZZZahhsCbeFBF5MM.J.JKKPR[\\\ahhsCbeFBF5MM.J.JKKPR[\\\\\rD   c                   |                      |          } | j        |k    sJ t          j        g dg dgg dg dggt          j                  }t          j        ddt
          dgg dgg dg dgg          }t          t                              | d	d
t          j
        dt          j        d                              j        |           t          t                              | d	d
t          j
        dt          j        d                              j        |           t          t                              | d	d
t          j
        dt          j        d                              j        |           t          t                              | d	d
t          j
        dt          j        d                              j        |           d S )Nrh   r   r2   rg   r!   r"   r   r    r   r   r3   r   r   r   r   r   r   rh   r   rg   r#   r$   r/   r'   r(   r)   r*   )rm   r5   r[   rp   r   r   r   r   rq   rr   r   r   r   r   s       rB   test_categorical_maxr   i  r   rD   c                   |                      |          } | j        |k    sJ t          j        ddt          gdt          t          gt          t          t          gdt          t          ggdt          t          gdt          t          gddt          gd	t          t          gggd
t          t          gddt          gdt          t          gdt          t          ggdt          t          gdt          t          gdt          t          gddt          gggg          }t          dd          D ]}t                              | ddt          j	        dt          j
        d|                              }|d d d d d d d |f         }t          |j        |           |dk    r`t          |d         j        t                              | ddt          j	        dt          j        d                              j                   d S )Nr   rh   r   rg   r!   r"   r   r   r    r   r   r   r3   r   r   r   r   r   r   r#   r$   r/   r)   r]   .r   )rm   r5   r[   rp   r   r   r   rq   rr   r   r   r   r   r   r   s         rB   test_categorical_min_nr   w      //+
&
&C?k))))xAq#;CS#CQTVS>BS>BC=2sTW.Y[sC=1a+3}q#smTS>BS>BS>BPRTW=Y[\ ] ]H 1a[[ Z ZhhsCbeFBHUa4H4H4H&I&IJJqqq!!!QQQ{##(C(((66c&k.hhsCbeFBF5MM6R6RSSXZ Z ZZ ZrD   c                   |                      |          } | j        |k    sJ t          j        ddt          gdt          t          gt          t          t          gdt          t          ggdt          t          gdt          t          gddt          gd	t          t          gggd
t          t          gddt          gdt          t          gdt          t          ggdt          t          gdt          t          gdt          t          gddt          gggg          }t          dd          D ]}t                              | ddt          j	        dt          j
        d|                              }|d d d d d d d |f         }t          |j        |           |dk    r`t          |d         j        t                              | ddt          j	        dt          j        d                              j                   d S )Nrh   r   r   rg   r!   r"   r   r   r    r   r   r   r3   r   r   r   r   r   r   r#   r$   r/   r)   r]   r   )rm   r5   r[   rp   r   r   r   rq   rr   r   r   r   r   r   r   s         rB   test_categorical_max_nr     r   rD   c           
     :   |                      |          } | j        |k    sJ t          j        g dg dgg dg dgg          }t                              | ddt          j        dt          j                                        }t          |j
        |           d S )Nr   r   r   r   r#   r$   r/   )rm   r5   r[   rp   r   rq   rr   r   r   r   r   rf   r5   r   rX   s       rB   test_categorical_min_row_indexr          //+
&
&C?k))))x,,,(8(8(89LLLJZJZJZ;[\]]H
((3S"%0A0C0C"D"D
E
ECch)))))rD   c           
     :   |                      |          } | j        |k    sJ t          j        g dg dgg dg dgg          }t                              | ddt          j        dt          j                                        }t          |j
        |           d S )Nr   r   r   r   r#   r$   r/   )rm   r5   r[   rp   r   rq   rr   r   r   r   r   r   s       rB   test_categorical_max_row_indexr     r   rD   c                   |                      |          } | j        |k    sJ t          j        g dg dg dg dgg dg dg dg dggg d	g d
g dg dgg dg dg dg dggg          }t	          dd          D ]}t
                              | ddt          j        dt          j	        |                              }|d d d d d d d |f         }t          |j        |           |dk    r_t          |d         j        t
                              | ddt          j        dt          j                                        j                   d S )Nr   rh   r   r   r   r   r2   r   r   rg   r   r   r!   r   r   r"   r   r   r   r   r   r    r   r   r   r   r   r   r   r   r3   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rg   r#   r$   r/   r]   r   )rm   r5   r[   rp   r   r   rq   rr   r   r   r   r   r   r   s         rB    test_categorical_min_n_row_indexr         //+
&
&C?k))))x:::{{{KKKM'<<|||\\\RT&;;


KKKM'<<|||\\\RTU V VH 1a[[ ` `hhsCbeFB4G!4L4L4L&M&MNNqqq!!!QQQ{##(C(((66c&k.hhsCbeFBDUDWDW6X6XYY^` ` `` `rD   c                   |                      |          } | j        |k    sJ t          j        g dg dg dg dgg dg dg dg dggg d	g d
g dg dgg dg dg dg dggg          }t	          dd          D ]}t
                              | ddt          j        dt          j	        |                              }|d d d d d d d |f         }t          |j        |           |dk    r_t          |d         j        t
                              | ddt          j        dt          j                                        j                   d S )Nrh   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rg   r#   r$   r/   r]   r   )rm   r5   r[   rp   r   r   rq   rr   r   r   r   r   r   r   s         rB    test_categorical_max_n_row_indexr    r  rD   c                p   |                      |          } | j        |k    sJ t          j        ddt          dgg dgg dg dgg          }t          dd          D ]Y}t                              | d	d
t          j	        dt          j
        d                              }t          |j        |           Zd S )Nr   r   r   )r!   r   r   r   )r   r   r3   r   )r   r   r   r   r   rg   r#   r$   r/   r,   )rm   r5   r[   rp   r   r   r   rq   rr   r   r   r   r   rf   r5   r   r^   rX   s        rB   test_categorical_firstr
    s     //+
&
&C?k))))x1b#r*,,,.(..,,,./ 0 0H 1a[[ . .hhsCbeFBH[4I4I&J&JKK#(H----. .rD   c                p   |                      |          } | j        |k    sJ t          j        ddt          dgg dgg dg dgg          }t          dd          D ]Y}t                              | d	d
t          j	        dt          j
        d                              }t          |j        |           Zd S )Nrh   r   r   )r!   r   r   r   )r   r   r3   r   )r   r   r   r   r   rg   r#   r$   r/   r,   )rm   r5   r[   rp   r   r   r   rq   rr   r   r   r   r   r	  s        rB   test_categorical_lastr    s     //+
&
&C?k))))x1b#r*,,,.(..,,,./ 0 0H 1a[[ . .hhsCbeFBGK4H4H&I&IJJ#(H----. .rD   c                   |                      |          } | j        |k    sJ t          j        ddt          gdt          t          gt          t          t          gdt          t          ggdt          t          gdt          t          gddt          gd	t          t          gggd
t          t          gddt          gdt          t          gdt          t          ggdt          t          gdt          t          gdt          t          gddt          gggg          }t          dd          D ]}t                              | ddt          j	        dt          j
        d|                              }|d d d d d d d |f         }t          |j        |           |dk    r`t          |d         j        t                              | ddt          j	        dt          j        d                              j                   d S )Nr   rh   r   r   r!   r   r   r   r   r   r   r   r3   r   r   r   r   r   r   r   rg   r#   r$   r/   r,   r]   r   )rm   r5   r[   rp   r   r   r   rq   rr   r   r   r   r   r   r   s         rB   test_categorical_first_nr    s    //+
&
&C?k))))xAq#;S#c3"cSVXS>Cc?RSMCQTVY?[]sC=2r3-!S#SRUWS>Cc?RcNSRUWZO\^_ ` `H 1a[[ b bhhsCbeFBJ{a4P4P4P&Q&QRRqqq!!!QQQ{##(C(((66c&k.hhsCbeFBH[DYDY6Z6Z[[`b b bb brD   c                   |                      |          } | j        |k    sJ t          j        ddt          gdt          t          gt          t          t          gdt          t          ggdt          t          gdt          t          gddt          gd	t          t          gggd
t          t          gddt          gdt          t          gdt          t          ggdt          t          gdt          t          gdt          t          gddt          gggg          }t          dd          D ]}t                              | ddt          j	        dt          j
        d|                              }|d d d d d d d |f         }t          |j        |           |dk    r`t          |d         j        t                              | ddt          j	        dt          j        d                              j                   d S )Nrh   r   r   r   r!   r   r   r   r   r   r   r   r3   r   r   r   r   r   r   r   rg   r#   r$   r/   r,   r]   r   )rm   r5   r[   rp   r   r   r   rq   rr   r   r   r   r   r   r   s         rB   test_categorical_last_nr    s    //+
&
&C?k))))xAq#;S#c3"cSVXS>Cc?RSMCQTVY?[]sC=2r3-!S#SRUWS>Cc?RcNSRUWZO\^_ ` `H 1a[[ a ahhsCbeFBIkQ4O4O4O&P&PQQqqq!!!QQQ{##(C(((66c&k.hhsCbeFBGKDXDX6Y6YZZ_a a aa arD   c                   |                      |          } | j        |k    sJ t          j        ddgddggt          t
                    }t          t                              | ddt          j
        t          j        d          d	                    |           t          t                              | ddt          j
        t          j        d
          d	                    |           t          t                              | ddt          j
        t          j        d          d	                    |           t          t                              | ddt          j
        t          j        d          d	                    |           t          j        ddgddggt          t
                    }t          t                              | ddt          j
        t          j        d                              |           t          t                              | ddt          j
        t          j        d
                              |           t          t                              | ddt          j
        t          j        d                              |           t          t                              | ddt          j
        t          j        d                              |           d S Nr   r3   r    r   rj   r#   r$   r'   r+   r(   r)   r*   rh   r   r   r   )rm   r5   rn   ro   rk   rl   r   r   rq   rr   wherer   rt   s      rB   test_where_maxr    s   
 //+
&
&C?k))))
,Q"a)&t
D
D
DC#sC"&--)K)KLLcRRR#sC"&--)K)KLLcRRR#sC"&--)K)KLLcRRR#sC"&--)K)KLLcRRR ,B!R)&t
D
D
DC#sC"&--)@)@AA3GGG#sC"&--)@)@AA3GGG#sC"&--)@)@AA3GGG#sC"&--)@)@AA3GGGGGrD   c                   |                      |          } | j        |k    sJ t          j        ddgddggt          t
                    }t          t                              | ddt          j
        t          j        d          d	                    |           t          t                              | ddt          j
        t          j        d
          d	                    |           t          t                              | ddt          j
        t          j        d          d	                    |           t          t                              | ddt          j
        t          j        d          d	                    |           t          j        ddgddggt          t
                    }t          t                              | ddt          j
        t          j        d                              |           t          t                              | ddt          j
        t          j        d
                              |           t          t                              | ddt          j
        t          j        d                              |           t          t                              | ddt          j
        t          j        d                              |           d S Nr   r   r   r   rj   r#   r$   r'   r+   r(   r)   r*   r   )rm   r5   rn   ro   rk   rl   r   r   rq   rr   r  r   rt   s      rB   test_where_minr  (  s   
 //+
&
&C?k))))
,R2q'*6
E
E
EC#sC"&--)K)KLLcRRR#sC"&--)K)KLLcRRR#sC"&--)K)KLLcRRR#sC"&--)K)KLLcRRR ,B!R)&t
D
D
DC#sC"&--)@)@AA3GGG#sC"&--)@)@AA3GGG#sC"&--)@)@AA3GGG#sC"&--)@)@AA3GGGGGrD   c                   |                      |          } | j        |k    sJ t          j        g dg dgg dg dgg          }t          j        t          j        |dk     |dk              t          j        d|z
            }t          dd	          D ]}t          	                    | d
dt          j        t          j        d|                              }|d d d d d |f         }t          |j        |           |dk    rft          |d d d d df         j        t          	                    | d
dt          j        t          j        d                              j                   t          	                    | d
dt          j        t          j        d|          d                    }|d d d d d |f         }t          |j        |           |dk    rgt          |d d d d df         j        t          	                    | d
dt          j        t          j        d          d                    j                   d S )N)rh   r   r   rg   r   r   )r   r!   r   r    r"   r   )r   r3   r   r   r   r   )r   r   r   r   r   r   r   r3   r   r   r   r#   r$   r,   r]   r+   )rm   r5   r[   rp   r  
logical_orr   r   r   rq   rr   r   r   r   r   rf   r5   sol_rowindexsol_reverser^   rX   ru   s          rB   test_where_max_nr  =  s\   
 //+
&
&C?k))))8666666866666689 : :L (2=)9<1;LMMrv,. .K 1a[[ Q QhhsCbhrxq/I/I/I&J&JKK111aaa!8$#(C(((66c!!!QQQ'l/hhsCbhrvk?R?R6S6STTY[ [ [ hhsCbhrxq/I/I/I9&U&UVV!!!QQQ(##(C(((66c!!!QQQ'l/hhsCbhrvk?R?R?H7J 7J K KKOQ Q QQ QrD   c                   |                      |          } | j        |k    sJ t          j        g dg dgg dg dgg          }t          j        t          j        |dk     |dk              t          j        d|z
            }t          dd	          D ]}t          	                    | d
dt          j        t          j        d|                              }|d d d d d |f         }t          |j        |           |dk    rft          |d d d d df         j        t          	                    | d
dt          j        t          j        d                              j                   t          	                    | d
dt          j        t          j        d|          d                    }|d d d d d |f         }t          |j        |           |dk    rgt          |d d d d df         j        t          	                    | d
dt          j        t          j        d          d                    j                   d S )N)rg   r   r   rh   r   r   )r"   r    r   r!   r   r   )r   r   r   r3   r   r   )r   r   r   r   r   r   r   r3   r   r   r   r#   r$   r,   r]   r+   )rm   r5   r[   rp   r  r  r   r   r   rq   rr   r   r   r   r   r  s          rB   test_where_min_nr  ^  s\   
 //+
&
&C?k))))8555666866666689 : :L (2=)9<1;LMMrv,. .K 1a[[ Q QhhsCbhrxq/I/I/I&J&JKK111aaa!8$#(C(((66c!!!QQQ'l/hhsCbhrvk?R?R6S6STTY[ [ [ hhsCbhrxq/I/I/I9&U&UVV!!!QQQ(##(C(((66c!!!QQQ'l/hhsCbhrvk?R?R?H7J 7J K KKOQ Q QQ QrD   c                   |                      |          } | j        |k    sJ t          j        ddgddggt          t
                    }t          t                              | ddt          j
        t          j        d          d	                    |           t          t                              | ddt          j
        t          j        d
          d	                    |           t          t                              | ddt          j
        t          j        d          d	                    |           t          t                              | ddt          j
        t          j        d          d	                    |           t          j        ddgddggt          t
                    }t          t                              | ddt          j
        t          j        d                              |           t          t                              | ddt          j
        t          j        d
                              |           t          t                              | ddt          j
        t          j        d                              |           t          t                              | ddt          j
        t          j        d                              |           d S r  )rm   r5   rn   ro   rk   rl   r   r   rq   rr   r  r   rt   s      rB   test_where_firstr!    s$    //+
&
&C?k)))) ,R2q'*6
E
E
EC#sC"(5//9)M)MNNPSTTT#sC"(5//9)M)MNNPSTTT#sC"(5//9)M)MNNPSTTT#sC"(5//9)M)MNNPSTTT ,B!R)&t
D
D
DC#sC"(5//)B)BCCSIII#sC"(5//)B)BCCSIII#sC"(5//)B)BCCSIII#sC"(5//)B)BCCSIIIIIrD   c                   |                      |          } | j        |k    sJ t          j        ddgddggt          t
                    }t          t                              | ddt          j
        t          j        d          d	                    |           t          t                              | ddt          j
        t          j        d
          d	                    |           t          t                              | ddt          j
        t          j        d          d	                    |           t          t                              | ddt          j
        t          j        d          d	                    |           t          j        ddgddggt          t
                    }t          t                              | ddt          j
        t          j        d                              |           t          t                              | ddt          j
        t          j        d
                              |           t          t                              | ddt          j
        t          j        d                              |           t          t                              | ddt          j
        t          j        d                              |           d S r  )rm   r5   rn   ro   rk   rl   r   r   rq   rr   r  r   rt   s      rB   test_where_lastr#    s     //+
&
&C?k)))) ,Q"a)&t
D
D
DC#sC"'%..))L)LMMsSSS#sC"'%..))L)LMMsSSS#sC"'%..))L)LMMsSSS#sC"'%..))L)LMMsSSS ,B!R)&t
D
D
DC#sC"'%..)A)ABBCHHH#sC"'%..)A)ABBCHHH#sC"'%..)A)ABBCHHH#sC"'%..)A)ABBCHHHHHrD   c                   |                      |          } | j        |k    sJ t          j        g dg dgg dg dgg          }t          j        t          j        |dk     |dk              t          j        d|z
            }t          dd	          D ]}t          	                    | d
dt          j        t          j        d|                              }|d d d d d |f         }t          |j        |           |dk    rft          |d d d d df         j        t          	                    | d
dt          j        t          j        d                              j                   t          	                    | d
dt          j        t          j        d|          d                    }|d d d d d |f         }t          |j        |           |dk    rgt          |d d d d df         j        t          	                    | d
dt          j        t          j        d          d                    j                   d S )N)r   r   rg   rh   r   r   r   r   r   r   r3   r   r   r   r#   r$   r,   r]   r+   )rm   r5   r[   rp   r  r  r   r   r   rq   rr   r   r   r   r   r  s          rB   test_where_first_nr%    s\   
 //+
&
&C?k))))8666666866666689 : :L (2=)9<1;LMMrv,. .K 1a[[ Q QhhsCbhrz+/K/K/K&L&LMM111aaa!8$#(C(((66c!!!QQQ'l/hhsCbhrx?T?T6U6UVV[] ] ] hhsCbhrz+/K/K/KY&W&WXX!!!QQQ(##(C(((66c!!!QQQ'l/hhsCbhrx?T?T?H7J 7J K KKOQ Q QQ QrD   c                   |                      |          } | j        |k    sJ t          j        g dg dgg dg dgg          }t          j        t          j        |dk     |dk              t          j        d|z
            }t          dd	          D ]}t          	                    | d
dt          j        t          j        d|                              }|d d d d d |f         }t          |j        |           |dk    rft          |d d d d df         j        t          	                    | d
dt          j        t          j        d                              j                   t          	                    | d
dt          j        t          j        d|          d                    }|d d d d d |f         }t          |j        |           |dk    rgt          |d d d d df         j        t          	                    | d
dt          j        t          j        d          d                    j                   d S )N)rh   rg   r   r   r   r   r   r   r   r   r3   r   r   r   r#   r$   r,   r]   r+   )rm   r5   r[   rp   r  r  r   r   r   rq   rr   r   r   r   r   r  s          rB   test_where_last_nr'    s\   
 //+
&
&C?k))))8666666866666689 : :L (2=)9<1;LMMrv,. .K 1a[[ Q QhhsCbhry/J/J/J&K&KLL111aaa!8$#(C(((66c!!!QQQ'l/hhsCbhrw{?S?S6T6TUUZ\ \ \ hhsCbhry/J/J/JI&V&VWW!!!QQQ(##(C(((66c!!!QQQ'l/hhsCbhrw{?S?S?H7J 7J K KKOQ Q QQ QrD   c                   |                      |          } | j        |k    sJ t                              | ddt	          j        t	          j        d                              }t                              | ddt	          j        d                    }t          |d         |           t                              | ddt	          j        t	          j        d          t	          j        d                              }t                              | ddt	          j        d                    }t          |d         |           t          |d         |           t                              | ddt	          j        t	          j        d          t	          j        d          	                    }t          |d         |           t          |d         |           t                              | ddt	          j        t	          j        d          t	          j        dt	          j	                              
                    }t                              | ddt	          j        dt	          j	                                        }t          |d         |           t          |d         |           t                              | ddt	          j        t	          j        d          t	          j        d                              }t                              | ddt	          j        d                    }t          |d         |           t          |d         |           d S )Nr#   r$   r.   )r   r   r,   )r   r   r   )r   r   )r   by_anyr)  r/   )r   by2r*  )
rm   r5   r   rq   rr   r   r   r   r   rx   )rf   r5   agg_summaryagg_byagg_max
agg_by_anyagg_by2s          rB   test_summary_byr0    s    //+
&
&C?k)))) ((3S"*e*E*E*EFFKXXc3RU5\\22FT"F+++ ((3S"*e"&Q\J]J]*^*^*^__KhhsCbf[&9&9::GT"F+++U#W--- ((3S"*9L9LQSQVW\Q]Q]*^*^*^__KT"F+++U#W--- ((3S"*e<>E%<R<R+T +T +T U UK#sCubfhh)?)?@@JT"F+++X&
333 ((3S"*e"%PV--*X*X*XYYKhhsCbeFmm44GT"F+++U#W-----rD   c                   |                      |          } | j        |k    sJ t          j        g dg dgg dg dgg          }t          j        g dg dgg dg dgg          }t          j        t          j        |d	k     |d
k              t          j        d|z
            }t                              | ddt          j
        t          j                    t          j        t          j        dd                    t          j        t          j        dd          d                              }t          |j        d         t          j        d                     |d         j        dk    sJ |d         j        dk    sJ |d         j        dk    sJ |d         j        t          j        d          k    sJ |d         j        t          j        d          k    sJ |d         j        t          j        d          k    sJ t          |d         j        ddgddgg           t          |d         j        |           t          |d         j        |           d S )N)rg   r   r   rh   r   )r"   r    r   r!   r   )r   r   r   r3   r   )r   r   r   r   r   )rh   r   r   rg   r   )r   r!   r   r    r"   )r   r3   r   r   r   )r   r   r   r   r   r   r3   r   r#   r$   r,   r   r+   )rs   r   r   r^   rs   )r$   r#   r   )r$   r#   r^   r   r   int64r   )rm   r5   r[   rp   r  r  r   r   rq   rr   r   rs   r   r   r   rk   arangerl   r   r   )rf   r5   sol_min_n_rowindexsol_max_n_rowindexsol_max_n_reverserX   s         rB   test_summary_where_nr7    s   
 //+
&
&C?k))))$7$7$7$8$8$8$:$8$8$8$8$8$8$:#; < < $8$8$8$8$8$8$:$8$8$8$8$8$8$:#; < < /AA/EGY]^G^!_!_!#.@)@B B ((3S"*hjjhrxQ//00hrxQ//;;# # #  C
 cjory||444w<
****w<////w<////w<(!3!33333w<'!2!22222w<)!4!44444c'l'1a&1a&)9:::c'l');<<<c'l'):;;;;;rD   c           
        |                      |          } | j        |k    sJ t          j        t	          t
          j                                      d                              dd          j	        t          t                    }t          t                              | ddt          j        d                    |           t          t                              | ddt          j        d	                    |           t          j        t!          j        t	          t
          j                                      d          d
          j	        t          t                    }t          t                              | ddt          j        d                    |           t          t                              | ddt          j        d                    |           d S r{   )rm   r5   rn   ro   r	   r   r'   r   meanr   rk   rl   r   r   rq   rr   r[   nanmeanr*   rt   s      rB   	test_meanr;  5  sn    //+
&
&C?k))))
,uy!!),,11q1EEGD" " "C #sC88#>>>#sC88#>>>
,

6%)$$,,Y77a@@@BD" " "C #sC88#>>>#sC88#>>>>>rD   c           
        |                      |          } | j        |k    sJ t          j        t	          t
          j                                      d                              dd          j	        t          t                    }t          t                              | ddt          j        d                    |           t          t                              | ddt          j        d	                    |           t          j        t!          j        t	          t
          j                                      d          d
          j	        t          t                    }t          t                              | ddt          j        d                    |           t          t                              | ddt          j        d                    |           d S r{   )rm   r5   rn   ro   r	   r   r'   r   varr   rk   rl   r   r   rq   rr   r[   nanvarr*   rt   s      rB   test_varr?  F  n    //+
&
&C?k))))
,uy!!),,00at0DDFD" " "C #sC77===#sC77===
,
	&##++I66Q???AD" " "C #sC77===#sC77=====rD   c           
        |                      |          } | j        |k    sJ t          j        t	          t
          j                                      d                              dd          j	        t          t                    }t          t                              | ddt          j        d                    |           t          t                              | ddt          j        d	                    |           t          j        t!          j        t	          t
          j                                      d          d
          j	        t          t                    }t          t                              | ddt          j        d                    |           t          t                              | ddt          j        d                    |           d S r{   )rm   r5   rn   ro   r	   r   r'   r   stdr   rk   rl   r   r   rq   rr   r[   nanstdr*   rt   s      rB   test_stdrD  W  r@  rD   c                   |                      |          } | j        |k    sJ t          j        g dg dgg dg dgg          }t	          j        |t          g dgz   t          dgz             }t          	                    | dd	t          j        d                    }t          ||           t          |j        d
d           t          |j        d
d           t	          j        |t          t!          d          gz   t          dgz             }t          	                    | dd	t          j        t          j        ddd          t          j                                        }t          ||           t          |j        d
d           t          |j        d
d           t          j        |dgdggdgdgggd          }dD ]}t	          j        |t          t!          d          gz   t          |gz             }t          	                    | dd	t          j        t          j        |ddd          t          j                                        }t          ||           t          |j        d
d           t          |j        d
d           d|d<   d|d<   dD ]}t	          j        |t          t!          d          gz   t          |gz             }t          	                    | dd	t          j        t          j        |ddd          t          j                                        }t          ||           t          |j        d
d           t          |j        d
d           d S )N)r   r   r   r   )r   r   r   r   )r   r   r   r   )r   r   r   r   r   r.   rj   r#   r$   rL   Tcloserh   r0   r   modulooffsetr   r2   r   )r'   r(   r   r   r   r   r   r   )r   r   rh   r)   r*   )rm   r5   r[   rp   rn   ro   rk   rl   r   rq   rr   	count_catr   r   rP   rQ   r   r   category_modulors   appendcategory_binningrf   r5   r   ru   rX   cols         rB   test_count_catrS  h  s}    //+
&
&C?k))))
(\\\!\\#!\\!\\#$ % %C ,V33344TUG^  C ((3S",u"5"5
6
6Ccck66666ck66666 ,VuQxxj(1C  C ((3S"%(:9QWY(Z(Z(Z(*

#4 #4 5 5Ccck66666ck66666
 )CA3*qcA3Z0q
9
9
9C  ; ;l588*,TSE\
 
 
 hhsCbeB,?QA,N,NPRPXPZPZ&[&[\\S##+vT::::#+vT::::: CLCL ; ;l588*,TSE\
 
 
 hhsCbeB,?QA,N,NPRPXPZPZ&[&[\\S##+vT::::#+vT:::::; ;rD   c                &   |                      |          } | j        |k    sJ t          j        dt          t          t          gt          t          dt          ggt          dt          t          gt          t          t          dggg          }t          j        |t          g dgz   t          dgz             }t          
                    | dd	t          j        dt          j        d
                              }t          ||           t          
                    | dd	t          j        dt          j        d                              }t          ||           t          j        |t          t          d          gz   t          dgz             }t          
                    | dd	t          j        t          j        ddd          t          j        d
                              }t          ||           t          
                    | dd	t          j        t          j        ddd          t          j        d                              }t          ||           t          j        dt          t          t          gt          t          dt          ggt          dt          t          gt          t          t          dggg          }t          j        |t          g dgz   t          dgz             }t          
                    | dd	t          j        dt          j        d                              }t          ||           t          
                    | dd	t          j        dt          j        d                              }t          ||           d S )Nr   <   #   U   r   r.   rj   r#   r$   r'   r(   rh   r0   rH         @      N@     A@     @U@r)   r*   )rm   r5   r[   rp   r   rn   ro   rk   rl   r   rq   rr   r   r   r   r   rN  rf   r5   r   ru   rX   s        rB   test_categorical_sumr]    s    //+
&
&C?k))))
(r3S)3S)+BS)3b)+, - -C ,V33344TUG^  C ((3S"%rve}}"="=
>
>Cc
((3S"%rve}}"="=
>
>Cc
,VuQxxj(1C  C ((3S"%(:9QWY(Z(Z(Z(*u#7 #7 8 8Cc
((3S"%(:9QWY(Z(Z(Z(*u#7 #7 8 8Cc
(cC#,C,.4#,C#t,./ 0 0C ,V33344TUG^  C ((3S"%rve}}"="=
>
>Cc
((3S"%rve}}"="=
>
>CcrD   c                   t           r3t          | j        t           j                  rt	          j        d           |                     |          } | j        |k    sJ t          j	        dt          t          t          gt          t          dt          ggt          dt          t          gt          t          t          dggg          }t          j        |t          gt          ggt          gt          gggd          }dD ]}t          j        |t          t          d	          gz   t           |gz   
          }t"                              | ddt'          j        t'          j        |ddd          t'          j        |                              }t/          ||           t1          |j        dd           t1          |j        dd           d S )NzFThe categorical binning of 'sum' reduction is yet supported on the GPUrX  rY  rZ  r[  r2   r   rL  r   rj   r#   r$   r   r   rh   rL   TrF  )rG   
isinstance_metar<   rb   skiprm   r5   r[   rp   r   rO  rn   ro   rk   r   rl   r   rq   rr   r   rP  r   r   r   rP   rQ   rf   r5   r   rR  ru   rX   s         rB   test_categorical_sum_binningrc    s     

39dn55 
T	
 	
 	
 //+
&
&C?k))))
(cC#,C,.4#,C#t,./ 0 0C )CC53%.3%#8q
A
A
AC ; ;l588*,TSE\
 
 
 hhsCbeB,?QA,N,NPRPVWZP[P[&\&\]]S##+vT::::#+vT:::::; ;rD   c                   |                      |          } | j        |k    sJ t          j        dt          t          t          gt          t          dt          ggt          dt          t          gt          t          t          dggg          }t          j        |t          g dgz   t          dgz             }t          
                    | dd	t          j        dt          j        d
                              }t          ||           t          
                    | dd	t          j        dt          j        d                              }t          ||           t          j        |t          t          d          gz   t          dgz             }t          
                    | dd	t          j        t          j        ddd          t          j        d
                              }t          ||           t          
                    | dd	t          j        t          j        ddd          t          j        d                              }t          ||           d S )Nr2   r!   r   r   r   r.   rj   r#   r$   r)   r*   rh   r0   r   rH  )rm   r5   r[   rp   r   rn   ro   rk   rl   r   rq   rr   r   r9  r   r   rN  r\  s        rB   test_categorical_meanre    s    //+
&
&C?k))))
(3S)3S)+QS)3b)+, - -C ,...//eWn  C
 ((3S"%rwu~~">">
?
?Cc
((3S"%rwu~~">">
?
?Cc
,VuQxxj(1C  C ((3S"%(:9QWY(Z(Z(Z(*#8 #8 9 9Cc
((3S"%(:9QWY(Z(Z(Z(*#8 #8 9 9CcrD   c                8   t           r3t          | j        t           j                  rt	          j        d           |                     |          } | j        |k    sJ t          j	        dt          t          t          gt          t          dt          ggt          dt          t          gt          t          t          dggg          }t          j        |t          gt          ggt          gt          gggd          }dD ]}t          j        |t          t          d          gz   t           |gz   	          }t"                              | d
dt'          j        t'          j        |ddd          t'          j        |                              }t/          ||           d S )NzGThe categorical binning of 'mean' reduction is yet supported on the GPUr2   r!   r   r   r   rL  r   rj   r#   r$   r   r   rh   )rG   r_  r`  r<   rb   ra  rm   r5   r[   rp   r   rO  rn   ro   rk   r   rl   r   rq   rr   r   rP  r9  r   rb  s         rB   test_categorical_mean_binningrg    sy     

39dn55 
U	
 	
 	
 //+
&
&C?k))))
(3S)3S)+QS)3b)+, - -C )CC53%.3%#8q
A
A
AC  l588*,TSE\
 
 
 hhsCbeB,?QA,N,NPRPWX[P\P\&]&]^^S# rD   c                n   |                      |          } | j        |k    sJ t          j        dt          t          t          gt          t          dt          ggt          dt          t          gt          t          t          dggg          }t          j        |t          g dgz   t          dgz             }t          
                    | ddt          j        dt          j        d                              }t          ||d	           t          
                    | ddt          j        dt          j        d
                              }t          ||d	           t          j        |t          t          d          gz   t          dgz             }t          
                    | ddt          j        t          j        ddd          t          j        d                              }t          ||           t          
                    | ddt          j        t          j        ddd          t          j        d
                              }t          ||           t          j        |t          gt          ggt          gt          gggd          }dD ]}t          j        |t          t          d          gz   t          |gz             }t          
                    | ddt          j        t          j        |ddd          t          j        |                              }t          ||           d S Ng      @       @r   r.   rj   r#   r$   r)   Tr*   rh   r0   r   rH  r2   r   rL  r   r   r   )rm   r5   r[   rp   r   rn   ro   rk   rl   r   rq   rr   r   r=  r   r   rN  rO  rP  rQ  s         rB   test_categorical_varrk  !  s    //+
&
&C?k))))
(sS3-SB-/b3-S3"-/0 1 1C ,...//eWn  C
 ((3S"%rve}}"="=
>
>Cc4   
((3S"%rve}}"="=
>
>Cc4   
,VuQxxj(1C  C ((3S"%(:9QWY(Z(Z(Z(*u#7 #7 8 8Cc
((3S"%(:9QWY(Z(Z(Z(*u#7 #7 8 8Cc )CC53%.3%#8q
A
A
AC  l588*,TSE\
 
 
 hhsCbeB,?QA,N,NPRPVWZP[P[&\&\]]S# rD   c                   |                      |          } | j        |k    sJ t          j        t          j        dt
          t
          t
          gt
          t
          dt
          ggt
          dt
          t
          gt
          t
          t
          dggg                    }t          j        |t          g dgz   t          dgz             }t                              | ddt          j        dt          j        d                              }t          ||d	           t                              | ddt          j        dt          j        d
                              }t          ||d	           t          j        |t          t!          d          gz   t          dgz             }t                              | ddt          j        t          j        ddd          t          j        d                              }t          ||           t                              | ddt          j        t          j        ddd          t          j        d
                              }t          ||           t          j        |t
          gt
          ggt
          gt
          gggd          }dD ]}t          j        |t          t!          d          gz   t          |gz             }t                              | ddt          j        t          j        |ddd          t          j        |                              }t          ||           d S ri  )rm   r5   r[   sqrtrp   r   rn   ro   rk   rl   r   rq   rr   r   rB  r   r   rN  rO  rP  rQ  s         rB   test_categorical_stdrn  K  s    //+
&
&C?k))))
'"(sS	!S	!	#"sS	!sb	!	#$ % %  C ,...//eWn  C
 ((3S"%rve}}"="=
>
>Cc4   
((3S"%rve}}"="=
>
>Cc4   
,VuQxxj(1C  C ((3S"%(:9QWY(Z(Z(Z(*u#7 #7 8 8Cc
((3S"%(:9QWY(Z(Z(Z(*u#7 #7 8 8Cc )CC53%.3%#8q
A
A
AC  l588*,TSE\
 
 
 hhsCbeB,?QA,N,NPRPVWZP[P[&\&\]]S# rD   c                Z   |                      |          } | j        |k    sJ t                              | ddt	          j        t	          j        d          t	          j        d          t	          j        d          t	          j	        d                              }d }t          |j         |t          j        t          t          j                                      d          d	          j                             t          |j         |t          j        t          t          j                                      d          d	          j                             t          |j         |t          t          j                                      d                              dd
          j                             t          |j         |t          j        ddgddggd                               t3          |j        dd           t3          |j        dd           d S )Nr#   r$   r*   r'   )f64_stdf64_meani32_sum	i32_countc                D    t          j        | t          t                    S )Nrj   )rn   ro   rk   rl   )r#   s    rB   fz#test_multiple_aggregates.<locals>.f  s    |Af48888rD   r|   r2   r   r   r}   r   r   r   rL   TrF  )rm   r5   r   rq   rr   r   rB  r9  r   rs   r   rp  r[   rC  r	   r   r*   r   r   rq  r:  rr  r'   rs  rp   r   rP   rQ   )rf   r5   rX   ru  s       rB   test_multiple_aggregatesrv  w  s    //+
&
&C?k))))
((3S:bfUmm')wu~~&(fUmm(*9 9 9: :C9 9 9aa	&*;*;*C*CI*N*NUV W W W YZZ[[[qqF59,=,=,E,Ei,P,PWX!Y!Y!Y![\\]]]aauy 1 1 9 9) D D H HaW[ H \ \ ^__```"(QFQF+;4"H"H"H I IJJJck66666ck6666666rD   r<   c                   d}t          j        |d          } | t          j        |          ||d          }t          j        ||          }|                    |ddt          j        d                    }t          j        ||ft                    }t          j        |d	           t          |j
        |           t          |j        d
d           t          |j        d
d           t          j        |d	z   |d	z             }|                    |ddt          j        d                    }t          j        |d	z   |d	z   ft                    }t          j        |d	           d|d<   t          |j
        |           t          |j        d
d           t          |j        d
d           d}t          j        |d          } | t          j        |          ||d          }t          j        d|z  d|z            }|                    |ddt          j        d                    }t          j        d|z  d|z  ft                    }t          j        |d	           d|t          j        t          t          d	dd                    g          <   d|t          j        t          t          ddd                    g          <   t          |j
        |           t          |j        dd           t          |j        dd           t          j        d|z  d	z   d|z  d	z             }|                    |ddt          j        d                    }t          j        d|z  d	z   d|z  d	z   ft                    }d	|d<   d	|d<   d	|d<   d	|d<   t          |j
        |           t          |j        dd           t          |j        dd           d S )Nr   r   r   timer#   r$   rN   rO   r#   r$   ry  r   )r   r   TrF  r   )r   r   rh   r2   r   )r   rg   )r   r   )rg   rg   )r3   r3   )r   r   )r[   r3  rr   Canvasrq   rs   zerosintfill_diagonalr   r   rP   rQ   rp   tupler   )r<   r^   r   rf   cvsrX   r   s          rB   test_auto_range_pointsr    s   
A9Qd###D
)RYq\\    ! !C )qa
0
0
0C
**S#sBHV$4$4
5
5C
(Aq63

CS!ch$$$ck66666ck66666
)qs!
4
4
4C
**S#sBHV$4$4
5
5C
(AaC1:s
#
#CS!CIch$$$ck66666ck66666	A9Qd###D
)RYq\\    ! !C )qs!
4
4
4C
**S#sBHV$4$4
5
5C
(AaC1:s
#
#CS!-.C%aA''())*-.C%aA''())*ch$$$ck66666ck66666
)qs1u!A#a%
8
8
8C
**S#sBHV$4$4
5
5C
(AaCE1Q3q5>3
'
'CCICICICIch$$$ck66666ck6666666rD   c           
     ^   d} | t          j        d|z  d          t          j        t          j        |d          t          j        |d          f          t          j        dg|z  dg|z  f          d          }t	          j        d	dd
          }|                    |ddt	          j        d                    }t          j        d	gdz  dgz   d	gdz  dgz   gd          }t          |j
        |           t          |j        dd           t          |j        d
d           d S )Ne   r2   r   r   r   r   r   rx  r   rL   )rN   rO   rQ   r#   r$   ry  r   r    )r   d   TrF  )r[   onesconcatenater3  rr   r{  rq   rs   rp   r   r   rP   rQ   )r<   r^   rf   r  rX   r   s         rB   test_uniform_pointsr    sC   A
)RWQqS555.")AT*B*B*B*,)AT*B*B*B*D E E.2$(RD1H)=>>@ @ A AC
 )rq&
A
A
AC
**S#sBHV$4$4
5
5C
(RD1HtObTAX_5T
B
B
BCch$$$ck848888ck6666666rD   high)r   r   c   r  lowc                ^   ||f}||}}|d         |d         z
  }|d         |d         z
  }||z  } | t          j        |d          t          j        t          j        |ddig|z                                            t          j        t          j        |ddig|z                                            d          }	t          j        dd||	          }
|
                    |	d
dt          j        d                    }|j	        
                    d          }t          |          |k    sJ t          |d         |d         z
            dz  t          |d         |z  |d         |z  z
            k    sJ t          |j        ||fd           t          |j        ||fd           d S )Nr   r   r   r   r   r   rx  r2   rM   r#   r$   ry  TrF  )r[   r  rp   r3  flattenrr   r{  rq   rs   r   diagonalr   absr   rP   rQ   )r<   r  r  boundsrP   rQ   widthheightr^   rf   r  rX   r  s                rB   test_uniform_diagonal_pointsr    s    4[FvWGAJ#EQZ'!*$FA
)RWQd333(BIw$Cd$C$C#Du#LMMUUWW(BIw$Cd$C$C#Dv#MNNVVXXZ Z [ [C )qa'
R
R
RC
**S#sBHV$4$4
5
5Cx  ##Hx==Avay6!9$%%)S!t1ChqkTXFX1X-Y-YYYYYckC;d;;;;ckC;d;;;;;;rD   c           
     n   t           j                                        }|                    |                    dd          d          }t           j                                        }|                    |                    dd          d          }t          j        ddgddggd          }t          j	        |||gddg	          }t          t                              | ddt          j        d
                    |           t          j	        |||gddg	          }t          t                              | ddt          j        d
                    |           t          j	        |||gddg	          }t          t                              | ddt          j        d
                    |           d S )NrR   r2   rL   r   r   r   r$   r%   rj   r'   r&   r#   )rr   coreLogAxiscompute_indexcompute_scale_and_translate
LinearAxisr[   rp   rn   ro   r   c_logxrq   rs   c_logyc_logxyrf   r~   	logcoords	lincoordsr   ru   s         rB   test_log_axis_pointsr    s   7??D""4#C#CGQ#O#OQRSSI7D""4#C#CFA#N#NPQRRI
(QFQF#4
0
0
0C
,sIy#9 'N, , ,CsGS"(5//BBCHHH
,sIy#9$cN, , ,CsC"(5//BBCHHH
,sIy#9$g.0 0 0CWgrxGGMMMMMrD   zspatialpandas not installed)reasonc            
     `   t           j                                        } |                     |                     dd          d          }t          j        t          j        t          j
        ddgg dg dgd          g dd	          d
          }t          j        dd          }|                    |dt          j        d                    }t          j
        dt          t          gddt          gg dgd          }t!          j        |||gddg          }t%          ||           d S )N)r   rj  rg   r   )r   r   r   r   )r   r2   r   r2   r2   r2   zMultiPoint[float64]r   r   r2   rg   )geomvr4   rz  r  r  )geometryrX   r   r2   )rg   rg   rg   r   r$   r#   rj   )rr   r  r  r  r  r=   r>   r9   r:   r;   rp   r{  rq   r   r[   r   rn   ro   r   )r~   r  rf   r  rX   r   ru   s          rB   test_points_geometryr     sQ   7D""4#C#CHa#P#PRSTTI
.V\\\#5#5#56>SU U UYY* *   	  C )qa
0
0
0C
**S6rvc{{*
;
;C
(QSMSMKK!(13 3 3C ,sIy#9 #J( ( (CcrD   c           
     D   t           j                                        }|                    |                    dd          d          } | g dg dd          }t          j        dddd          }|                    |dd	t          j                              }t          j	        g d
g dg dg dg dg dg d
gd          }t          j        |||gd	dg          }t          ||           t          |j        dd           t          |j        dd           d S )Ng      g      @r   )rh   r   r   gffffffr   r   r   r   rh   )r   r  r   r   r2   g @rh   r      rh   r   r#   r$   r   rg   rM   r#   r$   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   )r   r2   r   r   r   r   r   r   r   rj   TrF  rr   r  r  r  r  r{  liners   r[   rp   rn   ro   r   r   rP   rQ   r<   r~   r  rf   r  rX   r   ru   s           rB   	test_liner    ss   7D""4#C#CIq#Q#QSTUUI
)CCC@@@B B C CC
)qa#W6 6 6C
((3S"(**
-
-C
()))))))))))))))))))))+ 378 8 8C ,sIy#9 #J( ( (Ccck7$7777ck7$777777rD   )rh   r  rh   rK  )r  rh   r  )r  rh   r   )x0x1x2y0y1y2r   )r  r  r  r  r  r  )r#   r$   r~   )r   rh   r  r  r   rh   rh   r  r  )rh   r   r  )r   r  r   )r   rh   r   )r  r  r  r  r  )r  r   rh   rh   r   r  )r   rh   r   r   r   r   zRagged[int64])r   r   r  )rh   r   r   r  r  r   )r  r   r   rh   rh   r   rh   r   r   r   r  r   zLine[int64])r  zdf_kwargs,cvs_kwargsr   c           
     T   | t           u rT|                    dd          }|                    d          s|                    d          rt          j        d           t
          j                                        }|                    |	                    dd          d          } | d#dd	|v i|}t          j
        ddd
d
          } |j        |fdt          j                    i|}|j        dk    r|                    d          dk    rt          |d         t          t           f          rst          |d         t                    r,t#          j        g dg dg dg dg dg dg dgd          }	nWt#          j        g dg dg dg dg dg dg dgd          }	n+t#          j        g dg dg dg dg dg dg dgd          }	t'          j        |	||gddg           }
t+          ||
           t-          |j        d
d!"           t-          |j        d
d!"           d S )$Nr    RaggedLine$Ragged array not supported with cudfr  r   r7   r  r  rM   rX   r2   r~   r   r$   r#   )r   r   r   r   r   r   r   )r   r   r   r   r   r   r   )r   r   r   r   r   r   r   )r   r   r   r   r   r   r   )r   r   r   r   r   r   r   )r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r  r  r  )r   r   r   r   r   r   r   rj   TrF  rd   rK   get
startswithrb   ra  rr   r  r  r  r  r{  r  rs   r5   r_  listr  r[   rp   rn   ro   r   r   rP   rQ   r<   	df_kwargs
cvs_kwargsr   r~   r  rf   r  rX   r   ru   s              rB   test_line_manual_ranger  f  s    '''gr**H%% 	@)9)9&)A)A 	@K>???7D""4#C#CIq#Q#QSTUUI
)
>
>
j0
>I
>
>C
)qa#W6 6 6C #(3
5
5BHJJ
5*
5
5C1!7!71!<!<z#u66 "=
 jot,, 	@(1111111111111111111113 ;?@ @ @CC (1111111111111111111113 ;?@ @ @CC h---------------------/ 7;< < < ,sIy#9 #J( ( (Ccck7$7777ck7$777777rD   )r  r  r  r  r  )r   r  r  r   r   rh   )r   rh   r   r   r   r  )r   r  rh   r   r   rh   c                t   | t           u rT|                    dd          }|                    d          s|                    d          rt          j        d           t
          j                                        }|                    |	                    dd          d          } | d"dd	|v i|}t          j
        dd
          } |j        |fdt          j                    i|}|j        dk    r|                    d          dk    rt          |d         t          t           f          rt          |d         t                    r2t#          j        g dg dg dg dg dg dg dg dg dg	d          }	nct#          j        g dg dg dg dg dg dg dg dg dg	d          }	n1t#          j        g dg dg dg dg dg dg dg dg dg	d          }	t'          j        |	||gddg          }
t+          ||
           t-          |j        dd !           t-          |j        dd !           d S )#Nr   r  r  r  r        g      @r   r7   r  rz  rX   r2   r~   r   r#   r$   )	r   r   r   r   r2   r   r   r   r   	r   r   r   r   r   r   r   r   r   	r   r   r   r   r   r   r   r   r   	r   r   r   r   r   r   r   r   r   )	r   r   r   r   r   r   r   r   r   	r   r   r   r   r   r   r   r   r   r   r   )	r   r   r   r   rg   r   r   r   r   )	r   r   r   r   r   r   r   r   r   )	r   r   r   r   r   r   r   r   r   )	r   r   r   r   r   r   r   r   r   	r   r   r   r   r   r   r   r   r   rj   r  rh   TrF  rd   r  r  s              rB   test_line_autoranger    s"    '''gr**H%% 	@)9)9&)A)A 	@K>???7D""((A66; ;I )
>
>
j0
>I
>
>C
)qa
0
0
0C
#(3
5
5BHJJ
5*
5
5C1!7!71!<!<z#u66 "=
 jot,, 	F(7777777777777777777777777779 AEF F FCC (7777777777777777777777777779 AEF F FCC h3333333333333333333333333335 =AB B B ,sIy#9 #J( ( (Ccck7$7777ck7$777777rD   c                2   t          j        g d          }g d}d}t          j                                        }|                    |                    dd          d          } | g dg dg dd          }t          j        dd          }|                    |||t          j	                    |          }t          j        g d	g d
g dg dg dg dg dg d
g d	g	d          }	t          j        |	||gddg          }
t          ||
           d S )Nr  r  r   r  r   rK  rz  r   r  r  r  r  )	rg   r   r   r   r   r   r   r   rg   r   r   r$   r#   rj   )r[   rp   rr   r  r  r  r  r{  r  rs   rn   ro   r   )r<   r#   r$   axr~   r  rf   r  rX   r   ru   s              rB   test_line_x_constant_autoranger    s|    	AA	
B7D""((A66; ;I )iijjii   C )qa
0
0
0C
((31bhjjr(
2
2C
(///////////////////////////1 9=> > >C ,sIy#9 #J( ( (CcrD   c           
     n   t           j                                        }|                    |                    dd          d          }t           j                                        }|                    |                    dd          d          }t          j        ddgddggd          }t          j	        |||gdd	g
          }t          t                              | d	dt          j        d                    |           t          j	        |||gddg
          }t          t                              | ddt          j        d                    |           t          j	        |||gdd	g
          }t          t                              | d	dt          j        d                    |           d S )NrR   r2   rL   rh   r   r   r   r$   r%   rj   r'   r&   r#   )rr   r  r  r  r  r  r[   rp   rn   ro   r   r  r  rs   r  r  r  s         rB   test_log_axis_liner  7  s   7??D""4#C#CGQ#O#OQRSSI7D""4#C#CFA#N#NPQRRI
(QFQF#4
0
0
0C
,sIy#9 'N, , ,C S'3@@#FFF
,sIy#9$cN, , ,CS#w@@#FFF
,sIy#9$g.0 0 0Cc7GRXe__EEsKKKKKrD   c                4   t           j                                        }|                    |                    dd          d          } | g dg dd          }t          j        dd          }|                    |ddt          j                              }t          j	        g d	g d
g dg d
g d	gd          }t          j        |||gddg          }t          ||           t          |j        dd           t          |j        dd           d S )N)g      $g      $@r   )r   r   r   r  )r   r   r   r  r   r  rz  r#   r$   )r   r   r   r   r   )r   r   r   r   r   )r2   r   r   r   r   r   r   rj   )r  r   TrF  r  r  s           rB   test_auto_range_liner  L  sJ   7D""4#C#CKQR#S#SUVWWI
)1111113 3 4 4C )qa
0
0
0C
((3S"(**
-
-C
(OOO#OO#OO#OO#OO	% -1	2 2 2C
 ,sIy#9 #J( ( (Ccck9D9999ck9D999999rD   r  float32)r  r  r   )r  r  r  r  r  r  zRagged[float32]c                   | t           u r=|                    dd                              d          rt          j        d           t
          j                                        }|                    |	                    dd          d          }|                    |	                    dd          d          }t          j
        ddd	d
gddg          } | d i |} |j        |fdt          j                    i|}|j        dk    ra|                    d          dk    rHt          |d         t          t           f          r&t#          j        g dg dg dg dg dgd          }	n%t#          j        g dg dg dg dg dgd          }	t'          j        |	||gddg          }
t+          ||
           t-          |j        dd           t-          |j        dd           d S )!Nr   r  r  r  )            @r   )            @r   r  r  r  r  rM   rX   r2   r~   r   r#   )	r   r   r   r   r   r   r   r   r   )	r   r   r   r   r   r   r   r   r   r  r   r   )	r   r   r   r   r   r   r   r   r   )	r   r   r   r   r   r   r   r   r   )	r   r   r   r   r   r   r   r   r   )	r   r   r   r   r   r   r   r   r   r$   rj   TrF  rd   rK   r  r  rb   ra  rr   r  r  r  r  r{  arears   r5   r_  r  r  r[   rp   rn   ro   r   r   rP   rQ   r<   r  r  r~   lincoords_ylincoords_xr  rf   rX   r   ru   s              rB   test_area_to_zero_fixedranger  b  s`   B '''=="%%00:: 	@K>???7D$$((::A? ?K $$((::A? ?K )qa"DME4=B B BC )
 
 i
 
 C
#(3
5
5BHJJ
5*
5
5C1!7!71!<!<z#u66 "=
 h333333333333333	5
 "# # # h333333333333333	5
 "# # # ,sK#= #J( ( (Ccck=====ck=======rD   )r  r  r   r   r2   rh   )r   r  r   r   r  r   )r   r2   rh   )r  r  r  c           
        | t           u r=|                    dd                              d          rt          j        d           t
          j                                        }|                    |	                    dd          d          }|                    |	                    dd          d          }t          j
        dd	          } | di |} |j        |fd
t          j                    i|}|j        dk    rg|                    d          dk    rNt          |d         t          t           f          r,t#          j        g dg dg dg dg dg dg dgd          }	n+t#          j        g dg dg dg dg dg dg dgd          }	t'          j        |	||gddg          }
t+          ||
           t-          |j        dd           t-          |j        dd           d S )Nr   r  r  r  r  r   r   r  r"   rz  rX   r2   r~   r   r#   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r2   r   r   r   r   r   r   r$   rj   r  TrF  r  r   rd   r  r  s              rB   test_area_to_zero_autoranger    sl   b '''=="%%00:: 	@K>???7D$$((A66; ;K$$((B77= =K )rq
1
1
1C
)
 
 i
 
 C
#(3
5
5BHJJ
5*
5
5C1!7!71!<!<z#u66 "=
 h?????????????????????A "# # # h?????????????????????A "# # # ,sK#= #J( ( (Ccck7$7777ck7$777777rD   c           
        | t           u r=|                    dd                              d          rt          j        d           t
          j                                        }|                    |	                    dd          d          }|                    |	                    dd          d          }t          j
        dd          } | di |} |j        |fd	t          j                    i|}|j        d
k    rg|                    d          dk    rNt          |d         t          t           f          r,t#          j        g dg dg dg dg dg dg dgd          }	n+t#          j        g dg dg dg dg dg dg dgd          }	t'          j        |	||gddg          }
t+          ||
           d S )Nr   r  r  r  r  r   r"   rz  rX   r2   r~   r   r#   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r$   rj   rd   rK   r  r  rb   ra  rr   r  r  r  r  r{  r  rs   r5   r_  r  r  r[   rp   rn   ro   r   r  s              rB   test_area_to_zero_autorange_gapr    s>   B '''=="%%00:: 	@K>???7D$$((A66; ;K$$((B77= =K )rq
1
1
1C
)
 
 i
 
 C
#(3
5
5BHJJ
5*
5
5C1!7!71!<!<z#u66 "=
 h?????????????????????A "# # # h?????????????????????A "# # # ,sK#= #J( ( (CcrD   )	r  r  r  r  r  r  y3y4y5)r  r  r  )r#   r$   y_stackr~   )r   r  r   )r   r  r   r   r  r   )r#   r$   r  r  )r  r  r  r  r  r  r  r  )r  r  r  r  c           
        | t           u r=|                    dd                              d          rt          j        d           t
          j                                        }|                    |	                    dd          d          }|                    |	                    dd          d          }t          j
        dd	          } | di |} |j        |fd
t          j                    i|}|j        dk    rg|                    d          dk    rNt          |d         t          t           f          r,t#          j        g dg dg dg dg dg dg dgd          }	n+t#          j        g dg dg dg dg dg dg dgd          }	t'          j        |	||gddg          }
t+          ||
           t-          |j        dd           t-          |j        dd           d S ) Nr   r  r  r  r  r   r  r"   rz  rX   r2   r~   r   r#   r  r  )r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r  r   r   r  )r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r$   rj   r  TrF  r  rd   r  r  s              rB   test_area_to_line_autoranger  Z  sl   x '''=="%%00:: 	@K>???7D$$((A66; ;K$$((B77= =K )rq
1
1
1C
)
 
 i
 
 C
#(3
5
5BHJJ
5*
5
5C1!7!71!<!<z#u66 "=
 h?????????????????????A "# # # h?????????????????????A "# # # ,sK#= #J( ( (Ccck7$7777ck7$777777rD   )	r  r  r  r  r  r  r  r  y6)r  r  r  )r   r   r   r   r   r   c           
        | t           u r=|                    dd                              d          rt          j        d           t
          j                                        }|                    |	                    dd          d          }|                    |	                    dd          d          }t          j
        dd          } | di |} |j        |fd	t          j                    i|}|j        d
k    rg|                    d          dk    rNt          |d         t          t           f          r,t#          j        g dg dg dg dg dg dg dgd          }	n+t#          j        g dg dg dg dg dg dg dgd          }	t'          j        |	||gddg          }
t+          ||
           d S )Nr   r  r  r  r  r   r"   rz  rX   r2   r~   r   r#   r  r  r  r  r   r   r  r  r  r  r  r$   rj   rd   r  r  s              rB   test_area_to_line_autorange_gapr    s@   V '''=="%%00:: 	@K>???7D$$((A66; ;K$$((B77= =K )rq
1
1
1C
)
 
 i
 
 C #(3
5
5BHJJ
5*
5
5C1!7!71!<!<z#u66 "=
 h?????????????????????A "# # # h?????????????????????A "# # # ,sK#= #J( ( (CcrD   c            	        ddl } t          j        t          j        g dg dd          |                                           }t          j        t          j        ddgdd	gd
dgdd
gd          |                                           }t          j        dddd          }|                    ||          }t          j
        g dg dg dg dg dgd          }t          j                            t          j        |                    d                              d          j                  dd         |           t#          |j        dd           t#          |j        dd           dS )Assert that when two triangles share an edge that would normally get
    double-drawn, the edge is only drawn for the rightmost (or bottommost)
    triangle.
    r   Nrh   r   r   r   r   rh   rh   r   r   r   rh   rh   r  r4   rg   r   rh   r2   r   v0v1v2valr   r   r   rM   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r2   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r2   r2   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r2   r2   r2   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   TrF  )multiprocessingr=   r>   r;   r<   	cpu_countrr   r{  trimeshr[   rp   testingassert_array_equalflipudfillnar   r	   r   rP   rQ   )mpvertstrisr  rX   r   s         rB   test_trimesh_no_double_edger    s   
 !   N2<.@.@.@.@.@.@)B )B C CPRP\P\P^P^` ` `E>",q!fQF1a&Z[]^Y_'`'`aa&(llnn6 6 6D )rr66
R
R
RC
++eT
"
"C
(DDDDDDDDDDDDDDD   C J!!")CJJqMM,@,@,F,F,M"N"NrPQr"RTWXXXck66666ck6666666rD   r3   c           	     t   t          j        t          j        g dg dd          |           }t          j        t          j        ddgddgd	d
gdd	gd          |           }t	          j        dddd          }t          j        ||          }t          |t           j                  sJ t          |          }|dk    sJ t          t          j        t          |          d| z  z            dz            }t          t          j        ||z                      }||j        k    sJ |                    t                                                    }|D ]}	|	dz  dk    sJ |                    |||          }
t          j        g dg dg dg dg dgd          }t          j                            t          j        |
                    d                              d          j                  dd
         |           t1          |
j        dd           t1          |
j        dd           dS )r  r  r  r  r4   r   rg   r   rh   r2   r   r	  r   r  rM   r3   r  r  r  r  r  r   r   NTrF  )r=   r>   r;   r<   rr   r{  dumeshr_  lenr}  r[   ceilr5   map_partitionscomputer  rp   r  r  r  r  r   r	   r   rP   rQ   )r5   r  r  r  r!  r^   expected_chunksizeexpected_npartitionspartitions_lenspartitions_lenrX   r   s               rB   test_trimesh_dask_partitionsr*  6  s    N2<.@.@.@.@.@.@)B )B C C'24 4 4E >
q6!Q1vq!fEE	G 	G! ! !D
 )rr"F4 4 4C 75$D dBL))))) 	D		A6666 RWSYY!K-%@AAAEFFrwq+='=>>??4#33333 ))#..6688O) ' '!Q&&&&&
++eT4
(
(C
(DDDDDDDDDDDDDDD   C J!!
	#**Q--&&t,,344RaR8#? ? ?ck66666ck6666666rD   zreduction,dtype,aa_dtyper*   c                8   t           r.t          | t           j                  rt          j        d           t          j        dd          }|                    | ddd|          }|j        |k    sJ |                    | ddd|          }|j        |k    sJ d S )	Nz)antialiased lines not supported with cudfr   rz  r#   r$   r   )
line_widthrX   r   )	rH   r_  r<   rb   ra  rr   r{  r  r   )rf   	reductionr   aa_dtyper  rX   s         rB   test_combine_dtyper/  j  s      AZY%899 A?@@@
)rr
2
2
2C ((3SQI(
>
>C9 ((3SQI(
>
>C9      rD   canvas)rT   )rT   rP   )rU   )rU   rQ   c                    t          j        t          d          5  |                    | dd           d d d            d S # 1 swxY w Y   d S )Nz,Range values must be >0 for logarithmic axesmatchr#   r$   )rb   raises
ValueErrorr  )rf   r0  s     rB   test_log_axis_not_positiver6    s     
z)W	X	X	X # #Cc"""# # # # # # # # # # # # # # # # # #s   AAAr  c                x   t          j        t          g dg dg dg dg d                    }t          j        ||           }|j        | k    sJ t          j        dd	          }t          |t          j	        d
          g ddd          }t          j
        ddgddgddgddgddgddgddggddgddgddgddgddgddgddggddgddgddgddgddgddgddggddgddgddgddgddgddgddggddgddgddgddgddgddgddggddgddgddgddgddgddgddggddgddgddgddgddgddgddgggt                    }t          j
        ddgddgddgddgddgddgddggddgddgddgddgddgddgddggddgddgddgddgddgddgddggddgddgddgddgddgddgddggddgddgddgddgddgddgddggddgddgddgddgddgddgddggddgddgddgddgddgddgddgggt                    }t          j
        ddgddgddgddgddgddgddggddgddgddgddgddgddgddggddgddgddgddgddgddgddggddgddgddgddgddgddgddggddgddgddgddgddgddgddggddgddgddgddgddgddgddggddgddgddgddgddgddgddgggt                    }t          j
        ddgddgddgddgddgddgddggddgddgddgddgddgddgddggddgddgddgddgddgddgddggddgddgddgddgddgddgddggddgddgddgddgddgddgddggddgddgddgddgddgddgddggddgddgddgddgddgddgddgggt                    }|}|                    t          j        |d         t                    d          }	 |j        ddt          j        t          j        d                    i|}
t%          |
j        |d d d d df                     |j        ddt          j        t          j        d          d          i|}
t%          |
j        |	d d d d df                     |j        ddt          j        t          j        dd                    i|}
t%          |
j        |            |j        ddt          j        t          j        dd          d          i|}
t%          |
j        |	            |j        ddt          j        t          j                              i|}
t%          |
j        |d d d d df                     |j        ddt          j        t          j                    d          i|}
t%          |
j        |	d d d d df                     |j        ddt          j        t          j        d                    i|}
t%          |
j        |            |j        ddt          j        t          j        d          d          i|}
t%          |
j        |	           |}|                    t          j        |d         t                    d          }	 |j        ddt          j        t          j        d                    i|}
t%          |
j        |d d d d df                     |j        ddt          j        t          j        d          d          i|}
t%          |
j        |	d d d d df                     |j        ddt          j        t          j        dd                    i|}
t%          |
j        |            |j        ddt          j        t          j        dd          d          i|}
t%          |
j        |	            |j        ddt          j        t          j                              i|}
t%          |
j        |d d d d df                     |j        ddt          j        t          j                    d          i|}
t%          |
j        |	d d d d df                     |j        ddt          j        t          j        d                    i|}
t%          |
j        |            |j        ddt          j        t          j        d          d          i|}
t%          |
j        |	           |}|                    t          j        |d         t                    d          }	 |j        ddt          j        t          j        d                    i|}
t%          |
j        |d d d d df                     |j        ddt          j        t          j        d          d          i|}
t%          |
j        |	d d d d df                     |j        ddt          j        t          j        dd                    i|}
t%          |
j        |            |j        ddt          j        t          j        dd          d          i|}
t%          |
j        |	           |}|                    t          j        |d         t                    d          }	 |j        ddt          j        t          j        d                    i|}
t%          |
j        |d d d d df                     |j        ddt          j        t          j        d          d          i|}
t%          |
j        |	d d d d df                     |j        ddt          j        t          j        dd                    i|}
t%          |
j        |            |j        ddt          j        t          j        dd          d          i|}
t%          |
j        |	           d S )N)      ?r   r   )r   r   r8  )r   r8  r   )g@gffffff
@g?)g      "g      g      )r  r  r  valueotherr4   r   rz  rg   r  r   r   )sourcer#   r$   r~   r,  r2   r   r   r   r:  wrap)moderX   r9  r]   rd   )r;   r<   dictr=   r>   r5   rr   r{  r[   r3  rp   r}  chooserO  r   r  r  r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r5   rA   r  r@   	sol_firstsol_lastsol_minsol_max	sol_index	sol_otherrX   s              rB   test_line_antialias_whererF    sh    
d______"""   
 
B 
	4	4	4B>[((((
)qa
0
0
0Cry||/A/A/AVYZZZFbQ8q"XQx1bB8q"XNbQ8q1XBx1bQ8q"XN
bQ8q1XBx"bQ8q1XNbQ8q1XQx1qQ8q"XNqQ8b"XBx1qQ8b"XNbQ8q"XBx1qQ8q"XNbB8q"XQx1bQ8q"XN   I xbQ8q"XQx1bB8q"XNbQ8q1XBx1bQ8q"XN
bQ8q1XBx"bQ8q1XNbQ8q1XQx1qQ8q"XNqQ8b"XBx1qQ8b"XNbQ8q"XBx1qQ8q"XNbB8q"XQx1bQ8q"XN   H hbQ8q"XQx1bB8q"XNbQ8q1XBx1bQ8q"XN
bQ8q1XBx"bQ8q1XNbQ8q1XQx1qQ8q"XNqQ8b"XBx1qQ8b"XNbQ8q"XBx1qQ8q"XNbB8q"XQx1bQ8q"XN   G hbQ8q"XQx1bB8q"XNbQ8q1XBx1bQ8q"XN
bQ8q1XBx"bQ8q1XNbQ8q1XQx1qQ8q"XNqQ8b"XBx1qQ8b"XNbQ8q"XBx1qQ8q"XNbB8q"XQx1bQ8q"XN   G I  2g;!<!<6 JJI
#(
=
=rx 1 122
=f
=
=Cch	!!!QQQ' 2333
#(
F
Frx 1 17;;
Fv
F
FCch	!!!QQQ' 2333 #(
D
Drx
7a 8 8 899
DV
D
DCch	***
#(
M
Mrx
7a 8 8 8'BB
Mf
M
MCch	*** #(
?
?rx 1 3 344
?
?
?Cch	!!!QQQ' 2333
#(
H
Hrx 1 3 3W==
H
H
HCch	!!!QQQ' 2333 #(
D
Drx 3a 8 8 899
DV
D
DCch	***
#(
M
Mrx 3a 8 8 8'BB
Mf
M
MCch	*** I  2g;!<!<6 JJI
#(
<
<rx 0 011
<V
<
<Cch	!!!QQQ' 2333
#(
E
Erx 0 0'::
Ef
E
ECch	!!!QQQ' 2333 #(
C
Crx	'Q 7 7 788
CF
C
CCch	***
#(
L
Lrx	'Q 7 7 7AA
LV
L
LCch	*** #(
?
?rx 1 3 344
?
?
?Cch	!!!QQQ' 2333
#(
H
Hrx 1 3 3W==
H
H
HCch	!!!QQQ' 2333 #(
D
Drx 3a 8 8 899
DV
D
DCch	***
#(
M
Mrx 3a 8 8 8'BB
Mf
M
MCch	*** I  2g;!<!<6 JJI
#(
;
;rxw00
;F
;
;Cch	!!!QQQ' 2333
#(
D
Drxw99
DV
D
DCch	!!!QQQ' 2333 #(
B
BrxA 6 6 677
B6
B
BCch	***
#(
K
KrxA 6 6 6@@
KF
K
KCch	*** I  2g;!<!<6 JJI
#(
;
;rxw00
;F
;
;Cch	!!!QQQ' 2333
#(
D
Drxw99
DV
D
DCch	!!!QQQ' 2333 #(
B
BrxA 6 6 677
B6
B
BCch	***
#(
K
KrxA 6 6 6@@
KF
K
KCch	*****rD   c            
     "   t          j        dd          t          j        dd          t          j        dd          t          j        dd          t          j        dd          g} d}t          j        t	          g d	g d
g d                    }t          j        |d          }| D ]_}t          j        t          |          5  |
                    |ddt          j        d                     d d d            n# 1 swxY w Y   `d S )Nr   r3   rz  r   r   r   r   z>Invalid size: plot_width and plot_height must be bigger than 0)r   g?r   )r   g?r   )r   r   r  )r#   r$   zr2  r#   r$   rH  )rr   r{  r;   r<   r>  r=   r>   rb   r4  r5  rq   r9  )cvs_listmsgrA   rf   r  s        rB   test_canvas_sizerK  *	  sJ   
	QA...
	QA...
	QA...
	RQ///
	RR000H LC	d[[[KKK<<<HHH	I	IB
.Q

C 4 4]:S111 	4 	4JJsCbgcll333	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	44 4s   +DD	
D	c                    t          j        dgdz  d          | d<   |                     |          } | j        |k    sJ t	          j        dd                              | ddt	          j                               d S )	Nz
2007-07-13r   zdatetime64[ns]r   datesr2   r#   r$   )r;   Seriesrm   r5   rr   r{  rq   rs   )rf   r5   s     rB   test_dataframe_dtypesrO  ;	  sx     9l^B.6FGGGCL
//+
&
&C?k))))IaOO3S"(**55555rD   on_gpuFTc           
     H   | rt           st          j        d           t          j        t          g ddgdz  g d                    }t          j        |d	          }|j        dk    sJ |j	        
                    d
          |_	        |j	                                                                        }|d         dk    sJ |d         dk    sJ |d         dk    sJ t          j        dddd          }|                    |ddt          j        dt          j                                        }t%          |j	        g dk              sJ |                    ddg          }t%          |j	        g dk              sJ t%          |j        g dk              sJ d S )Nzgpu tests not enabled)r   r   r2   r   r   r2   r   r   r   r   r   r   r   r!   )r   r   r   r   r   r   r   r   r   r   r   r   )r#   r$   r.   r  r2   r4   r1   r   r   r   r   rg   r   )r   r2   )r   r   )rP   rQ   r#   r$   r.   )r   r   r   )dim)r2   r   rg   )ra   rb   ra  r;   r<   r>  r=   r>   r5   r.   r   value_countsr%  rr   r{  rq   r   rs   allr   r	   )rP  rA   rf   
cat_totalsr0  rX   sum_cats          rB   test_dask_categorical_countsrW  E	  s     -h -+,,,	444BNNN
 
 

 
 
B .
+
+
+C?agnnZ((CG %%''//11Jc?ac?ac?aYq!VW===F
--S#ruUBHJJ'?'?
@
@Csw///)***** gg3*g%%Gw{ooo-.....w~*+++++++rD   c                   |                      |          } | j        |k    sJ t          j        g dg dgg dg dggt          g dgz   t
          dgz             }t          j        t          j        |dk     |d	k              t          j	        d
|z
            }t                              | ddt          j        dt          j        t          j        d                                        }t          ||           t                              | ddt          j        dt          j        t          j        d          d                              }t          ||           d S )Nrh   r   r   rg   r   r   r   r   r/   rj   r   r3   r   r#   r$   r,   r+   )rm   r5   rn   ro   rk   rl   r  r[   r  r   r   rq   rr   r   r   r   rf   r5   r  r  rX   s        rB   test_categorical_where_maxr[  f	  Y   
 //+
&
&C?k))))<---1A1A1A!B".,,0@0@0@!A!C'-1E1E1E0F'FTU[T\_^ ^ ^L (2=)9<1;LMMrv,. .K ((3S"%9L9L0M0M"N"N
O
OCl### ((3S"%9L9Li0X0X"Y"Y
Z
ZCk"""""rD   c                   |                      |          } | j        |k    sJ t          j        g dg dgg dg dggt          g dgz   t
          dgz             }t          j        t          j        |dk     |d	k              t          j	        d
|z
            }t                              | ddt          j        dt          j        t          j        d                                        }t          ||           t                              | ddt          j        dt          j        t          j        d          d                              }t          ||           d S )Nr   r   r   rg   r   r   r   r   r/   rj   r   r3   r   r#   r$   r,   r+   )rm   r5   rn   ro   rk   rl   r  r[   r  r   r   rq   rr   r   r   r   rZ  s        rB   test_categorical_where_minr_  |	  r\  rD   c                   |                      |          } | j        |k    sJ t          j        g dg dgg dg dggt          g dgz   t
          dgz             }t          j        t          j        |dk     |d	k              t          j	        d
|z
            }t                              | ddt          j        dt          j        t          j        d                                        }t          ||           t                              | ddt          j        dt          j        t          j        d          d                              }t          ||           d S )Nr^  r   r   r   r   r/   rj   r   r3   r   r#   r$   r,   r+   )rm   r5   rn   ro   rk   rl   r  r[   r  r   r   rq   rr   r   r   r   rZ  s        rB   test_categorical_where_firstra  	  sZ   
 //+
&
&C?k))))<---1A1A1A!B".,,0@0@0@!A!C'-1E1E1E0F'FTU[T\_^ ^ ^L (2=)9<1;LMMrv,. .K ((3S"%+9N9N0O0O"P"P
Q
QCl### ((3S"%+9N9NPY0Z0Z"["[
\
\Ck"""""rD   c                   |                      |          } | j        |k    sJ t          j        g dg dgg dg dggt          g dgz   t
          dgz             }t          j        t          j        |dk     |d	k              t          j	        d
|z
            }t                              | ddt          j        dt          j        t          j        d                                        }t          ||           t                              | ddt          j        dt          j        t          j        d          d                              }t          ||           d S )NrY  r   r   r   r   r/   rj   r   r3   r   r#   r$   r,   r+   )rm   r5   rn   ro   rk   rl   r  r[   r  r   r   rq   rr   r   r   r   rZ  s        rB   test_categorical_where_lastrc  	  sY   
 //+
&
&C?k))))<---1A1A1A!B".,,0@0@0@!A!C'-1E1E1E0F'FTU[T\_^ ^ ^L (2=)9<1;LMMrv,. .K ((3S"%9M9M0N0N"O"O
P
PCl### ((3S"%9M9My0Y0Y"Z"Z
[
[Ck"""""rD   c                   |                      |          } | j        |k    sJ t          j        g dg dg dg dgg dg dg dg dggg d	g d
g dg dgg dg dg dg dgggt          g dg dgz   t
          ddgz             }t          j        t          j        |dk     |dk              t          j	        d|z
            }t          dd          D ]}t                              | ddt          j        dt          j        t          j        d|                                        }|d d d d d d d |f         }t!          ||           |dk    r|t#          |d d d d d d df         j        t                              | ddt          j        dt          j        t          j        d                                        j                   t                              | ddt          j        dt          j        t          j        d|          d                              }|d d d d d d d |f         }t!          ||           |dk    r}t#          |d d d d d d df         j        t                              | ddt          j        dt          j        t          j        d          d                              j                   d S ) Nr  r   r   r   r   r   r   r   r  r   r   r   r   r   r   r   r   r   r   r   r   r2   r/   r^   rj   r   r3   r   r   rh   r#   r$   r,   r]   r+   )rm   r5   rn   ro   rk   rl   r  r[   r  r   r   r   rq   rr   r   r   r   r   r   r   r  s          rB   test_categorical_where_max_nrg  	  3   
 //+
&
&C?k))))<::{{{LLL+++
><<|||\\\
B
D;;


KKK
=<<|||\\\
B
D	E ---yyy99PS}@TV V VL (2=)9<1;LMMrv,. .K 1a[[ Q QhhsCbeFBHRXkUV=W=W=W4X4X&Y&YZZ111aaaBQB;'S#66c!!!QQQ1*o2hhsC')uVRXbf[>Q>Q5R5R'S'SU UUY[ [ [
 hhsCuVRXbh{a.H.H.H)%T%TUUW W!!!QQQ2A2+&S#66c!!!QQQ1*o2hhsC')uVRXbf[>Q>Q>G6I 6I (J (JK KKOQ Q Q!Q QrD   c                   |                      |          } | j        |k    sJ t          j        g dg dg dg dgg dg dg dg dggg d	g d
g dg dgg dg dg dg dgggt          g dg dgz   t
          ddgz             }t          j        t          j        |dk     |dk              t          j	        d|z
            }t          dd          D ]}t                              | ddt          j        dt          j        t          j        d|                                        }|d d d d d d d |f         }t!          ||           |dk    r|t#          |d d d d d d df         j        t                              | ddt          j        dt          j        t          j        d                                        j                   t                              | ddt          j        dt          j        t          j        d|          d                              }|d d d d d d d |f         }t!          ||           |dk    r}t#          |d d d d d d df         j        t                              | ddt          j        dt          j        t          j        d          d                              j                   d S ) Nr   r   re  r   r   r   r   r   r   r  r   r   r   r   r   r  r   rf  r/   r^   rj   r   r3   r   r   rh   r#   r$   r,   r]   r+   )rm   r5   rn   ro   rk   rl   r  r[   r  r   r   r   rq   rr   r   r   r   r   r   r   r  s          rB   test_categorical_where_min_nrj  	  rh  rD   c                   |                      |          } | j        |k    sJ t          j        g dg dg dg dgg dg dg dg dggg d	g d
g dg dgg dg dg dg dgggt          g dg dgz   t
          ddgz             }t          j        t          j        |dk     |dk              t          j	        d|z
            }t          dd          D ]}t                              | ddt          j        dt          j        t          j        d|                                        }|d d d d d d d |f         }t!          ||           |dk    r|t#          |d d d d d d df         j        t                              | ddt          j        dt          j        t          j        d                                        j                   t                              | ddt          j        dt          j        t          j        d|          d                              }|d d d d d d d |f         }t!          ||           |dk    r}t#          |d d d d d d df         j        t                              | ddt          j        dt          j        t          j        d          d                              j                   d S ) Nr   r   re  r   r   r   r   r   r   r   r   r   r   r   r   r   r   rf  r/   r^   rj   r   r3   r   r   rh   r#   r$   r,   r]   r+   )rm   r5   rn   ro   rk   rl   r  r[   r  r   r   r   rq   rr   r   r   r   r   r   r   r  s          rB   test_categorical_where_first_nrl  

  s3   
 //+
&
&C?k))))<::{{{LLL+++
><<|||\\\
B
D;;


KKK
=<<|||\\\
B
D	E ---yyy99PS}@TV V VL (2=)9<1;LMMrv,. .K 1a[[ Q QhhsCbeFBHRZWX=Y=Y=Y4Z4Z&[&[\\111aaaBQB;'S#66c!!!QQQ1*o2hhsC')uVRXbh{>S>S5T5T'U'UW WW[] ] ]
 hhsCuVRXbj.J.J.JI%V%VWWY Y!!!QQQ2A2+&S#66c!!!QQQ1*o2hhsC')uVRXbh{>S>S>G6I 6I (J (JK KKOQ Q Q!Q QrD   c                j   t          j        g dg dg dg dgg dg dg dg dggg d	g d
g dg dgg dg dg dg dgggt          g dg dgz   t          ddgz             }t          j        t          j        |dk     |dk              t
          j        d|z
            }t          dd          D ]}t          
                    | ddt          j        dt          j        t          j        d|                                        }|d d d d d d d |f         }t          ||           |dk    r|t          |d d d d d d df         j        t          
                    | ddt          j        dt          j        t          j        d                                        j                   t          
                    | ddt          j        dt          j        t          j        d|          d                              }|d d d d d d d |f         }t          ||           |dk    r}t          |d d d d d d df         j        t          
                    | ddt          j        dt          j        t          j        d          d                              j                   d S ) Nr  r   re  r   r   r   r  r   r   r  r   r   r   r   r   r  r   rf  r/   r^   rj   r   r3   r   r   rh   r#   r$   r,   r]   r+   )rn   ro   rk   rl   r  r[   r  r   r   r   rq   rr   r   r   r   r   r   r   r  s          rB   test_categorical_where_last_nrn  0
  s    <::{{{LLL+++
><<|||\\\
B
D;;


KKK
=<<|||\\\
B
D	E ---yyy99PS}@TV V VL (2=)9<1;LMMrv,. .K 1a[[ ` `hhsCbeFBHRY{VW=X=X=X4Y4Y&Z&Z[[111aaaBQB;'S#66c!!!QQQ1*o2hhsC')uVRXbgk>R>R5S5S'T'TV VVZ\ \ \
 hhsCuVRXbiq.I.I.I9%U%UVVX X!!!QQQ2A2+&S#66c!!!QQQ1*o2hhsCbeFBHRWU`MaMaMVEX EX 7Y 7Y Z ZZ^` ` `!` `rD   )
__future__r   osdask.dataframe	dataframer=   numpyr[   pandasr;   xarrayrn   dask.contextr   r   
datashaderrr   datashader.datatypesr   datashader.utilsutilsr   rb   spatialpandasr9   spatialpandas.daskImportErrordatashader.tests.test_pandasr   r   r	   setboolr}  getenvra   r<   rp   r3  r   r.   r   r/   atr>   _ddfrC   rG   cupyrH   from_dask_dataframecudf_ddfddfsrK   
DataFramesr{  r   r  r  r  r  r  r~   r  r  r  rk   rl   rY   r_   re   markparametrizerv   ry   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r
  r  r  r  r  r  r  r  r!  r#  r%  r'  r0  r7  r;  r?  rD  rS  r]  rc  re  rg  rk  rn  rv  r  r  r  r  skipifr  r  r>  line_manual_range_paramsrO  r  line_autorange_paramsr  r  r  r  r  r  r  r  r  r  r  r   r*  rx   r  rs   r   r   r   r   r   r/  r6  rF  rK  rO  rW  r[  r_  ra  rc  rg  rj  rl  rn  rd   rD   rB   <module>r     s-/   " " " " " " 				                                   , , , , , ,          	BBB          
] # # # #4IBI3Q778899828bTBY!r%9;;#28bTAXa%71#'%AQC!G%KMM'rx"bTBY)>@@'rx"RD1H)<sQw)F"PQ)QSS&RYr666&RYr666&RYr666&RYr666!*2q"!5!5#,29Rt#<#<#<q"gbj#I#+28RD2I1,D#E#E!U1WuQw.#q8C57B22214!)2$q&B46/RDF*BbT!V*K!L!LN N 	O 	O IZ((	Zz**
    r~e+++- - -KKKKKK ,y,T22H(D7 7 7 !"56JJ   ""D"4)H6D !J BI66JJJ	aQ!u
6 
6 
6	aQ"
7 
7 
7
")qa#EK K K 
wt??JJANN	
Y	Sz    
 
 
 %%55@ @ 65 &%@ %%55
D 
D 65 &%
D %%55> > 65 &%>  %%55@ @ 65 &%@ %%55? ? 65 &%? %%55	> 	> 65 &%	> %%55	> 	> 65 &%	> %%55D D 65 &%D %%55D D 65 &%D %%55
d 
d 65 &%
d %%55
d 
d 65 &%
d %%55
d 
d 65 &%
d %%55
d 
d 65 &%
d %%55S S 65 &%S %%55
e 
e 65 &%
e %%551 1 65 &%1 %%55	] 	] 65 &%	] %%55	] 	] 65 &%	] %%55Z Z 65 &%Z  %%55Z Z 65 &%Z  %%55* * 65 &%* %%55* * 65 &%* %%55` ` 65 &%`  %%55` ` 65 &%`  %%55	. 	. 65 &%	. %%55	. 	. 65 &%	. %%55b b 65 &%b  %%55a a 65 &%a  %%55H H 65 &%H& %%55H H 65 &%H& %%55Q Q 65 &%Q> %%55Q Q 65 &%Q> %%55J J 65 &%J& %%55I I 65 &%I& %%55Q Q 65 &%Q> %%55Q Q 65 &%Q> ''55. . 65 ('.D ''55!< !< 65 ('!<H %%55? ? 65 &%? %%55> > 65 &%> %%55> > 65 &%> %%555; 5; 65 &%5;p %%55& & 65 &%&R %%55; ; 65 &%;2 %%55  65 &%< %%55  65 &%. %%55% % 65 &%%P %%55' ' 65 &%'T %%557 7 65 &%7( j1127 27 2127j j117 7 217 j11!1!1!122$$< < %$ 32 21<, %%N N &%N& F#@AA  BA( j118 8 2184 
Tjjjjkkjjjjjj     	!!!%7%7%7a@@@B 
Tjjjjjj     	xrx


##'9'9'9BBB	D 
TBAq"&!Q;Q1aAq9     	sc"""$ 
Tkkkkkkkkkkkk     	!!!%7%7%7a@@@B 
Tkkkkkkkk	    
 	t)))2224 
T[***&:&:&:;<<[***&8&8&89::      $tcSq999;W/ `  ##	)));;;=
 
  
  
  "&v!6!6!6	8   j!n55/1I!A#1NOO28 28 PO 6528n 
Tjjjjjjkkkkkk     	!!!%7%7%7a@@@B 
Tjjjjjj     	!!!XRXjjj%9%9BBB	D 
TQ1aAq9!Q1b"&"a;     	sc"""$ 
Tkkkkkkkkkkkk     	!!!%7%7%7a@@@B 
Tkkkkkkkk	    
 	!!!T2224 
Tjj)))YYY/jj***jjj1      $tcSq999;W/ `    	)))((((((*
 	
  
  
  "&v!6!6!6		8   j11/1FGG88 88 HG 2188v j11    21 F %%L L &%L( j11: : 21:* j11/	T26l1g!f"&k1g!f      2 2 26H6H6HqQQQS 
T"aA&Q1%     	sc"""$ 
Tkkvq!njjvq!n	 
   
 $$$AFFFH 
TRX{{{QF+3DEEERXzzzAq6*2CDDD        "&s!;!;!;=52  >*> *>?  21@*>Z j11/	T1g1g!f!f2h!f     
T"4"4"41===? 
T1g1g!f  	  
 
T("(:::Y"G"G"GaPPPR 
T!!!!!!     	sc"""$ 
Tkkiijjjj	 
   
 tt1EEEG 
Tkkiijj  	   t1===	? 
Tkk999%jj***%        "&s!;!;!;=U.2 . .^+8 +8_. . 21`+8\ j11/	T26l1g!f"&k1g!f      2 2 26H6H6HqQQQS 
T"aA&Q1%     	sc"""$ 
Tkkvq!njjvq!n	 
   
 tt1EEEG 
TkkAq6"jj1a&!        "&s!;!;!;=52  >* *?  21@*Z j11/	T1g1g!f!f2h!f!f2h!f
 
 
 
 
 
T"4"4"4$$$1. . ./ 
T1g1g!f  	  
 
T("(:::"6"6"(:::Y777aA A AB 
T!!!!!!'''     	sc91555	7 
Tkkiijjjjjjjj     
TT4LT4L4,QGGGI 
Tkkiijjjj	 
   
 tdKKKM 
Tkk999%jj***%JJ


+  	      "&sIA!N!N!N	Pi92 9 9t+8 +8u9 9 21v+8\ j11/	T26l1g!f"&k1g!f!f!f!f
 
 
 
 
 
T"4"4"4$$$1. . ./ 
T"aA&Q1%%%%     	sc91555	7 
Tkkvq!njjvq!niiii     
TT4LT4L4,QGGGI 
TkkAq6"jj1a&!II1v&  	      "&sIA!N!N!N	PG(2 ( (R, ,S( ( 21T,^7 7 74 UU1a[[(9(9::07 07 ;:07f %%3RVXXtRZ RXZZBJ'RVE]]BJ
+RVE]]BJ
+RVE]]BJ
+6  ! !  &%! %%BI%   BI%000BI%   BI%000	$  # #  &%#
 			22Y+ Y+ 32Y+x4 4 4" %%			226 6 32 &%6 E4=11, , 21,@ %%55# # 65 &%#( %%55# # 65 &%#( %%55# # 65 &%#( %%55# # 65 &%#( %%55!Q !Q 65 &%!QH %%55!Q !Q 65 &%!QH %%55!Q !Q 65 &%!QH %%55` ` 65 &%` ` `s#   A AA8+J$ $J<;J<