
    z-Ph;                       d dl mZ d dlmZ d dlZd dlZ	 d dlZn# e$ r dZY nw xY wd dl	Z	d dl
Zd dlmZ d dlmZ d dlmZ d Zd Zd Zd	 Ze	j        j        d
             Zd Zd Ze	j        j        d             Zd Zd Zd Ze	j                            dg d ej                     fg d ej!                    fg d ej"                    fg d ej#                    fg  ej$         ej%                              fddgdgg ej$         ej!                              fdgdddgg ej$         ej#                              fg d ej&         ej'        d ej!                               ej'        d ej#                              g          fg          d             Z(e	j        j)        d             Z*e	j        j)        d             Z+e	j        j)        d              Z,e	j        j)        d!             Z-e	j        j)        d"             Z.e	j        j)        e	j        j/        d#                         Z0d$ Z1d% Z2d& Z3d' Z4d( Z5 G d) d*          Z6 G d+ d,          Z7e	j                            d-e6e7g          d.             Z8d/ Z9e	j                            d-e6e7g          d0             Z:d1 Z;d2 Z<d3 Z=d4 Z>d5 Z?d6 Z@d7 ZAd8 ZBd9 ZCd: ZDd; ZEd< ZFd= ZGd> ZHd? ZId@ ZJdA ZKdB ZLdC ZMdD ZNdE ZOdF ZPdG ZQe	j        j        e	j                            dHg dI          dJ                         ZRe	j        j        dK             ZSe	j        j        dL             ZTe	j        j        dM             ZUe	j        j        dN             ZVe	j        j        dO             ZWe	j        j        dP             ZXdQ ZYdR ZZdS Z[dT Z\e	j        j)        dU             Z]e	j        j        dV             Z^dW Z_dX Z`dY Zae	j        j)        dZ             Zbe	j                            d[ejc        ejd        g          d\             Zed] Zfd^ Zgd_ Zhd` Zida Zjdb Zkdc Zldd Zme	j                            d[ejc        ejd        g          de             Zne	j                            d[ejc        ejd        g          df             Zoe	j                            d[ejc        ejd        g          dg             Zpdh Zqe	j                            d[ejc        ejd        g          di             Zre	j                            d[ejc        ejd        g          dj             Zsdk Ztdl Zue	j                            d[ejc        ejd        g          dm             Zve	j                            d[ejc        ejd        g          dn             Zwdo Zxdp Zydq Zzdr Z{ds Z|dt Z}du Z~dv Ze	j        j)        dw             Zdx Zdy Zdz Zd{ Zd| Zd} Zd~ Ze	j                            d[ejc        ejd        g          d             Ze	j                            d[ejc        ejd        g          d             Ze	j                            d[ejc        ejd        g          d             Ze	j        j        d             Ze	j                            dg dg dfefg dg dfej        fdgddggdgddggfej        fg          d             Ze	j                            d[ejc        ejd        g          d             Ze	j                            dg dg dfej        fdgddggdgddggfej        fg          d             Ze	j                            dg dg dfefg dg dfej        fdgddggdgddggfej        fg          d             Ze	j                            d[ejc        ejd        g          d             Ze	j        j)        d             Ze	j        j)        d             Zd Ze	j        j)        d             Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Ze	j        j        d             Ze	j        j        d             Ze	j        j        d             Zd Ze	j        j        d             Ze	j        j        d             Ze	j        j        d             Ze	j        j        e	j                            d[ejc        ejd        g          d                         Ze	j        j        d             Ze	j        j        d             Ze	j        j        d             Ze	j        j        d             Ze	j        j        d             Ze	j        j        d             Ze	j        j        d             Ze	j        j        d             Ze	j        j        d             Ze	j                            d[ejc        ejd        g          d             Ze	j                            d[ejc        ejd        g          d             Ze	j        j        e	j                            dej        ej        g          d                         Ze	j        j        e	j                            dej        ej        g          d                         Ze	j        j        d             Ze	j        d             Ze	j        d             Ze	j        d             Ze	j        d             Ze	j        d             Ze	j        d             Ze	j        d             Ze	j        d             Ze	j        d             Ze	j        d             Ze	j        d             Ze	j        d             Zd Zd ZdÄ ZdĄ Zdń ZdS )    )OrderedDict)IterableN)from_dataframe)Versionc                     t          j        g t          j                              } | j        t          j                    k    sJ |                                 g k    sJ |                                  t          j        g d          }|j        t          j                    k    sJ t          j        t                    5  t          j        g            d d d            n# 1 swxY w Y   t          j        g dg dg dg          } t          | j        t                    sJ t          d | j        D                       sJ t          d |                                 D                       sJ t          | j                  dk    sJ |                                 t#          d	 |                                 D                       k    sJ t%          j        |           t(                              |           |                                 z   k    sJ | j        d
k    sJ |                                  t/          j        |           } |            J ~  |            J d S )Ntypebinary                        	   c              3   T   K   | ]#}t          |t          j        j                  V  $d S N
isinstancepalib
Int64Array.0cs     X/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/pyarrow/tests/test_table.py	<genexpr>z,test_chunked_array_basics.<locals>.<genexpr>4   s1      EEAz!RV.//EEEEEE    c              3   T   K   | ]#}t          |t          j        j                  V  $d S r   r   r   s     r!   r"   z,test_chunked_array_basics.<locals>.<genexpr>5   s1      KKAz!RV.//KKKKKKr#   r   c              3   >   K   | ]}|                                 V  d S r   )get_total_buffer_sizer   s     r!   r"   z,test_chunked_array_basics.<locals>.<genexpr>7   sJ       /K /K34 01/F/F/H/H /K /K /K /K /K /Kr#   H   )r   chunked_arraystringr	   	to_pylistvalidater
   pytestraises
ValueErrorr   chunkslistall
iterchunkslenr&   sumsys	getsizeofobject
__sizeof__nbytesweakrefref)datadata2wrs      r!   test_chunked_array_basicsr?   "   s   BRY[[111D9	####>>r!!!!MMOOORh///E:$$$$	z	"	"  
               						  D
 dk4(((((EEEEEEEEEEKK9J9JKKKKKKKKt{q    %%''3 /K /K8<8I8I/K /K /K ,K ,K K K K K=&"3"3# #**,,#- - - - -;)####MMOOO	T		B244244<<<<<s   C""C&)C&c                  z   t          j        g dg dg dg          } | j        t          j                    k    sJ t	          |           dk    sJ t	          | j                  dk    sJ t          j        g dg dg dg          } | j        t          j                    k    sJ t	          |           dk    sJ t	          | j                  dk    sJ t          j        g dg dg dgt          j                              } | j        t          j                    k    sJ t	          |           dk    sJ t	          | j                  dk    sJ t          j        g dg g          } | j        t          j                    k    sJ t	          |           dk    sJ t	          | j                  dk    sJ d	}t          j        t          |
          5  t          j        g           sJ 	 d d d            n# 1 swxY w Y   t          j        g t          j
                              j        t          j
                    k    sJ t          j        g g          j        t          j                    k    sJ t          j        g gt          j
                              j        t          j
                    k    sJ d S )Nr   r   r   r   r         @      @g      @r   r   z@cannot construct ChunkedArray from empty vector and omitted typematch)r   r(   r	   int64r3   r/   int8r,   r-   r.   r)   null)arrmsgs     r!   test_chunked_array_constructionrK   D   s   

						  C
 8rxzz!!!!s88q====sz??a

				  C
 8rxzz!!!!s88q====sz??a

				 GII	  C
 8rwyy    s88q====sz??a

		
  C 8rxzz!!!!s88q====sz??a
LC	z	-	-	- $ $######$ $ $ $ $ $ $ $ $ $ $ $ $ $ $ BRY[[1116")++EEEERD!!&"'))3333RDry{{3338BIKKGGGGGGs   G88G<?G<c                      t          j        ddg          } t          j        | | g          }|                                }t          j        g d          }|                    |          sJ d S )Nr   r   r   r   r   r   )r   arrayr(   combine_chunksequals)rI   chunked_arrresexpecteds       r!   test_combine_chunksrT   q   sk    
(Aq6

C"C:..K

$
$
&
&Cx%%H::hr#   c                     t          j        g t          j                                                              t          j        g t          j                              k    sJ t          j        t          j        g t          j                              gt          j                                                              t          j        g t          j                              k    sJ d S )Nr   )r   r(   bool_rO   rN    r#   r!   4test_chunked_array_can_combine_chunks_with_no_chunksrX   z   s    BRXZZ000??AARX
F F F     	"28::	&	&	&'bhjj  n"(2BHJJ7778 8 8 8 8 8r#   c                     t          j        g dg dg g          } t          j        |           }|                                 }t          |t          j                  sJ |j        dk    sJ t          j        ||          sJ d S )Nr   r   )r   )	r   r(   npasarrayto_numpyr   ndarrayshapearray_equal)r<   arr1arr2s      r!   test_chunked_array_to_numpyrb      s    				
  D
 :dD==??DdBJ''''':>$%%%%%%%r#   c                     d} t          j        t          |           5  t          j        t          j        g d          t          j        g d          g           d d d            n# 1 swxY w Y   t          j        t          |           5  t          j        t          j        g d          gt          j                               d d d            d S # 1 swxY w Y   d S )Nzchunks must all be same typerD   r         ?       @      @r   )r,   r-   	TypeErrorr   r(   rN   float64)rJ   s    r!   !test_chunked_array_mismatch_typesrj      si   
(C	y	,	,	,  
HYYYH\\\""
 	 	 	               
y	,	,	, C C
"(999--.RZ\\BBBBC C C C C C C C C C C C C C C C C Cs#   ?A))A-0A-=CC Cc                      t          j        g d          t          j        g d          g} t          j        |           } t          |           dk    sJ d S )Nr   r   z<[
  [
    1,
    2,
    3
  ],
  [
    4,
    5,
    6
  ]
])r   rN   r(   strr<   s    r!   test_chunked_array_strrn      si    

D D!!Dt99       r#   c                     t          j        g d          t          j        g d          g} t          j        |           } | d                                         dk    sJ | d                                         dk    sJ | d                                         dk    sJ t	          j        t                    5  | d          d d d            n# 1 swxY w Y   t	          j        t                    5  | d          d d d            n# 1 swxY w Y   | t          j        d                                                   dk    sJ | dd	         }|	                                d
d	gk    sJ | d	d         }|	                                dgk    sJ | dd         }|j
        | j
        k    sJ |	                                g k    sJ d S )Nr   r   r   r   r   iir   r   r   c   )r   rN   r(   as_pyr,   r-   
IndexErrorrZ   int32r*   r	   )r<   
data_slices     r!   test_chunked_array_getitemrv      sA    	
D D!!D7==??a8>>q    8>>q    	z	"	"  Q              	z	"	"  R               ""$$))))acJ!!aV++++adJ!!aS((((beJ?di''''!!R''''''s$   :	CCC3	DDDc                  2   t          j        g d          t          j        g d          g} t          j        |           } |                     t	          |                     }|j        | j        k    sJ |                                g k    sJ |                     t	          |           dz             }|j        | j        k    sJ |                                g k    sJ t           j                            | gdg          }|                    t	          |                    }t	          |          dk    sJ t           j                            | gdg          }|                    t	          |          dz             }t	          |          dk    sJ d S )Nr   r   
   anamesr   )	r   rN   r(   slicer3   r	   r*   Tablefrom_arrays)r<   ru   tabletable_slices       r!   test_chunked_array_slicer      sy   

D D!!DCII&&J?di''''!!R''''CIIN++J?di''''!!R''''H  $u 55E++c%jj))K{q    H  $u 55E++c%jj2o..K{q      r#   c                     t          j        dg          t          j        g d          t          j        g d          t          j        g d          g} t          j        |           }t          t	          d          |          D ]\  }}||                                k    sJ  t          |t                    sJ d S )Nr   r   r   r   rx   )r   rN   r(   ziprangerr   r   r   )r<   rI   ijs       r!   test_chunked_array_iterr      s    
!


	D 
4
 
 CE"IIs##  1AGGII~~~~~c8$$$$$$$r#   c                     d } d } | t          j        g t          j                              t          j        g t          j                                          |t          j        g t          j                              t          j        g t          j                                         t          j        ddgt          j                              }t          j        ddgt          j                              }t          j        ddgt          j                              }t          j        g dt          j                              } | |g|g            ||g|g            | ||g||g            | ||g|g            |||g||g           t          j        g t          j                                                  d           rJ d S )Nc                 `   t          | t          j                  r| }nt          j        |           }t          |t          j                  r|}nt          j        |          }|                    |          sJ |                    |          sJ ||k    sJ |t          |          k    sJ d S r   )r   r   ChunkedArrayr(   rP   rl   xarrsyarrsxys       r!   eqz%test_chunked_array_equals.<locals>.eq   s    eR_-- 	(AA ''AeR_-- 	(AA ''Axx{{xx{{AvvvvCFF{{{{{{r#   c                 6   t          | t          j                  r| }nt          j        |           }t          |t          j                  r|}nt          j        |          }|                    |          rJ |                    |          rJ ||k    sJ d S r   )r   r   r   r(   rP   r   s       r!   nez%test_chunked_array_equals.<locals>.ne  s    eR_-- 	(AA ''AeR_-- 	(AA ''A88A;;88A;;Avvvvvvr#   r   r   r   r   )r   r   r   r   )r   r(   rt   rF   rN   rP   )r   r   ry   br    ds         r!   test_chunked_array_equalsr      s        Br,,,	,,,. . .Br,,,	,,,. . . 	!Qbhjj)))A
!Qbhjj)))A
!Qbhjj)))A
BHJJ///ABsQCLLLBsQCLLLB1v1vB1vsOOOB1v1v 444;;DAAAAAAAr#   )r<   typ)TFTT)r   r   r   r   )re         @N)ry   Nr   r   r   r   ry   r   r    ))r   ry   )r   r    Nc                    g }| r=|                     t          j        | d d         |                     | dd          } | =t          j        ||          }|                                 |                    |                    |                    }|                                 |                    |          sJ d S )Nr   r   )appendr   rN   r(   r+   loadsdumpsrP   )r<   r   pickle_modulearraysrN   results         r!   test_chunked_array_pickler   (  s     F
 bhtBQBxc222333ABBx   V#...E	NN  !4!4U!;!;<<F
OO==r#   c                  r   dd l } t          j        g d          g}t          j        |dg          }|                    d          }t          |t          j                  sJ |                                }t          || j                  sJ |j	        dk    sJ |d         dk    sJ |j
        dk    sJ d S )Nr   r   r   rx   ry   rz   )r   r   )pandasr   rN   r   columnr   r   	to_pandasSeriesr^   name)pdr<   r   colseriess        r!   test_chunked_array_to_pandasr   B  s     	$$$%%D HT#'''E
,,q//Cc2?+++++]]__Ffbi(((((<4!9;#r#   c                     dd l } dd lm} t          j        g d          t          j        |                     g d                    t          j        |                     dd                    t          j        |                     ddd                    t          j        g dt          j        d	                    t          j        g dt          j        d	d                    fD ]}t          j        d
|i          }|	                    d
          
                                }|j        d
k    sJ |                     |
                                d
          }|                    ||           d S )Nr   r   ry   r   ry   2012r   )periodszEurope/Brussels)r   tzmsr   )r   )r   pandas.testingtestingr   rN   Categorical
date_range	timestampr   r   r   r   r   assert_series_equal)r   tmr<   r   r   rS   s         r!   *test_chunked_array_to_pandas_preserve_namer   S  se     HYYYHR^^OOO4455HR]]61]5566HR]]619J]KKLLHYYYT 2 233HYYYT3D E EFFH 1 1 &$((f%%//11{f$$$$99T^^--F9;;
vx00001 1r#   c                  z   dd l } |                     |                     ddd                    }t          j        |          }|                                }|j        dk    sJ |j        dk    sJ |j        dk    sJ |j        	                    |j                  sJ |                     |                     ddd                    }t          j        |          }|                                }|j        dk    sJ |j        dk    sJ |j        dk    sJ |j        	                    |j                  sJ d S 	Nr   rx   r   )index)rx   r   r   r   )r   r   )
r   	DataFrame
RangeIndexr   r   r   num_rowsr^   r   rP   )r   r<   r   r   s       r!   .test_table_roundtrip_to_pandas_empty_dataframer   g  sB   
 <<bmmAr155<66DHTNNE__F>R:    <7""""<tz*****<<bmmAr155<66DHTNNE__F>Q:<6!!!!<tz*******r#   c                     dd l } |                     |                     ddd                    }t          j                            |          }|                                }|j        dk    sJ |j        dk    sJ |j        dk    sJ |j	        
                    |j	                  sJ |                     |                     ddd                    }t          j                            |          }|                                }|j        dk    sJ |j        dk    sJ |j        dk    sJ |j	        
                    |j	                  sJ d S r   )r   r   r   r   RecordBatchfrom_pandasr   r   r^   r   rP   )r   r<   batchr   s       r!   4test_recordbatch_roundtrip_to_pandas_empty_dataframer     sR   
 <<bmmAr155<66DN&&t,,E__F>R:    <7""""<tz*****<<bmmAr155<66DN&&t,,E__F>Q:<6!!!!<tz*******r#   c                  0   dd l } dd lm} |                     ddgddgd          }t	          j        |          }|j                                                                        }|j	        dk    sJ |
                    ||j        d d                    d S )Nr   r   r   g?g?ry   r   r   r   )r   r   r   r   r   r   schemaempty_tabler   r^   assert_frame_equaliloc)r   r   dfr   r   s        r!   test_to_pandas_empty_tabler     s     	QF#s44	5	5BHRLLE\%%''1133F<6!!!!&"'"1"+.....r#   c                  l   t          j        dg          t          j        g d          g} t          j        |           }t          j        |          }|                                g dk    sJ |j        t          j        d          k    sJ t          j        |d          }|                                g dk    sJ t          j        dd g          t          j        g d          g} t          j        |           }t          j        |          }|                                }|d         d	k    sJ t          j        |d                   sJ |d
