
    |Le3                   N   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
Zd dlZd dlm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  dg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j                            d          e_        eej        d<   eej        d<   eej        d<   eej        d <    e e ej        d!d                               Z	 d dlZd d"lmZ n# e $ r dZdZY nw xY wd# Z!	 d dl"Z"d dl#Z#ese d$ Z$ e$e          Z%ee%gZ&e!e$gZ'n# e $ r dxZ"Z#egZ&e!gZ'Y nw xY w ej(        d%d%d&d&'          Z) ej(        d%d%d(d&d)*          Z* ej(        d%d%d&d(d)+          Z+ ej(        d%d%d(d(d)d),          Z,ej-        .                                Z/e/0                    e/1                    d&d%          d%          Z2e2e2gZ3d-d.gZ4d4d0Z5d4d1Z6d2 Z7d3 Z8d4 Z9d5 Z:ej;        <                    e d67          d8             Z=ej;        >                    d9e&          d:             Z?ej;        >                    d9e&          d;             Z@ej;        >                    d9e&          d<             ZAej;        >                    d9e&          d=             ZBej;        >                    d9e&          d>             ZCej;        >                    d9e&          d?             ZDej;        >                    d9e&          d@             ZEej;        >                    d9e&          dA             ZFej;        >                    d9e&          dB             ZGej;        >                    d9e&          dC             ZHej;        >                    d9e&          dD             ZIej;        >                    d9e&          dE             ZJej;        >                    d9e&          dF             ZKej;        >                    d9e&          dG             ZLej;        >                    d9e&          dH             ZMej;        >                    d9e&          dI             ZNej;        >                    d9e&          dJ             ZOej;        >                    d9e&          dK             ZPej;        >                    d9e&          dL             ZQej;        >                    d9e&          dM             ZRej;        >                    d9e&          dN             ZSej;        >                    d9e&          dO             ZTej;        >                    d9e&          dP             ZUej;        >                    d9e&          dQ             ZVej;        >                    d9e&          dR             ZWej;        >                    d9e&          dS             ZXej;        >                    d9e&          dT             ZYej;        >                    d9e&          dU             ZZej;        >                    d9e&          dV             Z[ej;        >                    d9e&          dW             Z\ej;        >                    d9e&          dX             Z]ej;        >                    d9e&          dY             Z^ej;        >                    d9e&          dZ             Z_ej;        >                    d9e&          d[             Z`ej;        >                    d9e&          d\             Zaej;        >                    d9e&          d]             Zbej;        >                    d9e&          d^             Zcej;        >                    d9e&          d_             Zdej;        >                    d9e&          d`             Zeej;        >                    d9e&          da             Zfej;        >                    d9e&          db             Zgej;        >                    d9e&          dc             Zhej;        >                    d9e&          dd             Ziej;        >                    d9e&          de             Zjej;        >                    d9e&          df             Zkej;        >                    d9e&          dg             Zlej;        >                    d9e&          dh             Zmej;        >                    d9e&          di             Znej;        >                    d9e&          dj             Zoej;        >                    d9e&          dk             Zpej;        >                    d9e&          dl             Zqej;        >                    d9e&          dm             Zrej;        >                    d9e&          dn             Zsej;        >                    d9e&          do             Ztej;        >                    d9e&          dp             Zuej;        >                    d9e&          dq             Zvej;        >                    d9e&          dr             Zwej;        >                    d9e&          ds             Zxej;        >                    dte'          du             Zydv Zzej;        >                    dwg dx          ej;        >                    dyd g          dz                         Z{ej;        >                    d9e&          d{             Z|ej;        <                    e d|7          d}             Z}ej;        <                    e d|7          d~             Z~d Zd Zd Zej;        >                    d9e&          d             Zd Zd Zej;        <                    e d|7          ej;        >                    dg ddfg dgdfg ddfg dgdfg dggdfg          d                         Zd Zd Zd Zd Zd Zd Zd Zd Zddgd d gddgd d gddgd d gdg eg dg dd          fd d gddgd d gdg e ej        g d          g dd          fd d gddgd d gdg eg d ej        g d          d          fd dd ej        d dd gdd dej        dd dgdg ed.d-d           fg dg dg dg ddg eddgddgd           fg dg dg dg ddg eddgdd           f ej        dd gg dgd           ej        d dgg dgd          dg ed.d-d          fgZer:e                    d ej        g dg dgd          ig ed          f           ej;        >                    dte'          ej;        >                    de          d                         Zd d gddgd d gddgd d gddgdg eg dg dd          fd d gddgd d gdg eg d ej        g d          d          fd dd ej        d dd gdd dej        dd dgdg ed.d-d           fg dg dg dg ddg eddgddgd           fg dg dg dg ddg eddgdd           f ej        g dg dgd           ej        g dg dgd          dg ed.d-d          fgZer:e                    d ej        g dg dgd          ig ed          f           ej;        >                    dte'          ej;        >                    de          ej;        >                    dd dg          d                                     Zej;        >                    dte'          d             Zej;        >                    dte'          d             Zd Zej;        >                    dte'          ej;        >                    d edej        gdd%gd dgd ej        gddgd d gdd           eg dg dd          f eddd ej        d%dgd dd ej        dd gd           ed.d-d           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           ed.d-d          fg          d                         Zej;        >                    dte'          ej;        >                    d edd gdd%gd dgd d gddgd d gd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           ed.d-d           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 e ej        g dg dgd           ej        g dg dgd          d           ed.d-d          fg          d                         Zej;        >                    dte'          ej;        >                    d edej        gdd%gd dgd ej        gddgd d gdd           eg dg dd          f eddd ej        d%dgd dd ej        dd gd           ed.d-d           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           ed.d-d          fg          d                         Zej;        >                    dte'          ej;        >                    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Ȝ           ed.d-dd Ŧ          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 e ej        g dg dgd           ej        g dg dgd           ej        g dƢg dƢgd          dȜ           ed.d-ddŦ          fg          d΄                         Zdτ ZdЄ Zdф Zd҄ Zdӄ ZdԄ Z ej         e ej        g dբ           ej        g d֢           ej        dd	d           ej        ddd          g d٢ڦ                    Z ej        ej        ej        ej        ej        ej        ej        ej        ej        ej        ej        ej        gej        d	dej        ej        ej        ej        ej        dd	ej        gej        dd	dej        ej        ej        dd	d	ej        gej        ej        dd	dej        dd	dd	ej        gej        ej        ej        dd	dd	dej        d	ej        gej        ej        ej        ej        dd	dej        ej        d	ej        gej        ej        ej        dd	dd	dej        d	ej        gej        ej        dd	dej        dd	dd	ej        gej        dd	dej        ej        ej        dd	d	ej        gej        d	dej        ej        ej        ej        ej        dd	ej        gej        ej        ej        ej        ej        ej        ej        ej        ej        ej        ej        gg          Z ej        ej        ej        ej        ej        ej        ej        ej        ej        ej        ej        ej        gej        d	dej        ej        ej        ej        ej        dd	ej        gej        dd	dej        ej        ej        dd	d	ej        gej        ej        dd	dej        dd	dd	ej        gej        ej        ej        dd	dd	dej        d	ej        gej        ej        ej        ej        dddej        ej        d	ej        gej        ej        ej        dd	dd	dej        d	ej        gej        ej        dd	dej        dd	dd	ej        gej        dd	dej        ej        ej        dd	d	ej        gej        d	dej        ej        ej        ej        ej        dd	ej        gej        ej        ej        ej        ej        ej        ej        ej        ej        ej        ej        gg          Z ej        ej        ej        ej        ej        ej        ej        ej        ej        ej        ej        ej        gej        ej        ej        ej        ej        ej        ej        ej        ej        ej        ej        gej        d	ddddddddej        gej        dddddddddej        gej        ej        ej        ej        ej        ej        ej        ej        ej        ej        ej        gej        ej        ej        ej        ej        ej        ej        ej        ej        ej        ej        gej        ej        ej        ej        ej        ej        ej        ej        ej        ej        ej        gej        ej        ej        ej        ej        ej        ej        ej        ej        ej        ej        gej        ej        ej        ej        ej        ej        ej        ej        ej        ej        ej        gej        ej        ej        ej        ej        ej        ej        ej        ej        ej        ej        gej        ej        ej        ej        ej        ej        ej        ej        ej        ej        ej        gg          Z ej        g dg dg dg dg dg dg dg dg dg dg dgej                  Z ej        g dg dg dg dg dg dg dg dg dg dg dgej                  Z ej        g dg dg d g d g dg dg dg dg dg dg dgej                  Z ej        g dg dg dg dg dg dg dg dg dg dg dgej                  Zd Zd Z ej        dddeeeeeedddgdd	ddeeeeddd	dgddd	deeeddd	ddgedddeeddd	ddegeeeeddܐdd	ddeegeeeedܐd	d	ddeeegeeeedܐd	d	ddeeegeeeeddܐdd	ddeegedddeeddd	ddegddd	deeeddd	ddgdd	ddeeeeddd	dgdddeeeeeedddgg          Z ej        dddeeeeeedddgdd	ddeeeeddd	dgddd	deeeddd	ddgedddeeddd	ddegeeeedddd	ddeegeeeedd	d	ddeeegeeeedd	d	ddeeegeeeedddd	ddeegedddeeddd	ddegddd	deeeddd	ddgdd	ddeeeeddd	dgdddeeeeeedddgg          Z e edd
ej        ddej        dd
ej        ddgdd
ej        ddej        ddej        ddg          d           ed.d-d           eef e edd
ej        ddgdd
ej        ddgdd
ej        ddgddej        ddg          d           eddgddgd           eef e eddgd
d
gej        ej        gddgddgddgd
dgej        ej        gddgddg
  
        d           eg dg dd          eef e eddgd
dgej        ej        gddgddg          d           e ej        dd
ej        ddg          g dd          eef e eddgd
dgej        ej        gddgddg          d           e ej        dd
ej        ddg          g dd          ej        ej        f e e ej        dd
ej        ddgdd
ej        ddggd           ej        dd
ej        ddgddej        ddggd                               ed.d-d          eefgZerxe                     e ej        ddd
d
ej        ej        ddddg
ddd
dej        ej        ddddg
gd                     ed          eef           ej;        >                    de          ej;        >                    dd/dg          d                         Zd Zej;        >                    dd/dg          d             Zej;        >                    d ej        d           ej        d          g          d             Zd Zej;        >                    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 ej         ej        d                    ej        ej        f ej         ej        d          d          ej        ej        fg          d              Zej;        >                    d9e&          ej;        >                    d! ej(        d)"           ej(        d)d&#           ej(        d)$           ej(        d)d&%          g          d&                         Zej;        >                    d' ej                     ej                     ej        d           ej        d           ej        d           ej         ej                    (           ej        d           ej         ej        d          d          g          d)             ZƐd* Zǐd+ Zej;        >                    d9e&          d,             Zej;        >                    d9e&          d-             Zej;        >                    d9e&          d.             Zej;        >                    d9e&          d/             Zej;        >                    d9e&          d0             Zej;        >                    d9e&          d1             Zej;        >                    d9e&          d2             Zej;        >                    d9e&          d3             ZdS (5      )annotationsNnan)RaggedDtype        
               ?   i4dtypei8f4f8   abcdr   r   r   r   one         )xylog_xlog_yi32i64f32f64reverse	plusminus	empty_bincatcat2onecatcat_intcategory)   r$   )r.   r%   )   r&   )r.   r'   DATASHADER_TEST_GPU)	LineDtypec                 r    |                     dd          rt          j        | i |S t          j        | i |S )NgeoF)popspGeoDataFramepd	DataFrameargskwargss     <lib/python3.11/site-packages/datashader/tests/test_pandas.pypd_DataFramer=   8   sB    zz% -////|T,V,,,    c                     |                     dd          rJ t          j                            t	          j        | i |d          S )Nr3   F)nan_as_null)r4   cudfr8   from_pandasr7   r9   s     r<   cudf_DataFramerC   G   sO    ::eU+++++~))L$)&))u * 
 
 	
r>   r.   r   r	   
plot_widthplot_heightx_rangey_ranger	   r   log)rF   rG   rH   rI   x_axis_type)rF   rG   rH   rI   y_axis_type)rF   rG   rH   rI   rL   rM   r   r   Fc                   t           rt          | j        t           j                  r8t	          j        t          j        | j                  | j        | j                  } t          |j        t           j                  r8t	          j        t          j        |j                  |j        |j                  }|r"t          j	        
                    | |           dS t          j	                            | |           dS )zAssert that two xarray DataArrays are equal, handling the possibility
    that the two DataArrays may be backed by ndarrays of different typescoordsdimsN)cupy
