o
    Zh@                    @   s  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 Zdd Zdd	 Zd
d Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zejdg de
 fg de
 fg de
 fg de
 fg e
e
  fdd gd!gge
e
 fd"gdd#d$gge
e
 fg d%e
!e
"d"e
 e
"d#e
 gfgd&d' Z#ejj$d(d) Z%ejj$d*d+ Z&ejj$d,d- Z'ejj$d.d/ Z(ejj$d0d1 Z)ejj$ejj*d2d3 Z+d4d5 Z,d6d7 Z-d8d9 Z.d:d; Z/d<d= Z0d>d? Z1d@dA Z2dBdC Z3dDdE Z4dFdG Z5dHdI Z6dJdK Z7dLdM Z8dNdO Z9dPdQ Z:dRdS Z;dTdU Z<dVdW Z=dXdY Z>dZd[ Z?d\d] Z@d^d_ ZAd`da ZBdbdc ZCddde ZDdfdg ZEdhdi ZFdjdk ZGdldm ZHdndo ZIdpdq ZJejj$drds ZKdtdu ZLdvdw ZMdxdy ZNdzd{ ZOejj$d|d} ZPd~d ZQdd ZRdd ZSdd ZTdd ZUdd ZVdd ZWdd ZXdd ZYdd ZZdd Z[dd Z\dd Z]dd Z^dd Z_dd Z`dd Zadd Zbdd Zcdd Zddd Zedd Zfdd Zgdd Zhdd Ziejj$dd Zjdd Zkdd Zldd Zmdd Zndd Zodd Zpdd Zqdd Zrejdg dâg dĢfesfg dâg dĢfe
jtfdgddggdgddggfe
jufgdd˄ Zvejde
jwe
jxgdd΄ Zyejdg dâg dĢfe
jtfdgddggdgddggfe
jufgddЄ Zzejdg dâg dĢfesfg dâg dĢfe
jtfdgddggdgddggfe
jufgdd҄ Z{ejde
jwe
jxgddԄ Z|ejj$ddք Z}ejj$dd؄ Z~ddڄ Zejj$dd܄ Zddބ Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zejjdd Zejjdd Zdd Zejjdd Zejjdd Zejjdd Zejjdd Zejjdd Zdd Zdd  Zdd Zejde
je
jgdd Zejjdd ZdS (      )OrderedDict)IterableNc                  C   s  t jg t  d} | jt  ksJ |  g ksJ |   t jg dd}|jt  ks.J tt	 t g  W d    n1 sCw   Y  t g dg dg dg} t
| jts^J tdd | jD sjJ tdd |  D swJ t| jd	ksJ |  td
d |  D ksJ t| t| |   ksJ | jdksJ |   t| }| d usJ ~ | d u sJ d S )Ntypebinary                        	   c                 s       | ]
}t |tjjV  qd S N
isinstancepalibZ
Int64Array.0c r   O/var/www/html/lang_env/lib/python3.10/site-packages/pyarrow/tests/test_table.py	<genexpr>/       z,test_chunked_array_basics.<locals>.<genexpr>c                 s   r   r   r   r   r   r   r   r   0   r   r
   c                 s   s    | ]}|  V  qd S r   )get_total_buffer_sizer   r   r   r   r   2   s    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wrr   r   r   test_chunked_array_basics   s@   

r9   c                  C   s  t g dg dg dg} | jt  ksJ t| dksJ t| jdks(J t g dg dg dg} | jt  ks?J t| dksGJ t| jdksPJ t jg dg dg dgt  d} | jt  kskJ t| dkssJ t| jdks|J t g dg g} | jt  ksJ t| dksJ t| jdksJ d	}tjt	|d
 t g sJ W d    n1 sw   Y  t jg t 
 djt 
 ksJ t g gjt  ksJ t jg gt 
 djt 
 ksJ d S )Nr   r   r   r   r
         @      @g      @r   r	   z@cannot construct ChunkedArray from empty vector and omitted typematch)r   r"   r   int64r-   r)   int8r&   r'   r(   r#   null)arrmsgr   r   r   test_chunked_array_construction?   sP    &rD   c                  C   sD   t ddg} t | | g}| }t g d}||s J d S )Nr   r	   r   r	   r   r	   )r   arrayr"   combine_chunksequals)rB   chunked_arrresexpectedr   r   r   test_combine_chunksl   s
   rL   c                   C   sl   t jg t  d t jg t  dksJ t jt jg t  dgt  d t jg t  dks4J d S )Nr   )r   r"   bool_rG   rF   r   r   r   r   4test_chunked_array_can_combine_chunks_with_no_chunksu   s   rN   c                  C   s\   t g dg dg g} t| }|  }t|tjsJ |jdks$J t||s,J d S )Nr   r   )r   )	r   r"   npasarrayZto_numpyr   ZndarrayshapeZarray_equal)r6   arr1Zarr2r   r   r   test_chunked_array_to_numpy   s   
rS   c                  C   s   d} t jt| d ttg dtg dg W d    n1 s%w   Y  t jt| d tjtg dgt d W d    d S 1 sLw   Y  d S )Nzchunks must all be same typer=   r         ?       @      @r   )r&   r'   	TypeErrorr   r"   rF   float64)rC   r   r   r   !test_chunked_array_mismatch_types   s    "rZ   c                  C   s:   t g dt g dg} t | } t| dksJ d S )Nr   r   z<[
  [
    1,
    2,
    3
  ],
  [
    4,
    5,
    6
  ]
])r   rF   r"   strr6   r   r   r   test_chunked_array_str   s
   
r]   c                  C   sN  t g dt g dg} t | } | d  dksJ | d  dks'J | d  dks1J tt | d  W d    n1 sEw   Y  tt | d  W d    n1 s^w   Y  | td  dkspJ | dd	 }|	 d
d	gksJ | d	d }|	 dgksJ | dd }|j
| j
ksJ |	 g ksJ d S )Nr   r   r   r	   r   iir   r
   r   c   )r   rF   r"   as_pyr&   r'   
IndexErrorrO   int32r$   r   )r6   
data_slicer   r   r   test_chunked_array_getitem   s*   


rd   c                  C   s   t g dt g dg} t | } | t| }|j| jks"J | g ks*J | t| d }|j| jks;J | g ksCJ t jj| gdgd}|t|}t|dks\J t jj| gdgd}|t|d }t|dkswJ d S )Nr   r   
   anamesr   )	r   rF   r"   slicer-   r   r$   Tablefrom_arrays)r6   rc   tabletable_slicer   r   r   test_chunked_array_slice   s    
rn   c                  C   sv   t dgt g dt g dt g dg} t | }ttd|D ]\}}|| ks1J q%t|ts9J d S )Nr   r   r   r   re   )r   rF   r"   zipranger`   r   r   )r6   rB   ijr   r   r   test_chunked_array_iter   s   

rs   c                  C   s$  dd } dd }| t jg t  dt jg t  d |t jg t  dt jg t  d t jddgt  d}t jddgt  d}t jddgt  d}t jg d	t  d}| |g|g ||g|g | ||g||g | ||g|g |||g||g t jg t  dd rJ d S )
Nc                 S   st   t | tjr	| }nt| }t |tjr|}nt|}||s#J ||s*J ||ks0J |t|ks8J d S r   )r   r   ChunkedArrayr"   rH   r[   ZxarrsZyarrsxyr   r   r   eq   s   

z%test_chunked_array_equals.<locals>.eqc                 S   sd   t | tjr	| }nt| }t |tjr|}nt|}||r#J ||r*J ||ks0J d S r   )r   r   rt   r"   rH   ru   r   r   r   ne   s   

