
    g                       d dl mZ d dlmZ d dlZd dlZ	 d dlZd dl	Z	d dl
Zd dlmZ d dlmZ d dlmZ d Zd Zd Zd	 Ze	j.                  j                  d
        Zd Zd Ze	j.                  j                  d        Zd Zd Zd Ze	j.                  j?                  dg d ej@                         fg d ejB                         fg d ejD                         fg d ejF                         fg  ejH                   ejJ                               fddgdgg ejH                   ejB                               fdgdddgg ejH                   ejF                               fg d ejL                   ejN                  d ejB                                ejN                  d ejF                               g      fg      d        Z(e	j.                  jR                  d        Z*e	j.                  jR                  d        Z+e	j.                  jR                  d         Z,e	j.                  jR                  d!        Z-e	j.                  jR                  d"        Z.e	j.                  jR                  e	j.                  j^                  d#               Z0d$ Z1d% Z2d& Z3d' Z4d( Z5 G d) d*      Z6 G d+ d,      Z7e	j.                  j?                  d-e6e7g      d.        Z8d/ Z9e	j.                  j?                  d-e6e7g      d0        Z:d1 Z;d2 Z<d3 Z=d4 Z>d5 Z?d6 Z@d7 ZAd8 ZBd9 ZCd: ZDd; ZEd< ZFd= ZGd> ZHd? ZId@ ZJdA ZKdB ZLdC ZMdD ZNdE ZOdF ZPdG ZQe	j.                  j                  e	j.                  j?                  dHg dI      dJ               ZRe	j.                  j                  dK        ZSe	j.                  j                  dL        ZTe	j.                  j                  dM        ZUe	j.                  j                  dN        ZVe	j.                  j                  dO        ZWe	j.                  j                  dP        ZXdQ ZYdR ZZdS Z[dT Z\e	j.                  jR                  dU        Z]e	j.                  j                  dV        Z^dW Z_dX Z`dY Zae	j.                  jR                  dZ        Zbe	j.                  j?                  d[ej                  ej                  g      d\        Zed] Zfd^ Zgd_ Zhd` Zida Zjdb Zkdc Zldd Zme	j.                  j?                  d[ej                  ej                  g      de        Zne	j.                  j?                  d[ej                  ej                  g      df        Zoe	j.                  j?                  d[ej                  ej                  g      dg        Zpdh Zqe	j.                  j?                  d[ej                  ej                  g      di        Zre	j.                  j?                  d[ej                  ej                  g      dj        Zsdk Ztdl Zue	j.                  j?                  d[ej                  ej                  g      dm        Zve	j.                  j?                  d[ej                  ej                  g      dn        Zwdo Zxdp Zydq Zzdr Z{ds Z|dt Z}du Z~e	j.                  jR                  dv        Zdw Zdx Zdy Zdz Ze	j.                  j?                  d[ej                  ej                  g      d{        Ze	j.                  j?                  d[ej                  ej                  g      d|        Ze	j.                  j?                  d[ej                  ej                  g      d}        Ze	j.                  j                  d~        Ze	j.                  j?                  dg dg dfefg dg dfej                  fdgddggdgddggfej                  fg      d        Ze	j.                  j?                  d[ej                  ej                  g      d        Ze	j.                  j?                  dg dg dfej                  fdgddggdgddggfej                  fg      d        Ze	j.                  j?                  dg dg dfefg dg dfej                  fdgddggdgddggfej                  fg      d        Ze	j.                  j?                  d[ej                  ej                  g      d        Ze	j.                  jR                  d        Ze	j.                  jR                  d        Zd Ze	j.                  jR                  d        Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Ze	j.                  j<                  d        Ze	j.                  j<                  d        Zd Ze	j.                  j<                  d        Ze	j.                  j<                  d        Ze	j.                  j<                  d        Ze	j.                  j<                  e	j.                  j?                  d[ej                  ej                  g      d               Ze	j.                  j<                  d        Ze	j.                  j<                  d        Ze	j.                  jP                  d        Ze	j.                  jP                  d        Ze	j.                  jP                  d        Ze	j.                  jP                  d        Ze	j.                  jP                  d        Ze	j.                  jP                  d        Ze	j.                  jP                  d        Ze	j.                  j?                  d[ej                  ej                  g      d        Ze	j.                  j?                  d[ej                  ej                  g      d        Ze	j.                  j                  e	j.                  j?                  dejd                  ejf                  g      d               Ze	j.                  j                  e	j.                  j?                  dejd                  ejf                  g      d               Ze	j.                  j<                  d        Ze	jn                  d        Ze	jn                  d        Ze	jn                  d        Ze	jn                  d        Ze	jn                  d        Ze	jn                  d        Ze	jn                  d        Ze	jn                  d        Ze	jn                  d        Ze	jn                  d        Ze	jn                  d        Ze	jn                  d        Zd Zd Zd Zd Zd Zy# e$ r dZY Nw xY w)    )OrderedDict)IterableN)from_dataframe)Versionc                  ~   t        j                  g t        j                               } | j                  t        j                         k(  sJ | j	                         g k(  sJ | j                          t        j                  g d      }|j                  t        j                         k(  sJ t        j                  t              5  t        j                  g        d d d        t        j                  g dg dg dg      } t        | j                  t              sJ t        d | j                  D              sJ t        d | j                         D              sJ t        | j                        dk(  sJ | j!                         t#        d	 | j                         D              k(  sJ t%        j&                  |       t(        j+                  |       | j!                         z   k\  sJ | j,                  d
k(  sJ | j                          t/        j0                  |       } |       J ~  |       J y # 1 sw Y   YxY w)Ntypebinary                        	   c              3   d   K   | ](  }t        |t        j                  j                         * y wN
isinstancepalib
Int64Array.0cs     M/var/www/openai/venv/lib/python3.12/site-packages/pyarrow/tests/test_table.py	<genexpr>z,test_chunked_array_basics.<locals>.<genexpr>4   s"     EAz!RVV../   .0c              3   d   K   | ](  }t        |t        j                  j                         * y wr   r   r   s     r!   r"   z,test_chunked_array_basics.<locals>.<genexpr>5   s$     K9JAz!RVV../9Jr#   r   c              3   <   K   | ]  }|j                           y wr   )get_total_buffer_sizer   s     r!   r"   z,test_chunked_array_basics.<locals>.<genexpr>7   s"      /K8I1 01/F/F/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K9JKKKKt{{q   %%'3 /K8<8I/K ,K K K K==&"3"3#**,#- - - -;;)###MMO	T	B44<<- 
#	"s   H22H<c                     t        j                  g dg dg dg      } | j                  t        j                         k(  sJ t	        |       dk(  sJ t	        | j
                        dk(  sJ t        j                  g dg dg dg      } | j                  t        j                         k(  sJ t	        |       dk(  sJ t	        | j
                        dk(  sJ t        j                  g dg dg dgt        j                               } | j                  t        j                         k(  sJ t	        |       dk(  sJ t	        | j
                        dk(  sJ t        j                  g dg g      } | j                  t        j                         k(  sJ t	        |       dk(  sJ t	        | j
                        dk(  sJ d	}t        j                  t        |
      5  t        j                  g       sJ 	 d d d        t        j                  g t        j                               j                  t        j                         k(  sJ t        j                  g g      j                  t        j                         k(  sJ t        j                  g gt        j                               j                  t        j                         k(  sJ y # 1 sw Y   xY w)Nr   r   r   r   r         @      @g      @r   r   z@cannot construct ChunkedArray from empty vector and omitted typematch)r   r(   r	   int64r3   r/   int8r,   r-   r.   r)   null)arrmsgs     r!   test_chunked_array_constructionrK   D   s<   


 C
 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Kc                      t        j                  ddg      } t        j                  | | g      }|j                         }t        j                  g d      }|j	                  |      sJ y )Nr   r   r   r   r   r   )r   arrayr(   combine_chunksequals)rI   chunked_arrresexpecteds       r!   test_combine_chunksrT   q   sV    
((Aq6
C""C:.K

$
$
&Cxx%H::h    c                     t        j                  g t        j                               j                         t        j                  g t        j                               k(  sJ t        j                  t        j                  g t        j                               gt        j                               j                         t        j                  g t        j                               k(  sJ y )Nr   )r   r(   bool_rO   rN    rU   r!   4test_chunked_array_can_combine_chunks_with_no_chunksrY   z   s    BRXXZ0??ARXX
F    	"288:	&'bhhjn"((2BHHJ78 8 8rU   c                     t        j                  g dg dg g      } t        j                  |       }| j	                         }t        |t        j                        sJ |j                  dk(  sJ t        j                  ||      sJ y )Nr   r   )r   )	r   r(   npasarrayto_numpyr   ndarrayshapearray_equal)r<   arr1arr2s      r!   test_chunked_array_to_numpyrc      su    
 D
 ::dD==?DdBJJ'''::>>$%%%rU   c                     d} t        j                  t        |       5  t        j                  t        j
                  g d      t        j
                  g d      g       d d d        t        j                  t        |       5  t        j                  t        j
                  g d      gt        j                                d d d        y # 1 sw Y   mxY w# 1 sw Y   y xY w)Nzchunks must all be same typerD   r         ?       @      @r   )r,   r-   	TypeErrorr   r(   rN   float64)rJ   s    r!   !test_chunked_array_mismatch_typesrk      s    
(C	y	,
HHYHH\"
 	 
- 
y	,
"((9-.RZZ\B 
-	, 
-	, 
-	,s   ACA CCC!c                      t        j                  g d      t        j                  g d      g} t        j                  |       } t        |       dk(  sJ y )Nr   r   z<[
  [
    1,
    2,
    3
  ],
  [
    4,
    5,
    6
  ]
])r   rN   r(   strr<   s    r!   test_chunked_array_strro      sN    

D D!Dt9    rU   c                     t        j                  g d      t        j                  g d      g} t        j                  |       } | d   j                         dk(  sJ | d   j                         dk(  sJ | d   j                         dk(  sJ t	        j
                  t              5  | d    d d d        t	        j
                  t              5  | d    d d d        | t        j                  d         j                         dk(  sJ | dd	 }|j                         d
d	gk(  sJ | d	d }|j                         dgk(  sJ | dd }|j                  | j                  k(  sJ |j                         g k(  sJ y # 1 sw Y   xY w# 1 sw Y   xY w)Nr   r   r   r   r   iir   r   r   c   )r   rN   r(   as_pyr,   r-   
IndexErrorr[   int32r*   r	   )r<   
data_slices     r!   test_chunked_array_getitemrw      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   %E2E>2E;>Fc                     t        j                  g d      t        j                  g d      g} t        j                  |       } | j                  t	        |             }|j
                  | j
                  k(  sJ |j                         g k(  sJ | j                  t	        |       dz         }|j
                  | j
                  k(  sJ |j                         g k(  sJ t         j                  j                  | gdg      }|j                  t	        |            }t	        |      dk(  sJ t         j                  j                  | gdg      }|j                  t	        |      dz         }t	        |      dk(  sJ y )Nr   r   
   anamesr   )	r   rN   r(   slicer3   r	   r*   Tablefrom_arrays)r<   rv   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   rU   c                  h   t        j                  dg      t        j                  g d      t        j                  g d      t        j                  g d      g} t        j                  |       }t        t	        d      |      D ]  \  }}||j                         k(  rJ  t        |t              sJ y )Nr   r   r   r   ry   )r   rN   r(   ziprangers   r   r   )r<   rI   ijs       r!   test_chunked_array_iterr      s    
!


	D 

4
 CE"Is#1AGGI~~ $ c8$$$rU   c                     d } d } | t        j                  g t        j                               t        j                  g t        j                                       |t        j                  g t        j                               t        j                  g t        j                                      t        j                  ddgt        j                               }t        j                  ddgt        j                               }t        j                  ddgt        j                               }t        j                  g dt        j                               } | |g|g        ||g|g        | ||g||g        | ||g|g        |||g||g       t        j                  g t        j                               j                  d       rJ y )Nc                 F   t        | t        j                        r| }nt        j                  |       }t        |t        j                        r|}nt        j                  |      }|j	                  |      sJ |j	                  |      sJ ||k(  sJ |t        |      k7  sJ y r   )r   r   ChunkedArrayr(   rP   rm   xarrsyarrsxys       r!   eqz%test_chunked_array_equals.<locals>.eq   s    eR__-A  'AeR__-A  'Axx{{xx{{AvvCF{{rU   c                 &   t        | t        j                        r| }nt        j                  |       }t        |t        j                        r|}nt        j                  |      }|j	                  |      rJ |j	                  |      rJ ||k7  sJ y r   )r   r   r   r(   rP   r   s       r!   nez%test_chunked_array_equals.<locals>.ne  ss    eR__-A  'AeR__-A  'A88A;88A;AvvrU   r   r   r   r   )r   r   r   r   )r   r(   ru   rF   rN   rP   )r   r   rz   br    ds         r!   test_chunked_array_equalsr      sS    r,	,.r,	,. 	!Qbhhj)A
!Qbhhj)A
!Qbhhj)A
BHHJ/AsQCLsQCL1v1v1vsO1v1v 4;;DAAAArU   )r<   typ)TFTT)r   r   r   r   )rf         @N)rz   Nr   r   r   r   rz   r   r    ))r   rz   )r   r    Nc                 B   g }| r1|j                  t        j                  | d d |             | dd  } | r1t        j                  ||      }|j	                          |j                  |j                  |            }|j	                          |j                  |      sJ y )Nr   r   )appendr   rN   r(   r+   loadsdumpsrP   )r<   r   pickle_modulearraysrN   results         r!   test_chunked_array_pickler   (  s     F
bhhtBQxc23ABx  V#.E	NN  !4!4U!;<F
OO==rU   c                  n   dd l } t        j                  g d      g}t        j                  |dg      }|j	                  d      }t        |t        j                        sJ |j                         }t        || j                        sJ |j                  dk(  sJ |d   dk(  sJ |j                  dk(  sJ y )Nr   r   r   ry   rz   r{   )r   r   )pandasr   rN   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fbii(((<<4!9;;#rU   c                     dd l } dd lm} t        j                  g d      t        j                  | j                  g d            t        j                  | j                  dd            t        j                  | j                  ddd            t        j                  g dt        j                  d	            t        j                  g dt        j                  d	d            fD ]|  }t        j                  d
|i      }|j                  d
      j                         }|j                  d
k(  sJ | j                  |j                         d
      }|j                  ||       ~ y )Nr   r   rz   r   rz   2012r   )periodszEurope/Brussels)r   tzmsr   )r   )r   pandas.testingtestingr   rN   Categorical
date_range	timestampr   r   r   r   r   assert_series_equal)r   tmr<   r   r   rS   s         r!   *test_chunked_array_to_pandas_preserve_namer   S  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;
vx0HrU   c                     dd l } | j                  | j                  ddd            }t        j                  |      }|j                         }|j                  dk(  sJ |j                  dk(  sJ |j                  dk(  sJ |j                  j                  |j                        sJ | j                  | j                  ddd            }t        j                  |      }|j                         }|j                  dk(  sJ |j                  dk(  sJ |j                  dk(  sJ |j                  j                  |j                        sJ y 	Nr   ry   r   )index)ry   r   r   r   )r   r   )
r   	DataFrame
RangeIndexr   r   r   num_rowsr_   r   rP   )r   r<   r   r   s       r!   .test_table_roundtrip_to_pandas_empty_dataframer   g  s   
 <<bmmAr15<6DHHTNE__F>>R::   <<7"""<<tzz***<<bmmAr15<6DHHTNE__F>>Q::<<6!!!<<tzz***rU   c                     dd l } | j                  | j                  ddd            }t        j                  j                  |      }|j                         }|j                  dk(  sJ |j                  dk(  sJ |j                  dk(  sJ |j                  j                  |j                        sJ | j                  | j                  ddd            }t        j                  j                  |      }|j                         }|j                  dk(  sJ |j                  dk(  sJ |j                  dk(  sJ |j                  j                  |j                        sJ y r   )r   r   r   r   RecordBatchfrom_pandasr   r   r_   r   rP   )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***rU   c                  "   dd l } dd lm} | j                  ddgddgd      }t	        j
                  |      }|j                  j                         j                         }|j                  dk(  sJ |j                  ||j                  d d        y )Nr   r   r   g?g?rz   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     sy     	QF#s4	5BHHRLE\\%%'113F<<6!!!&"''"1+.rU   c                  d   t        j                  dg      t        j                  g d      g} t        j                  |       }t        j                  |      }|j                         g dk(  sJ |j                  t        j                  d      k(  sJ t        j                  |d      }|j                         g dk(  sJ t        j                  dd g      t        j                  g d      g} t        j                  |       }t        j                  |      }|j                         }|d   d	k(  sJ t        j                  |d         sJ |d
d  g dk(  sJ |j                  t        j                  d      k(  sJ t         j                  j                  t        j                  g d      t        j                  g d            }t        j                  ||g      }t        j                  |      }|j                  t        j                  d      k(  sJ |j                         g dd
z  k(  sJ y )Nr   r   )r   r   r   r   rF   rm   dtype)0123r   rf   r   re   rj   )r   r   r   r   r   rz   r   r    r7   )rz   r   r    rz   r   )
r   rN   r(   r[   r\   tolistr   isnanDictionaryArrayr   )r<   rQ   np_arrelementsrI   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!;;;;rU   c            	      :   t        j                  t        j                  dt        j                               t        j                  dt        j                               g      } t        j
                  g d|       }t        j                  |      }|j                         \  }}|j                  t        j                  t        j
                  g dt        j                                           sJ |j                  t        j                  t        j
                  g dt        j                                           sJ t        j
                  g |       }t        j                  |      }|j                         \  }}|j                  t        j                  t        j
                  g t        j                                           sJ |j                  t        j                  t        j
                  g t        j                                           sJ y )Nr   r   )r   r   r         @)r         @r   )r   r   r   )r   r   r   )	r   structfieldint16float32rN   r(   flattenrP   )tyrz   carrr   r   s        r!   test_chunked_array_flattenr     se   	BHHS"((*-HHS"**,/1 
2B
/b9AAD<<>DAq88B$$RXXibhhj%IJKKK88B$$RXXo35::<&A B C C C 	"AAD<<>DAq88B$$RXXbrxxz%BCDDD88B$$RXXbrzz|%DEFFFrU   c                     t        j                  t        j                  g d      j                         t        j                  g d      j                         g      } | j	                  d      j
                  j                  t        j                  ddg            sJ | j	                  d      j
                  j                  t        j                  ddg            sJ | j                         } t        j                  g d      }| j	                  d      j
                  j                  |      sJ | j	                  d      j
                  j                  |      sJ | j                         g d	k(  sJ y )
NfoobarNr   )quuxNr   r   r   r   r   r   r   r   r   )r   r   Nr   r   Nr   )	r   r(   rN   dictionary_encodechunk
dictionaryrP   unify_dictionariesr*   )rI   expected_dicts     r!   %test_chunked_array_unify_dictionariesr     s   



,-??A
&'99; C 99Q<""))"((E5>*BCCC99Q<""))"((FE?*CDDD

 
 
"CHH34M99Q<""))-88899Q<""))-888==?NNNNrU   c                      t        j                  t        d      5  t        j                          d d d        y # 1 sw Y   y xY w)Nr   rD   )r,   r-   ri   r   r   rX   rU   r!   test_recordbatch_dunder_initr     s&    	y	6
 
7	6	6	   :Ac                      G d d      } t        j                  g dt        j                               }t        j                  |g      } | |      }t        j                  |      }||k(  sJ t        j                  |t        j                               }||j                  t        j                               k(  sJ y )Nc                       e Zd Zd ZddZy):test_chunked_array_c_array_interface.<locals>.ArrayWrapperc                     || _         y r   )rN   )selfrN   s     r!   __init__zCtest_chunked_array_c_array_interface.<locals>.ArrayWrapper.__init__  s	    DJrU   Nc                 8    | j                   j                  |      S r   )rN   __arrow_c_array__r   requested_schemas     r!   r  zLtest_chunked_array_c_array_interface.<locals>.ArrayWrapper.__arrow_c_array__  s    :://0@AArU   r   __name__
__module____qualname__r   r  rX   rU   r!   ArrayWrapperr     s    		BrU   r	  r   r   )r   rN   rF   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W gBHHJ7FW\\"((*----rU   c                  8    G d d      } t        j                  g dg dg      } | |      }t        j                  |      }||k(  sJ t        j                  |t        j                               }||j                  t        j                               k(  sJ y )Nc                       e Zd Zd ZddZy)Btest_chunked_array_c_stream_interface.<locals>.ChunkedArrayWrapperc                     || _         y r   )r  )r   r  s     r!   r   zKtest_chunked_array_c_stream_interface.<locals>.ChunkedArrayWrapper.__init__  	    "DLrU   Nc                 8    | j                   j                  |      S r   )r  __arrow_c_stream__r  s     r!   r  zUtest_chunked_array_c_stream_interface.<locals>.ChunkedArrayWrapper.__arrow_c_stream__  s    <<223CDDrU   r   r  r  r  r   r  rX   rU   r!   ChunkedArrayWrapperr    s    	#	ErU   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T>> gBHHJ7FTYYrxxz****rU   c                       e Zd Zd ZddZy)BatchWrapperc                     || _         y r   r   r   r   s     r!   r   zBatchWrapper.__init__!  	    
rU   Nc                 8    | j                   j                  |      S r   )r   r  r  s     r!   r  zBatchWrapper.__arrow_c_array__$  s    zz++,<==rU   r   r  rX   rU   r!   r  r     s    >rU   r  c                       e Zd Zd ZddZy)BatchDeviceWrapperc                     || _         y r   r  r  s     r!   r   zBatchDeviceWrapper.__init__)  r  rU   Nc                 <     | j                   j                  |fi |S r   )r   __arrow_c_device_array__)r   r  kwargss      r!   r#  z+BatchDeviceWrapper.__arrow_c_device_array__,  s    2tzz223CNvNNrU   r   )r  r  r  r   r#  rX   rU   r!   r   r   (  s    OrU   r   wrapper_classc                    t        j                  t        j                  g dt        j                               gdg      } | |      }t        j                  |      }||k(  sJ t        j                  t        j
                  dt        j                               g      }t        j                  ||      }t        j                  t        j                  g dt        j                               gdg      }||k(  sJ y Nr   r   rz   r{   r   )r   record_batchrN   rF   r   r   ru   )r%  r<   r  r   castable_schemarS   s         r!   "test_recordbatch_c_array_interfacer+  0  s    ??
,UD D!G __W%FT>> ii
bhhj!! O __W_=F
, UH XrU   c                  0   t        j                  t        j                  g dt        j                               gdg      } t	        j
                  t        d      5  | j                  d       d d d        | j                  d       }y # 1 sw Y   xY w)	Nr   r   rz   r{   z7Received unsupported keyword argument\(s\): \['other'\]rD   znot-none)other)r   r)  rN   rF   r,   r-   NotImplementedErrorr#  )r<   _s     r!   =test_recordbatch_c_array_interface_device_unsupported_keywordr0  F  sw    ??	)"((*	-.seD 
H
 	%%J%7	
 	%%D%1A
 
s   BBc                 D   t        j                  t        j                  g dt        j                               gdg      } | |      }t        j                  |      }t         j
                  j                  |g      }||k(  sJ t        j                  t        j                  dt        j                               g      }t        j                  ||      }t        j                  dt        j                  g dt        j                               i      }||k(  sJ y r'  )
r   r)  rN   rF   r   r~   from_batchesr   r   ru   )r%  r<   r  r   rS   r*  s         r!   test_table_c_array_interfacer3  V  s    ??
,UD D!G XXgFxx$$dV,HX ii
bhhj!! O XXgo6FxxRXXibhhj1 H XrU   c                      G d d      } t        j                  t        j                  g dt        j                               gdg      t        j                  t        j                  g dt        j                               gdg      g} | |      }t        j                  |      }t         j
                  j                  |      }||k(  sJ t        j                  ||d   j                  	      }||k(  sJ t        j                  t        j                  dt        j                               g      }t        j                  ||	      }||j                  |      k(  sJ t        j                  t         j                  j                  d
      5  t        j                  |t        j                  t        j                  dt        j                  t        j                                     g      	       d d d        y # 1 sw Y   y xY w)Nc                       e Zd Zd ZddZy)4test_table_c_stream_interface.<locals>.StreamWrapperc                     || _         y r   )batches)r   r8  s     r!   r   z=test_table_c_stream_interface.<locals>.StreamWrapper.__init__o  r  rU   Nc                     t         j                  j                  | j                  d   j                  | j                        }|j                  |      S Nr   )r   RecordBatchReaderr2  r8  r   r  )r   r  readers      r!   r  zGtest_table_c_stream_interface.<locals>.StreamWrapper.__arrow_c_stream__r  sA    ))66Q&&6F,,-=>>rU   r   r  rX   rU   r!   StreamWrapperr6  n  s    	#	?rU   r=  r   r   rz   r{   r   r   r(  zField 0 cannot be castrD   )r   r)  rN   rF   r   r~   r2  r   r   ru   r
  r,   r-   r   ArrowTypeErrorlist_)r=  r<   r  r   rS   good_schemas         r!   test_table_c_stream_interfacerA  m  su   ? ? 	)"((*=>seL
)"((*=>seLD D!G XXgFxx$$T*HX XXgd1gnn5FX ))RXXc288:678KXXgk2FX]];//// 

%=
 	BIIrxxRXXbhhj5I'J&KL	

 
 
s   A%HHc                     t        j                  t        d      d      t        j                  g dd      g} t        j                  | ddg      }g }|j	                         D ]  }|j                  |        |j                  |k(  sJ |t        j                  ||j                        k(  sJ |t        j                  |d	d  |j                  d	d        k7  sJ ||k7  sJ y )
Nr   r   r   r   r   r   Nry   ru   c0c1r{   r   )r   rN   r   r)  itercolumnsr   columnscolumn_names)r<   r   rG  r   s       r!   test_recordbatch_itercolumnsrI    s    
q(
'g6D OOD4,/EG  "s # ==G###BOOG53E3EFFFFBOOGABKu7I7I!"7MNNNNGrU   c                     t        j                  t        d      d      t        j                  g dd      g} t        j                  g d      t        j                  dgdgd	gg      g}d
dg}t        j                  | |      }|t        j                  | |      k(  sJ |j	                  t        j                  | |            sJ |t        j                  ||      k7  sJ |j	                  t        j                  ||            rJ t        j                  | |ddi      }|j	                  |      sJ |j	                  |d      rJ |j	                  d       rJ |dk7  sJ y )Nr   r   r   rC  ru   r   r   efrD  rE  keyvaluer|   metadataTcheck_metadatar   )r   rN   r   r)  rP   )data1r=   rH  r   
batch_metas        r!   test_recordbatch_equalsrU    sF   
q(
'g6E
 	!
3%#&'E $<LOOE<0EBOOE<8888<<|<===BOOE<8888||BOOE<@AAAl+0'*:<JU###  t <<< ||D!!!E>>rU   c            	         t        j                  t        j                  g d      t        j                  g d      gddg      } | j                  t        j                  ddg            j	                  | j                  dd            sJ | j                  t        j                  dd g            j	                  t        j                  t        j                  dd g      t        j                  dd g      gddg            sJ y )Nr   r   r   Nr   rz   r   r    r   rK  f1f2r   r   r    )r   r)  rN   takerP   r}   r  s    r!   test_recordbatch_taker\    s    OO	$	%	+	,	.	tE ::bhh1v&'..u{{1a/@AAA::bhh4y)*11
1d),bhhT{.CDt	&' ' 'rU   c                      t        j                  t        j                  g d      gdg      } | d   j                  dk(  sJ y Nr   r   r   r   a0r{   r   )r   r)  rN   _name)rbs    r!   )test_recordbatch_column_sets_private_namerc    s6    	"((<01$	@Ba5;;$rU   c            	      \   t        j                  ddg      } t        j                  t        j                  dt        j                  t        j
                                     g      }t        j                  t              5  t        j                  | g|       d d d        y # 1 sw Y   y xY w)Nr   r   f0r(  )
r   rN   r   r   r?  utf8r,   r-   r.  r)  )rI   r   s     r!   ,test_recordbatch_from_arrays_validate_schemarg    sh    
((Aq6
CYYrxx	':;<=F	*	+
f- 
,	+	+s    B""B+c                     t        j                  dg      t        j                  g d      t        j                  dg      g} t        j                  t              5  t        j
                  | g d       d d d        y # 1 sw Y   y xY w)Nr   )tokyolikehappyderek)idtagsr   )r   rN   r,   r-   r.   r)  rn   s    r!   -test_recordbatch_from_arrays_validate_lengthsro    sY    HHaSM288$>?HHgY!D 
z	"
45 
#	"	"s   A>>Bc                      t        j                  g g       } t        |       dk(  sJ | j                  dk(  sJ | j                  dk(  sJ y r:  )r   r)  r3   r   num_columnsr  s    r!   test_recordbatch_no_fieldsrr    sH    OOB#Eu:??>>Q!!!rU   c                     t        j                  t        d            t        j                  g d      g} t        j                  t
              5  t        j                  | g d       d d d        t        j                  t
              5  t        j                  | dg       d d d        y # 1 sw Y   DxY w# 1 sw Y   y xY wNr   r   r   r{   rz   )r   rN   r   r,   r-   r.   r)  rn   s    r!   *test_recordbatch_from_arrays_invalid_namesru    s    
q
$%D 
z	"
O4 
# 
z	"
SE* 
#	" 
#	" 
#	"s   B,
B8,B58Cc                      t        j                  t        d            t        j                  g d      g} t        j                  | ddg      }|j                  j
                  J y )Nr   r   rD  rE  )r   rN   r   r)  r   rP  r<   r   s     r!   test_recordbatch_empty_metadatarx    sR    
q
$%D
 OOD4,/E<<  (((rU   c                    t        j                  t        d      d      t        j                  g dd      g}t        j                  dt        j                               t        j                  dt        j
                               g}t        j                  |dd	i
      }t        j                  ||      }| j                  | j                  |            }|j                  |      sJ |j                  |k(  sJ y )Nr   rG   r   r   r   intsfloats   foo   barrP  r(  )r   rN   r   r   rG   r   r   r)  r   r   rP   )r   r<   fieldsr   r   r   s         r!   test_recordbatch_pickler    s    
q'
$95D
 	#
2::<(F YYv(89FOOD0E  !4!4U!;<F====F"""rU   c                  R   t        j                  t        d            t        j                  g d      t        j                  t        dd            g} t         j                  j	                  | d      }|j                  d      j                  |j                  j                  d            sJ |j                  d      j                  |j                  j                  d            sJ t        j                  t              5  |j                  d       d d d        t        j                  t              5  |j                  d        d d d        t        j                  t              5  |j                  d	       d d d        y # 1 sw Y   pxY w# 1 sw Y   IxY w# 1 sw Y   y xY w
Nr   r   ry   r   r{   rz   r   r   r   )r   rN   r   r   r   r   rP   r   r,   r-   KeyErrorri   rt   rw  s     r!   test_recordbatch_get_fieldr    s"   
q
$%
q"D
 NN&&t?&CE;;s""5<<#5#5c#:;;;;;q>  !3!3C!8999	x	 C 
! 
y	!D 
" 
z	"A 
#	" 
!	  
"	! 
#	"$   F7F*FFFF&c                     t        j                  t        d            t        j                  g d      t        j                  t        dd            g} t         j                  j	                  | d      }|j                  d      j                  |j                  d            sJ t        j                  t        d	      5  |j                  d
       d d d        t        j                  t              5  |j                  d        d d d        t        j                  t              5  |j                  d       d d d        y # 1 sw Y   pxY w# 1 sw Y   IxY w# 1 sw Y   y xY wNr   r   ry   r   r{   rz   r   z"Field "d" does not exist in schemarD   r   r   )r   rN   r   r   r   r   rP   r,   r-   r  ri   rt   rw  s     r!   test_recordbatch_select_columnr  '  s    
q
$%
q"D
 NN&&t?&CE<<##ELLO444	@
BS
B 
y	!T 
" 
z	"Q 
#	"
B 
B 
"	! 
#	"$   E4E'EEEE#c                     t        j                  g d      } t        j                  g d      }t        j                  ddgddgddgd d	d
gg      }t        j                  | ||gg d      }|j                  dg      }t        j                  | gdg      }|j	                  |      sJ |j                  ddg      }t        j                  ||gddg      }|j	                  |      sJ |j                  dg      }t        j                  | gdg      }|j	                  |      sJ |j                  ddg      }t        j                  ||gddg      }|j	                  |      sJ |j                  ddi      }|j                  ddg      }d|j                  j                  v sJ t        j                  t        d      5  |j                  dg       d d d        t        j                  t        d      5  |j                  dg       d d d        |j                  ddg      }t        j                  ||gddg      }|j	                  |      sJ t        j                  | ||gg d      }t        j                  t        d      5  |j                  dg       d d d        |j                  dg      }t        j                  |gdg      }|j	                  |      sJ y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   `xY wNrW  rX  r   r   r   r   r   r   r   ry   )rY  rZ  f3rY  r  rZ  r   rz   test   azField "f5" does not existrD   f5zindex out of bounds)rY  rZ  rY  zField "f1" exists 2 times)r   rN   r)  selectrP   replace_schema_metadatar   rP  r,   r-   r  rt   )a1a2a3r   r   rS   batch2s          r!   test_recordbatch_selectr  <  s   	$	%B	+	,B	Aq6Aq6Aq64!R9	:BOORRL*<=E \\4&!FtdV,H=="""\\4,'FBx$6H==""" \\1#FtdV,H=="""\\1a&!FBx$6H==""" **C=9F]]D$<(F6==))))) 
x'B	CdV 
D 
z)>	?aS 
@ \\4,'FBx$6H==""" OORRL*<=E	x'B	CdV 
D \\4&!FtdV,H=="""% 
D	C 
@	? 
D	C$   K!7K.K:!K+.K7:Lc                      t        j                  t              5  t        j                  j                  t        j                  t        d                   d d d        y # 1 sw Y   y xY w)Nr   )r,   r-   ri   r   r   from_struct_arrayrN   r   rX   rU   r!   *test_recordbatch_from_struct_array_invalidr  o  s9    	y	!
((%();< 
"	!	!s   <AA(c            
         t        j                  ddiddigt        j                  dt        j                         fdt        j                         fg            } t         j
                  j                  |       }|j                  t         j
                  j                  t        j                  dd gt        j                               t        j                  d dgt        j                               gddg            sJ y Nrz  r   r{  rf   r   )	r   rN   r   ru   r   r   r  rP   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	   rU   c                     t         j                  j                  t        j                  dd gt        j                               t        j                  d dgt        j
                               gddg      } | j                         }|j                  t        j                  ddiddigt        j                  dt        j                         fdt        j
                         fg                  sJ y Nr   r   rf   rz  r{  )	r   r   r   rN   ru   r   to_struct_arrayrP   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   rU   c                      t        j                  t        d      5  t        j                  j                  t        j                  t        d                   d d d        y # 1 sw Y   y xY w)Nz*Argument 'struct_array' has incorrect typerD   r   )r,   r-   ri   r   r~   r  rN   r   rX   rU   r!   $test_table_from_struct_array_invalidr    s=    	y(T	U
""288E!H#56 
V	U	Us   <A!!A*c            
         t        j                  ddiddigt        j                  dt        j                         fdt        j                         fg            } t         j
                  j                  |       }|j                  t         j
                  j                  t        j                  dd gt        j                               t        j                  d dgt        j                               gddg            sJ y r  )	r   rN   r   ru   r   r~   r  rP   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	   rU   c            
         t        j                  ddiddiggt        j                  dt        j                         fdt        j                         fg            } t         j
                  j                  |       }|j                  t         j
                  j                  t        j                  dd gt        j                               t        j                  d dgt        j                               gddg            sJ y r  )
r   r(   r   ru   r   r~   r  rP   r   rN   )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	   rU   c                     t         j                  j                  t        j                  dd gt        j                               t        j                  d dgt        j
                               gddg      } | j                         }|j                  t        j                  ddiddiggt        j                  dt        j                         fdt        j
                         fg                  sJ y r  
r   r~   r   rN   ru   r   r  rP   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   rU   c                     t         j                  j                  t        j                  dd gt        j                               t        j                  d dgt        j
                               gddg      } | j                  d      }|j                  t        j                  ddigddiggt        j                  dt        j                         fdt        j
                         fg                  sJ y )Nr   r   rf   rz  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   rU   c                     | j                  |      sJ | j                  |k(  sJ | j                  |k(  sJ | j                  |j                  k(  sJ | j                  |j                  k(  sJ y r   )rP   sizer	   r_   strides)tensorexpected_tensorr	   r  s       r!   check_tensorsr    sh    ==)));;$;;$<<?00000>>_44444rU   typ_str)
uint8uint16uint32uint64rG   r   ru   rF   r   rj   c           
         t        j                  |       }g d}g d}g d}t        j                  j	                  t        j
                  |t        j                  |            t        j
                  |t        j                  |            t        j
                  |t        j                  |            gg d      }|j                  d      }t        j                  |||g      j                  |d	      }t        j                  j                  |      }t        ||t        j                  |      d
       |j                         }t        j                  |||g      j                  |d	      }t        j                  j                  |      }t        ||t        j                  |      d
       |j                  d      }	g d}g d}g d}|	j                  d      }t        j                  |||g      j                  |d	      }t        j                  j                  |      }t        ||t        j                  |      d       |	j                         }t        j                  |||g      j                  |d	      }t        j                  j                  |      }t        ||t        j                  |      d       |j                  dd      }
g d}g d}g d}|
j                  d      }t        j                  |||g      j                  |d	      }t        j                  j                  |      }t        ||t        j                  |      d       |
j                         }t        j                  |||g      j                  |d	      }t        j                  j                  |      }t        ||t        j                  |      d       y )N	r   r   r   r   r   r   r   r   r   	ry         (   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   rN   from_numpy_dtype	to_tensorcolumn_stackastypeTensor
from_numpyr  r}   )r  r   ra   rb   arr3r   r   r   rS   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
tT*+223c2BAyy##A&H&(B$7$7$<bA__F
tT*+223c2BAyy##A&H&(B$7$7$<bA [[^F#D+D3D.F
tT*+223c2BAyy##A&H&(B$7$7$<bAF
tT*+223c2BAyy##A&H&(B$7$7$<bA[[AFDD$D.F
tT*+223c2BAyy##A&H&(B$7$7$<bAF
tT*+223c2BAyy##A&H&(B$7$7$<bArU   c            
      >   g d} g d}g d}t         j                  j                  t        j                  t	        j                  | t        j
                        t        j
                               t        j                  t	        j                  |t        j
                        t        j
                               t        j                  t	        j                  |t        j
                        t        j
                               gg d      }|j                  d      }t	        j                  | ||g      j                  t        j
                  d	
      }t         j                  j                  |      }t        ||t        j
                         d       |j                         }t	        j                  | ||g      j                  t        j
                  d
      }t         j                  j                  |      }t        ||t        j
                         d       y )Nr  r  r  r   r   r   Fr  r  r  r  r  )r   r   r   rN   r[   float16r  r  r  r  r  r  ra   rb   r  r   r   r   rS   s          r!   +test_recordbatch_to_tensor_uniform_float_16r    sX   &D/D8DNN&&HHRXXd"**5BJJLIHHRXXd"**5BJJLIHHRXXd"**5BJJLI	
 E __u_-F
tT*+222::S2IAyy##A&H&(BJJL"5__F
tT*+222::S2IAyy##A&H&(BJJL"5rU   c            	      r   g d} g d}dddt         j                  dddd	d
g	}t        j                  j	                  t        j
                  | t        j                               t        j
                  |t        j                               gddg      }|j                  d      }t        j                  | |g      j                  t         j                  d      }t        j                  j                  |      }t        ||t        j                         d       |j                         }t        j                  | |g      j                  t         j                  d      }t        j                  j                  |      }t        ||t        j                         d       t        j                  j	                  t        j
                  | t        j                               t        j
                  |t        j                               t        j
                  |t        j                               gg d      }|j                  d      }t        j                  | ||g      j                  t         j                   d      }t        j                  j                  |      }t         j"                  j%                  |j'                         |       |j(                  dk(  sJ |j*                  t        j                          k(  sJ |j,                  |j,                  k(  sJ |j.                  |j.                  k(  sJ |j                         }t        j                  | ||g      j                  t         j                   d      }t        j                  j                  |      }t         j"                  j%                  |j'                         |       |j(                  dk(  sJ |j*                  t        j                          k(  sJ |j,                  |j,                  k(  sJ |j.                  |j.                  k(  sJ y )Nr  r  r     ,    X         r   rz   r   Fr  r  r     r  r   r  )r[   nanr   r   r   rN   r  r   r  r  r  ru   r  r  r  r   rj   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
t%,,RXXS,AAyy##A&H&(BHHJ3__F
t%,,RXXS,AAyy##A&H&(BHHJ3 NN&&HHT		,HHT
+HHT

-	
 E __u_-F
tT*+222::S2IAyy##A&HJJFOO-q1;;";;"**,&&&<<8>>)))>>X-----__F
tT*+222::S2IAyy##A&HJJFOO-q1;;";;"**,&&&<<8>>)))>>X-----rU   c            	         g d} g d}g d}t         j                  j                  t        j                  | t        j                               t        j                  t        j                  |t
        j                        t        j                               t        j                  |t        j                               gg d      }t        j                  t        d      5  |j                          d d d        y # 1 sw Y   y xY w)	Nr  r  )	r  r  r  i  r  r  r  r  r  r   r   r   z.Casting from or to halffloat is not supported.rD   )r   r   r   rN   r  r[   r  r   r,   r-   r.  r  )ra   rb   r  r   s       r!   >test_recordbatch_to_tensor_unsupported_mixed_type_with_float16r  ^  s    &D/D8DNN&&HHT		,HHRXXd"**5BJJLIHHT

-	
 E 
>
 		
 
 
s   %C??Dc            	      J   ddddt         j                  ddddg	} d	d
dddddt         j                  dg	}t        j                  j	                  t        j
                  | t        j                               t        j
                  |t        j                               gddg      }|j                  d      }t        j                  | |g      j                  t         j                  d      }t        j                  j                  |      }t         j                  j                  |j                         |       |j                  dk(  sJ |j                   t        j                         k(  sJ |j"                  |j"                  k(  sJ |j$                  |j$                  k(  sJ y )Nr   r   r   r   r   r   r   r   ry   r  r  r  r  r  r  r  r   rz   r   Fr  r  r  r  )r[   r  r   r   r   rN   r   r  r  r  r  r  r   r  r]   r  r	   r_   r  ra   rb   r   r   r   rS   s         r!   test_recordbatch_to_tensor_nanr  r  sC   q!Q1a+DBBB3DNN&&HHT

-HHT

-	
 :	E __u_-F
t%,,RZZs,CAyy##A&HJJFOO-q1;;";;"**,&&&<<8>>)))>>X-----rU   c                     g d} g d}t         j                  j                  t        j                  | t        j                               t        j                  |t        j
                               gddg      }t        j                  t         j                  d      5  |j                          d d d        |j                  dd	
      }t        j                  | |g      j                  t        j                  d      }t         j                  j                  |      }t        j                   j#                  |j%                         |       |j&                  dk(  sJ |j(                  t        j                         k(  sJ |j*                  |j*                  k(  sJ |j,                  |j,                  k(  sJ t         j                  j                  t        j                  | t        j                               t        j                  |t        j                               gddg      }|j                  dd	
      }t        j                   j#                  |j%                         |       |j&                  dk(  sJ |j(                  t        j                         k(  sJ |j*                  |j*                  k(  sJ |j,                  |j,                  k(  sJ t         j                  j                  t        j                  | t        j.                               t        j                  |t        j.                               gddg      }|j                  dd	
      }t        j                  | |g      j                  t        j
                  d      }t         j                  j                  |      }t        j                   j#                  |j%                         |       |j&                  dk(  sJ |j(                  t        j
                         k(  sJ |j*                  |j*                  k(  sJ |j,                  |j,                  k(  sJ y # 1 sw Y   xY w)N)	r   r   r   r   Nr   r   r   r   )	ry   r  r  r  r  r  r  Nr  r   rz   r   z-Can only convert a RecordBatch with no nulls.rD   TF)null_to_nanr  r  r  r  )r   r   r   rN   ru   r   r,   r-   r>  r  r[   r  r  rj   r  r  r   r  r]   r  r	   r_   r  rG   r  s         r!   test_recordbatch_to_tensor_nullr    s.   )D1DNN&&HHT
+HHT

-	
 :	E 

=
 		
 ___?F
t%,,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
t%,,RZZs,CAyy##A&HJJFOO-q1;;";;"**,&&&<<8>>)))>>X-----a
 
s    Q		Qc                     t         j                  j                  t        j                  g t        j                               t        j                  g t        j                               gddg      } | j                         }t        j                  g g g      j                  t        j                  d      }t         j                  j                  |      }|j                  |j                  k(  sJ |j                  t        j                         k(  sJ |j                  |j                  k(  sJ |j                  dk(  sJ y )Nr   rz   r   r  r  )r   r   )r   r   r   rN   r   r  r[   r  r  r  r  r  r	   r_   r  )r   r   r   rS   s       r!    test_recordbatch_to_tensor_emptyr    s    NN&&HHRbjjl+HHRbjjl+	
 :	E __F
R!((3(?Ayy##A&H;;(--''';;"**,&&&<<8>>)))>>V###rU   c                     g d} g d}t         j                  j                  t        j                  | t        j                               t        j                  |t        j
                               gddg      }t        j                  t         j                  d      5  |j                          d d d        y # 1 sw Y   y xY w)Nr  )	rz   r   r    rz   r   r    rz   r   r    r   rz   r   zDataType is not supportedrD   )
r   r   r   rN   ru   rf  r,   r-   r>  r  )ra   rb   r   s      r!   &test_recordbatch_to_tensor_unsupportedr    s    &D8DNN&&HHT
+HHT	*	
 :	E 

)
 		
 
 
s    B::Cc           	         t        j                  t        d            t        j                  g d      g}ddg} | ||      }|j                  d      }|j                  dk(  sJ  | |D cg c]  }|j                  d       c}|      }|j                  |      sJ |j                  dd      } | |D cg c]  }|j                  dd       c}|      }|j                  |      sJ |j                  d      j                  |      sJ t        |j                  t        |                  dk(  sJ t        j                  t              5  |j                  d	       d d d        |j                  dd      j                  |d d       sJ |j                  dd      j                  |d d       sJ |j                  dd      j                  |dd
       sJ |j                  dt        |      dz
        j                  |dd        sJ |j                  t        |      dz
  d      j                  |dd        sJ |j                  t        |      d
z
  d      j                  |dd       sJ y c c}w c c}w # 1 sw Y   xY w)Nr   r   rD  rE  r{   r   r   r   rq   r   )