d          g dk    sJ |j        t          j        d          k    sJ t           j        	                    t          j        g d          t          j        g d                    }t          j        ||g          }t          j        |          }|j        t          j        d          k    sJ |                                g dd
z  k    sJ d S )Nr   r   )r   r   r   r   rF   rl   dtype)0123r   re   r   rd   ri   )r   r   r   r   r   ry   r   r    r7   )ry   r   r    ry   r   )
r   rN   r(   rZ   r[   tolistr   isnanDictionaryArrayr~   )r<   rQ   np_arrelementsrI   s        r!   test_chunked_array_asarrayr     s"    	!
D "4((KZ$$F==??lll****<28G,,,,,, Z5111F==??2222222 	!T
D "4((KZ$$F}}HA;"8HQK     ABB<<<<''''<28I...... 

(
(
!!28OOO#<#<> >C"C:..KZ$$F<28H------==??777!;;;;;;;r#   c            	      B   t          j        t          j        dt          j                              t          j        dt          j                              g          } t          j        g d|           }t          j        |          }|                                \  }}|                    t          j        t          j        g dt          j                                                  sJ |                    t          j        t          j        g dt          j                                                  sJ t          j        g |           }t          j        |          }|                                \  }}|                    t          j        t          j        g t          j                                                  sJ |                    t          j        t          j        g t          j                                                  sJ d S )Nr   r   )r   r   r         @)r         @r   )r   r   r   )r   r   r   )	r   structfieldint16float32rN   r(   flattenrP   )tyry   carrr   r   s        r!   test_chunked_array_flattenr     s   	BHS"(**--HS"*,,//1 
2 
2B
///b999AAD<<>>DAq88B$RXiiibhjj%I%I%IJJKKKKK88B$RXooo35:<<&A &A &A B B C C C C C 	"AAD<<>>DAq88B$RXbrxzz%B%B%BCCDDDDD88B$RXbrz||%D%D%DEEFFFFFFFr#   c                     t          j        t          j        g d                                          t          j        g d                                          g          } |                     d          j                            t          j        ddg                    sJ |                     d          j                            t          j        ddg                    sJ |                                 } t          j        g d          }|                     d          j                            |          sJ |                     d          j                            |          sJ |                                 g d	k    sJ d S )
NfoobarNr   )quuxNr   r   r   r   r   r   r   r   r   )r   r   Nr   r   Nr   )	r   r(   rN   dictionary_encodechunk
dictionaryrP   unify_dictionariesr*   )rI   expected_dicts     r!   %test_chunked_array_unify_dictionariesr     s`   


,,,--??AA
&&&''99;;  C 99Q<<"))"(E5>*B*BCCCCC99Q<<"))"(FE?*C*CDDDDD

 
 
"
"CH33344M99Q<<"))-8888899Q<<"))-88888==??NNNNNNNNNr#   c                      t          j        t          d          5  t          j                     d d d            d S # 1 swxY w Y   d S )Nr   rD   )r,   r-   rh   r   r   rW   r#   r!   test_recordbatch_dunder_initr     s    	y	6	6	6  
                    =AAc                      G d d          } t          j        g dt          j                              }t          j        |g          } | |          }t          j        |          }||k    sJ t          j        |t          j                              }||                    t          j                              k    sJ d S )Nc                       e Zd Zd ZddZdS ):test_chunked_array_c_array_interface.<locals>.ArrayWrapperc                     || _         d S r   )rN   )selfrN   s     r!   __init__zCtest_chunked_array_c_array_interface.<locals>.ArrayWrapper.__init__  s    DJJJr#   Nc                 6    | j                             |          S r   )rN   __arrow_c_array__r   requested_schemas     r!   r  zLtest_chunked_array_c_array_interface.<locals>.ArrayWrapper.__arrow_c_array__  s    ://0@AAAr#   r   __name__
__module____qualname__r   r  rW   r#   r!   ArrayWrapperr     s=        	 	 		B 	B 	B 	B 	B 	Br#   r  r   r   )r   rN   rF   r(   r   cast)r  r<   chunkedwrapperr   s        r!   $test_chunked_array_c_array_interfacer    s    B B B B B B B B 8IIIrxzz**Dv&&Gl4  G g&&FW gBHJJ777FW\\"(**--------r#   c                  H    G d d          } t          j        g dg dg          } | |          }t          j        |          }||k    sJ t          j        |t          j                              }||                    t          j                              k    sJ d S )Nc                       e Zd Zd ZddZdS )Btest_chunked_array_c_stream_interface.<locals>.ChunkedArrayWrapperc                     || _         d S r   )r
  )r   r
  s     r!   r   zKtest_chunked_array_c_stream_interface.<locals>.ChunkedArrayWrapper.__init__      "DLLLr#   Nc                 6    | j                             |          S r   )r
  __arrow_c_stream__r  s     r!   r  zUtest_chunked_array_c_stream_interface.<locals>.ChunkedArrayWrapper.__arrow_c_stream__  s    <223CDDDr#   r   r  r  r  r   r  rW   r#   r!   ChunkedArrayWrapperr    s=        	# 	# 	#	E 	E 	E 	E 	E 	Er#   r  r   )r   Nr   r   )r   r(   r   r	  )r  r<   r  r   s       r!   %test_chunked_array_c_stream_interfacer    s    E E E E E E E E YYY566D!!$''G g&&FT>>>> gBHJJ777FTYYrxzz********r#   c                       e Zd Zd ZddZdS )BatchWrapperc                     || _         d S r   r   r   r   s     r!   r   zBatchWrapper.__init__!      


r#   Nc                 6    | j                             |          S r   )r   r  r  s     r!   r  zBatchWrapper.__arrow_c_array__$  s    z++,<===r#   r   r  rW   r#   r!   r  r     s7          > > > > > >r#   r  c                       e Zd Zd ZddZdS )BatchDeviceWrapperc                     || _         d S r   r  r  s     r!   r   zBatchDeviceWrapper.__init__)  r  r#   Nc                 (     | j         j        |fi |S r   )r   __arrow_c_device_array__)r   r  kwargss      r!   r"  z+BatchDeviceWrapper.__arrow_c_device_array__,  s     2tz23CNNvNNNr#   r   )r  r  r  r   r"  rW   r#   r!   r  r  (  s=          O O O O O Or#   r  wrapper_classc                    t          j        t          j        g dt          j                              gdg          } | |          }t          j        |          }||k    sJ t          j        t          j        dt          j                              g          }t          j        ||          }t          j        t          j        g dt          j                              gdg          }||k    sJ d S Nr   r   ry   rz   r   )r   record_batchrN   rF   r   r   rt   )r$  r<   r  r   castable_schemarS   s         r!   "test_recordbatch_c_array_interfacer*  0  s   ?
,,,U  D mD!!G _W%%FT>>>> i
bhjj!!!  O _W_===F
,,, U  H Xr#   c                  B   t          j        t          j        g dt          j                              gdg          } t	          j        t          d          5  |                     d           d d d            n# 1 swxY w Y   |                     d           }d S )	Nr   r   ry   rz   z7Received unsupported keyword argument\(s\): \['other'\]rD   znot-none)other)r   r(  rN   rF   r,   r-   NotImplementedErrorr"  )r<   _s     r!   =test_recordbatch_c_array_interface_device_unsupported_keywordr/  F  s    ?	)))"(**	-	-	-.se  D 
H
 
 
 8 8 	%%J%777	8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 	%%D%11AAAs   A>>BBc                 :   t          j        t          j        g dt          j                              gdg          } | |          }t          j        |          }t           j                            |g          }||k    sJ t          j        t          j        dt          j	                              g          }t          j        ||          }t          j        dt          j        g dt          j	                              i          }||k    sJ d S r&  )
r   r(  rN   rF   r   r}   from_batchesr   r   rt   )r$  r<   r  r   rS   r)  s         r!   test_table_c_array_interfacer2  V  s   ?
,,,U  D mD!!G XgFx$$dV,,HX i
bhjj!!!  O Xgo666FxRXiiibhjj111  H Xr#   c                      G d d          } t          j        t          j        g dt          j                              gdg          t          j        t          j        g dt          j                              gdg          g} | |          }t          j        |          }t           j                            |          }||k    sJ t          j        ||d         j        	          }||k    sJ t          j        t          j        dt          j	                              g          }t          j        ||	          }||
                    |          k    sJ t          j        t           j        j        d
          5  t          j        |t          j        t          j        dt          j        t          j	                                        g          	           d d d            d S # 1 swxY w Y   d S )Nc                       e Zd Zd ZddZdS )4test_table_c_stream_interface.<locals>.StreamWrapperc                     || _         d S r   )batches)r   r7  s     r!   r   z=test_table_c_stream_interface.<locals>.StreamWrapper.__init__o  r  r#   Nc                     t           j                            | j        d         j        | j                  }|                    |          S Nr   )r   RecordBatchReaderr1  r7  r   r  )r   r  readers      r!   r  zGtest_table_c_stream_interface.<locals>.StreamWrapper.__arrow_c_stream__r  s?    )66Q&6 6F,,-=>>>r#   r   r  rW   r#   r!   StreamWrapperr5  n  s7        	# 	# 	#	? 	? 	? 	? 	? 	?r#   r<  r   r   ry   rz   r   r   r'  zField 0 cannot be castrD   )r   r(  rN   rF   r   r}   r1  r   r   rt   r	  r,   r-   r   ArrowTypeErrorlist_)r<  r<   r  r   rS   good_schemas         r!   test_table_c_stream_interfacer@  m  s0   ? ? ? ? ? ? ? ? 	)))"(**===>seLLL
)))"(**===>seLLLD mD!!G XgFx$$T**HX Xgd1gn555FX )RXc28::66788KXgk222FX]];////// 

%=
 
 
 
 
 	BIrxRXbhjj5I5I'J'J&KLL	
 	
 	
 	

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
s   
A G77G;>G;c                     t          j        t          d          d          t          j        g dd          g} t          j        | ddg          }g }|                                D ]}|                    |           |j        |k    sJ |t          j        ||j                  k    sJ |t          j        |d	d          |j        d	d                    k    sJ ||k    sJ d S )
Nr   r   r   r   r   r   Nrx   rt   c0c1rz   r   )r   rN   r   r(  itercolumnsr   columnscolumn_names)r<   r   rF  r   s       r!   test_recordbatch_itercolumnsrH    s   
q(((
'''g666D OD4,//EG  ""  s=G####BOG53EFFFFFFFBOGABBKu7I!""7MNNNNNNNGr#   c                     t          j        t          d          d          t          j        g dd          g} t          j        g d          t          j        dgdgd	gg          g}d
dg}t          j        | |          }|t          j        | |          k    sJ |                    t          j        | |                    sJ |t          j        ||          k    sJ |                    t          j        ||                    rJ t          j        | |ddi          }|                    |          sJ |                    |d          rJ |                    d           rJ |dk    sJ d S )Nr   r   r   rB  rt   r   r   efrC  rD  keyvaluer{   metadataTcheck_metadatar   )r   rN   r   r(  rP   )data1r=   rG  r   
batch_metas        r!   test_recordbatch_equalsrT    s   
q(((
'''g666E
 	!!
3%#&''E $<LOE<00EBOE<888888<<|<<=====BOE<888888||BOE<@@AAAAAl+0'*:< < <JU#####  t <<<<< ||D!!!!!E>>>>>>r#   c            	      &   t          j        t          j        g d          t          j        g d          gddg          } |                     t          j        ddg                                        |                     dd                    sJ |                     t          j        dd g                                        t          j        t          j        dd g          t          j        dd g          gddg                    sJ d S )Nr   r   r   Nr   ry   r   r    r   rJ  f1f2r   r   r    )r   r(  rN   takerP   r|   r  s    r!   test_recordbatch_taker[    s
   O	$$$	%	%	+++	,	,	.	t E ::bh1v&&''..u{{1a/@/@AAAAA::bh4y))**11
1d),,bhT{.C.CDt	& 	&' ' ' ' ' ' 'r#   c                      t          j        t          j        g d          gdg          } | d         j        dk    sJ d S Nr   r   r   r   a0rz   r   )r   r(  rN   _name)rbs    r!   )test_recordbatch_column_sets_private_namerb    sF    	"(<<<001$	@	@	@Ba5;$r#   c            	      Z   t          j        ddg          } t          j        t          j        dt          j        t          j                                        g          }t          j        t                    5  t          j	        | g|           d d d            d S # 1 swxY w Y   d S )Nr   r   f0r'  )
r   rN   r   r   r>  utf8r,   r-   r-  r(  )rI   r   s     r!   ,test_recordbatch_from_arrays_validate_schemarf    s    
(Aq6

CYrx		':':;;<==F	*	+	+ . .
f----. . . . . . . . . . . . . . . . . .s   ;B  B$'B$c                     t          j        dg          t          j        g d          t          j        dg          g} t          j        t                    5  t          j        | g d           d d d            d S # 1 swxY w Y   d S )Nr   )tokyolikehappyderek)idtagsr   )r   rN   r,   r-   r.   r(  rm   s    r!   -test_recordbatch_from_arrays_validate_lengthsrn    s    HaSMM28$>$>$>??HgY!D 
z	"	" 6 6
4445556 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6s   A>>BBc                      t          j        g g           } t          |           dk    sJ | j        dk    sJ | j        dk    sJ d S r9  )r   r(  r3   r   num_columnsr  s    r!   test_recordbatch_no_fieldsrq    sS    OB##Eu::????>Q!!!!!!r#   c                     t          j        t          d                    t          j        g d          g} t          j        t
                    5  t          j        | g d           d d d            n# 1 swxY w Y   t          j        t
                    5  t          j        | dg           d d d            d S # 1 swxY w Y   d S Nr   r   r   rz   ry   )r   rN   r   r,   r-   r.   r(  rm   s    r!   *test_recordbatch_from_arrays_invalid_namesrt    s=   
q
$$$%%D 
z	"	" 5 5
OOO44445 5 5 5 5 5 5 5 5 5 5 5 5 5 5 
z	"	" + +
SE****+ + + + + + + + + + + + + + + + + +s$   A66A:=A:B??CCc                      t          j        t          d                    t          j        g d          g} t          j        | ddg          }|j        j        J d S )Nr   r   rC  rD  )r   rN   r   r(  r   rO  r<   r   s     r!   test_recordbatch_empty_metadatarw    s^    
q
$$$%%D
 OD4,//E< (((((r#   c                    t          j        t          d          d          t          j        g dd          g}t          j        dt          j                              t          j        dt          j                              g}t          j        |dd	i
          }t          j        ||          }|                     | 	                    |                    }|
                    |          sJ |j        |k    sJ d S )Nr   rG   r   r   r   intsfloats   foo   barrO  r'  )r   rN   r   r   rG   r   r   r(  r   r   rP   )r   r<   fieldsr   r   r   s         r!   test_recordbatch_pickler    s    
q'''
$$$9555D
 	##
2:<<((F Yv(8999FOD000E  !4!4U!;!;<<F===F""""""r#   c                     t          j        t          d                    t          j        g d          t          j        t          dd                    g} t           j                            | d          }|                    d                              |j                            d                    sJ |                    d                              |j                            d                    sJ t          j	        t                    5  |                    d           d d d            n# 1 swxY w Y   t          j	        t                    5  |                    d            d d d            n# 1 swxY w Y   t          j	        t                    5  |                    d	           d d d            d S # 1 swxY w Y   d S 
Nr   r   rx   r   rz   ry   r   r   r   )r   rN   r   r   r~   r   rP   r   r,   r-   KeyErrorrh   rs   rv  s     r!   test_recordbatch_get_fieldr    s@   
q
$$$%%
q"D
 N&&t?&CCE;;s""5<#5#5c#:#:;;;;;;;q>>  !3!3C!8!899999	x	 	   C               
y	!	!  D               
z	"	"  A                 6   D99D= D=E??FF#GG
G
c                     t          j        t          d                    t          j        g d          t          j        t          dd                    g} t           j                            | d          }|                    d                              |                    d                    sJ t          j        t          d	          5  |                    d
           d d d            n# 1 swxY w Y   t          j        t                    5  |                    d            d d d            n# 1 swxY w Y   t          j        t                    5  |                    d           d d d            d S # 1 swxY w Y   d S Nr   r   rx   r   rz   ry   r   z"Field "d" does not exist in schemarD   r   r   )r   rN   r   r   r~   r   rP   r,   r-   r  rh   rs   rv  s     r!   test_recordbatch_select_columnr  '  s   
q
$$$%%
q"D
 N&&t?&CCE<<##ELLOO44444	@
B 
B 
B  S               
y	!	!  T               
z	"	"  Q                 6   C44C8;C8D::D>D>FFFc                  |   t          j        g d          } t          j        g d          }t          j        ddgddgddgd d	d
gg          }t          j        | ||gg d          }|                    dg          }t          j        | gdg          }|                    |          sJ |                    ddg          }t          j        ||gddg          }|                    |          sJ |                    dg          }t          j        | gdg          }|                    |          sJ |                    ddg          }t          j        ||gddg          }|                    |          sJ |                    ddi          }|                    ddg          }d|j        j        v sJ t          j	        t          d          5  |                    dg           d d d            n# 1 swxY w Y   t          j	        t          d          5  |                    dg           d d d            n# 1 swxY w Y   |                    ddg          }t          j        ||gddg          }|                    |          sJ t          j        | ||gg d          }t          j	        t          d          5  |                    dg           d d d            n# 1 swxY w Y   |                    dg          }t          j        |gdg          }|                    |          sJ d S NrV  rW  r   r   r   r   r   r   r   rx   )rX  rY  f3rX  r  rY  r   ry   test   azField "f5" does not existrD   f5zindex out of bounds)rX  rY  rX  zField "f1" exists 2 times)r   rN   r(  selectrP   replace_schema_metadatar   rO  r,   r-   r  rs   )a1a2a3r   r   rS   batch2s          r!   test_recordbatch_selectr  <  s   	$$$	%	%B	+++	,	,B	Aq6Aq6Aq64!R9	:	:BORRL*<*<*<==E \\4&!!FtdV,,H=="""""\\4,''FBx$66H==""""" \\1#FtdV,,H=="""""\\1a&!!FBx$66H==""""" **C=99F]]D$<((F6=))))) 
x'B	C	C	C  dV               
z)>	?	?	?  aS               \\4,''FBx$66H==""""" ORRL*<*<*<==E	x'B	C	C	C  dV               \\4&!!FtdV,,H=="""""""6   G::G>G> II
I
K--K14K1c                      t          j        t                    5  t          j                            t          j        t          d                               d d d            d S # 1 swxY w Y   d S )Nr   )r,   r-   rh   r   r   from_struct_arrayrN   r   rW   r#   r!   *test_recordbatch_from_struct_array_invalidr  o  s    	y	!	! = =
((%((););<<<= = = = = = = = = = = = = = = = = =s   ?A&&A*-A*c            
         t          j        ddiddigt          j        dt          j                    fdt          j                    fg                    } t           j                            |           }|                    t           j                            t          j        dd gt          j                              t          j        d dgt          j                              gddg                    sJ d S Nry  r   rz  re   r   )	r   rN   r   rt   r   r   r  rP   r~   struct_arrayr   s     r!   "test_recordbatch_from_struct_arrayr  t  s    8
!xo&Y,x.FGHH  L ^--l;;F==33HaYRXZZ000HdC[rz||444	
 H	        r#   c                     t           j                            t          j        dd gt          j                              t          j        d dgt          j                              gddg          } |                                 }|                    t          j        ddiddigt          j        dt          j                    fdt          j                    fg                              sJ d S Nr   r   re   ry  rz  )	r   r   r~   rN   rt   r   to_struct_arrayrP   r   )r   r   s     r!    test_recordbatch_to_struct_arrayr    s    N&&HaYRXZZ000HdC[rz||444	
 H	 E ""$$F==
!xo&Y,x.FGHH         r#   c                      t          j        t          d          5  t          j                            t          j        t          d                               d d d            d S # 1 swxY w Y   d S )Nz*Argument 'struct_array' has incorrect typerD   r   )r,   r-   rh   r   r}   r  rN   r   rW   r#   r!   $test_table_from_struct_array_invalidr    s    	y(T	U	U	U 7 7
""28E!HH#5#56667 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7s   ?A((A,/A,c            
         t          j        ddiddigt          j        dt          j                    fdt          j                    fg                    } t           j                            |           }|                    t           j                            t          j        dd gt          j                              t          j        d dgt          j                              gddg                    sJ d S r  )	r   rN   r   rt   r   r}   r  rP   r~   r  s     r!   test_table_from_struct_arrayr    s    8
!xo&Y,x.FGHH  L X''55F==--HaYRXZZ000HdC[rz||444	
 H	        r#   c            
          t          j        ddiddiggt          j        dt          j                    fdt          j                    fg                    } t           j                            |           }|                    t           j                            t          j	        dd gt          j                              t          j	        d dgt          j                              gddg                    sJ d S r  )
r   r(   r   rt   r   r}   r  rP   r~   rN   )chunked_struct_arrayr   s     r!   *test_table_from_struct_array_chunked_arrayr    s    +1+#	'(Y,x.FGHH   X''(<==F==--HaYRXZZ000HdC[rz||444	
 H	        r#   c                     t           j                            t          j        dd gt          j                              t          j        d dgt          j                              gddg          } |                                 }|                    t          j        ddiddiggt          j	        dt          j                    fdt          j                    fg                              sJ d S r  
r   r}   r~   rN   rt   r   r  rP   r(   r   r   r   s     r!   test_table_to_struct_arrayr    s    H  HaYRXZZ000HdC[rz||444	
 H	 E ""$$F==)1+#	'(Y,x.FGHH         r#   c                     t           j                            t          j        dd gt          j                              t          j        d dgt          j                              gddg          } |                     d          }|                    t          j        ddigddiggt          j	        dt          j                    fdt          j                    fg                              sJ d S )Nr   r   re   ry  rz  max_chunksizer  r  s     r!   -test_table_to_struct_array_with_max_chunksizer    s    H  HaYRXZZ000HdC[rz||444	
 H	 E """33F==)1+(C)*Y,x.FGHH         r#   c                     |                      |          sJ | j        |k    sJ | j        |k    sJ | j        |j        k    sJ | j        |j        k    sJ d S r   )rP   sizer	   r^   strides)tensorexpected_tensorr	   r  s       r!   check_tensorsr    sr    ==)))));$;$<?00000>_4444444r#   typ_str)