z%test_chunked_array_equals.<locals>.ner   r   r	   r
   )r   r	   r   r
   )r   r"   rb   r?   rF   rH   )rx   ry   rf   br   dr   r   r   test_chunked_array_equals   s$    r|   )r6   typ)TFTT)r   r	   r   r   )rU         @N)rf   Nrz   r   r	   r
   rf   rz   r   ))r   rf   )r	   r   Nc                 C   st   g }| r| tj| d d |d | dd  } | stj||d}|  |||}|  ||s8J d S )Nr	   r   )appendr   rF   r"   r%   loadsdumpsrH   )r6   r}   pickle_modulearraysrF   resultr   r   r   test_chunked_array_pickle!  s   r   c                  C   s   dd l } tg dg}tj|dgd}|d}t|tjs!J | }t|| js-J |j	dks4J |d dks<J |j
dksCJ d S )Nr   r   r   re   rf   rg   )r   r   )pandasr   rF   rl   columnr   rt   	to_pandasSeriesrQ   name)pdr6   rl   colZseriesr   r   r   test_chunked_array_to_pandas;  s   
r   c                  C   s   dd l } dd lm} tg dt| g dt| jdddt| jddddtg dtd	tg dtd	dfD ]&}td
|i}|	d

 }|jd
ksZJ | j|
 d
d}||| qCd S )Nr   r   rf   rz   rf   Z2012r
   )periodszEurope/Brussels)r   tzmsr   )r   )r   pandas.testingtestingr   rF   ZCategoricalZ
date_range	timestamprl   r   r   r   r   Zassert_series_equal)r   tmr6   rl   r   rK   r   r   r   *test_chunked_array_to_pandas_preserve_nameL  s   r   c                  C   s   dd l } | j| dddd}t|}| }|jdksJ |jdks&J |jdks-J |j	|js6J | j| dddd}t|}| }|jdksQJ |jdksXJ |jdks_J |j	|jshJ d S 	Nr   re   r   )index)re   r   r
   r   )r   r   )
r   	DataFrame
RangeIndexr   rl   r   num_rowsrQ   r   rH   )r   r6   rl   r   r   r   r   .test_table_roundtrip_to_pandas_empty_dataframe`  s   

r   c                  C   s   dd l } | j| dddd}tj|}| }|jdks J |jdks'J |jdks.J |j	
|j	s7J | j| dddd}tj|}| }|jdksSJ |jdksZJ |jdksaJ |j	
|j	sjJ d S r   )r   r   r   r   RecordBatchfrom_pandasr   r   rQ   r   rH   )r   r6   batchr   r   r   r   4test_recordbatch_roundtrip_to_pandas_empty_dataframez  s   r   c                  C   sl   dd l } dd lm} | ddgddgd}t|}|j  }|j	dks)J |
||jd d  d S )Nr   r   r	   g?g?rf   rz   r   r	   )r   r   r   r   r   rl   schemaZempty_tabler   rQ   assert_frame_equalZiloc)r   r   dfrl   r   r   r   r   test_to_pandas_empty_table  s   
r   c                  C   sh  t dgt g dg} t | }t|}| g dks!J |jtdks+J tj|dd}| g dks<J t dd gt g dg} t | }t|}| }|d d	ks`J t|d siJ |d
d  g dksuJ |jtdksJ t j	t g dt g d}t ||g}t|}|jtdksJ | g dd
 ksJ d S )Nr   r   )r   r   r	   r
   r?   r[   dtype)0123r   rU   r	   rT   rY   )r   r   r	   r   r   rf   rz   r   r1   )rf   rz   r   rf   rz   )
r   rF   r"   rO   rP   tolistr   isnanZDictionaryArrayrk   )r6   rI   Znp_arrelementsrB   r   r   r   test_chunked_array_asarray  s4   





r   c                  C   s  t t dt  t dt  g} t jg d| d}t |}| \}}|t t jg dt  ds:J |t t jg dt  dsMJ t jg | d}t |}| \}}|t t jg t  dspJ |t t jg t  dsJ d S )Nrv   rw   )r   r~   r
         @)r         @r   )r   r
   r   )r~   r   r   )	r   structfieldint16float32rF   r"   flattenrH   )tyrf   Zcarrrv   rw   r   r   r   test_chunked_array_flatten  s   
&
"&r   c                  C   s   t t g d t g d g} | djt ddgs%J | djt ddgs5J |  } t g d}| dj|sKJ | dj|sVJ |  g d	ks`J d S )
NfoobarNr   )quuxNr   r   r   r   r   r   r   r   r   )r   r   Nr   r   Nr   )	r   r"   rF   dictionary_encodechunk
dictionaryrH   unify_dictionariesr$   )rB   Zexpected_dictr   r   r   %test_chunked_array_unify_dictionaries  s     r   c                  C   s  t jtdddt jg dddg} t | ddg}|jjr J t|dks(J |jdks/J |jt| ks8J |	 dks@J |j
dk t|t||	  ksUJ | }|tdg d	fdg dfgkskJ t|tsrJ tt |d
  W d    n1 sw   Y  t jt jdt  ddidt dt  gddid}t j| |d}|j|ksJ t | |}|j|ksJ t|dksJ |jdddksJ t|}| d usJ ~| d u sJ d S )Nr   r   r   r   r   r   Nre   rb   c0c1   r   r   r	   r
   r   r	   keyvaluemetadata   foo   barr   zSpyarrow.RecordBatch
c0: int16
c1: int32
----
c0: [0,1,2,3,4]
c1: [-10,-5,0,null,10]TZshow_metadataznpyarrow.RecordBatch
c0: int16
  -- field metadata --
  key: 'value'
c1: int32
-- schema metadata --
foo: 'bar')r   rF   rp   record_batchr   r   r-   r   num_columnsr    r3   r/   r0   r1   r2   	to_pydictr   r   dictr&   r'   ra   r   r   rb   r[   	to_stringr4   r5   )r6   r   pydictr   r8   r   r   r   test_recordbatch_basics  sR   





	r   c                   C   <   t jtdd t  W d    d S 1 sw   Y  d S )Nr   r=   )r&   r'   rX   r   r   r   r   r   r   test_recordbatch_dunder_init'     
"r   c                  C   s   G dd d} t jt jg dt  dgdgd}| |}t |}||ks(J t t dt  g}t j||d}t jt jg dt  dgdgd}||ksSJ d S )Nc                   @      e Zd Zdd ZdddZdS )z8test_recordbatch_c_array_interface.<locals>.BatchWrapperc                 S   
   || _ d S r   r   selfr   r   r   r   __init__.     
zAtest_recordbatch_c_array_interface.<locals>.BatchWrapper.__init__Nc                 S      | j |S r   r   __arrow_c_array__r   requested_schemar   r   r   r   1     zJtest_recordbatch_c_array_interface.<locals>.BatchWrapper.__arrow_c_array__r   __name__
__module____qualname__r   r   r   r   r   r   BatchWrapper-      r   r   r   rf   rg   r   )r   r   rF   r?   r   r   rb   )r   r6   wrapperr   castable_schemarK   r   r   r   "test_recordbatch_c_array_interface,  s&   
r   c                  C   s   G dd d} t jt jg dt  dgdgd}| |}t |}t j|g}||ks/J t t dt 	 g}t j||d}t dt jg dt 	 di}||ksXJ d S )Nc                   @   r   )z2test_table_c_array_interface.<locals>.BatchWrapperc                 S   r   r   r   r   r   r   r   r   J  r   z;test_table_c_array_interface.<locals>.BatchWrapper.__init__Nc                 S   r   r   r   r   r   r   r   r   M  r   zDtest_table_c_array_interface.<locals>.BatchWrapper.__arrow_c_array__r   r   r   r   r   r   r   I  r   r   r   r   rf   rg   r   )
r   r   rF   r?   rl   rj   from_batchesr   r   rb   )r   r6   r   r   rK   r   r   r   r   test_table_c_array_interfaceH  s$   
r   c               
   C   s   G dd d} t jt jg dt  dgdgdt jt jg dt  dgdgdg}| |}t |}t j|}||ks@J t j||d jd	}||ksPJ t	t
 t j|t t dt  gd	 W d    d S 1 srw   Y  d S )