r   rN   r   r}   r   rP   r3   r,   r-   rt   )	factoryr<   r|   objslicedr   rS   sliced2	expected2s	            r!   _table_like_slice_testsr    s;   
q
$%D 4LE
$e
$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99SX\1%,,SX66699SX\1%,,SBZ888- 2 6 
#	"s   ,I38I8I==Jc                  H    t        t        j                  j                        S r   )r  r   r   r   rX   rU   r!   test_recordbatch_slice_getitemr    s    "2>>#=#=>>rU   c                  4    t        t        j                        S r   )r  r   r   rX   rU   r!   test_table_slice_getitemr    s    "288,,rU   c            	      b   t        j                  dt        j                  g t        j                  d            i      } | j	                  dd      }|j                          t        j                  dt        j                  g t        j                               i      } | j                          y )Nrz   usr   r   )r   r   rN   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rU   c                     t        j                  dgd      } t        j                  ddgd      }t        j                  t        j                  |       gdg      }t        j                  t        j                  |      gdg      }t	        j
                  t        j                        5  t        j                  j                  ||g       d d d        y # 1 sw Y   y xY w)Nr   r  r   rB   rC   rj   rE  )	r[   rN   r   r)  r,   r-   ArrowInvalidr~   r2  )r  r  r  r  s       r!   "test_recordbatchlist_schema_equalsr     s    	1#X	&B	3*I	.B__bhhrl^dV4F__bhhrl^dV4F	r	'
