
    <>i                    2   S SK Jr  S SKJr  S SKrS SKr S SKrS SK	r	S SK
rS SKJr  S SKJr  S SKJr  S rS rS rS	 r\	R.                  R                  S
 5       rS rS r\	R.                  R                  S 5       rS rS rS r\	R.                  R?                  S/ SQ\R@                  " 5       4/ SQ\RB                  " 5       4/ SQ\RD                  " 5       4/ SQ\RF                  " 5       4/ \RH                  " \RJ                  " 5       5      4SS/S//\RH                  " \RB                  " 5       5      4S/SSS//\RH                  " \RF                  " 5       5      4/ SQ\RL                  " \RN                  " S\RB                  " 5       5      \RN                  " S\RF                  " 5       5      /5      4/5      S 5       r(\	R.                  RR                  S 5       r*\	R.                  RR                  S 5       r+\	R.                  RR                  S  5       r,\	R.                  RR                  S! 5       r-\	R.                  RR                  S" 5       r.\	R.                  RR                  \	R.                  R^                  S# 5       5       r0S$ r1S% r2S& r3S' r4S( r5 " S) S*5      r6 " S+ S,5      r7\	R.                  R?                  S-\6\7/5      S. 5       r8S/ r9\	R.                  R?                  S-\6\7/5      S0 5       r:S1 r;S2 r<S3 r=S4 r>S5 r?S6 r@S7 rAS8 rBS9 rCS: rDS; rES< rFS= rGS> rHS? rIS@ rJSA rKSB rLSC rMSD rNSE rOSF rPSG rQSH rR\	R.                  R                  \	R.                  R?                  SI/ SJQ5      SK 5       5       rS\	R.                  R                  SL 5       rT\	R.                  R                  SM 5       rU\	R.                  R                  SN 5       rV\	R.                  R                  SO 5       rW\	R.                  R                  SP 5       rX\	R.                  R                  SQ 5       rYSR rZSS r[ST r\SU r]\	R.                  RR                  SV 5       r^\	R.                  R                  SW 5       r_SX r`SY raSZ rb\	R.                  RR                  S[ 5       rc\	R.                  R?                  S\\R                  \R                  /5      S] 5       rfS^ rgS_ rhS` riSa rjSb rkSc rlSd rmSe rn\	R.                  R?                  S\\R                  \R                  /5      Sf 5       ro\	R.                  R?                  S\\R                  \R                  /5      Sg 5       rp\	R.                  R?                  S\\R                  \R                  /5      Sh 5       rqSi rr\	R.                  R?                  S\\R                  \R                  /5      Sj 5       rs\	R.                  R?                  S\\R                  \R                  /5      Sk 5       rtSl ruSm rv\	R.                  R?                  S\\R                  \R                  /5      Sn 5       rw\	R.                  R?                  S\\R                  \R                  /5      So 5       rxSp rySq rzSr r{Ss r|St r}Su r~Sv rSw r\	R.                  RR                  Sx 5       rSy rSz rS{ rS| rS} rS~ rS r\	R.                  R?                  S\\R                  \R                  /5      S 5       r\	R.                  R?                  S\\R                  \R                  /5      S 5       r\	R.                  R?                  S\\R                  \R                  /5      S 5       r\	R.                  R                  S 5       r\	R.                  R?                  S/ SQ/ SQ4\4/ SQ/ SQ4\GR                  4S/SS//S/SS//4\GR                  4/5      S 5       r\	R.                  R?                  S\\R                  \R                  /5      S 5       r\	R.                  R?                  S/ SQ/ SQ4\GR                  4S/SS//S/SS//4\GR                  4/5      S 5       r\	R.                  R?                  S/ SQ/ SQ4\4/ SQ/ SQ4\GR                  4S/SS//S/SS//4\GR                  4/5      S 5       r\	R.                  R?                  S\\R                  \R                  /5      S 5       r\	R.                  RR                  S 5       r\	R.                  RR                  S 5       rS r\	R.                  RR                  S 5       rS rS rS rS rS rS rS rS rS rS r\	R.                  GRF                  S 5       r\	R.                  GRF                  S 5       r\	R.                  GRF                  S 5       rS r\	R.                  GRF                  S 5       r\	R.                  GRF                  S 5       r\	R.                  GRF                  S 5       r\	R.                  GRF                  \	R.                  R?                  S\\R                  \R                  /5      S 5       5       r\	R.                  GRF                  S 5       r\	R.                  GRF                  S 5       r\	R.                  GR\                  S 5       r\	R.                  GR\                  S 5       r\	R.                  GR\                  S 5       r\	R.                  GR\                  S 5       r\	R.                  GR\                  S 5       r\	R.                  GR\                  S 5       r\	R.                  GR\                  S 5       r\	R.                  R?                  S\\R                  \R                  /5      S 5       r\	R.                  R?                  S\\R                  \R                  /5      S 5       r\	R.                  R                  \	R.                  R?                  S\GRp                  \GRr                  /5      S 5       5       r\	R.                  R                  \	R.                  R?                  S\GRp                  \GRr                  /5      S 5       5       r\	R.                  GRF                  S 5       r\	GRz                  S 5       r\	GRz                  S 5       r\	GRz                  S 5       r\	GRz                  S 5       r\	GRz                  S 5       r\	GRz                  S 5       r\	GRz                  S 5       r\	GRz                  S 5       r\	GRz                  S 5       r\	GRz                  S 5       r\	GRz                  S 5       r\	GRz                  S 5       rS rS rS rS rS rg! \ a    Sr GN{f = f)    )OrderedDict)IterableN)from_dataframe)Versionc                     [         R                  " / [         R                  " 5       S9n U R                  [         R                  " 5       :X  d   eU R	                  5       / :X  d   eU R                  5         [         R                  " / SS9nUR                  [         R                  " 5       :X  d   e[        R                  " [        5         [         R                  " / 5        S S S 5        [         R                  " / SQ/ SQ/ SQ/5      n [        U R                  [        5      (       d   e[        S U R                   5       5      (       d   e[        S U R                  5        5       5      (       d   e[        U R                  5      S:X  d   eU R!                  5       [#        S	 U R                  5        5       5      :X  d   e[$        R&                  " U 5      [(        R+                  U 5      U R!                  5       -   :  d   eU R,                  S