uint8uint16uint32uint64rG   r   rt   rF   r   ri   c           
      *   t          j        |           }g d}g d}g d}t          j                            t          j        |t          j        |                    t          j        |t          j        |                    t          j        |t          j        |                    gg d          }|                    d          }t          j        |||g          	                    |d	          }t          j
                            |          }t          ||t          j        |          d
           |                                }t          j        |||g          	                    |d	          }t          j
                            |          }t          ||t          j        |          d
           |                    d          }	g d}g d}g d}|	                    d          }t          j        |||g          	                    |d	          }t          j
                            |          }t          ||t          j        |          d           |	                                }t          j        |||g          	                    |d	          }t          j
                            |          }t          ||t          j        |          d           |                    dd          }
g d}g d}g d}|
                    d          }t          j        |||g          	                    |d	          }t          j
                            |          }t          ||t          j        |          d           |
                                }t          j        |||g          	                    |d	          }t          j
                            |          }t          ||t          j        |          d           d S )N	r   r   r   r   r   r   r   r   r   	rx         (   2   <   F   P   Z   	d   r  r  r  r  r  r  r  r  r   r   F	row_majorForder   Cr   )r   r   r   r   r   r   r   r   )r  r  r  r  r  r  r  r  )r  r  r  r  r  r  r  r     r   )r   r   r   r   r   )r  r  r  r  r  )r  r  r  r  r     )rZ   r   r   r   r~   rN   from_numpy_dtype	to_tensorcolumn_stackastypeTensor
from_numpyr  r|   )r  r   r`   ra   arr3r   r   r   rS   batch1r  s              r!   'test_recordbatch_to_tensor_uniform_typer    s    (7

C&&&D///D888DN&&HT 3C 8 8999HT 3C 8 8999HT 3C 8 8999	
 ?? E __u_--F
tT*++223c2BBAy##A&&H&(B$7$<$<bAAA__F
tT*++223c2BBAy##A&&H&(B$7$<$<bAAA [[^^F###D+++D333D..F
tT*++223c2BBAy##A&&H&(B$7$<$<bAAAF
tT*++223c2BBAy##A&&H&(B$7$<$<bAAA[[AF??DD$$$D..F
tT*++223c2BBAy##A&&H&(B$7$<$<bAAAF
tT*++223c2BBAy##A&&H&(B$7$<$<bAAAAAr#   c            
      .   g d} g d}g d}t           j                            t          j        t	          j        | t          j                  t          j                              t          j        t	          j        |t          j                  t          j                              t          j        t	          j        |t          j                  t          j                              gg d          }|                    d          }t	          j        | ||g                              t          j        d	
          }t           j	        
                    |          }t          ||t          j                    d           |                                }t	          j        | ||g                              t          j        d
          }t           j	        
                    |          }t          ||t          j                    d           d S )Nr  r  r  r   r   r   Fr  r  r  r  r  )r   r   r~   rN   rZ   float16r  r  r  r  r  r  r`   ra   r  r   r   r   rS   s          r!   +test_recordbatch_to_tensor_uniform_float_16r    s   &&&D///D888DN&&HRXd"*555BJLLIIIHRXd"*555BJLLIIIHRXd"*555BJLLIII	
 ?? E __u_--F
tT*++222:S2IIAy##A&&H&(BJLL"555__F
tT*++222:S2IIAy##A&&H&(BJLL"55555r#   c            	          g d} g d}dddt           j        dddd	d
g	}t          j                            t          j        | t          j                              t          j        |t          j                              gddg          }|                    d          }t          j	        | |g          
                    t           j        d          }t          j                            |          }t          ||t          j                    d           |                                }t          j	        | |g          
                    t           j        d          }t          j                            |          }t          ||t          j                    d           t          j                            t          j        | t          j                              t          j        |t          j                              t          j        |t          j                              gg d          }|                    d          }t          j	        | ||g          
                    t           j        d          }t          j                            |          }t           j                            |                                |           |j        dk    sJ |j        t          j                    k    sJ |j        |j        k    sJ |j        |j        k    sJ |                                }t          j	        | ||g          
                    t           j        d          }t          j                            |          }t           j                            |                                |           |j        dk    sJ |j        t          j                    k    sJ |j        |j        k    sJ |j        |j        k    sJ d S )Nr  r  r     ,    X         r   ry   r   Fr  r  r     r  r   r  )rZ   nanr   r   r~   rN   r  r   r  r  r  rt   r  r  r  r   ri   r   assert_equalr\   r  r	   r^   r  r  s          r!   %test_recordbatch_to_tensor_mixed_typer  *  sf    '&&D///Dc263S#s;DN&&HT	,,,HT

+++	
 :	 E __u_--F
t%%,,RXS,AAAy##A&&H&(BHJJ333__F
t%%,,RXS,AAAy##A&&H&(BHJJ333 N&&HT	,,,HT

+++HT
---	
 ?? E __u_--F
tT*++222:S2IIAy##A&&HJFOO--q111;";"*,,&&&&<8>))))>X-----__F
tT*++222:S2IIAy##A&&HJFOO--q111;";"*,,&&&&<8>))))>X-------r#   c            	         g d} g d}g d}t           j                            t          j        | t          j                              t          j        t          j        |t
          j                  t          j                              t          j        |t          j                              gg d          }t          j	        t          d          5  |                                 d d d            d S # 1 swxY w Y   d S )	Nr  r  )	r  r  r  i  r  r  r  r  r  r   r   r   z.Casting from or to halffloat is not supported.rD   )r   r   r~   rN   r  rZ   r  r   r,   r-   r-  r  )r`   ra   r  r   s       r!   >test_recordbatch_to_tensor_unsupported_mixed_type_with_float16r  ^  s6   &&&D///D888DN&&HT	,,,HRXd"*555BJLLIIIHT
---	
 ?? E 
>
 
 
   		                 s   C<<D D c            	         ddddt           j        ddddg	} d	d
dddddt           j        dg	}t          j                            t          j        | t          j                              t          j        |t          j                              gddg          }|                    d          }t          j        | |g          	                    t           j        d          }t          j
                            |          }t           j                            |                                |           |j        dk    sJ |j        t          j                    k    sJ |j        |j        k    sJ |j        |j        k    sJ d S )Nr   r   r   r   r   r   r   r   rx   r  r  r  r  r  r  r  r   ry   r   Fr  r  r  r  )rZ   r  r   r   r~   rN   r   r  r  r  r  r  r   r  r\   r  r	   r^   r  r`   ra   r   r   r   rS   s         r!   test_recordbatch_to_tensor_nanr  r  s\   q!Q1a+DBBB3DN&&HT
---HT
---	
 :	 E __u_--F
t%%,,RZs,CCAy##A&&HJFOO--q111;";"*,,&&&&<8>))))>X-------r#   c                  "   g d} g d}t           j                            t          j        | t          j                              t          j        |t          j                              gddg          }t          j        t           j        d          5  |	                                 d d d            n# 1 swxY w Y   |	                    dd	
          }t          j        | |g                              t          j        d          }t           j                            |          }t          j                            |                                |           |j        dk    sJ |j        t          j                    k    sJ |j        |j        k    sJ |j        |j        k    sJ t           j                            t          j        | t          j                              t          j        |t          j                              gddg          }|	                    dd	
          }t          j                            |                                |           |j        dk    sJ |j        t          j                    k    sJ |j        |j        k    sJ |j        |j        k    sJ t           j                            t          j        | t          j                              t          j        |t          j                              gddg          }|	                    dd	
          }t          j        | |g                              t          j        d          }t           j                            |          }t          j                            |                                |           |j        dk    sJ |j        t          j                    k    sJ |j        |j        k    sJ |j        |j        k    sJ d S )N)	r   r   r   r   Nr   r   r   r   )	rx   r  r  r  r  r  r  Nr  r   ry   r   z-Can only convert a RecordBatch with no nulls.rD   TF)null_to_nanr  r  r  r  )r   r   r~   rN   rt   r   r,   r-   r=  r  rZ   r  r  ri   r  r  r   r  r\   r  r	   r^   r  rG   r  s         r!   test_recordbatch_to_tensor_nullr    s   )))D111DN&&HT

+++HT
---	
 :	 E 

=
 
 
   		               ___??F
t%%,,RZs,CCAy##A&&HJFOO--q111;";"*,,&&&&<8>))))>X----- N&&HT

+++HT

+++	
 :	 E ___??FJFOO--q111;";"*,,&&&&<8>))))>X----- N&&HT		***HT		***	
 :	 E ___??F
t%%,,RZs,CCAy##A&&HJFOO--q111;";"*,,&&&&<8>))))>X-------s   B88B<?B<c                  P   t           j                            t          j        g t          j                              t          j        g t          j                              gddg          } |                                 }t          j        g g g                              t          j        d          }t           j	        
                    |          }|j        |j        k    sJ |j        t          j                    k    sJ |j        |j        k    sJ |j        dk    sJ d S )Nr   ry   r   r  r  )r   r   )r   r   r~   rN   r   r  rZ   r  r  r  r  r  r	   r^   r  )r   r   r   rS   s       r!    test_recordbatch_to_tensor_emptyr    s   N&&HRbjll+++HRbjll+++	
 :	 E __F
R!!((3(??Ay##A&&H;(-'''';"*,,&&&&<8>))))>V######r#   c                     g d} g d}t           j                            t          j        | t          j                              t          j        |t          j                              gddg          }t          j        t           j        d          5  |	                                 d d d            d S # 1 swxY w Y   d S )Nr  )	ry   r   r    ry   r   r    ry   r   r    r   ry   r   zDataType is not supportedrD   )
r   r   r~   rN   rt   re  r,   r-   r=  r  )r`   ra   r   s      r!   &test_recordbatch_to_tensor_unsupportedr    s   &&&D888DN&&HT

+++HT		***	
 :	 E 

)
 
 
   		                 s   B99B= B=c                    t          j        t          d                    t          j        g d          g}ddg} | ||          }|                    d          }|j        dk    sJ  | d |D             |          }|                    |          sJ |                    dd          } | d	 |D             |          }|                    |          sJ |                    d
                              |          sJ t          |                    t          |                              d
k    sJ t          j        t                    5  |                    d           d d d            n# 1 swxY w Y   |                    d
d
                              |d d
                   sJ |                    d
d                              |d d                   sJ |                    dd                              |dd                   sJ |                    dt          |          dz
                                |dd                    sJ |                    t          |          dz
  d                              |dd                    sJ |                    t          |          dz
  d                              |dd                   sJ d S )Nr   r   rC  rD  rz   r   r   c                 8    g | ]}|                     d           S r   r|   r   r   s     r!   
<listcomp>z+_table_like_slice_tests.<locals>.<listcomp>  s"    111q

111r#   c                 :    g | ]}|                     d d           S r  r  r  s     r!   r  z+_table_like_slice_tests.<locals>.<listcomp>  s$    5551A555r#   r   rp   r   )
r   rN   r   r|   r   rP   r3   r,   r-   rs   )factoryr<   r{   objslicedrS   sliced2	expected2s           r!   _table_like_slice_testsr    s   
q
$$$%%D 4LE
'$e
$
$
$CYYq\\F?aw11D111???H=="""""ii1ooG55555UCCCI>>)$$$$$ 99Q<<s##### syyS""##q((((	z	"	"  		"               99Q??!!#bqb'*****99Q??!!#bqb'*****99Q??!!#ac(+++++99QC1%%,,SW5555599SXX\1%%,,SX6666699SXX\1%%,,SBZ8888888s   E77E;>E;c                  >    t          t          j        j                  S r   )r  r   r   r~   rW   r#   r!   test_recordbatch_slice_getitemr    s    "2>#=>>>r#   c                  4    t          t          j                  S r   )r  r   r   rW   r#   r!   test_table_slice_getitemr
    s    "28,,,r#   c            	      p   t          j        dt          j        g t          j        d                    i          } |                     dd          }|                                 t          j        dt          j        g t          j                              i          } |                                  d S )Nry   usr   r   )r   r   rN   r   r|   r   r(   r)   )r   r   s     r!   test_slice_zero_length_tabler    s     Hc28BR\$-?-?@@@ABBE++a##KHc2+BRY[[AAABCCE	OOr#   c                     t          j        dgd          } t          j        ddgd          }t          j        t          j        |           gdg          }t          j        t          j        |          gdg          }t	          j        t          j                  5  t          j                            ||g           d d d            d S # 1 swxY w Y   d S )Nr   r  r   rB   rC   ri   rD  )	rZ   rN   r   r(  r,   r-   ArrowInvalidr}   r1  )r  r  r  r  s       r!   "test_recordbatchlist_schema_equalsr     s    	1#X	&	&	&B	3*I	.	.	.B_bhrll^dV44F_bhrll^dV44F	r	'	' 0 0
vv.///0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0s    "CCCc                      t          j        t          j        g d          gdg          } | d         j        dk    sJ d S r]  )r   r   rN   r`  ts    r!   #test_table_column_sets_private_namer  +  sF    
"(<<<(()$888AQ4:r#   c                  L   t           j                            g g           } |                     |           sJ |                     d           rJ t           j                            g g ddi          }|                     |d          rJ |                     |          sJ d S )Nrz   rL  rM  rN  TrP  )r   r}   r~   rP   )r   r,  s     r!   test_table_equalsr  1  s    H  2 ..E<< ||D!!!!!H  28H IIE||E$|77777<<r#   c                     t          j        t          j        dt          j                              t          j        dt          j                              g          } t          j        t          j        dg          t          j        dg          gddg          }t           j                            |g|           }|j        	                    |           sJ |
                    d          t          j        dgg          k    sJ |
                    d          t          j        dgg          k    sJ t          j        t          j        dt          j                              g          }t          j        t           j                  5  t           j                            |g|           d d d            n# 1 swxY w Y   t          j        t          j        dg          gdg          }t          j        t           j                  5  t           j                            |g|            d d d            d S # 1 swxY w Y   d S )Nry   r   r   gQ	@rz   r   )r   r   r   rF   ri   r(  rN   r}   r1  rP   r   r(   r,   r-   r  )r   r   r   incompatible_schemaincompatible_batchs        r!   "test_table_from_batches_and_schemar  =  sb   Y
bhjj!!
bjll##  F ORXqc]]BHdV,<,<=#&*. . .EH!!5'622E<v&&&&&<<??b.u555555<<??b.x888888)RXc28::%>%>$?@@	r	'	' < <
ug':;;;< < < < < < < < < < < < < < < "(A3--3%@@	r	'	' < <
12F;;;< < < < < < < < < < < < < < < < < <s$   "F??GG"IIIc            	         ddl m}  dd l}|                    dt	          t          d                    i          }|                    dt	          t          dd                    i          }t          j                            |d          }t          j                            |d          }t          j	        
                    |||g          }|                    |||gd	          }|                                }t          |          d
k    sJ  | t          j	        
                    |                                          |           |                    d          }t	          t          t          |                    g dk    sJ  | |                                |            | t          j	        
                    |                                          |           t          j	        
                    t!          |||g                    }	|                    |	          sJ t%          j        t(                    5  |                    d           d d d            d S # 1 swxY w Y   d S )Nr   )r   ry   rx   r  F)preserve_indexT)ignore_indexr   r  r  )rx   r  r   rx   )r   r   r   r   r0   r   r   r   r   r}   r1  concat
to_batchesr3   r   mapiterrP   r,   r-   r.   )
r   r   df1df2r  r  r   expected_dfr7  table_from_iters
             r!   test_table_to_batchesr&  R  s   111111
,,T%))__-
.
.C
,,T%B--001
2
2C^''E'BBF^''E'BBFH!!666":;;E))S#sO$)??K  Gw<<1rx,,W55??AA"$ $ $ R00GC!!""ooo5555u((+666rx,,W55??AA"$ $ $ h++D&&&1I,J,JKKO<<(((((	z	"	" * *q)))* * * * * * * * * * * * * * * * * *s   I,,I03I0clsc                 H   t          j        t          d          d          t          j        g dd          g}|                     |d          }|                                 |j        j        rJ t          |          dk    sJ |j        dk    sJ |j	        t          |          k    sJ |j
        dk    sJ |                                d	k    sJ |j        d	k    sJ t          j        |          t                              |          |                                z   k    sJ |                                }|t%          d
g dfdg dfg          k    sJ t'          |t(                    sJ ||                     ||j                  k    sJ t-          j        t0                    5  |d          d d d            n# 1 swxY w Y   g }|                                D ]}| t           j        u rt7          |          t           j        u sJ |                                D ]}|J t-          j        t0                    5  |                    d           d d d            n# 1 swxY w Y   t-          j        t0                    5  |                    |j                   d d d            n# 1 swxY w Y   n)tA          t7          |          t           j!                  sJ |"                    |           |j#        |k    sJ ||                     ||j$                  k    sJ ||                     |dd          |j$        dd                    k    sJ ||k    sJ t          j        t          j%        dt          j&                    ddi          t          j%        dt          j'                              gddi          }|                     ||          }|j        |k    sJ tQ          j)        |          } |            J ~ |            J d S )Nr   r   r   rB  rt   r   rz   r   r      ry   )r   r   r   r   r   r   r'  r   rp   r   rC  rL  rM  r}  rD  r{  r|  )*r   rN   r   r~   r+   r   rO  r3   r   rp  r^   r&   r9   r5   r6   r7   r8   	to_pydictr   r   dictfrom_pydictr,   r-   rs   rE  r}   r	   r   r2   r   
num_chunks
issubclassArrayr   rF  rG  r   r   rt   r:   r;   )	r'  r<   r   pydictrF  r   r   r   r>   s	            r!   test_table_basicsr2  u  s    	q(((
'''g666D OOD
O33E	NN|$$$$u::????>QD		))));&    &&((,AAAAA<00000=6#4#4$ $,,..$/ / / / / __F[	ooo	$$$%"       fd#####COOF5<O@@@@@@	z	"	"  a               G  ""  "(??99////)) ) )((((z**  		"               z** * *		#.)))* * * * * * * * * * * * * * * d3ii22222s=G####COOG53EOFFFFFFCOOGABBKu7I!""7MONNNNNNG Yrxzz+0'*:< < <rxzz224 "( 02 2 2F OODO00E<6!!!!	U		B244244<<<<<s6   1	GG
G
	I++I/	2I/	J66J:	=J:	c                      t          j        t          d          5  t          j                     d d d            d S # 1 swxY w Y   d S )Nr}   rD   )r,   r-   rh   r   r}   rW   r#   r!   test_table_dunder_initr4    s    	y	0	0	0  



                 r   c                     t          j        ddg          } t          j        ddg          }t          j        dt          j                    t	          dd          	          }t          j        d
t          j                    d          }t           j                            | |gt          j        ||g                    }d|                    d          j        v sJ |                    d          j	        du sJ d S )Nr   r   r   r   field1ABr   r}  field2Fnullabler'  r  r   )
r   rN   r   rF   r,  r}   r~   r   rO  r;  )arr0r`   field0r6  r   s        r!   0test_table_from_arrays_preserves_column_metadatar>    s    8QFD8QFDXh

TC35G5G5GHHHFXh

U;;;FH  $(*	662B(C(C ! E EE5;;q>>*****;;q>>"e++++++r#   c                     t          j        t          d                    t          j        g d          g} t          j        t
                    5  t           j                            | g d           d d d            n# 1 swxY w Y   t          j        t
                    5  t           j                            | dg           d d d            d S # 1 swxY w Y   d S rs  )r   rN   r   r,   r-   r.   r}   r~   rm   s    r!   $test_table_from_arrays_invalid_namesr@    sI   
q
$$$%%D 
z	"	" : :
T999: : : : : : : : : : : : : : : 
z	"	" 0 0
T#///0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0s$   $BBB%#CCCc                  B   t          t          d                    g dg} t          j        | ddg          }t          j                            | ddg          }|                    |          sJ t          j        t          j        dt          j	                              t          j        dt          j
                              g          }t          j        | |          }t          j                            | |          }|                    |          sJ d S )Nr   r   ry   r   rz   r'  )r0   r   r   r   r}   r~   rP   r   r   r  rF   )r<   r   rS   r   s       r!   test_table_from_listsrB    s    U1XXD
 Xd3*---Fx##Dc
#;;H=="""""Y
bikk""
bhjj!!  F Xd6***Fx##D#88H=="""""""r#   c                 `   t          j        ddgddggt          j                              t          j        g dgt          j                              g}t          j        t          j        dt          j                              t          j        dt          j                              gd	d
i          }t           j                            ||          }|                     | 	                    |                    }|
                                 |                    |          sJ d S )Nr   r   r   r   r   )somestringsN ry  strsr{  r|  r}  r'  )r   r(   r  r)   r   r   r}   r~   r   r   r+   rP   )r   r<   r   r   r   s        r!   test_table_picklerH    s   