vv./ 
(	'	's   +"CCc                      t        j                  t        j                  g d      gdg      } | d   j                  dk(  sJ y r^  )r   r   rN   ra  ts    r!   #test_table_column_sets_private_namer  +  s6    
"((<()$8AQ4::rU   c                  *   t         j                  j                  g g       } | j                  |       sJ | j                  d       rJ t         j                  j                  g g ddi      }| j                  |d      rJ | j                  |      sJ y )Nr{   rM  rN  rO  TrQ  )r   r~   r   rP   )r   r-  s     r!   test_table_equalsr  1  s    HH  2 .E<< ||D!!!HH  28H IE||E$|777<<rU   c                     t        j                  t        j                  dt        j                               t        j                  dt        j                               g      } t        j
                  t        j                  dg      t        j                  dg      gddg      }t         j                  j                  |g|       }|j                  j                  |       sJ |j                  d      t        j                  dgg      k(  sJ |j                  d      t        j                  dgg      k(  sJ t        j                  t        j                  dt        j                               g      }t        j                  t         j                        5  t         j                  j                  |g|       d d d        t        j
                  t        j                  dg      gdg      }t        j                  t         j                        5  t         j                  j                  |g|        d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)Nrz   r   r   gQ	@r{   r   )r   r   r   rF   rj   r)  rN   r~   r2  rP   r   r(   r,   r-   r
  )r   r   r   incompatible_schemaincompatible_batchs        r!   "test_table_from_batches_and_schemar  =  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   "H>"I