Nc                   @   r   )z4test_table_c_stream_interface.<locals>.StreamWrapperc                 S   r   r   )batches)r   r   r   r   r   r   g  r   z=test_table_c_stream_interface.<locals>.StreamWrapper.__init__Nc                 S   s"   t j| jd j| j}||S Nr   )r   ZRecordBatchReaderr   r   r   __arrow_c_stream__)r   r   readerr   r   r   r   j  s   
zGtest_table_c_stream_interface.<locals>.StreamWrapper.__arrow_c_stream__r   )r   r   r   r   r   r   r   r   r   StreamWrapperf  r   r   r   r   rf   rg   r   r   r   )r   r   rF   r?   rl   rj   r   r   r&   r'   NotImplementedErrorr   rb   )r   r6   r   r   rK   r   r   r   test_table_c_stream_interfacee  s   "
"
$"r   c                  C   s   t jtdddt jg dddg} t | ddg}g }| D ]}|| q |j|ks/J |t j||jdks;J |t j|d	d  |jd	d  dksOJ ||ksUJ d S )
Nr   r   r   r   rb   r   r   rg   r   )r   rF   rp   r   itercolumnsr   columnscolumn_names)r6   r   r  r   r   r   r   test_recordbatch_itercolumns  s   (r  c                  C   s  t jtdddt jg dddg} t g dt dgdgd	ggg}d
dg}t | |}|t | |ks8J |t | |sCJ |t ||ksMJ |t ||rXJ t j| |ddid}||siJ |j|ddrrJ |d ryJ |dksJ d S )Nr   r   r   r   rb   r   r{   efr   r   r   r   rh   r   TZcheck_metadatar   )r   rF   rp   r   rH   )Zdata1r7   r  r   Z
batch_metar   r   r   test_recordbatch_equals  s&   r  c               	   C   s   t t g dt g dgddg} | t ddg| dds'J | t dd gt t dd gt dd ggddgsHJ d S )Nr   r	   r
   Nr   rf   rz   r   r{   r  f1f2r	   r
   r   )r   r   rF   takerH   ri   r   r   r   r   test_recordbatch_take  s   &r  c                  C   2   t jt g dgdgd} | d jdksJ d S Nr   r	   r
   r   Za0rg   r   )r   r   rF   _name)rbr   r   r   )test_recordbatch_column_sets_private_name     r  c               	   C   sl   t ddg} t t dt t  g}tt t j	| g|d W d    d S 1 s/w   Y  d S )Nr   r	   Zf0r   )
r   rF   r   r   list_utf8r&   r'   r   r   )rB   r   r   r   r   ,test_recordbatch_from_arrays_validate_schema  s
   "r  c                  C   sd   t dgt g dt dgg} tt t | g d W d    d S 1 s+w   Y  d S )Nr   )ZtokyolikeZhappyZderek)idtagsr   )r   rF   r&   r'   r(   r   r\   r   r   r   -test_recordbatch_from_arrays_validate_lengths  s   
"r  c                  C   s<   t g g } t| dksJ | jdksJ | jdksJ d S r   )r   r   r-   r   r   r   r   r   r   test_recordbatch_no_fields  s   r  c                  C   s   t tdt g dg} tt t j| g dd W d    n1 s'w   Y  tt t j| dgd W d    d S 1 sEw   Y  d S Nr   r   r   rg   rf   )r   rF   rp   r&   r'   r(   r   r\   r   r   r   *test_recordbatch_from_arrays_invalid_names  s   "r  c                  C   s@   t tdt g dg} t | ddg}|jjd u sJ d S )Nr   r   r   r   )r   rF   rp   r   r   r   r6   r   r   r   r   test_recordbatch_empty_metadata  s
   r!  c                 C   s   t jtdddt jg dddg}t dt  t dt  g}t j|dd	id
}t j||d}| | 	|}|
|sAJ |j|ksHJ d S )Nr   r@   r   r   r   intsfloatsr   r   r   r   )r   rF   rp   r   r@   r   r   r   r   r   rH   )r   r6   fieldsr   r   r   r   r   r   test_recordbatch_pickle  s   r%  c                  C     t tdt g dt tddg} t jj| dd}|d|jds+J |d|jds9J t	t
 |d W d    n1 sNw   Y  t	t |d  W d    n1 shw   Y  t	t |d	 W d    d S 1 sw   Y  d S 
Nr   r   re   r   rg   rf   r   r{   r   )r   rF   rp   r   rk   r   rH   r   r&   r'   KeyErrorrX   ra   r   r   r   r   test_recordbatch_get_field      "r)  c                  C      t tdt g dt tddg} t jj| dd}|d|ds*J tjt	dd	 |d
 W d    n1 sAw   Y  tt
 |d  W d    n1 s[w   Y  tt |d W d    d S 1 svw   Y  d S Nr   r   re   r   rg   rf   r   z"Field "d" does not exist in schemar=   r{   r   )r   rF   rp   r   rk   r   rH   r&   r'   r(  rX   ra   r   r   r   r   test_recordbatch_select_column  s"   "r-  c                  C   \  t g d} t g d}t ddgddgddgd d	d
gg}t | ||gg d}|dg}t | gdg}||s@J |ddg}t ||gddg}||sXJ |dg}t | gdg}||smJ |ddg}t ||gddg}||sJ |ddi}|ddg}d|jjv sJ tj	t
dd |dg W d    n1 sw   Y  tj	tdd |dg W d    n1 sw   Y  |ddg}t ||gddg}||sJ t | ||gg d}tj	t
dd |dg W d    n	1 sw   Y  |dg}t |gdg}||s,J d S Nr	  r
  r   r	   r
   r   r   r   r   re   )r  r  f3r  r0  r  r   rf   test   azField "f5" does not existr=   Zf5zindex out of bounds)r  r  r  zField "f1" exists 2 times)r   rF   r   selectrH   replace_schema_metadatar   r   r&   r'   r(  ra   )a1a2a3r   r   rK   batch2r   r   r   test_recordbatch_select+  F   $r9  c                   C   sF   t t tjttd W d    d S 1 sw   Y  d S )Nr   )r&   r'   rX   r   r   from_struct_arrayrF   rp   r   r   r   r   *test_recordbatch_from_struct_array_invalid^  s   "r<  c               	   C      t jddiddigt dt  fdt  fgd} t j| }|t jt jdd gt  dt jd dgt  dgddgsBJ d S Nr"  r   r#  rU   r   )	r   rF   r   rb   r   r   r;  rH   rk   Zstruct_arrayr   r   r   r   "test_recordbatch_from_struct_arrayc     
r@  c               
   C   s   t jt jdd gt  dt jd dgt  dgddg} |  }|t jddiddigt dt  fdt  fgds@J d S Nr   r   rU   r"  r#  )	r   r   rk   rF   rb   r   to_struct_arrayrH   r   )r   r   r   r   r    test_recordbatch_to_struct_arrayq  s   rD  c                   C   sJ   t jtdd tjttd W d    d S 1 sw   Y  d S )Nz*Argument 'struct_array' has incorrect typer=   r   )r&   r'   rX   r   rj   r;  rF   rp   r   r   r   r   $test_table_from_struct_array_invalid  s   "rE  c               	   C   r=  r>  )	r   rF   r   rb   r   rj   r;  rH   rk   r?  r   r   r   test_table_from_struct_array  rA  rF  c               	   C   s   t jddiddiggt dt  fdt  fgd} t j| }|t jt j	dd gt  dt j	d dgt  dgddgsCJ d S r>  )