1a&1a&)	<<<
7778ry{{KKKD Y55557!' 02 2 2F H  f 55E  !4!4U!;!;<<F
OO==r#   c                     t          j        t          d                    t          j        g d          t          j        t          dd                    g} t           j                            | d          }|                    d                              |j                            d                    sJ |                    d                              |j                            d                    sJ t          j	        t                    5  |                    d           d d d            n# 1 swxY w Y   t          j	        t                    5  |                    d            d d d            n# 1 swxY w Y   t          j	        t                    5  |                    d	           d d d            d S # 1 swxY w Y   d S r  )r   rN   r   r}   r~   r   rP   r   r,   r-   r  rh   rs   r<   r   s     r!   test_table_get_fieldrK    s@   
q
$$$%%
q"D
 H  _ ==E;;s""5<#5#5c#:#:;;;;;;;q>>  !3!3C!8!899999	x	 	   C               
y	!	!  D               
z	"	"  A                 r  c                     t          j        t          d                    t          j        g d          t          j        t          dd                    g} t           j                            | d          }|                    d                              |                    d                    sJ t          j        t          d	          5  |                    d
           d d d            n# 1 swxY w Y   t          j        t                    5  |                    d            d d d            n# 1 swxY w Y   t          j        t                    5  |                    d           d d d            d S # 1 swxY w Y   d S r  )r   rN   r   r}   r~   r   rP   r,   r-   r  rh   rs   rJ  s     r!   test_table_select_columnrM    s   
q
$$$%%
q"D
 H  _ ==E<<##ELLOO44444	xA
C 
C 
C  S               
y	!	!  T               
z	"	"  Q                 r  c                  F   t          j        t          j        g d          t          j        g d          t          j        g d          gg d          } t          j        t
          d          5  |                     d           d d d            d S # 1 swxY w Y   d S )	Nr   r   r   r   rz   z"Field "a" exists 2 times in schemarD   ry   )r   r   rN   r,   r-   r  r   r   s    r!   !test_table_column_with_duplicatesrP  +  s    Hbhyyy))hyyy))hyyy))+2A//C C CE 
xA
C 
C 
C  S                 s   3BBBc                    t          j        t          d                    t          j        g d          t          j        t          dd                    g}|                     |d          }t          j        d|d         j                  }|                    d||d                   }|                    ||d                   }|                     ||d         gz   d	          }|                    |          sJ |                    |          sJ |                    d
||d                   }|                     |d         g|z   d          }|                    |          sJ d S )Nr   r   rx   r   rz   r   r   r   )ry   r   r    r   r   )r   ry   r   r    )	r   rN   r   r~   r   r	   
add_columnappend_columnrP   )r'  r<   r   	new_fieldt2t3rS   t4s           r!   test_table_add_columnrX  6  sb    	q
$$$%%
q"D
 OODO88Ed1gl++I			!YQ	0	0B			YQ	0	0BttAwi/%9  ; ;H99X99X			!YQ	0	0BQy4/%9  ; ;H99Xr#   c                    t          j        t          d                    t          j        g d          t          j        t          dd                    g}|                     |d          }t          j        d|d         j                  }|                    d||d                   }t          |          }|d         |d<   |                     |d	          }|                    |          sJ d S )
Nr   r   rx   r   rz   r   r   r   )r   r   r    )	r   rN   r   r~   r   r	   
set_columnr0   rP   )r'  r<   r   rT  rU  expected_datarS   s          r!   test_table_set_columnr\  T  s     	q
$$$%%
q"D
 OODO88Ed1gl++I			!YQ	0	0BJJMAwM!}%4  6 6H99Xr#   c                    t          j        t          d                    }t          j        g d          }t          j        t          dd                    }|                     |||gd          }|                    ddg          }|                    d          }|                     |gd          }|                    |          sJ |                     ||gd	          }|                    |          sJ t          j        t          d
          5  |                    dg           ddd           dS # 1 swxY w Y   dS )z& drop one or more columns given labelsr   r   rx   r   rz   ry   r   r    r   r    Column 'd' not foundrD   r   N)	r   rN   r   r~   drop_columnsrP   r,   r-   r  )	r'  ry   r   r    r   rU  rV  exp_t2exp_t3s	            r!   test_table_drop_columnsrd  m  s}    	qA
$$$%%A
q"AOOQ1I_O==E			S#J	'	'B			C	 	 B__aS_//F==__aV;_77F== 
x'=	>	>	> " "C5!!!" " " " " " " " " " " " " " " " " "s   D>>EEc                     t          j        t          d                    } t          j        g d          }t          j        t          dd                    }t           j                            | ||gd          }|                    ddg          }|                    d          }t           j                            |gd          }|                    |          sJ t           j                            ||gd	          }|                    |          sJ t          j        t          d
          5  |                    dg           ddd           dS # 1 swxY w Y   dS )z, verify the alias of drop_columns is workingr   r   rx   r   rz   ry   r   r^  r_  r`  rD   r   N)
r   rN   r   r}   r~   droprP   r,   r-   r  )ry   r   r    r   rU  rV  rb  rc  s           r!   test_table_droprg    s   
qA
$$$%%A
q"AH  !Q/ BBE	S#J		B	CBX!!1#V!44F==X!!1a&!<<F== 
x'=	>	>	>  

C5                 s   8EE #E c                    t          j        t          d                    t          j        g d          t          j        t          dd                    g}|                     |d          }|                    d          }|                                 |                     |dd          d          }|                    |          sJ d S )	Nr   r   rx   r   rz   r   r   r_  )r   rN   r   r~   remove_columnr+   rP   )r'  r<   r   rU  rS   s        r!   test_table_remove_columnrj    s     	q
$$$%%
q"D
 OODO88E			Q		BKKMMMtABBxz::H99Xr#   c                    t          j        t          d                    g}|                     |dg          }|                    d          }|                                 t          |          t          |          k    sJ |                    d|                    d          |d                   }|                                 |	                    |          sJ d S )Nr   ry   rz   r   )
r   rN   r   r~   ri  r+   r3   rR  r   rP   )r'  r<   r   rU  rV  s        r!   test_table_remove_column_emptyrl    s     	qD OODO..E			Q		BKKMMMr77c%jj    	q%++a..%(	3	3BKKMMM99Ur#   c                      g } ddg}d}t          j        t          |          5  t          j                            | |           d d d            d S # 1 swxY w Y   d S )Nry   r   z?Length of names [(]2[)] does not match length of arrays [(]0[)]rD   rz   )r,   r-   r.   r   r}   r~   )r<   r{   messages      r!   test_empty_table_with_namesro    s    D#JEI 	z	1	1	1 0 0
T///0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0s   "AAAc                      t          j        g           } | j        g k    sJ |                     t           j                            g g                     sJ d S r   )r   r   rG  rP   r}   r~   rO  s    r!   test_empty_tablerq    sS    HRLLE####<<,,R445555555r#   c                    t          j        t          d                    t          j        g d          t          j        t          dd                    g}|                     |g d          }|j        g dk    sJ |                     |g d          }|                    g d          }|                                 |j        g dk    sJ |                    |          sJ |                    d          }|                                 |j        g dk    sJ |                    |          sJ d}t          j	        t          |          5  |                    d	           d d d            d S # 1 swxY w Y   d S )
Nr   r   rx   r   rz   )ehbeeseaz.names must be a list or dict not <class 'str'>rD   z
not a list)r   rN   r   r~   rG  rename_columnsr+   rP   r,   r-   rh   )r'  r<   r   rS   rU  rV  rn  s          r!   test_table_rename_columnsrw    s    	q
$$$%%
q"D
 OODO88E0000t+?+?+?@@H 
		222	3	3BKKMMM?222222299X 
		2	3	3BKKMMM?222222299X>G	y	0	0	0 + +\***+ + + + + + + + + + + + + + + + + +s   E::E>E>c                    t          j        t          d                    t          j        g d          t          j        t          dd                    g}|                     |g d          }|j        g dk    sJ |                     |g d          }|                    ddd	          }|                                 ||k    sJ |                     |g d
          }|                     |g d          }|                    ddd	          }|                                 ||k    sJ t          j        t          d          5  |                    ddd           d d d            d S # 1 swxY w Y   d S )Nr   r   rx   r   rz   )rs  r   ru  rs  ru  )ry   r    )ry   ry   r    )rs  rs  ru  r`  rD   )ry   r   )
r   rN   r   r~   rG  rv  r+   r,   r-   r  )r'  r<   r   rS   t1rU  s         r!   !test_table_rename_columns_mappingrz    s    	q
$$$%%
q"D
 OODO88E0000t+=+=+=>>H			Du55	6	6BKKMMM>>>> OODO88Et+>+>+>??H			Du55	6	6BKKMMM>>>> 
x'>	?	?	? 6 64e445556 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6s   E55E9<E9c                     t          j        t          j        dt          j                              t          j        dt          j                              g          } t          j        t          j        d|           g          }t          j        ddg|           }t          j        ddg|          }t          j        d	d
gt          j                              }t           j                            |||gg d          }|	                                }|
                                 t           j                            t          j        ddgt          j                              t          j        ddgt          j                              t          j        ddg|           |gg d          }|                    |          sJ d S )Nr   r   nestr   r   r   )   g      )@)   g      -@FTr   rz   r   r   r   r   r}  r  )za.xza.yzb.nestr    )r   r   r   r   r   rN   rV   r}   r~   r   r+   rP   )ty1ty2ry   r   r    r   rU  rS   s           r!   test_table_flattenr    s   
)RXc28::..Xc2:<<002 3 3C
)RXfc**+
,
,C
(H%C000A
-/c:::A
%RXZZ000AH  !Q/// BBE	BKKMMMx##
!Qbhjj)))
#s"*,,///
*j)444		%
 ,++ $ - -H 99Xr#   c                     t          j        t          j        dg          t          j        dg          gddg          } t          j        t          j        dg          t          j        dg          gddg          }t           j                            | |g          }|                                }|                                 |                    |          sJ |j        D ]}|j	        dk    sJ d S )Nr   ry   rX  rY  rz   r   r   )
r   r(  rN   r}   r1  rO   r+   rP   rF  r.  )r  r  r   combinedr    s        r!   test_table_combine_chunksr  1  s    _bhsmmRXse__=$($<1 1 1F_bhsmmRXse__=$($<1 1 1FH!!66"233E##%%H??5!!!!! ! !|q     ! !r#   c                  6   t          j        t          j        g d                                          t          j        g d                                          t          j        g d          gg d          } t          j        t          j        g d                                          t          j        g d                                          t          j        g d          gg d          }t           j                            | |g          }|                    d	d
i          }|                    d                              d          j	        
                    t          j        ddg                    sJ |                    d                              d          j	        
                    t          j        ddg                    sJ |                    d                              d          j	        
                    t          j        g d                    sJ |                    d                              d          j	        
                    t          j        ddg                    sJ |                    t          j                              }t          j        g d          }t          j        g d          }|                    d                              d          j	        
                    |          sJ |                    d                              d          j	        
                    |          sJ |                    d                              d          j	        
                    |          sJ |                    d                              d          j	        
                    |          sJ |                                g dg dg ddk    sJ |j        j        d	d
ik    sJ d S )Nr   ){     r    )TFNNr   rz   )r   r   Nr   )r  r  r  N)FNNTs   key1s   value1r   r   r   r   r   )r  r  r  r  r  r   )r   r   Nr   r   r   Nr   )r  r  r  r  r  r  r  N)TFNNFNNT)r   r(  rN   r   r}   r1  r  r   r   r   rP   r   default_memory_poolr+  r   rO  )r  r  r   expected_dict_0expected_dict_1s        r!   test_table_unify_dictionariesr  >  s   _
,,,--??AA
%%%&&88::
***++- 5DOOE E EF _
...//AACC
&&&''99;;
***++- 5DOOE E EF
 H!!66"233E))7I*>??E<<??  ##.55
%  " " " " "<<??  ##.55
&%!!# # # # #<<??  ##.55
!!# # # # #<<??  ##.55
#s     $$R%;%=%=>>Eh55566Oh//O<<??  ##.55oFFFFF<<??  ##.55oFFFFF<<??  ##.55oFFFFF<<??  ##.55oFFFFF??EEE666???! !    
 < Wi$8888888r#   c                     t          j        dddddigt          j        t          j                    t          j                                        g} t           j                            | dg          }|                    d	
          }d|v sJ |d         }t          |          dk    sJ |dddddigk    sJ |	                    d	
          }t          |          dk    sJ |ddddidddiigk    sJ d S )Nr   r   )r   r   zr   r   ry   rz   strict)maps_as_pydicts)
r   rN   map_r)   rt   r}   r~   r+  r3   r*   )r   r   
table_dictcolumn_list
table_lists        r!   test_table_maps_as_pydictsr  c  s-   
1Qx(bhjj11	
 	
 	
F H  u 55E::J*S/K{q    ++c1X66666::Jz??a3aa 0 01C#q?CCCCCCCr#   c                  R   t          t          d                    g dg} t          t          dd                    g dg}t          j                            d | D             d          }t          j                            d |D             d          }t          j        ||g          }|                                 t          |          dk    sJ t          j                            d	 t          | |          D             d          }|	                    |          sJ d S )
Nr   g      $g      g        rC   g      $@rx   re   rf   rg   rB   rC   c                 6    g | ]}t          j        |          S rW   r   rN   r  s     r!   r  z&test_concat_tables.<locals>.<listcomp>  s     999qrx{{999r#   r   rz   c                 6    g | ]}t          j        |          S rW   r  r  s     r!   r  z&test_concat_tables.<locals>.<listcomp>  s     :::qrx{{:::r#   c                 B    g | ]\  }}t          j        ||z             S rW   r  r   r   r   s      r!   r  z&test_concat_tables.<locals>.<listcomp>  s>     %C %C %C)-A &(Xa!e__ %C %C %Cr#   )
r0   r   r   r}   r~   concat_tablesr+   r3   r   rP   r<   r=   ry  rU  r   rS   s         r!   test_concat_tablesr  w  sO   U1XX   D
 	U1b\\E
 
		99D999$. 
 
0 
0B			::E:::$. 
 
0 
0B r2h''F
OOv;;"x## %C %C14T51A1A%C %C %C*4 $ 6 6H =="""""""r#   c                  ~   t           j                            t          t	          d                    gd          } t           j                            t          d          gd          }t          j        t           j        d          5  t          j        | |gd          }d d d            d S # 1 swxY w Y   d S )	Nrx   ry   rz   r   z@Unable to merge: Field a has incompatible types: int64 vs stringrD   
permissivepromote_options)	r   r}   r~   r0   r   r,   r-   r=  r  )ry  rU  r.  s      r!   test_concat_tables_permissiver    s   			tE"II/v		>	>B			tO445V		D	DB	T
V 
V 
V E E b"X|DDDE E E E E E E E E E E E E E E E E Es   B22B69B6c                     t           j                            t          t	          d                    gd          } t          j        t          d          5  t          j        | | gd           d d d            d S # 1 swxY w Y   d S )Nrx   r  rz   z Invalid promote options: invalidrD   invalidr  )	r   r}   r~   r0   r   r,   r-   r.   r  r  s    r!   !test_concat_tables_invalid_optionr    s    
d599oo.f==A	z)K	L	L	L < <
!Q;;;;< < < < < < < < < < < < < < < < < <s   A>>BBc                      t          j        t                    5  t          j        d g           d d d            d S # 1 swxY w Y   d S r   )r,   r-   AttributeErrorr   r  rW   r#   r!   test_concat_tables_none_tabler    s    	~	&	& ! !
$   ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !   =AAc                  (   dd l } t          j        t          j        dt          j                              t          j        dt          j                              g          }t          d          }|                     ||d          }|                     t          j        gdz  |d          }t          j	        
                    ||d          }t          j	        
                    ||d          }|j                            |j                  sJ |j                            |j        d	
          rJ t          j        ||g          }|j                            |j        d	
          sJ |j                            |j                  sJ d S )Nr   ry   r   abcdefghr   r   F)r   r  TrP  )r   r   r   r   r)   r0   r   rZ   r  r}   r   rP   r  )r   r   valuesr"  r#  table1table2table3s           r!   1test_concat_tables_with_different_schema_metadatar    sl   Y