>I
Ic            	      @   ddl m}  dd l}|j                  dt	        t        d            i      }|j                  dt	        t        dd            i      }t        j                  j                  |d      }t        j                  j                  |d      }t        j                  j                  |||g      }|j                  |||gd	      }|j                         }t        |      d
k(  sJ  | t        j                  j                  |      j                         |       |j                  d      }t	        t        t        |            g dk(  sJ  | |j                         |        | t        j                  j                  |      j                         |       t        j                  j                  t!        |||g            }	|j#                  |	      sJ t%        j&                  t(              5  |j                  d       d d d        y # 1 sw Y   y xY w)Nr   )r   rz   ry   r  F)preserve_indexT)ignore_indexr   r  r  )ry   r  r   ry   )r   r   r   r   r0   r   r   r   r   r~   r2  concat
to_batchesr3   r   mapiterrP   r,   r-   r.   )
r   r   df1df2r  r  r   expected_dfr8  table_from_iters
             r!   test_table_to_batchesr!  R  s   1
,,T%)_-
.C
,,T%B-01
2C^^''E'BF^^''E'BFHH!!666":;E))S#sO$)?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   8HHclsc                    t        j                  t        d      d      t        j                  g dd      g}| j                  |d      }|j	                          |j
                  j                  rJ t        |      dk(  sJ |j                  dk(  sJ |j                  t        |      k(  sJ |j                  dk(  sJ |j                         d	k(  sJ |j                  d	k(  sJ t        j                  |      t        j!                  |      |j                         z   k\  sJ |j#                         }|t%        d
g dfdg dfg      k(  sJ t'        |t(              sJ || j+                  ||j
                        k(  sJ t-        j.                  t0              5  |d    d d d        g }|j3                         D ]  }| t         j4                  u rt7        |      t         j8                  u sJ |j;                         D ]  }|J  t-        j.                  t0              5  |j=                  d       d d d        t-        j.                  t0              5  |j=                  |j>                         d d d        n%tA        t7        |      t         jB                        sJ |jE                  |        |jF                  |k(  sJ || j                  ||jH                        k(  sJ || j                  |dd  |jH                  dd        k7  sJ ||k7  sJ t        j
                  t        jJ                  dt        jL                         ddi      t        jJ                  dt        jN                               gddi      }| j                  ||      }|j
                  |k(  sJ tQ        jR                  |      } |       J ~ |       J y # 1 sw Y   *xY w# 1 sw Y   xY w# 1 sw Y   QxY w)Nr   r   r   rC  ru   r   r{   r   r      rz   )r   r   r   r   r   r   r(  r   rq   r   rD  rM  rN  r~  rE  r|  r}  )*r   rN   r   r   r+   r   rP  r3   r   rq  r_   r&   r9   r5   r6   r7   r8   	to_pydictr   r   dictfrom_pydictr,   r-   rt   rF  r~   r	   r   r2   r   
num_chunks
issubclassArrayr   rG  rH  r   r   ru   r:   r;   )	r"  r<   r   pydictrG  r   r   r   r>   s	            r!   test_table_basicsr-  u  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###COOF5<<O@@@@	z	"a 
# G  ""((?9///)((( * z*		" + z*		#..) +* d3i222s# #& ==G###COOG53E3EOFFFFCOOGABKu7I7I!"7MONNNNG YYrxxz+0'*:<rxxz24 "( 02F OODO0E<<6!!!	U	B44<<Q 
#	" +* +*s$   O
 OO$
OO!	$O.	c                      t        j                  t        d      5  t        j                          d d d        y # 1 sw Y   y xY w)Nr~   rD   )r,   r-   ri   r   r~   rX   rU   r!   test_table_dunder_initr/    s%    	y	0

 
1	0	0r   c                  
   t        j                  ddg      } t        j                  ddg      }t        j                  dt        j                         t	        dd      	      }t        j                  d
t        j                         d      }t         j
                  j                  | |gt        j                  ||g            }d|j                  d      j                  v sJ |j                  d      j                  du sJ y )Nr   r   r   r   field1ABr   r~  field2Fnullabler(  r  r   )
r   rN   r   rF   r'  r~   r   r   rP  r6  )arr0ra   field0r1  r   s        r!   0test_table_from_arrays_preserves_column_metadatar9    s    88QFD88QFDXXh
TC35GHFXXh
U;FHH  $(*		662B(C ! EE5;;q>*****;;q>""e+++rU   c                     t        j                  t        d            t        j                  g d      g} t        j                  t
              5  t         j                  j                  | g d       d d d        t        j                  t
              5  t         j                  j                  | dg       d d d        y # 1 sw Y   NxY w# 1 sw Y   y xY wrt  )r   rN   r   r,   r-   r.   r~   r   rn   s    r!   $test_table_from_arrays_invalid_namesr;    s    
q
$%D 
z	"
T9 
# 
z	"
T#/ 
#	" 
#	" 
#	"s   $C #C C	Cc                  .   t        t        d            g dg} t        j                  | ddg      }t        j                  j                  | ddg      }|j                  |      sJ t        j                  t        j                  dt        j                               t        j                  dt        j                               g      }t        j                  | |      }t        j                  j                  | |      }|j                  |      sJ y )Nr   r   rz   r   r{   r(  )r0   r   r   r   r~   r   rP   r   r   r  rF   )r<   r   rS   r   s       r!   test_table_from_listsr=    s    U1XD
 XXd3*-Fxx##Dc
#;H=="""YY
biik"
bhhj! F XXd6*Fxx##D#8H=="""rU   c                 P   t        j                  ddgddggt        j                               t        j                  g dgt        j                               g}t        j                  t        j
                  dt        j                               t        j
                  dt        j                               gd	d
i      }t         j                  j                  ||      }| j                  | j                  |            }|j                          |j                  |      sJ y )Nr   r   r   r   r   )somestringsN rz  strsr|  r}  r~  r(  )r   r(   r  r)   r   r   r~   r   r   r   r+   rP   )r   r<   r   r   r   s        r!   test_table_picklerC    s    
1a&1a&)		<
78ryy{KD YY557!' 02F HH  f 5E  !4!4U!;<F
OO==rU   c                  R   t        j                  t        d            t        j                  g d      t        j                  t        dd            g} t         j                  j	                  | d      }|j                  d      j                  |j                  j                  d            sJ |j                  d      j                  |j                  j                  d            sJ t        j                  t              5  |j                  d       d d d        t        j                  t              5  |j                  d        d d d        t        j                  t              5  |j                  d	       d d d        y # 1 sw Y   pxY w# 1 sw Y   IxY w# 1 sw Y   y xY wr  )r   rN   r   r~   r   r   rP   r   r,   r-   r  ri   rt   r<   r   s     r!   test_table_get_fieldrF    s"   
q
$%
q"D
 HH  _ =E;;s""5<<#5#5c#:;;;;;q>  !3!3C!8999	x	 C 
! 
y	!D 
" 
z	"A 
#	" 
!	  
"	! 
#	"r  c                     t        j                  t        d            t        j                  g d      t        j                  t        dd            g} t         j                  j	                  | d      }|j                  d      j                  |j                  d            sJ t        j                  t        d	      5  |j                  d
       d d d        t        j                  t              5  |j                  d        d d d        t        j                  t              5  |j                  d       d d d        y # 1 sw Y   pxY w# 1 sw Y   IxY w# 1 sw Y   y xY wr  )r   rN   r   r~   r   r   rP   r,   r-   r  ri   rt   rE  s     r!   test_table_select_columnrH    s    
q
$%
q"D
 HH  _ =E<<##ELLO444	xA
CS
C 
y	!T 
" 
z	"Q 
#	"
C 
C 
"	! 
#	"r  c                  <   t        j                  t        j                  g d      t        j                  g d      t        j                  g d      gg d      } t        j                  t
        d      5  | j                  d       d d d        y # 1 sw Y   y xY w)	Nr   r   r   r   r{   z"Field "a" exists 2 times in schemarD   rz   )r   r   rN   r,   r-   r  r   r   s    r!   !test_table_column_with_duplicatesrK  +  so    HHbhhy)hhy)hhy)+2ACE 
xA
CS
C 
C 
Cs   7BBc                 r   t        j                  t        d            t        j                  g d      t        j                  t        dd            g}| j                  |d      }t        j                  d|d   j
                        }|j                  d||d         }|j                  ||d         }| j                  ||d   gz   d	      }|j                  |      sJ |j                  |      sJ |j                  d
||d         }| j                  |d   g|z   d      }|j                  |      sJ y )Nr   r   ry   r   r{   r   r   r   )rz   r   r    r   r   )r   rz   r   r    )	r   rN   r   r   r   r	   
add_columnappend_columnrP   )r"  r<   r   	new_fieldt2t3rS   t4s           r!   test_table_add_columnrS  6  s(    	q
$%
q"D
 OODO8Ed1gll+I			!YQ	0B			YQ	0BttAwi/%9  ;H99X99X			!YQ	0BQy4/%9  ;H99XrU   c                    t        j                  t        d            t        j                  g d      t        j                  t        dd            g}| j                  |d      }t        j                  d|d   j
                        }|j                  d||d         }t        |      }|d   |d<   | j                  |d	      }|j                  |      sJ y )
Nr   r   ry   r   r{   r   r   r   )r   r   r    )	r   rN   r   r   r   r	   
set_columnr0   rP   )r"  r<   r   rO  rP  expected_datarS   s          r!   test_table_set_columnrW  T  s     	q
$%
q"D
 OODO8Ed1gll+I			!YQ	0BJMAwM!}%4  6H99XrU   c                 B   t        j                  t        d            }t        j                  g d      }t        j                  t        dd            }| j                  |||gd      }|j	                  ddg      }|j	                  d      }| j                  |gd      }|j                  |      sJ | j                  ||gd	      }|j                  |      sJ t        j                  t        d
      5  |j	                  dg       ddd       y# 1 sw Y   yxY w)z& drop one or more columns given labelsr   r   ry   r   r{   rz   r   r    r   r    Column 'd' not foundrD   r   N)	r   rN   r   r   drop_columnsrP   r,   r-   r  )	r"  rz   r   r    r   rP  rQ  exp_t2exp_t3s	            r!   test_table_drop_columnsr_  m  s     	qA
$%A
q"AOOQ1I_O=E			S#J	'B			C	 B__aS_/F==__aV;_7F== 
x'=	>C5! 
?	>	>s   9DDc                     t        j                  t        d            } t        j                  g d      }t        j                  t        dd            }t         j                  j	                  | ||gd      }|j                  ddg      }|j                  d      }t         j                  j	                  |gd      }|j                  |      sJ t         j                  j	                  ||gd	      }|j                  |      sJ t        j                  t        d
      5  |j                  dg       ddd       y# 1 sw Y   yxY w)z, verify the alias of drop_columns is workingr   r   ry   r   r{   rz   r   rY  rZ  r[  rD   r   N)
r   rN   r   r~   r   droprP   r,   r-   r  )rz   r   r    r   rP  rQ  r]  r^  s           r!   test_table_droprb    s    
qA
$%A
q"AHH  !Q/ BE	S#J	B	CBXX!!1#V!4F==XX!!1a&!<F== 
x'=	>

C5 
?	>	>s   #D??Ec                 d   t        j                  t        d            t        j                  g d      t        j                  t        dd            g}| j                  |d      }|j	                  d      }|j                          | j                  |dd  d      }|j                  |      sJ y )	Nr   r   ry   r   r{   r   r   rZ  )r   rN   r   r   remove_columnr+   rP   )r"  r<   r   rP  rS   s        r!   test_table_remove_columnre    s     	q
$%
q"D
 OODO8E			Q	BKKMtABxz:H99XrU   c                 n   t        j                  t        d            g}| j                  |dg      }|j	                  d      }|j                          t        |      t        |      k(  sJ |j                  d|j                  d      |d         }|j                          |j                  |      sJ y )Nr   rz   r{   r   )
r   rN   r   r   rd  r+   r3   rM  r   rP   )r"  r<   r   rP  rQ  s        r!   test_table_remove_column_emptyrg    s     	qD OODO.E			Q	BKKMr7c%j   	q%++a.%(	3BKKM99UrU   c                      g } ddg}d}t        j                  t        |      5  t        j                  j                  | |       d d d        y # 1 sw Y   y xY w)Nrz   r   z?Length of names [(]2[)] does not match length of arrays [(]0[)]rD   r{   )r,   r-   r.   r   r~   r   )r<   r|   messages      r!   test_empty_table_with_namesrj    sI    D#JEI 	z	1
T/ 
2	1	1s   "AAc                      t        j                  g       } | j                  g k(  sJ | j                  t         j                  j                  g g             sJ y r   )r   r   rH  rP   r~   r   rJ  s    r!   test_empty_tablerl    sF    HHRLE###<<,,R4555rU   c                    t        j                  t        d            t        j                  g d      t        j                  t        dd            g}| j                  |g d      }|j                  g dk(  sJ | j                  |g d      }|j                  g d      }|j                          |j                  g dk(  sJ |j                  |      sJ |j                  d      }|j                          |j                  g dk(  sJ |j                  |      sJ d}t        j                  t        |      5  |j                  d	       d d d        y # 1 sw Y   y xY w)
Nr   r   ry   r   r{   )ehbeeseaz.names must be a list or dict not <class 'str'>rD   z
not a list)r   rN   r   r   rH  rename_columnsr+   rP   r,   r-   ri   )r"  r<   r   rS   rP  rQ  ri  s          r!   test_table_rename_columnsrr    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                    t        j                  t        d            t        j                  g d      t        j                  t        dd            g}| j                  |g d      }|j                  g dk(  sJ | j                  |g d      }|j                  ddd	      }|j                          ||k(  sJ | j                  |g d
      }| j                  |g d      }|j                  ddd	      }|j                          ||k(  sJ t        j                  t        d      5  |j                  ddd       d d d        y # 1 sw Y   y xY w)Nr   r   ry   r   r{   )rn  r   rp  rn  rp  )rz   r    )rz   rz   r    )rn  rn  rp  r[  rD   )rz   r   )
r   rN   r   r   rH  rq  r+   r,   r-   r  )r"  r<   r   rS   t1rP  s         r!   !test_table_rename_columns_mappingru    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                     t        j                  t        j                  dt        j                               t        j                  dt        j                               g      } t        j                  t        j                  d|       g      }t        j
                  ddg|       }t        j
                  ddg|      }t        j
                  d	d