r   r"   r   rb   r   rj   r;  rH   rk   rF   )Zchunked_struct_arrayr   r   r   r   *test_table_from_struct_array_chunked_array  s   
rG  c               
   C   s   t jt jdd gt  dt jd dgt  dgddg} |  }|t jddiddiggt 	dt  fdt  fgdsAJ d S rB  
r   rj   rk   rF   rb   r   rC  rH   r"   r   rl   r   r   r   r   test_table_to_struct_array  s   rJ  c               
   C   s   t jt jdd gt  dt jd dgt  dgddg} | jdd}|t jddigddiggt 	dt  fdt  fgdsDJ d S )Nr   r   rU   r"  r#  Zmax_chunksizerH  rI  r   r   r   -test_table_to_struct_array_with_max_chunksize  s   rL  c                 C   s  t tdt g dg}ddg}| ||d}|d}|jdks$J | dd	 |D |d}||s6J |dd}| d
d	 |D |d}||sNJ |d|sXJ t|t|dkseJ tt	 |d W d    n1 szw   Y  |dd|d d sJ |dd|d d sJ |dd|dd sJ |dt|d |dd  sJ |t|d d|dd  sJ |t|d d|dd sJ d S )Nr   r   r   r   rg   r	   r
   c                 S   s   g | ]}| d qS r	   ri   r   rv   r   r   r   
<listcomp>      z+_table_like_slice_tests.<locals>.<listcomp>c                 S   s   g | ]}| d d qS rM  rN  rO  r   r   r   rP    s    r   r^   r   )
r   rF   rp   ri   r   rH   r-   r&   r'   ra   )factoryr6   rh   objZslicedrK   Zsliced2Z	expected2r   r   r   _table_like_slice_tests  s.   
&&*rV  c                   C   s   t tjjS r   )rV  r   r   rk   r   r   r   r   test_recordbatch_slice_getitem  r   rW  c                   C   s
   t tjS r   )rV  r   rl   r   r   r   r   test_table_slice_getitem  r   rX  c                  C   sZ   t dt jg t ddi} | dd}|  t dt jg t  di} |   d S )Nrf   usr   r   )r   rl   rF   r   ri   r   r"   r#   )rl   rm   r   r   r   test_slice_zero_length_table  s
   rZ  c                  C   s   t jdgdd} t jddgdd}tt| gdg}tt|gdg}ttj tj||g W d    d S 1 sAw   Y  d S )Nr   uint32r   r;   r<   rY   r   )	rO   rF   r   r   r&   r'   ArrowInvalidrj   r   )r5  r6  batch1r8  r   r   r   "test_recordbatchlist_schema_equals  s   "r^  c                  C   r  r  )r   rl   rF   r  tr   r   r   #test_table_column_sets_private_name  r  ra  c                  C   sf   t jjg g d} | | sJ | d rJ t jjg g ddid}| j|ddr*J | |s1J d S )Nrg   r   r   r  Tr  )r   rj   rk   rH   )rl   otherr   r   r   test_table_equals  s   rc  c                  C   sR  t t dt  t dt  g} t jt dgt dggddgd}t j|g| }|j	| s6J |
dt dggksDJ |
dt dggksRJ t t dt  g}tt j t j|g| W d    n1 sww   Y  t t dggdg}tt j t j|g|  W d    d S 1 sw   Y  d S )Nrf   rz   r   gQ	@rg   r   )r   r   r   r?   rY   r   rF   rj   r   rH   r   r"   r&   r'   r\  )r   r   rl   Zincompatible_schemaZincompatible_batchr   r   r   "test_table_from_batches_and_schema  s&   "rd  c            
      C   s(  ddl m}  dd l}|dttdi}|dttddi}tjj|dd}tjj|dd}tj	
|||g}|j|||gdd	}| }t|d
ksPJ | tj	
| | |jdd}ttt|g dksnJ | | | | tj	
| | tj	
t|||g}	||	sJ d S )Nr   )r   rf   re      F)preserve_indexT)Zignore_indexr
      rK  )re   rg  r   re   )r   r   r   r   r*   rp   r   r   r   rj   r   concat
to_batchesr-   r   mapiterrH   )
r   r   df1df2r]  r8  rl   Zexpected_dfr   Ztable_from_iterr   r   r   test_table_to_batches%  s*   rn  c               	   C   s  t jtdddt jg dddg} t j| dd}|  t|dks%J |jdks,J |jdks3J |jdks:J |	 d	ksBJ |j
d	ksIJ t|t||	  ksYJ | }|td
g dfdg dfgksoJ t|tsvJ g }| D ]I}|| | D ]}|d usJ qtt |d W d    n1 sw   Y  tt ||j W d    n1 sw   Y  q||j|ksJ |t j||jdksJ |t j|dd  |jdd  dksJ ||ksJ t|}| d usJ ~| d u sJ d S )Nr   r?   r   r   r   rg   r	   )r   r	   P   rf   r   rz   r^   r   )r   rF   rp   rl   r%   r-   r   r   rQ   r    r3   r/   r0   r1   r2   r   r   r   r   r   r   r,   r&   r'   ra   r   
num_chunksr  r  r4   r5   )r6   rl   r   r  r   r   r8   r   r   r   test_table_basicsE  sT   



(
rq  c                   C   r   )Nrj   r=   )r&   r'   rX   r   rj   r   r   r   r   test_table_dunder_initr  r   rr  c                  C   s   t ddg} t ddg}t jdt  tdddd	}t jd
t  dd}t jj| |gt ||gd}d|djv s?J |dj	du sIJ d S )Nr   r	   r
   r   field1ABr   r   Zfield2Fnullabler   r2  r   )
r   rF   r   r?   r   rj   rk   r   r   rw  )Zarr0rR   Zfield0rs  rl   r   r   r   0test_table_from_arrays_preserves_column_metadataw  s   rx  c                  C   s   t tdt g dg} tt t jj| g dd W d    n1 s(w   Y  tt t jj| dgd W d    d S 1 sGw   Y  d S r  )r   rF   rp   r&   r'   r(   rj   rk   r\   r   r   r   $test_table_from_arrays_invalid_names  s   "ry  c                  C   s   t tdg dg} tj| ddgd}tjj| ddgd}||s$J ttdt	 tdt
 g}tj| |d}tjj| |d}||sMJ d S )Nr   r   rf   rz   rg   r   )r*   rp   r   rl   rj   rk   rH   r   r   Zuint16r?   )r6   r   rK   r   r   r   r   test_table_from_lists  s   
rz  c                 C   s   t jddgddggt  dt jg dgt  dg}t jt dt  t dt  gd	d
id}t jj||d}| | 	|}|
  ||sMJ d S )Nr   r	   r
   r   r   )ZsomestringsN r"  strsr   r   r   r   )r   r"   r[  r#   r   r   rj   rk   r   r   r%   rH   )r   r6   r   rl   r   r   r   r   test_table_pickle  s   r~  c                  C   r&  r'  )r   rF   rp   rj   rk   r   rH   r   r&   r'   r(  rX   ra   r6   rl   r   r   r   test_table_get_field  r*  r  c                  C   r+  r,  )r   rF   rp   rj   rk   r   rH   r&   r'   r(  rX   ra   r  r   r   r   test_table_select_column  s"   "r  c                  C   st   t jt g dt g dt g dgg dd} tjtdd | d W d    d S 1 s3w   Y  d S )	Nr   r   r   r   rg   z"Field "a" exists 2 times in schemar=   rf   )r   rl   rF   r&   r'   r(  r   rl   r   r   r   !test_table_column_with_duplicates  s   "r  c                  C   s   t tdt g dt tddg} t jj| dd}t d| d j}|d|| d }||| d }t jj| | d g d	d}|	|sKJ |	|sRJ |d
|| d }t jj| d g|  dd}|	|soJ d S )Nr   r   re   r   rg   r{   r   r
   )rf   rz   r   r{   r   )r{   rf   rz   r   )