bikk""
bikk""  F
 *F
,,V&11
2
2C
,,bfX\77
8
8CX!!#fU!KKFX!!#fU!KKF=.....}##FM$#GGGGGvv.//F=dCCCCC=.......r#   c            
         t           j                            t          j        ddgt          j                              gdg          } t           j                            t          j        ddgt          j                              gdg          }t          j        t                    5  t          j	        | |gd	          }d d d            n# 1 swxY w Y   |
                    t           j                            t          j        g d
t          j                              t          j        g dt          j                              gddg                    sJ t           j                            t          j        ddgt          j                              gdg          } t           j                            t          j        ddgt          j                              gdg          }t          j        t           j        d          5  t          j        t                    5  t          j	        | |gd	           d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )Nr   r   r   int64_fieldre   rf   float_fieldT)promoter   r   NNNNre   rf   rK  z Schema at index 1 was different:rD   F)r   r}   r~   rN   rF   r   r,   warnsFutureWarningr  rP   r-   r  ry  rU  r   s      r!   &test_concat_tables_with_promote_optionr    s   				1a&rxzz	*	*	*+m_
> 
>B				3*2:<<	0	0	01M?
D 
DB 
m	$	$ : :!2r(D999: : : : : : : : : : : : : : : ==--
###"(**555
'''bjll;;;/ 	}%' ' ( ( ( ( (
 
			1a&rxzz	*	*	*+cU
4 
4B				1a&rz||	,	,	,-u
6 
6B 
r.P	Q	Q	Q 6 6\-(( 	6 	6b"Xu5555	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	66 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6sH   ,CCCI,/II,I	I,I	I,,I03I0c            
         t           j                            t          j        ddgt          j                              gdg          } t           j                            t          j        ddgt          j                              gdg          }t          j        | |gd	          }|                    t           j                            t          j        g d
t          j                              t          j        g dt          j                              gddg                    sJ t           j                            t          j        ddgt          j                              gdg          }t          j        | |gd	          }|                    t           j                            t          j        g dt          j                              gdg                    sJ d S )Nr   r   r   r  re   rf   r  defaultr  r  r  r  rM   )	r   r}   r~   rN   rF   r   r  rP   rt   )ry  rU  r   rV  s       r!   !test_concat_tables_with_promotionr    s   				1a&rxzz	*	*	*+m_
> 
>B				3*2:<<	0	0	01M?
D 
DB r2h	BBBF==--
###"(**555
'''bjll;;;/ 	}%' ' ( ( ( ( (
 
			1a&rxzz	*	*	*+m_
> 
>B	R,0 0 0F==--
BHJJ////        r#   c                     t           j                            t          j        ddgt          j                              gdg          } t           j                            t          j        ddgt          j                              gdg          }t          j        t           j        d          5  t          j	        | |gd           d d d            d S # 1 swxY w Y   d S )	Nr   r   r   rK  zUnable to merge:rD   r  r  )
r   r}   r~   rN   rF   r   r,   r-   r=  r  ry  rU  s     r!   'test_concat_tables_with_promotion_errorr    s   				1a&rxzz	*	*	*+cU
4 
4B				1a&rz||	,	,	,-u
6 
6B 
r(0B	C	C	C > >
"b9====> > > > > > > > > > > > > > > > > >s   3CC Cc                  "   t          j        t          d                    t          j        g d          t          j        g d          t          j        g d          g} t           j                            | t          d                    }|d                             |d                   sJ |d	                             |d
                   sJ |d                             |d                   sJ |d                             |d                   sJ t          j        t                    5  |d          d d d            n# 1 swxY w Y   t          j        t                    5  |d          d d d            d S # 1 swxY w Y   d S )Nr   r   r  abbccddeefabcdrz   rp   r   r  r   r   r   r   r   r   )
r   rN   r   r}   r~   tuplerP   r,   r-   rs   rJ  s     r!   test_table_negative_indexingr    s   
q
$$$%%
***++
///00	D H  U6]] ;;E9E!H%%%%%9E!H%%%%%9E!H%%%%%9E!H%%%%%	z	"	"  b		               
z	"	"  a                 s$   5	E

EE.	FFFc                  R   t          t          d                    g dg} t          t          dd                    g dg}t          j                            d | D             d          }t          j                            d |D             d          }t          j        ||g          }|                                 t          |          dk    sJ t          j                            d	 t          | |          D             d          }|	                    |          sJ d S )
Nr   r  rx   r  c                 6    g | ]}t          j        |          S rW   r  r  s     r!   r  z'test_concat_batches.<locals>.<listcomp>  s     $?$?$?QRXa[[$?$?$?r#   r   rz   c                 6    g | ]}t          j        |          S rW   r  r  s     r!   r  z'test_concat_batches.<locals>.<listcomp>  s     $@$@$@QRXa[[$@$@$@r#   c                 B    g | ]\  }}t          j        ||z             S rW   r  r  s      r!   r  z'test_concat_batches.<locals>.<listcomp>  s>     +I +I +I/3q! ,.8AE?? +I +I +Ir#   )
r0   r   r   r   r~   concat_batchesr+   r3   r   rP   r  s         r!   test_concat_batchesr    sO   U1XX   D
 	U1b\\E
 
	#	#$?$?$$?$?$?*4 
$ 
6 
6B		#	#$@$@%$@$@$@*4 
$ 
6 
6B Bx((F
OOv;;"~)) +I +I7:47G7G+I +I +I0: * < <H =="""""""r#   c                     t           j                            t          j        ddgt          j                              gdg          } t           j                            t          j        ddgt          j                              gdg          }t          j        t           j        d          5  t          j	        | |g           d d d            d S # 1 swxY w Y   d S )Nr   r   r   rK  z$not match index 0 recordbatch schemarD   )
r   r   r~   rN   rF   r   r,   r-   r  r  r  s     r!   $test_concat_batches_different_schemar  &  s   		#	#	1a&rxzz	*	*	*+cU
4 
4B		#	#	1a&rz||	,	,	,-u
6 
6B 
rC
E 
E 
E $ $
2r(###$ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $s   3CCCc                      t          j        t                    5  t          j        d g           d d d            d S # 1 swxY w Y   d S r   )r,   r-   r  r   r  rW   r#   r!    test_concat_batches_none_batchesr  1  s    	~	&	& " "
4&!!!" " " " " " " " " " " " " " " " " "r  c                 >   t          j        t          d                    t          j        g d          g}|                     |t	          d                    }t          j        t          j        dt          j                              t          j        dt          j                              g          }t          j        t          j        dt          j                              g          }| t           j	        u rd}nd	}d
| d}t          j        t          |          5  |                    |           d d d            n# 1 swxY w Y   t          j        t          |          5  |                    |           d d d            d S # 1 swxY w Y   d S )Nr   r   r  rz   r7  r   ry   r   zrecord batchz1Target schema's field names are not matching the z's field names:.*rD   )r   rN   r   r~   r  r   r   rt   r   r}   r,   r-   r.   r	  )r'  r<   r   target_schema1target_schema2cls_namern  s          r!   &test_table_cast_to_incompatible_schemar  7  s    	q
$$$%%D OODdO44EY
bhjj!!
bhjj!!   N Y
bhjj!!   N bh!.. . .G 
z	1	1	1 # #

>"""# # # # # # # # # # # # # # #	z	1	1	1 # #

>"""# # # # # # # # # # # # # # # # # #s$   'E		EE/FFFc           
         t          j        t          d          t          j                              t          j        g dt          j                              t          j        g dt          j                              t          j        g dt          j                              g}|                     |t          d                    }t          j        t          d          t          j                              t          j        g dt          j	                              t          j        g dt          j                              t          j        g dt          j                              g}|                     |t          d                    }t          j
        t          j        d	t          j                              t          j        d
t          j	                              t          j        dt          j                              t          j        dt          j                              g          }|                    |          }|                    |          sJ d S )Nr   r   r   r  r  r  rz   r   r   r   r   r   ry   r   r    r   )r   rN   r   rF   rt   ri   r)   r~   r  r   r   r   r	  rP   r'  r<   r   r[  expected_tabletarget_schemacasted_tables          r!   test_table_safe_castingr  Z  s    	q

+++
$$$28::666
***>>>
///bikkBBB	D OODfO66E 	q

+++
$$$28::666
rxzz222
///bikkBBB	M __]%--_HHNI
bhjj!!
bhjj!!
bhjj!!
bikk""	  M ::m,,L~.......r#   c           
         t          j        t          d          t          j                              t          j        g dt          j                              t          j        g dt          j                              t          j        g dt          j                              g}|                     |t          d                    }t          j        t          d          t          j                              t          j        g dt          j	                              t          j        g dt          j                              t          j        g dt          j                              g}|                     |t          d                    }t          j
        t          j        d	t          j                              t          j        d
t          j	                              t          j        dt          j                              t          j        dt          j                              g          }t          j        t           j        d          5  |                    |           d d d            n# 1 swxY w Y   |                    |d          }|                    |          sJ d S )Nr   r   r   )g?g@gffffff
@g@g      @r  r  rz   r  ry   r   r    r   	truncatedrD   F)safe)r   rN   r   rF   rt   ri   r)   r~   r  r   r   r   r,   r-   r  r	  rP   r  s          r!   test_table_unsafe_castingr  }  sb    	q

+++
$$$28::666
***>>>
///bikkBBB	D OODfO66E 	q

+++
$$$28::666
rxzz222
///bikkBBB	M __]%--_HHNI
bhjj!!
bhjj!!
bhjj!!
bikk""	  M 
rk	:	:	: " "

=!!!" " " " " " " " " " " " " " " ::m%:88L~.......s   +JJJc                     t          j        ddgt           j                  } t          j                    }t          j        | |          t          j        | dd          |          g}t	          j        t          j        j                  5  t          j        	                    |ddg           d d d            d S # 1 swxY w Y   d S )Nr   r   r   r   r  r  rz   )
rZ   rN   r  r   r,   r-   r   r  r}   r~   )rN   u8r   s      r!   test_invalid_table_constructr    s    HaV28,,,E	Bhu2&&&qrr(D(D(DEF	rv*	+	+ 9 9
VD$<8889 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9s   $B>>CCzdata, klassrF  r   r   r   r   NrF  r   r   r   rC   c                 B    || d                    || d                   g} t          j        dt          j                    fdt          j                    fg          }t           j                            | |          }|j        dk    sJ |j        dk    sJ |j        |k    sJ t          j        dt          j                    fg          }t          j	        t                    5  t           j                            | |           d d d            n# 1 swxY w Y   t          j        dt          j                    fdt          j                    fg          }t           j                            | |          }t           j                            |                    d          j                  sJ |j        dk    sJ |j        dk    sJ |j        |k    sJ t          j        dt          j                    fdt          j        d          fg          }t          j	        t           t"          f          5  t           j                            | |           d d d            n# 1 swxY w Y   t          j	        t                    5  t           j                            | |ddg	           d d d            n# 1 swxY w Y   t          j	        t                    5  t           j                            | |d
di           d d d            d S # 1 swxY w Y   d S )Nr   r   rG  rz  r'  r   r   s)r   r{   r{  r|  r   rO  )r   r   re  r   r}   r~   rp  r   r,   r-   r.   types
is_float32r   r	   r   r-  rh   r-  r<   klassr   r   s       r!   test_from_arrays_schemar    s    E$q'NNEE$q'NN+DY+h
-EFGGFH  f 55E!!!!>Q<6!!!! Y+,--F	z	"	" 2 2
T&1112 2 2 2 2 2 2 2 2 2 2 2 2 2 2 Y+h
-EFGGFH  f 55E8u||H55:;;;;;!!!!>Q<6!!!! Y+hS8I8I-JKLLF	+Y7	8	8 2 2
T&1112 2 2 2 2 2 2 2 2 2 2 2 2 2 2 
z	"	" L L
T&8JKKKL L L L L L L L L L L L L L L 
z	"	" M M
T&FF;KLLLM M M M M M M M M M M M M M M M M MsH   ("DDD;"I))I-0I-%J>>KK"%LLLc                    |                      i           }|j        dk    sJ |j        dk    sJ |j        t	          j        g           k    sJ |                                i k    sJ t	          j        dt	          j                    fdt	          j                    fg          }t          dg dfdg dfg          }|                      |          }|j        dk    sJ |j        dk    sJ |j        |k    sJ |                                |k    sJ dd	i}|	                    |          }|                      ||
          }|j        |k    sJ |j        j
        |k    sJ |                                |k    sJ |                      ||          }|j        |k    sJ |j        j
        |k    sJ |                                |k    sJ t          j        t                    5  |                      |||           d d d            n# 1 swxY w Y   t          j        t                    5  |                      dg dit	          j        dt	          j                    fg                     d d d            n# 1 swxY w Y   t          j        t           d          5  |                      g dg ddt	          j        dt	          j                    fdt	          j                    fdt	          j                    fg                     d d d            n# 1 swxY w Y   t          j        t                    5  |                      dg dii            d d d            d S # 1 swxY w Y   d S )Nr   rG  rz  r  r  r   r   r{  r|  r}  r'  r  rC  )r   r   r   zdoesn't contain.* c, drD   r   )r   r   r   r   ry   r    r   )r-  rp  r   r   r   r+  re  ri   r   with_metadatarO  r,   r-   r.   rh   r)   r  rF   rt   r   )r'  r   r   r<   rO  s        r!   test_table_from_pydictr    s    OOBE!!!!>Q<29R==((((??""""Y+h
-EFGGF !3!3!34!>>>24 5 5DOOD!!E!!!!>Q<6!!!!??$$$$ H!!(++FOOD8O44E<6!!!!< H,,,,??$$$$ OODO00E<6!!!!< H,,,,??$$$$ 
z	"	" @ @Vh???@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ 
y	!	! A Ayyy)!y4*=)>?? 	 	A 	A 	AA A A A A A A A A A A A A A A
 
x'@	A	A	A 
 
))))),,9bhjj!bhjj!bhjj!   	 	
 	
 	

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
y	!	! 5 5iii(4445 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5sJ   &HHH/AI==JJ#A-LL #L  M))M-0M-c                    t          d || d                   fd || d                   fg          } t          j        dt          j                    fdt          j                    fg          }t          j                            |           }|j        dk    sJ |j        dk    sJ |j        |k    sJ t          j                            | |          }|j        dk    sJ |j        dk    sJ |j        |k    sJ t          j        dt          j                    fdt          j	                    fg          }t          j                            | |          }t          j
                            |                    d          j                  sJ |j        dk    sJ |j        dk    sJ |j        |k    sJ t          j        dt          j                    fdt          j        d          fg          }t          j        t"          t$          f          5  t          j                            | |           d d d            d S # 1 swxY w Y   d S )	NrG  r   rz  r   r   r   r'  r  )r   r   r   re  ri   r}   r-  rp  r   r   r  r  r   r	   r   r,   r-   r-  rh   r  s       r!   #test_table_from_pydict_arrow_arraysr  	  sy   
 tAw08UU47^^2LMNNDY+h
-EFGGF H  &&E!!!!>Q<6!!!! H  f 55E!!!!>Q<6!!!! Y+h
-EFGGFH  f 55E8u||H55:;;;;;!!!!>Q<6!!!! Y+hS8I8I-JKLLF	+Y7	8	8 2 2
T&1112 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2s   "IIIc                    t          d || d                   fd || d                   fg          } t          j        dt          j                    fdt          j                    fdt          j                    fg          }t          j        t          d          5  t          j	        
                    | |           d d d            n# 1 swxY w Y   t          j        dt          j                    fg          }t          j	        
                    | |          }|j        dk    sJ |j        |k    sJ |j        dgk    sJ d S )NrG  r   rz  r   ry  rD   r'  )r   r   r   re  ri   rF   r,   r-   r  r}   r-  rp  rG  r  s       r!   test_table_from_pydict_schemar  7	  sy    tAw08UU47^^2LMNND Y+h