gt        j                               }t         j                  j                  |||gg d      }|j                         }|j                          t         j                  j                  t        j
                  ddgt        j                               t        j
                  ddgt        j                               t        j
                  ddg|       |gg d      }|j                  |      sJ y )Nr   r   nestr   r   r   )   g      )@)   g      -@FTr   r{   r   r   r   r   rx  rz  )za.xza.yzb.nestr    )r   r   r   r   r   rN   rW   r~   r   r   r+   rP   )ty1ty2rz   r   r    r   rP  rS   s           r!   test_table_flattenr~    sL   
))RXXc288:.XXc2::<02 3C
))RXXfc*+
,C
(H%C0A
-/c:A
%RXXZ0AHH  !Q/ BE	BKKMxx##
!Qbhhj)
#s"**,/
*j)4		%
 , $ -H 99XrU   c                     t        j                  t        j                  dg      t        j                  dg      gddg      } t        j                  t        j                  dg      t        j                  dg      gddg      }t         j                  j	                  | |g      }|j                         }|j                          |j                  |      sJ |j                  D ]  }|j                  dk(  rJ  y )Nr   rz   rY  rZ  r{   r   r   )
r   r)  rN   r~   r2  rO   r+   rP   rG  r)  )r  r  r   combinedr    s        r!   test_table_combine_chunksr  1  s    __bhhsmRXXse_=$($<1F__bhhsmRXXse_=$($<1FHH!!66"23E##%H??5!!!||q    rU   c                     t        j                  t        j                  g d      j                         t        j                  g d      j                         t        j                  g d      gg d      } t        j                  t        j                  g d      j                         t        j                  g d      j                         t        j                  g d      gg d      }t         j                  j                  | |g      }|j                  d	d
i      }|j                  d      j                  d      j                  j                  t        j                  ddg            sJ |j                  d      j                  d      j                  j                  t        j                  ddg            sJ |j                  d      j                  d      j                  j                  t        j                  g d            sJ |j                  d      j                  d      j                  j                  t        j                  ddg            sJ |j                  t        j                               }t        j                  g d      }t        j                  g d      }|j                  d      j                  d      j                  j                  |      sJ |j                  d      j                  d      j                  j                  |      sJ |j                  d      j                  d      j                  j                  |      sJ |j                  d      j                  d      j                  j                  |      sJ |j                         g dg dg ddk(  sJ |j                  j                  d	d
ik(  sJ y )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   r)  rN   r   r~   r2  r  r   r   r   rP   r   default_memory_poolr&  r   rP  )r  r  r   expected_dict_0expected_dict_1s        r!   test_table_unify_dictionariesr  >  s   __
,-??A
%&88:
*+- 5DEF __
./AAC
&'99;
*+- 5DEF
 HH!!66"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<<?  #..55oFFF<<?  #..55oFFF<<?  #..55oFFF??E6?!   
 <<  Wi$8888rU   c            
         t        t        d            g dg} t        t        dd            g dg}t        j                  j	                  | D cg c]  }t        j
                  |       c}d      }t        j                  j	                  |D cg c]  }t        j
                  |       c}d      }t        j                  ||g      }|j                          t        |      dk(  sJ t        j                  j	                  t        | |      D cg c]  \  }}t        j
                  ||z          c}}d      }|j                  |      sJ y c c}w c c}w c c}}w )Nr   )g      $g      g        rC   g      $@ry   rf   rg   rh   rB   rC   r   r{   )r0   r   r   r~   r   rN   concat_tablesr+   r3   r   rP   )r<   r=   r   rt  rP  r   r   rS   s           r!   test_concat_tablesr  c  sA   U1X D
 	U1b\E
 
		D9Dqrxx{D9$. 
 
0B			E:Eqrxx{E:$. 
 
0B r2h'F
OOv;"xx##14T51A%C1AA &(XXa!e_1A%C*4 $ 6H ==""" ::%Cs   EE"E
c                  h   t         j                  j                  t        t	        d            gd      } t         j                  j                  t        d      gd      }t        j                  t         j                  d      5  t        j                  | |gd      }d d d        y # 1 sw Y   y xY w)	Nry   rz   r{   r   z@Unable to merge: Field a has incompatible types: int64 vs stringrD   
permissivepromote_options)	r   r~   r   r0   r   r,   r-   r>  r  )rt  rP  r/  s      r!   test_concat_tables_permissiver  }  s    			tE"I/v		>B			tO45V		DB	T
V b"X|D
V 
V 
Vs   B((B1c                      t         j                  j                  t        t	        d            gd      } t        j                  t        d      5  t        j                  | | gd       d d d        y # 1 sw Y   y xY w)Nry   r  r{   z Invalid promote options: invalidrD   invalidr  )	r   r~   r   r0   r   r,   r-   r.   r  r  s    r!   !test_concat_tables_invalid_optionr    sV    
d59o.f=A	z)K	L
!Q; 
M	L	Ls   A33A<c                      t        j                  t              5  t        j                  d g       d d d        y # 1 sw Y   y xY wr   )r,   r-   AttributeErrorr   r  rX   rU   r!   test_concat_tables_none_tabler    s*    	~	&
$  
'	&	&s	   :Ac                  R   dd l } t        j                  t        j                  dt        j                               t        j                  dt        j                               g      }t        d      }| j                  ||d      }| j                  t        j                  gdz  |d      }t        j                  j                  ||d      }t        j                  j                  ||d      }|j                  j                  |j                        sJ |j                  j                  |j                  d	
      rJ t        j                  ||g      }|j                  j                  |j                  d	
      sJ |j                  j                  |j                        sJ y )Nr   rz   r   abcdefghr   r   F)r   r  TrQ  )r   r   r   r   r)   r0   r   r[   r  r~   r   rP   r  )r   r   valuesr  r  table1table2table3s           r!   1test_concat_tables_with_different_schema_metadatar    sA   YY
biik"
biik" F
 *F
,,V&1
2C
,,bffX\7
8CXX!!#fU!KFXX!!#fU!KF==...}}##FMM$#GGGvv./F==dCCC==...rU   c            
         t         j                  j                  t        j                  ddgt        j                               gdg      } t         j                  j                  t        j                  ddgt        j
                               gdg      }t        j                  t              5  t        j                  | |gd	      }d d d        j                  t         j                  j                  t        j                  g d
t        j                               t        j                  g dt        j
                               gddg            sJ t         j                  j                  t        j                  ddgt        j                               gdg      } t         j                  j                  t        j                  ddgt        j
                               gdg      }t        j                  t         j                  d      5  t        j                  t              5  t        j                  | |gd	       d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   y xY w)Nr   r   r   int64_fieldrf   rg   float_fieldT)promoter   r   NNNNrf   rg   rL  z Schema at index 1 was different:rD   F)r   r~   r   rN   rF   r   r,   warnsFutureWarningr  rP   r-   r
  rt  rP  r   s      r!   &test_concat_tables_with_promote_optionr    s   				1a&rxxz	*+m_
>B				3*2::<	01M?
DB 
m	$!!2r(D9 
% ==--
#"((*5
'bjjl;/ 	}%' ( ( (
 
			1a&rxxz	*+cU
4B				1a&rzz|	,-u
6B 
r.P	Q\\-(b"Xu5 ) 
R	Q 
%	$ )( 
R	Qs0   0II2.I&I2I#&I/	+I22I;c            
         t         j                  j                  t        j                  ddgt        j                               gdg      } t         j                  j                  t        j                  ddgt        j
                               gdg      }t        j                  | |gd	      }|j                  t         j                  j                  t        j                  g d
t        j                               t        j                  g dt        j
                               gddg            sJ t         j                  j                  t        j                  ddgt        j                               gdg      }t        j                  | |gd	      }|j                  t         j                  j                  t        j                  g dt        j                               gdg            sJ y )Nr   r   r   r  rf   rg   r  defaultr  r  r  r  rM   )	r   r~   r   rN   rF   r   r  rP   ru   )rt  rP  r   rQ  s       r!   !test_concat_tables_with_promotionr    st   				1a&rxxz	*+m_
>B				3*2::<	01M?
DB r2h	BF==--
#"((*5
'bjjl;/ 	}%' ( ( (
 
			1a&rxxz	*+m_
>B	R,0F==--
BHHJ//   rU   c                     t         j                  j                  t        j                  ddgt        j                               gdg      } t         j                  j                  t        j                  ddgt        j
                               gdg      }t        j                  t         j                  d      5  t        j                  | |gd       d d d        y # 1 sw Y   y xY w)	Nr   r   r   rL  zUnable to merge:rD   r  r  )
r   r~   r   rN   rF   r   r,   r-   r>  r  )rt  rP  s     r!   'test_concat_tables_with_promotion_errorr    s    				1a&rxxz	*+cU
4B				1a&rzz|	,-u
6B 
r((0B	C
"b9= 
D	C	Cs   <CC(c                     t        j                  t        d            t        j                  g d      t        j                  g d      t        j                  g d      g} t         j                  j	                  | t        d            }|d   j                  |d         sJ |d	   j                  |d
         sJ |d   j                  |d         sJ |d   j                  |d         sJ t        j                  t              5  |d    d d d        t        j                  t              5  |d    d d d        y # 1 sw Y   1xY w# 1 sw Y   y xY w)Nr   r   r  abbccddeefabcdr{   rq   r   r  r   r   r  r   r   r   )
r   rN   r   r~   r   tuplerP   r,   r-   rt   rE  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   	D?0E?EEc                 "   t        j                  t        d            t        j                  g d      g}| j                  |t	        d            }t        j
                  t        j                  dt        j                               t        j                  dt        j                               g      }t        j
                  t        j                  dt        j                               g      }| t         j                  u rd}nd	}d
| d}t        j                  t        |      5  |j                  |       d d d        t        j                  t        |      5  |j                  |       d d d        y # 1 sw Y   ?xY w# 1 sw Y   y xY w)Nr   r   r  r{   r2  r   rz   r   zrecord batchz1Target schema's field names are not matching the z's field names:.*rD   )r   rN   r   r   r  r   r   ru   r   r~   r,   r-   r.   r
  )r"  r<   r   target_schema1target_schema2cls_nameri  s          r!   &test_table_cast_to_incompatible_schemar    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   )E9F9FFc           
         t        j                  t        d      t        j                               t        j                  g dt        j                               t        j                  g dt        j
                               t        j                  g dt        j                               g}| j                  |t        d            }t        j                  t        d      t        j                               t        j                  g dt        j                               t        j                  g dt        j                               t        j                  g dt        j                               g}| j                  |t        d            }t        j                  t        j                  d	t        j                               t        j                  d
t        j                               t        j                  dt        j                               t        j                  dt        j                               g      }|j                  |      }|j                  |      sJ y )Nr   r   r   r  r  r  r{   r   r   r   r   r   rz   r   r    r   )r   rN   r   rF   ru   rj   r)   r   r  r   r   r   r
  rP   r"  r<   r   rV  expected_tabletarget_schemacasted_tables          r!   test_table_safe_castingr    sx    	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~...rU   c           
      |   t        j                  t        d      t        j                               t        j                  g dt        j                               t        j                  g dt        j
                               t        j                  g dt        j                               g}| j                  |t        d            }t        j                  t        d      t        j                               t        j                  g dt        j                               t        j                  g dt        j                               t        j                  g dt        j                               g}| j                  |t        d            }t        j                  t        j                  d	t        j                               t        j                  d
t        j                               t        j                  dt        j                               t        j                  dt        j                               g      }t        j                  t         j                  d      5  |j                  |       d d d        |j                  |d      }|j!                  |      sJ y # 1 sw Y   0xY w)Nr   r   r   )g?g@gffffff
@g@g      @r  r  r{   r  rz   r   r    r   	truncatedrD   F)safe)r   rN   r   rF   ru   rj   r)   r   r  r   r   r   r,   r-   r
  r
  rP   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   1J22J;c                     t        j                  ddgt         j                        } t        j                         }t        j                  | |      t        j                  | dd  |      g}t	        j
                  t        j                  j                        5  t        j                  j                  |ddg       d d d        y # 1 sw Y   y xY w)Nr   r   r   r   r  r  r{   )