r   rF   rp   rj   rk   r   r   
add_columnappend_columnrH   )r6   rl   	new_fieldt2t3rK   Zt4r   r   r   test_table_add_column  s$   r  c                  C   s   t tdt g dt tddg} t jj| dd}t d| d j}|d|| d }t| }| d |d< t jj|d	d}|	|sHJ d S )
Nr   r   re   r   rg   r{   r   r   )r{   rz   r   )
r   rF   rp   rj   rk   r   r   Z
set_columnr*   rH   )r6   rl   r  r  expected_datarK   r   r   r   test_table_set_column  s   r  c                  C      t td} t g d}t tdd}t jj| ||gdd}|ddg}|d}t jj|gdd}||s=J t jj||gd	d}||sNJ tjt	d
d |dg W d   dS 1 sgw   Y  dS )z& drop one or more columns given labelsr   r   re   r   rg   rf   rz   r   rz   r   Column 'd' not foundr=   r{   N)
r   rF   rp   rj   rk   Zdrop_columnsrH   r&   r'   r(  rf   rz   r   rl   r  r  Zexp_t2Zexp_t3r   r   r   test_table_drop_columns     
"r  c                  C   r  )z, verify the alias of drop_columns is workingr   r   re   r   rg   rf   rz   r  r  r  r=   r{   N)
r   rF   rp   rj   rk   ZdroprH   r&   r'   r(  r  r   r   r   test_table_drop#  r  r  c                  C   sv   t tdt g dt tddg} t jj| dd}|d}|  t jj| dd  dd}||s9J d S )	Nr   r   re   r   rg   r   r   r  )r   rF   rp   rj   rk   remove_columnr%   rH   r6   rl   r  rK   r   r   r   test_table_remove_column7  s   
r  c                  C   sz   t tdg} t jj| dgd}|d}|  t|t|ks$J |d|	d|d }|  |
|s;J d S )Nr   rf   rg   r   )r   rF   rp   rj   rk   r  r%   r-   r  r   rH   )r6   rl   r  r  r   r   r   test_table_remove_column_emptyE  s   
r  c                  C   sT   g } ddg}d}t jt|d tjj| |d W d    d S 1 s#w   Y  d S )Nrf   rz   z?Length of names [(]2[)] does not match length of arrays [(]0[)]r=   rg   )r&   r'   r(   r   rj   rk   )r6   rh   messager   r   r   test_empty_table_with_namesU  s   "r  c                  C   s4   t g } | jg ksJ | t jg g sJ d S r   )r   rl   r  rH   rj   rk   r  r   r   r   test_empty_table_  s   
r  c                  C   s   t tdt g dt tddg} t jj| g dd}|jg dks(J |g d}|  |jg dks<J t jj| g dd}||sMJ d S )Nr   r   re   r   rg   )ehbeeZsea)	r   rF   rp   rj   rk   r  Zrename_columnsr%   rH   r  r   r   r   test_table_rename_columnsf  s   r  c                  C   s   t t dt  t dt  g} t t d| g}t jddg| d}t jddg|d}t jd	d
gt  d}t jj|||gg dd}|	 }|
  t jjt jddgt  dt jddgt  dt jddg| d|gg dd}||s}J d S )Nrv   rw   nestr   r   r   )   g      )@)   g      -@FTr   rg   r   r
   r~   r   r  r  )za.xza.yzb.nestr   )r   r   r   r   r   rF   rM   rj   rk   r   r%   rH   )Zty1Zty2rf   rz   r   rl   r  rK   r   r   r   test_table_flattenw  s&   r  c                  C   s   t jt dgt dggddgd} t jt dgt dggddgd}t j| |g}| }|  ||s=J |jD ]	}|j	dksIJ q@d S )Nr   rf   r  r  rg   r	   rz   )
r   r   rF   rj   r   rG   r%   rH   r  rp  )r]  r8  rl   combinedr   r   r   r   test_table_combine_chunks  s   
r  c                  C   s
  t jt g d t g d t g dgg dd} t jt g d t g d t g dgg dd}t j| |g}|d	d
i}|ddj	
t ddgs`J |ddj	
t ddgssJ |ddj	
t g dsJ |ddj	
t ddgsJ |t  }t g d}t g d}|ddj	
|sJ |ddj	
|sJ |ddj	
|sJ |ddj	
|sJ | g dg dg ddksJ |jjd	d
iksJ d S )Nr   ){     r    )TFNNr   rg   )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   rF   r   rj   r   r4  r   r   r   rH   r   Zdefault_memory_poolr   r   r   )r]  r8  rl   Zexpected_dict_0Zexpected_dict_1r   r   r   test_table_unify_dictionaries  sR   r  c                  C   s   t tdg dg} t tddg dg}tjjdd | D dd}tjjd	d |D dd}t||g}|  t|dksBJ tjjd
d t| |D dd}|	|sYJ d S )Nr   )g      $g      g        r<   g      $@re   rU   rV   rW   r;   r<   c                 S      g | ]}t |qS r   r   rF   rO  r   r   r   rP    rQ  z&test_concat_tables.<locals>.<listcomp>r   rg   c                 S   r  r   r  rO  r   r   r   rP    rQ  c                 S   s   g | ]\}}t || qS r   r  )r   rv   rw   r   r   r   rP    s    )
r*   rp   r   rj   rk   concat_tablesr%   r-   ro   rH   )r6   r7   t1r  r   rK   r   r   r   test_concat_tables  s*   
r  c                  C   sx   t jjttdgdd} t jjtdgdd}tjt jdd t j| |gdd}W d    d S 1 s5w   Y  d S )	Nre   rf   rg   r   z@Unable to merge: Field a has incompatible types: int64 vs stringr=   
permissiveZpromote_options)	r   rj   rk   r*   rp   r&   r'   ArrowTypeErrorr  )r  r  _r   r   r   test_concat_tables_permissive  s   "r  c                  C   s`   t jjttdgdd} tjtdd t j| | gdd W d    d S 1 s)w   Y  d S )Nre   r  rg   z Invalid promote options: invalidr=   invalidr  )	r   rj   rk   r*   rp   r&   r'   r(   r  r_  r   r   r   !test_concat_tables_invalid_option  s   "r  c                   C   s<   t t td g W d    d S 1 sw   Y  d S r   )r&   r'   AttributeErrorr   r  r   r   r   r   test_concat_tables_none_table  s   "r  c                  C   s   dd l } ttdt tdt g}td}| ||d}| tjgd |d}tj	j
||dd}tj	j
||dd}|j|jsJJ |jj|jd	d
rUJ t||g}|jj|jd	d
sgJ |j|jspJ d S )Nr   rf   rz   Zabcdefghr   r   F)r   rf  Tr  )r   r   r   r   r#   r*   r   rO   nanrj   r   rH   r  )r   r   valuesrl  rm  table1table2table3r   r   r   1test_concat_tables_with_different_schema_metadata  s   r  c               	   C   s  t jt jddgt  dgdg} t jt jddgt  dgdg}tt t j	| |gdd	}W d    n1 s=w   Y  |
t jt jg d
t  dt jg dt  dgddgsdJ t jt jddgt  dgdg} t jt jddgt  dgdg}tjt jdd/ tt t j	| |gdd	 W d    n1 sw   Y  W d    d S W d    d S 1 sw   Y  d S )Nr   r	   r   int64_fieldrU   rV   float_fieldT)Zpromoter   r	   NNNNrU   rV   r  z Schema at index 1 was different:r=   F)r   rj   rk   rF   r?   r   r&   ZwarnsFutureWarningr  rH   r'   r\  r  r  r   r   r   r   &test_concat_tables_with_promote_option  s8   