-E,. / /F	xv	.	.	. 2 2
T&1112 2 2 2 2 2 2 2 2 2 2 2 2 2 2 Y+,--FH  f 55E!!!!<6!!!!&))))))s   "CCCc           	         |                      g           }|j        dk    sJ |j        dk    sJ |j        t	          j        g           k    sJ |                                g k    sJ t	          j        dt	          j                    fdt	          j                    fg          }ddddddd	d dg}|                      |          }|j        d
k    sJ |j        dk    sJ |j        |k    sJ |                                |k    sJ ddi}|                    |          }|                      ||          }|j        |k    sJ |j        j	        |k    sJ |                                |k    sJ |                      ||          }|j        |k    sJ |j        j	        |k    sJ |                                |k    sJ t          j        t                    5  |                      |||           d d d            n# 1 swxY w Y   t          j        t                    5  |                      ddiddidd
igt	          j        dt	          j                    fg                     d d d            n# 1 swxY w Y   t	          j        dt	          j                    fdt	          j                    fdt	          j                    fg          }|                      dddd
dddddg|          }dd d dd
d d ddd d dg}|j        |k    sJ |                                |k    sJ t          j        t                    5  |                      ddidd
iddigi            d d d            n# 1 swxY w Y   dddddidd	ig}dddd ddd	d dg}|                      |          }|j        d
k    sJ |j        dk    sJ |                                |k    sJ ddiddddd ig}ddiddidd ig}|                      |          }|j        dk    sJ |j        dk    sJ |                                |k    sJ d S )Nr   rG  rz  rF  r   )rG  rz  r   r   r   r   r   r{  r|  r}  r'  r  rC  r   ry   r    r   r   r   )ry   r    r   )from_pylistrp  r   r   r   r*   re  ri   r  rO  r,   r-   r.   rh   r)   rF   rt   r   )r'  r   r   r<   rO  r=   s         r!   test_table_from_pylistr  O	  s    OOBE!!!!>Q<29R==((((??""""Y+h
-EFGGF 3''a((d++-D OOD!!E!!!!>Q<6!!!!??$$$$ H!!(++FOOD8O44E<6!!!!< H,,,,??$$$$ OODO00E<6!!!!< H,,,,??$$$$ 
z	"	" @ @Vh???@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ 
y	!	! A A$T1Iay9!y4*=)>?? 	 	A 	A 	AA A A A A A A A A A A A A A A
 Ybhjj)bhjj)bhjj)  F OOq		++11-=-=>   E $T**$T**$T**,D <6!!!!??$$$$ 
y	!	! C C#qC8c1X6rBBBC C C C C C C C C C C C C C C 3''qMUOD C((a((t,,.E OOD!!E!!!!>Q??%%%%RLa((tD b\e_d^E OOD!!E!!!!>Q??%%%%%%s7   H  HH$AI77I;>I;!M33M7:M7c                  J   dd l } |                     t          dg dfdg dfg                    }t          j        dt          j                    fdt          j                    fg          }t          j                            ||          }t          j	        
                    |                    d          j                  sJ |j                                        |k    sJ t          j        dt          j                    fdt          j        d          fg          }t          j        t"          t$          f          5  t          j                            ||           d d d            n# 1 swxY w Y   t          j        dt          j                    fdt          j                    fdt          j                    fg          }t          j        t*          d	          5  t          j                            ||           d d d            n# 1 swxY w Y   t          j        dt          j                    fg          }t          j                            ||          }|j        d
k    sJ |j                                        |k    sJ |j        dgk    sJ d S )Nr   rG  r  rz  r  r'  r  ry  rD   r   )r   r   r   r   r   re  r   r}   r   r  r  r   r	   remove_metadatar   r,   r-   r-  rh   ri   rF   r  rp  rG  )r   r   r   r   s       r!   test_table_from_pandas_schemar  	  s    	kF,>,>,>#?$,nnn#=#? @ @ 
A 
AB Y+h
-EFGGFH  F 33E8u||H55:;;;;;<''))V3333 Y+hS8I8I-JKLLF	+Y7	8	8 0 0
R///0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Y+h
-E,. / /F	xv	.	.	. 0 0
R///0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Y+,--FH  F 33E!!!!<''))V3333&))))))s$   "E11E58E5'"HHHc                     dd l } t          dg dfdg dfg          }t          j        g dd          t          j        g dd          d	}t          j        dt          j                    fdt          j                    fg          }|                     |          }t          j        |          }t          j	        
                    |          }|                    |          sJ t          j        ||
          }t          j	        
                    ||
          }|                    |          sJ t          j        |          }t          j	                            |          }|                    |          sJ t          j        ||
          }t          j	                            ||
          }|                    |          sJ d S )Nr   r   r   ry   r   r)   r   rt   )r   ry   r'  )r   r   r   rN   r   rt   r)   r   r   r}   r   rP   r-  )r   r   
d_explicitr   r   r  r  s          r!   test_table_factory_functionr  	  s    	c???+c999-=>??Axh???x			888: :J Ybhjj)C+=>??F	aBXb\\FX!!"%%F==     Xb(((FX!!"V!44F==     Xj!!FX!!*--F==      Xa'''FX!!!F!33F==       r#   c                     t          j        t                    5  t          j        dg didg           d d d            n# 1 swxY w Y   t          j        dt          j                    fg          } t          j        dt          j        g dt          j                              i|           }|	                    d          j
        t          j                    k    sJ t          j        g dd          g}dg}t          j        ||          }|j        |k    sJ t          j        dt          j                    fg          } t          j        ||           }|j        |k    sJ d S )Nry   r   rz   r   rF   )r,   r-   r.   r   r   r   rt   rN   rF   r   r	   rG  )r   r   r<   r{   s       r!    test_table_factory_function_argsr
  	  s   	z	"	" 0 0
#yyy!#////0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Ybhjj)*++FHc28IIIBHJJ???@&IIE<<!RXZZ//// HYYYW---.DEEHT5!!E&&&&Ybhjj)*++FHT6""E&&&&&&s   AA	Ac                     dd l } t          j        t                    5  t	          j        |                     dg di          dg           d d d            n# 1 swxY w Y   t          j        t                    5  t	          j        |                     dg di          ddi           d d d            n# 1 swxY w Y   t	          j        dt	          j                    fg          }t	          j        |                     dg di          |          }|	                    d          j
        t	          j                    k    sJ d S )Nr   ry   r   rz   r{  r|  r}  )r   r,   r-   r.   r   r   r   r   rt   r   r	   )r   r   r   s      r!   'test_table_factory_function_args_pandasr  	  s    
z	"	" > >
sIII.//u====> > > > > > > > > > > > > > > 
z	"	" L L
sIII.//66:JKKKKL L L L L L L L L L L L L L L Ybhjj)*++FHR\\3			"233V<<E<<!RXZZ//////s#   /AA A=0B99B= B=c                  $   t          j        t          d          5  t          j        d           d d d            n# 1 swxY w Y   t          j        t          d          5  t          j        d           d d d            d S # 1 swxY w Y   d S )Nz!Expected pandas DataFrame, pythonrD   zinvalid inputzExpected pandas DataFrame)r,   r-   rh   r   r   r(  rW   r#   r!   $test_factory_functions_invalid_inputr  
  s	   	y(K	L	L	L " "
!!!" " " " " " " " " " " " " " " 
y(C	D	D	D ) )
((() ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) )s!   =AA#BB	B	c                  ,   t          j        t          j        dt          j                    ddi          t          j        dt          j                              gddi          } t          j        t          j        g dd	
          t          j        g dd
          g|           }t          |          dk    sJ |                    d          dk    sJ |                    d          dk    sJ |                    d          dk    sJ d S )NrC  rL  rM  r}  rD  r{  r|  r^  r   r   rx   r  r  r  rt   r'  zJpyarrow.Table
c0: int16
c1: int32
----
c0: [[1,2,3,4]]
c1: [[10,20,30,40]]Tshow_metadatazhpyarrow.Table
c0: int16
  -- field metadata --
  key: 'value'
c1: int32
-- schema metadata --
foo: 'bar'r   preview_colsr   z:pyarrow.Table
c0: int16
c1: int32
----
c0: [[1,2,3,4]]
...)	r   r   r   r   rt   r   rN   rl   	to_stringr   tabs     r!   test_table_repr_to_stringr  
  sb   Yrxzz+0'*:< < <rxzz224 "( 02 2 2F
 (BH\\\888H---G<<<>FLN N NCs88      ==t=,, 1     ==a=(( -     ==a=(( -      r#   c                     t          j        t          j        dt          j                    ddi          t          j        dt          j                              gddi          } t          j        t          j        g dd	z  d
          t          j        g dd	z  d          g|           }t          |          dk    sJ d S )NrC  rL  rM  r}  rD  r{  r|  r^  rx   r   r   r  rt   r'  zppyarrow.Table
c0: int16
c1: int32
----
c0: [[1,2,3,4,1,...,4,1,2,3,4]]
c1: [[10,20,30,40,10,...,40,10,20,30,40]])r   r   r   r   rt   r   rN   rl   r  s     r!   "test_table_repr_to_string_ellipsisr  A
  s    Yrxzz+0'*:< < <rxzz224 "( 02 2 2F
 (BH\\\"_7;;;H---b0w???A " " "C s88 - - - - - - -r#   c                  ,   t          j        t          j        dt          j                    ddi          t          j        dt          j                              gddi          } t          j        t          j        g dd	
          t          j        g dd
          g|           }t          |          dk    sJ |                    d          dk    sJ |                    d          dk    sJ |                    d          dk    sJ d S )NrC  rL  rM  r}  rD  r{  r|  r^  r   r   r  rt   r'  zLpyarrow.RecordBatch
c0: int16
c1: int32
----
c0: [1,2,3,4]
c1: [10,20,30,40]Tr  znpyarrow.RecordBatch
c0: int16
  -- field metadata --
  key: 'value'
c1: int32
-- schema metadata --
foo: 'bar'r   r  r   z>pyarrow.RecordBatch
c0: int16
c1: int32
----
c0: [1,2,3,4]
...)	r   r   r   r   rt   r(  rN   rl   r  r   r   s     r!    test_record_batch_repr_to_stringr  S
  sb   Yrxzz+0'*:< < <rxzz224 "( 02 2 2F
 ORXlllAAAX&6&6&6WEEEG#)+ + +E u::      ???.. 3     ???** /     ???** /      r#   c                     t          j        t          j        dt          j                    ddi          t          j        dt          j                              gddi          } t          j        t          j        g dd	z  d
          t          j        g dd	z  d          g|           }t          |          dk    sJ d S )NrC  rL  rM  r}  rD  r{  r|  r^  rx   r   r   r  rt   r'  zpyarrow.RecordBatch
c0: int16
c1: int32
----
c0: [1,2,3,4,1,2,3,4,1,2,...,3,4,1,2,3,4,1,2,3,4]
c1: [10,20,30,40,10,20,30,40,10,20,...,30,40,10,20,30,40,10,20,30,40])r   r   r   r   rt   r(  rN   rl   r  s     r!   )test_record_batch_repr_to_string_ellipsisr  ~
  s    Yrxzz+0'*:< < <rxzz224 "( 02 2 2F
 ORXlll2oGDDDX&6&6&6r&9HHHJ#)+ + +E u:: I I I I I I Ir#   c                     d} d}t          |g df| g dfg          }t          j        | t          j                    f|t          j                    fg          }t          j        ||          }|d                             d                              t          j        g dd                    sJ |d	                             d                              t          j        g dd
                    sJ d S )Nu   ääähu   öööfr   r   r'  r   rt   r   r   r)   )	r   r   r   rt   r)   r   r   rP   rN   )col_acol_br   r   r   s        r!   "test_table_function_unicode_schemar#  
  s    EE 	e___-yyy/ABCCAY

+eRY[[-ABCCFXa'''F!9??1$$RXiiig%F%F%FGGGGG!9??1$$RXoooH%M%M%MNNNNNNNr#   c                  ,   t          j        t          j        g d          t          j        g d          gddg          } |                     t          j        ddg                                        |                     dd                    sJ d S )NrV  rW  rX  rY  r   r   )r   r   rN   rZ  rP   r|   rO  s    r!   %test_table_take_vanilla_functionalityr%  
  s    H	$$$	%	%	+++	,	,	.	t E
 ::bh1v&&''..u{{1a/@/@AAAAAAAr#   c                     t          j        t          j        g d          t          j        g d          gddg          } t          j        t          j        dd g          t          j        dd g          gddg          }|                     t          j        dd g                                        |          sJ d S )NrV  rW  rX  rY  r   ry   r   r   r   rN   rZ  rP   )r   result_with_null_indexs     r!   test_table_take_null_indexr)  
  s    H	$$$	%	%	+++	,	,	.	t E
  X	1d)			3+			 	t 
 ::bh4y))**112HIIIIIIIr#   c                     t          j        t          j        g d          t          j        g d          gddg          } t          j        t          j        dd g          t          j        ddg          gddg          }|                     t          j        dd	g                                        |          sJ d S )
NrV  rW  rX  rY  r   r   r   r   r   r'  )r   result_non_consecutives     r!   test_table_take_non_consecutiver,  
  s    H	$$$	%	%	+++	,	,	.	t E
  X	1d)			3*				t 
 ::bh1v&&''../EFFFFFFFr#   c                  |   t          j        g d          } t          j        g d          }t          j        ddgddgddgd d	d
gg          }t          j        | ||gg d          }|                    dg          }t          j        | gdg          }|                    |          sJ |                    ddg          }t          j        ||gddg          }|                    |          sJ |                    dg          }t          j        | gdg          }|                    |          sJ |                    ddg          }t          j        ||gddg          }|                    |          sJ |                    ddi          }|                    ddg          }d|j        j        v sJ t          j	        t          d          5  |                    dg           d d d            n# 1 swxY w Y   t          j	        t          d          5  |                    dg           d d d            n# 1 swxY w Y   |                    ddg          }t          j        ||gddg          }|                    |          sJ t          j        | ||gg d          }t          j	        t          d          5  |                    dg           d d d            n# 1 swxY w Y   |                    dg          }t          j        |gdg          }|                    |          sJ d S r  )r   rN   r   r  rP   r  r   rO  r,   r-   r  rs   )r  r  r  r   r   rS   r  s          r!   test_table_selectr.  
  s   	$$$	%	%B	+++	,	,B	Aq6Aq6Aq64!R9	:	:BHb"b\#5#5#566E \\4&!!Fxtf%%H=="""""\\4,''FxR4,//H==""""" \\1#Fxtf%%H=="""""\\1a&!!FxR4,//H==""""" **C=99F]]D$<((F6=))))) 
x'B	C	C	C  dV               
z)>	?	?	?  aS               \\4,''FxR4,//H==""""" Hb"b\#5#5#566E	x'B	C	C	C  dV               \\4&!!Fxtf%%H=="""""""r  c            	      (   d } t          j        t          j        g d          t          j        g d          t          j        g d          t          j        g d          gg d          }|                    d                              d	g          } | |                                          g d
g ddk    sJ |                    d                              d	dg          } | |                                          g d
g dg ddk    sJ |                    d                              dg          } | |                                          g d
g ddk    sJ |                    d                              ddg          } | |                                          g d
g dg ddk    sJ |                    d                              ddg          } | |                                          g d
g dg ddk    sJ |                    ddg                              dg          } | |                                          g dg dg ddk    sJ |                    d                              dddg dfdg          } | |                                          g d
g dg dg dg dg ddk    sJ t          j        t          j        g d           t          j        g d!          gdd"g          }|                    dg                              d"d#t          j        d$%          fg          }|                                d&gd'gd(k    sJ |                    dg                              d"d#t          j        d)%          fg          }|                                d&gd*gd(k    sJ |                    dg                              d"d#t          j        d+%          fg          }|                                d&gd,gd(k    sJ |                    dg                              g dfd"d#t          j        d+%          fg          }|                                d&gd'gd,gd-k    sJ |                    dg                              g dfg          }|                                d&gd'gd.k    sJ t          j        g d/t          d0          d1          }t           j	        
                    |                    d'2                    }|                    d                              dg          } | |                                          d&d3gd0d4gdk    sJ d S )5Nc                    d| v r*t          t          | d         | d                             }n| d         }t          |          }dt          | d                   i}| D ]`}|dk    r	t          t          || |                             }|D ]1}|                    |g                               ||                    2a|S )Nkeys2keys)r  r   sortedr,  
setdefaultr   )r   r2  sorted_keyssorted_dentryr  ks          r!   sorted_by_keysz+test_table_group_by.<locals>.sorted_by_keys
  s    a<<QvY'
3344DDV9DTllF1V9--. 	A 	AE#dAeH--..F  A A##E2..55fQi@@@@Ar#   ry   ry   r   r   r    )Xr;  YZr=  r  )rx   r  r  r  r  )r2  r1  r  	bigvaluesrz   r2  )r  hash_sumr   )r   r   r   )r2  
values_sum)r  
hash_count)r   r   r   )r2  r@  values_count)r  r4   )r  max)r>  r4   )r   r   r   )r  r  r  )r2  
values_maxbigvalues_sum)r>  rC  )r  r  r  )r2  r@  bigvalues_maxr1  )ry   r   r   r    )r;  r<  r=  r=  )r   r   r   r   )r2  r1  r@  	count_all)r2  rD  rE  rF  rG  r@  )ry   ry   ry   )r   NNr  countr1   )modery   r   )r2  rB  	only_nullr   
only_validr   )r2  rG  rB  )r2  rG  )ry   r   ry   r   ry   r   r   r2  r  r  r   r   )r   r   rN   group_by	aggregater+  pcCountOptionsr   r}   r1  r  )r9  r   rtable_with_nullstable_with_chunkss        r!   test_table_group_byrT  
  sP       H
***++
***++
!!
%%%&&	
 6557 7 7E 	v((* 	 	A >!++--((ii- -    
 	v(( * 	 	A >!++--((ii!		- -     	v((* 	 	A >!++--((ii- -    
 	v((* 	 	A >!++--((ii%- -     	v((* 	 	A >!++--((ii%- -     	())335 	 	A >!++--(($$$%%%"ll- -     	v((	[* 	 	A >!++--((ii%%YYii- -     x
!!
!!! h! ! !
 	!!6(++55	7BO77787 	 	A ;;==     
 	!!6(++55	7BO===>7 	 	A ;;==     
 	!!6(++55	7BO>>>?7 	 	A ;;==     
 	!!6(++55	[	7BO>>>?7 	 	A ;;==S      	!!6(++55	[7 	 	A ;;==S     
 H...((   E --q))+ +""6**446G5HIIA>!++--((c
!f- -      r#   c                     t          j        g dddgdz  d          } t          j        g dddgdz  d          }t          j        | |g          }t          j        t
                    5  |                    d                              dg           d d d            n# 1 swxY w Y   |                    dd                              dg          }t          j        ddgd	dgd
          }|                    |          sJ d S )Nr^  ry   r   r   r   )ry   firstF)use_threadsr   )r   a_first)	r   r   r  r,   r-   r-  rM  rN  rP   )r  r  r   r   rS   s        r!   test_table_group_by_firstrY    sM    XLLLSzA~>>??FXLLLSzA~>>??Fff-..E	*	+	+ 8 8s%%~&67778 8 8 8 8 8 8 8 8 8 8 8 8 8 8 ^^CU^33==~>NOOFxsCjaV<<==H=="""""""s   ,*B""B&)B&c                     t          j        g dg dg dd          } t          j        t          d          5  |                     d                              dg           d d d            n# 1 swxY w Y   |                     d                              d	g          }t          j        g d
i i i gd          }|                    |          sJ t          j	        d          }|                     d                              dd|fg          }t          j        g d
dddddddddgd          }|                    |          sJ d S )N)r   r   r   r   r   r   )hr[  r[  wr\  r\  )rx   r  r  r  r  r  )grouprL  rM  z accepts 3 arguments but 2 passedrD   r]  )rL  pivot_wider)rL  rM  r^  r   )r]  key_value_pivot_wider)r[  r\  )	key_namesr_  r^  rx   r  r  r  r  r  )
r   r   r,   r-   r.   rM  rN  rP   rO  PivotWiderOptions)r   r   rS   optionss       r!   test_table_group_by_pivot_widerrd    s   H111;;;7779 9 : :E 
z)K	L	L	L D Dw))+A*BCCCD D D D D D D D D D D D D D D
 ^^G$$..0Q/RSSFx)))35r2,@ @ A AH==""""""Z888G^^G$$..
M7	346 6Fx))Br!3!32B5G5G#I	J 	JK KH =="""""""s   *A00A47A4c                  t   t           j                            dg di          } |                                 }| j        |j        k    sJ | |                                k    sJ |                     d          }|                                j        dk    sJ |                                j        dk    sJ d S )Nr   r   r   r  r   )r   r}   r-  	to_readerr   read_allread_next_batchr   )r   r;  s     r!   test_table_to_recordbatchreaderri    s    H  #yyy!122E__F<6=((((FOO%%%%%%__1_--F!!##,1111!!##,111111r#   c                     t          j        g dg dd          } t          j        g dg dd          }|                     |dd          }|                                t          j        g dg dg d	d
          k    sJ |                     |ddd          }|                                                    d          t          j        g dg dg dd
          k    sJ d S )Nr   r   r   ry   r   rK  colAcol2rq   r   r   r=  r8  r7  )colBcol3rn  rr  r7  r8  Nrn  ro  rs  
full outer	join_typer   r   r   rq   ry   r   rK  Nr7  r8  Nr=  r   r   joinrO   sort_byr  s      r!   test_table_joinr    sH   			  
 
B
 


  
 