r[   rN   r  r   r,   r-   r   r
  r~   r   )rN   u8r   s      r!   test_invalid_table_constructr  d  s    HHaV288,E	Bhhu2&qr(DEF	rvv**	+
VD$<8 
,	+	+s   $CCzdata, klassrA  r   r   r   r   NrA  r   r   r   rC   c                 V    || d          || d         g} t        j                  dt        j                         fdt        j                         fg      }t         j                  j                  | |      }|j                  dk(  sJ |j                  dk(  sJ |j                  |k(  sJ t        j                  dt        j                         fg      }t        j                  t              5  t         j                  j                  | |       d d d        t        j                  dt        j                         fdt        j                         fg      }t         j                  j                  | |      }t         j                  j                  |j                  d      j                        sJ |j                  dk(  sJ |j                  dk(  sJ |j                  |k(  sJ t        j                  dt        j                         fdt        j                  d      fg      }t        j                  t         t"        f      5  t         j                  j%                  | |       d d d        t        j                  t              5  t         j                  j                  | |ddg	       d d d        t        j                  t              5  t         j                  j                  | |d
di       d d d        y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   ixY w# 1 sw Y   y xY w)Nr   r   rB  r{  r(  r   r   s)r   r|   r|  r}  r   rP  )r   r   rf  r   r~   r   rq  r   r,   r-   r.   types
is_float32r   r	   r   r.  ri   r(  r<   klassr   r   s       r!   test_from_arrays_schemar  n  sf    $q'NE$q'N+DYY+h

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

-EFGFHH  f 5E88u||H5::;;;!!!>>Q<<6!!! YY+hS8I-JKLF	+Y7	8
T&1 
9 
z	"
T&8JK 
# 
z	"
T&FF;KL 
#	") 
#	" 
9	8 
#	" 
#	"s0   -"K:"L%L%L:LLLL(c                    | j                  i       }|j                  dk(  sJ |j                  dk(  sJ |j                  t	        j                  g       k(  sJ |j                         i k(  sJ t	        j                  dt	        j                         fdt	        j                         fg      }t        dg dfdg dfg      }| j                  |      }|j                  dk(  sJ |j                  dk(  sJ |j                  |k(  sJ |j                         |k(  sJ dd	i}|j                  |      }| j                  ||
      }|j                  |k(  sJ |j                  j                  |k(  sJ |j                         |k(  sJ | j                  ||      }|j                  |k(  sJ |j                  j                  |k(  sJ |j                         |k(  sJ t        j                  t              5  | j                  |||       d d d        t        j                  t              5  | j                  dg dit	        j                  dt	        j                         fg             d d d        t        j                  t         d      5  | j                  g dg ddt	        j                  dt	        j"                         fdt	        j$                         fdt	        j&                         fg             d d d        t        j                  t              5  | j                  dg dii        d d d        y # 1 sw Y   5xY w# 1 sw Y   xY w# 1 sw Y   \xY w# 1 sw Y   y xY w)Nr   rB  r{  r  r  r   r   r|  r}  r~  r(  r  rD  )r   r   r   zdoesn't contain.* c, drD   r   )r   r   r   r   rz   r    r   )r(  rq  r   r   r   r&  rf  rj   r   with_metadatarP  r,   r-   r.   ri   r)   r  rF   ru   r   )r"  r   r   r<   rP  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OOD8O4E<<6!!!<<  H,,,??$$$ OODO0E<<6!!!<<  H,,,??$$$ 
z	"Vh? 
# 
y	!y)!yy4*=)>? 	 	A 
"
 
x'@	A),99bhhj!bhhj!bhhj!  	 	
 
B 
y	!i(4 
"	!) 
#	" 
"	!
 
B	A 
"	!s2   0L8&A M	A-MM8MMMM&c                    t        d || d         fd || d         fg      } t        j                  dt        j                         fdt        j                         fg      }t        j
                  j                  |       }|j                  dk(  sJ |j                  dk(  sJ |j                  |k(  sJ t        j
                  j                  | |      }|j                  dk(  sJ |j                  dk(  sJ |j                  |k(  sJ t        j                  dt        j                         fdt        j                         fg      }t        j
                  j                  | |      }t        j                  j                  |j                  d      j                        sJ |j                  dk(  sJ |j                  dk(  sJ |j                  |k(  sJ t        j                  dt        j                         fdt        j                  d      fg      }t        j                   t"        t$        f      5  t        j
                  j                  | |       d d d        y # 1 sw Y   y xY w)	NrB  r   r{  r   r   r   r(  r  )r   r   r   rf  rj   r~   r(  rq  r   r   r  r  r   r	   r   r,   r-   r.  ri   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  f 5E!!!>>Q<<6!!! YY+h

-EFGFHH  f 5E88u||H5::;;;!!!>>Q<<6!!! YY+hS8I-JKLF	+Y7	8
T&1 
9	8	8s   5"I  I)c                    t        d || d         fd || d         fg      } t        j                  dt        j                         fdt        j                         fdt        j
                         fg      }t        j                  t        d      5  t        j                  j                  | |       d d d        t        j                  dt        j                         fg      }t        j                  j                  | |      }|j                  dk(  sJ |j                  |k(  sJ |j                  dgk(  sJ y # 1 sw Y   xY w)NrB  r   r{  r   rz  rD   r(  )r   r   r   rf  rj   rF   r,   r-   r  r~   r(  rq  rH  r  s       r!   test_table_from_pydict_schemar    s    tAw08U47^2LMND YY+h

-E,. /F	xv	.
T&1 
/ YY+,-FHH  f 5E!!!<<6!!!&))) 
/	.s   "D==Ec           	      x   | j                  g       }|j                  dk(  sJ |j                  dk(  sJ |j                  t	        j                  g       k(  sJ |j                         g k(  sJ t	        j                  dt	        j                         fdt	        j                         fg      }ddddddd	d dg}| j                  |      }|j                  d
k(  sJ |j                  dk(  sJ |j                  |k(  sJ |j                         |k(  sJ ddi}|j                  |      }| j                  ||      }|j                  |k(  sJ |j                  j                  |k(  sJ |j                         |k(  sJ | j                  ||      }|j                  |k(  sJ |j                  j                  |k(  sJ |j                         |k(  sJ t        j                  t              5  | j                  |||       d d d        t        j                  t              5  | j                  ddiddidd
igt	        j                  dt	        j                         fg             d d d        t	        j                  dt	        j                         fdt	        j                          fdt	        j"                         fg      }| j                  dddd
dddddg|      }dd d dd
d d ddd d dg}|j                  |k(  sJ |j                         |k(  sJ t        j                  t              5  | j                  ddidd
iddigi        d d d        dddddidd	ig}dddd ddd	d dg}| j                  |      }|j                  d
k(  sJ |j                  dk(  sJ |j                         |k(  sJ ddiddddd ig}ddiddidd ig}| j                  |      }|j                  dk(  sJ |j                  dk(  sJ |j                         |k(  sJ y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w)Nr   rB  r{  rA  r   )rB  r{  r   r   r   r   r   r|  r}  r~  r(  r  rD  r   rz   r    r   r   r   )rz   r    r   )from_pylistrq  r   r   r   r*   rf  rj   r  rP  r,   r-   r.   ri   r)   rF   ru   r   )r"  r   r   r<   rP  r=   s         r!   test_table_from_pylistr  	  sj    OOBE!!!>>Q<<299R=(((??"""YY+h

-EFGF 3'a(d+-D OOD!E!!!>>Q<<6!!!??$$$ H!!(+FOOD8O4E<<6!!!<<  H,,,??$$$ OODO0E<<6!!!<<  H,,,??$$$ 
z	"Vh? 
# 
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%   )PAP#/P0P #P-0P9c                  V   dd l } | j                  t        dg dfdg dfg            }t        j                  dt        j
                         fdt        j                         fg      }t        j                  j                  ||      }t        j                  j                  |j                  d      j                        sJ |j                  j                         |k(  sJ t        j                  dt        j
                         fdt        j                  d      fg      }t        j                   t"        t$        f      5  t        j                  j                  ||       d d d        t        j                  dt        j
                         fdt        j&                         fdt        j(                         fg      }t        j                   t*        d	      5  t        j                  j                  ||       d d d        t        j                  dt        j
                         fg      }t        j                  j                  ||      }|j,                  d
k(  sJ |j                  j                         |k(  sJ |j.                  dgk(  sJ y # 1 sw Y   1xY w# 1 sw Y   xY w)Nr   rB  r  r{  r  r(  r  rz  rD   r   )r   r   r   r   r   rf  r   r~   r   r  r  r   r	   remove_metadatar   r,   r-   r.  ri   rj   rF   r  rq  rH  )r   r   r   r   s       r!   test_table_from_pandas_schemar  l	  s
    	kF,>#?$,n#=#? @ 
AB YY+h

-EFGFHH  F 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  F 3E!!!<<'')V333&))) 
9	8 
/	.s   "J"JJJ(c                     dd l } t        dg dfdg dfg      }t        j                  g dd      t        j                  g dd      d	}t        j                  dt        j
                         fdt        j                         fg      }| j                  |      }t        j                  |      }t        j                  j                  |      }|j                  |      sJ t        j                  ||
      }t        j                  j                  ||
      }|j                  |      sJ t        j                  |      }t        j                  j                  |      }|j                  |      sJ t        j                  ||
      }t        j                  j                  ||
      }|j                  |      sJ y )Nr   r   r   rz   r   r)   r   ru   )r   rz   r(  )r   r   r   rN   r   ru   r)   r   r   r~   r   rP   r(  )r   r   
d_explicitr   r   r  r  s          r!   test_table_factory_functionr  	  sZ    	c?+c9-=>?Axxh?xx	8:J YYbhhj)C+=>?F	aBXXb\FXX!!"%F==   XXb(FXX!!"V!4F==   XXj!FXX!!*-F==    XXa'FXX!!!F!3F==   rU   c                     t        j                  t              5  t        j                  dg didg       d d d        t        j
                  dt        j                         fg      } t        j                  dt        j                  g dt        j                               i|       }|j                  d      j                  t        j                         k(  sJ t        j                  g dd      g}dg}t        j                  ||      }|j                  |k(  sJ t        j
                  dt        j                         fg      } t        j                  ||       }|j                  |k(  sJ y # 1 sw Y   =xY w)Nrz   r   r{   r   rF   )r,   r-   r.   r   r   r   ru   rN   rF   r   r	   rH  )r   r   r<   r|   s       r!    test_table_factory_function_argsr  	  s   	z	"
#y!#/ 
# YYbhhj)*+FHHc288IBHHJ?@&IE<<!!RXXZ/// HHYW-.DEEHHT5!E&&&YYbhhj)*+FHHT6"E&&& 
#	"s   E22E<c                  |   dd l } t        j                  t              5  t	        j
                  | j                  dg di      dg       d d d        t        j                  t              5  t	        j
                  | j                  dg di      ddi       d d d        t	        j                  dt	        j                         fg      }t	        j
                  | j                  dg di      |      }|j                  d      j                  t	        j                         k(  sJ y # 1 sw Y   xY w# 1 sw Y   xY w)Nr   rz   r   r{   r|  r}  r~  )r   r,   r-   r.   r   r   r   r   ru   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&+-D2&D/2D;c                     t        j                  t        d      5  t        j                  d       d d d        t        j                  t        d      5  t        j
                  d       d d d        y # 1 sw Y   CxY w# 1 sw Y   y xY w)Nz!Expected pandas DataFrame, pythonrD   zinvalid inputzExpected pandas DataFrame)r,   r-   ri   r   r   r)  rX   rU   r!   $test_factory_functions_invalid_inputr  	  s]    	y(K	L
! 
M 
y(C	D
( 
E	D 
M	L 
E	Ds   A4B 4A= B	c                     t        j                  t        j                  dt        j                         ddi      t        j                  dt        j                               gddi      } t        j
                  t        j                  g dd	
      t        j                  g dd
      g|       }t        |      dk(  sJ |j                  d      dk(  sJ |j                  d      dk(  sJ |j                  d      dk(  sJ y )NrD  rM  rN  r~  rE  r|  r}  r_  r   r   ry   r  r  r  ru   r(  zJpyarrow.Table
c0: int16
c1: int32
----
c0: [[1,2,3,4]]
c1: [[10,20,30,40]]Tshow_metadatazhpyarrow.Table
c0: int16
  -- field metadata --
  key: 'value'
c1: int32
-- schema metadata --
foo: 'bar'r   preview_colsr   z:pyarrow.Table
c0: int16
c1: int32
----
c0: [[1,2,3,4]]
...)	r   r   r   r   ru   r   rN   rm   	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=( -   rU   c                     t        j                  t        j                  dt        j                         ddi      t        j                  dt        j                               gddi      } t        j
                  t        j                  g dd	z  d
      t        j                  g dd	z  d      g|       }t        |      dk(  sJ y )NrD  rM  rN  r~  rE  r|  r}  r_  ry   r   r   r  ru   r(  zppyarrow.Table
c0: int16
c1: int32
----
c0: [[1,2,3,4,1,...,4,1,2,3,4]]
c1: [[10,20,30,40,10,...,40,10,20,30,40]])r   r   r   r   ru   r   rN   rm   r  s     r!   "test_table_repr_to_string_ellipsisr  
  s    YYrxxz+0'*:<rxxz24 "( 02F
 ((BHH\"_7;HH-b0w?A "C s8 - - - -rU   c                     t        j                  t        j                  dt        j                         ddi      t        j                  dt        j                               gddi      } t        j
                  t        j                  g dd	
      t        j                  g dd
      g|       }t        |      dk(  sJ |j                  d      dk(  sJ |j                  d      dk(  sJ |j                  d      dk(  sJ y )NrD  rM  rN  r~  rE  r|  r}  r_  r   r   r  ru   r(  zLpyarrow.RecordBatch
c0: int16
c1: int32
----
c0: [1,2,3,4]
c1: [10,20,30,40]Tr  znpyarrow.RecordBatch
c0: int16
  -- field metadata --
  key: 'value'
c1: int32
-- schema metadata --
foo: 'bar'r   r  r   z>pyarrow.RecordBatch
c0: int16
c1: int32
----
c0: [1,2,3,4]
...)	r   r   r   r   ru   r)  rN   rm   r  r   r   s     r!    test_record_batch_repr_to_stringr  
  s   YYrxxz+0'*:<rxxz24 "( 02F
 OORXXlAXX&6WEG#)+E u:     ???. 3    ???* /    ???* /   rU   c                     t        j                  t        j                  dt        j                         ddi      t        j                  dt        j                               gddi      } t        j
                  t        j                  g dd	z  d
      t        j                  g dd	z  d      g|       }t        |      dk(  sJ y )NrD  rM  rN  r~  rE  r|  r}  r_  ry   r   r   r  ru   r(  zpyarrow.RecordBatch
c0: int16
c1: int32
----
c0: [1,2,3,4,1,2,3,4,1,2,...,3,4,1,2,3,4,1,2,3,4]
c1: [10,20,30,40,10,20,30,40,10,20,...,30,40,10,20,30,40,10,20,30,40])r   r   r   r   ru   r)  rN   rm   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rU   c                     d} d}t        |g df| g dfg      }t        j                  | t        j                         f|t        j                         fg      }t        j
                  ||      }|d   j                  d      j                  t        j                  g dd            sJ |d	   j                  d      j                  t        j                  g dd
            sJ y )Nu   ääähu   öööfr   r   r(  r   ru   r   r   r)   )	r   r   r   ru   r)   r   r   rP   rN   )col_acol_br   r   r   s        r!   "test_table_function_unicode_schemar  Q
  s    EE 	e_-y/ABCAYY
+eRYY[-ABCFXXa'F!9??1$$RXXig%FGGG!9??1$$RXXoH%MNNNrU   c                     t        j                  t        j                  g d      t        j                  g d      gddg      } | j                  t        j                  ddg            j	                  | j                  dd            sJ y )NrW  rX  rY  rZ  r   r   )r   r   rN   r[  rP   r}   rJ  s    r!   %test_table_take_vanilla_functionalityr  _
  sm    HH	$	%	+	,	.	tE
 ::bhh1v&'..u{{1a/@AAArU   c                     t        j                  t        j                  g d      t        j                  g d      gddg      } t        j                  t        j                  dd g      t        j                  dd g      gddg      }| j                  t        j                  dd g            j	                  |      sJ y )NrW  rX  rY  rZ  r   rz   r   r   r   rN   r[  rP   )r   result_with_null_indexs     r!   test_table_take_null_indexr  h
  s    HH	$	%	+	,	.	tE
  XX	1d)		3+		 	t
 ::bhh4y)*112HIIIrU   c                     t        j                  t        j                  g d      t        j                  g d      gddg      } t        j                  t        j                  dd g      t        j                  ddg      gddg      }| j                  t        j                  dd	g            j	                  |      sJ y )
NrW  rX  rY  rZ  r   r   r   r   r   r  )r   result_non_consecutives     r!   test_table_take_non_consecutiver  v
  s    HH	$	%	+	,	.	tE
  XX	1d)		3*			t
 ::bhh1v&'../EFFFrU   c                     t        j                  g d      } t        j                  g d      }t        j                  ddgddgddgd d	d