isinstancedatandarrayxr	DataArrayasnumpyrP   rQ   testingassert_allcloseassert_equal)aggr   closes      r<   assert_eq_xrr^   c   s      ch-- 	,SX&&sz  C afdl++ 	QV$$QXAF  A  (

""3*****

Q'''''r>   c                X   t           r\t          | t           j                  rt          j        |           } t          |t           j                  rt          j        |          }|r$t          j                            | |d           dS t          j                            | |           dS )ziAssert that two ndarrays are equal, handling the possibility that the
    ndarrays are of different typesr
   )decimalN)rR   rS   rU   rX   nprY   assert_array_almost_equalr[   )rT   r   r]   s      r<   assert_eq_ndarrayrc   t   s       dDL)) 	&<%%Da&& 	 QA )

,,T1a,@@@@@

a(((((r>   c                ~    d } ||           } ||          }t           j                            |||d           d S )Nc                :   | j         }t          r.t          |t          j                  rt          j        |          }|j        }|                    t          j                  	                    |dz             }t          j        || j        dz   | j                  S )N)   )rgba)rQ   rP   )rT   rR   rS   rU   rX   shapeviewra   uint8reshaperV   rW   rQ   rP   )imagerT   rh   s      r<   
to_rgba_xrz&assert_image_close.<locals>.to_rgba_xr   s    z 	&JtT\22 	&<%%D
yy""**54<88|DuzI'=elSSSSr>   r   )atolrtol)rV   rY   rZ   )image0image1	tolerancerm   da0da1s         r<   assert_image_closeru      sY    T T T *V

C
*V

CJsCia@@@@@r>   c              #  @   K   	 | V  | t          j        |           z   } )z4Returns contiguous list of floats from initial point)ra   spacingns    r<   floatsrz      s+      
1r>   c                    t           rkt          | t           j                  rQ	 |                     t          j                  S # t          $ r# |                     t          j                  cY S w xY w| j        S )zYGet numpy array of values from pandas-like Series, handling Series
    of different types)na_value)fillna)	rA   rS   Seriesto_numpyra   r   AttributeErrorto_arrayvalues)ss    r<   r   r      sz      
1dk** 	-::rv:... 	- 	- 	-::RV:,,,,,	- xs   A *A0/A0c                 R    t           rt          t          j        d           d S d S d S )Nz8cudf and/or cupy not available and DATASHADER_TEST_GPU=1)test_gpurA   pytestfail r>   r<   test_gpu_dependenciesr      s6     PDLNOOOOOP PLLr>   zDATASHADER_TEST_GPU not set)reasonc                 
   t          j        t                    5  t          j        dddgi          } t          j        |           }t          j        |d         |d         fd           d d d            d S # 1 swxY w Y   d S )Nr   r   r	   axis)r   raisesNotImplementedErrorr7   r8   rA   rB   concat)dfpdfcs     r<   test_cudf_concatr      s     
*	+	+ 2 2lC!Q=))s##SXs3x(q11112 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2s   AA88A<?A<dfc           
     R   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   rO   r   r   r"   r#   rf   r$   r%   )rV   rW   ra   arrayrP   rQ   r^   r   pointsdscountr   outs     r<   
test_countr      sJ   
,rx!Q!Q 0===$41 1 1C"c388#>>>"c388#>>>"c3

33S999
,rx!Q!Q 0===$41 1 1C"c388#>>>"c388#>>>>>r>   c           
        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 )	NTrO   r   r   r#   r%   Fr(   )rV   rW   ra   r   rP   rQ   r^   r   r   r   anyr   s     r<   test_anyr      s   
,rx$d| <==$41 1 1C"c3u66<<<"c3u66<<<"c3113777
,rx$e} =>>$41 1 1C"c3{(;(;<<cBBBBBr>   c           
     l   t          j        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          | j                                      d          d
          j        t          t                    }t          t                              | ddt          j        d                    |           t          t                              | ddt          j        d                    |           d S Nr.   r.   r
   r.   r   r   r   rO   r   r   r"   r#   r   r$   r%   )rV   rW   r   r"   rk   sumTrP   rQ   r^   r   r   r   ra   nansumr%   r   s     r<   test_sumr      >   
,vbf~~--i88<<!4<PPR$41 1 1C"c3u66<<<"c3u66<<<
,ry!7!7	!B!BKKKM$41 1 1C"c3u66<<<"c3u66<<<<<r>   c           
        t          j        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   r.   r   r   rO   r   r   r"   r#   r$   r%   )rV   rW   r   r#   rk   minastyper   rP   rQ   r^   r   r   r   r   s     r<   test_minr         
,vbf~~--i88<<!<DDKKDQQS$41 1 1C"c3u66<<<"c3u66<<<"c3u66<<<"c3u66<<<<<r>   c           
        t          j        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   )rV   rW   r   r#   rk   maxr   r   rP   rQ   r^   r   r   r   r   s     r<   test_maxr      r   r>   c                $   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   rf   r   r      r/            r	      r   r   r'   rx   )ra   r   r   ranger   r   r   min_nrc   rT   r   r   solutionry   r\   r   s        r<   
test_min_nr      s%   x2r1ac2S#r2r34OPr2q!S1Cc2r33OPR S SH1a[[ c chhr3RXkQ%?%?%?@@qqq!!!RaRx #(C(((66c!!!QQQ'l/"c3{H[H[1\1\1abbbc cr>   c                $   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 )Nrf   r   r   r   r   r   r   r   r   r   r/   r   r   r   r   r   r   r   r   r	   r   r   r   r'   rx   )ra   r   r   r   r   r   r   max_nrc   rT   r   r   s        r<   
test_max_nr      s%   x1aRc2RRc34OPaRS1BCc33OPR S SH1a[[ c chhr3RXkQ%?%?%?@@qqq!!!RaRx #(C(((66c!!!QQQ'l/"c3{H[H[1\1\1abbbc cr>   c                \   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	   r.      r   r   r   r   r   r
   r/   r   r      r   r   r   r   r	   r   r   r   r*   r"   r#   r$   r%   )ra   r   float64r   rc   r   r   r   byr   rT   r   sol_int	sol_floats      r<   test_categorical_minr   	  j   h'7'7'78<<<IYIYIY:Z[Z) ) )GAq#q>+;+;+;<|||M]M]M]>^_``Iahhr3RU626%==-I-IJJOQXYYYahhr3RU626%==-I-IJJOQXYYYahhr3RU626%==-I-IJJOQZ[[[ahhr3RU626%==-I-IJJOQZ[[[[[r>   c                \   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rf   r	   r.   r   r   r   r   r   r   	   r/   r   r   r   r      r   rf   r	   r   r   r   r*   r"   r#   r$   r%   )ra   r   r   r   rc   r   r   r   r   r   rT   r   s      r<   test_categorical_maxr     r   r>   c                   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   rf   r	   r   r   r   r   r   r   r   r
   r   r/   r   r   r   r   r   r   r   r   r*   r$   rx   .r   )ra   r   r   r   r   r   r   r   r   rc   rT   r   r   s        r<   test_categorical_min_nr        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[[ Y Yhhr3RU628EQ3G3G3G%H%HIIqqq!!!QQQ{##(C(((66c&k.hhr3RU626%==5Q5QRRWY Y YY Yr>   c                   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 )Nrf   r   r	   r   r   r   r   r   r   r   r   r
   r/   r   r   r   r   r   r   r   r   r*   r$   rx   r   )ra   r   r   r   r   r   r   r   r   rc   rT   r   r   s        r<   test_categorical_max_nr   .  r   r>   c           
         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*   )	ra   r   r   r   r   r   _min_row_indexrc   rT   r   r   r\   s      r<   test_categorical_min_row_indexr   =  z    x,,,(8(8(89LLLJZJZJZ;[\]]H
((2sCvr/@/B/B!C!C
D
DCch)))))r>   c           
         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*   )	ra   r   r   r   r   r   _max_row_indexrc   rT   r   s      r<   test_categorical_max_row_indexr   D  r   r>   c                b   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   rf   r   r	   r   r   r.   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r
   r   r   r/   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r	   r   r   r   r*   rx   r   )ra   r   r   r   r   r   r   _min_n_row_indexrc   rT   r   r   s        r<    test_categorical_min_n_row_indexr   K  w   x:::{{{KKKM'<<|||\\\RT&;;


KKKM'<<|||\\\RTU V VH 1a[[ _ _hhr3RU623F3K3K3K%L%LMMqqq!!!QQQ{##(C(((66c&k.hhr3RU62CTCVCV5W5WXX]_ _ __ _r>   c                b   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rf   r   r   r   r   r   r   r   r   r   r   r   r   r   r
   r   r   r   r   r   r   r   r   r   r	   r   r   r   r*   rx   r   )ra   r   r   r   r   r   r   _max_n_row_indexrc   rT   r   r   s        r<    test_categorical_max_n_row_indexr  Z  r   r>   c                ,   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   r/   r   )r   r   r   r   r	   r   r   r   r*   r'   )ra   r   r   r   r   r   r   r   firstrc   rT   r   r   ry   r\   s       r<   test_categorical_firstr  i  s    x1b#r*,,,.(..,,,./ 0 0H 1a[[ . .hhr3RU628K3H3H%I%IJJ#(H----. .r>   c                ,   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 )Nrf   r   r   )r   r   r   r   )r   r   r/   r   )r   r   r   r   r	   r   r   r   r*   r'   )ra   r   r   r   r   r   r   r   lastrc   rT   r
  s       r<   test_categorical_lastr  t  s    x1b#r*,,,.(..,,,./ 0 0H 1a[[ . .hhr3RU627;3G3G%H%HII#(H----. .r>   c                   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   rf   r   r   r   r   r   r   r   r   r   r   r/   r   r   r   r   r   r   r	   r   r   r   r*   r'   rx   r   )ra   r   r   r   r   r   r   r   first_nrc   rT   r	  r   s        r<   test_categorical_first_nr    s   xAq#;S#c3"cSVXS>Cc?RSMCQTVY?[]sC=2r3-!S#SRUWS>Cc?RcNSRUWZO\^_ ` `H 1a[[ a ahhr3RU62:kQ3O3O3O%P%PQQqqq!!!QQQ{##(C(((66c&k.hhr3RU628KCXCX5Y5YZZ_a a aa ar>   c                   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 )Nrf   r   r   r   r   r   r   r   r   r   r   r   r/   r   r   r   r   r   r   r	   r   r   r   r*   r'   rx   r   )ra   r   r   r   r   r   r   r   last_nrc   rT   r  r   s        r<   test_categorical_last_nr    s   xAq#;S#c3"cSVXS>Cc?RSMCQTVY?[]sC=2r3-!S#SRUWS>Cc?RcNSRUWZO\^_ ` `H 1a[[ ` `hhr3RU629[A3N3N3N%O%OPPqqq!!!QQQ{##(C(((66c&k.hhr3RU627;CWCW5X5XYY^` ` `` `r>   c                    t          j        ddgddggt          t                    }t	          t
                              | ddt          j        t          j	                    d                    |           d S )	Nr   r   r   r   rO   r   r   r'   )
rV   rW   rP   rQ   r^   r   r   r   wherer   r   s     r<   test_where_min_row_indexr    c    
,B"c+F
F
F
FC"c31B1D1Dk(R(RSSUXYYYYYr>   c                    t          j        ddgddggt          t                    }t	          t
                              | ddt          j        t          j	                    d                    |           d S )	Nrf   r   r   r   rO   r   r   r'   )
rV   rW   rP   rQ   r^   r   r   r   r  r   r   s     r<   test_where_max_row_indexr    r  r>   c                   t          j        ddt          dd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        t          j        |          d                    }|d d d d d |f         }t          ||j
                                                   t          d|                                           t          |j
        |           |dk    rft          |d d d d df         j
        t                              | ddt          j        t          j                    d                    j
                   #d S )Nr   r   r   rf   r   r   r   r   r   r   r/   r   r   r   r   r   r   r   r   r	   r   r   r   rx   r'    )ra   r   r   r   r   r   r   r  r   printrT   tolistrc   r   r   solry   r\   r   s        r<   test_where_min_n_row_indexr!       
(BbAs33S2s35Qq2s3Bb#s356 7 7C 1a[[ 	Y 	Yhhr3RXb.AA.F.F.F%T%TUU!!!QQQ(ma""###c3::<<   #(C(((66c!!!QQQ'l/hhr3')x0A0C0C['Q'QS SSWY Y Y	Y 	Yr>   c                   t          j        ddt          dd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        t          j        |          d                    }|d d d d d |f         }t          ||j
                                                   t          d|                                           t          |j
        |           |dk    rft          |d d d d df         j
        t                              | ddt          j        t          j                    d                    j
                   #d S )Nrf   r   r   r   r   r   r   r   r   r   r   r   r/   r   r   r   r   r   r   r	   r   r   r   rx   r'   r  )ra   r   r   r   r   r   r   r  r  r  rT   r  rc   r   r  s        r<   test_where_max_n_row_indexr$    r"  r>   c                   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
   rO   r   r   r"   r&   r#   r$   r%   r   )
rV   rW   rP   rQ   r^   r   r   r   r  r	  r   s     r<   test_where_firstr'    s    ,R2q'*6
E
E
EC"c3%)(L(LMMsSSS"c3%)(L(LMMsSSS"c3%)(L(LMMsSSS"c3%)(L(LMMsSSS ,B!R)&t
D
D
DC"c3%(A(ABBCHHH"c3%(A(ABBCHHH"c3%(A(ABBCHHH"c3%(A(ABBCHHHHHr>   c                   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	   rO   r   r   r"   r&   r#   r$   r%   rf   r   r   r   )
rV   rW   rP   rQ   r^   r   r   r   r  r  r   s     r<   test_where_lastr*    s    ,Q"a)&t
D
D
DC"c3(K(KLLcRRR"c3(K(KLLcRRR"c3(K(KLLcRRR"c3(K(KLLcRRR ,B!R)&t
D
D
DC"c3(@(@AA3GGG"c3(@(@AA3GGG"c3(@(@AA3GGG"c3(@(@AA3GGGGGr>   c                   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)  )
rV   rW   rP   rQ   r^   r   r   r   r  r   r   s     r<   test_where_maxr,    s   
,Q"a)&t
D
D
DC"c3	(J(JKKSQQQ"c3	(J(JKKSQQQ"c3	(J(JKKSQQQ"c3	(J(JKKSQQQ ,B!R)&t
D
D
DC"c3(?(?@@#FFF"c3(?(?@@#FFF"c3(?(?@@#FFF"c3(?(?@@#FFFFFr>   c                   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&  )
rV   rW   rP   rQ   r^   r   r   r   r  r   r   s     r<   test_where_minr.    s   
,R2q'*6
E
E
EC"c3	(J(JKKSQQQ"c3	(J(JKKSQQQ"c3	(J(JKKSQQQ"c3	(J(JKKSQQQ ,B!R)&t
D
D
DC"c3(?(?@@#FFF"c3(?(?@@#FFF"c3(?(?@@#FFF"c3(?(?@@#FFFFFr>   c                H   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	   r   rf   r   r   r   r   r   r   r   r   r
   r/   r   r   r   r   r   r   r   r   r   r   r   r/   r   r	   r   r   r   r'   rx   r&   )ra   r   rV   r  
logical_orr   r   r   r   r   r  rc   rT   r	  r   sol_rowindexsol_reversery   r\   r   s         r<   test_where_first_nr7    s0   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[[ Y Yhhr3RXbj.J.J.J%K%KLL111aaa!8$#(C(((66c!!!QQQ'l/hhr3RXbh{>S>S5T5TUUZ\ \ \ hhr3RXbj.J.J.JI%V%VWW!!!QQQ(##(C(((66c!!!QQQ'l/hhr3')x0E0Ey'Q'QS SSWY Y YY Yr>   c                H   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)rf   r   r	   r   r   r   r   r   r   r   r   r   r   r   r   r/   r
   r   r   r   r   r   r   r   r   r/   r   r	   r   r   r   r'   rx   r&   )ra   r   rV   r  r3  r   r   r   r   r   r  rc   rT   r  r4  s         r<   test_where_last_nr<  -  s0   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[[ X Xhhr3RXbiq.I.I.I%J%JKK111aaa!8$#(C(((66c!!!QQQ'l/hhr3RXbgk>R>R5S5STTY[ [ [ hhr3RXbiq.I.I.I9%U%UVV!!!QQQ(##(C(((66c!!!QQQ'l/hhr3')x0D0Di'P'PR RRVX X XX Xr>   c                H   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)rf   r   r	   r   r   r   )r   r   r   r   r   r   )r   r/   r
   r   r   r   )r   r   r   r   r   r   r   r/   r   r	   r   r   r   r'   rx   r&   )ra   r   rV   r  r3  r   r   r   r   r   r   rc   rT   r   r4  s         r<   test_where_max_nr>  I  s0   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[[ e ehhr3RXbh{a.H.H.H%I%IJJ111aaa!8$#(C(((66c!!!QQQ'l/"c3:<(26+CVCV:W:W2Y 2YY]_ _ _ hhr3RXbh{a.H.H.H)%T%TUU!!!QQQ(##(C(((66c!!!QQQ'l/hhr3RXbf[>Q>QS\5]5]^^ce e ee er>   c                H   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	   r   rf   r   r   )r   r   r   r   r   r   )r   r   r
   r/   r   r   )r   r   r   r   r   r   r   r/   r   r	   r   r   r   r'   rx   r&   )ra   r   rV   r  r3  r   r   r   r   r   r   rc   rT   r   r4  s         r<   test_where_min_nr@  d  s*   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[[ e ehhr3RXbh{a.H.H.H%I%IJJ111aaa!8$#(C(((66c!!!QQQ'l/hhr3RXbf[>Q>Q5R5RSSXZ Z Z hhr3RXbh{a.H.H.H)%T%TUU!!!QQQ(##(C(((66c!!!QQQ'l/hhr3RXbf[>Q>QS\5]5]^^ce e ee er>   c                ~   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_anyrB  r*   )r   by2rC  )r   r   r   summaryr   r^   r   r   )r   agg_summaryagg_byagg_max
agg_by_anyagg_by2s         r<   test_summary_byrJ    st    ((2sCruU||)D)D)DEEKXXb#sBE%LL11FT"F+++ ((2sCruU||P[I\I\)])])]^^Khhr3RVK%8%899GT"F+++U#W--- ((2sC{8K8KPRPUV[P\P\)])])]^^KT"F+++U#W--- ((2sCruU||BERWY[Y_YaYaLbLb)c)c)cddK"c3eRVXX(>(>??JT"F+++X&
333 ((2sCruU||v)W)W)WXXKhhr3RU6]]33GT"F+++U#W-----r>   c                   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        |           t
                              | ddt          j        t          j        t          j        dd                    t          j        t          j        dd          d                              }t          |d         j        |           t          |d         j        |           d S )N)r   r	   r   rf   r   )r   r   r   r   r   )r   r   r
   r/   r   )r   r   r   r   r   )rf   r   r	   r   r   )r   r   r   r   r   )r   r/   r
   r   r   )r   r   r   r   r   r   r/   r   r   r   r'   r
   r&   )r   r   r   ry   r   )r   r   r   )r   r   ry   r   uint32int64r   )max1max2rN  rO  )ra   r   r  r3  r   r   r   r   rD  r   r   r   rc   rP   arangerQ   r   rT   )r   sol_min_n_rowindexsol_max_n_rowindexsol_max_n_reverser\   s        r<   test_summary_where_nrT    s   $8$8$8$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 ((2sC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'):;;; ((2sCXbh{A..//Xbh{A..	::" " "  C c&k&(:;;;c&k&(9:::::r>   c                h   d}t          j        t          |          5  t                              | ddt          j        t          j        t          j        dd                    t          j        t          j	        dd                                         d d d            d S # 1 swxY w Y   d S )	NzKUsing multiple FloatingNReductions with different n values is not supportedmatchr   r   r'   r.   r   )r   r   )
r   r   
ValueErrorr   r   r   rD  r  r   r   )r   msgs     r<   test_summary_different_nrZ    s    
WC	z	-	-	-  	S#rz(28K3344(28K3344 
  
  
 	 	 	                 s   A<B''B+.B+c           
     l   t          j        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          | j                                      d          d
          j        t          t                    }t          t                              | ddt          j        d                    |           t          t                              | ddt          j        d                    |           d S r   )rV   rW   r   r"   rk   meanr   rP   rQ   r^   r   r   r   ra   nanmeanr%   r   s     r<   	test_meanr^    s>   
,vbf~~--i88==1D=QQS$41 1 1C"c377==="c377===
,rz&.."8"8"C"C!LLLN$41 1 1C"c377==="c377=====r>   c           
     l   t          j        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          | j                                      d          d
          j        t          t                    }t          t                              | ddt          j        d                    |           t          t                              | ddt          j        d                    |           d S r   )rV   rW   r   r"   rk   varr   rP   rQ   r^   r   r   r   ra   nanvarr%   r   s     r<   test_varrb    r   r>   c           
     l   t          j        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          | j                                      d          d
          j        t          t                    }t          t                              | ddt          j        d                    |           t          t                              | ddt          j        d                    |           d S r   )rV   rW   r   r"   rk   stdr   rP   rQ   r^   r   r   r   ra   nanstdr%   r   s     r<   test_stdrf    r   r>   c                z   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           d S )Nr
   r   r   r   r   r   r
   r   r   r
   r   r   r   r   r   r
   r   r)   rO   r   r   rD   Tr]   )ra   r   rV   rW   rP   rQ   r   r   r   	count_catr^   rc   rH   rI   r   r   r   r\   s       r<   test_count_catro    s    
(\\\!\\#!\\!\\#$ % %C ,s6-A-A-A,B#B$RWQX.
Z
Z
ZC
((2sCe!4!4
5
5Ccck66666ck6666666r>   c                R   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          j
        d
                              }t          ||           t                              | dd	t          j        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
                                        }t          ||           d S )Nrh  ri  rj  rk  r   r)   rO   r   r   r"   )namerq  rf   r,   r   modulooffset)ra   r   rV   rW   rP   rQ   r   r   r   r   r   r^   rD  r   category_modulo)r   r   r   r\   datasets        r<   test_categorical_countrw    sy   
(\\\!\\#!\\!\\#$ % %C ,s6-A-A-A,B#B$RWQX.
Z
Z
ZC
((2sCubhuoo!>!>
?
?Cc hhr3RZRU5"(5//5R5R%S%S%STTG#&&& ,s6U1XXJ#6di[>P
R
R
RC
((2sC5+IaKKKRXZZXXZ ZCcr>   c                   t          | d                                                   dk    sJ t          j        dgdggdgdggg          }t	          j        |t          dggz   t          dgz             }t          	                    | ddt          j        dt          j        d                              }|j        d	k    sJ t          ||           d S )
Nr+   r	   r
   r   rO   r   r   r"   )r.   r.   r	   )lenuniquera   r   rV   rW   rP   rQ   r   r   r   r   r   rh   r^   rn  s       r<   test_one_categoryr{    s     r(|""$$%%****
(aS1#J!qc
+
,
,C
,s6eWI#5TXJ=N
P
P
PC
((2sCx%!A!A
B
BC9	!!!!cr>   c                $   t          j        g dg dgg dg dgg          }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          ||           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          ||           d S )Nrh  ri  rj  rk  r   r.   r   )r"   r#   r
   rO   r   r   r   rf   r   r   r   r	   )r   r   rf   r$   r%   )ra   r   appendrV   rW   rP   r   rQ   r   r   r   r   category_binningr   r^   r   r   colr   r\   s        r<   test_categorical_count_binningr  #  s   
(\\\!\\#!\\!\\#$ % %C )CA3*qcA3Z0q
9
9
9C   l3vq
':$#,PPPhhr3RU2+>sAr1+M+Mrxzz%Z%Z[[S# CLCL  l3vq
':$#,PPPhhr3RU2+>sAr1+M+Mrxzz%Z%Z[[S# r>   c                   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)   rO   r   r   r"   r#   rf   r,   rr         @      N@     A@     @U@r$   r%   )ra   r   r   rV   rW   rP   rQ   r   r   r   r   r   r^   r   ru  rn  s       r<   test_categorical_sumr  ?  s   
(r3S)3S)+BS)3b)+, - -C ,s6-A-A-A,B#B$RWQX.
Z
Z
ZC
((2sCubfUmm!<!<
=
=Cc
((2sCubfUmm!<!<
=
=Cc ,s6U1XXJ#6di[>P
R
R
RC
((2sC5+IaKKKRVTY]][[] ]Cc
((2sC5+IaKKKRVTY]][[] ]Cc
(cC#,C,.4#,C#t,./ 0 0C ,s6-A-A-A,B#B$RWQX.
Z
Z
ZC
((2sCubfUmm!<!<
=
=Cc
((2sCubfUmm!<!<
=
=Ccr>   c                   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          ||           t!          |j        dd           t!          |j        dd           d S )Nr  r  r  r  r.   r   r~  r
   rO   r   r   r   r   rf   rD   Trl  )ra   r   r   r  rV   rW   rP   r   rQ   r   r   r   r   r  r   r^   rc   rH   rI   r  s        r<   test_categorical_sum_binningr  c  s>   
(cC#,C,.4#,C#t,./ 0 0C
 )CC53%.3%#8q
A
A
AC ; ;l3vq
':$#,PPPhhr3RU2+>sAr1+M+MrvVY{{%[%[\\S##+vT::::#+vT:::::; ;r>   c                   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          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 )Nrf   r   r   r   r   r)   rO   r   r   r"   r,   r   rr  r#   )ra   r   r   rV   rW   rP   rQ   r   r   r   r   r   r^   r   ru  rn  s       r<   test_categorical_max2r  t  s   
(3S)3S)+QS)3b)+, - -C ,s6-A-A-A,B#B$RWQX.
Z
Z
ZC
((2sCubfUmm!<!<
=
=Cc ,s6U1XXJ#6di[>P
R
R
RC
((2sC5+IaKKKRVTY]][[] ]Cc
((2sC5+IaKKKRVTY]][[] ]Ccr>   c                   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 )Nrf   r   r   r   r.   r   r~  r
   rO   r   r   r   r   )ra   r   r   r  rV   rW   rP   r   rQ   r   r   r   r   r  r   r^   r  s        r<   test_categorical_max_binningr    s   
(3S)3S)+QS)3b)+, - -C
 )CC53%.3%#8q
A
A
AC  l3vq
':$#,PPPhhr3RU2+>sAr1+M+MrvVY{{%[%[\\S# r>   c                x   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 )Nr.   r   r   r   r   r)   rO   r   r   r$   r%   rf   r,   r   rr  r"   r#   )ra   r   r   rV   rW   rP   rQ   r   r   r   r   r\  r^   r   ru  rn  s       r<   test_categorical_meanr    s   
(3S)3S)+QS)3b)+, - -C ,s6-A-A-A,B#B$RWQX.
Z
Z
ZC
((2sCubgenn!=!=
>
>Cc
((2sCubgenn!=!=
>
>Cc ,s6U1XXJ#6di[>P
R
R
RC
((2sC5+IaKKKRWUZ^^\\^ ^Cc
((2sC5+IaKKKRWUZ^^\\^ ^Ccr>   c                   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 )Nr.   r   r   r   r   r~  r
   rO   r   r   r   r   rf   )ra   r   r   r  rV   rW   rP   r   rQ   r   r   r   r   r  r\  r^   r  s        r<   test_categorical_mean_binningr    s   
(3S)3S)+QS)3b)+, - -C
 )CC53%.3%#8q
A
A
AC  l3vq
':$#,PPPhhr3RU2+>sAr1+M+MrwWZ||%\%\]]S# r>   c                *   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 N      @       @r   r)   rO   r   r   r$   Tr%   rf   r,   r   rr  r.   r   r~  r
   r   r   )ra   r   r   rV   rW   rP   rQ   r   r   r   r   r`  r^   r   ru  r  r  r   r   r   r\   r  s        r<   test_categorical_varr    s   
(sS3-SB-/b3-S3"-/0 1 1C ,s6-A-A-A,B#B$RWQX.
Z
Z
ZC
((2sCubfUmm!<!<
=
=Cc4   
((2sCubfUmm!<!<
=
=Cc4    ,s6U1XXJ#6di[>P
R
R
RC
((2sC5+IaKKKRVTY]][[] ]Cc
((2sC5+IaKKKRVTY]][[] ]Cc
)CC53%.3%#8q
A
A
AC  l3vq
':$#,PPPhhr3RU2+>sAr1+M+MrvVY{{%[%[\\S# r>   c                N   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 r  )ra   sqrtr   r   rV   rW   rP   rQ   r   r   r   r   rd  r^   r   ru  r  r  r  s        r<   test_categorical_stdr    s   
'"(sS	!S	!	#"sS	!sb	!	#$ % %  C ,s6-A-A-A,B#B$RWQX.
Z
Z
ZC
((2sCubfUmm!<!<
=
=Cc4   
((2sCubfUmm!<!<
=
=Cc4    ,s6U1XXJ#6di[>P
R
R
RC
((2sC5+IaKKKRVTY]][[] ]Cc
((2sC5+IaKKKRVTY]][[] ]Cc
)CC53%.3%#8q
A
A
AC  l3vq
':$#,PPPhhr3RU2+>sAr1+M+MrvVY{{%[%[\\S# r>   c           
     <   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   rO   r   r   r"   r#   r$   r%   )	rV   rW   rP   rQ   r^   r   r   r   r	  r   s     r<   
test_firstr    s    
,B!R)&t
D
D
DC"c388#>>>"c388#>>>"c388#>>>"c388#>>>>>r>   c           
     <   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 )Nrf   r   r   r   rO   r   r   r"   r#   r$   r%   )	rV   rW   rP   rQ   r^   r   r   r   r  r   s     r<   	test_lastr    s    
,B!R)&t
D
D
DC"c377==="c377==="c377==="c377=====r>   c                $   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   rf   r   r   r   r   r   r   r/   r   r   r   r   r   r   r   r   r	   r   r   r   r'   rx   )ra   r   r   r   r   r   r   r  rc   rT   r	  r   s        r<   test_first_nr    s&   x1b"ac2Rb#r34OPq"aS1CS"c33OPR S SH1a[[ e ehhr3RZq%A%A%ABBqqq!!!RaRx #(C(((66c!!!QQQ'l/"c3Q\H]H]1^1^1cddde er>   c                $   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 )Nrf   r   r   r   r   r   r   r   r   r   r   r   r/   r   r   r   r   r   r   r	   r   r   r   r'   rx   )ra   r   r   r   r   r   r   r  rc   rT   r  r   s        r<   test_last_nr  $  s&   x1b"ac2Rb#r34OPq"aS1CS"c33OPR S SH1a[[ d dhhr3RY{a%@%@%@AAqqq!!!RaRx #(C(((66c!!!QQQ'l/"c3P[H\H\1]1]1bcccd dr>   c                    t          j        ddgddggt          t                    }t                              | ddt          j                              }|j        t          j
        k    sJ t          ||           d S )Nr   r   r
   r   rO   r   r   )rV   rW   rP   rQ   r   r   r   r   r   ra   rM  r^   r   r   r\   s      r<   test_min_row_indexr  0  p    
,B!R)&t
D
D
DC
((2sC!2!4!4
5
5C9    cr>   c                    t          j        ddgddggt          t                    }t                              | ddt          j                              }|j        t          j
        k    sJ t          ||           d S )Nrf   r   r   r   rO   r   r   )rV   rW   rP   rQ   r   r   r   r   r   ra   rM  r^   r  s      r<   test_max_row_indexr  8  r  r>   c                   t          j        g dg dgg dg dgg          }t          dd          D ]}t                              | ddt          j        |	                    }|j        t           j        k    s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	   r.   r   rf   r   r0  r1  r2  r	   r   r   r   rx   r   )ra   r   r   r   r   r   r   r   rM  rc   rT   r   r   s        r<   test_min_n_row_indexr  @     x---/G/G/GH---/G/G/GHJ K KH1a[[ c chhr3R%81%=%=%=>>yBH$$$$qqq!!!RaRx #(C(((66c!!!QQQ'l/"c3HYH[H[1\1\1abbbc cr>   c                   t          j        g dg dgg dg dgg          }t          dd          D ]}t                              | ddt          j        |	                    }|j        t           j        k    s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)rf   r   r.   r	   r   r   r9  r:  r;  r	   r   r   r   rx   r   )ra   r   r   r   r   r   r  r   rM  rc   rT   r   r   s        r<   test_max_n_row_indexr  M  r  r>   c                   t                               | ddt          j        t          j        d          t          j        d          t          j        d                              }d }t          |j         |t          j
        t          | j                                      d          d	          j                             t          |j         |t          | j                                      d                              dd
          j                             t          |j         |t          j        ddgddggd                               d S )Nr   r   r%   r"   )f64_meani32_sum	i32_countc                D    t          j        | t          t                    S )NrO   )rV   rW   rP   rQ   )r   s    r<   fz#test_multiple_aggregates.<locals>.fa  s    |Af48888r>   r   r.   r   r   r   r
   r   r   )r   r   r   rD  r\  r   r   r^   r  ra   r]  r   r%   rk   r   r  r"   r  r   )r   r\   r  s      r<   test_multiple_aggregatesr  Z  s*   
((2sC:rwu~~&(fUmm(*9 9 9: :C
9 9 9qqF26NN,B,B9,M,MTU!V!V!V!XYYZZZaarv 6 6y A A E E1TX E Y Y [\\]]]"(QFQF+;4"H"H"H I IJJJJJr>   r8   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   rF   rG   r   r   r  r	   )r   r   Trl  r   )r
   r
   rf   r.   r   r   r   r   r   )r   r   )r/   r/   )r   r   )ra   rP  r   Canvasr   r   zerosintfill_diagonalrc   rT   rH   rI   r   tupler   )r8   ry   rT   r   cvsr\   r   s          r<   test_auto_range_pointsr  h  s   
A9Qd###D	BIaLL  
  
 B )qa
0
0
0C
**Rc28F#3#3
4
4C
(Aq63

CS!ch$$$ck66666ck66666
)qs!
4
4
4C
**Rc28F#3#3
4
4C
(AaC1:s
#
#CS!CIch$$$ck66666ck66666	A9Qd###D	BIaLL  
  
 B )qs!
4
4
4C
**Rc28F#3#3
4
4C
(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
**Rc28F#3#3
4
4C
(AaCE1Q3q5>3
'
'CCICICICIch$$$ck66666ck6666666r>   c            
     p   d} t          j        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   r.   r   r   r   r   r   r  r   rD   )rF   rG   rI   r   r   r  r   r   )r   d   Trl  )r7   r8   ra   onesconcatenaterP  r   r  r   r   r   rc   rT   rH   rI   )ry   r   r  r\   r   s        r<   test_uniform_pointsr    sC   A	rwqs$777NBIat,D,D,D,.Iat,D,D,D,F G GNRD1HrdQh+?@@B B 
C 
CB
 )rq&
A
A
AC
**Rc28F#3#3
4
4C
(RD1HtObTAX_5T
B
B
BCch$$$ck848888ck6666666r>   high)r   r   c   r  lowc                p   | |f}||}}|d         |d         z
  }|d         |d         z
  }||z  }t          j        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   r  r.   rE   r   r   r  Trl  )r7   r8   ra   r  r   rP  flattenr   r  r   r   rT   diagonalr   absrc   rH   rI   )r  r  boundsrH   rI   widthheightry   r   r  r\   r  s               r<   test_uniform_diagonal_pointsr    s    4[FvWGAJ#EQZ'!*$FA	rwq555Hbi&E&E&E%F%NOOWWYYHbi&E&E&E%F%OPPXXZZ\ \ 
] 
]B )qa'
R
R
RC
**Rc28F#3#3
4
4Cx  ##Hx==Avay6!9$%%)S!t1ChqkTXFX1X-Y-YYYYYckC;d;;;;ckC;d;;;;;;r>   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 )NrJ   r.   rD   r
   r   r   r   r    rO   r"   r!   r   )r   coreLogAxiscompute_indexcompute_scale_and_translate
LinearAxisra   r   rV   rW   r^   c_logxr   r   c_logyc_logxyr   r   	logcoords	lincoordsr   r   s         r<   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r7C%AA3GGG
,sIy#9$cN, , ,Cr3%AA3GGG
,sIy#9$g.0 0 0CGWbhuooFFLLLLLr>   zspatialpandas not installedc                    t           j                                        } |                     |                     dd          d          }t          j        t          j        ddgddgddgddgddgddggd          g 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!          ||           t#          |j        dd           t#          |j        dd           |j        j        j        J |j        j        j         |
                    |dt          j        d                    }t!          ||           t#          |j        dd           t#          |j        dd           d S )Nr   r  r   r   r	   r.   zPoint[float64]r   )r	   r.   r.   r   r   r   geomvr  r  r  geometryr\   r   r   r   r   r   r   rO   r   r.   Trl  r   r  r  r  r  r5   r6   r7   r   r  r   r   ra   r   rV   rW   r^   rc   rH   rI   r  _sindexsindexr   r  r   r  r\   r   r   s          r<   test_points_geometry_pointr    s   7D""4#C#CHa#P#PRSTTI	VaVaVaVaVaV<DTV V V  
 
B )qa
0
0
0C
**R&bfSkk*
:
:C
(QSMSMKK!(13 3 3C ,sIy#9 #J( ( (Ccck66666ck66666 7= ((( GM
**R&bfSkk*
:
:Ccck66666ck6666666r>   c                    t           j                                        } |                     |                     dd          d          }t          j        t          j        ddgg dg dgd          g 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!          ||           t#          |j        dd           t#          |j        dd           |j        j        j        J |j        j        j         |
                    |dt          j        d                    }t!          ||           t#          |j        dd           t#          |j        dd           d S )Nr  r   r   )r   r	   r	   r	   )r   r.   r	   r.   r.   r.   zMultiPoint[float64]r   r	   r.   r   r  r  r  r  r  r	   r.   r  r   r   r   rO   r  Trl  r  r  s          r<   test_points_geometry_multipointr    s   7D""4#C#CHa#P#PRSTTI	V\\\#5#5#56>SU U UYY  
 
B )qa
0
0
0C
**R&bfSkk*
:
:C
(QSMSMKK!(13 3 3C ,sIy#9 #J( ( (Ccck66666ck66666 7= ((( GM
**R&bfSkk*
:
:Ccck66666ck6666666r>   c            
     V   t           j                                        } |                     |                     dd          d          }t          j        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            @r   )rf   r   r   gffffffr   r   r   r   rf   )r   r  r   r	   r.    @rf   r      rf   r   r   r   r   r   rE   r   r   r   r   r	   r   r	   r   r   r   r	   r   r   r   r	   r   r	   r   r   r   r   r   r	   r   r   r   r   r   r   r   )r   r.   r   r   r   r	   r   r   r   rO   Trl  r   r  r  r  r  r7   r8   r  liner   ra   r   rV   rW   r^   rc   rH   rI   r  s          r<   	test_liner    ss   7D""4#C#CIq#Q#QSTUUI	EEEBBBD D 
E 
EB
)qa#W6 6 6C
((2sC
,
,C
()))))))))))))))))))))+ 378 8 8C ,sIy#9 #J( ( (Ccck7$7777ck7$777777r>   c                 |   t          j        t          g dg d                    } t          j        dddd          }|                    | ddt          j                    	          }t          j        g d
g dg dgd          }t          j
        |dg dfdg dfgddg          }t          ||           d S )N)r         ?皙?      ?皙@r   r   r   )r   r   r   r   r   r   r   r   r  r   r  rE   r   r   r\   )r.   r.   r.   r}  )r	   r   r	   int32r   r  r	  r  rO   )r7   r8   dictr   r  r   r   ra   r   rV   rW   r^   r   canvasr\   r   r   s        r<   test_points_on_edger  1  s    	d===5557 7 7 
8 
8B Y!%v7 7 7F --C"(**-
5
5C
(IIIIIII&-/ / /C ,s #___5 #___57 #J( ( (C
 cr>   c                 |   t          j        t          g dg d                    } t          j        dddd          }|                    | ddt          j                    	          }t          j        g d
g dg d
gd          }t          j
        |dg dfdg dfgddg          }t          ||           d S )N)r   r   r   r   )r   r   r   r   r  r   r  rE   r   r   r  )r	   r	   r	   r   r   r	   r  r   r  rO   )r7   r8   r  r   r  r  r   ra   r   rV   rW   r^   r  s        r<   test_lines_on_edger  E  s    	d\\\)\\+ + + 
, 
,B Y!%v7 7 7F ++b#s

+
3
3C
(IIIIIII&-/ / /C ,s #___5 #___57 #J( ( (C
 cr>   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 )NrJ   r.   rD   rf   r
   r   r   r   r    rO   r"   r!   r   )r   r  r  r  r  r  ra   r   rV   rW   r^   r  r  r   r  r  r  s         r<   test_log_axis_liner  Y  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R#rx??EEE
,sIy#9$cN, , ,CRgrx??EEE
,sIy#9$g.0 0 0Cb'7BHUOODDcJJJJJr>   c                 T   t          j        dddd          } t          j        t	          g dg dg d                    }|                     |d	d
dgt          j                    d          }t                              t          	                    dd          d          }t                              t          	                    dd          d          }t          j        g dg dg dg dg dgd          }t          j        |||gdd	g          }t          ||           d S )Nr
   r	   r   rD   rE   r  )r   r   r   )r   g{Gz?g{Gz?r   y0y1r   r  r  r	   )r\   r   )r   r   )r	   r   r	   r   r	   )r   r   r   r   r   r   r   r   rO   )r   r  r7   r8   r  r  r   r   r  r  ra   r   rV   rW   r^   )r  r   r\   xcoordsycoordsr   r   s          r<   test_subpixel_line_startr  m  s9   
)qa
P
P
PC	dYYY????P?P?PQQQ	R	RB
((2sT4Lbhjjq(
A
AC  !A!A'1!M!MqQQG  !A!A&!!L!LaPPG
(   C ,Wg&c3Z  C cr>   c                 F   t           j                                        } |                     |                     dd          d          }t          j        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  r  r   r   )r   r   r	   r   r   )r   r	   r   r	   r   )r.   r   r   r   r	   r   r   rO   )r   r   Trl  r  r  s          r<   test_auto_range_liner!    sH   7D""4#C#CKQR#S#SUVWWI	3333335 5 
6 
6B
)qa
0
0
0C
((2sC
,
,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9r>   zgeom_data,geom_type)r   r   r	   r	   r.   r   r   r   r  	multilineringpolygonmultipolygonc                   t          j        dt          j        | g|          i          }t          j        dd          }|                    |dt          j                              }t                              t          	                    dd          d          }t                              t          	                    dd          d          }t          j        g dg d	g d
g dg          }t          j        |||gddg          }|                    d          rd|d<   t          ||           t!          |j        dd           t!          |j        dd           d S )Nr  r   rf   r  r  )r   r.   )r   r	   )r	   r	   r	   r	   r   r	   r   r	   r   r	   r	   r   )r   r   r	   r   r   r   rO   r  r.   r  r  Trl  rD   )r5   r6   	GeoSeriesr   r  r  r   r   r  r  ra   r   rV   rW   endswithr^   rc   rH   rI   )		geom_data	geom_typegdfr  r\   coords_xcoords_yr   r   s	            r<   test_closed_ring_liner0    se    /	R\9+Y???@ C )qa
0
0
0C
((3(
<
<C!!$"B"B7A"N"NPQRRH!!$"B"B7A"N"NPQRRH
(	  C ,sHh#7sCj
I
I
IC&!!  D	cck66666ck6666666r>   c                    t          j        g dg dd          } 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        g dg dd          } 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g dg dg d g d g
d          }t
          j                            t          j	        |
                    d          d!z                       d          j                  d"dddf         |           dS )#zAssert that when two triangles share an edge that would normally get
    double-drawn, the edge is only drawn for the rightmost (or bottommost)
    triangle.
    rf   r	   r
   r
   r
   rf   rf   r
   r
   r
   rf   rf   r  r   r   r	   rf   r.   r
   v0v1v2valr   r   r
   rE   r   r   r   r   r   r   r	   r	   r	   r	   r	   r	   r	   r	   r	   r	   r	   r	   r	   r	   r   r   r   r   r   r   r   r   r   r	   r	   r	   r	   r	   r	   r	   r	   r	   r	   r.   r   r   r   r   r   r   r   r   r   r   r   r   r	   r	   r	   r	   r	   r	   r.   r.   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r	   r	   r.   r.   r.   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   N)r   r   r	   r	   r   r   )rf   r	   rf   rf   r
   rf      r   r   )r   r   r   r   r   r   r	   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r	   r	   r	   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r   r7   r8   r   r  trimeshra   r   rY   assert_array_equalflipudr}   r   r   vertstrisr  r\   r   s        r<   test_trimesh_no_double_edgerH    s    L1111113 3 4 4E<1vaVAq61a&QQRRD
)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 L1111113 3 4 4E<1vaVAq61a&QQRRD
)rr7G
T
T
TC
++eT
"
"C
(DDDDDDDDDDDDDDDDDDDDDDDDDDDDDD   C J!!")SZZ]]S-@,H,H,N,N,U"V"VWYZ\W\^a_a^aWa"b"%' ' ' ' 'r>   c                    t          j        g dg dd          } t          j        dgdgdgdgd          }t          j        ddd	d	
          }|                    | |          }t          j        g dg dg dg dg dg dg dg dg dg dg
d          }t
          j                            t          j	        |
                    d                              d          j                  |           t          j        g dg dg dd          } t          j        ddd	d	
          }|                    | |          }t          j        g dg dg dg dg dg dg dg dg dg dg
d          }t
          j                            t          j	        |
                    d                              d          j                  |           dS )zLAssert that triangles are interpolated when vertex values are provided.
    )r   r
   r   )r   r   r   r  r   r	   r.   r4  r   r@  rE   )
r   r   r   r   r   r   r   r   r   r   )
r   r   r   r   r	   r	   r   r   r   r   )
r   r   r   r	   r	   r	   r	   r   r   r   )
r   r   r	   r	   r	   r	   r	   r	   r   r   )
r   r	   r	   r	   r	   r	   r	   r	   r	   r   )
r	   r	   r	   r	   r	   r	   r	   r	   r	   r	   r   r   )r	   r
   r   r   r   z)
r   r   r   r   rf   rf   r   r   r   r   )
r   r   r   r   r   rf   rf   r   r   r   )
r   r   r   r   r   r   r   r   r   r   )
r   r   r.   r   r   r   r   r   r   r   )
r   r   r.   r.   r.   r   r   r   r   r   )
r   r.   r.   r.   r.   r.   r   r   r   r   )
r   r	   r	   r.   r.   r.   r.   r.   r   r   )
r	   r	   r	   r	   r.   r.   r.   r.   r.   r   NrA  rE  s        r<   test_trimesh_interprL    sY    Lzzz)zz+ + , ,E<s1#aS!"% % & &D
)rr7G
T
T
TC
++eT
"
"C
(&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&   C J!!")CJJqMM,@,@,F,F,M"N"NPSTTTLzzz)zz(yy* * + +E )rr7G
T
T
TC
++eT
"
"C
(&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&   C J!!")CJJqMM,@,@,F,F,M"N"NPSTTTTTr>   c                    t          j        g dg dd          } 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        g dg dd          } 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	         |           dS )z;Assert that weighting the simplices works as expected.
    r2  r3  r  r   r   r	   rf   r.   r
   r        @r4  r   r9  rE   r   r   r   r   r   r   r.   r.   r.   r.   r.   r.   r.   r.   r.   r.   r.   r.   r.   r.   )r   r   r   r   r   r   r   r   r   r.   r.   r.   r.   r.   r.   r.   r.   r.   r.   rf   )r   r   r   r   r   r   r   r   r   r   r   r   r.   r.   r.   r.   r.   r.   rf   rf   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r.   r.   rf   rf   rf   r>  r   r   Nr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rf   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rf   rf   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rf   rf   rf   rA  rE  s        r<   test_trimesh_simplex_weightsrT    s@    L1111113 3 4 4E<1vaVAq62r(SSTTD
)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 L1111113 3 4 4E<1vaVAq61a&QQRRD
)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XXr>   c                    t          j        g dg dg ddg d          } t          j        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          j                  dd         |           t          j        g dg dg ddg d          } t          j        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         |           dS ) z:Assert that weighting the vertices works as expected.
    r2  r3  r   r   r   r  r  r  rJ  columnsr   r   r	   rf   r.   r
   r5  r6  r7  r   r9  rE   r:  r;  r<  r=  r>  r   r   r   N)r.   r.   r.   r   r   r   )r   r   r8  rO  )r   r   r   r   r   r   r   r   r   r.   r.   r.   r.   r.   r.   r.   r.   r.   r.   r   )r   r   r   r   r   r   r   r   r   r   r   r   r.   r.   r.   r.   r.   r.   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r.   r.   r   r   r   r   )r7   r8   r   r  rB  ra   r   rY   rC  rD  r}   r   r   rE  s        r<   test_trimesh_vertex_weightsrZ  .  sZ    L1111117779 9BQ//S S SE <1vaVAq6BBCCD
)rr66
R
R
RC
++eT
"
"C
(DDDDDDDDDDDDDDD   C J!!")CJJrNN,A"B"B2A2"FLLL L111111!3!3!35 5>O>O>OQ Q QE <1vaVAq6BBCCD
)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XXr>   c                    t          j        g dg dd          } 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        g dg dd          } t          j        ddgddgdd	gddgd
          }t          j        dddd          }|                    | |          }t
          j                            t          j	        |
                    d                              d          j                  dd         |           dS )z2Assert that CCW windings get converted to CW.
    r2  r3  r  r   r   r.   r
   r	   rf   r4  r   r9  rE   rP  rQ  rR  rS  r>  r   r   Nr  rN  rA  rE  s        r<   test_trimesh_winding_detectr\  Q  s    L1111113 3 4 4E<1vaVAq61a&QQRRD
)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 L1111113 3 4 4E<1vaVAq62r(SSTTD
)rr66
R
R
RC
++eT
"
"CJ!!")CJJqMM,@,@,F,F,M"N"NrPQr"RTWXXXXXr>   c                 4   t          j        g dg dg ddg d          } t          j        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          j                  dd         |           t          j                            | |          }t          j        dddd          }|                    | dd         |dd         |          }t
          j                            t          j	        |
                    d          j                  dd         |           dS )zAssert that the ``mesh`` argument results in the same rasterization,
    despite the ``vertices`` and ``simplices`` arguments changing.
    r2  r3  rV  rJ  rW  r   r   r	   rf   r.   r
   rY  r   r9  rE   r:  r;  r<  r=  r>  r   r   r   N)mesh)r7   r8   r   r  rB  ra   r   rY   rC  rD  r}   r   utilsr^  )rF  rG  r  r\   r   r^  s         r<   test_trimesh_meshargr`  k  s   
 L1111117779 9BQ//S S SE <1vaVAq6BBCCD
)rr66
R
R
RC
++eT
"
"C
(DDDDDDDDDDDDDDD   C J!!")CJJrNN,A"B"B2A2"FLLL8==%%D
)rr66
R
R
RC
++eBQBibqb+
5
5CJ!!")CJJrNN,A"B"B2A2"FLLLLLr>   c                    t          j        g dg ddddg          } t          j        ddgddgd	d
gddgdg d          }t          j        dd          }|                    | |t          j        d                    }|j        dk    sJ t          |j        dd           t          |j	        dd           dS )zRAssert that the trimesh aggregation API properly handles weights on the simplices.)r	   r   rf   r   r   )r.   r	   r.   r	   rf   r  r   r   rW  rf   r	   r.   r   g:VS?g] w?)n1n2n3weightr@  )rH   rI   re  r  )X  rf  Trl  N)
r7   r8   r   r  rB  r\  rh   rc   rH   rI   )ptsrG  r  r\   s       r<   test_trimesh_agg_apirh    s    
,___,__. . #Sz+ + +C <1v !1v !1v$.	#:< < != < <	> > >D
 )GW
5
5
5C
++c4RWX%6%6+
7
7C9
""""ck7$7777ck7$777777r>   c            	        t          j        ddgddgdddg          } d	}d
}t          j        ||dd          }|                    | ddt          j                              }t          j        |j        dk              \  }}t          j	        |t          j
        dd                    sJ t          j	        |t          j        dgt          |          z                      sJ d S )Ng%ZAgZAg!
XMgI|@)TimerT   rj  rT   rW  )g8nAg砳A)gG&lg"w|@i,  i  )rH   rI   rG   rF   r  r	   I   iN  )r7   r8   r   r  r  r   ra   r  r   array_equalrP  r   ry  )r   rH   rI   r  r\   yixis          r<   test_bug_570ro    s    	#%78"$56  
! 
! 
!B
 7G6G
)GW #6 6 6C
((2vv28::(
6
6C XcjAo&&FB>"biC0011111>"bhus2ww778888888r>   rf   r  )x0x1x2r  r  y2rp  rq  rr  r  r  rs  )r   r   r   r  r   rf   r  )r   r  r   )r   rf   r   )rp  rq  r  r  rp  rq  r  r  r   r  r   rf   Ragged[float32]r  r   rf   r   r  )rf   r   r   r  )r   r  r  r   r   rf   rf   r   zLine[float32])r  zdf_args,cvs_kwargsc           
     r   t           r| t          u rt          t          |d                             dg           dd          t
                    sEt          rRt          t          |d                             dg           dd          t                    rt          j	        d            | |dd|v i}t          j                                        }|                    |                    d	d
          d
          }t          j        d
d
dd          } |j        |fdt          j                    i|}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  .cudf DataFrames do not support extension typesr3   r  r  r   r  rE   r\   r  r   r  r  r   r   r   rO   Trl  )rA   rC   rS   getattrgetr   r5   r1   r   skipr   r  r  r  r  r  r  r   ra   r   rV   rW   r^   rc   rH   rI   )
r8   df_args
cvs_kwargsr   r   r  r  r\   r   r   s
             r<   test_line_manual_ranger    s     J	^++wwqz~~c266DDkRR 	J	J!GAJNN6266DDi 	J
 KHIII	'	:zZ/	:	:B7D""((A66; ;I )qa#W6 6 6C #(2
4
428::
4
4
4C
()))))))))))))))))))))+ 378 8 8C ,sIy#9 #J( ( (Ccck7$7777ck7$777777r>   )r   r  r  r   r   rf   )r   r  rf   r   r   rf   
line_widthc                   t           r| t          u rt          t          |d                             dg           dd          t
                    sEt          rRt          t          |d                             dg           dd          t                    rt          j	        d           |dk    rt          j	        d            | |dd	|v i}t          j                                        }|                    |                    d
d          d          }t          j        dd          } |j        |ft          j                    |d|}|dk    r[t%          j        t$          j        t$          j        t$          j        dddt$          j        t$          j        t$          j        g	t$          j        t$          j        ddt$          j        ddt$          j        t$          j        g	t$          j        ddt$          j        t$          j        t$          j        ddt$          j        g	ddt$          j        t$          j        t$          j        t$          j        t$          j        ddg	dt$          j        t$          j        t$          j        t$          j        t$          j        t$          j        t$          j        dg	ddt$          j        t$          j        t$          j        t$          j        t$          j        ddg	t$          j        ddt$          j        t$          j        t$          j        ddt$          j        g	t$          j        t$          j        ddt$          j        ddt$          j        t$          j        g	t$          j        t$          j        t$          j        dddt$          j        t$          j        t$          j        g	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/          ||
|dk               t1          |j        dd           t1          |j        dd           d S )Nr   r   r   r{  r  r|  z0cudf DataFrames do not support antialiased linesr3   r        rN  r   r  )r\   r  g.s?g#?r   r   	r   r   r   r   r.   r   r   r   r   	r   r   r   r	   r   r	   r   r   r   	r   r   r	   r   r   r   r	   r   r   	r   r	   r   r   r   r   r   r	   r   )	r	   r   r   r   r   r   r   r   r	   r   r   rO   rl  r  rf   T)rA   rC   rS   r}  r~  r   r5   r1   r   r  r   r  r  r  r  r  r  r   ra   r   r   rV   rW   r^   rc   rH   rI   )r8   r  r  r  r   r   r  r  r\   r   r   s              r<   test_line_autoranger  E  s     	L	^++wwqz~~c266DDkRR 	J	J!GAJNN6266DDi 	J
 KHIII>>KJKKK	'	:zZ/	:	:B7D""((A66; ;I )qa
0
0
0C
#(2
K28::*
K
K

K
KCA~~hVrv8XxSUSY]_]cfVrv8RVxSUSY]_]cfVx26RVrvS[]_]cfx26RVrvS[]efrv26RVrvSUSY]efx26RVrvS[]efVx26RVrvS[]_]cfVrv8RVxSUSY]_]cfVrv8XxSUSY]_]cf

 
 
 
 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*q.2222ck7$7777ck7$777777r>   c                *   t           j                                        }|                    |                    dd          d          }t          j        g d          } | ddgddgddgd          }t          j        dd          }|                    ||g dt          j	                    d	
          }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   rv  r   r  rf   ru  r  r	   r   	r   r   r   r   r	   r   r   r   r   r  r  r  )	r.   r   r   r   r   r   r   r   r.   r   r   r   r   rO   )r   r  r  r  r  ra   r   r  r  r   rV   rW   r^   )	r8   r   r  xsr   r  r\   r   r   s	            r<   $test_line_autorange_axis1_x_constantr  |  s}   7D""((A66; ;I 
***		B	1g1g1g  
 
B )qa
0
0
0C
((2%%%8::	   C (///////////////////////////1 9=> > >C ,sIy#9 #J( ( (Ccr>   c                r   t           j                                        }|                    |                    dd          d          } | ddgddgddgddgddgddgddgd          }t          j        dddd	          }|                    |g d
g dt          j        d          d          }t          j	        }t          j
        ||d|d||g|d|||d|gd|||||dg|||||||gd|||||dg|d|||d|g||d|d||ggd          }t          j        |||gddg          }t          ||           d S )Nr  r   rf   r  r   r   )rp  rq  rr  r  r  rs  r  r  rE   rt  ru  r  r	   r   float32r   r   r   rO   )r   r  r  r  r  r  r  r   ra   r   r   rV   rW   r^   )	r8   r   r  r   r  r\   r   r   r   s	            r<   %test_line_agg_sum_axis1_none_constantr    s   7D""4#C#CIq#Q#QSTUUI	"g1g1g1g1g1gV  
 
B )qa#W6 6 6C ((2%%%%%%6#;;	   C
 &C
(S#qCc37!sCa37#sCc15#sCc37#sCc15!sCa37#qCc379 AJK K KC ,sIy#9 #J( ( (Ccr>   c                    t           j                                        } |                     |                     dd          d          }t          j        t          j        ddgg dgd          t          j        ddgg d	gd          d
          }t          j        dd          }|	                    |ddt          j
                    d          }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          ||           t          |j        dd           t          |j        dd           d S )Nr  r   rf   r   rw  rx  r   r  ry  r  r  r   r   r	   r   r  r  r  r  )	r	   r   r   r   r   r   r   r   r.   r  r   rO   r  Trl  )r   r  r  r  r  r7   r8   r   r  r  r   ra   rV   rW   r^   rc   rH   rI   r  s          r<    test_line_autorange_axis1_raggedr    s   7D""((A66; ;I 
X1v}}}-5FGGGX2w.6GHHH  
 
B
 )qa
0
0
0C
((28::	   C (///////////////////////////1 9=> > >C ,sIy#9 #J( ( (Ccck7$7777ck7$777777r>   zdf_kwargs,cvs_kwargsr  r  )rT   r   )rT   )r  g       r   )r  r  r   c                4   t           r[| t          u rRt          t          |d                             dg           dd          t
                    rt          j        d            | di |}t          j	        
                                }|                    |                    dd          d          }|                    |                    dd	          d	          }t          j        d	dd
dgddg          } |j        |fdt          j                    i|}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 )NrT   r   r   r{  r|  )            @r
   )            @r   r  r  r  r  rE   r\   )	r   r	   r	   r   r   r   r   r   r   )	r	   r	   r	   r	   r   r   r   r   r   )	r	   r	   r	   r	   r	   r   r	   r	   r	   )	r   r   r   r   r   r   r	   r	   r	   )	r   r   r   r   r   r   r	   r	   r   r   r   r   rO   Trl  r   rA   rC   rS   r}  r~  r   r   r  r   r  r  r  r  r  arear   ra   r   rV   rW   r^   rc   rH   rI   r8   	df_kwargsr  r   r   lincoords_ylincoords_xr  r\   r   r   s              r<   test_area_to_zero_fixedranger    s   B  J	^++gi/33C<<grJJKXX 	JKHIII			Y		B7D$$((::A? ?K $$((::A? ?K )qa"DME4=B B BC #(2
4
428::
4
4
4C
(///////////////	1
   C ,sK#= #J( ( (Ccck=====ck=======r>   )r  r  r   r   r.   rf   )r   r  r   r   r  r   )r   r.   rf   )rp  rq  r  c           
     4   t           r[| t          u rRt          t          |d                             dg           dd          t
                    rt          j        d            | di |}t          j	        
                                }|                    |                    dd          d          }|                    |                    dd	          d	          }t          j        d	d
          } |j        |fdt          j                    i|}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 )NrT   r   r   r{  r|  r  r   r   r  r   r  r\   r   r   r   r	   r   r   r   r   r   r	   r   r   r   r   r   r	   r	   r	   r   r   r   r	   r	   r	   r   r   )r   r	   r	   r	   r	   r	   r   r	   r	   r	   r	   r	   r   )r	   r	   r	   r	   r	   r	   r.   r	   r	   r	   r	   r	   r	   r   r   r   rO   r  Trl  )r  r   r   r  r  s              r<   test_area_to_zero_autoranger  *  s   `  J	^++gi/33C<<grJJKXX 	JKHIII			Y		B7D$$((A66; ;K$$((B77= =K )rq
1
1
1C
#(2
4
428::
4
4
4C
(;;;;;;;;;;;;;;;;;;;;;=   C ,sK#= #J( ( (Ccck7$7777ck7$777777r>   c           
     4   t           r[| t          u rRt          t          |d                             dg           dd          t
                    rt          j        d            | di |}t          j	        
                                }|                    |                    dd          d          }|                    |                    dd          d          }t          j        dd	          } |j        |fd
t          j                    i|}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 )NrT   r   r   r{  r|  r  r   r   r  r\   r   r   r   r	   r   r   r   r   r   r   r   r   r   r   r   r	   r	   r	   r   r   r   r   r   r   r   r   r   r	   r	   r	   r	   r	   r   r   r   r   r   r   r   )r	   r	   r	   r	   r	   r	   r	   r   r   r	   r	   r	   r	   r   r   r   r   r   r   r   r   r   r	   r	   r	   r   r   r   r   r   r   r   r   r   r   r	   r	   r   r   r   r   r   r   r   r   r   r   r   r	   r   r   r   r   r   r   rO   r  Trl  r   r  r  s              r<   test_area_to_zero_autorange_gapr  z  s   F  J	^++gi/33C<<grJJKXX 	JKHIII			Y		B7D$$((A66; ;K$$((B77= =K )rq
1
1
1C
#(2
4
428::
4
4
4C
(;;;;;;;;;;;;;;;;;;;;;=   C ,sK#= #J( ( (Ccck7$7777ck7$777777r>   )	rp  rq  rr  r  r  rs  y3y4y5)r  r  r  )r   r   y_stackr   )r   r  r   )r   r  r   r   r  r   )r   r   r  r  )rp  rq  r  r  rs  r  rs  r  )rp  rq  r  rs  c           
        t           r[| t          u rRt          t          |d                             dg           dd          t
                    rt          j        d            | di |}t          j	        
                                }|                    |                    dd          d          }|                    |                    dd	          d	          }t          j        d	d
          } |j        |fdt          j                    i|}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 )NrT   r   r   r{  r|  r  r   r  r   r  r\   r  r  )r   r   r	   r   r	   r   r   r   r	   r   r	   r   r   )r   r	   r   r   r   r	   r   r	   r   r   r   r	   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rO   r   )rA   rC   rS   r}  r~  r   r   r  r   r  r  r  r  r  r  r   ra   r   rV   rW   r^   r  s              r<   test_area_to_line_autoranger    s   x  J	^++gi/33C<<grJJKXX 	JKHIII			Y		B7D$$((A66; ;K$$((B77= =K )rq
1
1
1C
#(2
4
428::
4
4
4C
(;;;;;;;;;;;;;;;;;;;;;=   C ,sK#= #J( ( (Ccr>   c            
        t           j                                        } |                     |                     dd          d          }|                     |                     dd          d          }t          j        dd          }t          j        dddt          j	        dd	gdddt          j	        d	dgdddt          j	        ddgd
          }|
                    |ddt          j                    d          }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   r.   rf   r  r   r  r  )r  r  r  r  r  r  r  r  r   r   rO   )r   r  r  r  r  r  r7   r8   ra   r   r  r   r   rV   rW   r^   )r   r  r  r  r   r\   r   r   s           r<   test_area_to_line_autorange_gapr  	  s   7D$$((A66; ;K$$((B77= =K )rq
1
1
1C	"aA&"aA&1aA&  
 
B ((2sD"(**d(
;
;C
(;;;;;;;;;;;;;;;;;;;;;=   C ,sK#=!3K) ) )Ccr>   c                   t          j        t          j        |           t          j        |                    }t          j        t          j        | d          t          j        |d                    }t           j        ||<   |S Nr   r   )ra   logical_andisnanmaximum
nan_to_numr   arr0arr1maskrets       r<   nanmaxr  ;	  sb    >"(4.."(4..99D
*R]4S1112=33O3O3O
P
PCCIJr>   c                   t          j        t          j        |           t          j        |                    }t          j        t          j        | d          t          j        |d                    }t           j        ||<   |S )Ng    _Br   )ra   r  r  minimumr  r   r  s       r<   nanminr  A	  sb    >"(4.."(4..99D
*R]4T222BM$D4Q4Q4Q
R
RCCIJr>   c                    t          j        t          j        |           t          j        |                    }t          j        | d          t          j        |d          z   }t           j        ||<   |S r  )ra   r  r  r  r   r  s       r<   r   r   G	  s[    >"(4.."(4..99D
-#
&
&
&t)E)E)E
ECCIJr>   c                ,    t          j        | |          S )N)ra   r  )r  r  s     r<   rowmaxr  M	  s    :dD!!!r>   c                    t          j        t          j        |           t          j        |          g          dz   }|| | dk     <   |||dk     <   t          j        | |          }d|||k    <   |S )Nr	   r   r   )ra   r   r  )r  r  bigintr  s       r<   rowminr  P	  si    VRVD\\26$<<011A5FDNDN
*T4
 
 CCvJr>   r(  r'        ?皙?)r   r   r   r   )rp  r  rq  r  valuegH¾?gH¾?r  gA} R?g 6?g|y?gQHm?gF%u?g?g|~?gD ?gѬlf?gv ݳ?g<y8?g8w?gl,	PS?g&1?gg~5?g?333333?)r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r.   r	   r   )r   r   r   r   r   r   r   r.   r.   r	   r   )r   r   r   r   r   r   r.   r.   r.   r	   r   )r   r   r   r   r   r   r.   r.   r   r	   r   )r   r   r   r   r   r   r   r   r   r	   r   )r   r   r   r.   r.   r   r   r   r   r	   r   )r   r   r.   r.   r.   r   r   r   r   r	   r   )r   r.   r.   r.   r   r   r   r   r   r   r   )r   r.   r.   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r.   r.   r   )r   r   r   r   r   r   r   r.   r.   r.   r   )r   r   r   r   r   r.   r.   r.   r   r	   r   )r   r   r   r   r.   r.   r.   r   r   r	   r   )r   r   r   r.   r.   r.   r   r   r   r	   r   )r   r.   r.   r.   r   r   r   r   r   r	   r   )r   r.   r.   r   r   r   r   r   r   r	   r   )r   r   r   r   r   r	   r	   r	   r.   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                 #   dx} }t          j        dd| |          }t          t          ddd          } |j        d:dt          j                    i|}t          |j        t          d	
            |j        d:dt          j	        d          i|}t          |j        t          d	
            |j        d:dt          j	        d	          i|}t          |j        t          d	
            |j        d:dt          j        dd          i|}t          |j        dt          z  d	
            |j        d:dt          j        dd	          i|}t          |j        dt          z  d	
            |j        d:dt          j        d          i|}t          |j        dt          z  d	
            |j        d:dt          j        d          i|}t          |j        dt          z  d	
            |j        d:dt          j        d          i|}t          |j        dt          z  d	
            |j        d:dt          j        d          i|}t          |j        dt          z  d	
            |j        d:dt          j        d          i|}t#          j        t          dk    dt"          j                  }t          |j        |d	
            |j        d:dt          j                    i|}t          |j        t*                      |j        d:dt          j                    i|}t          |j        t.                      |j        d:dt          j        d          i|}t          |d d d d df         j        t*                     t#          j        dd          }d|d<   d|dddf<   t          |d d d d df         j        |            |j        d:dt          j        d          i|}t          |d d d d df         j        t.                     t#          j        dd          }d|d<   d|dddf<   t          |d d d d df         j        |            |j        d:dt          j        dd          i|}t          |d d d d df         j        dt          z  d	
           t#          j        dt"          j                  }d|d<   d|d<   t          |d d d d df         j        |d	
            |j        d:dt          j        dd          i|}dt          z  }d|d<   t          |d d d d df         j        |d	
           t#          j        dt"          j                  }d|d<   d|d<   t          |d d d d df         j        |d	
            |j        d:dt          j        dd          i|}dt          z  }d|d <   t          |d d d d df         j        |d	
           t#          j        dt"          j                  }d|d!<   d|d"<   t          |d d d d df         j        |d	
           t          t          d#d$d          } |j        d:dt          j                    i|}t          |j        t<          d	
            |j        d:dt          j	        d          i|}t          |j        t<          d	
            |j        d:dt          j	        d	          i|}t          |j        t<          d	
            |j        d:dt          j        dd          i|}t          |j        dt<          z  d	
            |j        d:dt          j        dd	          i|}t          |j        dt<          z  d	
            |j        d:dt          j        d          i|}t          |j        dt<          z  d	
            |j        d:dt          j        d          i|}t          |j        dt<          z  d	
            |j        d:dt          j        d          i|}t          |j        dt<          z  d	
            |j        d:dt          j        d          i|}t          |j        dt<          z  d	
            |j        d:dt          j        d          i|}t#          j        t<          dk    dt"          j                  }t          |j        |d	
            |j        d:dt          j                    i|}t          |j        t>                      |j        d:dt          j                    i|}t          |j        t@                      |j        d:dt          j        d          i|}t          |d d d d df         j        t>                     t#          j        dd          }d|d%<   d|dd&d'df<   t          |d d d d df         j        |            |j        d:dt          j        d          i|}t          |d d d d df         j        t@                     t#          j        dd          }d|d%<   d|dd&d'df<   t          |d d d d df         j        |            |j        d:dt          j        dd          i|}t          |d d d d df         j        dt<          z  d	
           t#          j        dt"          j                  }d(d)t&          d*d+f|dddf<   d,|d-<   t          |d d d d df         j        |d	
            |j        d:dt          j        dd          i|}t#          j        dt"          j                  }g d.|dddf<   g d/|dddf<   t          |d d d d df         j        |d	
           t#          j        dt"          j                  }d0d1t&          d2d3f|dddf<   d4|d-<   t          |d d d d df         j        |d	
            |j        d:dt          j        dd          i|}dt<          z  }d5|d6<   t          |d d d d df         j        |d	
           t#          j        dt"          j                  }d(d1t&          d*d3f|dddf<   d7|d-<   t          |d d d d df         j        |d	
            |j        d:dt          j!        dd          i|}dt<          z  }d8|d9<   t          |d d d d df         j        |d	
           t          t          dd#gdd$gd          } |j        d:dt          j                    i|}tE          t          t<                    }t          |j        |d	
            |j        d:dt          j	        d          i|}tG          t          t<                    }t          |j        |d	
            |j        d:dt          j	        d	          i|}tG          t          t<                    }	t          |j        |	d	
            |j        d:dt          j        dd          i|}t          |j        d|z  d	
            |j        d:dt          j        dd	          i|}t          |j        d|	z  d	
            |j        d:dt          j        d          i|}t          |j        d|z  d	
            |j        d:dt          j        d          i|}tI          t          t<                    }
t          |j        d|
z  d	
            |j        d:dt          j        d          i|}dt#          j        t#          j%        t                    t<          t                    z  }t          |j        |d	
            |j        d:dt          j        d          i|}dt#          j        t#          j%        t<                    t          t<                    z  }t          |j        |d	
            |j        d:dt          j        d          i|}t#          j        |dk    dt"          j                  }t          |j        |d	
            |j        d:dt          j                    i|}tM          t*          t>                    }t          |j        |            |j        d:dt          j                    i|}tO          t.          t@                    }t          |j        |            |j        d:dt          j        d          i|}t          |j        d d d d df         |            |j        d:dt          j        d          i|}t          |j        d d d d df         |           t          |j(        | d	
           t          |j)        |d	
           d S );Ng      ȿg      ?r   rE   rp  r  r	   sourcer   r   r  r\   Trl  Fself_intersectr  r   r   r  r.   rx   )r   r   r   ))rf   r
   r
   r
   r/   r	   r.   r
   rf   r
   r/   r
   r   r   r   r   r   ))rf   r
   r
   r
   r/   r   r   r  ))r	   r
   r   )r   r
   r   g%?))r.   rf   r
   r
   r/   r   )r   r
   rf   r/   r
   r   ))r.   r   )r   r   ))r	   r.   r
   r   r   )r   r   r
   r   r   ))rf   r
   r
   r/   )r
   rf   r/   r
   )r   r   ))r	   r
   r   r   )r   r
   r   r   ))r.   rf   r
   r
   r/   )r   r
   rf   r/   r
   rq  r  )r.   r.   r   )r   rf   rf   rf   r/   ^M.?>'IW??f"]?)皙?uʣ?	^)?)r  )rf   r/   r   )	r  g1_^}4@r  r  g9 @r  r  g?gmUG?)	gtY5?giVy?g1A?r  g9+&?r  r  gwC?g?gb h@gx@g1?gVu?)@?g:W?٘?)r  r  r  r  ))r.   r.   r   r   )rf   r   rf   r   )r  r  r  )r  r  r  )r  )r   r/   r/   r   )*r   r  r  line_antialias_dfr  r   rc   rT   line_antialias_sol_0r   line_antialias_sol_0_intersectr   r   r   r	  r  r\  ra   r  r   r   line_antialias_sol_min_index_0r   line_antialias_sol_max_index_0r   fullr  r   r   r  line_antialias_sol_1line_antialias_sol_min_index_1line_antialias_sol_max_index_1r  r  r   r  r  r  r  rH   rI   )rH   rI   r  r;   r\   r   sol_meansol_max	sol_countsol_count_intersectsol_min	sol_firstsol_lastsol_min_rowsol_max_rows                  r<   test_line_antialiasr  	  s   ))Gg
)rr7G
T
T
TC *ddqIIIF
#(
*
*rvxx
*6
*
*Cch 4DAAAA
#(
@
@rxu555
@
@
@Cch 4DAAAA
#(
?
?rxt444
?
?
?Cch >dKKKK
#(
G
Grvge<<<
G
G
GCch"6 6dCCCC
#(
F
Frvgd;;;
Fv
F
FCch"@ @MMMM
#(
1
1rvg
1&
1
1Cch"6 6dCCCC
#(
1
1rvg
1&
1
1Cch"6 6dCCCC
#(
3
3rx((
3F
3
3Cch"6 6dCCCC
#(
2
2rww''
26
2
2Cch"6 6dCCCC
#(
2
2rww''
26
2
2C
('!+S"&
9
9Cch40000
#(
5
5r(**
5f
5
5Cch >???
#(
5
5r(**
5f
5
5Cch >???
#(
:
:r*Q///
:6
:
:Cc!!!QQQ'l')GHHH
'(B

C89C45C"aLc!!!QQQ'l'---
#(
:
:r*Q///
:6
:
:Cc!!!QQQ'l')GHHH
'(B

C89C45C!QKc!!!QQQ'l'---
#(
8
8rx1---
8
8
8Cc!!!QQQ'l'+?)?tLLLL
'(BF
#
#C #C2:C./c!!!QQQ'l'D9999
#(
8
8rx1---
8
8
8C
 
 C"Cc!!!QQQ'l'D9999
'(BF
#
#C,/C()&.C"#c!!!QQQ'l'D9999
#(
:
:rz'Q///
:6
:
:C
 
 CCIc!!!QQQ'l'D9999
'(BF
#
#C&)C"#,4C()c!!!QQQ'l'D9999 *ddqIIIF
#(
*
*rvxx
*6
*
*Cch 4DAAAA
#(
@
@rxu555
@
@
@Cch 4DAAAA
#(
?
?rxt444
?
?
?Cch 4DAAAA
#(
G
Grvge<<<
G
G
GCch"6 6dCCCC
#(
F
Frvgd;;;
Fv
F
FCch"6 6dCCCC
#(
1
1rvg
1&
1
1Cch"6 6dCCCC
#(
1
1rvg
1&
1
1Cch"6 6dCCCC
#(
3
3rx((
3F
3
3Cch"6 6dCCCC
#(
2
2rww''
26
2
2Cch"6 6dCCCC
#(
2
2rww''
26
2
2Cx,q0#rv>>Hch5555
#(
5
5r(**
5f
5
5Cch >???
#(
5
5r(**
5f
5
5Cch >???
#(
:
:r*Q///
:6
:
:Cc!!!QQQ'l')GHHH
'(B

C !CC!QqSMc!!!QQQ'l'---
#(
:
:r*Q///
:6
:
:Cc!!!QQQ'l')GHHH
'(B

C !CC!QqSMc!!!QQQ'l'---
#(
8
8rx1---
8
8
8Cc!!!QQQ'l'+?)?tLLLL
'(BF
#
#CXsHh?C1Q3K 9Cc!!!QQQ'l'D9999
#(
8
8rx1---
8
8
8C
'(BF
#
#C  C1R4LcccC1R4Lc!!!QQQ'l'D9999
'(BF
#
#CXsHh?C1Q3K >Cc!!!QQQ'l'D9999
#(
:
:rz'Q///
:6
:
:C
 
 C&IC"#c!!!QQQ'l'D9999
'(BF
#
#CXsHh?C1Q3K >Cc!!!QQQ'l'D9999
#(
9
9ryA...
9&
9
9C
 
 C >Cc!!!QQQ'l'D9999 *tTltTlWXYYYF
#(
*
*rvxx
*6
*
*C)+?@@Gcht4444
#(
@
@rxu555
@
@
@C+-ABBIch	6666
#(
?
?rxt444
?
?
?C !?AUVVch 34@@@@
#(
G
Grvge<<<
G
G
GCch)48888
#(
F
Frvgd;;;
Fv
F
FCch"5 5TBBBB
#(
1
1rvg
1&
1
1Cch'	6666
#(
1
1rvg
1&
1
1C)+?@@Gch'	6666
#(
3
3rx((
3F
3
3C"(28$899;O/1 1 1Ich	6666
#(
2
2rww''
26
2
2C"(#788:N.0 0 0Hch5555
#(
2
2rww''
26
2
2Cx	!S"&11Hch5555
#(
5
5r(**
5f
5
5C79WXXKch,,,
#(
5
5r(**
5f
5
5C79WXXKch,,,
#(
:
:r*Q///
:6
:
:Cchqqq!!!Qw'555
#(
:
:r*Q///
:6
:
:Cchqqq!!!Qw'555ck7$7777ck7$777777r>   c                    t          t          ddgddgd          } dx}}t          j        dd||	          }t	          t
          t                    }t	          t          t                    }d
t          t
          t                    z  }d
t          j
        t          j        t
                    t          t
                    z  }d
t          j
        t          j        t                    t
          t                    z  } |j        ddt          j        t          j        dd          t          j        dd                    i| }	t!          |	d         j        |d           t!          |	d         j        d
|z  d            |j        ddt          j        t          j        dd          t          j        dd                    i| }	t!          |	d         j        |d           t!          |	d         j        d
|z  d            |j        ddt          j        t          j        dd          t          j        dd                    i| }	t!          |	d         j        |d           t!          |	d         j        d
|z  d            |j        ddt          j        t          j        dd          t          j        d                    i| }	t!          |	d         j        |d           t!          |	d         j        |d            |j        ddt          j        t          j        dd          t          j        d                    i| }	t!          |	d         j        |d           t!          |	d         j        |d            |j        ddt          j        t          j        dd          t          j        d                    i| }	t!          |	d         j        |d           t!          |	d         j        |d           t!          |	j        |d           t!          |	j        |d           d S )Nrp  rq  r  r  r	   r  r  r   rE   r   r\   r  Tr  )r   r   r   rl  r   F)r   r   r   )r   r	  r	  )r   r  r  r   )r  r  r   r  r   r  r  r  r  ra   r  r  r  rD  r   r   rc   rT   r   r	  r  rH   rI   )
r;   rH   rI   r  r  r  r  r  r  r\   s
             r<   test_line_antialias_summaryr  
  s   *tTltTlWXYYYF))Gg
)rr7G
T
T
TC +-ABBI !?AUVV+-ABBBG"(28$899;O/1 1 1I"(#788:N.0 0 0H #(  J(74888wt444
 
 
 	 C
 c'l')<DIIIIc%joq)<'<DIIII #(  J(75999wu555
 
 
 	 C
 c'l'$????c%joq{$???? #(  J(74888wu555
 
 
 	 C
 c'l'$????c%joq{$???? #(  J(74888w
 
 
 	 C
 c'l'$????c%jowd;;;;
#(  J(74888(7##
 
 
 	 C
 c'l'$????c'l'$????
#(  J(74888!!
 
 
 	 C
 c'l'$????c&k&====ck7$7777ck7$777777r>   gVdt@?r  gEF$a_?gl#?g#?r	  g      @g      #@g      !@g      @)
rp  rq  rr  x3x4r  r  rs  r  r  )rp  rq  rr  r  r  )r  r  rs  r  r  )r   r   r   )r  z*df_kwargs, cvs_kwargs, sol_False, sol_Truer  Tc                p   dx}}t          j        dd||          }d|v rt          j        |           }nt	          j        d
i | } |j        |fdt          j        |          d|}	|r|n|}
t          |	j	        |
d	           t          |	j
        |d	           t          |	j        |d	           d S )N)r   r   r   rE   r  r.   r  r  r\   Trl  r   )r   r  r5   r6   r7   r8   r  r   rc   rT   rH   rI   )r  r  	sol_Falsesol_Truer  rH   rI   r  r   r\   r   s              r<   test_line_antialias_nanr  Q  s    
 ! Gg
)rr7G
T
T
TCZ_Y''\&&I&&
#(2
_!)P)P)P
_
_T^
_
_C$
3(()Cch40000ck7$7777ck7$777777r>   c                    t          j        t          t          j        ddddt          j        ddddg	          t          j        ddddt          j        ddddg	          g d	
                    } | d                             d          | d<   dx}}t          j        dd||          }|	                    | dddt          j
        dt          j        d                              }t          |j        d d d d df         t          d           t          |j        d d d d df         t          d           |	                    | dddt          j
        dt          j        d                              }t          |j        d d d d df         t           d           t          |j        d d d d df         t          d           d S )Nr   r	   gUUUUUU?gUUUUUU?r  g333333?gffffff?r  )	r	   r	   r	   r	   r	   r.   r.   r.   r.   )r   r   r)   r)   r-   r  r   rE   r   r   Fr  r  r   r   r  r\   Trl  )r7   r8   r  ra   asarrayr   r   r   r  r  r   r   rc   rT   r  r  r  )r   rH   rI   r  r\   s        r<   test_line_antialias_categoricalr  e  s   	d
*aAq"&!UE1=
>
>
*aAq"&%ucB
C
C'''   
 
B
 5	  ,,BuI))Gg
)rr7G
T
T
TC
(("squUBHE$B$B$BCC  E ECchqqq!!!Qw')=TJJJJchqqq!!!Qw')=TJJJJ
(("squUBHD$A$A$ABB  D DCchqqq!!!Qw')GtTTTTchqqq!!!Qw')=TJJJJJJr>   c           	        t          j        dddd          }t          j        t	          ddgddg                    }|                    |d	d
dt          j        |                     }t          j        t	          g dg d                    }|                    |d	d
dt          j        |                     }t          ||           d S )Nr   )gr  )g?r  rE   r   r	   r.   r  r   r   r  r  r  )r	   r	   r.   )r   r  r7   r8   r  r  r   r^   )r  r  r   agg_no_duplicateagg_duplicates        r<   $test_line_antialias_duplicate_pointsr  {  s     )rr;PZ
[
[
[C	daV1v...	/	/BxxrSCA$&HN$K$K$K   M M 
dYYY)))444	5	5BHHB#!#!H!H!H  J JM !=11111r>   	reductionr  c                   t          j        dd          }t          j        t	          ddgddgddg                    }t          j        t                    5  |                    |ddd| 	           d d d            d S # 1 swxY w Y   d S )
Nr   r  r   r	   r.   r   r   r  r   r   r  )	r   r  r7   r8   r  r   r   r   r  )r  r  r   s      r<   -test_line_antialias_reduction_not_implementedr	    s     )rr
2
2
2C	daV1vaV<<<	=	=B	*	+	+ < <S#!;;;< < < < < < < < < < < < < < < < < <s   BB	Bc                 2   t          j        t          g dg dg dg dg d                    } 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   r   r  )r   r  r   )r
  gffffff