:X  d   eU R                  5         [.        R0                  " U 5      nU" 5       c   eA U" 5       b   eg ! , (       d  f       GNv= f)Ntypebinary                        	   c              3   j   #    U  H)  n[        U[        R                  R                  5      v   M+     g 7fN
isinstancepalib
Int64Array.0cs     W/var/www/html/land-tabula/venv/lib/python3.13/site-packages/pyarrow/tests/test_table.py	<genexpr>,test_chunked_array_basics.<locals>.<genexpr>4   s$     EAz!RVV..//   13c              3   j   #    U  H)  n[        U[        R                  R                  5      v   M+     g 7fr   r   r   s     r!   r"   r#   5   s&     K9JAz!RVV..//9Jr$   r   c              3   B   #    U  H  nUR                  5       v   M     g 7fr   )get_total_buffer_sizer   s     r!   r"   r#   7   s$      /K8I1 01/F/F/H/H8Is   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   BRYY[1D99		###>>r!!!MMORh/E::$$$	z	"
 
#  D
 dkk4((((EEEEEEK9JKKKKKt{{q   %%'3 /K8<8I/K ,K K K K==&"3"3#**,#- - - -;;)###MMO	T	B44<<- 
#	"s   I
Ic                     [         R                  " / SQ/ SQ/ SQ/5      n U R                  [         R                  " 5       :X  d   e[	        U 5      S:X  d   e[	        U R
                  5      S:X  d   e[         R                  " / SQ/ SQ/ SQ/5      n U R                  [         R                  " 5       :X  d   e[	        U 5      S:X  d   e[	        U R
                  5      S:X  d   e[         R                  " / SQ/ SQ/ SQ/[         R                  " 5       S9n U R                  [         R                  " 5       :X  d   e[	        U 5      S:X  d   e[	        U R
                  5      S:X  d   e[         R                  " / SQ/ /5      n U R                  [         R                  " 5       :X  d   e[	        U 5      S:X  d   e[	        U R
                  5      S:X  d   eS	n[        R                  " [        US
9   [         R                  " / 5      (       d   e S S S 5        [         R                  " / [         R                  " 5       S9R                  [         R                  " 5       :X  d   e[         R                  " / /5      R                  [         R                  " 5       :X  d   e[         R                  " / /[         R                  " 5       S9R                  [         R                  " 5       :X  d   eg ! , (       d  f       N= f)Nr   r   r   r   r         @      @g      @r   r   z@cannot construct ChunkedArray from empty vector and omitted typematch)r   r)   r	   int64r4   r0   int8r-   r.   r/   r*   null)arrmsgs     r!   test_chunked_array_constructionrL   D   s?   


 C
 88rxxz!!!s8q==szz?a


 C
 88rxxz!!!s8q==szz?a


 GGI	C
 88rwwy   s8q==szz?a



 C 88rxxz!!!s8q==szz?a
LC	z	-#### 
. BRYY[166"))+EEERD!&&"'')333RDryy{388BIIKGGG 
.	-s   )K""
K0c                      [         R                  " SS/5      n [         R                  " X /5      nUR                  5       n[         R                  " / SQ5      nUR	                  U5      (       d   eg )Nr   r   r   r   r   r   )r   arrayr)   combine_chunksequals)rJ   chunked_arrresexpecteds       r!   test_combine_chunksrU   q   sW    
((Aq6
C""C:.K

$
$
&Cxx%H::h    c                     [         R                  " / [         R                  " 5       S9R                  5       [         R                  " / [         R                  " 5       S9:X  d   e[         R                  " [         R                  " / [         R                  " 5       S9/[         R                  " 5       S9R                  5       [         R                  " / [         R                  " 5       S9:X  d   eg )Nr   )r   r)   bool_rP   rO    rV   r!   4test_chunked_array_can_combine_chunks_with_no_chunksrZ   z   s    BRXXZ0??ARXX
F    	"288:	&'bhhjn"((2BHHJ78 8 8rV   c                  *   [         R                  " / SQ/ SQ/ /5      n [        R                  " U 5      nU R	                  5       n[        U[        R                  5      (       d   eUR                  S:X  d   e[        R                  " X5      (       d   eg )Nr   r   )r   )	r   r)   npasarrayto_numpyr   ndarrayshapearray_equal)r=   arr1arr2s      r!   test_chunked_array_to_numpyrd      sy    
 D
 ::dD==?DdBJJ''''::>>$%%%%rV   c                     Sn [         R                  " [        U S9   [        R                  " [        R
                  " / SQ5      [        R
                  " / SQ5      /5        S S S 5        [         R                  " [        U S9   [        R                  " [        R
                  " / SQ5      /[        R                  " 5       S9  S S S 5        g ! , (       d  f       Np= f! , (       d  f       g = f)Nzchunks must all be same typerE   r         ?       @      @r   )r-   r.   	TypeErrorr   r)   rO   float64)rK   s    r!   !test_chunked_array_mismatch_typesrl      s    
(C	y	,
HHYHH\"
 	 
- 
y	,
"((9-.RZZ\B 
-	, 
-	, 
-	,s   ACA C
C
C*c                      [         R                  " / SQ5      [         R                  " / SQ5      /n [         R                  " U 5      n [        U 5      S:X  d   eg )Nr   r   z<[
  [
    1,
    2,
    3
  ],
  [
    4,
    5,
    6
  ]
])r   rO   r)   strr=   s    r!   test_chunked_array_strrp      sN    

D D!Dt9    rV   c                  D   [         R                  " / SQ5      [         R                  " / SQ5      /n [         R                  " U 5      n U S   R                  5       S:X  d   eU S   R                  5       S:X  d   eU S   R                  5       S:X  d   e[        R
                  " [        5         U S     S S S 5        [        R
                  " [        5         U S     S S S 5        U [        R                  " S5         R                  5       S:X  d   eU SS	 nUR                  5       S
S	/:X  d   eU S	S nUR                  5       S/:X  d   eU SS nUR                  U R                  :X  d   eUR                  5       / :X  d   eg ! , (       d  f       N= f! , (       d  f       N= f)Nr   r   r   r   r   iir   r   r   c   )r   rO   r)   as_pyr-   r.   
IndexErrorr\   int32r+   r	   )r=   
data_slices     r!   test_chunked_array_getitemrx      sg    	
D D!D7==?a8>>q   8>>q   	z	"Q 
#	z	"R 
# ""$)))aJ!aV+++aJ!aS(((bJ??dii'''!R''' 
#	"	"	"s   ,F F 
F
Fc                     [         R                  " / SQ5      [         R                  " / SQ5      /n [         R                  " U 5      n U R                  [	        U 5      5      nUR
                  U R
                  :X  d   eUR                  5       / :X  d   eU R                  [	        U 5      S-   5      nUR
                  U R
                  :X  d   eUR                  5       / :X  d   e[         R                  R                  U /S/S9nUR                  [	        U5      5      n[	        U5      S:X  d   e[         R                  R                  U /S/S9nUR                  [	        U5      S-   5      n[	        U5      S:X  d   eg )Nr   r   
   anamesr   )	r   rO   r)   slicer4   r	   r+   Tablefrom_arrays)r=   rw   tabletable_slices       r!   test_chunked_array_slicer      s=   

D D!DCI&J??dii'''!R'''CIN+J??dii'''!R'''HH  $u 5E++c%j)K{q   HH  $u 5E++c%j2o.K{q   rV   c                  ~   [         R                  " S/5      [         R                  " / SQ5      [         R                  " / SQ5      [         R                  " / SQ5      /n [         R                  " U 5      n[        [	        S5      U5       H  u  p#X#R                  5       :X  a  M   e   [        U[        5      (       d   eg )Nr   r   r   r   rz   )r   rO   r)   ziprangert   r   r   )r=   rJ   ijs       r!   test_chunked_array_iterr      s    
!


	D 

4
 CE"Is#GGI~~ $ c8$$$$rV   c                     S n S nU " [         R                  " / [         R                  " 5       S9[         R                  " / [         R                  " 5       S95        U" [         R                  " / [         R                  " 5       S9[         R                  " / [         R                  " 5       S95        [         R                  " SS/[         R                  " 5       S9n[         R                  " SS/[         R                  " 5       S9n[         R                  " SS/[         R                  " 5       S9n[         R                  " / SQ[         R                  " 5       S9nU " U/U/5        U" U/U/5        U " X$/X$/5        U " X$/U/5        U" XB/X$/5        [         R                  " / [         R                  " 5       S9R                  S 5      (       a   eg )Nc                 t   [        U [        R                  5      (       a  U nO[        R                  " U 5      n[        U[        R                  5      (       a  UnO[        R                  " U5      nUR	                  U5      (       d   eUR	                  U5      (       d   eX#:X  d   eU[        U5      :w  d   eg r   )r   r   ChunkedArrayr)   rQ   rn   xarrsyarrsxys       r!   eq%test_chunked_array_equals.<locals>.eq   s    eR__--A  'AeR__--A  'Axx{{{xx{{{vvCF{{rV   c                 R   [        U [        R                  5      (       a  U nO[        R                  " U 5      n[        U[        R                  5      (       a  UnO[        R                  " U5      nUR	                  U5      (       a   eUR	                  U5      (       a   eX#:w  d   eg r   )r   r   r   r)   rQ   r   s       r!   ne%test_chunked_array_equals.<locals>.ne  s{    eR__--A  'AeR__--A  'A88A;;88A;;vvrV   r   r   r   r   )r   r   r   r   )r   r)   rv   rG   rO   rQ   )r   r   r{   br    ds         r!   test_chunked_array_equalsr      sL    r,	,.r,	,. 	!Qbhhj)A
!Qbhhj)A
!Qbhhj)A
BHHJ/AsQCLsQCLvvvsOvv 4;;DAAAAArV   )r=   typ)TFTT)r   r   r   r   )rg         @N)r{   Nr   r   r   r   r{   r   r    ))r   r{   )r   r    Nc                 X   / nU (       a5  UR                  [        R                  " U S S US95        U SS  n U (       a  M5  [        R                  " X1S9nUR	                  5         UR                  UR                  U5      5      nUR	                  5         UR                  U5      (       d   eg )Nr   r   )appendr   rO   r)   r,   loadsdumpsrQ   )r=   r   pickle_modulearraysrO   results         r!   test_chunked_array_pickler   (  s     F
bhhtBQxc23ABx $ V.E	NN  !4!4U!;<F
OO==rV   c                     SS K n [        R                  " / SQ5      /n[        R                  " US/S9nUR	                  S5      n[        U[        R                  5      (       d   eUR                  5       n[        X@R                  5      (       d   eUR                  S:X  d   eUS   S:X  d   eUR                  S:X  d   eg )Nr   r   r   rz   r{   r|   )r   r   )pandasr   rO   r   columnr   r   	to_pandasSeriesr`   name)pdr=   r   colseriess        r!   test_chunked_array_to_pandasr   B  s     	$%D HHT#'E
,,q/Cc2??++++]]_Ffii((((<<4!9;;#rV   c                     SS K n SS KJn  [        R                  " / SQ5      [        R                  " U R                  / SQ5      5      [        R                  " U R                  SSS95      [        R                  " U R                  SSSS95      [        R                  " / SQ[        R                  " S	5      5      [        R                  " / SQ[        R                  " S	S5      5      4 H{  n[        R                  " S
U05      nUR                  S
5      R                  5       nUR                  S
:X  d   eU R                  UR                  5       S
S9nUR                  XE5        M}     g )Nr   r   r{   r   r{   2012r   )periodszEurope/Brussels)r   tzmsr   )r   )r   pandas.testingtestingr   rO   Categorical
date_range	timestampr   r   r   r   r   assert_series_equal)r   tmr=   r   r   rT   s         r!   *test_chunked_array_to_pandas_preserve_namer   S  s     HHYHHR^^O45HHR]]61]56HHR]]619J]KLHHYT 23HHYT3D EFH &$(f%//1{{f$$$99T^^-F9;
v0HrV   c                     SS K n U R                  U R                  SSS5      S9n[        R                  " U5      nUR                  5       nUR                  S:X  d   eUR                  S:X  d   eUR                  S:X  d   eUR                  R                  UR                  5      (       d   eU R                  U R                  SSS5      S9n[        R                  " U5      nUR                  5       nUR                  S:X  d   eUR                  S:X  d   eUR                  S:X  d   eUR                  R                  UR                  5      (       d   eg 	Nr   rz   r   )index)rz   r   r   r   )r   r   )
r   	DataFrame
RangeIndexr   r   r   num_rowsr`   r   rQ   )r   r=   r   r   s       r!   .test_table_roundtrip_to_pandas_empty_dataframer   g  s   
 <<bmmAr15<6DHHTNE__F>>R::   <<7"""<<tzz****<<bmmAr15<6DHHTNE__F>>Q::<<6!!!<<tzz****rV   c                     SS K n U R                  U R                  SSS5      S9n[        R                  R                  U5      nUR                  5       nUR                  S:X  d   eUR                  S:X  d   eUR                  S:X  d   eUR                  R                  UR                  5      (       d   eU R                  U R                  SSS5      S9n[        R                  R                  U5      nUR                  5       nUR                  S:X  d   eUR                  S:X  d   eUR                  S:X  d   eUR                  R                  UR                  5      (       d   eg r   )r   r   r   r   RecordBatchfrom_pandasr   r   r`   r   rQ   )r   r=   batchr   s       r!   4test_recordbatch_roundtrip_to_pandas_empty_dataframer     s+   
 <<bmmAr15<6DNN&&t,E__F>>R::   <<7"""<<tzz****<<bmmAr15<6DNN&&t,E__F>>Q::<<6!!!<<tzz****rV   c                  $   SS K n SS KJn  U R                  SS/SS/S.5      n[        R
                  " U5      nUR                  R                  5       R                  5       nUR                  S:X  d   eUR                  XBR                  S S 5        g )Nr   r   r   g?g?r{   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     sw     	QF#s4	5BHHRLE\\%%'113F<<6!!!&''"1+.rV   c                     [         R                  " S/5      [         R                  " / SQ5      /n [         R                  " U 5      n[        R                  " U5      nUR                  5       / SQ:X  d   eUR                  [        R                  " S5      :X  d   e[        R                  " USS9nUR                  5       / SQ:X  d   e[         R                  " SS /5      [         R                  " / SQ5      /n [         R                  " U 5      n[        R                  " U5      nUR                  5       nUS   S	:X  d   e[        R                  " US   5      (       d   eUS
S  / SQ:X  d   eUR                  [        R                  " S5      :X  d   e[         R                  R                  [         R                  " / SQ5      [         R                  " / SQ5      5      n[         R                  " XD/5      n[        R                  " U5      nUR                  [        R                  " S5      :X  d   eUR                  5       / SQS
-  :X  d   eg )Nr   r   )r   r   r   r   rG   rn   dtype)0123r   rg   r   rf   rk   )r   r   r   r   r   r{   r   r    r8   )r{   r   r    r{   r   )
r   rO   r)   r\   r]   tolistr   isnanDictionaryArrayr   )r=   rR   np_arrelementsrJ   s        r!   test_chunked_array_asarrayr     s    	!
D ""4(KZZ$F==?l***<<288G,,,, ZZ51F==?2222 	!T
D ""4(KZZ$F}}HA;"88HQK    AB<<'''<<288I.... 


(
(
!288O#<>C""C:.KZZ$F<<288H----==?7!;;;;rV   c            	      d   [         R                  " [         R                  " S[         R                  " 5       5      [         R                  " S[         R                  " 5       5      /5      n [         R
                  " / SQU S9n[         R                  " U5      nUR                  5       u  p4UR                  [         R                  " [         R
                  " / SQ[         R                  " 5       S95      5      (       d   eUR                  [         R                  " [         R
                  " / SQ[         R                  " 5       S95      5      (       d   e[         R
                  " / U S9n[         R                  " U5      nUR                  5       u  p4UR                  [         R                  " [         R
                  " / [         R                  " 5       S95      5      (       d   eUR                  [         R                  " [         R
                  " / [         R                  " 5       S95      5      (       d   eg )Nr   r   )r   r   r         @)r         @r   )r   r   r   )r   r   r   )	r   structfieldint16float32rO   r)   flattenrQ   )tyr{   carrr   r   s        r!   test_chunked_array_flattenr     sp   	BHHS"((*-HHS"**,/1 
2B
/b9AAD<<>DA88B$$RXXibhhj%IJKKKK88B$$RXXo35::<&A B C C C C 	"AAD<<>DA88B$$RXXbrxxz%BCDDDD88B$$RXXbrzz|%DEFFFFrV   c                  $   [         R                  " [         R                  " / SQ5      R                  5       [         R                  " / SQ5      R                  5       /5      n U R	                  S5      R
                  R                  [         R                  " SS/5      5      (       d   eU R	                  S5      R
                  R                  [         R                  " SS/5      5      (       d   eU R                  5       n [         R                  " / SQ5      nU R	                  S5      R
                  R                  U5      (       d   eU R	                  S5      R
                  R                  U5      (       d   eU R                  5       / S	Q:X  d   eg )
NfoobarNr   )quuxNr   r   r   r   r   r   r   r   r   )r   r   Nr   r   Nr   )	r   r)   rO   dictionary_encodechunk
dictionaryrQ   unify_dictionariesr+   )rJ   expected_dicts     r!   %test_chunked_array_unify_dictionariesr     s%   



,-??A
&'99; C 99Q<""))"((E5>*BCCCC99Q<""))"((FE?*CDDDD

 
 
"CHH34M99Q<""))-888899Q<""))-8888==?NNNNrV   c                      [         R                  " [        SS9   [        R                  " 5         S S S 5        g ! , (       d  f       g = f)Nr   rE   )r-   r.   rj   r   r   rY   rV   r!   test_recordbatch_dunder_initr     s&    	y	6
 
7	6	6	   9
Ac                      " S S5      n [         R                  " / SQ[         R                  " 5       5      n[         R                  " U/5      nU " U5      n[         R                  " U5      nXB:X  d   e[         R                  " U[         R                  " 5       S9nXBR                  [         R                  " 5       5      :X  d   eg )Nc                   $    \ rS rSrS rSS jrSrg):test_chunked_array_c_array_interface.<locals>.ArrayWrapperi  c                     Xl         g r   rO   )selfrO   s     r!   __init__Ctest_chunked_array_c_array_interface.<locals>.ArrayWrapper.__init__  s    JrV   Nc                 8    U R                   R                  U5      $ r   )rO   __arrow_c_array__r  requested_schemas     r!   r  Ltest_chunked_array_c_array_interface.<locals>.ArrayWrapper.__arrow_c_array__  s    :://0@AArV   r  r   __name__
__module____qualname____firstlineno__r  r  __static_attributes__rY   rV   r!   ArrayWrapperr     s    		BrV   r  r   r   )r   rO   rG   r)   r   cast)r  r=   chunkedwrapperr   s        r!   $test_chunked_array_c_array_interfacer    s    B B 88Irxxz*Dv&G4 G g&F gBHHJ7F\\"((*----rV   c                  <    " S S5      n [         R                  " / SQ/ SQ/5      nU " U5      n[         R                  " U5      nX1:X  d   e[         R                  " U[         R                  " 5       S9nX1R                  [         R                  " 5       5      :X  d   eg )Nc                   $    \ rS rSrS rSS jrSrg)Btest_chunked_array_c_stream_interface.<locals>.ChunkedArrayWrapperi  c                     Xl         g r   r  )r  r  s     r!   r  Ktest_chunked_array_c_stream_interface.<locals>.ChunkedArrayWrapper.__init__      "LrV   Nc                 8    U R                   R                  U5      $ r   )r  __arrow_c_stream__r  s     r!   r  Utest_chunked_array_c_stream_interface.<locals>.ChunkedArrayWrapper.__arrow_c_stream__  s    <<223CDDrV   r  r   r  r  r  r  r  r  r  rY   rV   r!   ChunkedArrayWrapperr    s    	#	ErV   r!  r   )r   Nr   r   )r   r)   r   r  )r!  r=   r  r   s       r!   %test_chunked_array_c_stream_interfacer"    s    E E Y56D!$'G g&F>> gBHHJ7FYYrxxz****rV   c                   $    \ rS rSrS rSS jrSrg)BatchWrapperi   c                     Xl         g r   r   r  r   s     r!   r  BatchWrapper.__init__!      
rV   Nc                 8    U R                   R                  U5      $ r   )r   r  r  s     r!   r  BatchWrapper.__arrow_c_array__$  s    zz++,<==rV   r&  r   r  rY   rV   r!   r$  r$     s    >rV   r$  c                   $    \ rS rSrS rSS jrSrg)BatchDeviceWrapperi(  c                     Xl         g r   r&  r'  s     r!   r  BatchDeviceWrapper.__init__)  r)  rV   Nc                 <    U R                   R                  " U40 UD6$ r   )r   __arrow_c_device_array__)r  r	  kwargss      r!   r1  +BatchDeviceWrapper.__arrow_c_device_array__,  s    zz223CNvNNrV   r&  r   )r  r  r  r  r  r1  r  rY   rV   r!   r-  r-  (  s    OrV   r-  wrapper_classc                    [         R                  " [         R                  " / SQ[         R                  " 5       S9/S/S9nU " U5      n[         R                  " U5      nX1:X  d   e[         R                  " [         R
                  " S[         R                  " 5       5      /5      n[         R                  " X$S9n[         R                  " [         R                  " / SQ[         R                  " 5       S9/S/S9nX5:X  d   eg Nr   r   r{   r|   r   )r   record_batchrO   rG   r   r   rv   )r4  r=   r  r   castable_schemarT   s         r!   "test_recordbatch_c_array_interfacer:  0  s    ??
,UD D!G __W%F>> ii
bhhj!! O __W=F
, UH rV   c                  $   [         R                  " [         R                  " / SQ[         R                  " 5       S9/S/S9n [        R
                  " [        SS9   U R                  SS9  S S S 5        U R                  S S9ng ! , (       d  f       N= f)	Nr   r   r{   r|   z7Received unsupported keyword argument\(s\): \['other'\]rE   znot-none)other)r   r8  rO   rG   r-   r.   NotImplementedErrorr1  )r=   _s     r!   =test_recordbatch_c_array_interface_device_unsupported_keywordr?  F  sw    ??	)"((*	-.seD 
H
 	%%J%7	
 	%%D%1A
 
s   B
Bc                 @   [         R                  " [         R                  " / SQ[         R                  " 5       S9/S/S9nU " U5      n[         R                  " U5      n[         R
                  R                  U/5      nX4:X  d   e[         R                  " [         R                  " S[         R                  " 5       5      /5      n[         R                  " X%S9n[         R                  " S[         R                  " / SQ[         R                  " 5       S905      nX4:X  d   eg r6  )
r   r8  rO   rG   r   r   from_batchesr   r   rv   )r4  r=   r  r   rT   r9  s         r!   test_table_c_array_interfacerB  V  s    ??
,UD D!G XXgFxx$$dV,H ii
bhhj!! O XXg6FxxRXXibhhj1 H rV   c                      " S S5      n [         R                  " [         R                  " / SQ[         R                  " 5       S9/S/S9[         R                  " [         R                  " / SQ[         R                  " 5       S9/S/S9/nU " U5      n[         R                  " U5      n[         R
                  R                  U5      nX4:X  d   e[         R                  " X!S   R                  S	9nX4:X  d   e[         R                  " [         R                  " S[         R                  " 5       5      /5      n[         R                  " X%S	9nX4R                  U5      :X  d   e[        R                  " [         R                  R                  S
S9   [         R                  " U[         R                  " [         R                  " S[         R                  " [         R                  " 5       5      5      /5      S	9  S S S 5        g ! , (       d  f       g = f)Nc                   $    \ rS rSrS rSS jrSrg)4test_table_c_stream_interface.<locals>.StreamWrapperin  c                     Xl         g r   batches)r  rH  s     r!   r  =test_table_c_stream_interface.<locals>.StreamWrapper.__init__o  r  rV   Nc                     [         R                  R                  U R                  S   R                  U R                  5      nUR                  U5      $ Nr   )r   RecordBatchReaderrA  rH  r   r  )r  r	  readers      r!   r  Gtest_table_c_stream_interface.<locals>.StreamWrapper.__arrow_c_stream__r  sA    ))66Q&&6F,,-=>>rV   rG  r   r   rY   rV   r!   StreamWrapperrE  n  s    	#	?rV   rO  r   r   r{   r|   r   r   r7  zField 0 cannot be castrE   )r   r8  rO   rG   r   r   rA  r   r   rv   r  r-   r.   r   ArrowTypeErrorlist_)rO  r=   r  r   rT   good_schemas         r!   test_table_c_stream_interfacerS  m  sk   ? ? 	)"((*=>seL
)"((*=>seLD D!G XXgFxx$$T*H XXg1gnn5F ))RXXc288:678KXXg2F]];//// 

%=
 	BIIrxxRXXbhhj5I'J&KL	

 
 
s   A'G;;
H	c                     [         R                  " [        S5      SS9[         R                  " / SQSS9/n [         R                  " U SS/5      n/ nUR	                  5        H  nUR                  U5        M     UR                  U:X  d   eU[         R                  " X!R                  S9:X  d   eU[         R                  " US	S  UR                  S	S  S9:w  d   eX:w  d   eg )
Nr   r   r   r   r   r   Nrz   rv   c0c1r|   r   )r   rO   r   r8  itercolumnsr   columnscolumn_names)r=   r   rY  r   s       r!   test_recordbatch_itercolumnsr[    s    
q(
'g6D OOD4,/EG  "s # ==G###BOOG3E3EFFFFBOOGABKu7I7I!"7MNNNNrV   c                     [         R                  " [        S5      SS9[         R                  " / SQSS9/n [         R                  " / SQ5      [         R                  " S/S/S	//5      /nS
S/n[         R                  " X5      nU[         R                  " X5      :X  d   eUR	                  [         R                  " X5      5      (       d   eU[         R                  " X5      :w  d   eUR	                  [         R                  " X5      5      (       a   e[         R                  " XSS0S9nUR	                  U5      (       d   eUR	                  USS9(       a   eUR	                  S 5      (       a   eUS:w  d   eg )Nr   r   r   rU  rv   r   r   efrV  rW  keyvaluer}   metadataTcheck_metadatar   )r   rO   r   r8  rQ   )data1r>   rZ  r   
batch_metas        r!   test_recordbatch_equalsrg    sF   
q(
'g6E
 	!
3%#&'E $<LOOE0EBOOE8888<<<====BOOE8888||BOOE@AAAA+0'*:<JU####  t <<< ||D!!!!E>>rV   c            	      0   [         R                  " [         R                  " / SQ5      [         R                  " / SQ5      /SS/5      n U R                  [         R                  " SS/5      5      R	                  U R                  SS5      5      (       d   eU R                  [         R                  " SS /5      5      R	                  [         R                  " [         R                  " SS /5      [         R                  " SS /5      /SS/5      5      (       d   eg )Nr   r   r   Nr   r{   r   r    r   r]  f1f2r   r   r    )r   r8  rO   takerQ   r~   r&  s    r!   test_recordbatch_takern    s    OO	$	%	+	,	.	tE ::bhh1v&'..u{{1a/@AAAA::bhh4y)*11
1d),bhhT{.CDt	&' ' ' 'rV   c                      [         R                  " [         R                  " / SQ5      /S/S9n U S   R                  S:X  d   eg Nr   r   r   r   a0r|   r   )r   r8  rO   _name)rbs    r!   )test_recordbatch_column_sets_private_nameru    s6    	"((<01$	@Ba5;;$rV   c            	      n   [         R                  " SS/5      n [         R                  " [         R                  " S[         R                  " [         R
                  " 5       5      5      /5      n[        R                  " [        5         [         R                  " U /US9  S S S 5        g ! , (       d  f       g = f)Nr   r   f0r7  )
r   rO   r   r   rQ  utf8r-   r.   r=  r8  )rJ   r   s     r!   ,test_recordbatch_from_arrays_validate_schemary    sh    
((Aq6
CYYrxx	':;<=F	*	+
f- 
,	+	+s   B&&
B4c                  (   [         R                  " S/5      [         R                  " / SQ5      [         R                  " S/5      /n [        R                  " [        5         [         R
                  " U / SQ5        S S S 5        g ! , (       d  f       g = f)Nr   )tokyolikehappyderek)idtagsr   )r   rO   r-   r.   r/   r8  ro   s    r!   -test_recordbatch_from_arrays_validate_lengthsr    sY    HHaSM288$>?HHgY!D 
z	"
45 
#	"	"s    B
Bc                      [         R                  " / / 5      n [        U 5      S:X  d   eU R                  S:X  d   eU R                  S:X  d   eg rK  )r   r8  r4   r   num_columnsr&  s    r!   test_recordbatch_no_fieldsr    sH    OOB#Eu:??>>Q!!!rV   c                     [         R                  " [        S5      5      [         R                  " / SQ5      /n [        R                  " [
        5         [         R                  " U / SQS9  S S S 5        [        R                  " [
        5         [         R                  " U S/S9  S S S 5        g ! , (       d  f       NH= f! , (       d  f       g = fNr   r   r   r|   r{   )r   rO   r   r-   r.   r/   r8  ro   s    r!   *test_recordbatch_from_arrays_invalid_namesr    s    
q
$%D 
z	"
O4 
# 
z	"
SE* 
#	" 
#	" 
#	"s   B,B=,
B:=
Cc                      [         R                  " [        S5      5      [         R                  " / SQ5      /n [         R                  " U SS/5      nUR                  R
                  b   eg )Nr   r   rV  rW  )r   rO   r   r8  r   rb  r=   r   s     r!   test_recordbatch_empty_metadatar    sR    
q
$%D
 OOD4,/E<<  (((rV   c                     [         R                  " [        S5      SS9[         R                  " / SQSS9/n[         R                  " S[         R                  " 5       5      [         R                  " S[         R
                  " 5       5      /n[         R                  " USS	0S
9n[         R                  " XS9nU R                  U R                  U5      5      nUR                  U5      (       d   eUR                  U:X  d   eg )Nr   rH   r   r   r   intsfloats   foo   barrb  r7  )r   rO   r   r   rH   r   r   r8  r   r   rQ   )r   r=   fieldsr   r   r   s         r!   test_recordbatch_pickler    s    
q'
$95D
 	#
2::<(F YYv(89FOOD0E  !4!4U!;<F====F"""rV   c                     [         R                  " [        S5      5      [         R                  " / SQ5      [         R                  " [        SS5      5      /n [         R                  R	                  U SS9nUR                  S5      R                  UR                  R                  S5      5      (       d   eUR                  S5      R                  UR                  R                  S5      5      (       d   e[        R                  " [        5         UR                  S5        S S S 5        [        R                  " [        5         UR                  S 5        S S S 5        [        R                  " [        5         UR                  S	5        S S S 5        g ! , (       d  f       Nw= f! , (       d  f       NT= f! , (       d  f       g = f
Nr   r   rz   r   r|   r{   r   r   r   )r   rO   r   r   r   r   rQ   r   r-   r.   KeyErrorrj   ru   r  s     r!   test_recordbatch_get_fieldr    s(   
q
$%
q"D
 NN&&t?&CE;;s""5<<#5#5c#:;;;;;;q>  !3!3C!89999	x	 C 
! 
y	!D 
" 
z	"A 
#	" 
!	  
"	! 
#	"$   FF#7F4
F #
F14
Gc                     [         R                  " [        S5      5      [         R                  " / SQ5      [         R                  " [        SS5      5      /n [         R                  R	                  U SS9nUR                  S5      R                  UR                  S5      5      (       d   e[        R                  " [        SS	9   UR                  S
5        S S S 5        [        R                  " [        5         UR                  S 5        S S S 5        [        R                  " [        5         UR                  S5        S S S 5        g ! , (       d  f       Nw= f! , (       d  f       NT= f! , (       d  f       g = fNr   r   rz   r   r|   r{   r   z"Field "d" does not exist in schemarE   r   r   )r   rO   r   r   r   r   rQ   r-   r.   r  rj   ru   r  s     r!   test_recordbatch_select_columnr  '  s    
q
$%
q"D
 NN&&t?&CE<<##ELLO4444	@
BS
B 
y	!T 
" 
z	"Q 
#	"
B 
B 
"	! 
#	"$   E8E,E)
E
E&)
E7c                  j   [         R                  " / SQ5      n [         R                  " / SQ5      n[         R                  " SS/SS/SS/S S	S
//5      n[         R                  " XU// SQ5      nUR                  S/5      n[         R                  " U /S/5      nUR	                  U5      (       d   eUR                  SS/5      n[         R                  " X!/SS/5      nUR	                  U5      (       d   eUR                  S/5      n[         R                  " U /S/5      nUR	                  U5      (       d   eUR                  SS/5      n[         R                  " X!/SS/5      nUR	                  U5      (       d   eUR                  SS05      nUR                  SS/5      nSUR                  R                  ;   d   e[        R                  " [        SS9   UR                  S/5        S S S 5        [        R                  " [        SS9   UR                  S/5        S S S 5        UR                  SS/5      n[         R                  " X/SS/5      nUR	                  U5      (       d   e[         R                  " XU// SQ5      n[        R                  " [        SS9   UR                  S/5        S S S 5        UR                  S/5      n[         R                  " U/S/5      nUR	                  U5      (       d   eg ! , (       d  f       GN= f! , (       d  f       N= f! , (       d  f       Nu= fNri  rj  r   r   r   r   r   r   r   rz   )rk  rl  f3rk  r  rl  r   r{   test   azField "f5" does not existrE   f5zindex out of bounds)rk  rl  rk  zField "f1" exists 2 times)r   rO   r8  selectrQ   replace_schema_metadatar   rb  r-   r.   r  ru   )a1a2a3r   r   rT   batch2s          r!   test_recordbatch_selectr  <  s   	$	%B	+	,B	Aq6Aq6Aq64!R9	:BOORRL*<=E \\4&!FtdV,H==""""\\4,'Fx$6H=="""" \\1#FtdV,H==""""\\1a&!Fx$6H=="""" **C=9F]]D$<(F6==))))) 
x'B	CdV 
D 
z)>	?aS 
@ \\4,'Fx$6H=="""" OORRL*<=E	x'B	CdV 
D \\4&!FtdV,H==""""% 
D	C 
@	? 
D	C$   LL"L$
L
L!$
L2c                      [         R                  " [        5         [        R                  R                  [        R                  " [        S5      5      5        S S S 5        g ! , (       d  f       g = f)Nr   )r-   r.   rj   r   r   from_struct_arrayrO   r   rY   rV   r!   *test_recordbatch_from_struct_array_invalidr  o  s9    	y	!
((%();< 
"	!	!s   =A!!
A/c            
         [         R                  " SS0SS0/[         R                  " S[         R                  " 5       4S[         R                  " 5       4/5      S9n [         R
                  R                  U 5      nUR                  [         R
                  R                  [         R                  " SS /[         R                  " 5       S9[         R                  " S S/[         R                  " 5       S9/SS/5      5      (       d   eg Nr  r   r  rg   r   )	r   rO   r   rv   r   r   r  rQ   r   struct_arrayr   s     r!   "test_recordbatch_from_struct_arrayr  t  s    88
!xo&YY,x.FGHL ^^--l;F==33HHaYRXXZ0HHdC[rzz|4	
 H	    rV   c                     [         R                  R                  [         R                  " SS /[         R                  " 5       S9[         R                  " S S/[         R
                  " 5       S9/SS/5      n U R                  5       nUR                  [         R                  " SS0SS0/[         R                  " S[         R                  " 5       4S[         R
                  " 5       4/5      S95      (       d   eg Nr   r   rg   r  r  )	r   r   r   rO   rv   r   to_struct_arrayrQ   r   )r   r   s     r!    test_recordbatch_to_struct_arrayr    s    NN&&HHaYRXXZ0HHdC[rzz|4	
 H	E ""$F==
!xo&YY,x.FGH    rV   c                      [         R                  " [        SS9   [        R                  R                  [        R                  " [        S5      5      5        S S S 5        g ! , (       d  f       g = f)Nz*Argument 'struct_array' has incorrect typerE   r   )r-   r.   rj   r   r   r  rO   r   rY   rV   r!   $test_table_from_struct_array_invalidr    s=    	y(T	U
""288E!H#56 
V	U	Us   =A  
A.c            
         [         R                  " SS0SS0/[         R                  " S[         R                  " 5       4S[         R                  " 5       4/5      S9n [         R
                  R                  U 5      nUR                  [         R
                  R                  [         R                  " SS /[         R                  " 5       S9[         R                  " S S/[         R                  " 5       S9/SS/5      5      (       d   eg r  )	r   rO   r   rv   r   r   r  rQ   r   r  s     r!   test_table_from_struct_arrayr    s    88
!xo&YY,x.FGHL XX''5F==--HHaYRXXZ0HHdC[rzz|4	
 H	    rV   c            
         [         R                  " SS0SS0//[         R                  " S[         R                  " 5       4S[         R                  " 5       4/5      S9n [         R
                  R                  U 5      nUR                  [         R
                  R                  [         R                  " SS /[         R                  " 5       S9[         R                  " S S/[         R                  " 5       S9/SS/5      5      (       d   eg r  )
r   r)   r   rv   r   r   r  rQ   r   rO   )chunked_struct_arrayr   s     r!   *test_table_from_struct_array_chunked_arrayr    s    ++1+#	'(YY,x.FGH XX''(<=F==--HHaYRXXZ0HHdC[rzz|4	
 H	    rV   c                     [         R                  R                  [         R                  " SS /[         R                  " 5       S9[         R                  " S S/[         R
                  " 5       S9/SS/5      n U R                  5       nUR                  [         R                  " SS0SS0//[         R                  " S[         R                  " 5       4S[         R
                  " 5       4/5      S95      (       d   eg r  
r   r   r   rO   rv   r   r  rQ   r)   r   r   r   s     r!   test_table_to_struct_arrayr    s    HH  HHaYRXXZ0HHdC[rzz|4	
 H	E ""$F==))1+#	'(YY,x.FGH    rV   c                     [         R                  R                  [         R                  " SS /[         R                  " 5       S9[         R                  " S S/[         R
                  " 5       S9/SS/5      n U R                  SS9nUR                  [         R                  " SS0/SS0//[         R                  " S[         R                  " 5       4S[         R
                  " 5       4/5      S95      (       d   eg )Nr   r   rg   r  r  max_chunksizer  r  s     r!   -test_table_to_struct_array_with_max_chunksizer    s    HH  HHaYRXXZ0HHdC[rzz|4	
 H	E """3F==))1+(C)*YY,x.FGH    rV   c            
         [         R                  R                  [         R                  " / [         R                  " 5       S9[         R                  " / [         R
                  " 5       S9/SS/5      n U R                  5       nUR                  [         R                  " / [         R                  " [         R                  " 5       [         R
                  " 5       S.5      S95      (       d   eg )Nr   r  r  )r  r  r  r  s     r!   *test_table_to_struct_array_for_empty_tabler    s    HH  HHRbhhj)HHRbjjl+	
 H	E ""$F==
BHHJ"**,GH	
   rV   c                     U R                  U5      (       d   eU R                  U:X  d   eU R                  U:X  d   eU R                  UR                  :X  d   eU R                  UR                  :X  d   eg r   )rQ   sizer	   r`   strides)tensorexpected_tensorr	   r  s       r!   check_tensorsr    sk    ==))));;$;;$<<?00000>>_44444rV   typ_str)
uint8uint16uint32uint64rH   r   rv   rG   r   rk   c           
      t   [         R                  " U 5      n/ SQn/ SQn/ SQn[        R                  R	                  [        R
                  " U[        R                  " U5      S9[        R
                  " U[        R                  " U5      S9[        R
                  " U[        R                  " U5      S9// SQ5      nUR                  SS9n[         R                  " X#U/5      R                  USS	9n[        R                  R                  U5      n[        Xh[        R                  " U5      S
5        UR                  5       n[         R                  " X#U/5      R                  USS	9n[        R                  R                  U5      n[        Xh[        R                  " U5      S
5        UR                  S5      n	/ SQn/ SQn/ SQnU	R                  SS9n[         R                  " X#U/5      R                  USS	9n[        R                  R                  U5      n[        Xh[        R                  " U5      S5        U	R                  5       n[         R                  " X#U/5      R                  USS	9n[        R                  R                  U5      n[        Xh[        R                  " U5      S5        UR                  SS5      n
/ SQn/ SQn/ SQnU
R                  SS9n[         R                  " X#U/5      R                  USS	9n[        R                  R                  U5      n[        Xh[        R                  " U5      S5        U
R                  5       n[         R                  " X#U/5      R                  USS	9n[        R                  R                  U5      n[        Xh[        R                  " U5      S5        g )N	r   r   r   r   r   r   r   r   r   	rz         (   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     )r\   r   r   r   r   rO   from_numpy_dtype	to_tensorcolumn_stackastypeTensor
from_numpyr  r~   )r  r   rb   rc   arr3r   r   r   rT   batch1r  s              r!   'test_recordbatch_to_tensor_uniform_typer    s    ((7
C&D/D8DNN&&HHT 3 3C 89HHT 3 3C 89HHT 3 3C 89	
 E __u_-F
T*+223c2BAyy##A&H&B$7$7$<bA__F
T*+223c2BAyy##A&H&B$7$7$<bA [[^F#D+D3D.F
T*+223c2BAyy##A&H&B$7$7$<bAF
T*+223c2BAyy##A&H&B$7$7$<bA[[AFDD$D.F
T*+223c2BAyy##A&H&B$7$7$<bAF
T*+223c2BAyy##A&H&B$7$7$<bArV   c                     / SQn / SQn/ SQn[         R                  R                  [         R                  " [        R                  " U [        R
                  S9[         R
                  " 5       S9[         R                  " [        R                  " U[        R
                  S9[         R
                  " 5       S9[         R                  " [        R                  " U[        R
                  S9[         R
                  " 5       S9// SQ5      nUR                  SS9n[        R                  " XU/5      R                  [        R
                  S	S
9n[         R                  R                  U5      n[        XF[         R
                  " 5       S5        UR                  5       n[        R                  " XU/5      R                  [        R
                  SS
9n[         R                  R                  U5      n[        XF[         R
                  " 5       S5        g )Nr  r  r  r   r   r   Fr  r  r  r  r  )r   r   r   rO   r\   float16r  r  r  r  r  r  rb   rc   r  r   r   r   rT   s          r!   +test_recordbatch_to_tensor_uniform_float_16r  "  sP   &D/D8DNN&&HHRXXd"**5BJJLIHHRXXd"**5BJJLIHHRXXd"**5BJJLI	
 E __u_-F
T*+222::S2IAyy##A&H&BJJL"5__F
T*+222::S2IAyy##A&H&BJJL"5rV   c            	      X   / SQn / SQnSSS[         R                  SSSS	S
/	n[        R                  R	                  [        R
                  " U [        R                  " 5       S9[        R
                  " U[        R                  " 5       S9/SS/5      nUR                  SS9n[         R                  " X/5      R                  [         R                  SS9n[        R                  R                  U5      n[        XF[        R                  " 5       S5        UR                  5       n[         R                  " X/5      R                  [         R                  SS9n[        R                  R                  U5      n[        XF[        R                  " 5       S5        [        R                  R	                  [        R
                  " U [        R                  " 5       S9[        R
                  " U[        R                  " 5       S9[        R
                  " U[        R                  " 5       S9// SQ5      nUR                  SS9n[         R                  " XU/5      R                  [         R                   SS9n[        R                  R                  U5      n[         R"                  R%                  UR'                  5       U5        UR(                  S:X  d   eUR*                  [        R                   " 5       :X  d   eUR,                  UR,                  :X  d   eUR.                  UR.                  :X  d   eUR                  5       n[         R                  " XU/5      R                  [         R                   SS9n[        R                  R                  U5      n[         R"                  R%                  UR'                  5       U5        UR(                  S:X  d   eUR*                  [        R                   " 5       :X  d   eUR,                  UR,                  :X  d   eUR.                  UR.                  :X  d   eg )Nr  r  r     ,    X         r   r{   r   Fr  r  r     r  r   r  )r\   nanr   r   r   rO   r  r   r  r  r  rv   r  r  r  r   rk   r   assert_equalr^   r  r	   r`   r  r  s          r!   %test_recordbatch_to_tensor_mixed_typer   :  s    'D/Dc2663S#s;DNN&&HHT		,HHT
+	
 :	E __u_-F
%,,RXXS,AAyy##A&H&BHHJ3__F
%,,RXXS,AAyy##A&H&BHHJ3 NN&&HHT		,HHT
+HHT

-	
 E __u_-F
T*+222::S2IAyy##A&HJJFOO-q1;;";;"**,&&&<<8>>)))>>X-----__F
T*+222::S2IAyy##A&HJJFOO-q1;;";;"**,&&&<<8>>)))>>X-----rV   c            
         / SQn / SQn/ SQn[         R                  R                  [         R                  " U [         R                  " 5       S9[         R                  " [
        R                  " U[
        R                  S9[         R                  " 5       S9[         R                  " U[         R                  " 5       S9// SQ5      n[        R                  " [        SS9   UR                  5         S S S 5        g ! , (       d  f       g = f)	Nr  r  )	r  r  r  i  r  r  r  r  r  r   r   r   z.Casting from or to halffloat is not supported.rE   )r   r   r   rO   r  r\   r  r   r-   r.   r=  r  )rb   rc   r  r   s       r!   >test_recordbatch_to_tensor_unsupported_mixed_type_with_float16r  n  s    &D/D8DNN&&HHT		,HHRXXd"**5BJJLIHHT

-	
 E 
>
 		
 
 
s   C88
Dc            	      D   SSSS[         R                  SSSS/	n S	S
SSSSS[         R                  S/	n[        R                  R	                  [        R
                  " U [        R                  " 5       S9[        R
                  " U[        R                  " 5       S9/SS/5      nUR                  SS9n[         R                  " X/5      R                  [         R                  SS9n[        R                  R                  U5      n[         R                  R                  UR                  5       U5        UR                  S:X  d   eUR                   [        R                  " 5       :X  d   eUR"                  UR"                  :X  d   eUR$                  UR$                  :X  d   eg )Nr   r   r   r   r   r   r   r   rz   r  r  r  r  r  r  r  r   r{   r   Fr  r  r  r  )r\   r  r   r   r   rO   r   r  r  r  r  r  r   r  r^   r  r	   r`   r  rb   rc   r   r   r   rT   s         r!   test_recordbatch_to_tensor_nanr    sA   q!Q1a+DBBB3DNN&&HHT

-HHT

-	
 :	E __u_-F
%,,RZZs,CAyy##A&HJJFOO-q1;;";;"**,&&&<<8>>)))>>X-----rV   c                     / SQn / SQn[         R                  R                  [         R                  " U [         R                  " 5       S9[         R                  " U[         R
                  " 5       S9/SS/5      n[        R                  " [         R                  SS9   UR                  5         S S S 5        UR                  SS	S
9n[        R                  " X/5      R                  [        R                  SS9n[         R                  R                  U5      n[        R                   R#                  UR%                  5       U5        UR&                  S:X  d   eUR(                  [         R                  " 5       :X  d   eUR*                  UR*                  :X  d   eUR,                  UR,                  :X  d   e[         R                  R                  [         R                  " U [         R                  " 5       S9[         R                  " U[         R                  " 5       S9/SS/5      nUR                  SS	S
9n[        R                   R#                  UR%                  5       U5        UR&                  S:X  d   eUR(                  [         R                  " 5       :X  d   eUR*                  UR*                  :X  d   eUR,                  UR,                  :X  d   e[         R                  R                  [         R                  " U [         R.                  " 5       S9[         R                  " U[         R.                  " 5       S9/SS/5      nUR                  SS	S
9n[        R                  " X/5      R                  [        R
                  SS9n[         R                  R                  U5      n[        R                   R#                  UR%                  5       U5        UR&                  S:X  d   eUR(                  [         R
                  " 5       :X  d   eUR*                  UR*                  :X  d   eUR,                  UR,                  :X  d   eg ! , (       d  f       GN= f)N)	r   r   r   r   Nr   r   r   r   )	rz   r  r  r  r  r  r  Nr  r   r{   r   z-Can only convert a RecordBatch with no nulls.rE   TF)null_to_nanr  r  r  r  )r   r   r   rO   rv   r   r-   r.   rP  r  r\   r  r  rk   r  r  r   r  r^   r  r	   r`   r  rH   r  s         r!   test_recordbatch_to_tensor_nullr    s*   )D1DNN&&HHT
+HHT

-	
 :	E 

=
 		
 ___?F
%,,RZZs,CAyy##A&HJJFOO-q1;;";;"**,&&&<<8>>)))>>X----- NN&&HHT
+HHT
+	
 :	E ___?FJJFOO-q1;;";;"**,&&&<<8>>)))>>X----- NN&&HHT	*HHT	*	
 :	E ___?F
%,,RZZs,CAyy##A&HJJFOO-q1;;";;"**,&&&<<8>>)))>>X-----a
 
s   Q
Qc                     [         R                  R                  [         R                  " / [         R                  " 5       S9[         R                  " / [         R                  " 5       S9/SS/5      n U R                  5       n[        R                  " / / /5      R                  [        R                  SS9n[         R                  R                  U5      nUR                  UR                  :X  d   eUR                  [         R                  " 5       :X  d   eUR                  UR                  :X  d   eUR                  S:X  d   eg )Nr   r{   r   r  r  )r   r   )r   r   r   rO   r   r  r\   r  r  r  r  r  r	   r`   r  )r   r   r   rT   s       r!    test_recordbatch_to_tensor_emptyr
    s    NN&&HHRbjjl+HHRbjjl+	
 :	E __F
R!((3(?Ayy##A&H;;(--''';;"**,&&&<<8>>)))>>V###rV   c                     / SQn / SQn[         R                  R                  [         R                  " U [         R                  " 5       S9[         R                  " U[         R
                  " 5       S9/SS/5      n[        R                  " [         R                  SS9   UR                  5         S S S 5        g ! , (       d  f       g = f)Nr  )	r{   r   r    r{   r   r    r{   r   r    r   r{   r   zDataType is not supportedrE   )
r   r   r   rO   rv   rx  r-   r.   rP  r  )rb   rc   r   s      r!   &test_recordbatch_to_tensor_unsupportedr    s    &D8DNN&&HHT
+HHT	*	
 :	E 

)
 		
 
 
s   B66
Cc           	      v   [         R                  " [        S5      5      [         R                  " / SQ5      /nSS/nU " XS9nUR                  S5      nUR                  S:X  d   eU " U Vs/ s H  oUR                  S5      PM     snUS9nUR                  U5      (       d   eUR                  SS5      nU " U Vs/ s H  oUR                  SS5      PM     snUS9nUR                  U5      (       d   eUR                  S5      R                  U5      (       d   e[        UR                  [        U5      5      5      S:X  d   e[        R                  " [        5         UR                  S	5        S S S 5        UR                  SS5      R                  US S 5      (       d   eUR                  SS5      R                  US S 5      (       d   eUR                  SS5      R                  USS
 5      (       d   eUR                  S[        U5      S-
  5      R                  USS  5      (       d   eUR                  [        U5      S-
  S5      R                  USS  5      (       d   eUR                  [        U5      S
-
  S5      R                  USS 5      (       d   eg s  snf s  snf ! , (       d  f       GN@= f)Nr   r   rV  rW  r|   r   r   r   rr   r   )
r   rO   r   r~   r   rQ   r4   r-   r.   ru   )	factoryr=   r}   objslicedr   rT   sliced2	expected2s	            r!   _table_like_slice_testsr    sP   
q
$%D 4LE
$
$CYYq\F??aD1Dq
D1?H==""""ii1oG51A5UCI>>)$$$$ 99Q<s#### syyS"#q(((	z	"		" 
# 99Q?!!#bq'****99Q?!!#bq'****99Q?!!#a(++++99QC1%,,SW555599SX\1%,,SX666699SX\1%,,SBZ8888- 2 6 
#	"s   +J;J$J))
J8c                  H    [        [        R                  R                  5      $ r   )r  r   r   r   rY   rV   r!   test_recordbatch_slice_getitemr    s    "2>>#=#=>>rV   c                  4    [        [        R                  5      $ r   )r  r   r   rY   rV   r!   test_table_slice_getitemr  !  s    "288,,rV   c            	      b   [         R                  " S[         R                  " / [         R                  " S5      S905      n U R	                  SS5      nUR                  5         [         R                  " S[         R                  " / [         R                  " 5       S905      n U R                  5         g )Nr{   usr   r   )r   r   rO   r   r~   r   r)   r*   )r   r   s     r!   test_slice_zero_length_tabler  %  sw     HHc288BR\\$-?@ABE++a#KHHc2++BRYY[ABCE	OOrV   c                     [         R                  " S/SS9n [         R                  " SS/SS9n[        R                  " [        R                  " U 5      /S/5      n[        R                  " [        R                  " U5      /S/5      n[        R
                  " [        R                  5         [        R                  R                  X#/5        S S S 5        g ! , (       d  f       g = f)Nr   r  r   rC   rD   rk   rW  )	r\   rO   r   r8  r-   r.   ArrowInvalidr   rA  )r  r  r  r  s       r!   "test_recordbatchlist_schema_equalsr  0  s    	1#X	&B	3*I	.B__bhhrl^dV4F__bhhrl^dV4F	r	'
v./ 
(	'	's   ,!C
C$c                      [         R                  " [         R                  " / SQ5      /S/S9n U S   R                  S:X  d   eg rp  )r   r   rO   rs  ts    r!   #test_table_column_sets_private_namer#  ;  s6    
"((<()$8AQ4::rV   c                  @   [         R                  R                  / / S9n U R                  U 5      (       d   eU R                  S 5      (       a   e[         R                  R                  / / SS0S9nU R                  USS9(       a   eU R                  U5      (       d   eg )Nr|   r_  r`  ra  Trc  )r   r   r   rQ   )r   r<  s     r!   test_table_equalsr%  A  s    HH  2 .E<< ||D!!!!HH  28H IE||E$|777<<rV   c                     [         R                  " [         R                  " S[         R                  " 5       5      [         R                  " S[         R                  " 5       5      /5      n [         R
                  " [         R                  " S/5      [         R                  " S/5      /SS/S9n[         R                  R                  U/U 5      nUR                  R                  U 5      (       d   eUR                  S5      [         R                  " S//5      :X  d   eUR                  S5      [         R                  " S//5      :X  d   e[         R                  " [         R                  " S[         R                  " 5       5      /5      n[        R                  " [         R                  5         [         R                  R                  U/U5        S S S 5        [         R
                  " [         R                  " S/5      /S/5      n[        R                  " [         R                  5         [         R                  R                  U/U 5        S S S 5        g ! , (       d  f       N= f! , (       d  f       g = f)Nr{   r   r   gQ	@r|   r   )r   r   r   rG   rk   r8  rO   r   rA  rQ   r   r)   r-   r.   r  )r   r   r   incompatible_schemaincompatible_batchs        r!   "test_table_from_batches_and_schemar)  M  s   YY
bhhj!
bjjl# F OORXXqc]BHHdV,<=#&*.EHH!!5'62E<<v&&&&<<?b..u5555<<?b..x8888))RXXc288:%>$?@	r	'
ug':; 
( "((A3-3%@	r	'
12F; 
(	'	 
(	' 
(	's   ,"I("I$
I!$
I2c            	      6   SSK Jn   SS KnUR                  S[	        [        S5      5      05      nUR                  S[	        [        SS5      5      05      n[        R                  R                  USS9n[        R                  R                  USS9n[        R                  R                  XEU/5      nUR                  X#U/SS	9nUR                  5       n[        U5      S
:X  d   eU " [        R                  R                  U5      R                  5       U5        UR                  SS9n[	        [        [        U5      5      / SQ:X  d   eU " UR                  5       U5        U " [        R                  R                  U5      R                  5       U5        [        R                  R                  [!        XEU/5      5      n	UR#                  U	5      (       d   e[$        R&                  " [(        5         UR                  SS9  S S S 5        g ! , (       d  f       g = f)Nr   )r   r{   rz   r  F)preserve_indexT)ignore_indexr   r  r  )rz   r  r   rz   )r   r   r   r   r1   r   r   r   r   r   rA  concat
to_batchesr4   r   mapiterrQ   r-   r.   r/   )
r   r   df1df2r  r  r   expected_dfrH  table_from_iters
             r!   test_table_to_batchesr5  b  s   1
,,T%)_-
.C
,,T%B-01
2C^^''E'BF^^''E'BFHH!!66":;E))SsO$)?K Gw<1rxx,,W5??A"$ R0GC!"o555u(+6rxx,,W5??A"$ hh++D&&1I,JKO<<((((	z	"q) 
#	"	"s   1H


Hclsc                 "   [         R                  " [        S5      SS9[         R                  " / SQSS9/nU R                  USS9nUR	                  5         UR
                  R                  (       a   e[        U5      S:X  d   eUR                  S:X  d   eUR                  [        U5      :X  d   eUR                  S:X  d   eUR                  5       S	:X  d   eUR                  S	:X  d   e[        R                  " U5      [        R!                  U5      UR                  5       -   :  d   eUR#                  5       nU[%        S
/ SQ4S/ SQ4/5      :X  d   e['        U[(        5      (       d   eX R+                  X2R
                  S9:X  d   e[,        R.                  " [0        5         US     S S S 5        / nUR3                  5        H  nU [         R4                  L a  [7        U5      [         R8                  L d   eUR;                  5        H  nUb  M   e   [,        R.                  " [0        5         UR=                  S5        S S S 5        [,        R.                  " [0        5         UR=                  UR>                  5        S S S 5        O*[A        [7        U5      [         RB                  5      (       d   eURE                  U5        GM     URF                  U:X  d   eX R                  XBRH                  S9:X  d   eX R                  USS  URH                  SS  S9:w  d   eX$:w  d   e[         R
                  " [         RJ                  " S[         RL                  " 5       SS0S9[         RJ                  " S[         RN                  " 5       5      /SS0S9nU R                  XS9nUR
                  U:X  d   e[P        RR                  " U5      nU" 5       c   eAU" 5       b   eg ! , (       d  f       GN7= f! , (       d  f       GN= f! , (       d  f       GN\= f)Nr   r   r   rU  rv   r   r|   r   r      r{   )r   r   r   r   r   r   r7  r   rr   r   rV  r_  r`  r  rW  r  r  )*r   rO   r   r   r,   r   rb  r4   r   r  r`   r'   r:   r6   r7   r8   r9   	to_pydictr   r   dictfrom_pydictr-   r.   ru   rX  r   r	   r   r3   r   
num_chunks
issubclassArrayr   rY  rZ  r   r   rv   r;   r<   )	r6  r=   r   pydictrY  r   r   r   r?   s	            r!   test_table_basicsrA    s~    	q(
'g6D OOD
O3E	NN||$$$$u:??>>QD	)));;&   &&(,AAAA<<0000==6#4#4$,,.$/ / / / __F[	o	$%"     fd####OOF<<O@@@@	z	"a 
# G  ""((?9///)((( * z*		" + z*		#..) +* d3i2222s# #& ==G###OOG3E3EOFFFFOOGABKu7I7I!"7MONNNN YYrxxz+0'*:<rxxz24 "( 02F OODO0E<<6!!!	U	B44<<Q 
#	" +* +*s$   %O/O-#O?
O*-
O<	?
P	c                      [         R                  " [        SS9   [        R                  " 5         S S S 5        g ! , (       d  f       g = f)Nr   rE   )r-   r.   rj   r   r   rY   rV   r!   test_table_dunder_initrC    s%    	y	0

 
1	0	0r   c            	         [         R                  " SS/5      n [         R                  " SS/5      n[         R                  " S[         R                  " 5       [	        SSS9S	9n[         R                  " S
[         R                  " 5       SS9n[         R
                  R                  X/[         R                  " X#/5      S9nSUR                  S5      R                  ;   d   eUR                  S5      R                  SL d   eg )Nr   r   r   r   field1ABr   r  field2Fnullabler7  r  r   )
r   rO   r   rG   r;  r   r   r   rb  rJ  )arr0rb   field0rE  r   s        r!   0test_table_from_arrays_preserves_column_metadatarM    s    88QFD88QFDXXh
TC35GHFXXh
U;FHH  $(*		62B(C ! EE5;;q>*****;;q>""e+++rV   c                     [         R                  " [        S5      5      [         R                  " / SQ5      /n [        R                  " [
        5         [         R                  R                  U / SQS9  S S S 5        [        R                  " [
        5         [         R                  R                  U S/S9  S S S 5        g ! , (       d  f       NQ= f! , (       d  f       g = fr  )r   rO   r   r-   r.   r/   r   r   ro   s    r!   $test_table_from_arrays_invalid_namesrO    s    
q
$%D 
z	"
T9 
# 
z	"
T#/ 
#	" 
#	" 
#	"s   !B> C>
C
Cc                  4   [        [        S5      5      / SQ/n [        R                  " U SS/S9n[        R                  R                  U SS/S9nUR                  U5      (       d   e[        R                  " [        R                  " S[        R                  " 5       5      [        R                  " S[        R                  " 5       5      /5      n[        R                  " XS9n[        R                  R                  XS9nUR                  U5      (       d   eg )Nr   r   r{   r   r|   r7  )r1   r   r   r   r   r   rQ   r   r   r  rG   )r=   r   rT   r   s       r!   test_table_from_listsrQ    s    U1XD
 XXd3*-Fxx##Dc
#;H==""""YY
biik"
bhhj! F XXd*Fxx##D#8H==""""rV   c                 R   [         R                  " SS/SS//[         R                  " 5       S9[         R                  " / SQ/[         R                  " 5       S9/n[         R                  " [         R
                  " S[         R                  " 5       5      [         R
                  " S[         R                  " 5       5      /S	S
0S9n[         R                  R                  XS9nU R                  U R                  U5      5      nUR                  5         UR                  U5      (       d   eg )Nr   r   r   r   r   )somestringsN r  strsr  r  r  r7  )r   r)   r  r*   r   r   r   r   r   r   r,   rQ   )r   r=   r   r   r   s        r!   test_table_picklerW    s    
1a&1a&)		<
78ryy{KD YY557!' 02F HH   5E  !4!4U!;<F
OO==rV   c                     [         R                  " [        S5      5      [         R                  " / SQ5      [         R                  " [        SS5      5      /n [         R                  R	                  U SS9nUR                  S5      R                  UR                  R                  S5      5      (       d   eUR                  S5      R                  UR                  R                  S5      5      (       d   e[        R                  " [        5         UR                  S5        S S S 5        [        R                  " [        5         UR                  S 5        S S S 5        [        R                  " [        5         UR                  S	5        S S S 5        g ! , (       d  f       Nw= f! , (       d  f       NT= f! , (       d  f       g = fr  )r   rO   r   r   r   r   rQ   r   r-   r.   r  rj   ru   r=   r   s     r!   test_table_get_fieldrZ    s(   
q
$%
q"D
 HH  _ =E;;s""5<<#5#5c#:;;;;;;q>  !3!3C!89999	x	 C 
! 
y	!D 
" 
z	"A 
#	" 
!	  
"	! 
#	"r  c                     [         R                  " [        S5      5      [         R                  " / SQ5      [         R                  " [        SS5      5      /n [         R                  R	                  U SS9nUR                  S5      R                  UR                  S5      5      (       d   e[        R                  " [        SS	9   UR                  S
5        S S S 5        [        R                  " [        5         UR                  S 5        S S S 5        [        R                  " [        5         UR                  S5        S S S 5        g ! , (       d  f       Nw= f! , (       d  f       NT= f! , (       d  f       g = fr  )r   rO   r   r   r   r   rQ   r-   r.   r  rj   ru   rY  s     r!   test_table_select_columnr\  &  s    
q
$%
q"D
 HH  _ =E<<##ELLO4444	xA
CS
C 
y	!T 
" 
z	"Q 
#	"
C 
C 
"	! 
#	"r  c                  D   [         R                  " [         R                  " / SQ5      [         R                  " / SQ5      [         R                  " / SQ5      // SQS9n [        R                  " [
        SS9   U R                  S5        S S S 5        g ! , (       d  f       g = f)	Nr   r   r   r   r|   z"Field "a" exists 2 times in schemarE   r{   )r   r   rO   r-   r.   r  r   r   s    r!   !test_table_column_with_duplicatesr_  ;  so    HHbhhy)hhy)hhy)+2ACE 
xA
CS
C 
C 
Cs   6B
Bc                 ~   [         R                  " [        S5      5      [         R                  " / SQ5      [         R                  " [        SS5      5      /nU R                  USS9n[         R                  " SUS   R
                  5      nUR                  SX1S   5      nUR                  X1S   5      nU R                  XS   /-   S	S9nUR                  U5      (       d   eUR                  U5      (       d   eUR                  S
X1S   5      nU R                  US   /U-   SS9nUR                  U5      (       d   eg )Nr   r   rz   r   r|   r   r   r   )r{   r   r    r   r   )r   r{   r   r    )	r   rO   r   r   r   r	   
add_columnappend_columnrQ   )r6  r=   r   	new_fieldt2t3rT   t4s           r!   test_table_add_columnrg  F  s)    	q
$%
q"D
 OODO8Ed1gll+I			!YQ	0B			YQ	0BtAwi/%9  ;H99X99X			!YQ	0BQy4/%9  ;H99XrV   c                    [         R                  " [        S5      5      [         R                  " / SQ5      [         R                  " [        SS5      5      /nU R                  USS9n[         R                  " SUS   R
                  5      nUR                  SX1S   5      n[        U5      nUS   US'   U R                  US	S9nUR                  U5      (       d   eg )
Nr   r   rz   r   r|   r   r   r   )r   r   r    )	r   rO   r   r   r   r	   
set_columnr1   rQ   )r6  r=   r   rc  rd  expected_datarT   s          r!   test_table_set_columnrk  d  s     	q
$%
q"D
 OODO8Ed1gll+I			!YQ	0BJMAwM!}%4  6H99XrV   c                 L   [         R                  " [        S5      5      n[         R                  " / SQ5      n[         R                  " [        SS5      5      nU R                  XU/SS9nUR	                  SS/5      nUR	                  S5      nU R                  U/SS9nUR                  U5      (       d   eU R                  X#/S	S9nUR                  U5      (       d   e[        R                  " [        S
S9   UR	                  S/5        SSS5        g! , (       d  f       g= f)z%drop one or more columns given labelsr   r   rz   r   r|   r{   r   r    r   r    Column 'd' not foundrE   r   N)	r   rO   r   r   drop_columnsrQ   r-   r.   r  )	r6  r{   r   r    r   rd  re  exp_t2exp_t3s	            r!   test_table_drop_columnsrs  }  s     	qA
$%A
q"AOOQ1I_O=E			S#J	'B			C	 B__aS_/F==__aV;_7F== 
x'=	>C5! 
?	>	>s   9D
D#c                     [         R                  " [        S5      5      n [         R                  " / SQ5      n[         R                  " [        SS5      5      n[         R                  R	                  XU/SS9nUR                  SS/5      nUR                  S5      n[         R                  R	                  U/SS9nUR                  U5      (       d   e[         R                  R	                  X/S	S9nUR                  U5      (       d   e[        R                  " [        S
S9   UR                  S/5        SSS5        g! , (       d  f       g= f)z+verify the alias of drop_columns is workingr   r   rz   r   r|   r{   r   rm  rn  ro  rE   r   N)
r   rO   r   r   r   droprQ   r-   r.   r  )r{   r   r    r   rd  re  rq  rr  s           r!   test_table_droprv    s    
qA
$%A
q"AHH  !/ BE	S#J	B	CBXX!!1#V!4F==XX!!1&!<F== 
x'=	>

C5 
?	>	>s   #D??
Ec                 h   [         R                  " [        S5      5      [         R                  " / SQ5      [         R                  " [        SS5      5      /nU R                  USS9nUR	                  S5      nUR                  5         U R                  USS  SS9nUR                  U5      (       d   eg )	Nr   r   rz   r   r|   r   r   rn  )r   rO   r   r   remove_columnr,   rQ   )r6  r=   r   rd  rT   s        r!   test_table_remove_columnry    s     	q
$%
q"D
 OODO8E			Q	BKKMtABxz:H99XrV   c                 v   [         R                  " [        S5      5      /nU R                  US/S9nUR	                  S5      nUR                  5         [        U5      [        U5      :X  d   eUR                  SUR                  S5      US   5      nUR                  5         UR                  U5      (       d   eg )Nr   r{   r|   r   )
r   rO   r   r   rx  r,   r4   ra  r   rQ   )r6  r=   r   rd  re  s        r!   test_table_remove_column_emptyr{    s     	qD OODO.E			Q	BKKMr7c%j   	q%++a.%(	3BKKM99UrV   c                      / n SS/nSn[         R                  " [        US9   [        R                  R                  XS9  S S S 5        g ! , (       d  f       g = f)Nr{   r   z?Length of names [(]2[)] does not match length of arrays [(]0[)]rE   r|   )r-   r.   r/   r   r   r   )r=   r}   messages      r!   test_empty_table_with_namesr~    sG    D#JEI 	z	1
T/ 
2	1	1s   A		
Ac                      [         R                  " / 5      n U R                  / :X  d   eU R                  [         R                  R                  / / 5      5      (       d   eg r   )r   r   rZ  rQ   r   r   r^  s    r!   test_empty_tabler    sI    HHRLE###<<,,R45555rV   c                    [         R                  " [        S5      5      [         R                  " / SQ5      [         R                  " [        SS5      5      /nU R                  U/ SQS9nUR                  / SQ:X  d   eU R                  U/ SQS9nUR                  / SQ5      nUR                  5         UR                  / SQ:X  d   eUR                  U5      (       d   eUR                  S5      nUR                  5         UR                  / SQ:X  d   eUR                  U5      (       d   eSn[        R                  " [        US9   UR                  S	5        S S S 5        g ! , (       d  f       g = f)
Nr   r   rz   r   r|   )ehbeeseaz.names must be a list or dict not <class 'str'>rE   z
not a list)r   rO   r   r   rZ  rename_columnsr,   rQ   r-   r.   rj   )r6  r=   r   rT   rd  re  r}  s          r!   test_table_rename_columnsr    s*    	q
$%
q"D
 OODO8E000t+?@H 
		2	3BKKM??222299X 
		2	3BKKM??222299X>G	y	0\* 
1	0	0s   E!!
E/c                    [         R                  " [        S5      5      [         R                  " / SQ5      [         R                  " [        SS5      5      /nU R                  U/ SQS9nUR                  / SQ:X  d   eU R                  U/ SQS9nUR                  SSS	.5      nUR                  5         XC:X  d   eU R                  U/ S
QS9nU R                  U/ SQS9nUR                  SSS	.5      nUR                  5         XS:X  d   e[        R                  " [        SS9   UR                  SSS.5        S S S 5        g ! , (       d  f       g = f)Nr   r   rz   r   r|   )r  r   r  r  r  )r{   r    )r{   r{   r    )r  r  r  ro  rE   )r{   r   )
r   rO   r   r   rZ  r  r,   r-   r.   r  )r6  r=   r   rT   t1rd  s         r!   !test_table_rename_columns_mappingr    s    	q
$%
q"D
 OODO8E000t+=>H			Du5	6BKKM>> OODO8Et+>?H			Du5	6BKKM>> 
x'>	?4e45 
@	?	?s   "E  
Ec            	         [         R                  " [         R                  " S[         R                  " 5       5      [         R                  " S[         R                  " 5       5      /5      n [         R                  " [         R                  " SU 5      /5      n[         R
                  " SS/U S9n[         R
                  " SS/US9n[         R
                  " S	S
/[         R                  " 5       S9n[         R                  R                  X#U// SQS9nUR                  5       nUR                  5         [         R                  R                  [         R
                  " SS/[         R                  " 5       S9[         R
                  " SS/[         R                  " 5       S9[         R
                  " SS/U S9U// SQS9nUR                  U5      (       d   eg )Nr   r   nestr   r   r   )   g      )@)   g      -@FTr   r|   r   r   r   r   r  r  )za.xza.yzb.nestr    )r   r   r   r   r   rO   rX   r   r   r   r,   rQ   )ty1ty2r{   r   r    r   rd  rT   s           r!   test_table_flattenr  -  sM   
))RXXc288:.XXc2::<02 3C
))RXXfc*+
,C
(H%C0A
-/c:A
%RXXZ0AHH  !/ BE	BKKMxx##
!Qbhhj)
#s"**,/
*j)4		%
 , $ -H 99XrV   c                  
   [         R                  " [         R                  " S/5      [         R                  " S/5      /SS/S9n [         R                  " [         R                  " S/5      [         R                  " S/5      /SS/S9n[         R                  R	                  X/5      nUR                  5       nUR                  5         UR                  U5      (       d   eUR                   H  nUR                  S:X  a  M   e   g )Nr   r{   rk  rl  r|   r   r   )
r   r8  rO   r   rA  rP   r,   rQ   rY  r=  )r  r  r   combinedr    s        r!   test_table_combine_chunksr  A  s    __bhhsmRXXse_=$($<1F__bhhsmRXXse_=$($<1FHH!!6"23E##%H??5!!!!||q    rV   c                     [         R                  " [         R                  " / SQ5      R                  5       [         R                  " / SQ5      R                  5       [         R                  " / SQ5      // SQS9n [         R                  " [         R                  " / SQ5      R                  5       [         R                  " / SQ5      R                  5       [         R                  " / SQ5      // SQS9n[         R                  R                  X/5      nUR                  S	S
05      nUR                  S5      R                  S5      R                  R                  [         R                  " SS/5      5      (       d   eUR                  S5      R                  S5      R                  R                  [         R                  " SS/5      5      (       d   eUR                  S5      R                  S5      R                  R                  [         R                  " / SQ5      5      (       d   eUR                  S5      R                  S5      R                  R                  [         R                  " SS/5      5      (       d   eUR                  [         R                  " 5       5      n[         R                  " / SQ5      n[         R                  " / SQ5      nUR                  S5      R                  S5      R                  R                  U5      (       d   eUR                  S5      R                  S5      R                  R                  U5      (       d   eUR                  S5      R                  S5      R                  R                  U5      (       d   eUR                  S5      R                  S5      R                  R                  U5      (       d   eUR                  5       / SQ/ SQ/ SQS.:X  d   eUR                  R                  S	S
0:X  d   eg )Nr   ){     r    )TFNNr   r|   )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   r8  rO   r   r   rA  r  r   r   r   rQ   r   default_memory_poolr:  r   rb  )r  r  r   expected_dict_0expected_dict_1s        r!   test_table_unify_dictionariesr  N  s*   __
,-??A
%&88:
*+- 5DEF __
./AAC
&'99;
*+- 5DEF
 HH!!6"23E))7I*>?E<<?  #..55
% " " " "<<?  #..55
&%!# # # #<<?  #..55
!# # # #<<?  #..55
#s    $$R%;%;%=>Ehh56Ohh/O<<?  #..55oFFFF<<?  #..55oFFFF<<?  #..55oFFFF<<?  #..55oFFFF??E6?!   
 <<  Wi$8888rV   c                     [         R                  " SSS.SS0/[         R                  " [         R                  " 5       [         R                  " 5       5      S9/n [         R
                  R                  U S/S9nUR                  S	S
9nSU;   d   eUS   n[        U5      S:X  d   eUSSS.SS0/:X  d   eUR                  S	S
9n[        U5      S:X  d   eUSSSS.0SSS00/:X  d   eg )Nr   r   )r   r   zr   r   r{   r|   strict)maps_as_pydicts)
r   rO   map_r*   rv   r   r   r:  r4   r+   )r   r   
table_dictcolumn_list
table_lists        r!   test_table_maps_as_pydictsr  s  s    
1Qx(bhhj1	
F HH  u 5E:J*S/K{q   +c1X6666:Jz?a3aa 01C#q?CCCCrV   c            
         [        [        S5      5      / SQ/n [        [        SS5      5      / SQ/n[        R                  R	                  U  Vs/ s H  n[        R
                  " U5      PM     snSS9n[        R                  R	                  U Vs/ s H  n[        R
                  " U5      PM     snSS9n[        R                  " X4/5      nUR                  5         [        U5      S:X  d   e[        R                  R	                  [        X5       VVs/ s H  u  p&[        R
                  " X&-   5      PM     snnSS9nUR                  U5      (       d   eg s  snf s  snf s  snnf Nr   )g      $g      g        rD   g      $@rz   rg   rh   ri   rC   rD   r   r|   )r1   r   r   r   r   rO   concat_tablesr,   r4   r   rQ   r=   r>   r   r  rd  r   r   rT   s           r!   test_concat_tablesr    s<   U1X D
 	U1b\E
 
		D9Dqrxx{D9$. 
 
0B			E:Eqrxx{E:$. 
 
0B rh'F
OOv;"xx##14T1A%C1A &(XXae_1A%C*4 $ 6H =="""" ::%C    E E $E%
c                  \   [         R                  R                  [        [	        S5      5      /SS9n [         R                  R                  [        S5      /SS9n[
        R                  " [         R                  SS9   [         R                  " X/SS9nS S S 5        g ! , (       d  f       g = f)	Nrz   r{   r|   r   z@Unable to merge: Field a has incompatible types: int64 vs stringrE   
permissivepromote_options)	r   r   r   r1   r   r-   r.   rP  r  )r  rd  r>  s      r!   test_concat_tables_permissiver    s    			tE"I/v		>B			tO45V		DB	T
V bX|D
V 
V 
Vs   =B
B+c                      [         R                  R                  [        [	        S5      5      /SS9n [
        R                  " [        SS9   [         R                  " X /SS9  S S S 5        g ! , (       d  f       g = f)Nrz   r  r|   z Invalid promote_options: invalidrE   invalidr  )	r   r   r   r1   r   r-   r.   r/   r  r!  s    r!   !test_concat_tables_invalid_optionr    sT    
d59o.f=A	z)K	L
!; 
M	L	Ls   A++
A9c                      [         R                  " [        5         [        R                  " S /5        S S S 5        g ! , (       d  f       g = fr   )r-   r.   AttributeErrorr   r  rY   rV   r!   test_concat_tables_none_tabler    s*    	~	&
$  
'	&	&	   <
A
c                  f   SS K n [        R                  " [        R                  " S[        R                  " 5       5      [        R                  " S[        R                  " 5       5      /5      n[        S5      nU R                  X"S.5      nU R                  [        R                  /S-  US.5      n[        R                  R                  X1SS9n[        R                  R                  XASS9nUR                  R                  UR                  5      (       d   eUR                  R                  UR                  S	S
9(       a   e[        R                  " XV/5      nUR                  R                  UR                  S	S
9(       d   eUR                  R                  UR                  5      (       d   eg )Nr   r{   r   abcdefghr   r   F)r   r+  Trc  )r   r   r   r   r*   r1   r   r\   r  r   r   rQ   r  )r   r   valuesr1  r2  table1table2table3s           r!   1test_concat_tables_with_different_schema_metadatar    s?   YY
biik"
biik" F
 *F
,,V1
2C
,,bffX\7
8CXX!!#U!KFXX!!#U!KF==....}}##FMM$#GGGv./F==dCCC==....rV   c            
         [         R                  R                  [         R                  " SS/[         R                  " 5       S9/S/5      n [         R                  R                  [         R                  " SS/[         R
                  " 5       S9/S/5      n[        R                  " [        5         [         R                  " X/SS	9nS S S 5        WR                  [         R                  R                  [         R                  " / S
Q[         R                  " 5       S9[         R                  " / SQ[         R
                  " 5       S9/SS/5      5      (       d   e[         R                  R                  [         R                  " SS/[         R                  " 5       S9/S/5      n [         R                  R                  [         R                  " SS/[         R
                  " 5       S9/S/5      n[        R                  " [         R                  SS9   [        R                  " [        5         [         R                  " X/SS	9  S S S 5        S S S 5        g ! , (       d  f       GN= f! , (       d  f       N)= f! , (       d  f       g = f)Nr   r   r   int64_fieldrg   rh   float_fieldT)promoter   r   NNNNrg   rh   r^  z Schema at index 1 was different:rE   F)r   r   r   rO   rG   r   r-   warnsFutureWarningr  rQ   r.   r  r  rd  r   s      r!   &test_concat_tables_with_promote_optionr    s   				1a&rxxz	*+m_
>B				3*2::<	01M?
DB 
m	$!!2(D9 
% ==--
#"((*5
'bjjl;/ 	}%' ( ( ( (
 
			1a&rxxz	*+cU
4B				1a&rzz|	,-u
6B 
r.P	Q\\-(bXu5 ) 
R	Q 
%	$ )( 
R	Qs0   /II5*I$I5
I!$
I2	.I55
Jc            
         [         R                  R                  [         R                  " SS/[         R                  " 5       S9/S/5      n [         R                  R                  [         R                  " SS/[         R
                  " 5       S9/S/5      n[         R                  " X/SS	9nUR                  [         R                  R                  [         R                  " / S
Q[         R                  " 5       S9[         R                  " / SQ[         R
                  " 5       S9/SS/5      5      (       d   e[         R                  R                  [         R                  " SS/[         R                  " 5       S9/S/5      n[         R                  " X/SS	9nUR                  [         R                  R                  [         R                  " / SQ[         R                  " 5       S9/S/5      5      (       d   eg )Nr   r   r   r  rg   rh   r  defaultr  r  r  r  rN   )	r   r   r   rO   rG   r   r  rQ   rv   )r  rd  r   re  s       r!   !test_concat_tables_with_promotionr    sz   				1a&rxxz	*+m_
>B				3*2::<	01M?
DB rh	BF==--
#"((*5
'bjjl;/ 	}%' ( ( ( (
 
			1a&rxxz	*+m_
>B	,0F==--
BHHJ//    rV   c                     [         R                  R                  [         R                  " SS/[         R                  " 5       S9/S/5      n [         R                  R                  [         R                  " SS/[         R
                  " 5       S9/S/5      n[        R                  " [         R                  SS9   [         R                  " X/SS9  S S S 5        g ! , (       d  f       g = f)	Nr   r   r   r^  zUnable to merge:rE   r  r  )
r   r   r   rO   rG   r   r-   r.   rP  r  r  rd  s     r!   'test_concat_tables_with_promotion_errorr    s    				1a&rxxz	*+cU
4B				1a&rzz|	,-u
6B 
r((0B	C
"9= 
D	C	Cs   8C
C&c                     [         R                  " [        S5      5      [         R                  " / SQ5      [         R                  " / SQ5      [         R                  " / SQ5      /n [         R                  R	                  U [        S5      S9nUS   R                  US   5      (       d   eUS	   R                  US
   5      (       d   eUS   R                  US   5      (       d   eUS   R                  US   5      (       d   e[        R                  " [        5         US     S S S 5        [        R                  " [        5         US     S S S 5        g ! , (       d  f       N7= f! , (       d  f       g = f)Nr   r   r  abbccddeefabcdr|   rr   r   r  r   r   r  r   r   r   )
r   rO   r   r   r   tuplerQ   r-   r.   ru   rY  s     r!   test_table_negative_indexingr    s"   
q
$%
*+
/0	D HH  U6] ;E9E!H%%%%9E!H%%%%9E!H%%%%9E!H%%%%	z	"b	 
# 
z	"a 
#	" 
#	" 
#	"s   EE'
E$'
E5c            
         [        [        S5      5      / SQ/n [        [        SS5      5      / SQ/n[        R                  R	                  U  Vs/ s H  n[        R
                  " U5      PM     snSS9n[        R                  R	                  U Vs/ s H  n[        R
                  " U5      PM     snSS9n[        R                  " X4/5      nUR                  5         [        U5      S:X  d   e[        R                  R	                  [        X5       VVs/ s H  u  p&[        R
                  " X&-   5      PM     snnSS9nUR                  U5      (       d   eg s  snf s  snf s  snnf r  )r1   r   r   r   r   rO   concat_batchesr,   r4   r   rQ   r  s           r!   test_concat_batchesr    s=   U1X D
 	U1b\E
 
	#	#$$?$QRXXa[$$?*4 
$ 
6B		#	#%$@%QRXXa[%$@*4 
$ 
6B x(F
OOv;"~~))7:47G+I7Gtq ,.88AE?7G+I0: * <H =="""" %@$@+Ir  c                     [         R                  R                  [         R                  " SS/[         R                  " 5       S9/S/5      n [         R                  R                  [         R                  " SS/[         R
                  " 5       S9/S/5      n[        R                  " [         R                  SS9   [         R                  " X/5        S S S 5        g ! , (       d  f       g = f)Nr   r   r   r^  z$not match index 0 recordbatch schemarE   )
r   r   r   rO   rG   r   r-   r.   r  r  r  s     r!   $test_concat_batches_different_schemar  6  s    		#	#	1a&rxxz	*+cU
4B		#	#	1a&rzz|	,-u
6B 
rC
E
2(#
E 
E 
Es   8C
C'c                      [         R                  " [        5         [        R                  " S /5        S S S 5        g ! , (       d  f       g = fr   )r-   r.   r  r   r  rY   rV   r!    test_concat_batches_none_batchesr  A  s*    	~	&
4&! 
'	&	&r  c                 >   [         R                  " [        S5      5      [         R                  " / SQ5      /nU R                  U[	        S5      S9n[         R
                  " [         R                  " S[         R                  " 5       5      [         R                  " S[         R                  " 5       5      /5      n[         R
                  " [         R                  " S[         R                  " 5       5      /5      nU [         R                  L a  SnOS	nS
U S3n[        R                  " [        US9   UR                  U5        S S S 5        [        R                  " [        US9   UR                  U5        S S S 5        g ! , (       d  f       NB= f! , (       d  f       g = f)Nr   r   r  r|   rF  r   r{   r   zrecord batchz1Target schema's field names are not matching the z's field names:.*rE   )r   rO   r   r   r  r   r   rv   r   r   r-   r.   r/   r  )r6  r=   r   target_schema1target_schema2cls_namer}  s          r!   &test_table_cast_to_incompatible_schemar  G  s     	q
$%D OODdO4EYY
bhhj!
bhhj!  N YY
bhhj!  N bhh!B,.G 
z	1

>" 
2	z	1

>" 
2	1 
2	1	1	1s   /E="F=
F
Fc           
         [         R                  " [        S5      [         R                  " 5       S9[         R                  " / SQ[         R                  " 5       S9[         R                  " / SQ[         R
                  " 5       S9[         R                  " / SQ[         R                  " 5       S9/nU R                  U[        S5      S9n[         R                  " [        S5      [         R                  " 5       S9[         R                  " / SQ[         R                  " 5       S9[         R                  " / SQ[         R                  " 5       S9[         R                  " / SQ[         R                  " 5       S9/nU R                  U[        S5      S9n[         R                  " [         R                  " S	[         R                  " 5       5      [         R                  " S
[         R                  " 5       5      [         R                  " S[         R                  " 5       5      [         R                  " S[         R                  " 5       5      /5      nUR                  U5      nUR                  U5      (       d   eg )Nr   r   r   r  r  r  r|   r   r   r   r   r   r{   r   r    r   )r   rO   r   rG   rv   rk   r*   r   r  r   r   r   r  rQ   r6  r=   r   rj  expected_tabletarget_schemacasted_tables          r!   test_table_safe_castingr  j  s{    	q
+
$288:6
*>
/biikB	D OODfO6E 	q
+
$288:6
rxxz2
/biikB	M __]%-_HNII
bhhj!
bhhj!
bhhj!
biik"	 M ::m,L~....rV   c           
      |   [         R                  " [        S5      [         R                  " 5       S9[         R                  " / SQ[         R                  " 5       S9[         R                  " / SQ[         R
                  " 5       S9[         R                  " / SQ[         R                  " 5       S9/nU R                  U[        S5      S9n[         R                  " [        S5      [         R                  " 5       S9[         R                  " / SQ[         R                  " 5       S9[         R                  " / SQ[         R                  " 5       S9[         R                  " / SQ[         R                  " 5       S9/nU R                  U[        S5      S9n[         R                  " [         R                  " S	[         R                  " 5       5      [         R                  " S
[         R                  " 5       5      [         R                  " S[         R                  " 5       5      [         R                  " S[         R                  " 5       5      /5      n[        R                  " [         R                  SS9   UR                  U5        S S S 5        UR                  USS9nUR!                  U5      (       d   eg ! , (       d  f       N7= f)Nr   r   r   )g?g@gffffff
@g@g      @r  r  r|   r  r{   r   r    r   	truncatedrE   F)safe)r   rO   r   rG   rv   rk   r*   r   r  r   r   r   r-   r.   r  r  rQ   r  s          r!   test_table_unsafe_castingr    s    	q
+
$288:6
*>
/biikB	D OODfO6E 	q
+
$288:6
rxxz2
/biikB	M __]%-_HNII
bhhj!
bhhj!
bhhj!
biik"	 M 
rk	:

=! 
; ::m%:8L~....	 
;	:s   *J--
J;c                     [         R                  " SS/[         R                  S9n [        R                  " 5       n[        R                  " XS9[        R                  " U SS  US9/n[        R
                  " [        R                  R                  5         [        R                  R                  USS/S9  S S S 5        g ! , (       d  f       g = f)Nr   r   r   r   r  r  r|   )
r\   rO   r  r   r-   r.   r   r  r   r   )rO   u8r   s      r!   test_invalid_table_constructr    s    HHaV288,E	Bhhu&qr(DEF	rvv**	+
VD$<8 
,	+	+s   !B??
Czdata, klassrU  r   r   r   r   NrU  r   r   r   rD   c                    U" U S   5      U" U S   5      /n [         R                  " S[         R                  " 5       4S[         R                  " 5       4/5      n[         R                  R                  XS9nUR                  S:X  d   eUR                  S:X  d   eUR                  U:X  d   e[         R                  " S[         R                  " 5       4/5      n[        R                  " [        5         [         R                  R                  XS9  S S S 5        [         R                  " S[         R                  " 5       4S[         R                  " 5       4/5      n[         R                  R                  XS9n[         R                  R                  UR                  S5      R                  5      (       d   eUR                  S:X  d   eUR                  S:X  d   eUR                  U:X  d   e[         R                  " S[         R                  " 5       4S[         R                  " S5      4/5      n[        R                  " [         ["        45         [         R                  R%                  XS9  S S S 5        [        R                  " [        5         [         R                  R                  XSS/S	9  S S S 5        [        R                  " [        5         [         R                  R                  XS
S0S9  S S S 5        g ! , (       d  f       GN= f! , (       d  f       N= f! , (       d  f       Nu= f! , (       d  f       g = f)Nr   r   rV  r  r7  r   r   s)r   r}   r  r  r   rb  )r   r   rx  r   r   r   r  r   r-   r.   r/   types
is_float32r   r	   r   r=  rj   r<  r=   klassr   r   s       r!   test_from_arrays_schemar     s]    $q'NE$q'N+DYY+h

-EFGFHH   5E!!!>>Q<<6!!! YY+,-F	z	"
T1 
# YY+h

-EFGFHH   5E88u||H5::;;;;!!!>>Q<<6!!! YY+hS8I-JKLF	+Y7	8
T1 
9 
z	"
T8JK 
# 
z	"
TFF;KL 
#	") 
#	" 
9	8 
#	" 
#	"s0   2K<L!L!L0<
L
L
L-0
L>c                    U R                  0 5      nUR                  S:X  d   eUR                  S:X  d   eUR                  [        R                  " / 5      :X  d   eUR                  5       0 :X  d   e[        R                  " S[        R                  " 5       4S[        R                  " 5       4/5      n[        S/ SQ4S/ SQ4/5      nU R                  U5      nUR                  S:X  d   eUR                  S:X  d   eUR                  U:X  d   eUR                  5       U:X  d   eSS	0nUR                  U5      nU R                  X4S
9nUR                  U:X  d   eUR                  R                  U:X  d   eUR                  5       U:X  d   eU R                  X2S9nUR                  U:X  d   eUR                  R                  U:X  d   eUR                  5       U:X  d   e[        R                  " [        5         U R                  X2US9  S S S 5        [        R                  " [        5         U R                  S/ SQ0[        R                  " S[        R                  " 5       4/5      S9  S S S 5        [        R                  " [         SS9   U R                  / SQ/ SQS.[        R                  " S[        R"                  " 5       4S[        R$                  " 5       4S[        R&                  " 5       4/5      S9  S S S 5        [        R                  " [        5         U R                  S/ SQ00 S9  S S S 5        g ! , (       d  f       GN7= f! , (       d  f       N= f! , (       d  f       Ni= f! , (       d  f       g = f)Nr   rV  r  r  r  r   r   r  r  r  r7  r  rV  )r   r   r   zdoesn't contain.* c, drE   r   )r   r   r   r   r{   r    r   )r<  r  r   r   r   r:  rx  rk   r   with_metadatarb  r-   r.   r/   rj   r*   r  rG   rv   r   )r6  r   r   r=   rb  s        r!   test_table_from_pydictr    s    OOBE!!!>>Q<<299R=(((??"""YY+h

-EFGF !34!>24 5DOOD!E!!!>>Q<<6!!!??$$$ H!!(+FOODO4E<<6!!!<<  H,,,??$$$ OODO0E<<6!!!<<  H,,,??$$$ 
z	"h? 
# 
y	!y)!yy4*=)>? 	 	A 
"
 
x'@	A),99bhhj!bhhj!bhhj!  	 	
 
B 
y	!i(4 
"	!) 
#	" 
"	!
 
B	A 
"	!s1   ;L<.?MA.MM0<
M
M
M-0
M>c                    [        SU" U S   5      4SU" U S   5      4/5      n [        R                  " S[        R                  " 5       4S[        R                  " 5       4/5      n[        R
                  R                  U 5      nUR                  S:X  d   eUR                  S:X  d   eUR                  U:X  d   e[        R
                  R                  XS9nUR                  S:X  d   eUR                  S:X  d   eUR                  U:X  d   e[        R                  " S[        R                  " 5       4S[        R                  " 5       4/5      n[        R
                  R                  XS9n[        R                  R                  UR                  S5      R                  5      (       d   eUR                  S:X  d   eUR                  S:X  d   eUR                  U:X  d   e[        R                  " S[        R                  " 5       4S[        R                  " S5      4/5      n[        R                   " ["        [$        45         [        R
                  R                  XS9  S S S 5        g ! , (       d  f       g = f)	NrV  r   r  r   r   r   r7  r  )r   r   r   rx  rk   r   r<  r  r   r   r  r  r   r	   r   r-   r.   r=  rj   r  s       r!   #test_table_from_pydict_arrow_arraysr  %	  s   
 tAw08U47^2LMNDYY+h

-EFGF HH  &E!!!>>Q<<6!!! HH   5E!!!>>Q<<6!!! YY+h

-EFGFHH   5E88u||H5::;;;;!!!>>Q<<6!!! YY+hS8I-JKLF	+Y7	8
T1 
9	8	8s   I,,
I:c                    [        SU" U S   5      4SU" U S   5      4/5      n [        R                  " S[        R                  " 5       4S[        R                  " 5       4S[        R
                  " 5       4/5      n[        R                  " [        SS9   [        R                  R                  XS9  S S S 5        [        R                  " S[        R                  " 5       4/5      n[        R                  R                  XS9nUR                  S:X  d   eUR                  U:X  d   eUR                  S/:X  d   eg ! , (       d  f       N= f)NrV  r   r  r   r  rE   r7  )r   r   r   rx  rk   rG   r-   r.   r  r   r<  r  rZ  r  s       r!   test_table_from_pydict_schemar  G	  s    tAw08U47^2LMND YY+h

-E,. /F	xv	.
T1 
/ YY+,-FHH   5E!!!<<6!!!&))) 
/	.s   D<<
E
c           	         U R                  / 5      nUR                  S:X  d   eUR                  S:X  d   eUR                  [        R                  " / 5      :X  d   eUR                  5       / :X  d   e[        R                  " S[        R                  " 5       4S[        R                  " 5       4/5      nSSS.SSS.S	S S./nU R                  U5      nUR                  S
:X  d   eUR                  S:X  d   eUR                  U:X  d   eUR                  5       U:X  d   eSS0nUR                  U5      nU R                  X4S9nUR                  U:X  d   eUR                  R                  U:X  d   eUR                  5       U:X  d   eU R                  X2S9nUR                  U:X  d   eUR                  R                  U:X  d   eUR                  5       U:X  d   e[        R                  " [        5         U R                  X2US9  S S S 5        [        R                  " [        5         U R                  SS0SS0SS
0/[        R                  " S[        R                  " 5       4/5      S9  S S S 5        [        R                  " S[        R                  " 5       4S[        R                   " 5       4S[        R"                  " 5       4/5      nU R                  SSS.S
SS.SSS./US9nSS S S.S
S S S.SS S S./nUR                  U:X  d   eUR                  5       U:X  d   e[        R                  " [        5         U R                  SS0SS
0SS0/0 S9  S S S 5        SSS.SS0SS	0/nSSS.S SS.S	S S./nU R                  U5      nUR                  S
:X  d   eUR                  S:X  d   eUR                  5       U:X  d   eSS0SSS.SS 0/nSS0SS0SS 0/nU R                  U5      nUR                  S:X  d   eUR                  S:X  d   eUR                  5       U:X  d   eg ! , (       d  f       GN&= f! , (       d  f       GN= f! , (       d  f       N= f)Nr   rV  r  rU  r   )rV  r  r   r   r   r   r   r  r  r  r7  r  rV  r   r{   r    r   r   r   )r{   r    r   )from_pylistr  r   r   r   r+   rx  rk   r  rb  r-   r.   r/   rj   r*   rG   rv   r   )r6  r   r   r=   rb  r>   s         r!   test_table_from_pylistr
  _	  sd    OOBE!!!>>Q<<299R=(((??"""YY+h

-EFGF 3'a(d+-D OOD!E!!!>>Q<<6!!!??$$$ H!!(+FOODO4E<<6!!!<<  H,,,??$$$ OODO0E<<6!!!<<  H,,,??$$$ 
z	"h? 
# 
y	!$T1Iay9!yy4*=)>? 	 	A 
"
 YYbhhj)bhhj)bhhj) F OOq	+11-=>  E $T*$T*$T*,D <<6!!!??$$$ 
y	!#qC8c1X6rB 
" 3'qMUOD C(a(t,.E OOD!E!!!>>Q??%%%RLa(tD b\e_d^E OOD!E!!!>>Q??%%%a 
#	" 
"	!( 
"	!s%   4P$'AP6:Q$
P36
Q
Qc                  r   SS K n U R                  [        S/ SQ4S/ SQ4/5      5      n[        R                  " S[        R
                  " 5       4S[        R                  " 5       4/5      n[        R                  R                  XS9n[        R                  R                  UR                  S5      R                  5      (       d   eUR                  R                  5       U:X  d   e[        R                  " S[        R
                  " 5       4S[        R                  " S5      4/5      n[        R                   " ["        [$        45         [        R                  R                  XS9  S S S 5        [        R                  " S[        R
                  " 5       4S[        R&                  " 5       4S[        R(                  " 5       4/5      n[        R                   " [*        SS	9   [        R                  R                  XS9  S S S 5        [        R                  " S[        R
                  " 5       4/5      n[        R                  R                  XS9nUR,                  S
:X  d   eUR                  R                  5       U:X  d   eUR.                  S/:X  d   eg ! , (       d  f       GN5= f! , (       d  f       N= f)Nr   rV  r  r  r  r7  r  r  rE   r   )r   r   r   r   r   rx  r   r   r   r  r  r   r	   remove_metadatar   r-   r.   r=  rj   rk   rG   r  r  rZ  )r   r   r   r   s       r!   test_table_from_pandas_schemar  	  s    	kF,>#?$,n#=#? @ 
AB YY+h

-EFGFHH   3E88u||H5::;;;;<<'')V333 YY+hS8I-JKLF	+Y7	8
R/ 
9 YY+h

-E,. /F	xv	.
R/ 
/ YY+,-FHH   3E!!!<<'')V333&))) 
9	8 
/	.s   
J!J(
J%(
J6c                     SS K n [        S/ SQ4S/ SQ4/5      n[        R                  " / SQSS9[        R                  " / SQSS9S	.n[        R                  " S[        R
                  " 5       4S[        R                  " 5       4/5      nU R                  U5      n[        R                  " U5      n[        R                  R                  U5      nUR                  U5      (       d   e[        R                  " XCS
9n[        R                  R                  XCS
9nUR                  U5      (       d   e[        R                  " U5      n[        R                  R                  U5      nUR                  U5      (       d   e[        R                  " XS
9n[        R                  R                  XS
9nUR                  U5      (       d   eg )Nr   r   r   r{   r   r*   r   rv   )r   r{   r7  )r   r   r   rO   r   rv   r*   r   r   r   r   rQ   r<  )r   r   
d_explicitr   r   r  r  s          r!   test_table_factory_functionr  	  s^    	c?+c9-=>?Axxh?xx	8:J YYbhhj)C+=>?F	aBXXb\FXX!!"%F==    XXb(FXX!!"!4F==    XXj!FXX!!*-F==     XXa'FXX!!!!3F==    rV   c                     [         R                  " [        5         [        R                  " S/ SQ0S/S9  S S S 5        [        R
                  " S[        R                  " 5       4/5      n [        R                  " S[        R                  " / SQ[        R                  " 5       S90U 5      nUR                  S5      R                  [        R                  " 5       :X  d   e[        R                  " / SQSS9/nS/n[        R                  " X#5      nUR                  U:X  d   e[        R
                  " S[        R                  " 5       4/5      n [        R                  " X 5      nUR                  U:X  d   eg ! , (       d  f       GNH= f)Nr{   r   r|   r   rG   )r-   r.   r/   r   r   r   rv   rO   rG   r   r	   rZ  )r   r   r=   r}   s       r!    test_table_factory_function_argsr  	  s   	z	"
#y!#/ 
# YYbhhj)*+FHHc288IBHHJ?@&IE<<!!RXXZ/// HHYW-.DEEHHT!E&&&YYbhhj)*+FHHT"E&&& 
#	"s   E77
Fc                     SS K n [        R                  " [        5         [        R
                  " U R                  S/ SQ05      S/S9  S S S 5        [        R                  " [        5         [        R
                  " U R                  S/ SQ05      SS0S9  S S S 5        [        R                  " S[        R                  " 5       4/5      n[        R
                  " U R                  S/ SQ05      U5      nUR                  S5      R                  [        R                  " 5       :X  d   eg ! , (       d  f       N= f! , (       d  f       N= f)Nr   r{   r   r|   r  r  r  )r   r-   r.   r/   r   r   r   r   rv   r   r	   )r   r   r   s      r!   'test_table_factory_function_args_pandasr  
  s     
z	"
sI./u= 
# 
z	"
sI./66:JK 
# YYbhhj)*+FHHR\\3	"23V<E<<!!RXXZ/// 
#	" 
#	"s   *D)++D:)
D7:
Ec                  (   [         R                  " [        SS9   [        R                  " S5        S S S 5        [         R                  " [        SS9   [        R
                  " S5        S S S 5        g ! , (       d  f       NG= f! , (       d  f       g = f)Nz!Expected pandas DataFrame, pythonrE   zinvalid inputzExpected pandas DataFrame)r-   r.   rj   r   r   r8  rY   rV   r!   $test_factory_functions_invalid_inputr  
  s]    	y(K	L
! 
M 
y(C	D
( 
E	D 
M	L 
E	Ds   A2B2
B 
Bc                     [         R                  " [         R                  " S[         R                  " 5       SS0S9[         R                  " S[         R                  " 5       5      /SS0S9n [         R
                  " [         R                  " / SQS	S
9[         R                  " / SQSS
9/U S9n[        U5      S:X  d   eUR                  SS9S:X  d   eUR                  SS9S:X  d   eUR                  SS9S:X  d   eg )NrV  r_  r`  r  rW  r  r  rq  r   r   rz   r  r  r  rv   r7  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   rv   r   rO   rn   	to_stringr   tabs     r!   test_table_repr_to_stringr   '
  s   YYrxxz+0'*:<rxxz24 "( 02F
 ((BHH\8HH-G<>FLNCs8     ==t=, 1    ==a=( -    ==a=( -   rV   c                     [         R                  " [         R                  " S[         R                  " 5       SS0S9[         R                  " S[         R                  " 5       5      /SS0S9n [         R
                  " [         R                  " / SQS	-  S
S9[         R                  " / SQS	-  SS9/U S9n[        U5      S:X  d   eg )NrV  r_  r`  r  rW  r  r  rq  rz   r   r   r  rv   r7  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   rv   r   rO   rn   r  s     r!   "test_table_repr_to_string_ellipsisr"  Q
  s    YYrxxz+0'*:<rxxz24 "( 02F
 ((BHH\"_7;HH-b0w?A "C s8 - - - -rV   c                     [         R                  " [         R                  " S[         R                  " 5       SS0S9[         R                  " S[         R                  " 5       5      /SS0S9n [         R
                  " [         R                  " / SQS	S
9[         R                  " / SQSS
9/U S9n[        U5      S:X  d   eUR                  SS9S:X  d   eUR                  SS9S:X  d   eUR                  SS9S:X  d   eg )NrV  r_  r`  r  rW  r  r  rq  r   r   r  rv   r7  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   rv   r8  rO   rn   r  r   r   s     r!    test_record_batch_repr_to_stringr%  c
  s   YYrxxz+0'*:<rxxz24 "( 02F
 OORXXlAXX&6WEG#)+E u:     ???. 3    ???* /    ???* /   rV   c                     [         R                  " [         R                  " S[         R                  " 5       SS0S9[         R                  " S[         R                  " 5       5      /SS0S9n [         R
                  " [         R                  " / SQS	-  S
S9[         R                  " / SQS	-  SS9/U S9n[        U5      S:X  d   eg )NrV  r_  r`  r  rW  r  r  rq  rz   r   r   r  rv   r7  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   rv   r8  rO   rn   r$  s     r!   )test_record_batch_repr_to_string_ellipsisr'  
  s    YYrxxz+0'*:<rxxz24 "( 02F
 OORXXl2oGDXX&6r&9HJ#)+E u: I I I IrV   c                     Sn Sn[        U/ SQ4U / SQ4/5      n[        R                  " U [        R                  " 5       4U[        R                  " 5       4/5      n[        R
                  " X#S9nUS   R                  S5      R                  [        R                  " / SQSS95      (       d   eUS	   R                  S5      R                  [        R                  " / SQS
S95      (       d   eg )Nu   ääähu   öööfr   r   r7  r   rv   r   r   r*   )	r   r   r   rv   r*   r   r   rQ   rO   )col_acol_br   r   r   s        r!   "test_table_function_unicode_schemar+  
  s    EE 	e_-y/ABCAYY
+eRYY[-ABCFXXa'F!9??1$$RXXig%FGGGG!9??1$$RXXoH%MNNNNrV   c                  ,   [         R                  " [         R                  " / SQ5      [         R                  " / SQ5      /SS/5      n U R                  [         R                  " SS/5      5      R	                  U R                  SS5      5      (       d   eg )Nri  rj  rk  rl  r   r   )r   r   rO   rm  rQ   r~   r^  s    r!   %test_table_take_vanilla_functionalityr-  
  sp    HH	$	%	+	,	.	tE
 ::bhh1v&'..u{{1a/@AAAArV   c                     [         R                  " [         R                  " / SQ5      [         R                  " / SQ5      /SS/5      n [         R                  " [         R                  " SS /5      [         R                  " SS /5      /SS/5      nU R                  [         R                  " SS /5      5      R	                  U5      (       d   eg )Nri  rj  rk  rl  r   r{   r   r   r   rO   rm  rQ   )r   result_with_null_indexs     r!   test_table_take_null_indexr1  
  s    HH	$	%	+	,	.	tE
  XX	1d)		3+		 	t
 ::bhh4y)*112HIIIIrV   c                     [         R                  " [         R                  " / SQ5      [         R                  " / SQ5      /SS/5      n [         R                  " [         R                  " SS /5      [         R                  " SS/5      /SS/5      nU R                  [         R                  " SS	/5      5      R	                  U5      (       d   eg )
Nri  rj  rk  rl  r   r   r   r   r   r/  )r   result_non_consecutives     r!   test_table_take_non_consecutiver4  
  s    HH	$	%	+	,	.	tE
  XX	1d)		3*			t
 ::bhh1v&'../EFFFFrV   c                  j   [         R                  " / SQ5      n [         R                  " / SQ5      n[         R                  " SS/SS/SS/S S	S
//5      n[         R                  " XU// SQ5      nUR                  S/5      n[         R                  " U /S/5      nUR	                  U5      (       d   eUR                  SS/5      n[         R                  " X!/SS/5      nUR	                  U5      (       d   eUR                  S/5      n[         R                  " U /S/5      nUR	                  U5      (       d   eUR                  SS/5      n[         R                  " X!/SS/5      nUR	                  U5      (       d   eUR                  SS05      nUR                  SS/5      nSUR                  R                  ;   d   e[        R                  " [        SS9   UR                  S/5        S S S 5        [        R                  " [        SS9   UR                  S/5        S S S 5        UR                  SS/5      n[         R                  " X/SS/5      nUR	                  U5      (       d   e[         R                  " XU// SQ5      n[        R                  " [        SS9   UR                  S/5        S S S 5        UR                  S/5      n[         R                  " U/S/5      nUR	                  U5      (       d   eg ! , (       d  f       GN= f! , (       d  f       N= f! , (       d  f       Nu= fr  )r   rO   r   r  rQ   r  r   rb  r-   r.   r  ru   )r  r  r  r   r   rT   r  s          r!   test_table_selectr6  
  s   	$	%B	+	,B	Aq6Aq6Aq64!R9	:BHHbb\#56E \\4&!Fxxtf%H==""""\\4,'Fxx4,/H=="""" \\1#Fxxtf%H==""""\\1a&!Fxx4,/H=="""" **C=9F]]D$<(F6==))))) 
x'B	CdV 
D 
z)>	?aS 
@ \\4,'Fxx4,/H=="""" HHbb\#56E	x'B	CdV 
D \\4&!Fxxtf%H==""""% 
D	C 
@	? 
D	Cr  c            	      	   S n [         R                  " [         R                  " / SQ5      [         R                  " / SQ5      [         R                  " / SQ5      [         R                  " / SQ5      // SQS9nUR                  S5      R	                  S	/5      nU " UR                  5       5      / S
Q/ SQS.:X  d   eUR                  S5      R	                  S	S/5      nU " UR                  5       5      / S
Q/ SQ/ SQS.:X  d   eUR                  S5      R	                  S/5      nU " UR                  5       5      / S
Q/ SQS.:X  d   eUR                  S5      R	                  SS/5      nU " UR                  5       5      / S
Q/ SQ/ SQS.:X  d   eUR                  S5      R	                  SS/5      nU " UR                  5       5      / S
Q/ SQ/ SQS.:X  d   eUR                  SS/5      R	                  S/5      nU " UR                  5       5      / SQ/ SQ/ SQS.:X  d   eUR                  S5      R	                  SSS/ S4S/5      nU " UR                  5       5      / S
Q/ SQ/ SQ/ SQ/ SQ/ SQS.:X  d   e[         R                  " [         R                  " / S Q5      [         R                  " / S!Q5      /SS"/S9nUR                  S/5      R	                  S"S#[        R                  " S$S%94/5      nUR                  5       S&/S'/S(.:X  d   eUR                  S/5      R	                  S"S#[        R                  " S)S%94/5      nUR                  5       S&/S*/S(.:X  d   eUR                  S/5      R	                  S"S#[        R                  " S+S%94/5      nUR                  5       S&/S,/S(.:X  d   eUR                  S/5      R	                  / S4S"S#[        R                  " S+S%94/5      nUR                  5       S&/S'/S,/S-.:X  d   eUR                  S/5      R	                  / S4/5      nUR                  5       S&/S'/S..:X  d   e[         R                  " / S/Q[        S05      S1.5      n[         R                  R                  UR                  S'S295      nUR                  S5      R	                  S/5      nU " UR                  5       5      S&S3/S0S4/S.:X  d   eg )5Nc                 2   SU ;   a  [        [        U S   U S   5      5      nOU S   n[        U5      nS[        U S   5      0nU  HN  nUS:X  a  M  [        [        XU   5      5      nU H&  nUR	                  U/ 5      R                  XV   5        M(     MP     U$ )Nkeys2keys)r  r   sortedr;  
setdefaultr   )r   r:  sorted_keyssorted_dentryr  ks          r!   sorted_by_keys+test_table_group_by.<locals>.sorted_by_keys  s    a<QvY'
34DV9DTlF1V9-.E#deH-.F ##E2.55fi@ !	  rV   r{   r{   r   r   r    )XrD  YZrF  r  )rz   r  r  r  r  )r:  r9  r  	bigvaluesr|   r:  )r  hash_sumr   )r   r   r   )r:  
values_sum)r  
hash_count)r   r   r   )r:  rI  values_count)r  r5   )r  max)rG  r5   )r   r   r   )r  r  r  )r:  
values_maxbigvalues_sum)rG  rL  )r  r  r  )r:  rI  bigvalues_maxr9  )r{   r   r   r    )rD  rE  rF  rF  )r   r   r   r   )r:  r9  rI  	count_all)r:  rM  rN  rO  rP  rI  )r{   r{   r{   )r   NNr  countr2   )moder{   r   )r:  rK  	only_nullr   
only_validr   )r:  rP  rK  )r:  rP  )r{   r   r{   r   r{   r   r   r:  r  r  r   r   )r   r   rO   group_by	aggregater:  pcCountOptionsr   r   rA  r.  )rA  r   rtable_with_nullstable_with_chunkss        r!   test_table_group_byr]    sV     HH
*+
*+
!
%&	
 67E 	v((* 	A !++-(-   
 	v(( * 	A !++-(!-    	v((* 	A !++-(-   
 	v((* 	A !++-(%-    	v((* 	A !++-(%-    	()335 	A !++-($%"-    	v((	[* 	A !++-(%%-    xx
!
!! h!
 	!!6(+55	7BOO787 	A ;;=   
 	!!6(+55	7BOO=>7 	A ;;=   
 	!!6(+55	7BOO>?7 	A ;;=   
 	!!6(+55	[	7BOO>?7 	A ;;=S    	!!6(+55	[7 	A ;;=S   
 HH.( E --q)+""6*446G5HIA!++-(c
!f-   rV   c                     [         R                  " / SQSS/S-  S.5      n [         R                  " / SQSS/S-  S.5      n[         R                  " X/5      n[        R                  " [
        5         UR                  S5      R                  S/5        S S S 5        UR                  SSS9R                  S/5      n[         R                  " SS/S	S/S
.5      nUR                  U5      (       d   eg ! , (       d  f       Nd= f)Nrq  r{   r   r   r   )r{   firstF)use_threadsr   )r   a_first)	r   r   r  r-   r.   r=  rV  rW  rQ   )r  r  r   r   rT   s        r!   test_table_group_by_firstrb    s     XXLSzA~>?FXXLSzA~>?Ff-.E	*	+s%%~&67 
, ^^CU^3==~>NOFxxsCjaV<=H=="""" 
,	+s   2"C22
D c                     [         R                  " / SQ/ SQ/ SQS.5      n [        R                  " [        SS9   U R                  S5      R                  S/5        S S S 5        U R                  S5      R                  S	/5      n[         R                  " / S
Q0 0 0 /S.5      nUR                  U5      (       d   e[        R                  " SS9nU R                  S5      R                  SSU4/5      n[         R                  " / S
QSSS.SSS.SSS./S.5      nUR                  U5      (       d   eg ! , (       d  f       N= f)N)r   r   r   r   r   r   )hrd  rd  wre  re  )rz   r  r  r  r  r  )groupr_  r`  z accepts 3 arguments but 2 passedrE   rf  )r_  pivot_wider)r_  r`  rg  r   )rf  key_value_pivot_wider)rd  re  )	key_namesrh  rg  rz   r  r  r  r  r  )
r   r   r-   r.   r/   rV  rW  rQ   rX  PivotWiderOptions)r   r   rT   optionss       r!   test_table_group_by_pivot_widerrm    s/   HH1;79 :E 
z)K	Lw))+A*BC 
M
 ^^G$..0Q/RSFxx)35r2,@ AH==""""""Z8G^^G$..
M7	346FxxBr!32B5G#I	JKH ==""""# 
M	Ls   "D33
Ec                  j   [         R                  R                  S/ SQ05      n U R                  5       nU R                  UR                  :X  d   eXR                  5       :X  d   eU R                  SS9nUR                  5       R                  S:X  d   eUR                  5       R                  S:X  d   eg )Nr   r   r   r  r   )r   r   r<  	to_readerr   read_allread_next_batchr   )r   rM  s     r!   test_table_to_recordbatchreaderrr    s    HH  #y!12E__F<<6==(((OO%%%%__1_-F!!#,,111!!#,,111rV   c                     [         R                  " / SQ/ SQS.5      n [         R                  " / SQ/ SQS.5      nU R                  USS5      nUR                  5       [         R                  " / SQ/ SQ/ S	QS
.5      :X  d   eU R                  USSSS9nUR                  5       R	                  S5      [         R                  " / SQ/ SQ/ SQS
.5      :X  d   eg )Nr   r   r   r{   r   r^  colAcol2rs   r   r   rF  rG  rF  )colBcol3rw  r{  rF  rG  Nrw  rx  r|  
full outer	join_typer   r   r   rs   r{   r   r^  NrF  rG  NrF  r   r   joinrP   sort_byr  s      r!   test_table_joinr    s    	 
B
 
 
B
 WWR(F  "bhh 0 '    WWR<W@F  "**62bhh%%@ 7   rV   c                     [         R                  " / SQ/ SQS.5      n [         R                  " / SQ/ SQS.5      nU R                  US5      nUR                  5       [         R                  " / SQ/ SQ/ SQS	.5      :X  d   eU R                  USS
SS9nUR                  5       R	                  S5      [         R                  " / SQ/ SQ/ SQS	.5      :X  d   eg )Nrt  ru  rv  ry  rz  )rw  r|  rw  r}  r~  r  _r)r  right_suffixr  r  r  r  r  s      r!   test_table_join_unique_keyr    s    	 
B
 
 
B
 WWR F  "bhh 0 '    WWR<dWKF  "**62bhh%%@ 7   rV   c            	      8   [         R                  " / SQ/ SQ/ SQS.5      n [         R                  " / SQ/ SQ/ SQS.5      nU R                  USS	S
9nUR                  5       R	                  S5      [         R                  " / SQ/ SQ/ SQ/ SQ/ SQ// SQS9:X  d   eg )Nrt  rz   r  r  ru  rw  r{  colValsry  rs   r  rz   rz  rw  r  r  r  )rz   r  r  Nr  )rz   r  Nrs   r  )rw  r{  r  r{  r  r|   r  r  s      r!   test_table_join_collisionsr    s    	" 
B 
" 
B WWR<W8F  "**62bhh@ <7= = = =rV   c                     U R                  / SQ/ SQ/ SQS.5      nUR                  [        R                  " S5      S:  5      nX R                  SS/S	S
/SS/S.5      :X  d   eg )N)r   r   r   r   )rz   r  Nr  )r{   r   r    r^  r  r{  r  r   r   rz   r  r{   r   )r<  filterrX  r   )r6  r  r   s      r!   test_table_filter_expressionr  %  ss     
"' 
B YYrxx'",-F__AR:&    rV   c                  j   [         R                  " / SQ/ SQ/ SQS.5      n [         R                  " / SQ/ SQ/ SQS.5      n[         R                  " X/5      nUR                  [        R
                  " S5      S	:  5      nUR                  5       [         R                  " / S
Q/ SQ/ SQS.5      :X  d   eg )Nrt  r  ru  r  ry  r  rz  rw  rz   )r   r   r   r   r   )rz   r  r  r  rz   )r{   r   r^  rG  rF  )r   r   r  r  rX  r   rP   )r  rd  re  r   s       r!   #test_table_filter_expression_chunksr  6  s    	" 
B
 
" 
B 
		2(	#BYYrxx'",-F  "bhh$,0 '   rV   c                     [         R                  " / SQ/ SQS.5      n [         R                  " / SQ/ SQ/ SQ/ SQ/ SQ/ SQS.5      nU R                  USS5      nUR                  5       [         R                  " / SQ/ SQ/ S	Q/ S	Q/ S	Q/ S	Q/ S	QS
.5      :X  d   eU R                  USSSS9nUR                  5       R	                  S5      [         R                  " / SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQS
.5      :X  d   eg )Nrt  ru  rv  ry  rz  )r{  r|  col4col5col6col7rw  r{  r}  )rw  rx  r|  r  r  r  r  r  r  r  r  r  r  r  s      r!   test_table_join_many_columnsr  M  s    	 
B
 
 
B WWR(F  "bhh     0 '    WWR<W@F  "**62bhh%%%%%%@ 7   rV   c            	      2   [         R                  R                  / SQ/ SQS.5      n [         R                  R                  / SQ/ SQ/ SQS.5      nU R                  USS	S
SSS9nUR	                  5       [         R
                  " / SQ/ SQ/ SQS.5      :X  d   eg )N)r   r   r   r   r   )r{   r   r{   r   r^  rv  )r   r   r  )r{   r   g)rg   ri   rD   )r{  r|  colCrw  rx  r   r{  r|  onby	toleranceright_onright_by)rg   NNNN)rw  rx  r  )r   r   r<  	join_asofrP   r   )r  rd  rZ  s      r!   test_table_join_asofr  t  s    			) 
B
 
		 
B 	
v&A& 	 	A ),+ "   rV   c                  "   [         R                  " / SQ/ SQ/ SQS.5      n [         R                  " / SQ/ SQ/ SQ/ SQS	.5      nU R                  US
SS/SS9nUR                  S5      [         R                  " / SQ/ SQ/ SQ/ SQS.5      :X  d   eg )Nrt  r  r   rw  r{  r  r  rz  ry  r   r   r   )r{  r  rw  r  r  rw  r{  r   r  r  r  )NrG  Nrw  r{  r  r  )r   r   r  r  r  s      r!    test_table_join_asof_multiple_byr    s    	 
B 
"	 
B \\
t(A  F >>&!RXX$	/ &   rV   c                      [         R                  " S/ SQ05      n [         R                  " / SQ/ SQS.5      nU R                  US/ SS9nU[         R                  " / SQ/ SQS	.5      :X  d   eg )
Nr  r   rz  r  )r  r  r   r  )rF  rF  rG  )r  r  )r   r   r  r  s      r!   test_table_join_asof_empty_byr    s}    	i 
B 
" 
B
 \\
ta  F RXX"    rV   c            
      0   [         R                  " / SQ/ SQ/ SQ/ SQS.5      n [         R                  " / SQ/ SQ/ SQ/ S	Q/ S
QS.5      nSn[        R                  " [        US9   U R                  USSS/SSSS/S9  S S S 5        g ! , (       d  f       g = f)Nrt  r  r   ru  r  r  rz  r  r  r  ry  r  )r{  r  colUniqrw  r  zXColumns {'colVals'} present in both tables. AsofJoin does not support column collisions.rE   r  rw  r{  r   r  )r   r   r-   r.   r/   r  r  rd  rK   s      r!   test_table_join_asof_collisionsr    s    	"	 
B 
"" 
B	7  
z	-
4VV,VV$4 	 	
 
.	-	-s   %B
Bc            
      J   [         R                  " / SQ/ SQ/ SQS.5      n [         R                  " / SQ/ SQ/ SQ/ SQS	.5      nS
n[        R                  " [         R                  R
                  US9   U R                  USSS/SSS/S9  S S S 5        g ! , (       d  f       g = f)Nrt  r  r   r  rz  r  ry  r  r  r  rw  r  z)inconsistent size of by-key across inputsrE   r  rw  r{  r   r  r   r   r-   r.   r   r  r  r  s      r!   'test_table_join_asof_by_length_mismatchr    s    	 
B 
""	 
B 6C	rvv**#	6
4VV,VH 	 	
 
7	6	6s   3B
B"c            
      B   [         R                  " / SQ/ SQS.5      n [         R                  " / SQ/ SQ/ SQ/ SQS.5      nS	n[        R                  " [         R                  R
                  US
9   U R                  USS/SSS/S9  S S S 5        g ! , (       d  f       g = f)Nrt  r   rw  r  rz  r  )g     X@rh   rg   r  r  zCExpected by-key type int64 but got double for field colA in input 1rE   r  rw  r   r  r  r  s      r!   %test_table_join_asof_by_type_mismatchr    s    	 
B
 
""	 
B PC	rvv**#	6
4VHVH 	 	
 
7	6	6   0B
Bc            
      B   [         R                  " / SQ/ SQS.5      n [         R                  " / SQ/ SQ/ SQ/ SQS.5      nS	n[        R                  " [         R                  R
                  US
9   U R                  USS/SSS/S9  S S S 5        g ! , (       d  f       g = f)Nrt  r   r  rz  r  ry  )rh   ri   rC   r  zAExpected on-key type int64 but got double for field on in input 1rE   r  rw  r   r  r  r  s      r!   %test_table_join_asof_on_type_mismatchr    s    	 
B
 
""	 
B NC	rvv**#	6
4VHVH 	 	
 
7	6	6r  c           	         U R                  S S/S S/S.5      n[        R                  " [        R                  " SSSS9[        R                  " SSS	S9/5      n[        R
                  " [        5         UR                  U5        S S S 5        U R                  S S/S	S/S.5      nUR                  U5      R                  U:X  d   eg ! , (       d  f       NH= f)
Nr   Tr   r{   rG   rI  r   boolF)r<  r   r   r   r-   r.   r/   r  )r6  r   
new_schemas      r!   test_table_cast_invalidr    s     OO4)4,?@EBHHS'DAHHS&5AC DJ	z	"

: 
# OO4)5$-@AE::j!((J666	 
#	"s   3C
Cc                    U R                  [        R                  " / SQ5      [        R                  " / SQ5      /SS/S9nUR                  S5      R	                  5       / SQ/ SQS.:X  d   eUR                  S	/5      R	                  5       / S
Q/ SQS.:X  d   eU R                  [        R                  " / SQ[        R
                  " 5       S9[        R                  " / SQ5      /SS/S9nUR                  S/5      nUR	                  5       nUS   / SQ:X  d   eUS   / SQ:X  d   eUR                  S/5      nUR	                  5       nUS   / SQ:X  d   eUS   / SQ:X  d   eg )N)r   r   r   r   r   )r   r{   r   r{   r    r  r:  r|   rC  r  rU  )r  
descending)r    r   r   r{   r{   )r   r   r   r   r   )r   r   r   #   r   )r   carr   foobarr{   r   )r{   r  )r  r   r   r   )r  r  r   r   )r{   	ascending)r   r   rO   r  r:  rG   )r6  r   r  
sorted_tabsorted_tab_dicts        r!   test_table_sort_byr  ,  sz    OO
!
*+   !E
 ==",,.)!3   
 ==234>>@)!E   
 //
RXXZ0
01 3Z  C
 123J **,O3=0003#BBBB012J **,O3=0003#BBBBrV   constructorc                 &   U " / SQ/ SQ/SS/S9n[         R                  " U5      n[         R                  " SS/SS	/S
S//SS9n[         R                  R	                  X#5        [         R                  " USS9n[         R                  R	                  X#5        UR
                  S:X  d   eUR                  / 5      n[         R                  " U5      n[         R                  " S5      n[         R                  R	                  X#5        UR
                  S:X  d   e[         R                  " USS9n[         R                  R	                  X#5        UR
                  S:X  d   eUR                  SS5      n[         R                  " U5      n[         R                  " S5      n[         R                  R	                  X#5        UR
                  S:X  d   e[         R                  " USS9n[         R                  R	                  X#5        UR
                  S:X  d   eg )Nr   rB   r{   r   r|   r   r   r   r   r   r   rk   r   rv   )r   r   r   r   )	r\   r]   rO   r   assert_allcloser   r  emptyr~   )r  r   r   rT   r  r  s         r!   test_numpy_asarrayr  S  s    O4S#JGEZZFxx!Q!Q!Q0	BHJJv0ZZW-FJJv0<<7""" \\"FZZFxxHJJv0<<9$$$ZZg.FJJv0<<7""" [[AFZZFxxHJJv0<<9$$$ZZg.FJJv0<<7"""rV   c                    U " / SQ/ SQ/SS/S9n[         R                  " SS/SS	/S
S//SS9n[        [         R                  5      [        S5      :  a5  [         R                  " USS9n[         R                  R                  X25        g [        R                  " [        SS9   [         R                  " USS9  S S S 5        g ! , (       d  f       g = f)Nr   rB   r{   r   r|   r   r   r   r   r   r   rk   r   z
2.0.0.dev0F)copyzUnable to avoid a copyrE   )	r\   rO   r   __version__r   assert_array_equalr-   r.   r/   )r  r   rT   r   s       r!   test_numpy_array_protocolr  t  s     O4S#JGExx!Q!Q!Q0	BHr~~!66%e,


%%f7 ]]:-EFHHU' GFFs   "C
Cc                  D   Sn [         R                  R                  [        U 5      [        U 5       VVs/ s H  n[        S5       Vs/ s H  o"PM     snPM      snnS.5      n[         R                  R                  [        U 5      [        U 5       Vs/ s H  oPM     snS.5      n[        R
                  " [         R                  R                  5       nUR                  USSS9  S S S 5        SnU[        WR                  5      ;   d   e[        R
                  " [         R                  R                  5       nUR                  USSS9  S S S 5        U[        UR                  5      ;   d   eg s  snf s  snnf s  snf ! , (       d  f       N= f! , (       d  f       NK= f)	Nr  r   )r  array_column)r  r`  r  innerr  zOData type list<item: int64> is not supported in join non-key field array_column)r   r   r<  r   r-   r.   r   r  r  rn   r`  )	NUM_ITEMSr   r  r  rd  excinfoexp_error_msgs          r!   test_invalid_non_join_columnr    sF   I			I8=i8HI8H1U1X.X!X.8HI 
B 
		I"9-.-!-. 
B 
rvv**	+w
DG, 
,/MC.... 
rvv**	+w
DG, 
,C....# /I / 
,	+ 
,	+s5   E5E0E5E;
F :F0E5 
F
Fc                  P    [         R                  " S5      n U R                  S5      $ )Nzpyarrow.cudar   )r-   importorskipContext)cudas    r!   cuda_contextr    s     ~.D<<?rV   c                      [         R                  " [         R                  " S[         R                  " 5       5      [         R                  " S[         R                  " 5       5      /5      $ )NrV  rW  )r   r   r   rv   rY   rV   r!   r   r     s8    99bhhtRXXZ0"((42LMNNrV   c                     [         R                  " / SQU R                  S5      R                  5      [         R                  " / SQU R                  S5      R                  5      /$ )Nr  r   rU  r   )r   rO   r   r	   r7  s    r!   
cpu_arraysr    sG    HH_fll1o&:&:;HH+V\\!_-A-ABD DrV   c                 b    U Vs/ s H  o"R                  U R                  5      PM     sn$ s  snf r   copy_tomemory_manager)r  r  rJ   s      r!   cuda_arraysr    s'    @JK
KK334
KKKs   $,c                 T    [         R                  " U 5      nUR                  SL d   eU$ )NTr   r)   is_cpu)r  r)   s     r!   cpu_chunked_arrayr    s,    $$Z0M4'''rV   c                 T    [         R                  " U 5      nUR                  SL d   eU$ NFr  )r  r)   s     r!   cuda_chunked_arrayr    s,    $$[1M5(((rV   c                 X    [         R                  " X-   5      nUR                  SL d   eU$ r  r  )r  r  r)   s      r!   cpu_and_cuda_chunked_arrayr    s/    $$Z%=>M5(((rV   c                 *    [         R                  " XS9$ Nr7  )r   r8  )r  r   s     r!   cpu_recordbatchr    s    ??:55rV   c                 8    UR                  U R                  5      $ r   r  )r  r  s     r!   cuda_recordbatchr    s    ""<#>#>??rV   c                 .    [         R                  " X/U S9$ r  r   r   )r   r  s     r!   	cpu_tabler    s    88&:6JJrV   c                 .    [         R                  " X/U S9$ r  r  )r   r  s     r!   
cuda_tabler    s    88'<VLLrV   c                 .    [         R                  " X/U S9$ r  r  )r   r  r  s      r!   cpu_and_cuda_tabler    s    88&;FKKrV   c                    UR                   UR                   :X  d   eUR                  5       UR                  5       :X  d   e[        U5      [        U5      :X  d   e[        U5      [        U5      ;   d   eUR	                  5         [
        R                  " [        5         UR	                  SS9  S S S 5        [
        R                  " [        5         UR                    S S S 5        [
        R                  " [        5         UR                    S S S 5        [
        R                  " [        5         UR                  5         S S S 5        [
        R                  " [        5         US     S S S 5        [
        R                  " [        5         UR                  5         S S S 5        [
        R                  " [        5         UR                  5         S S S 5        [
        R                  " [        5         UR                  5         S S S 5        [
        R                  " [        5         UR                  S5        S S S 5        [
        R                  " [        5         X":H    S S S 5        [
        R                  " [        5         UR                  5         S S S 5        [
        R                  " [        5         UR!                  5         S S S 5        [
        R                  " [        5         UR#                  5         S S S 5        [
        R                  " [        5         UR%                  5         S S S 5        [
        R                  " [        5         UR'                  5         S S S 5        [
        R                  " [        5         UR)                  5         S S S 5        [
        R                  " [        5         UR+                  5         S S S 5        [
        R                  " [        5         UR-                  5         S S S 5        [
        R                  " [        5         UR/                  5         S S S 5        [
        R                  " [        5         UR1                  / SQ5        S S S 5        [
        R                  " [        5         UR3                  S5        S S S 5        UR5                  SS5        [
        R                  " [        5         UR7                  S/5        S S S 5        [
        R                  " [        5         UR9                  5         S S S 5        [
        R                  " [        5         UR;                  5         S S S 5        [
        R                  " [        5         UR=                  5         S S S 5        UR>                  UR>                  :X  d   e[A        URB                  5      [A        URB                  5      :X  d   eURE                  S5      nURF                  [H        RJ                  RL                  :X  d   e[
        R                  " [        5         URO                  5         S S S 5        [
        R                  " [        5         URQ                  5         S S S 5        [
        R                  " [        5         URS                  5         S S S 5        g ! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GN^= f! , (       d  f       GN== f! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GNa= f! , (       d  f       GN@= f! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GNv= f! , (       d  f       GNA= f! , (       d  f       GN = f! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GN8= f! , (       d  f       GN= f! , (       d  f       g = f)NTfullr   TFTFTr   r   r   )*r	   lengthrn   reprr,   r-   r.   r=  
null_countr:   r'   is_nullis_nanis_valid	fill_nullr   r^   	__array__r  r   r   rP   uniquevalue_countsr  r   r~   rm  	drop_nullsortr   r=  r4   r0   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 !"c*;&<<<< !"d+=&>>>> !	*	+###. 
, 
*	+%% 
, 
*	+!! 
, 
*	+002 
, 
*	+1 
, 
*	+""$ 
, 
*	+!!# 
, 
*	+##% 
, 
*	+$$Q' 
, 
*	+0 
, 
*	+$$& 
, 
*	+##% 
, 
*	+$$& 
, 
*	+! 
, 
*	+,,. 
, 
*	+""$ 
, 
*	+))+ 
, 
*	+!!# 
, 
*	+'') 
, 
*	+!!"BC 
, 
*	+  # 
, Q" 
*	+$ 
, 
*	+$$& 
, 
*	+! 
, 
*	+--/ 
, ((,=,H,HHHH !(()S1B1I1I-JJJJ $$Q'E 7 7 < <<<< 
*	+$$& 
, 
*	+--/ 
, 
*	+%%' 
,	+s 
,	+ 
,	+ 
,	+ 
,	+ 
,	+ 
,	+ 
,	+ 
,	+ 
,	+ 
,	+ 
,	+ 
,	+ 
,	+ 
,	+ 
,	+ 
,	+ 
,	+ 
,	+ 
,	+ 
,	+ 
,	+ 
,	+ 
,	+ 
,	+ 
,	+ 
,	+ 
,	+ 
,	+sP  ZZ* Z</["[ 
[2=\0\#\(\:>]1]$]0^
^=^&0^8#_
_	_.?` `:`$-`6 aaa,>a>
Z'*
Z9<
[
[ 
[/2
\
\
\%(
\7:
]	
]
]-0
]?
^
^#&
^58
_

_
_+.
_= 
`
`!$
`36
a
a
a),
a;>
bc                    U R                  5         U R                  [        R                  R                  :X  d   eU R
                  SL d   eU R                  [        UR                  5      :X  d   eU R                  UR                  :X  d   e[        U 5      [        U 5      ;   d   eU R                   H-  nUR                  [        R                  R                  :X  a  M-   e   U R                  U:X  d   eg r  )r,   r  r   r  r  r  r  r4   r}   rZ  rn   r  rY  r   )r   expected_schemar    s      r!   verify_cuda_recordbatchr  n  s    	NN 7 7 < <<<<<<5   O$9$9 ::::!6!6666u:e$$$]]}} 7 7 < <<<< <<?***rV   c                 T   [        X$S9  UR                  nUR                  S:X  d   e[        UR                  5      S:X  d   eUR
                  UR                  4 H  n[        R                  " / SQ[        R                  " 5       5      R                  U R                  5      nU" SSU5      n[        XR                  [        R                  " S[        R                  " 5       5      5      S9  Sn	[        R                  " [         U	S9   U" SSS/U-  5        S S S 5        M     UR#                  S5      n[        XR%                  S5      S9  UR'                  S	/5      n[        XR%                  S5      S9  UR'                  S
S	/5      n
[        U
R                  5      S:X  d   eU
R(                  [        R*                  R,                  :X  d   eUR/                  S
/5      n[        XR%                  S5      S9  [        R0                  " [        R                  " S
[        R2                  " 5       5      [        R                  " S	[        R2                  " 5       5      /5      n[        R                  " [4        5         UR7                  U5        S S S 5        [        R                  " S/U-  / SQS9R                  U R                  5      nUR                  SSU5      n[        R                  " [4        5         UR9                  5         S S S 5        [        R                  " [4        5         UR;                  S/U-  5        S S S 5        [        R                  " [4        5         UR=                  S/5        S S S 5        [        R                  " [4        5         UR?                  S
5        S S S 5        UR                  S5      UR                  S5      :X  d   eUR                  S5      UR                  S5      :X  d   eUR                  U R                  5      n[        R                  " [4        5         URA                  U5      SL d   e S S S 5        [        RB                  RE                  US
S	/5      n[        XS9  UR                  [        RF                  " 5       5      RA                  U5      (       d   e[        RB                  RI                  US   US   S.5      n[        XS9  UR                  [        RF                  " 5       5      RA                  U5      (       d   e[K        [        URL                  5      5       Vs/ s H  oR                  U5      PM     nn[        RN                  RE                  X?S9n[        R                  " [4        5         [        RB                  RQ                  U5        S S S 5        [        R                  " [4        5         URR                  (       d   e S S S 5        [        R                  " [4        5         URU                  5       (       d   e S S S 5        [        R                  " [4        5         URW                  5         S S S 5        [        R                  " [4        5         URY                  5         S S S 5        [        R                  " [4        5         UR[                  5         S S S 5        [        R                  " [4        5         UR]                  5         S S S 5        [        R                  " [4        5         UR_                  5         S S S 5        [        R                  " [4        5         URa                  5         S S S 5        URc                  SS5      n[        XS9  UR                  S:X  d   eUR                  [        RF                  " 5       5      nUURc                  SS5      :X  d   eURe                  SS05      n[        XS9  UR0                  Rf                  SS0:X  d   eURi                  SS/5      n[        R0                  " [        R                  " SUR                  S5      Rj                  5      [        R                  " SUR                  S5      Rj                  5      /5      n[        UUS9  URm                  5         [        R                  " [4        5         URm                  SS9  S S S 5        [        R                  " [4        5         URo                  5         S S S 5        [        R                  " [4        5         URq                  5         S S S 5        [        R                  " [4        5         URs                  5         S S S 5        [        R                  " [4        5         [u        URw                  5       5        S S S 5        g ! , (       d  f       G	M`  = f! , (       d  f       GN9= f! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GNf= f! , (       d  f       GN= fs  snf ! , (       d  f       GN= f! , (       d  f       GN^= f! , (       d  f       GN5= f! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GNo= f! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       g = f)Nr  r8  r   )r  rr   r   r   r   c2z`Got column on device <DeviceAllocationType.CPU: 1>, but expected <DeviceAllocationType.CUDA: 2>.rE   r   rW  rV  r   r  maskTrV  rW  r  r      key   valuecol0col1r  )<r  r   r`   r4   rY  ra  ri  r   rO   rH   r  r  r   r   r-   r.   rj   rx  removerp  r  r  r  r  r   rG   r=  r  r  r  rm  r  rQ   r   r   default_cpu_memory_managerr<  r   r}   StructArrayr  r:   r'   r:  r+   r   r  r  	serializer~   r  rb  r  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  r  	cpu_batchr  s                      r!   test_recordbatch_non_cpur0  z  s   ,E!!A !!V+++ ''(A---  **,<,G,GHhh("'')  !<!<= 	q$$	}}RXXdBGGI5N'O	QB]]9G4q$a  54 I !..q1II}}Q7GH !--tf5II}}Q7GH"//t=K{""#q(((""b&=&=&B&BBBB !''/II}}Q7GH BHHT288:6rxxz8RSTJ	*	+j) 
, xxa&FGOO##%H"2"="=ax"P	*	+#--/ 
, 
*	+
+ 
, 
*	+qc" 
, 
*	+  & 
, !!!$Q777!!!$Q777  ''(C(CDI	*	+&&y1T999 
, **;tEII>R::<=DD_UUUU **+a.TU+WXII>R::<=DD_UUUU (-S->'?@'?!ll1o'?F@>>--k-IL	*	+
((6 
, 
*	+&&&& 
, 
*	+557777 
, 
*	+""$ 
, 
*	+""$ 
, 
*	+""$ 
, 
*	+""$ 
, 
*	+((* 
, 
*	+""$ 
, !&&q!,II>"""!!""?"?"ABI--a3333 !88&(9KLII>$$(:::: !//0@AIii	&&,,q/..	/	&&,,q/..	/	12O IG 	*	+!!t!, 
, 
*	+""$ 
, 
*	+**, 
, 
*	+++- 
, 
*	+'5578 
,	+Q 54( 
,	+ 
,	+ 
,	+ 
,	+ 
,	+ 
,	+ A	+	+ 
,	+ 
,	+ 
,	+ 
,	+ 
,	+ 
,	+ 
,	+ 
,	+0 
,	+ 
,	+ 
,	+ 
,	+ 
,	+s  f+:f>5g(g" g4h0h h* h/iii%:i7-j	 jj-j?=k/k#"k5ll+
f;	>
g
g"
g14
h
h
h'/
h>
i
i"%
i47
j	
j
j*-
j<?
k
k #
k25
l
l
l'c                    U R                  5         U R                  SL d   eU R                  [        UR                  5      :X  d   eU R
                  UR                  :X  d   e[        U 5      [        U 5      ;   d   eU R                   Hf  nUR                  SL d   eUR                  5        H>  nUR                  SL d   eUR                  [        R                  R                  :X  a  M>   e   Mh     U R                  U:X  d   eg r  )r,   r  r  r4   r}   rZ  rn   r  rY  r3   r  r   r  r  r   )r   r  r    r   s       r!   verify_cuda_tabler2    s    	NN<<5   O$9$9 ::::!6!6666u:e$$$]]xx5   \\^E<<5((($$(?(?(D(DDDD $ 
 <<?***rV   c                    [        X%S9  UR                  nUR                  S:X  d   e[        UR                  5      S:X  d   eUR
                  UR                  4 GH  n[        R                  " S/U-  [        R                  " 5       5      nUR                  U R                  5      n	U" SSU	5      n
[        XR                  [        R                  " S[        R                  " 5       5      5      S9  U" SSU5      n
U
R                  SL d   eU
R                  S5      R                  SL d   eU
R                  S5      R                  SL d   eU
R                  S5      R                  SL a  GM   e   UR!                  S5      n
[        XR#                  S5      S9  UR%                  S	/5      n
[        XR#                  S5      S9  UR%                  S
S	/5      n
[        U
R                  5      S:X  d   eU
R                  (       d   eUR'                  S
/5      n
[        XR#                  S5      S9  [        R(                  " [        R                  " S
[        R*                  " 5       5      [        R                  " S	[        R*                  " 5       5      /5      n[,        R.                  " [0        5         UR3                  U5        S S S 5        [        R                  " S/U-  S/U-  S9R                  U R                  5      nUR                  SSU5      n[,        R.                  " [0        5         UR5                  5         S S S 5        [,        R.                  " [0        5         UR7                  S/U-  5        S S S 5        [,        R.                  " [0        5         UR9                  S/5        S S S 5        [,        R.                  " [0        5         UR;                  S
5        S S S 5        UR                  S5      UR                  S5      :X  d   eUR                  S5      UR                  S5      :X  d   e[,        R.                  " [0        5         UR=                  U5      (       d   e S S S 5        [        R>                  RA                  US
S	/5      n
[        XS9  [        R>                  RC                  US   US   S.5      n
[        XS9  [E        [        URF                  5      5       Vs/ s H  oR                  U5      PM     nn[        RH                  RA                  X?S9n[,        R.                  " [0        5         [        R>                  RK                  U5        S S S 5        [        R>                  RM                  XD/U5      n
[        XS9  [,        R.                  " [0        5         URN                  (       d   e S S S 5        [,        R.                  " [0        5         URQ                  5       (       d   e S S S 5        [,        R.                  " [0        5         URS                  5         S S S 5        [,        R.                  " [0        5         URU                  5         S S S 5        [,        R.                  " [0        5         URW                  5         S S S 5        [,        R.                  " [0        5         URY                  5         S S S 5        UR[                  SS9nU H0  n[,        R.                  " [\        5         [_        UUS9  S S S 5        M2     URa                  SS9nU H0  n[,        R.                  " [\        5         [_        UUS9  S S S 5        M2     URc                  SS5      n
[        XS9  U
R                  S:X  d   eURe                  SS05      n
[        XS9  U
R(                  Rf                  SS0:X  d   eURi                  SS/5      n
[        R(                  " [        R                  " SUR                  S5      Rj                  5      [        R                  " SUR                  S5      Rj                  5      /5      n[        U
US9  URm                  5         [,        R.                  " [0        5         URm                  SS9  S S S 5        [,        R.                  " [0        5         URo                  5         S S S 5        [,        R.                  " [0        5         URo                  5         S S S 5        [,        R.                  " [0        5         URq                  5         S S S 5        [,        R.                  " [0        5         URs                  S
5        S S S 5        [,        R.                  " [0        5         URu                  US
5        S S S 5        [,        R.                  " [0        5         URw                  US
S
S5        S S S 5        [,        R.                  " [0        5         URy                  5         S S S 5        [,        R.                  " [0        5         UR{                  5         S S S 5        [,        R.                  " [0        5         [}        UR                  5       5        S S S 5        [,        R.                  " [0        5         UR                  5         S S S 5        g ! , (       d  f       GN= f! , (       d  f       GN|= f! , (       d  f       GNV= f! , (       d  f       GN3= f! , (       d  f       GN= f! , (       d  f       GN= fs  snf ! , (       d  f       GN= f! , (       d  f       GNl= f! , (       d  f       GNC= f! , (       d  f       GN"= f! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GM  = f! , (       d  f       GM  = f! , (       d  f       GN3= f! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GNf= f! , (       d  f       GNE= f! , (       d  f       GN$= f! , (       d  f       GN= f! , (       d  f       g = f)Nr  )rz   r   r   r   r  Fr   TrW  rV  r  r  r  r   r  r   r  r   r!  r"  r  )Ar2  r   r`   r4   rY  ra  ri  r   rO   rH   r  r  r   r   r  r   rx  r#  rp  r  r   rG   r-   r.   r=  r  r  r  rm  r  rQ   r   r   r<  r   r}   r%  r  rA  r:   r'   r:  r+   r   r  r.  AssertionErrorr  ro  r~   r  rb  r  r	   r,   r   r   rV  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  r  rH  r   rM  r  s                        r!   test_table_non_cpur9  (  s   j9A w&&& z!!"a''' $$j&;&;<((A37BGGI.??<#>#>?q$)	)]]HHT2779%6' 	(q$(	5((("))U222"))U222"))T111 = ((+Iiq1AB ''/Iiq1AB''t5Iy  !Q&&& !!4&)Iiq1AB BHHT288:6rxxz8RSTJ	*	+
# 
, xxatfqj199,:U:UVH&11!T8D	*	+'') 
, 
*	+4&1*% 
, 
*	+ 
, 
*	+4  
, A&,,q/111A&,,q/111 
*	+  ++++ 
, $$[4,?Ii8 $$KN+a.%QRIi8 (-S->'?@'?!ll1o'?F@>>--k-IL	*	+
""<0 
, %%'7&JFSIi8 
*	+     
, 
*	+//1111 
, 
*	+ 
, 
*	+ 
, 
*	+ 
, 
*	+""$ 
, ##!#4G]]>*#E6B +*  !!!2F]]>*#E6B +*    A&Ii8""" 22FH3EFIi8$$(:::: ))66*:;Iii	&&,,q/..	/	&&,,q/..	/	12O iA 	*	+& 
, 
*	+ 
, 
*	+ 
, 
*	+%%' 
, 
*	+D! 
, 
*	+
D) 
, 
*	+ZtQ7 
, 
*	+ 
, 
*	+%%' 
, 
*	+z//12 
, 
*	+ 
,	+a 
,	+ 
,	+ 
,	+ 
,	+ 
,	+ 
,	+ A	+	+ 
,	+ 
,	+ 
,	+ 
,	+ 
,	+ 
,	+ +* +*, 
,	+ 
,	+ 
,	+ 
,	+ 
,	+ 
,	+ 
,	+ 
,	+ 
,	+ 
,	+ 
,	+s>  2j#/j5"kkk+k=-l  l,l&#l8m
mm.7n >nn%<n8.o
!oo.p ;p0p$'p6qq	q,#
j25
k
k
k(+
k:=
l
l#&
l58
m

m
m+.
m= 
n
n"	%
n5	8
o

o
o+.
o= 
p
p!$
p36
q
q
q),
q:)collectionsr   collections.abcr   r6   r;   numpyr\   ImportErrorr-   pyarrowr   pyarrow.computecomputerX  pyarrow.interchanger   pyarrow.vendored.versionr   r@   rL   rU   rZ   markrd   rl   rp   rx   r   r   r   parametrizerX   rG   rk   r*   rQ  r  r   r   r   r   r   r   r   r   r   nopandasr   r   r   r   r  r"  r$  r-  r:  r?  rB  rS  r[  rg  rn  ru  ry  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r  r  r  r
  r  r  r  r  r  r  r#  r%  r)  r5  r   r   rA  rC  rM  rO  rQ  rW  rZ  r\  r_  rg  rk  rs  rv  ry  r{  r~  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r1   rO   r)   r   r  r  r  r
  r  r  r  r  r  r   r"  r%  r'  r+  r-  r1  r4  r6  aceror]  rb  rm  rr  r  r  r  r  r  r  datasetr  r  r  r  r  r  r  r  r  r   r8  r  r  r  fixturer  r   r  r  r  r  r  r  r  r  r  r  r  r  r0  r2  r9  rY   rV   r!   <module>rI     s  $ $ $ 
     . ,D*HZ 8 & &C( ( (6!0%-B` 	"BHHJ/	rxxz"	2::<(	299;'	RXXbhhj!"a&1#,-%Sz	"BHHRYY[$9:	#IIrxxRXXZ0"((3		2LMN	P
	 	     1 1& + +2 + +2 	/ 	/ %<  %<PG$O
.*+(> >O O <9K*LM N*2  <9K*LM N,$
N"8'.6"	+)#"**0#f=
7
 5  % 
4B 4Bn 6 6. 0. 0.f  & . .( 9. 9.x $ $$""9J?-   0 0	<* * *D 
		CCL
	,	0#& ** 
		. 
		$ 
		""(( 
		 
		 06 
		++8 
		664(
!"9JD(#4E<! / /,60,>*#4$" 
		##8 
		//8 
		//> 9 9 .)40.)2884
teU^ur4j12B4D4DE) 
 M
 MF 
		6565r .)2884
teU^ur4j12B4D4DE) 2	2< .)40.)2884
teU^ur4j12B4D4DE) 
*
*& 
		R&R&j * *@ ! !:'( 0 0 )'T-$(VI$OBJG0#f Y Yx # # # #22  4  4 = =. "((bnn >? @   , # #L  .  2  & 
 
6 
 
, 
 
* 
 
* 
			7	7 
		CC@ 2??(CD# E #> 2??(CD( E ( / /0  
 O O D D
 L L       6 6 @ @ K K M M L LJ(Z	+]9@+z _x  	Bs   v
 
vv