B
 WWR((F  ""bh		   0 0 ' '     WWR<W@@F  ""**622bh%%%%%%@ @ 7 7      r#   c                     t          j        g dg dd          } t          j        g dg dd          }|                     |d          }|                                t          j        g dg dg dd	          k    sJ |                     |dd
d          }|                                                    d          t          j        g dg dg dd	          k    sJ d S )Nrk  rl  rm  rp  rq  )rn  rs  rn  rt  ru  rv  _r)rx  right_suffixry  rz  r{  r|  r  s      r!   test_table_join_unique_keyr    sF   			  
 
B
 


  
 
B
 WWR  F  ""bh		   0 0 ' '     WWR<dWKKF  ""**622bh%%%%%%@ @ 7 7      r#   c            	      R   t          j        g dg dg dd          } t          j        g dg dg dd          }|                     |dd	
          }|                                                    d          t          j        g dg dg dg dg dgg d          k    sJ d S )Nrk  rx   r  r  rl  rn  rr  colValsrp  rq   r  rx   rq  rn  rv  rw  ry  )rx   r  r  Nrz  )rx   r  Nrq   r{  )rn  rr  r  rr  r  rz   r|  r  s      r!   test_table_join_collisionsr    s   			"??  
 
B 


"??  
 
B WWR<W88F  ""**622bh@ <;;7= 7= 7= = = = = = =r#   c                     |                      g dg dg dd          }|                    t          j        d          dk               }||                      ddgd	d
gddgd          k    sJ d S )N)r   r   r   r   )rx   r  Nr  )ry   r   r    rK  r  rr  r  r   r   rx   r  ry   r   )r-  filterrO  r   )r'  ry  r   s      r!   test_table_filter_expressionr    s     
"""'''  
 
B YYrx''",--FS__AR:& &        r#   c                  l   t          j        g dg dg dd          } t          j        g dg dg dd          }t          j        | |g          }|                    t	          j        d          d	k               }|                                t          j        g d
g dg dd          k    sJ d S )Nrk  r  rl  r  rp  r  rq  rn  rx   )r   r   r   r   r   )rx   r  r  r  rx   )ry   r   rK  r8  r7  )r   r   r  r  rO  r   rO   )ry  rU  rV  r   s       r!   #test_table_filter_expression_chunksr  &  s    			"??  
 
B
 


"??  
 
B 
	2r(	#	#BYYrx''",--F  ""bh$$$,,,0 0 ' '      r#   c                     t          j        g dg dd          } t          j        g dg dg dg dg dg dd          }|                     |dd          }|                                t          j        g dg dg d	g d	g d	g d	g d	d
          k    sJ |                     |ddd          }|                                                    d          t          j        g dg dg dg dg dg dg dd
          k    sJ d S )Nrk  rl  rm  rp  rq  )rr  rs  col4col5col6col7rn  rr  rt  )rn  ro  rs  r  r  r  r  rv  rw  ry  rz  r{  r|  r  s      r!   test_table_join_many_columnsr  =  s   			  
 
B
 


  
 
B WWR((F  ""bh		               0 0 ' '     WWR<W@@F  ""**622bh%%%%%%%%%%%%%%%%%%@ @ 7 7      r#   c                  F   t           j                            g dg dd          } t           j                            g dg dg dd          }|                     |dd	d
dd          }|                                t          j        g dg dg dd          k    sJ d S )N)r   r   r   r   r   )ry   r   ry   r   rK  rm  )r   r   r  )ry   r   g)re   rg   rC   )rr  rs  colCrn  ro  r   rr  rs  onby	toleranceright_onright_by)re   NNNN)rn  ro  r  )r   r}   r-  	join_asofrO   r   )ry  rU  rQ  s      r!   test_table_join_asofr  d  s    			)))  
 
B
 
		

  
 
B 	
v&A& 	 	 	A ))),,,+ + " "      r#   c                  .   t          j        g dg dg dd          } t          j        g dg dg dg dd	          }|                     |d
ddgd          }|                    d          t          j        g dg dg dg dd          k    sJ d S )Nrk  r  r   rn  rr  r  r  rq  rp  r   r   r   )rr  r  rn  r  r  rn  rr  r   r  r  r  )Nr8  Nrn  rr  r  r  )r   r   r  r~  r  s      r!    test_table_join_asof_multiple_byr  |  s    			ii  
 
B 
"??

ii	  
 
B \\
t(A   F >>&!!RX		ii$$$	/ / & &      r#   c                      t          j        dg di          } t          j        g dg dd          }|                     |dg d          }|t          j        g dg dd	          k    sJ d S )
Nr  r   rq  r  )r  r  r   r  )r=  r=  r8  )r  r  )r   r   r  r  s      r!   test_table_join_asof_empty_byr    s    	iii 
 
B 
"??ii  
 
B
 \\
ta   F RXii"??         r#   c            
      :   t          j        g dg dg dg dd          } t          j        g dg dg dg d	g d
d          }d}t          j        t          |          5  |                     |dddgddddg           d d d            d S # 1 swxY w Y   d S )Nrk  r  r   rl  r  r  rq  r  r  r  rp  r  )rr  r  colUniqrn  r  zXColumns {'colVals'} present in both tables. AsofJoin does not support column collisions.rD   r  rn  rr  r   r  )r   r   r,   r-   r.   r  ry  rU  rJ   s      r!   test_table_join_asof_collisionsr    s1   			ii"??	  
 
B 
"??"??

ii  
 
B	7  
z	-	-	- 
 

4VV,VV$4 	 	
 	
 	

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
s   # BBBc            	      @   t          j        g dg dg dd          } t          j        g dg dg dg dd	          }d
}t          j        t           j        j        |          5  |                     |dddgdddg           d d d            d S # 1 swxY w Y   d S )Nrk  r  r   r  rq  r  rp  r  r  r  rn  r  z)inconsistent size of by-key across inputsrD   r  rn  rr  r   r  r   r   r,   r-   r   r  r  r  s      r!   'test_table_join_asof_by_length_mismatchr    s    			ii  
 
B 
"??"??

ii	  
 
B 6C	rv*#	6	6	6 
 

4VV,VH 	 	
 	
 	

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
s   'BBBc            	      8   t          j        g dg dd          } t          j        g dg dg dg dd          }d	}t          j        t           j        j        |
          5  |                     |ddgdddg           d d d            d S # 1 swxY w Y   d S )Nrk  r   rn  r  rq  r  )g     X@rf   re   r  r  zCExpected by-key type int64 but got double for field colA in input 1rD   r  rn  r   r  r  r  s      r!   %test_table_join_asof_by_type_mismatchr    s   			ii  
 
B
 
"??"??ii	  
 
B PC	rv*#	6	6	6 
 

4VHVH 	 	
 	
 	

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
   $BBBc            	      8   t          j        g dg dd          } t          j        g dg dg dg dd          }d	}t          j        t           j        j        |
          5  |                     |ddgdddg           d d d            d S # 1 swxY w Y   d S )Nrk  r   r  rq  r  rp  )rf   rg   rB   r  zAExpected on-key type int64 but got double for field on in input 1rD   r  rn  r   r  r  r  s      r!   %test_table_join_asof_on_type_mismatchr    s   			ii  
 
B
 
"??"??

ll	  
 
B NC	rv*#	6	6	6 
 

4VHVH 	 	
 	
 	

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
r  c                    |                      d dgd dgd          }t          j        t          j        ddd          t          j        ddd	          g          }t	          j        t                    5  |                    |           d d d            n# 1 swxY w Y   |                      d dgd	dgd          }|                    |          j        |k    sJ d S )
Nr   Tr   ry   rF   r:  r   boolF)r-  r   r   r   r,   r-   r.   r	  )r'  r   
new_schemas      r!   test_table_cast_invalidr  	  s%    OO4)4,??@@EBHS'DAAAHS&5AAAC D DJ	z	"	"  

:               OO4)5$-@@AAE::j!!(J666666s   6BBBc                 2   |                      t          j        g d          t          j        g d          gddg          }|                    d                                          g dg ddk    sJ |                    d	g                                          g d
g ddk    sJ |                      t          j        g dt          j                              t          j        g d          gddg          }|                    dg          }|                                }|d         g dk    sJ |d         g dk    sJ |                    dg          }|                                }|d         g dk    sJ |d         g dk    sJ d S )N)r   r   r   r   r   )r   ry   r   ry   r    r  r2  rz   r:  r  rL  )r  
descending)r    r   r   ry   ry   )r   r   r   r   r   )r   r   r   #   r   )r   carr   foobarry   r   )ry   r  )r  r   r   r   )r  r  r   r   )ry   	ascending)r~   r   rN   r~  r+  rF   )r'  r   r  
sorted_tabsorted_tab_dicts        r!   test_table_sort_byr    s    OO
!!
***++   ! !E
 =="",,..)))!//3 3    
 ==2344>>@@)))!//E E    
 //
RXZZ000
00011 3Z   C
 1233J **,,O3===00003#B#B#BBBBB0122J **,,O3===00003#B#B#BBBBBBBr#   constructorc                     | g dg dgddg          }t          j        |          }t          j        ddgdd	gd
dggd          }t           j                            ||           t          j        |d          }t           j                            ||           |j        dk    sJ |                    g           }t          j        |          }t          j        d          }t           j                            ||           |j        dk    sJ t          j        |d          }t           j                            ||           |j        dk    sJ |                    dd          }t          j        |          }t          j        d          }t           j                            ||           |j        dk    sJ t          j        |d          }t           j                            ||           |j        dk    sJ d S )Nr   rA   ry   r   rz   r   r   r   r   r   r   ri   r   rt   )r   r   r   r   )	rZ   r[   rN   r   assert_allcloser   r  emptyr|   )r  r   r   rS   r  r  s         r!   test_numpy_asarrayr  C  s    KOOO4S#JGGGEZFx!Q!Q!Q0	BBBHJvx000ZW---FJvx000<7"""" \\"FZFxHJvx000<9$$$$Zg...FJvx000<7"""" [[AFZFxHJvx000<9$$$$Zg...FJvx000<7""""""r#   c                     | g dg dgddg          }t          j        ddgdd	gd
dggd          }t          t           j                  t          d          k     r8t          j        |d          }t           j                            ||           d S t          j        t          d          5  t          j        |d           d d d            d S # 1 swxY w Y   d S )Nr   rA   ry   r   rz   r   r   r   r   r   r   ri   r   z
2.0.0.dev0F)copyzUnable to avoid a copyrD   )	rZ   rN   r   __version__r   assert_array_equalr,   r-   r.   )r  r   rS   r   s       r!   test_numpy_array_protocolr  d  s0    KOOO4S#JGGGEx!Q!Q!Q0	BBBHr~!6!666%e,,,

%%fh77777 ]:-EFFF 	( 	(HU''''	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	(s   2CCCc                     d} t           j                            t          |           d t          |           D             d          }t           j                            t          |           d t          |           D             d          }t	          j        t           j        j                  5 }|                    |dd           d d d            n# 1 swxY w Y   d	}|t          |j
                  v sJ t	          j        t           j        j                  5 }|                    |dd           d d d            n# 1 swxY w Y   |t          |j
                  v sJ d S )
Nr  c                 @    g | ]}d  t          d          D             S )c                     g | ]}|S rW   rW   )r   r  s     r!   r  z;test_invalid_non_join_column.<locals>.<listcomp>.<listcomp>y  s    ...!...r#   r   )r   r  s     r!   r  z0test_invalid_non_join_column.<locals>.<listcomp>y  s-    III1..U1XX...IIIr#   )rl  array_columnc                     g | ]}|S rW   rW   r  s     r!   r  z0test_invalid_non_join_column.<locals>.<listcomp>}  s    ...!...r#   )rl  rM  rl  innerrw  zOData type list<item: int64> is not supported in join non-key field array_column)r   r}   r-  r   r,   r-   r   r  r}  rl   rM  )	NUM_ITEMSry  rU  excinfoexp_error_msgs        r!   test_invalid_non_join_columnr  t  s   I			IIIi8H8HIII  
 
B 
		I..U9--...  
 
B 
rv*	+	+ -w
DG,,,- - - - - - - - - - - - - - -/MC...... 
rv*	+	+ -w
DG,,,- - - - - - - - - - - - - - -C........s$   2CCCEEEc                  T    t          j        d          } |                     d          S )Nzpyarrow.cudar   )r,   importorskipContext)cudas    r!   cuda_contextr    s"    ~..D<<??r#   c                      t          j        t          j        dt          j                              t          j        dt          j                              g          S )NrC  rD  )r   r   r   rt   rW   r#   r!   r   r     s;    9bhtRXZZ00"(42L2LMNNNr#   c                     t          j        g d|                     d          j                  t          j        g d|                     d          j                  gS )Nr  r   rB  r   )r   rN   r   r	   r'  s    r!   
cpu_arraysr    sQ    H___fll1oo&:;;H+++V\\!__-ABBD Dr#   c                        fd|D             S )Nc                 D    g | ]}|                     j                  S rW   copy_tomemory_manager)r   rI   r  s     r!   r  zcuda_arrays.<locals>.<listcomp>  s(    KKKCKK344KKKr#   rW   )r  r  s   ` r!   cuda_arraysr    s    KKKK
KKKKr#   c                 D    t          j        |           }|j        du sJ |S )NTr   r(   is_cpu)r  r(   s     r!   cpu_chunked_arrayr    s,    $Z00M4''''r#   c                 D    t          j        |           }|j        du sJ |S NFr  )r  r(   s     r!   cuda_chunked_arrayr    s,    $[11M5((((r#   c                 J    t          j        | |z             }|j        du sJ |S r  r  )r  r  r(   s      r!   cpu_and_cuda_chunked_arrayr    s1    $Z+%=>>M5((((r#   c                 .    t          j        | |          S Nr'  )r   r(  )r  r   s     r!   cpu_recordbatchr    s    ?:f5555r#   c                 6    |                     | j                  S r   r  )r  r  s     r!   cuda_recordbatchr    s    ""<#>???r#   c                 2    t          j        ||g|           S r  r   r   )r   r  s     r!   	cpu_tabler    s    8&(9:6JJJJr#   c                 2    t          j        ||g|           S r  r  )r   r  s     r!   
cuda_tabler    s    8');<VLLLLr#   c                 2    t          j        ||g|           S r  r  )r   r  r  s      r!   cpu_and_cuda_tabler    s    8&(:;FKKKKr#   c                    |j         |j         k    sJ |                                |                                k    sJ t          |          t          |          k    sJ t          |          t          |          v sJ |                                 t          j        t                    5  |                    d           d d d            n# 1 swxY w Y   t          j        t                    5  |j         d d d            n# 1 swxY w Y   t          j        t                    5  |j	         d d d            n# 1 swxY w Y   t          j        t                    5  |
                                 d d d            n# 1 swxY w Y   t          j        t                    5  |d          d d d            n# 1 swxY w Y   t          j        t                    5  |                                 d d d            n# 1 swxY w Y   t          j        t                    5  |                                 d d d            n# 1 swxY w Y   t          j        t                    5  |                                 d d d            n# 1 swxY w Y   t          j        t                    5  |                    d           d d d            n# 1 swxY w Y   t          j        t                    5  ||k     d d d            n# 1 swxY w Y   t          j        t                    5  |                                 d d d            n# 1 swxY w Y   t          j        t                    5  |                                 d d d            n# 1 swxY w Y   t          j        t                    5  |                                 d d d            n# 1 swxY w Y   t          j        t                    5  |                                 d d d            n# 1 swxY w Y   t          j        t                    5  |                                 d d d            n# 1 swxY w Y   t          j        t                    5  |                                 d d d            n# 1 swxY w Y   t          j        t                    5  |                                 d d d            n# 1 swxY w Y   t          j        t                    5  |                                 d d d            n# 1 swxY w Y   t          j        t                    5  |                                 d d d            n# 1 swxY w Y   t          j        t                    5  |                    g d           d d d            n# 1 swxY w Y   t          j        t                    5  |                    d           d d d            n# 1 swxY w Y   |                    dd           t          j        t                    5  |                    dg           d d d            n# 1 swxY w Y   t          j        t                    5  |                                 d d d            n# 1 swxY w Y   t          j        t                    5  |                                 d d d            n# 1 swxY w Y   t          j        t                    5  |                                 d d d            n# 1 swxY w Y   |j        |j        k    sJ tA          |j!                  tA          |j!                  k    sJ |"                    d          }|j#        tH          j%        j&        k    sJ t          j        t                    5  |'                                 d d d            n# 1 swxY w Y   t          j        t                    5  |(                                 d d d            n# 1 swxY w Y   t          j        t                    5  |)                                 d d d            d S # 1 swxY w Y   d S )NTfullr   TFTFTr   r   r   )*r	   lengthrl   reprr+   r,   r-   r-  
null_countr9   r&   is_nullis_nanis_valid	fill_nullr   r\   	__array__r	  r   r   rO   uniquevalue_countsr  r   r|   rZ  	drop_nullsortr   r.  r3   r/   r   device_typer   DeviceAllocationTypeCUDAr*   r  
__reduce__)r  r  r  r  r   s        r!   test_chunked_array_non_cpur    s    "&7&<<<<< $$&&*;*B*B*D*DDDDD !""c*;&<&<<<<< !""d+=&>&>>>>> !!!	*	+	+ / /###.../ / / / / / / / / / / / / / / 
*	+	+ & &%%& & & & & & & & & & & & & & & 
*	+	+ " "!!" " " " " " " " " " " " " " " 
*	+	+ 3 3002223 3 3 3 3 3 3 3 3 3 3 3 3 3 3 
*	+	+  1               
*	+	+ % %""$$$% % % % % % % % % % % % % % % 
*	+	+ $ $!!###$ $ $ $ $ $ $ $ $ $ $ $ $ $ $ 
*	+	+ & &##%%%& & & & & & & & & & & & & & & 
*	+	+ ( ($$Q'''( ( ( ( ( ( ( ( ( ( ( ( ( ( ( 
*	+	+ 1 10001 1 1 1 1 1 1 1 1 1 1 1 1 1 1 
*	+	+ ' '$$&&&' ' ' ' ' ' ' ' ' ' ' ' ' ' ' 
*	+	+ & &##%%%& & & & & & & & & & & & & & & 
*	+	+ ' '$$&&&' ' ' ' ' ' ' ' ' ' ' ' ' ' ' 
*	+	+ " "!!!" " " " " " " " " " " " " " " 
*	+	+ / /,,.../ / / / / / / / / / / / / / / 
*	+	+ % %""$$$% % % % % % % % % % % % % % % 
*	+	+ , ,))+++, , , , , , , , , , , , , , , 
*	+	+ $ $!!###$ $ $ $ $ $ $ $ $ $ $ $ $ $ $ 
*	+	+ * *'')))* * * * * * * * * * * * * * * 
*	+	+ D D!!"B"B"BCCCD D D D D D D D D D D D D D D 
*	+	+ $ $  ###$ $ $ $ $ $ $ $ $ $ $ $ $ $ $ Q""" 
*	+	+ % %$$$% % % % % % % % % % % % % % % 
*	+	+ ' '$$&&&' ' ' ' ' ' ' ' ' ' ' ' ' ' ' 
*	+	+ " "!!!" " " " " " " " " " " " " " " 
*	+	+ 0 0--///0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 (,=,HHHHH !())S1B1I-J-JJJJJ $$Q''E 7 <<<<< 
*	+	+ ' '$$&&&' ' ' ' ' ' ' ' ' ' ' ' ' ' ' 
*	+	+ 0 0--///0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
*	+	+ ( (%%'''( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (s  .CCC5D		DD-EEE%FF
F
*	F??GG#HHH(I		II-JJJ2KKK8LLL/MMM4NNN9OO!O>PP#&P#Q$$Q(+Q(R))R-0R-S..S25S2T33T7:T7U88U<?U<W  WW$XX
X
 Y##Y'*Y'Z((Z,/Z,[--[14[1\22\69\6_&&_*-_*
`++`/2`/a11a58a5c                    |                                   | j        t          j        j        k    sJ | j        du sJ | j        t          |j                  k    sJ | j	        |j        k    sJ t          |           t          |           v sJ | j        D ]}|j        t          j        j        k    sJ | j        |k    sJ d S r  )r+   r  r   r  r  r  rp  r3   r{   rG  rl   r   rF  r   )r   expected_schemar    s      r!   verify_cuda_recordbatchr  ^  s    	NN 7 <<<<<<5    O$9 : :::::!66666u::e$$$$] = =} 7 <<<<<<<?******r#   c                    t          |           |j        }|j        dk    sJ t          |j                  dk    sJ |j        |j        fD ]}t          j        g dt          j	                              
                    | j                  } |dd|          }t          |                    t          j        dt          j	                                                   d}	t          j        t           |	          5   |dddg|z             d d d            n# 1 swxY w Y   |                    d          }t          |                    d                     |                    d	g          }t          |                    d                     |                    d
d	g          }
t          |
j                  dk    sJ |
j        t          j        j        k    sJ |                    d
g          }t          |                    d                     t          j        t          j        d
t          j                              t          j        d	t          j                              g          }t          j        t4                    5  |                    |           d d d            n# 1 swxY w Y   t          j        dg|z  g d          
                    | j                  }|                    dd|          }t          j        t4                    5  |                                 d d d            n# 1 swxY w Y   t          j        t4                    5  |                    dg|z             d d d            n# 1 swxY w Y   t          j        t4                    5  |                    dg           d d d            n# 1 swxY w Y   t          j        t4                    5  |                    d
           d d d            n# 1 swxY w Y   |                    d                              d          k    sJ |                    d                              d          k    sJ |
                    | j                  }t          j        t4                    5  |                     |          du sJ 	 d d d            n# 1 swxY w Y   t          j!        "                    |d
d	g          }t          |           |
                    t          j#                                                   |          sJ t          j!        $                    |d         |d         d          }t          |           |
                    t          j#                                                   |          sJ fdtK          t          j&                            D             }t          j'        "                    ||          }t          j        t4                    5  t          j!        (                    |           d d d            n# 1 swxY w Y   t          j        t4                    5  |j)        sJ 	 d d d            n# 1 swxY w Y   t          j        t4                    5  |*                                sJ 	 d d d            n# 1 swxY w Y   t          j        t4                    5  |+                                 d d d            n# 1 swxY w Y   t          j        t4                    5  |,                                 d d d            n# 1 swxY w Y   t          j        t4                    5  |-                                 d d d            n# 1 swxY w Y   t          j        t4                    5  |.                                 d d d            n# 1 swxY w Y   t          j        t4                    5  |/                                 d d d            n# 1 swxY w Y   t          j        t4                    5  |0                                 d d d            n# 1 swxY w Y   |1                    dd          }t          |           |j        dk    sJ |
                    t          j#                              }||1                    dd          k    sJ |2                    ddi          }t          |           |j        j3        ddik    sJ |4                    ddg          }t          j        t          j        d                    d          j5                  t          j        d                    d          j5                  g          }t          ||           |6                                 t          j        t4                    5  |6                    d           d d d            n# 1 swxY w Y   t          j        t4                    5  |7                                 d d d            n# 1 swxY w Y   t          j        t4                    5  |8                                 d d d            n# 1 swxY w Y   t          j        t4                    5  |9                                 d d d            n# 1 swxY w Y   t          j        t4                    5  tu          |;                                           d d d            d S # 1 swxY w Y   d S )Nr  r)  r   )r  rp   r   r   r   c2z`Got column on device <DeviceAllocationType.CPU: 1>, but expected <DeviceAllocationType.CUDA: 2>.rD   r   rD  rC  r   r  maskTrC  rD  c                 :    g | ]}                     |          S rW   r   r   r   r   s     r!   r  z,test_recordbatch_non_cpu.<locals>.<listcomp>  #    @@@!fll1oo@@@r#   r~  r      key   valuecol0col1r  )<r  r   r^   r3   rF  rR  rZ  r   rN   rG   r  r  r   r   r,   r-   rh   ri  removera  r  r  r  r  r   rF   r-  r	  r	  r  rZ  r~  rP   r   r~   default_cpu_memory_managerr-  r   r{   StructArrayr  r9   r&   r+  r*   r   r  r  	serializer|   r  rO  rv  r	   r+   r  r  r  r   __dataframe__)r  r  r  r  r   Nfnr   	new_batcherr_msgempty_batchr  null_colcuda_recordbatch_with_nullsr~  r  	cpu_batchr  s       `             r!   test_recordbatch_non_cpur/  j  s   ,fEEEE!A !V++++ '((A----  *,<,GH 	! 	!h((("'))   !<== 	Bq$$$	v}}RXdBGII5N5N'O'O	Q 	Q 	Q 	QB]9G444 	! 	!Bq$a   	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! !..q11IIv}}Q7G7GHHHH !--tf55IIv}}Q7G7GHHHH"//t==K{"##q(((("b&=&BBBBB !''//IIv}}Q7G7GHHHH BHT28::66rxzz8R8RSTTJ	*	+	+ * *j)))* * * * * * * * * * * * * * * xa&F&F&FGGGOO#% %H"2"="=ax"P"P	*	+	+ 0 0#--///0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
*	+	+ , ,
+++, , , , , , , , , , , , , , , 
*	+	+ # #qc"""# # # # # # # # # # # # # # # 
*	+	+ ' '  &&&' ' ' ' ' ' ' ' ' ' ' ' ' ' ' !!!$$Q7777!!!$$Q7777  ''(CDDI	*	+	+ : :&&y11T99999: : : : : : : : : : : : : : : **;tEEIIv>>>>R:<<==DD_UUUUU **+a.TU+W+WXXIIv>>>>R:<<==DD_UUUUU A@@@uS->->'?'?@@@F>--k&-IIL	*	+	+ 7 7
((6667 7 7 7 7 7 7 7 7 7 7 7 7 7 7 
*	+	+ ' '&&&&&' ' ' ' ' ' ' ' ' ' ' ' ' ' ' 
*	+	+ 8 8557777778 8 8 8 8 8 8 8 8 8 8 8 8 8 8 
*	+	+ % %""$$$% % % % % % % % % % % % % % % 
*	+	+ % %""$$$% % % % % % % % % % % % % % % 
*	+	+ % %""$$$% % % % % % % % % % % % % % % 
*	+	+ % %""$$$% % % % % % % % % % % % % % % 
*	+	+ + +((***+ + + + + + + + + + + + + + + 
*	+	+ % %""$$$% % % % % % % % % % % % % % % !&&q!,,IIv>>>>""""!!""?"A"ABBI--a333333 !88&(9KLLIIv>>>>$(::::: !//0@AAIi	&&,,q//.	/	/	&&,,q//.	/	/	12 2O IGGGG 	*	+	+ - -!!t!,,,- - - - - - - - - - - - - - - 
*	+	+ % %""$$$% % % % % % % % % % % % % % % 
*	+	+ - -**,,,- - - - - - - - - - - - - - - 
*	+	+ . .++---. . . . . . . . . . . . . . . 
*	+	+ 9 9'55778889 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9sz  D!!D%	(D%	K  KK/MMM4NN!N>O!!O%(O%P''P+.P+S((S,/S, Y..Y25Y2
Z))Z-0Z-[11[58[5\66\:=\:];;]?]?_  __$``	`	)a

aa.bbbh00h47h4i55i9<i9j::j>j>k??ll#"mmmc                    |                                   | j        du sJ | j        t          |j                  k    sJ | j        |j        k    sJ t          |           t          |           v sJ | j        D ]K}|j        du sJ |	                                D ])}|j        du sJ |j
        t          j        j        k    sJ *L| j        |k    sJ d S r  )r+   r  rp  r3   r{   rG  rl   r   rF  r2   r  r   r  r  r   )r   r  r    r   s       r!   verify_cuda_tabler1  
  s   	NN<5    O$9 : :::::!66666u::e$$$$] E Ex5    \\^^ 	E 	EE<5(((($(?(DDDDDD	E <?******r#   c                 h   t          |           |j        }|j        dk    sJ t          |j                  dk    sJ |j        |j        fD ]}t          j        dg|z  t          j	                              }|
                    | j                  }	 |dd|	          }
t          |
                    t          j        dt          j	                                                    |dd|          }
|
j        du sJ |
                    d          j        du sJ |
                    d          j        du sJ |
                    d          j        du sJ |                    d          }
t          |
                    d                     |                    d	g          }
t          |
                    d                     |                    d
d	g          }
t          |
j                  dk    sJ |
j        sJ |                    d
g          }
t          |
                    d                     t          j        t          j        d
t          j                              t          j        d	t          j                              g          }t-          j        t0                    5  |                    |           d d d            n# 1 swxY w Y   t          j        dg|z  dg|z            
                    | j                  }|                    dd|          }t-          j        t0                    5  |                                 d d d            n# 1 swxY w Y   t-          j        t0                    5  |                    dg|z             d d d            n# 1 swxY w Y   t-          j        t0                    5  |                    dg           d d d            n# 1 swxY w Y   t-          j        t0                    5  |                    d
           d d d            n# 1 swxY w Y   |                    d                              d          k    sJ |                    d                              d          k    sJ t-          j        t0                    5  |                    |          sJ 	 d d d            n# 1 swxY w Y   t          j                             |d
d	g          }
t          |
           t          j        !                    |d         |d         d          }
t          |
           fdtE          t          j#                            D             }t          j$                             ||          }t-          j        t0                    5  t          j        %                    |           d d d            n# 1 swxY w Y   t          j        &                    ||g          }
t          |
           t-          j        t0                    5  |j'        sJ 	 d d d            n# 1 swxY w Y   t-          j        t0                    5  |(                                sJ 	 d d d            n# 1 swxY w Y   t-          j        t0                    5  |)                                 d d d            n# 1 swxY w Y   t-          j        t0                    5  |*                                 d d d            n# 1 swxY w Y   t-          j        t0                    5  |+                                 d d d            n# 1 swxY w Y   t-          j        t0                    5  |,                                 d d d            n# 1 swxY w Y   |-                    d          }|D ]D}t-          j        t\                    5  t_          |           d d d            n# 1 swxY w Y   E|0                    d          }|D ]D}t-          j        t\                    5  t_          |           d d d            n# 1 swxY w Y   E|1                    dd          }
t          |
           |
j        dk    sJ |2                    ddi          }
t          |
           |
j        j3        ddik    sJ |4                    ddg          }
t          j        t          j        d                    d          j5                  t          j        d                    d          j5                  g          }t          |
|           |6                                 t-          j        t0                    5  |6                    d           d d d            n# 1 swxY w Y   t-          j        t0                    5  |7                                 d d d            n# 1 swxY w Y   t-          j        t0                    5  |7                                 d d d            n# 1 swxY w Y   t-          j        t0                    5  |8                                 d d d            n# 1 swxY w Y   t-          j        t0                    5  |9                    d
           d d d            n# 1 swxY w Y   t-          j        t0                    5  |:                    |d
           d d d            n# 1 swxY w Y   t-          j        t0                    5  |;                    |d
d
d           d d d            n# 1 swxY w Y   t-          j        t0                    5  |<                                 d d d            n# 1 swxY w Y   t-          j        t0                    5  |=                                 d d d            n# 1 swxY w Y   t-          j        t0                    5  t}          |?                                           d d d            n# 1 swxY w Y   t-          j        t0                    5  |@                                 d d d            d S # 1 swxY w Y   d S )Nr  )rx   r   r   r   r  Fr   TrD  rC  r  r  c                 :    g | ]}                     |          S rW   r  r  s     r!   r  z&test_table_non_cpu.<locals>.<listcomp>g  r  r#   r  r   r  r   r  r  r   r!  r  )Ar1  r   r^   r3   rF  rR  rZ  r   rN   rG   r  r  r   r   r  r   ri  r"  ra  r  r   rF   r,   r-   r-  r	  r	  r  rZ  r~  rP   r}   r~   r-  r   r{   r$  r  r1  r9   r&   r+  r*   r   r  r  AssertionErrorr  rf  r|   r  rO  rv  r	   r+   r   r   rM  r}  r  r  r  r   r&  r  )r  r  r  r  r  r   r'  r(  cpu_colcuda_col	new_tabler  r,  cuda_table_with_nullsr~  r  r7  r   r;  r  s        `              r!   test_table_non_cpur9    sR   j&9999A w&&&& z!""a'''' $j&;< 
2 
2(A37BGII..??<#>??Bq$))	)V]]HT2799%%6' 6' 	( 	( 	( 	(Bq$((	5(((("")U2222"")U2222"")T11111 ((++Iiq1A1ABBBB ''//Iiq1A1ABBBB''t55Iy !!Q&&&& !!4&))Iiq1A1ABBBB BHT28::66rxzz8R8RSTTJ	*	+	+ $ $
###$ $ $ $ $ $ $ $ $ $ $ $ $ $ $ xatfqj11199,:UVVH&11!T8DD	*	+	+ * *'')))* * * * * * * * * * * * * * * 
*	+	+ & &4&1*%%%& & & & & & & & & & & & & & & 
*	+	+                 
*	+	+ ! !4   ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! A&,,q//1111A&,,q//1111 
*	+	+ , ,  ++++++, , , , , , , , , , , , , , , $$[4,??Ii8888 $$KN+a.%Q%QRRIi8888 A@@@uS->->'?'?@@@F>--k&-IIL	*	+	+ 1 1
""<0001 1 1 1 1 1 1 1 1 1 1 1 1 1 1 %%'79I&JFSSIi8888 
*	+	+ ! !     ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! 
*	+	+ 2 2//1111112 2 2 2 2 2 2 2 2 2 2 2 2 2 2 
*	+	+                 
*	+	+                 
*	+	+                 
*	+	+ % %""$$$% % % % % % % % % % % % % % % ##!#44G C C]>** 	C 	C#E6BBBB	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C !!!22F C C]>** 	C 	C#E6BBBB	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C   A&&Ii8888"""" 22FH3EFFIi8888$(::::: ))66*:;;Ii	&&,,q//.	/	/	&&,,q//.	/	/	12 2O iAAAA 	*	+	+ ' '&&&' ' ' ' ' ' ' ' ' ' ' ' ' ' ' 
*	+	+                 
*	+	+                 
*	+	+ ( (%%'''( ( ( ( ( ( ( ( ( ( ( ( ( ( ( 
*	+	+ " "D!!!" " " " " " " " " " " " " " " 
*	+	+ * *
D)))* * * * * * * * * * * * * * * 
*	+	+ 8 8ZtQ7778 8 8 8 8 8 8 8 8 8 8 8 8 8 8 
*	+	+                 
*	+	+ ( (%%'''( ( ( ( ( ( ( ( ( ( ( ( ( ( ( 
*	+	+ 3 3z//112223 3 3 3 3 3 3 3 3 3 3 3 3 3 3 
*	+	+                                       s  =KK#&K#M11M58M5N;;N?N?PP	P&QQQS--S14S1 W==XX
Y++Y/2Y/Z33Z7:Z7[88[<?[<\==]]!^^	^&___`##`'	*`'	"b  b	b	=g  g$'g$h%%h),h)	i**i.1i.j//j36j3k55k9<k9l<<m m  nn	n	)o

oo.ppp3"q!!q%(q%r''r+.r+)collectionsr   collections.abcr   r5   r:   numpyrZ   ImportErrorr,   pyarrowr   pyarrow.computecomputerO  pyarrow.interchanger   pyarrow.vendored.versionr   r?   rK   rT   rX   markrb   rj   rn   rv   r   r   r   parametrizerV   rF   ri   r)   r>  r  r   r   r   r   r   r   r   r   r   nopandasr   r   r   r   r  r  r  r  r*  r/  r2  r@  rH  rT  r[  rb  rf  rn  rq  rt  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}   r   r2  r4  r>  r@  rB  rH  rK  rM  rP  rX  r\  rd  rg  rj  rl  ro  rq  rw  rz  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r0   rN   r(   r  r  r  r  r  r  r  r
  r  r  r  r  r  r  r#  r%  r)  r,  r.  acerorT  rY  rd  ri  r  r  r  r  r  r  datasetr  r  r  r  r  r  r  r  r  r   r(  r  r  r  fixturer  r   r  r  r  r  r  r  r  r  r  r  r  r  r/  r1  r9  rW   r#   r!   <module>rI     sT  $ $ # # # # # $ $ $ $ $ $ 



    	BBB            . . . . . . , , , , , ,  D*H *H *HZ     8 8 8 & & &C C C  ( ( ( (6! ! !0% % %-B -B -B` 	"	"	"HBHJJ/	xrxzz"			:2:<<(			929;;'	XRXhbhjj!!"a&1#,,-%Sz	"HBHYRY[[$9$9:	#	#	#BIxrxXRXZZ00("(3		2L2LMNN	P
 	  	  	      1 1 1& + + +2 + + +2 	/ 	/ 	/ %< %<  %<PG G G$O O O  
. . .*+ + +(> > > > > > > >O O O O O O O O <9K*LMM  NM*2 2 2  <9K*LMM  NM,$
 $
 $
N  "  8' ' '  . . .6 6 6" " "	+ 	+ 	+) ) )# # #"  *  *0# 0# 0#f= = =
    7 7 7
        5 5 5  % % %  
4B 4B  4Bn 6 6 6. 0. 0. 0.f   & . . .( 9. 9. 9.x $ $ $$  ""9 "9 "9J? ? ?- - -    0 0 0  	 	 	< < <* * * *D 
		 C C CL  
	, 	, 	,	0 	0 	0# # #&       *  *   
		   . 
		   $ 
		 " " "(  ( 
		    
		    0 0 06 6 6 
		 + + +8 
		 6 6 64  (
! 
! 
!"9 "9 "9JD D D(# # #4E E E< < <! ! ! / / /,6 6 60  ,> > >  *# # #4$ $ $" " " 
		 # # #8 
		 / / /8 
		 / / /> 9 9 9 ...)40...)284
teU^ur4j12B4DE)  
 M  M 
 MF 
		 65 65 65r ...)284
teU^ur4j12B4DE)  2 2	 2< ...)40...)284
teU^ur4j12B4DE)  
* * 
*& 
		 R& R& R&j * * *@ ! ! !:' ' '( 0 0 0 ) ) )' ' 'T- - -$( ( (VI I I$O O OB B BJ J JG G G0# 0# 0#f Y Y Yx # # # # # #22 2 2   4   4 = = =. "(bn >??  @?    , # # #L   .   2   & 
 
 
6 
 
 
, 
 
 
* 
 
 
* 
		 	7 	7 	7 
		 C C C@ 2?(CDD# # ED #> 2?(CDD( ( ED ( / / /0   
 O O O D D D
 L L L          6 6 6 @ @ @ K K K M M M L L LJ( J( J(Z	+ 	+ 	+]9 ]9 ]9@+ + +z  z  z  z  z s    %%