@r  )g      "g      g      )r  r  rs  r  otherr   r  r   ru  r	   r   )r  r   r   r   r  r.   r   r   r   r  wrap)moder\   r  rx   r   )r7   r8   r  r   r  ra   rP  r   r  chooser  r   r  r  r	  rc   rT   r  r   r   r  r  r   r  r   r   r   r   )
r   r  r;   r  r  r  r  	sol_index	sol_otherr\   s
             r<   test_line_antialias_wherer    s?   	d______"""   
 
B )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	*****r>   zreduction,dtype,aa_dtyper  c           	     `   t          j        dd          }t          j        t	          ddgddgddgddg                    }|                    |d	d
d|           }|j        |k    sJ t          | t           j                  s'|                    |d	d
d|           }|j        |k    sJ d S d S )Nr   r  r   r	   r.   g333333?g333333@)r   r   r  r  r   r   r  )	r   r  r7   r8   r  r  r   rS   r  )r  r   aa_dtyper  r   r\   s         r<   test_reduction_dtyper  1  s     )rr
2
2
2C	daV1vaVC:NNN	O	OB ((2sCA9(
=
=C9 i** %hhr3yhAAyH$$$$% %$$r>   r  )rL   )rL   rH   )rM   )rM   rI   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 axesrV  r   r   )r   r   rX  r  )r   r  s     r<   test_log_axis_not_positiver  H  s     
z)W	X	X	X " "BS!!!" " " " " " " " " " " " " " " " " "s   AAAselector)r   c           
     F   t          j        dd          }t          j        t	          ddgddgddg                    }t          j        t          d          5  |                    |d	d
t          j	        | d                     d d d            d S # 1 swxY w Y   d S )Nr   r  r   r	   r.   r  zWselector can only be a first, first_n, last, last_n, max, max_n, min or min_n reductionrV  r   r   r  r  )
r   r  r7   r8   r  r   r   	TypeErrorr  r  )r  r  r   s      r<   test_where_unsupported_selectorr  T  s    )rr
2
2
2C	daV1vaV>>>	?	?B	y )M 
N 
N 
N @ @S#28Hg#>#>???@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @s   -BBBc            	        t          j        dd          } d}t          j        t	          g dg dg dg d	                    }d
D ]}t          j        t          |          5  |                     |dgddg|           d d d            n# 1 swxY w Y   t          j        t          |          5  |                     |ddgdg|           d d d            n# 1 swxY w Y   t          j        t	          g dg d                    }dD ]b}t          j        t          |          5  |                     |t          j
        |          ddgd           d d d            n# 1 swxY w Y   ct          j        t	          g dg d                    }dD ]b}t          j        t          |          5  |                     |ddgt          j
        |          d           d d d            n# 1 swxY w Y   cd S )Nr   r/   r  z(^x and y coordinate lengths do not matchr   r  r	   r   r  r	   )r   r  r	   )r	   g?r	   )rp  r  rq  r  rD   rV  rp  r  r  )r  r   r   r   rq  r'  r(  )r  r  r  r	   )rp  rq  )r   r  r7   r8   r  r   r   rX  r  ra   rP  )r  rY  r   r   nxnys         r<   test_line_coordinate_lengthsr   g  sZ   
)rq
1
1
1C
5C 
LLL
N 
NB E E]:S111 	E 	EHHB4&T4LtHDDD	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E]:S111 	E 	EHHB4,4&tHDDD	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 
dlll|||<<<	=	=B I I]:S111 	I 	IHHB")B--D$<aHHHH	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 
dlll|||<<<	=	=B I I]:S111 	I 	IHHB4,")B--aHHHH	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	II IsH   %BB	B	4CC!	$C!	/.E))E-	0E-	;.G55G9	<G9	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                    }| D ]_}t          j        t          |          5  |                    |ddt          j	        d                     d d d            n# 1 swxY w Y   `d S )Nr   r/   r  r
   r   r	   r   z>Invalid size: plot_width and plot_height must be bigger than 0r  r  )r   r   r  rJ  rV  r   r   rK  )
r   r  r7   r8   r  r   r   rX  r   r\  )cvs_listrY  r   r  s       r<   test_canvas_sizer#    s9   
	QA...
	QA...
	QA...
	RQ///
	RR000H LC	d[[[KKK<<<HHH	I	IB 3 3]:S111 	3 	3JJr3RWS\\222	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	33 3s   7+C..C2	5C2	c                   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rf   r	   r   r   r   r   r   r   r*   rO   r   r/   r   r   r   r'   r&   )rV   rW   rP   rQ   r  ra   r3  r   r   r   r   r   r   r^   r   r5  r6  r\   s       r<   test_categorical_where_maxr'    3   <---1A1A1A!B".,,0@0@0@!A!C'-1E1E1E0F'FTU[T\_^ ^ ^L (2=)9<1;LMMrv,. .K ((2sCvrx{8K8K/L/L!M!M
N
NCl### ((2sCvrx{8K8KY/W/W!X!X
Y
YCk"""""r>   c                   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   r   r   r   r   r   r*   rO   r   r/   r   r   r   r'   r&   )rV   rW   rP   rQ   r  ra   r3  r   r   r   r   r   r   r^   r&  s       r<   test_categorical_where_minr+    r(  r>   c                   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*   rO   r   r/   r   r   r   r'   r&   )rV   rW   rP   rQ   r  ra   r3  r   r   r   r   r   r	  r^   r&  s       r<   test_categorical_where_firstr-    s3   <---1A1A1A!B".,,0@0@0@!A!C'-1E1E1E0F'FTU[T\_^ ^ ^L (2=)9<1;LMMrv,. .K ((2sCvrx8M8M/N/N!O!O
P
PCl### ((2sCvrx8M8My/Y/Y!Z!Z
[
[Ck"""""r>   c                   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*   rO   r   r/   r   r   r   r'   r&   )rV   rW   rP   rQ   r  ra   r3  r   r   r   r   r   r  r^   r&  s       r<   test_categorical_where_lastr/    s3   <---1A1A1A!B".,,0@0@0@!A!C'-1E1E1E0F'FTU[T\_^ ^ ^L (2=)9<1;LMMrv,. .K ((2sCvrx8L8L/M/M!N!N
O
OCl### ((2sCvrx8L8Li/X/X!Y!Y
Z
ZCk"""""r>   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   r   r   r   r   r   r   r  r   r   r   r   r   r   r   r   r   r   r   r	   r.   r*   ry   rO   r   r/   r   r	   rf   r   r   r'   rx   r&   )rV   rW   rP   rQ   r  ra   r3  r   r   r   r   r   r   r   r^   rc   rT   r   r4  s         r<   test_categorical_where_max_nr3    "   <::{{{LLL+++
><<|||\\\
B
D;;


KKK
=<<|||\\\
B
D	E ---yyy99PS}@TV V VL (2=)9<1;LMMrv,. .K 1a[[ _ _hhr3RU628BH[TU<V<V<V3W3W%X%XYY111aaaBQB;'S#66c!!!QQQ1*o2hhr3RU6;=8BF;DWDW;X;X6Z 6Z [ [[_a a a
 hhr3RU628BH[TU<V<V<V<E4G 4G &H &H I I!!!QQQ2A2+&S#66c!!!QQQ1*o2hhr3RU628BFS^L_L_LUDW DW 6X 6X Y YY]_ _ _!_ _r>   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   r1  r   r   r   r   r   r   r  r   r   r   r   r   r  r   r2  r*   ry   rO   r   r/   r   r	   rf   r   r   r'   rx   r&   )rV   rW   rP   rQ   r  ra   r3  r   r   r   r   r   r   r   r^   rc   rT   r   r4  s         r<   test_categorical_where_min_nr6    r4  r>   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   r1  r   r   r   r   r   r   r   r   r   r   r   r   r   r   r2  r*   ry   rO   r   r/   r   r	   rf   r   r   r'   rx   r&   )rV   rW   rP   rQ   r  ra   r3  r   r   r   r   r   r   r  r^   rc   rT   r	  r4  s         r<   test_categorical_where_first_nr8    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[[ _ _hhr3RU628BJ{VW<X<X<X3Y3Y%Z%Z[[111aaaBQB;'S#66c!!!QQQ1*o2hhr3RU6;=8BH[DYDY;Z;Z6\ 6\ ] ]]ac c c
 hhr3RU628BJ{VW<X<X<X<E4G 4G &H &H I I!!!QQQ2A2+&S#66c!!!QQQ1*o2hhr3RU628BHU`LaLaLUDW DW 6X 6X Y YY]_ _ _!_ _r>   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   r1  r   r   r   r  r   r   r  r   r   r   r   r   r  r   r2  r*   ry   rO   r   r/   r   r	   rf   r   r   r'   rx   r&   )rV   rW   rP   rQ   r  ra   r3  r   r   r   r   r   r   r  r^   rc   rT   r  r4  s         r<   test_categorical_where_last_nr:  6  s"   <::{{{LLL+++
><<|||\\\
B
D;;


KKK
=<<|||\\\
B
D	E ---yyy99PS}@TV V VL (2=)9<1;LMM62#46 6K 1a[[ _ _hhr3RU628BIkUV<W<W<W3X3X%Y%YZZ111aaaBQB;'S#66c!!!QQQ1*o2hhr3RU6;=8BGKDXDX;Y;Y6[ 6[ \ \\`b b b
 hhr3RU628BIkUV<W<W<W<E4G 4G &H &H I I!!!QQQ2A2+&S#66c!!!QQQ1*o2hhr3RU628BGT_L`L`LUDW DW 6X 6X Y YY]_ _ _!_ _r>   )F)
__future__r   osnumpyr   ra   pandasr7   xarrayrV   
datashaderr   r   datashader.datatypesr   r8   r   rP  df_pdr)   r   r*   r+   atboolr  getenvr   spatialpandasr5   spatialpandas.geometryr1   ImportErrorr=   rA   rR   rC   df_cudadfs
DataFramesr  r   r  r  r  r  r  r   r  r  r  rP   rQ   r^   rc   ru   rz   r   r   markskipifr   parametrizer   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r  r  r  r!  r$  r'  r*  r,  r.  r7  r<  r>  r@  rJ  rT  rZ  r^  rb  rf  ro  rw  r{  r  r  r  r  r  r  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  rH  rL  rT  rZ  r\  r`  rh  ro  r  line_manual_range_paramsr  r  line_autorange_paramsr  r  r  r  r  r  r  r  r  r  r  r   r  r  r   linspacer  r  r  r  rM  r  r  r  r  r  r   line_antialias_nan_sol_intersectline_antialias_nan_sol_maxr   line_antialias_nan_paramsr  r  r  rd  r`  r	  r  r   r  r   rL  r   r   r   r   r  r  r  r\  rD  r  r   r#  r'  r+  r-  r/  r3  r6  r8  r:  r   r>   r<   <module>rU     sD:   " " " " " " 				                        , , , , , ,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**
|"":..     4IBI3Q7788990000000   I	BBB
- - - KKKKKK 
 
 

 nU##G'
C/JJ      D4'CJJJ  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( ( ( (") ) ) )A A A  
 
 
P P P
 L)FGG
2 
2 HG
2 s##	? 	? $#	? s##C C $#C s##= = $#= s##= = $#= s##= = $#= s##c c $#c s##c c $#c s##\ \ $#\ s##\ \ $#\ s##Y Y $#Y s##Y Y $#Y s##* * $#* s##* * $#* s##_ _ $#_ s##_ _ $#_ s##. . $#. s##. . $#. s##a a $#a s##` ` $#` s##Z Z $#Z
 s##Z Z $#Z
 s##Y Y $#Y" s##Y Y $#Y" s##I I $#I" s##H H $#H" s##G G $#G s##G G $#G s##Y Y $#Y6 s##X X $#X6 s##e e $#e4 s##e e $#e4 s##. . $#.< s##&; &; $#&;R s##  $# s##> > $#> s##= = $#= s##= = $#= s##	7 	7 $#	7 s##  $#( s##  $# s##  $#6 s##    $# F s##; ; $#;  s##  $#* s##  $# s##  $#2 s##  $# s##  $#@ s##  $#D s##? ? $#? s##> > $#> s##e e $#e s##d d $#d s##  $# s##  $# s##	c 	c $#	c s##	c 	c $#	c s##
K 
K $#
K j1117 17 2117h7 7 7 !1!1!122$$< < %$ 32<, s##M M $#M& F#@AA7 7 BA7@ F#@AA7 7 BA7@8 8 8.  (  ( s##K K $#K&  (: : :( F#@AA.v&-v&+ !>21  7 7  BA76)' )' )'V(U (U (UTY Y YB!Y !Y !YFY Y Y4M M M28 8 8$9 9 90 "g1g1g1g1g1g   	!!!%7%7%7a@@@B 1g1g1g   	xrx


##'9'9'9BBB	D !f1g!f   	!!!XRXjjj%9%9BBB	D QAq)!QAq)   	sc"""$ jjjjjjjj	  
 	d|d|!4446 jjjjjjjj	  
 	d|t!,,,. RX1v}}}-5FGGGRX2w.6GHHH   	sc"""$a4 j  ## HBH : : :;?  
 
 D&!!!		#   j11-/GHH 8  8 IH 21 8L 1g1g1g2h1g1g   	!!!%7%7%7a@@@B !f1g!f   	!!!XRXjjj%9%9BBB	D QAq)!QAq)   	sc"""$ jjjjjjjj	  
 	d|d|!4446 jjjjjjjj	  
 	d|t!,,,. RXzzz:::.6GHHHRXzzz:::.6GHHH   	sc"""$S- \     HBH%%%';';';<O  
 
 D&!!!		#   j11-/DEE1v..18 18 /. FE 2118h j11    21 H j11! ! 21!H 8  8  8F j11/	T26l1g!f"&k1g!f      2 2 26H6H6HqQQQS 
T"aA&Q1%     	sc"""$ 
Tmmvq!njjvq!n	 
   
 tt1EEEG 