gg      }t        j                  | ||gg d      }|j                  dg      }t        j                  | gdg      }|j	                  |      sJ |j                  ddg      }t        j                  ||gddg      }|j	                  |      sJ |j                  dg      }t        j                  | gdg      }|j	                  |      sJ |j                  ddg      }t        j                  ||gddg      }|j	                  |      sJ |j                  ddi      }|j                  ddg      }d|j                  j                  v sJ t        j                  t        d      5  |j                  dg       d d d        t        j                  t        d      5  |j                  dg       d d d        |j                  ddg      }t        j                  ||gddg      }|j	                  |      sJ t        j                  | ||gg d      }t        j                  t        d      5  |j                  dg       d d d        |j                  dg      }t        j                  |gdg      }|j	                  |      sJ y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   `xY wr  )r   rN   r   r  rP   r  r   rP  r,   r-   r  rt   )r  r  r  r   r   rS   r  s          r!   test_table_selectr  
  s   	$	%B	+	,B	Aq6Aq6Aq64!R9	:BHHb"b\#56E \\4&!Fxxtf%H=="""\\4,'FxxR4,/H==""" \\1#Fxxtf%H=="""\\1a&!FxxR4,/H==""" **C=9F]]D$<(F6==))))) 
x'B	CdV 
D 
z)>	?aS 
@ \\4,'FxxR4,/H==""" HHb"b\#56E	x'B	CdV 
D \\4&!Fxxtf%H=="""% 
D	C 
@	? 
D	Cr  c            	      	   d } t        j                  t        j                  g d      t        j                  g d      t        j                  g d      t        j                  g d      gg d      }|j                  d      j	                  d	g      } | |j                               g d
g ddk(  sJ |j                  d      j	                  d	dg      } | |j                               g d
g dg ddk(  sJ |j                  d      j	                  dg      } | |j                               g d
g ddk(  sJ |j                  d      j	                  ddg      } | |j                               g d
g dg ddk(  sJ |j                  d      j	                  ddg      } | |j                               g d
g dg ddk(  sJ |j                  ddg      j	                  dg      } | |j                               g dg dg ddk(  sJ |j                  d      j	                  dddg dfdg      } | |j                               g d
g dg dg dg dg ddk(  sJ t        j                  t        j                  g d       t        j                  g d!      gdd"g      }|j                  dg      j	                  d"d#t        j                  d$%      fg      }|j                         d&gd'gd(k(  sJ |j                  dg      j	                  d"d#t        j                  d)%      fg      }|j                         d&gd*gd(k(  sJ |j                  dg      j	                  d"d#t        j                  d+%      fg      }|j                         d&gd,gd(k(  sJ |j                  dg      j	                  g dfd"d#t        j                  d+%      fg      }|j                         d&gd'gd,gd-k(  sJ |j                  dg      j	                  g dfg      }|j                         d&gd'gd.k(  sJ t        j                  g d/t        d0      d1      }t         j                  j                  |j                  d'2            }|j                  d      j	                  dg      } | |j                               d&d3gd0d4gdk(  sJ y )5Nc                 &   d| v rt        t        | d   | d               }n| d   }t        |      }dt        | d         i}| D ]K  }|dk(  r	t        t        || |               }|D ]&  }|j	                  |g       j                  ||          ( M |S )Nkeys2keys)r  r   sortedr'  
setdefaultr   )r   r  sorted_keyssorted_dentryr  ks          r!   sorted_by_keysz+test_table_group_by.<locals>.sorted_by_keys
  s    a<QvY'
34DV9DTlF1V9-.E#dAeH-.F ##E2.55fQi@ !	  rU   rz   rz   r   r   r    )Xr  YZr  r  )ry   r  r  r  r  )r  r  r  	bigvaluesr{   r  )r  hash_sumr   )r   r   r   )r  
values_sum)r  
hash_count)r   r   r   )r  r  values_count)r  r4   )r  max)r  r4   )r   r   r   )r  r  r  )r  
values_maxbigvalues_sum)r  r"  )r  r  r  )r  r  bigvalues_maxr  )rz   r   r   r    )r  r  r  r  )r   r   r   r   )r  r  r  	count_all)r  r#  r$  r%  r&  r  )rz   rz   rz   )r   NNr  countr1   )moderz   r   )r  r!  	only_nullr   
only_validr   )r  r&  r!  )r  r&  )rz   r   rz   r   rz   r   r   r  r  r  r   r   )r   r   rN   group_by	aggregater&  pcCountOptionsr   r~   r2  r  )r  r   rtable_with_nullstable_with_chunkss        r!   test_table_group_byr3  
  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-   rU   c                     t        j                  g dddgdz  d      } t        j                  g dddgdz  d      }t        j                  | |g      }t        j                  t
              5  |j                  d      j                  dg       d d d        |j                  dd      j                  dg      }t        j                  ddgd	dgd
      }|j                  |      sJ y # 1 sw Y   \xY w)Nr_  rz   r   r   r   )rz   firstF)use_threadsr   )r   a_first)	r   r   r  r,   r-   r.  r,  r-  rP   )r  r  r   r   rS   s        r!   test_table_group_by_firstr8  T  s     XXLSzA~>?FXXLSzA~>?Fff-.E	*	+s%%~&67 
, ^^CU^3==~>NOFxxsCjaV<=H==""" 
,	+s   /"C,,C5c                  j   t         j                  j                  dg di      } | j                         }| j                  |j                  k(  sJ | |j                         k(  sJ | j                  d      }|j                         j                  dk(  sJ |j                         j                  dk(  sJ y )Nr   r   r   r  r   )r   r~   r(  	to_readerr   read_allread_next_batchr   )r   r<  s     r!   test_table_to_recordbatchreaderr=  c  s    HH  #y!12E__F<<6==(((FOO%%%%__1_-F!!#,,111!!#,,111rU   c                     t        j                  g dg dd      } t        j                  g dg dd      }| j                  |dd      }|j                         t        j                  g dg dg d	d
      k(  sJ | j                  |ddd      }|j                         j	                  d      t        j                  g dg dg dd
      k(  sJ y )Nr   r   r   rz   r   rL  colAcol2rr   r   r   r  r3  r2  )colBcol3rB  rF  r2  r3  NrB  rC  rG  
full outer	join_typer   r   r   rr   rz   r   rL  Nr2  r3  Nr  r   r   joinrO   sort_byr  s      r!   test_table_joinrS  n  s    	 
B
 
 
B
 WWR(F  "bhh 0 '    WWR<W@F  "**62bhh%%@ 7   rU   c                     t        j                  g dg dd      } t        j                  g dg dd      }| j                  |d      }|j                         t        j                  g dg dg dd	      k(  sJ | j                  |dd
d      }|j                         j	                  d      t        j                  g dg dg dd	      k(  sJ y )Nr?  r@  rA  rD  rE  )rB  rG  rB  rH  rI  rJ  _r)rL  right_suffixrM  rN  rO  rP  r  s      r!   test_table_join_unique_keyrW    s    	 
B
 
 
B
 WWR F  "bhh 0 '    WWR<dWKF  "**62bhh%%@ 7   rU   c            	      <   t        j                  g dg dg dd      } t        j                  g dg dg dd      }| j                  |dd	
      }|j                         j	                  d      t        j                  g dg dg dg dg dgg d      k(  sJ y )Nr?  ry   r  r  r@  rB  rF  colValsrD  rr   r  ry   rE  rB  rJ  rK  rM  )ry   r  r  NrN  )ry   r  Nrr   rO  )rB  rF  r[  rF  r[  r{   rP  r  s      r!   test_table_join_collisionsr]    s    	" 
B 
" 
B WWR<W8F  "**62bhh@ <7= = = =rU   c                     | j                  g dg dg dd      }|j                  t        j                  d      dk        }|| j                  ddgd	d
gddgd      k(  sJ y )N)r   r   r   r   )ry   r  Nr  )rz   r   r    rL  rZ  rF  r  r   r   ry   r  rz   r   )r(  filterr.  r   )r"  rt  r   s      r!   test_table_filter_expressionr`    su     
"' 
B YYrxx'",-FS__AR:&    rU   c                  `   t        j                  g dg dg dd      } t        j                  g dg dg dd      }t        j                  | |g      }|j                  t	        j
                  d      d	k        }|j                         t        j                  g d
g dg dd      k(  sJ y )Nr?  rY  r@  rZ  rD  r\  rE  rB  ry   )r   r   r   r   r   )ry   r  r  r  ry   )rz   r   rL  r3  r2  )r   r   r  r_  r.  r   rO   )rt  rP  rQ  r   s       r!   #test_table_filter_expression_chunksrb    s    	" 
B
 
" 
B 
		2r(	#BYYrxx'",-F  "bhh$,0 '   rU   c                     t        j                  g dg dd      } t        j                  g dg dg dg dg dg dd      }| j                  |dd      }|j                         t        j                  g dg dg d	g d	g d	g d	g d	d
      k(  sJ | j                  |ddd      }|j                         j	                  d      t        j                  g dg dg dg dg dg dg dd
      k(  sJ y )Nr?  r@  rA  rD  rE  )rF  rG  col4col5col6col7rB  rF  rH  )rB  rC  rG  rd  re  rf  rg  rJ  rK  rM  rN  rO  rP  r  s      r!   test_table_join_many_columnsrh    s    	 
B
 
 
B WWR(F  "bhh     0 '    WWR<W@F  "**62bhh%%%%%%@ 7   rU   c                  4   t         j                  j                  g dg dd      } t         j                  j                  g dg dg dd      }| j                  |dd	d
dd      }|j	                         t        j
                  g dg dg dd      k(  sJ y )N)r   r   r   r   r   )rz   r   rz   r   rL  rA  )r   r   r  )rz   r   g)rf   rh   rC   )rF  rG  colCrB  rC  r   rF  rG  onby	toleranceright_onright_by)rf   NNNN)rB  rC  rk  )r   r~   r(  	join_asofrO   r   )rt  rP  r0  s      r!   test_table_join_asofrs    s    			) 
B
 
		 
B 	
v&A& 	 	A ),+ "   rU   c                      t        j                  g dg dg dd      } t        j                  g dg dg dg dd	      }| j                  |d
ddgd      }|j                  d      t        j                  g dg dg dg dd      k(  sJ y )Nr?  rY  r   rB  rF  rm  r\  rE  rD  r   r   r   )rF  r[  rB  rm  rm  rB  rF  r   rm  rn  ro  )Nr3  NrB  rF  rm  r[  )r   r   rr  rR  r  s      r!    test_table_join_asof_multiple_byry  #  s    	 
B 
"	 
B \\
t(A  F >>&!RXX$	/ &   rU   c                      t        j                  dg di      } t        j                  g dg dd      }| j                  |dg d      }|t        j                  g dg dd	      k(  sJ y )
Nrm  r   rE  rv  )r[  rm  r   rw  )r  r  r3  )rm  r[  )r   r   rr  r  s      r!   test_table_join_asof_empty_byr{  =  s}    	i 
B 
" 
B
 \\
ta  F RXX"    rU   c            
      ,   t        j                  g dg dg dg dd      } t        j                  g dg dg dg d	g d
d      }d}t        j                  t        |      5  | j                  |dddgddddg       d d d        y # 1 sw Y   y xY w)Nr?  rY  r   r@  rx  r\  rE  r  r  r  rD  rv  )rF  r[  colUniqrB  rm  zXColumns {'colVals'} present in both tables. AsofJoin does not support column collisions.rD   rm  rB  rF  r   rl  )r   r   r,   r-   r.   rr  rt  rP  rJ   s      r!   test_table_join_asof_collisionsr  Q  s    	"	 
B 
"" 
B	7  
z	-
4VV,VV$4 	 	
 
.	-	-s   %B

Bc            	      F   t        j                  g dg dg dd      } t        j                  g dg dg dg dd	      }d
}t        j                  t         j                  j
                  |      5  | j                  |dddgdddg       d d d        y # 1 sw Y   y xY w)Nr?  rY  r   ru  rE  r}  rD  rv  r[  r~  rB  rm  z)inconsistent size of by-key across inputsrD   rm  rB  rF  r   rl  r   r   r,   r-   r   r
  rr  r  s      r!   'test_table_join_asof_by_length_mismatchr  m  s    	 
B 
""	 
B 6C	rvv**#	6
4VV,VH 	 	
 
7	6	6s   3BB c            	      >   t        j                  g dg dd      } t        j                  g dg dg dg dd      }d	}t        j                  t         j                  j
                  |
      5  | j                  |ddgdddg       d d d        y # 1 sw Y   y xY w)Nr?  r   rB  rm  rE  r}  )g     X@rg   rf   rv  r  zCExpected by-key type int64 but got double for field colA in input 1rD   rm  rB  r   rl  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            	      >   t        j                  g dg dd      } t        j                  g dg dg dg dd      }d	}t        j                  t         j                  j
                  |
      5  | j                  |ddgdddg       d d d        y # 1 sw Y   y xY w)Nr?  r   r  rE  r}  rD  )rg   rh   rB   r  zAExpected on-key type int64 but got double for field on in input 1rD   rm  rB  r   rl  r  r  s      r!   %test_table_join_asof_on_type_mismatchr    s    	 
B
 
""	 
B NC	rvv**#	6
4VHVH 	 	
 
7	6	6r  c                    | j                  d dgd dgd      }t        j                  t        j                  ddd      t        j                  ddd	      g      }t	        j
                  t              5  |j                  |       d d d        | j                  d dgd	dgd      }|j                  |      j                  |k(  sJ y # 1 sw Y   BxY w)
Nr   Tr   rz   rF   r5  r   boolF)r(  r   r   r   r,   r-   r.   r
  )r"  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   5CCc                    | j                  t        j                  g d      t        j                  g d      gddg      }|j                  d      j	                         g dg ddk(  sJ |j                  d	g      j	                         g d
g ddk(  sJ | j                  t        j                  g dt        j
                               t        j                  g d      gddg      }|j                  dg      }|j	                         }|d   g dk(  sJ |d   g dk(  sJ |j                  dg      }|j	                         }|d   g dk(  sJ |d   g dk(  sJ y )N)r   r   r   r   r   )r   rz   r   rz   r    r  r  r{   r  r  r+  )r  
descending)r    r   r   rz   rz   )r   r   r   r   r   )r   r   r   #   r   )r   carr   foobarrz   r   )rz   r  )r  r   r   r   )r  r  r   r   )rz   	ascending)r   r   rN   rR  r&  rF   )r"  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BrU   constructorc                 4    | g dg dgddg      }t        j                  |      }t        j                  ddgdd	gd
dggd      }t         j                  j	                  ||       t        j                  |d      }t         j                  j	                  ||       |j
                  dk(  sJ |j                  g       }t        j                  |      }t        j                  d      }t         j                  j	                  ||       |j
                  dk(  sJ t        j                  |d      }t         j                  j	                  ||       |j
                  dk(  sJ |j                  dd      }t        j                  |      }t        j                  d      }t         j                  j	                  ||       |j
                  dk(  sJ t        j                  |d      }t         j                  j	                  ||       |j
                  dk(  sJ y )Nr   rA   rz   r   r{   r   r   r   r   r   r   rj   r   ru   )r   r   r   r   )	r[   r\   rN   r   assert_allcloser   r  emptyr}   )r  r   r   rS   r  r  s         r!   test_numpy_asarrayr    s    O4S#JGEZZFxx!Q!Q!Q0	BHJJvx0ZZW-FJJvx0<<7""" \\"FZZFxxHJJvx0<<9$$$ZZg.FJJvx0<<7""" [[AFZZFxxHJJvx0<<9$$$ZZg.FJJvx0<<7"""rU   c                     | g dg dgddg      }t        j                  ddgdd	gd
dggd      }t        t         j                        t        d      k  r8t        j                  |d      }t         j                  j                  ||       y t        j                  t        d      5  t        j                  |d       d d d        y # 1 sw Y   y xY w)Nr   rA   rz   r   r{   r   r   r   r   r   r   rj   r   z
2.0.0.dev0F)copyzUnable to avoid a copyrD   )	r[   rN   r   __version__r   assert_array_equalr,   r-   r.   )r  r   rS   r   s       r!   test_numpy_array_protocolr    s     O4S#JGExx!Q!Q!Q0	BHr~~!66%e,


%%fh7 ]]:-EFHHU' GFFs   +CCc                  "   d} t         j                  j                  t        |       t        |       D cg c]  }t        d      D cg c]  }| c} c}}d      }t         j                  j                  t        |       t        |       D cg c]  }| c}d      }t	        j
                  t         j                  j                        5 }|j                  |dd       d d d        d}|t        j                        v sJ t	        j
                  t         j                  j                        5 }|j                  |dd       d d d        |t        |j                        v sJ y c c}w c c}}w c c}w # 1 sw Y   xY w# 1 sw Y   ?xY w)	Nr  r   )rm  array_column)rm  rN  rm  innerrK  zOData type list<item: int64> is not supported in join non-key field array_column)r   r~   r(  r   r,   r-   r   r
  rQ  rm   rN  )	NUM_ITEMSr   zrt  rP  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   E.	E)E.	E4