"r  c               	   C   s  t jt jddgt  dgdg} t jt jddgt  dgdg}t j| |gdd	}|t jt jg d
t  dt jg dt  dgddgsOJ t jt jddgt  dgdg}t j| |gdd	}|t jt jg dt  dgdgsJ d S )Nr   r	   r   r  rU   rV   r  defaultr  r  r  r  rE   )	r   rj   rk   rF   r?   r   r  rH   rb   )r  r  r   r  r   r   r   !test_concat_tables_with_promotion  s0   


r  c                  C   s   t jt jddgt  dgdg} t jt jddgt  dgdg}tjt jdd t j	| |gdd W d    d S 1 sAw   Y  d S )	Nr   r	   r   r  zUnable to merge:r=   r  r  )
r   rj   rk   rF   r?   r   r&   r'   r  r  )r  r  r   r   r   'test_concat_tables_with_promotion_error3  s   "r  c                  C   s
  t tdt g dt g dt g dg} t jj| tdd}|d |d s/J |d	 |d
 s:J |d |d sEJ |d |d sPJ tt	 |d  W d    n1 sdw   Y  tt	 |d  W d    d S 1 s~w   Y  d S )Nr   r   r  abbccddeZefabcdrg   r^   r
   rR  r	   r   rS  r   r   r   )
r   rF   rp   rj   rk   tuplerH   r&   r'   ra   r  r   r   r   test_table_negative_indexing=  s    

"r  c                  C   s   t tdt g dg} t jj| tdd}t t dt  t dt 	 g}t t dt  g}d}t
jt|d	 || W d    n1 sPw   Y  t
jt|d	 || W d    d S 1 smw   Y  d S )
Nr   r   r  rg   rt  rz   rf   zGTarget schema's field names are not matching the table's field names:.*r=   )r   rF   rp   rj   rk   r  r   r   rb   r   r&   r'   r(   cast)r6   rl   Ztarget_schema1Ztarget_schema2r  r   r   r   &test_table_cast_to_incompatible_schemaR  s$   "r  c               
   C   s.  t jtdt  dt jg dt  dt jg dt  dt jg dt  dg} t jj| t	dd}t jtdt  dt jg dt 
 dt jg dt  dt jg dt  dg}t jj|t	dd}t t d	t  t d
t 
 t dt  t dt  g}||}||sJ d S )Nr   r   r   r  r  r  rg   r   r	   r
   r   r   rf   rz   r   r{   )r   rF   rp   r?   rb   rY   r#   rj   rk   r  r   r   r   r  rH   r6   rl   r  Zexpected_tableZtarget_schemaZcasted_tabler   r   r   test_table_safe_castingh  s(   
r  c               
   C   sl  t jtdt  dt jg dt  dt jg dt  dt jg dt  dg} t jj| t	dd}t jtdt  dt jg dt 
 dt jg dt  dt jg dt  dg}t jj|t	dd}t t d	t  t d
t 
 t dt  t dt  g}tjt jdd || W d    n1 sw   Y  |j|dd}||sJ d S )Nr   r   r   )g?g@gffffff
@g@g      @r  r  rg   r  rf   rz   r   r{   	truncatedr=   F)safe)r   rF   rp   r?   rb   rY   r#   rj   rk   r  r   r   r   r&   r'   r\  r  rH   r  r   r   r   test_table_unsafe_casting  s.   r  c                  C   s   t jddgt jd} t }tj| |dtj| dd  |dg}ttjj tjj	|ddgd W d    d S 1 s=w   Y  d S )Nr   r   r   r   r5  r6  rg   )
rO   rF   uint8r   r&   r'   r   r\  rj   rk   )rF   u8r   r   r   r   test_invalid_table_construct  s   $"r  zdata, klassr|  r   r   r   r   Nr|  r   r   r   r<   c                 C   s  || d || d g} t dt  fdt  fg}t jj| |d}|jdks*J |jdks1J |j|ks8J t dt  fg}t	t
 t jj| |d W d    n1 sZw   Y  t dt  fdt  fg}t jj| |d}t j|djsJ |jdksJ |jdksJ |j|ksJ t dt  fdt dfg}t	ttf t jj| |d W d    n1 sw   Y  t	t
 t jj| |ddgd	 W d    n1 sw   Y  t	t
 t jj| |d
did W d    d S 1 sw   Y  d S )Nr   r   r}  r#  r   r	   r
   s)r   rh   r   r   r   r   )r   r   r  r   rj   rk   r   r   r&   r'   r(   types
is_float32r   r   r   r   rX   from_pydictr6   klassr   rl   r   r   r   test_from_arrays_schema  s4    $r  clsc              
   C   s  |  i }|jdksJ |jdksJ |jtg ksJ | i ks%J tdt fdt fg}tdg dfdg dfg}|  |}|jdksNJ |jdksUJ |j|ks\J | |ksdJ dd	i}|	|}| j ||d
}|j|ks{J |jj
|ksJ | |ksJ | j ||d}|j|ksJ |jj
|ksJ | |ksJ tt | j |||d W d    n1 sw   Y  tt | j dg ditdt fgd W d    n1 sw   Y  tjtdd( | j g dg ddtdt fdt fdt fgd W d    n	1 s!w   Y  tt | j dg dii d W d    d S 1 sCw   Y  d S )Nr   r}  r#  r  r  r	   r
   r   r   r   r   r  r   )r   r   r	   zdoesn't contain.* c, dr=   r   )r
   r   r   r   rf   r   r{   )r  r   r   r   r   r   r  rY   r   with_metadatar   r&   r'   r(   rX   r#   r(  r?   rb   r   )r  rl   r   r6   r   r   r   r   test_table_from_pydict  sZ   






$r  c                 C   s  t d|| d fd|| d fg} tdt fdt fg}tj| }|jdks.J |jdks5J |j|ks<J tjj| |d}|jdksKJ |jdksRJ |j|ksYJ tdt fdt	 fg}tjj| |d}tj
|djs|J |jdksJ |jdksJ |j|ksJ tdt fdtdfg}tttf tjj| |d W d    d S 1 sw   Y  d S )	Nr}  r   r#  r   r	   r
   r   r  )r   r   r   r  rY   rj   r  r   r   r   r  r  r   r   r   r&   r'   r   rX   r  r   r   r   #test_table_from_pydict_arrow_arrays  s(   $ "r  c                 C   s   t d|| d fd|| d fg} tdt fdt fdt fg}tjtdd tj	j
| |d W d    n1 s@w   Y  tdt fg}tj	j
| |d}|jdks^J |j|kseJ |jdgksmJ d S )Nr}  r   r#  r   r"  r=   r   )r   r   r   r  rY   r?   r&   r'   r(  rj   r  r   r  r  r   r   r   test_table_from_pydict_schema6  s   $
r  c                 C   s  |  g }|jdksJ |jdksJ |jtg ksJ | g ks%J tdt fdt fg}ddddddd	d dg}|  |}|jd
ksNJ |jdksUJ |j|ks\J | |ksdJ ddi}||}| j ||d}|j|ks{J |jj	|ksJ | |ksJ | j ||d}|j|ksJ |jj	|ksJ | |ksJ t
t | j |||d W d    n1 sw   Y  t
t  | j ddiddidd
igtdt fgd W d    n1 sw   Y  tdt fdt fdt 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 dg}|j|ks3J | |ks<J t
t | j ddidd
iddigi d W d    n	1 s]w   Y  dddddidd	ig}dddd ddd	d dg}|  |}|jd
ksJ |jdksJ | |ksJ ddiddddd ig}ddiddidd ig}|  |}|jdksJ |jdksJ | |ksJ d S )Nr   r}  r#  r|  r   )r}  r#  r   r   r   r	   r
   r   r   r   r   r  r   r   rf   r   r{   r   r   )rf   r   r{   )Zfrom_pylistr   r   r   r   r$   r  rY   r  r   r&   r'   r(   rX   r#   r?   rb   r   )r  rl   r   r6   r   r7   r   r   r   test_table_from_pylistN  s   