TRX{{{QF+3DEEERXzzzAq6*2CDDD     	sc"""$52  >> >?  21@>B j11/	T1g1g!f!f2h!f      2 2 26H6H6HqQQQS 
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RX{{{III.6GHHHRXzzz:::.6GHHH     	sc"""$S-2 - -\8 8]- - 21^8B 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RX{{{QF+3DEEERXzzzAq6*2CDDD     	sc"""$9 2    B8 8C    21D8B 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     tt'+Tl< < <= 
Tkkiijjjj	 
   
 tdKKKM 
TRX{{{III.6GHHHRXzzz:::.6GHHH28ZZZ4<MNNN     	sc91555	7i92 9 9t u9 9 21v>  H      " " "   !BLrz,,,rz,,,r{3Qr{5#q!!
,," " "     rxVRVrv26RVrvSUSY]_]cegeklVSx26RVrvS[]`egeklVXs26RVrvSV]`egeklVRVx8RVxS[]`egeklVRVrv3XsSUSY]`egeklVRVrv8SxSUSY]`egeklVRVrv3XsSUSY]`egeklVRVx8RVxS[]`egeklVXs26RVrvSV]`egeklVSx26RVrvS[]`egeklVRVrv26RVrvSUSY]_]cegekl!    "*VRVrv26RVrvSUSY]_]cegeklVSx26RVrvS[]`egeklVXs26RVrvSV]`egeklVRVx8RVxS[]`egeklVRVrv3XsSUSY]`egeklVRVrv8SxSUSY]`egeklVRVrv3XsSUSY]`egeklVRVx8RVxS[]`egeklVXs26RVrvSV]`egeklVSx26RVrvS[]`egeklVRVrv26RVrvSUSY]_]cegekl+ " "   rxVRVrv26RVbfrvQSQWZ\Z`cecijVRVrv26RVbfrvQSQWZ\Z`cecijVSw7WgwQXZacecijVXx8WgwQXZ]cecijVRVrv26RVbfrvQSQWZ\Z`cecijVRVrv26RVbfrvQSQWZ\Z`cecijVRVrv26RVbfrvQSQWZ\Z`cecijVRVrv26RVbfrvQSQWZ\Z`cecijVRVrv26RVbfrvQSQWZ\Z`cecijVRVrv26RVbfrvQSQWZ\Z`cecijVRVrv26RVbfrvQSQWZ\Z`cecij!    "*000000000000000000000000000000000+ 
" " "  "*000000000000000000000000000000000+ 
" " "  "*000000000000000000000000000000000+ 
" " "  "*000000000000000000000000000000000+ 
" " " `8 `8 `8FD8 D8 D8N $,28s3Ss3UX_gils{|s8Ss3U]_gilsv|x3Ss8U]_biqs{|x8Ss8UX_giqsv|s3Xx3U]_gilsv|s3Xx8U]_bilsv|s3Xx8U]_bilsv|s3Xx3U]_gilsv|x8Ss8UX_giqsv|x3Ss8U]_biqs{|s8Ss3U]_gilsv|s3Ss3UX_gils{|- $ $   &RXs3SsCcPSZbdgnvws8SsCcPXZbdgnqwx3SsChPXZ]dlnvwx8SsHhPSZbdlnqws3XsHcPXZbdgnqws3SsChPXZ]dgnqws3SsChPXZ]dgnqws3XsHcPXZbdgnqwx8SsHhPSZbdlnqwx3SsChPXZ]dlnvws8SsCcPXZbdgnqws3SsCcPSZbdgnvw'   " 
TttRVS#rvsCc
JRVS#rvsCc
J      	D3#A @B 
Tttbfc3'bfc3'bfc3'bfc3'	  
    	DD$<D$<a000$&FH 
Ttt::FBF::::FBF::      	D)))-K-K-KRSTTT$&FH 
Ttt::FBF::      	D828S#rvsC0115S5S5SZ[\\\$&FH 
Ttt::FBF::      	D828S#rvsC0115S5S5SZ[\\\$&(H(JL 
Ttt
"(S#rvsC03RVS#2NO*, , ,
"(S#rvsC03RVS#2NO*, , ,      	D3#A$&FHk= |  $$ Dhbh#sCc3L#sCc3L )	* * * + + +
 D&!!!,.N	
   EG`aa)E4=998 8 :9 ba8$K K K, )E4=992 2 :92  
BF7OO
BF7OO'  < <	 <U+ U+ U+p 3RVXXtRZ RXZZBJ'RVG__bj"*-RVG__bj"*-RVG__bj"*-RXfbfWoo"(3RXfbfWoow''RZ@6  % % % s##BI%   BI%000BI%   BI%000	$  " "  $#"
 
BFHHBHJJBGG
BF7OO
BF7OOBJ62688
BF7OOBHVRVG__g&&	& 	 	@ @	 	@I I I63 3 3  s### # $##  s### # $##  s### # $##  s### # $##  s##_ _ $#_> s##_ _ $#_> s##_ _ $#_> s##_ _ $#_ _ _s$   
I 	II!"J JJ