E92F)E.9FFc                  N    t        j                  d      } | j                  d      S )Nzpyarrow.cudar   )r,   importorskipContext)cudas    r!   cuda_contextr  4  s     ~.D<<?rU   c                      t        j                  t        j                  dt        j                               t        j                  dt        j                               g      S )NrD  rE  )r   r   r   ru   rX   rU   r!   r   r   :  s8    99bhhtRXXZ0"((42LMNNrU   c                     t        j                  g d| j                  d      j                        t        j                  g d| j                  d      j                        gS )Nr  r   rC  r   )r   rN   r   r	   r(  s    r!   
cpu_arraysr  ?  sG    HH_fll1o&:&:;HH+V\\!_-A-ABD DrU   c                 ^    |D cg c]  }|j                  | j                         c}S c c}w r   copy_tomemory_manager)r  r  rI   s      r!   cuda_arraysr  E  s)    @JK
CKK334
KKKs   "*c                 P    t        j                  |       }|j                  du sJ |S )NTr   r(   is_cpu)r  r(   s     r!   cpu_chunked_arrayr  J  s,    $$Z0M4'''rU   c                 P    t        j                  |       }|j                  du sJ |S NFr  )r  r(   s     r!   cuda_chunked_arrayr  Q  s,    $$[1M5(((rU   c                 V    t        j                  | |z         }|j                  du sJ |S r  r  )r  r  r(   s      r!   cpu_and_cuda_chunked_arrayr  X  s1    $$Z+%=>M5(((rU   c                 0    t        j                  | |      S Nr(  )r   r)  )r  r   s     r!   cpu_recordbatchr  _  s    ??:f55rU   c                 8    |j                  | j                        S r   r  )r  r  s     r!   cuda_recordbatchr  d  s    ""<#>#>??rU   c                 4    t        j                  ||g|       S r  r   r   )r   r  s     r!   	cpu_tabler  i  s    88&(9:6JJrU   c                 4    t        j                  ||g|       S r  r  )r   r  s     r!   
cuda_tabler  n  s    88');<VLLrU   c                 4    t        j                  ||g|       S r  r  )r   r  r  s      r!   cpu_and_cuda_tabler  s  s    88&(:;FKKrU   c                    |j                   |j                   k(  sJ |j                         |j                         k(  sJ t        |      t        |      k(  sJ t        |      t        |      v sJ |j	                          t        j                  t              5  |j	                  d       d d d        t        j                  t              5  |j                   d d d        t        j                  t              5  |j                   d d d        t        j                  t              5  |j                          d d d        t        j                  t              5  |d    d d d        t        j                  t              5  |j                          d d d        t        j                  t              5  |j                          d d d        t        j                  t              5  |j                          d d d        t        j                  t              5  |j                  d       d d d        t        j                  t              5  ||k(   d d d        t        j                  t              5  |j                          d d d        t        j                  t              5  |j!                          d d d        t        j                  t              5  |j#                          d d d        t        j                  t              5  |j%                          d d d        t        j                  t              5  |j'                          d d d        t        j                  t              5  |j)                          d d d        t        j                  t              5  |j+                          d d d        t        j                  t              5  |j-                          d d d        t        j                  t              5  |j/                          d d d        t        j                  t              5  |j1                  g d       d d d        t        j                  t              5  |j3                  d       d d d        |j5                  dd       t        j                  t              5  |j7                  dg       d d d        t        j                  t              5  |j9                          d d d        t        j                  t              5  |j;                          d d d        t        j                  t              5  |j=                          d d d        |j>                  |j>                  k(  sJ tA        |jB                        tA        |jB                        k(  sJ |jE                  d      }|jF                  tH        jJ                  jL                  k(  sJ t        j                  t              5  |jO                          d d d        t        j                  t              5  |jQ                          d d d        t        j                  t              5  |jS                          d d d        y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   gxY w# 1 sw Y   MxY w# 1 sw Y   (xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   yxY w# 1 sw Y   TxY w# 1 sw Y   /xY w# 1 sw Y   
xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   vxY w# 1 sw Y   QxY w# 1 sw Y   )xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   [xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   y xY w)NTfullr   TFTFTr   r   r   )*r	   lengthrm   reprr+   r,   r-   r.  
null_countr9   r&   is_nullis_nanis_valid	fill_nullr   r]   	__array__r
  r   r   rO   uniquevalue_countsr_  r   r}   r[  	drop_nullsortr   r)  r3   r/   r   device_typer   DeviceAllocationTypeCUDAr*   r  
__reduce__)r  r  r  r  r   s        r!   test_chunked_array_non_cpur  x  s    ""&7&<&<<<< $$&*;*B*B*DDDD !"c*;&<<<< !"d+=&>>>> !	*	+###. 
, 
*	+%% 
, 
*	+!! 
, 
*	+002 
, 
*	+1 
, 
*	+""$ 
, 
*	+!!# 
, 
*	+##% 
, 
*	+$$Q' 
, 
*	+00 
, 
*	+$$& 
, 
*	+##% 
, 
*	+$$& 
, 
*	+! 
, 
*	+,,. 
, 
*	+""$ 
, 
*	+))+ 
, 
*	+!!# 
, 
*	+'') 
, 
*	+!!"BC 
, 
*	+  # 
, Q" 
*	+$ 
, 
*	+$$& 
, 
*	+! 
, 
*	+--/ 
, ((,=,H,HHHH !(()S1B1I1I-JJJJ $$Q'E 7 7 < <<<< 
*	+$$& 
, 
*	+--/ 
, 
*	+%%' 
,	+s 
,	+ 
,	+ 
,	+ 
,	+ 
,	+ 
,	+ 
,	+ 
,	+ 
,	+ 
,	+ 
,	+ 
,	+ 
,	+ 
,	+ 
,	+ 
,	+ 
,	+ 
,	+ 
,	+ 
,	+ 
,	+ 
,	+ 
,	+ 
,	+ 
,	+ 
,	+ 
,	+ 
,	+sP  Y8Z;Z)ZZ,Z94[&[[ [-2[:$\\\!:\.,\;]]]"4]/)]<.^	"^^#^0:^=,_
_8ZZZZ),Z69[[[ [*-[7:\\\!\+.\8;]]]"],/]9<^	^^ #^-0^:=_
__ c                    | j                          | j                  t        j                  j                  k(  sJ | j
                  du sJ | j                  t        |j                        k(  sJ | j                  |j                  k(  sJ t        |       t        |       v sJ | j                  D ]+  }|j                  t        j                  j                  k(  r+J  | j                  |k(  sJ y r  )r+   r  r   r  r  r  rq  r3   r|   rH  rm   r  rG  r   )r   expected_schemar    s      r!   verify_cuda_recordbatchr    s    	NN 7 7 < <<<<<<5   O$9$9 ::::!6!6666u:e$$$]]}} 7 7 < <<<< <<?***rU   c                 Z   t        ||       |j                  }|j                  dk(  sJ t        |j                        dk(  sJ |j
                  |j                  fD ]  }t        j                  g dt        j                               j                  | j                        } |dd|      }t        ||j                  t        j                  dt        j                                            d}	t        j                  t         |	      5   |dddg|z         d d d         |j#                  d      }t        ||j%                  d             |j'                  d	g      }t        ||j%                  d             |j'                  d
d	g      }
t        |
j                        dk(  sJ |
j(                  t        j*                  j,                  k(  sJ |j/                  d
g      }t        ||j%                  d             t        j0                  t        j                  d
t        j2                               t        j                  d	t        j2                               g      }t        j                  t4              5  |j7                  |       d d d        t        j                  dg|z  g d      j                  | j                        }|j                  dd|      }t        j                  t4              5  |j9                          d d d        t        j                  t4              5  |j;                  dg|z         d d d        t        j                  t4              5  |j=                  dg       d d d        t        j                  t4              5  |j?                  d
       d d d        |j                  d      |j                  d      k(  sJ |j                  d      |j                  d      k(  sJ |j                  | j                        }t        j                  t4              5  |jA                  |      du sJ 	 d d d        t        jB                  jE                  |d
d	g      }t        ||       |j                  t        jF                               jA                  |      sJ t        jB                  jI                  |d   |d   d      }t        ||       |j                  t        jF                               jA                  |      sJ tK        t        |jL                              D cg c]  }|j                  |       }}t        jN                  jE                  ||      }t        j                  t4              5  t        jB                  jQ                  |       d d d        t        j                  t4              5  |jR                  sJ 	 d d d        t        j                  t4              5  |jU                         sJ 	 d d d        t        j                  t4              5  |jW                          d d d        t        j                  t4              5  |jY                          d d d        t        j                  t4              5  |j[                          d d d        t        j                  t4              5  |j]                          d d d        t        j                  t4              5  |j_                          d d d        t        j                  t4              5  |ja                          d d d        |jc                  dd      }t        ||       |j                  dk(  sJ |j                  t        jF                               }||jc                  dd      k(  sJ |je                  ddi      }t        ||       |j0                  jf                  ddik(  sJ |ji                  ddg      }t        j0                  t        j                  d|j                  d      jj                        t        j                  d|j                  d      jj                        g      }t        ||       |jm                          t        j                  t4              5  |jm                  d       d d d        t        j                  t4              5  |jo                          d d d        t        j                  t4              5  |jq                          d d d        t        j                  t4              5  |js                          d d d        t        j                  t4              5  tu        |jw                                d d d        y # 1 sw Y   	ExY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   }xY w# 1 sw Y   VxY w# 1 sw Y   0xY w# 1 sw Y   xY wc c}w # 1 sw Y   JxY w# 1 sw Y   &xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   jxY w# 1 sw Y   ExY w# 1 sw Y    xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   gxY w# 1 sw Y   BxY w# 1 sw Y   y xY w)Nr  r$  r   )r  rq   r   r   r   c2z`Got column on device <DeviceAllocationType.CPU: 1>, but expected <DeviceAllocationType.CUDA: 2>.rD   r   rE  rD  r   r  maskTrD  rE  r  r      key   valuecol0col1r  )<r  r   r_   r3   rG  rM  rU  r   rN   rG   r  r  r   r   r,   r-   ri   rd  remover\  r  r  r  r  r   rF   r.  r
  r  r_  r[  rR  rP   r   r   default_cpu_memory_managerr(  r   r|   StructArrayr  r9   r&   r&  r*   r   r  r  	serializer}   r  rP  rq  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_cpur    s   ,fE!!A !!V+++ ''(A---  **,<,G,GHhh("'')  !<!<= 	q$$	v}}RXXdBGGI5N'O	QB]]9G4q$a  54 I !..q1IIv}}Q7GH !--tf5IIv}}Q7GH"//t=K{""#q(((""b&=&=&B&BBBB !''/IIv}}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Iv>R::<=DD_UUU **+a.TU+WXIIv>R::<=DD_UUU (-S->'?@'?!fll1o'?F@>>--k&-IL	*	+
((6 
, 
*	+&&&& 
, 
*	+55777 
, 
*	+""$ 
, 
*	+""$ 
, 
*	+""$ 
, 
*	+""$ 
, 
*	+((* 
, 
*	+""$ 
, !&&q!,IIv>"""!!""?"?"ABI--a3333 !88&(9KLIIv>$$(:::: !//0@AIii	&&,,q/..	/	&&,,q/..	/	12O IG 	*	+!!t!, 
, 
*	+""$ 
, 
*	+**, 
, 
*	+++- 
, 
*	+'5578 
,	+Q 54( 
,	+ 
,	+ 
,	+ 
,	+ 
,	+ 
,	+ A	+	+ 
,	+ 
,	+ 
,	+ 
,	+ 
,	+ 
,	+ 
,	+ 
,	+0 
,	+ 
,	+ 
,	+ 
,	+ 
,	+s  f f%<f2.f?%gg1g&<g3 g8hh7h)h,h9i?i1i +i-i:jj5j!f"	%f/2f<?g	gg#&g08hhhh),h69iii i*-i7:jjj!j*c                    | j                          | j                  du sJ | j                  t        |j                        k(  sJ | j
                  |j                  k(  sJ t        |       t        |       v sJ | j                  D ]`  }|j                  du sJ |j                         D ];  }|j                  du sJ |j                  t        j                  j                  k(  r;J  b | j                  |k(  sJ y r  )r+   r  rq  r3   r|   rH  rm   r  rG  r2   r  r   r  r  r   )r   r  r    r   s       r!   verify_cuda_tabler    s    	NN<<5   O$9$9 ::::!6!6666u:e$$$]]xx5   \\^E<<5((($$(?(?(D(DDDD $ 
 <<?***rU   c                    t        ||       |j                  }|j                  dk(  sJ t        |j                        dk(  sJ |j
                  |j                  fD ]  }t        j                  dg|z  t        j                               }|j                  | j                        }	 |dd|	      }
t        |
|j                  t        j                  dt        j                                             |dd|      }
|
j                  du sJ |
j                  d      j                  du sJ |
j                  d      j                  du sJ |
j                  d      j                  du rJ  |j!                  d      }
t        |
|j#                  d             |j%                  d	g      }
t        |
|j#                  d             |j%                  d
d	g      }
t        |
j                        dk(  sJ |
j                  sJ |j'                  d
g      }
t        |
|j#                  d             t        j(                  t        j                  d
t        j*                               t        j                  d	t        j*                               g      }t-        j.                  t0              5  |j3                  |       d d d        t        j                  dg|z  dg|z        j                  | j                        }|j                  dd|      }t-        j.                  t0              5  |j5                          d d d        t-        j.                  t0              5  |j7                  dg|z         d d d        t-        j.                  t0              5  |j9                  dg       d d d        t-        j.                  t0              5  |j;                  d
       d d d        |j                  d      |j                  d      k(  sJ |j                  d      |j                  d      k(  sJ t-        j.                  t0              5  |j=                  |      sJ 	 d d d        t        j>                  jA                  |d
d	g      }
t        |
|       t        j>                  jC                  |d   |d   d      }
t        |
|       tE        t        |jF                              D cg c]  }|j                  |       }}t        jH                  jA                  ||      }t-        j.                  t0              5  t        j>                  jK                  |       d d d        t        j>                  jM                  ||g|      }
t        |
|       t-        j.                  t0              5  |jN                  sJ 	 d d d        t-        j.                  t0              5  |jQ                         sJ 	 d d d        t-        j.                  t0              5  |jS                          d d d        t-        j.                  t0              5  |jU                          d d d        t-        j.                  t0              5  |jW                          d d d        t-        j.                  t0              5  |jY                          d d d        |j[                  d      }|D ]1  }t-        j.                  t\              5  t_        ||       d d d        3 |ja                  d      }|D ]1  }t-        j.                  t\              5  t_        ||       d d d        3 |jc                  dd      }
t        |
|       |
j                  dk(  sJ |je                  ddi      }
t        |
|       |
j(                  jf                  ddik(  sJ |ji                  ddg      }
t        j(                  t        j                  d|j                  d      jj                        t        j                  d|j                  d      jj                        g      }t        |
|       |jm                          t-        j.                  t0              5  |jm                  d       d d d        t-        j.                  t0              5  |jo                          d d d        t-        j.                  t0              5  |jo                          d d d        t-        j.                  t0              5  |jq                          d d d        t-        j.                  t0              5  |js                  d
       d d d        t-        j.                  t0              5  |ju                  |d
       d d d        t-        j.                  t0              5  |jw                  |d
d
d       d d d        t-        j.                  t0              5  |jy                          d d d        t-        j.                  t0              5  |j{                          d d d        t-        j.                  t0              5  t}        |j                                d d d        t-        j.                  t0              5  |j                          d d d        y # 1 sw Y   xY w# 1 sw Y   ixY w# 1 sw Y   ?xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY wc c}w # 1 sw Y   xY w# 1 sw Y   >xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   {xY w# 1 sw Y   @xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   hxY w# 1 sw Y   BxY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   zxY w# 1 sw Y   y xY w)Nr  )ry   r   r   r   r  Fr   TrE  rD  r  r  r  r   r  r   r  r  r  r  r  )Ar  r   r_   r3   rG  rM  rU  r   rN   rG   r  r  r   r   r  r   rd  r  r\  r  r   rF   r,   r-   r.  r
  r  r_  r[  rR  rP   r~   r   r(  r   r|   r  r  r2  r9   r&   r&  r*   r   r  r  AssertionErrorr  r:  r}   r  rP  rq  r	   r+   r   r   r,  rQ  rr  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  r8  r   r<  r  s                        r!   test_table_non_cpur    s	   j&9A w&&& z!!"a''' $$j&;&;<((A37BGGI.??<#>#>?q$)	)V]]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->'?@'?!fll1o'?F@>>--k&-IL	*	+
""<0 
, %%'79I&JFSIi8 
*	+     
, 
*	+//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>  .j,j$j1j>	kk'k%; k*+k7lll5l+'l80m8m7m+m,m9nn4n (n-n:oo=o!j!$j.1j;>kkk"*k47llll(+l58mm	m	m),m69nnn n*-n7:ooo!o*)collectionsr   collections.abcr   r5   r:   numpyr[   ImportErrorr,   pyarrowr   pyarrow.computecomputer.  pyarrow.interchanger   pyarrow.vendored.versionr   r?   rK   rT   rY   markrc   rk   ro   rw   r   r   r   parametrizerW   rF   rj   r)   r?  r  r   r   r   r   r   r   r   r   r   nopandasr   r   r   r   r  r  r  r   r+  r0  r3  rA  rI  rU  r\  rc  rg  ro  rr  ru  rx  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r!  r~   r   r-  r/  r9  r;  r=  rC  rF  rH  rK  rS  rW  r_  rb  re  rg  rj  rl  rr  ru  r~  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r0   rN   r(   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  aceror3  r8  r=  rS  rW  r]  r`  rb  rh  datasetrs  ry  r{  r  r  r  r  r  r  r   r)  r  r  r  fixturer  r   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  rX   rU   r!   <module>r     s  $ $ $ 
     . ,D*HZ 8 & &C( ( (6!0%-B` 	"HBHHJ/	xrxxz"	:2::<(	9299;'	XRXXhbhhj!"a&1#,-%Sz	"HBHHYRYY[$9:	#BIIxrxxXRXXZ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#4E<! / /,60,>* 
		##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  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 Mu  	Bs   u u)(u)