"

r  c                  C   s  dd l } | tdg dfdg dfg}tdt fdt fg}tjj||d}tj	
|djs8J |j |ksAJ tdt fdtdfg}tttf tjj||d W d    n1 skw   Y  tdt fdt fdt fg}tjtdd	 tjj||d W d    n1 sw   Y  tdt fg}tjj||d}|jd
ksJ |j |ksJ |jdgksJ d S )Nr   r}  r  r#  r  r   r  r"  r=   r   )r   r   r   r   r   r  r   rj   r   r  r  r   r   Zremove_metadatar   r&   r'   r   rX   rY   r?   r(  r   r  )r   r   r   rl   r   r   r   test_table_from_pandas_schema  s.   
 
r  c                  C   s  dd l } tdg dfdg dfg}tjg dddtjg dddd	}tdt fdt fg}| |}t|}tj	
|}||sKJ tj||d
}tj	j
||d
}||saJ t|}tj	|}||ssJ tj||d
}tj	j||d
}||sJ d S )Nr   rz   r   rf   r   r#   r   rb   )rz   rf   r   )r   r   r   rF   r   rb   r#   r   rl   rj   r   rH   r  )r   r{   Z
d_explicitr   r   r  r  r   r   r   test_table_factory_function  s&   


r  c                  C   s   t t tjdg didgd W d    n1 sw   Y  tdt fg} tdtjg dt di| }|	dj
t ksHJ tjg dddg}dg}t||}|j|ksbJ tdt fg} t|| }|j|ksyJ d S )Nrf   r   rg   r   r?   )r&   r'   r(   r   rl   r   rb   rF   r?   r   r   r  )r   rl   r6   rh   r   r   r    test_table_factory_function_args  s   "r  c                  C   s   dd l } tt tj| dg didgd W d    n1 s#w   Y  tt tj| dg diddid W d    n1 sHw   Y  tdt fg}t| dg di|}|	dj
t kspJ d S )Nr   rf   r   rg   r   r   r   )r   r&   r'   r(   r   rl   r   r   rb   r   r   )r   r   rl   r   r   r   'test_table_factory_function_args_pandas  s    "r  c                   C   sv   t jtdd td W d    n1 sw   Y  t jtdd td W d    d S 1 s4w   Y  d S )Nz!Expected pandas DataFrame, pythonr=   zinvalid inputzExpected pandas DataFrame)r&   r'   rX   r   rl   r   r   r   r   r   $test_factory_functions_invalid_input  s   "r  c                  C   s   t jt jdt  ddidt dt  gddid} t jt jg dd	d
t jg ddd
g| d}t|dks:J |jdddksDJ |jdddksNJ |jdddksXJ d S )Nr   r   r   r   r   r   r   r  r   r   re      re  (   rb   r   zJpyarrow.Table
c0: int16
c1: int32
----
c0: [[1,2,3,4]]
c1: [[10,20,30,40]]Tr   zhpyarrow.Table
c0: int16
  -- field metadata --
  key: 'value'
c1: int32
-- schema metadata --
foo: 'bar'r   )Zpreview_colsr   z:pyarrow.Table
c0: int16
c1: int32
----
c0: [[1,2,3,4]]
...)	r   r   r   r   rb   rl   rF   r[   r   r   tabr   r   r   test_table_repr_to_string  s    	r  c                  C   s   t jt jdt  ddidt dt  gddid} t jt jg dd	 d
dt jg dd	 ddg| d}t|dks>J d S )Nr   r   r   r   r   r   r   r  re   r   r   r  rb   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   rb   rl   rF   r[   r  r   r   r   "test_table_repr_to_string_ellipsis@  s   r  c                  C   s   d} d}t |g df| g dfg}t| t f|t fg}tj||d}|d dtjg ddds;J |d	 dtjg dd
dsNJ d S )Nu   ääähu   öööfr   r   r   r   rb   r   r   r#   )	r   r   r   rb   r#   rl   r   rH   rF   )Zcol_aZcol_br{   r   r   r   r   r   "test_table_function_unicode_schemaR  s   &*r  c                  C   sR   t t g dt g dgddg} | t ddg| dds'J d S )Nr	  r
  r  r  r	   r
   )r   rl   rF   r  rH   ri   r  r   r   r   %test_table_take_vanilla_functionality`  s   *r  c                  C   sr   t t g dt g dgddg} t t dd gt dd ggddg}| t dd g|s7J d S )Nr	  r
  r  r  r   rf   r   r   rl   rF   r  rH   )rl   Zresult_with_null_indexr   r   r   test_table_take_null_indexi     "r  c                  C   sr   t t g dt g dgddg} t t dd gt ddggddg}| t dd	g|s7J d S )
Nr	  r
  r  r  r	   rz   r{   r   r
   r  )rl   Zresult_non_consecutiver   r   r   test_table_take_non_consecutivew  r  r  c                  C   r.  r/  )r   rF   rl   r3  rH   r4  r   r   r&   r'   r(  ra   )r5  r6  r7  rl   r   rK   r  r   r   r   test_table_select  r:  r   c                  C   s  dd } t jt g dt g dt g dt g dgg dd}|d	d
g}| | g dg ddks?J |d	d
dg}| | g dg dg ddks]J |d	dg}| | g dg ddkswJ |d	ddg}| | g dg dg ddksJ |d	ddg}| | g dg dg ddksJ |d	dgdg}| | g dg dg ddksJ |d	dddg dfdg}| | g dg dg dg dg dg dd ksJ t jt g d!t g d"gd	d#gd}|d	gd#d$tjd%d&fg}| d'gd(gd)ks2J |d	gd#d$tjd*d&fg}| d'gd+gd)ksQJ |d	gd#d$tjd,d&fg}| d'gd-gd)kspJ |d	gg dfd#d$tjd,d&fg}| d'gd(gd-gd.ksJ |d	gg dfg}| d'gd(gd/ksJ t g d0td1d2}t j	
|jd(d3}|d	dg}| | d'd4gd1d5gdksJ d S )6Nc                 S   s   d| v rt t| d | d }n| d }t|}dt| d i}| D ] }|dkr)q"tt|| | }|D ]}||g ||  q4q"|S )Nkeys2keys)r  ro   sortedr   
setdefaultr   )r{   r  Zsorted_keysZsorted_dentryr  kr   r   r   sorted_by_keys  s   z+test_table_group_by.<locals>.sorted_by_keysrf   rf   rz   rz   r   )Xr	  YZr  r  )re   r  re  r  2   )r  r  r  	bigvaluesrg   r  )r  Zhash_sumr   )r
   r   r   )r  
values_sum)r  Z
hash_count)r	   r	   r   )r  r  values_count)r  r.   )r  max)r  r.   )r	   r   r   )re  F   r  )r  
values_maxbigvalues_sum)r  r  )r  r  r  )r  r  bigvalues_maxr  )rf   rz   rz   r   )r	  r
  r  r  )r
   r
   r   r   )r  r  r  	count_all)r  r  r  r  r  r  )rf   rf   rf   )r   NNr  countr+   )moderf   r
   )r  r  Z	only_nullr	   Z
only_validr   )r  r  r  )r  r  )rf   rz   rf   rz   rf   rz   r   r  r  rK  rz   r   )r   rl   rF   group_by	aggregater   pcZCountOptionsrp   rj   r   ri  )r  rl   rZtable_with_nullsZtable_with_chunksr   r   r   test_table_group_by  s   












	

r  c                  C   s   t g dddgd d} t g dddgd d}t | |g}tt |ddg W d    n1 s<w   Y  |jddddg}t ddgd	dgd
}||s_J d S )Nr  rf   rz   r	   r   )rf   firstF)Zuse_threadsr   )rz   Za_first)	r   rl   r  r&   r'   r   r  r  rH   )r  r  rl   r   rK   r   r   r   test_table_group_by_firstU	  s   r  c                  C   sp   t jdg di} |  }| j|jksJ | | ksJ | jdd}| jdks-J | jdks6J d S )Nrv   r   r	   rK  r   )r   rj   r  Z	to_readerr   Zread_allZread_next_batchr   )rl   r   r   r   r   test_table_to_recordbatchreaderd	  s   r   c                  C   s   t g dg dd} t g dg dd}| |dd}| t g dg dg d	d
ks4J | j|dddd}| dt g dg dg dd
ksUJ d S )Nr   r	   r   rf   rz   r  colAcol2r_   r	   r   r  ru  rt  )colBcol3r$  r(  rt  ru  Nr$  r%  r)  
full outer	join_typer   r	   r   r_   rf   rz   r  Nrt  ru  Nr  r   rl   joinrG   sort_byr  r   r   r   test_table_joino	  s(   
r5  c                  C   s   t g dg dd} t g dg dd}| |d}| t g dg dg dd	ks3J | j|dd
dd}| dt g dg dg dd	ksTJ d S )Nr!  r"  r#  r&  r'  )r$  r)  r$  r*  r+  r,  _r)r.  Zright_suffixr/  r0  r1  r2  r  r   r   r   test_table_join_unique_key	  s(   
r7  c                  C   s   t g dg dg dd} t g dg dg dd}| j|dd	d
}| dt jg dg dg dg dg dgg ddksGJ d S )Nr!  re   r  <   r"  r$  r(  colValsr&  r_   r  re   r'  r$  r,  r-  r/  )re   r  r9  Nr0  )re   r  Nr_   r1  )r$  r(  r;  r(  r;  rg   r2  r  r   r   r   test_table_join_collisions	  s(   r=  c                  C   s   t g dg dg dd} t g dg dg dd}t | |g}|tdd	k }| t g d
g dg ddksDJ d S )Nr!  r8  r"  r:  r&  r<  r'  r$  re   )r   r	   r   r	   r   )re   r  r9  r  re   )rf   rz   r  ru  rt  )r   rl   r  filterr  r   rG   )r  r  r  r   r   r   r   test_table_filter_expression	  s"   
r?  c                  C   s   t g dg dd} t g dg dg dg dg dg dd}| |dd}| t g dg dg d	g d	g d	g d	g d	d
ksLJ | j|dddd}| dt g dg dg dg dg dg dg dd
ksyJ d S )Nr!  r"  r#  r&  r'  )r(  r)  col4col5col6col7r$  r(  r*  )r$  r%  r)  r@  rA  rB  rC  r,  r-  r/  r0  r1  r2  r  r   r   r   test_table_join_many_columns	  s@   	

rD  c                  C   s   t d dgd dgd} t t jddddt jddd	dg}tt | | W d    n1 s4w   Y  t d dgd	dgd} | |j|ksOJ d S )
Nr   Tr   rf   r?   rv  rz   boolF)r   rl   r   r   r&   r'   r(   r  )rl   Z
new_schemar   r   r   test_table_cast_invalid	  s   rF  c                  C   s$  t jt g dt g dgddgd} | d g dg ddks'J | d	g g d
g ddks:J t jjt jg dt  dt g dgddgd}|dg}| }|d g dkshJ |d g dksrJ |dg}| }|d g dksJ |d g dksJ d S )N)r
   r   r   r	   r   )rz   rf   rz   rf   r   r  r  rg   r  r  r  )r  
descending)r   rz   rz   rf   rf   )r   r   r
   r	   r   r   r   r   #   r   r   carr   foobarrf   rz   rf   rG  rI  r   r   r   )rL  rK  r   r   rf   	ascending)r   rl   rF   r4  r   rj   rk   r?   )rl   r  Z
sorted_tabZsorted_tab_dictr   r   r   test_table_sort_by
  s8   rQ  c                  C   s   t jjt jg dt  dt jg dt  dt g dgg dd} | ddg}| }|d	 g d
ks9J |d g dksCJ |d g dksMJ | ddg}| }|d	 g dksbJ |d g dkslJ |d g dksvJ d S )N)r   rI  r   r   r   )r   r   r
   r	   rJ  r   rg   rM  )rz   rG  rf   rN  rz   )r   r   r
   r	   r   )rK  r   r   rL  rO  )rz   rP  rH  )r	   r
   r   r   )rL  r   r   rK  )r   r   rk   rF   r?   r4  r   )r  Z	sorted_rbZsorted_rb_dictr   r   r   test_record_batch_sort(
  s"   rR  constructorc                 C   sL  | g dg dgddgd}t |}t jddgdd	gd
dggdd}t j|| t j|dd}t j|| |jdks?J |g }t |}t d}t j|| |jdks\J t j|dd}t j|| |jdksqJ |dd}t |}t d}t j|| |jdksJ t j|dd}t j|| |jdksJ d S )Nr   r:   rf   rz   rg   r   r   r	   r   r
   r   rY   r   rb   )r
   r   r   r   )	rO   rP   rF   r   Zassert_allcloser   r3  emptyri   )rS  rl   r   rK   r  r  r   r   r   test_numpy_asarray<
  s.   
 




rU  c                  C   s   d} t jt| dd t| D d}t jt| dd t| D d}tt jj}|j|ddd	 W d    n1 s@w   Y  d
}|t	|j
v sPJ tt jj}|j|ddd	 W d    n1 sjw   Y  |t	|j
v sxJ d S )Nre  c                 S   s   g | ]}d d t dD qS )c                 S      g | ]}|qS r   r   )r   zr   r   r   rP  a
      z;test_invalid_non_join_column.<locals>.<listcomp>.<listcomp>r
   )rp   rO  r   r   r   rP  a
  s    z0test_invalid_non_join_column.<locals>.<listcomp>)r  Zarray_columnc                 S   rV  r   r   rO  r   r   r   rP  e
  rX  )r  r   r  innerr-  zOData type list<item: int64> is not supported in join non-key field array_column)r   rj   r  rp   r&   r'   r   r\  r3  r[   r   )Z	NUM_ITEMSr  r  excinfoZexp_error_msgr   r   r   test_invalid_non_join_column\
  s$   r[  )collectionsr   collections.abcr   r/   r4   numpyrO   r&   Zpyarrowr   Zpyarrow.computeZcomputer  r9   rD   rL   rN   rS   rZ   r]   rd   rn   rs   r|   markZparametrizerM   r?   rY   r#   r  r  r   r   r   r   r   r   r   r   r   Znopandasr   r   r   r   r   r   r   r   r  r  r  r  r  r  r  r  r!  r%  r)  r-  r9  r<  r@  rD  rE  rF  rG  rJ  rL  rV  rW  rX  rZ  r^  ra  rc  rd  rn  rq  rr  rx  ry  rz  r~  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r*   rF   r"   r  rj   r   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   Zaceror  r  r   r5  r7  r=  r?  rD  rF  rQ  rR  rl   r   rU  r[  r   r   r   r   <module>   s|  "-	
0$





(<	
3%



-
%


	 
#
9 
 

U
 

*	3
 





&
 