U
    -e|                    @   s  d dl mZ d dlZd dlZd dlZd dlmZ d dl	Z	d dl
Z
d dlZd dlZd dlZd dlZd dlZd dlZzd dlZW n ek
r   dZY nX d dlZd dlm  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#dd Z$dd Z%dd Z&dd  Z'ej()d!d"d#d$d%gej()d&dd'gd(d) Z*ej()d!d"d#d$d%gd*d+ Z+d,d- Z,ej(j-d.d/ Z.ej(j/ej(j-d0d1 Z0ej()d2de1 e2 e3 gd3d4 Z4d5d6 Z5d7d8 Z6d9d: Z7d;d< Z8d=d> Z9d?d@ Z:dAdB Z;dCdD Z<dEdF Z=dGdH Z>dIdJ Z?dKdL Z@dMdN ZAej()dOejBejCgdPdQ ZDdRdS ZEdTdU ZFdVdW ZGej()dXdYdZd[ ZHd\d] ZId^d_ ZJd`da ZKdbdc ZLddde ZMej()dfejNejBfejOejCfgdgdh ZPej()dfejNejBfejOejCffej()didd ggdd dgd ggd gdjggfdkdl ZQej()dfejNejBfejOejCffdmdn ZRdodp ZSdqdr ZTdsdt ZUdudv ZVdwdx ZWdydz ZXd{d| ZYd}d~ ZZdd Z[dddddZ\dd Z]dd Z^dd Z_dd Z`dd Zadd Zbdd Zcdd Zddd Zedd Zfdd Zgdd Zhdd Zidd Zjdd Zkdd Zldd Zmdd Zndd Zodd Zpdd Zqdd Zrdd Zsdd Ztdd Zudd Zvdd Zwdd Zxdd Zydd Zzdd Z{ddĄ Z|ddƄ Z}ddȄ Z~ddʄ Zej()dddddgfded dσfded dуfded dӃfded dӃfded dӃfded dӃfded dӃfded dӃfddddgfddddgfddddgfddddgfeddddgfgdd Zej()dddddge fdjdddge fdddge fdddge3 fg dfdjdgdggeBe fddgdggeCe fdgdddggeBe3 fdddgeede ede3 gfg	Zedd Zdd Zeejejejd ddddd Zedd Zej()dejdejd ejdejd ejdejd ejdej2d ejdejd ejdejd ejdejd ejdejd ejdejd ejdejd ejdejd gdd Zdd Zdd Zdd Zd	d
 Zdd Zej(j-dd Zdd Zdd Zej()dded"fded#fded$fded%fgdd Zdd Zej()d!d%d$d#d"gdd Zdd Zej()dd ed"fd!ed#fd"ed$fd#ed%fgd$d% Zd&d' Zd(d) Zd*d+ Zej(j-d,d- Zd.d/ Zej(j-d0d1 Zd2d3 Zd4d5 Zd6d7 Zd8d9 Zd:d; Zd<d= Zd>d? Zd@dA ZdBdC ZdDdE ZdFdG ZdHdI ZdJdK ZdLdM ZdNdO Zej()dPe ejBfe ejCfgdQdR Zej()dSeBe ejBe ddTeCe gdUdV Zej()dWe eBe fe ejBe ddTfe eCe fgdXdY Zej()dOejBejCgdZd[ Zej()d\ejNejOgd]d^ Zd_d` ZÐdadb ZĐdcdd ZŐdedf ZƐdgdh Zǐdidj ZȐdkdl Zɐdmdn Zʐdodp Zej(jej(j͐dqdr Zej(j͐dsdt Zϐdudv ZАdwdx Zѐdydz Zej(j-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 Zej(j-dd Zej(j-dd Zݐdd Zސdd Zߐdd Zdd ZdddZdd Zdd ZdS (      )IterableNc                  C   sZ   d} t jtjd| gdt jd}|jdkr@t|jtjd |  t	|j
 dksVtd S )NzOif 1:
    import pyarrow as pa

    assert pa.total_allocated_bytes() == 0
    z-cT)universal_newlinesstderrr   )file)
subprocessrunsys
executablePIPE
returncodeprintr   check_returncodelen
splitlinesAssertionError)coderes r   Y/var/www/html/Darija-Ai-Train/env/lib/python3.8/site-packages/pyarrow/tests/test_array.pytest_total_bytes_allocated)   s     
r   c                  C   s<   t dddg} t| }| d k	s(t~ | d ks8td S N         )paarrayweakrefrefr   )arrwrr   r   r   test_weakref7   s
    
r    c                  C   sN   t dd dg} | d  d ks$t| d jdks6tt| d t jsJtd S )Nr   r   F)r   r   as_pyr   Zis_valid
isinstanceZInt64Scalarr   r   r   r   test_getitem_NULL?   s    r$   c                	   C   s(   t t tddg W 5 Q R X d S )Nr   r   )pytestraises	TypeErrorr   Arrayr   r   r   r   test_constructor_raisesF   s    r)   c                  C   s4   t dgd ddd gg} |  }d}||ks0td S )Nr   r   r   z9[
  [
    1
  ],
  null,
  [
    2,
    3,
    null
  ]
]r   r   	to_stringr   r   resultexpectedr   r   r   test_list_formatM   s    r/   c                  C   s,   t dd dg} |  }d}||ks(td S )N fooz[
  "",
  null,
  "foo"
]r*   r,   r   r   r   test_string_format_   s    r2   c                  C   s.   t td} | jdd}d}||ks*td S )Nd   r   )Zwindowz[
  0,
  1,
  ...
  98,
  99
])r   r   ranger+   r   r,   r   r   r   test_long_array_formatk   s    r5   c                  C   s0   t dd dg} | jdd}d}||ks,td S )Nr0   r1   r   )indentz[
 "",
 null,
 "foo"
]r*   r,   r   r   r   test_indented_string_formaty   s    r7   c                  C   s0   t dd dg} | jdd}d}||ks,td S )Nr0   r1   r   )Ztop_level_indentz [
   "",
   null,
   "foo"
 ]r*   r,   r   r   r   %test_top_level_indented_string_format   s    r8   c                  C   s0   t ddd ddg} |  }d}||ks,td S )N        s   foos   z([
  00,
  ,
  null,
  01666F6F,
  80FF
]r*   r,   r   r   r   test_binary_format   s    r;   c                  C   s|   t jdd dddgdd} t jdd dddgdd}| jdks>t| d	d
jdksTt|jdksbt|d	d
jdksxtd S )Ns   0000s   11111s   222222s   3333333binarytypelarge_binary   r   r      )r   r   Ztotal_values_lengthr   slice)r   Z	large_arrr   r   r   test_binary_total_values_length   s    rC   c                  C   sr   t td} |  }|  d }|j|jjks4td } dd l	}|
  |jd k	sVttd}tj|| d S )N
   r   r   )r   r   r4   to_numpybuffersaddressctypesdatar   gccollectbasenparangetestingassert_array_equal)r   np_arrZ	arrow_bufrJ   r.   r   r   r   test_to_numpy_zero_copy   s    
rR   c               	   C   sr   dddgdddgg} t | }d}tjt|d |jdd W 5 Q R X | }ddddddg}tj|| d S )	Nr         r3   z>zero_copy_only must be False for pyarrow.ChunkedArray.to_numpymatchTzero_copy_only)	r   chunked_arrayr%   r&   
ValueErrorrE   rM   rO   rP   )elementschunked_arrmsgrQ   r.   r   r   r   %test_chunked_array_to_numpy_zero_copy   s    
r^   c               	   C   s   t dddg} tt |   W 5 Q R X | jdd}tdddg}tj|| t d d d g}tt |  W 5 Q R X |jdd}tjd d d gt	d}tj|| t ddd g}tjtdd |  W 5 Q R X d S )	NTFrW   dtyper   r   zwith 1 nullsrU   )
r   r   r%   r&   rZ   rE   rM   rO   rP   object)Zbool_arrr-   r.   Znull_arrr   r   r   r   test_to_numpy_unsupported_types   s    rb   c               	   C   s   t td} |  }tt d|d< W 5 Q R X | jddd}d|d< | d  dks^ttt | jddd W 5 Q R X d S )NrD   r   FT)rX   writable)	r   r   r4   rE   r%   r&   rZ   r!   r   )r   rQ   Znp_arr2r   r   r   test_to_numpy_writable   s    rd   unitsmsusnstzUTCc                 C   sP   t dddgt j| |d}tjdddgd| d}| }tj|| d S )Nr   r   r   rj   zdatetime64[{}]r_   )r   r   	timestamprM   formatrE   rO   rP   )re   rj   r   r.   rQ   r   r   r   test_to_numpy_datetime64   s    ro   c                 C   sL   t dddgt | }tjdddgd| d}| }tj|| d S )Nr   r   r   ztimedelta64[{}]r_   )r   r   durationrM   rn   rE   rO   rP   )re   r   r.   rQ   r   r   r   test_to_numpy_timedelta64   s    rq   c                  C   sF   t dddg } tjdddgtd}| jdd}tj|| d S )Nabr_   FrW   )r   r   dictionary_encoderM   ra   rE   rO   rP   )r   r.   rQ   r   r   r   test_to_numpy_dictionary  s    ru   c                  C   s   dd l } ttd}tdD ]"}| }t|dks<td }qt|dksTttdD ]H}ttd}| }d }|   t|j	j
}|dkst|  q\d S )Nr   rD   r   )rJ   r   r   r4   	to_pandasr   getrefcountr   rK   valuesrL   sum)rJ   r   iZseriesZbase_refcountr   r   r   test_to_pandas_zero_copy	  s    r{   c               	   C   s  t td} tdd | D }| ddddgks:t|jtdksNtt|d t j	j
ksftt| }| ddddgkst|jtd	ksttj| d
d}| ddddgkstt dddd g} | jt  kstt| }| }|d d dddgkstt|d s(t|jtdks>tt jt dddddgt dddg} t| }|jtdkst| dddddgkstd S )NrS   c                 S   s   g | ]}|qS r   r   ).0_r   r   r   
<listcomp>-  s     z test_asarray.<locals>.<listcomp>r   r   r   r   Oint64strr_   0123              ?       @float64rr   rs   cra   )r   r   r4   rM   Zasarraytolistr   r`   r>   libZ
Int64Valuer   isnanDictionaryArrayfrom_arrays)r   rQ   r[   r   r   r   test_asarray%  s0    

 
r   tyc                 C   sn   t jd| d}t jd d d g| d}t|dks2t||s@t| d kr\|jt  ksjtn|j| ksjtd S )Nr   r=   )r   nullsr   r   r   equalsr>   nullr   r   r.   r   r   r   
test_nullsM  s    r   c                  C   s  t d} tj }tj }|j| jd}|| 	d}tj
dd}d dtd gfd dtdfddtjdddgt d	fd
dtjd
d
gt d	fddtdgd ftjdt d	dtjdgd t d	ftd dtd d d gftddtdgd f|dt|gd f|dt|gd f|dtj|gd tjd| 	ddd	f| dt| gd f|dt|gd fddtdgd fddgdtddgddggftjddgtt d	dtjddggd tt d	fddddtdddgd fg}|D ]\}}}	t||}
t|
|ksNt|
j|	jsbt|
|	srt|	jt kr|
j|kstn|
jdks&tq&d S )Npytz)tzinfoz
US/Easternr   )daysrD   r   r=   gGz@r   stringrS         TrA   rh   rl   	   FrT   rr   rs   r   )r%   Zimportorskipdatetimedatetodaynowreplaceutc
astimezonetimezone	timedeltar   r   r   r   r   Zscalaruint8rm   time
large_listint8repeatr   r   r>   r   r   
null_count)r   r   r   Znow_utcZnow_with_tzZonedaycasesvaluesizer.   r   r   r   r   test_array_from_scalar`  sX    


  #r   c                  C   s   dddg} t jjddddg| d}t |d d}t jjdgd | d}||sVtt |d	 d}t jjdgd | d}||std S )
Nr1   barbazr   r   r   )
dictionaryrT   r   )r   r   r   r   r   r   )r   r   r-   r.   r   r   r   !test_array_from_dictionary_scalar  s    
r   c               
   C   s   t tdd} |  }tt|  t| D ]}| |  || ks,tq,tdt|  t|  D ]"}tt	 | |  W 5 Q R X qbtt| dt|  D ]"}tt	 | |  W 5 Q R X qtt|  t| D ]"}| t
|  || kstqd S )NrD      r   )r   r   r4   	to_pylistr   r!   r   r%   r&   
IndexErrorrM   int32)r   lstidxr   r   r   test_array_getitem  s    r   c            	   	   C   s  t td} | d}t tdd}||s6t| dd}t tdd}||s`t| d| sttt| t| dkstt| t| d dkstt| t| d ddksttt	 | d W 5 Q R X tt
 | dd W 5 Q R X | dd  | ds,t| dd | dd	sLt| d
d  | t| d srtt| }t| d |d D ]n}t| d |d D ]R}| || }|  |  || }| |kst|  |kstqqd S )NrD   r   rS      r   r3   r   rT   r   )r   r   r4   rB   r   r   r   r%   r&   r   rZ   validater   rE   r   )	r   slicedr.   Zsliced2Z	expected2nstartstopr   r   r   r   test_array_slice  s4    
  &r   c                  C   s  t d} t| }t|g}td d dtd ddtdddtdd dtdddtdddtd d dtdddg}|D ]}|| }t| | }||sttj|gd	gd
| }tj|gd	gd
}||st|| }t| | g}||sxtqxd S )N   r   r   r   rD   r   r   r   Zf0names)	rM   rN   r   r   rY   rB   r   r   Zrecord_batch)rQ   r   r\   r   caser-   r.   r   r   r   test_array_slice_negative_step  s,    









r   c                  C   s   t jdgt  d} t jddd gt  d}t dddg}t jg dgd gt t  d}| | dksnt| |dkst| | d	kst| | d	kst| | d
kstd S )Nr1   r=   r   r   r   r   r0   z
@@ -1, +1 @@
+"bar"
+null
z'# Array types differed: string vs int64z3# Array types differed: string vs list<item: int64>)r   r   utf8list_r   diffr   strip)arr1arr2arr3Zarr4r   r   r   test_array_diff  s     r   c                  C   sH   t td} ttd| D ]\}}|| kstqt| tsDtd S )NrD   )r   r   r4   zipr!   r   r"   r   )r   rz   jr   r   r   test_array_iter  s    r   c                  C   sf   t t dt  t dt  g} t jdddg| d}|dd   dd	d
ddd
gksbtd S )Nrr   rs   r         @r         @rT         @r=   r   r   r   r   rT   r   )r   structfieldr   float32r   r   r   )r   r   r   r   r   test_struct_array_slice  s    r   c               	   C   s@   G dd d} t |  g}tt t| W 5 Q R X d S )Nc                   @   s   e Zd ZdS )z1test_array_factory_invalid_type.<locals>.MyObjectN)__name__
__module____qualname__r   r   r   r   MyObject$  s   r   rM   r   r%   r&   rZ   r   )r   r   r   r   r   test_array_factory_invalid_type"  s    r   c                  C   s>   t dddg} t| }t| }t| |d ks:td S r   )rM   r   r   rw   r   r   )r   refcountr   r   r   r   test_array_ref_to_ndarray_base,  s    

r   c                  C   s   t jdddgt  d} t jdddgt  d}t jdddgt  d}| |kdksXt| |kdksht| |kdksxt| |kdkst| dkdkst| d kdkstd S )Nr   r   r   r=   TF)r   r   r   r   r   )r   r   r   r   r   r   test_array_eq4  s    r   c               	   C   s(  t tddddg} t tdg}t jt  d|| g}|jt  ksTt|	 dd ddgksltt jt  dd | g}|jt  kst|	 ddddgkstt jjt  d|| gdd}|jt  kst|	 d ddgkstt
t" t jjt  dd	d	gdd W 5 Q R X d S )
NrS   rT   r         r   r   offsetr0   )r   	py_bufferrM   int16r   r(   from_buffersr>   r   r   r%   r&   r'   )Z
values_bufZ	nulls_bufr   r   r   r   test_array_from_buffersD  s    r   c                  C   s  t dd ddg} |  }t jt| |d |d |d | j| j}| dd ddgks\t	t j
t  t| |  | j| j}| dd dd	gkst	t jt| |d |d |d }| dd ddgkst	| dd  }| }t jt||d |d |d d
|j}| d ddgks&t	|jdks6t	| dd  }| }t jt||d |d d d
|j}| ddgkst	|jdkst	d S )Nrr   rs   r   r   r   r      a   b   cr   )r   r   rF   ZStringArrayr   r   r   r   r   r   r(   r<   )r   rF   copiedZbinary_copyr   r   r   r   test_string_binary_from_buffersX  s`                      r   list_type_factoryc              	   C   s   | t  }t jdddgd g dddgg|d}|j|ks<t| }tt t j	
|dd |d g W 5 Q R X t j	
t  d|dd  }t j	j
|d|d d |gd	}||sttt& t j	j
|dd |d g||gd	 W 5 Q R X d S )
Nr   r   r   r   rS   rT   r=   r   children)r   r   r   r>   r   rF   r%   r&   rZ   r(   r   r   )r   r   r   rF   childr   r   r   r   test_list_from_buffers{  s    ""r   c               	   C   s  t t dt  t dt  g} t jdddd dddg| d}| }tt	 t j
| d	d |d
 g W 5 Q R X t j
t  d	|d
d	 t j
t  d	|d	d  g}t j
j| d	|d d
 |d}||sttt	( t j
j| d	|d g|d d
 d W 5 Q R X d S )Nrr   rs   r   r1   r   rT   r0   r=   r   r   r   )r   r   r   r   r   r   rF   r%   r&   rZ   r(   r   r   r   )r   r   rF   r   r   r   r   r   test_struct_from_buffers  s     &"
r   c               	   C   s  t jdddgt  d} t dd dg}t ddgd d	d gg}ddddgd
dd d d
ddd	d gd
g}t j| ||gdddg}|jt d| jfd|jfd|jfgkst| |kstt	
t t j| ||gddg W 5 Q R X t jg g }|jt g kst| g ks$tt jd| jdd}t d|j}t d|j}t jj| ||g|||gd}|jt |||gkst|jd jrt| |kstt	
t  t jj| ||g||gd W 5 Q R X t jjg g d}|jt g kst| g kstt dt  }t	j
tdd" t jj| ||g|||gd W 5 Q R X | ||g}	|||g}
t dddg}t jj|	|
|d}| d g|dd   kstt jj|	dddg|d}| d g|dd   kstt	j
tdd t jj|	|
dddgd W 5 Q R X t	j
tdd$ t jj|	|
t ddd gd W 5 Q R X t	j
tdd  t jj|	|
t |gd W 5 Q R X t jjg g |d}| |kst| d i i gkstd S )NrS   rT   r   r=   r   r0   r   r   r   )rr   rs   r   rr   rs   r   Fnullable)fieldsr   zint64 vs int32rU   T)r   maskr   r   zMask must ber   znot contain nulls)r   r   r   StructArrayr   r>   r   r   r   r%   r&   rZ   r   r   r   r'   rY   is_null)rr   rs   r   expected_listr   faZfbfcZfa2arraysr   r   r   r   r   test_struct_from_arrays  sp    

"$&

  "    
r	  c               	   C   sJ   t dddgdddgg} tjtdd t j| gd	g W 5 Q R X d S )
Nr   r   r   rS   rT   r   zExpected ArrayrU   r1   )r   rY   r%   r&   r'   r  r   )r\   r   r   r   test_struct_array_from_chunked  s    r
  r   )r   r   c                 C   sX   t dddddg }t jj|jt||  |j |j	| d}|| d  |ksTt
d S )Nonetwothreer   )r   r   rt   r   r   r>   r   indicesrF   r   r   )r   rr   rs   r   r   r   test_dictionary_from_buffers  s     r  c                  C   s   t dddgd} t jdddgtd}t ddd	dddg}tj| |}tjj| ||d
}|j | 	 ksrt
|j | 	 kst
|j |	 kst
|j |	 kst
tt| D ]Z}||  || |  kst
|| r||  d kst
q||  || |  kst
qd S )Nr   r   r   r1   r   r   r_   FTr  rM   r   r   ra   r   r   r   r  r   r   r   r   r4   r   r!   )r  r   r   d1Zd2rz   r   r   r   test_dictionary_from_numpy  s    r  c               	   C   s  t ddd dgjdd} t jt ddd dgt ddg}tj|jdd|  t	t j
 |jdd W 5 Q R X t jt ddddgt ddg}t ddddgjdd} tj|jdd|  t	t j
 |jdd W 5 Q R X t jt ddddgt dd	g}t dd	d	dg } tj|jdd|  tj|jdd|  t jt ddd dgt dd	g}t dd	d dgjdd} tjj|jdd| dd
 t jt ddd dgt ddg}t ddd dgjdd} tjj|jdd| dd
 d S )Nr1   r   FrW   r   r   Tgffffff+@g      &@)Z	equal_nanr   rA   )r   r   rE   r   r   rM   rO   rP   r%   r&   ArrowInvalidZassert_allclose)r.   rr   ZanonullsZafloatZafloat2Zaintsr   r   r   test_dictionary_to_numpy  s~    



	
r  c                  C   s   t dddgd} t jdddgtd}t| }t|}tj||}|j | 	 ks^t
|j |	 kstt
tt| D ] }||  || |  kst
qd S )Nr   r   r   r1   r   r   r_   r  )r  r   Ziarrdarrr  rz   r   r   r   !test_dictionary_from_boxed_arrays]  s    

r  c               	   C   s   t ddddddg} t dddg}t ddddg}t dddg}t j| | tt j t j|| W 5 Q R X tt j t j|| W 5 Q R X t jj||d	d
 d S )Nr   r   r   r   r   r1   r   r   Fsafe)r   r   r   r   r%   r&   ZArrowException)Zindices1Zindices2Zindices3r   r   r   r   'test_dictionary_from_arrays_boundscheckm  s    r  c                  C   sF   t ddddddg} t dddg}t j| |}|jjdd d S )	Nr   r   r   r1   r   r   Tfull)r   r   r   r   r  r   )r  r   r   r   r   r   test_dictionary_indices  s    r  )list_array_typer   c           
   	   C   s@  t jddddgdd}tj|dd}d	d
ddddddg}tj|dd}| ||}tj|d d |dd |dd g|t d}||st|tdt }| |||}|j|kst|jj	j
dkstdd ddg}d	d
ddddg}| ||}tj|d d d |dd  g|t d}||s:tddd dg}	| |	|}tj|d d |dd  d g|t d}||stdddg}t d}tt | || W 5 Q R X ddddg}ttd}| ||}tt |jdd W 5 Q R X |t }tt | j|||d W 5 Q R X d S )Nr   r   rT   r   i4r_   r   r=   r   r   r      d   e   f   g   hr<   namer   r   r   rD   Tr  )rM   r   r   r   r<   r   r   r   r>   value_fieldr$  rN   r%   r&   rZ   listr4   r   r'   )
r  r   offsets_arroffsetsZpyvaluesrx   r-   r.   typoffsets2r   r   r   test_list_from_arrays  sL    $




r+  r   r   c                 C   s<   t ||t  }| j|j|j| d}||ks8td S )Nr  )r   r   r   r   r(  rx   r  r   )r  r   r   reconstructed_arrr   r   r   !test_list_array_types_from_arrays  s      r-  c              	   C   s  t dgd dd gdgg|t  }t dd dddg}| |j|j}| dgg dd gdggksht| ||j}||kst| j|j|j| d}||kstt	j
tdd | j||j| d W 5 Q R X |dd  }d}t	j
t|d | j|j|j| d W 5 Q R X d S )	Nr   r   r   rS   r  zAmbiguous to specify both rU   z-Null bitmap with offsets slice not supported.)r   r   r   r   r(  rx   r   r   r  r%   r&   rZ   NotImplementedError)r  r   r   r(  r,  Z	arr_slicer]   r   r   r   &test_list_array_types_from_arrays_fail  s*    	$    r/  c                  C   s   t t jddddd} t jddgdgg| d	}|jjt jdt  ddksPt|jjt d
t 	 ksltt
|dks|td S )Nr$  r   Fr   r   rr   r   rs   r   r   r   r=   r   r   )r   map_r   r   r>   Z	key_fieldr   r   Z
item_fieldr   r   )tr   r   r   r   test_map_labelled  s
     r5  c                  C   sb   t ddgdggt t  t  } t dddddigt t  t  }| |s^td S )	Nr0  r1  r2  r   r   r   r   r   )r   r   r3  r   r   r   r   )Ztup_arrdict_arrr   r   r   test_map_from_dict  s    r7  c               	   C   s`  t jddddgdd} tj| dd}d	d
ddddddg}ttt|}tt||}|d d |dd |dd g}tj|dd}tj|dd}tj|||}tj|t	t
 t d}	||	stdd ddg}d	d
ddddg}dddd ddg}tt||}|d d d |dd  g}tj|dd}tj|dd}tj|||}tj|t	t
 t d}	||	s~tddddg}t d}t d}tj|||}
tt tj|dg || W 5 Q R X tt  tj||t ||g W 5 Q R X t|d d d g }t|t|ks6ttt tj||| W 5 Q R X d S )Nr   r   rT   r   r  r_   r   r=   r   r   r   r  r   r!  r"  r#  r<   r   r   r   rS   r   )rM   r   r   r&  r4   r   r   ZMapArrayr   r3  r<   r   r   r   rN   r%   r&   rZ   Zconcatenate)r'  r(  ZpykeysZpyitemsZpypairsZ	pyentrieskeysitemsr-   r.   r}   Zkeys_with_nullr   r   r   test_map_from_arrays  sB    "

 $r:  c               	   C   s&  t tdt  } t j| d}| ddddgdddd	gd
dddggksPt|j	t 
t  dsltt 
t dt  d}t jj| |d}| ddddgdddd	gd
dddggkst|j	|st|jjjdksttt t j| d W 5 Q R X tt  t jt g t  d W 5 Q R X tt t j| d W 5 Q R X t 
t  d}tt t jj| |d W 5 Q R X t 
t  d}tt t jj| |d W 5 Q R X tt t j|  W 5 Q R X t 
t  d}tt t jj| d|d W 5 Q R X d S )N   rS   r   r   r   r   rT   r   r   r   r   rD   rA   r$  r=   )	list_sizer>   )r   r   r4   r   ZFixedSizeListArrayr   r   r   r>   r   r   r   r%  r$  r%   r&   rZ   r   r'   )rx   r-   r)  r   r   r    test_fixed_size_list_from_arrays?  s4    ..$r>  c               	   C   s  t ddddgt  } t dddg}t j|| }| ddgddggksRt|jt 	t  sltt dd ddg}t j|| }| ddgd ddggkstt
t  t jt dddg|  W 5 Q R X t
t  t jt dddg|  W 5 Q R X d S )Nr   r   r   rS   r   r   rT   )r   r   r   	ListArrayr   r   r   r>   r   r   r%   r&   rZ   )rx   r(  r-   r   r   r   test_variable_list_from_arraysi  s    $r@  c               	      s,  t jddddgdd t jddd	gd
dt jdddddddgdd} t jdddddddgdd}t jddddddd	gdddddddd	dg fdd}|t j|  gddgddg| d |t j|  gddgddgddg| d |t jj| gddgdddgddg|d |t j| gddgddgddgddg|d t j| g}tt j |jdd W 5 Q R X t jj|  gddgd}tt j |jdd W 5 Q R X t jdddddddgdd}t j| | g}tt j |jdd W 5 Q R X d S )Nr   r   r   r  r<   r=   r   r   r   r   r   r   rA   r   r   c              	      s    j dd  fddt jjD }||ks2t jjdksBt jj|ksRt  ksbt| jsrt j	st 
dst 
dsttt  
d W 5 Q R X tt  
d	 W 5 Q R X d S )
NTr  c                    s   g | ]} j | jqS r   r>   r$  r|   rz   r-   r   r   r~     s   z?test_union_from_dense.<locals>.check_result.<locals>.<listcomp>Zdenser   r   r   r   )r   r4   r>   
num_fieldsr   mode
type_codesr   r   r(  r   r%   r&   KeyErrorr-   expected_field_namesexpected_type_codesexpected_type_code_valuesZactual_field_namesr<   r   py_valuevalue_offsetsrC  r   check_result  s     

z+test_union_from_dense.<locals>.check_resultr   r   rI  rJ  rK  binintrF  Tr  rS   )r   r   
UnionArray
from_denser%   r&   r  r   )typeslogical_typesrO  r   Zbad_offsetsr   rL  r   test_union_from_dense|  sj     
rX  c               	      s  t jdddddddgdd t jdd	ddd
ddgddt jdd	ddd	d	dgdd} t jdddddddgdd}dd	ddd
ddg fdd}|t j|  gddgdd	g| d |t j|  gddgddgdd	g| d |t jj| gddgdddgddg|d |t j| gddgddgddgddg|d t j| g}tt j |jdd W 5 Q R X t jj|  gddgd}tt j |jdd W 5 Q R X tt j  t j| d	d  g}W 5 Q R X d S )Nr       r   r   r  r<   r=   r   r   r   r   r   r   rA   r   c              	      s    j dd   kst fddt jjD }||ksBt jjdksRt jj|ksbt| jsrt 	dst 	dstt
tj  j W 5 Q R X t
t  	d W 5 Q R X t
t  	d	 W 5 Q R X d S )
NTr  c                    s   g | ]} j | jqS r   rA  rB  rC  r   r   r~     s   z@test_union_from_sparse.<locals>.check_result.<locals>.<listcomp>sparser   r   r   r   )r   r   r   r4   r>   rD  rE  rF  r   r   r%   r&   r   ArrowTypeErrorr(  rG  rH  r<   r   rM  rC  r   rO    s"    

z,test_union_from_sparse.<locals>.check_resultr   r   rP  rQ  rR  rS  Tr  )r   r   rT  from_sparser%   r&   r  r   )rV  rW  rO  r   r   r\  r   test_union_from_sparse  sZ    r^  c                  C   s   t jt jdddddgt  dt ddd ddgt dd d	dd	gg} |  dd d dd	gksdtt jt jdddddddgt  dt jdddd
ddd
gt  dt ddd dgt dd d	gg} |  dddd dd d	gkstd S )Nr   r   r=   r   皙?ffffff
@g@TFr   r   )	r   rT  r]  r   r   r   r   rU  r   r#   r   r   r   %test_union_array_to_pylist_with_nulls  s    ra  c               
   C   s*  t jt jddddgt  dt ddddgt ddd	d
gg} | dd   dd	d
gksbtt jddddgdd}t jddd	gdd}t jdddddddgdd}t jddddddd	gdd}t j||||g} |  }tt	| D ]8}t|t	| D ]$}| ||  ||| kstqqd S )Nr   r   r=   rr   rs   r   dr   r   rS   r   r   r   r  r<   r   r   r   )
r   rT  r]  r   r   r   r   rU  r4   r   )r   r<   r   rV  rN  r   rz   r   r   r   r   test_union_array_slice!  s    rc  Tr  check_array_constructionc          
      C   s   | \}}}}t |tjr,|j|ks&t|}ntj||d}t |tjrZ|j|ksTt|}ntj||d}|j||d}	|	jdd |	|st|rtj|||d}||std S )Nr=   r  Tr  r>   r  )	r"   r   r(   r>   r   r   castr   r   )
r   r  re  in_datain_typeZout_dataout_typer.   in_arrcastedr   r   r   _check_cast_case4  s    rm  c               
   C   sx  t jddddgdddt jddddgddt ft jddddgdddt jddddgd	dt ft jddddgdddt jddddgd
dt ft jddddgdddt jddddgddt fg} | D ]}t| qt jdgddddft jdgddddft jdgddddft jdgddddfg}|D ]<\}}}tj||d}t	tj
 || W 5 Q R X q6d S )Nr   r   r   r   i1r_   r   r  Zu4u1Zf8P  r   r   p uint16r   u2r=   )rM   r   r   r   rr  r   r   rm  r%   r&   r  rg  )
safe_casesr   unsafe_casesrh  ri  rj  rk  r   r   r   test_cast_integers_safeM  s8        
rv  c               	   C   s4   t dddg} tt | d  W 5 Q R X d S r   )r   r   r%   r&   r'   rg  r#   r   r   r   test_cast_nonei  s    rw  c               	   C   s   t ddgddgg} tt | t   W 5 Q R X t ddgdggt t  } tt | t   W 5 Q R X d S )Nr   r   r   rS   r   r   r   )	r   r   r%   r&   r.  rg  r   r   r<   r#   r   r   r   test_cast_list_to_primitiveq  s     rx  c                  C   sF   t jg dd} | jdkst| d d  }|| s6t| d d  d S )Nr   r=   r   rT   )r   rY   
num_chunksr   r   )r   r-   r   r   r   $test_slice_chunked_array_zero_chunks|  s
    rz  c                     sf   t dddgt dddgg} t | }t   | }t  fdd| D }||sbtd S )	Nr   r   r   rS   rT   r   c                    s   g | ]}|  qS r   )rg  )r|   xtargetr   r   r~     s     z+test_cast_chunked_array.<locals>.<listcomp>)r   r   rY   r   rg  r   r   )r  Zcarrrl  r.   r   r|  r   test_cast_chunked_array  s     

r~  c                  C   sn   t t  t  t  ft  t  ffD ]<\} }t jg | d}||}t jg |d}||s,t	q,d S Nr=   )
r   r   r   r   r   r   rY   rg  r   r   )typ1typ2r   r-   r.   r   r   r   test_cast_chunked_array_empty  s    
r  c               	   C   s8   t t tg gj} W 5 Q R X t| tjs4td S N)	r%   ZwarnsFutureWarningr   rY   rI   r"   ChunkedArrayr   )r   r   r   r   test_chunked_array_data_warns  s    r  c                  C   s   t jdgdddt dgjddt ft jdgdddt dgjddt ft jdgdddt dgjddt ft jdgddt t dgjddt fg} | D ]}t|d	d
 qd S )Nrp  r  r_   r   i2rq  rs  r   Fr  )rM   r   Zastyper   r   rr  rm  ru  r   r   r   r   test_cast_integers_unsafe  s&        r  c                  C   s   t jdddgdddt jdddgd	dt ft jdddgd
dd
t jdddgd	dt ft jdddgd
dd
t jdddgd	dt fg} | D ]}t|dd qd S )Nr   r         @r   r_   r   r   r   r  r   g      $g      4@g      >r   Tr  )rM   r   r   r   rm  rt  r   r   r   r   !test_floating_point_truncate_safe  s       r  c               
   C   s   t jdddgdddt jdddgd	dt ft jdddgd
dd
t jdddgd	dt ft jdddgd
dd
t jdddgd	dt fg} | D ]8}tjtjdd t|dd W 5 Q R X t|dd qd S )Nr_  g@r`  r   r_   r   r   r   r  r   g333333$g3333334@gL>r  r   r  	truncatedrU   Tr  F)rM   r   r   r   r%   r&   r  rm  r  r   r   r   #test_floating_point_truncate_unsafe  s"       r  c                  C   s   t dd t dgtdddd dgt ft dd t dgtd	d
dd dgt ft dd t dgtd	d
dd dgt fg} | D ]}t| t|dd qd S )N123456z-912345    rT   @ '1234-9123   rD     ]Z123z-91{   Tr  )decimalDecimalr   
decimal128r   r   r   rm  r  r   r   r   test_decimal_to_int_safe  s&    


r  c               
   C   s   t tdd tdgtdddd dgt ftdd tdgtddd	d d
gt ftdd tdgtdddd dgt fg} | D ]6}t	j
tjdd t| W 5 Q R X t|ddd qd S )NZ1234567890123z-912345678901234r  rT   iqir  z
-912345678i@ir  r  i]   zInteger value out of boundsrU   Frd  )rM   r   r  r  r   r  r   r   r   r%   r&   r  rm  )Zout_of_bounds_casesr   r   r   r   'test_decimal_to_int_value_out_of_bounds  s4    


r  c               
   C   s   t dd t dgtdddd dgt ft dd t dgtd	d
dd dgt ft dd t dgtd	d
dd dgt fg} | D ]8}d}tjtj	|d t
| W 5 Q R X t
|dd qd S )Nz	123456.21z
-912345.13r  rT   r  r  z1234.134z-9123.1r  rD   r  r  z123.1451z-91.21r  r  0Rescaling Decimal128 value would cause data lossrU   Fr  )r  r  r   r  r   r   r   r%   r&   r  rm  )Znon_integer_casesr   
msg_regexpr   r   r   test_decimal_to_int_non_integer  s0    


r  c               	   C   s  t jtdd gt ddd} | t dd}t jtdd gt ddd}||s`td}tj	t j
|d | t d	d
}W 5 Q R X | jt d	d
dd}t jtdd gt d	d
d}||sttj	t j
dd | t dd}W 5 Q R X d S )Nz1234.12r  rD   r=   r   r   r  rU   r   r   Fr  z1234.1z'Decimal value does not fit in precisionrT   r   )r   r   r  r  r  rg  r   r   r%   r&   r  )r   r-   r.   r  r   r   r   test_decimal_to_decimal8  s.    


r  c               	   C   sB   t tjdg} tjt jdd | jt  dd W 5 Q R X d S )Nr   r  rU   Tr  )	r   r   rM   nanr%   r&   r  rg  r   r#   r   r   r    test_safe_cast_nan_to_int_raisesT  s    r  c                  C   s   t jddddgddt t jddddgddt ft jddddgddt t jddddgd	dt fg} | D ]}t| qtd S )
Nr   r   r   r   rn  r_   ro  r  rs  )rM   r   r   r   rr  rm  r  r   r   r   test_cast_signed_to_unsigned[  s      r  c                  C   s  d gd } t  }t  t  t  t  t  t dt t  t t  dt 	t  t 
ddt dt jdddt jdddt dt  t t d	t  t d
t t  t dt  gt t  t  g}|D ]}t| || |f qt jt d	t dt d
t  gt jjdt jt d	t dt d
t  gt jjdg}t j| t  d}|D ]&}tt || W 5 Q R X qtd S )Nr   rD   rS   r  rh   rk   rl   zEurope/Parisrr   rs   r   )rE  r=   )r   r   r   float16r   r<   r   r   r   r   r  rm   rp   month_day_nano_intervalr   r   r   r   r   rm  unionr   ZUnionMode_DENSEZUnionMode_SPARSEr   r%   r&   r.  rg  )rh  ri  Z	out_typesrj  rk  r   r   r   test_cast_from_nullg  sP    

r  c                  C   s   t dddgt jdddgt  dft d dgt jd d	gt  dfg} | D ]\\}}|j|jd
d}|jd
d ||st|j|jd
d}|jd
d ||sPtqPd S )Nr   Z127z-128r      ir=   Z18446744073709551615l    Tr  r  )	r   r   r   uint64rg  r>   r   r   r   )r   rk  r.   rl  Zcasted_backr   r   r   $test_cast_string_to_number_roundtrip  s    r  c               	   C   s   t jddd gt t  t  d} t ddd g}| jt t  t  ksRt| t  |kshtt  t 	 t 
 fD ]F}t |t  }t jddd gt |t  d}| ||ks~tq~tt j | t 
  W 5 Q R X d S )Nr1   r   r=   )r   r   r   r   r   r>   r   rg  r   r   r   r%   r&   r  )r   r.   Zkey_typer)  r   r   r   test_cast_dictionary  s     r  c                  C   s`   t jdddgt  d} t jdddgt  d}| t  |sHt| d|s\td S )Nr1   r   r   r=   r<   )r   r   r   r<   viewr   r   r   r.   r   r   r   	test_view  s    r  c                  C   s   t ddddddgt dddgft dd ddgt dd dgft dd ddgt  t dd dgt  fg} | D ]<\}}| }||stt |g }||sxtqxd S )Nr   r   r   r1   r   )r   r   r?   uniquer   r   rY   r   r   r.   r-   r   r   r   test_unique_simple  s    $r  c                  C   sD  t ddddddgt dddgt jdddgt  dft dd ddgt dd dgt jdddgt  dft dd ddgt  t dd dgt  t jdddgt  dfg} | D ]\}}}|t |gfD ]h}| }|jt t 	d|jt 	dt  gst
|	d|s(t
|	d|st
qqd S )	Nr   r   r   r=   r1   r   rx   counts)r   r   r   r?   rY   value_countsr>   r   r   r   r   )r   r   Zexpected_valuesZexpected_countsZarr_inr-   r   r   r   test_value_counts_simple  s.    
r  c                  C   s<  t ddddddddddddg} t ddddg}t j| |}| }t j|  |}||sjt| }|d|st|d	t jdd
dgddstt jt jg dd|}| }t jt jg ddt jg dd}||st| }|d|st|d	t jg dds8td S )Nr   r   r   r1   r   r   Zquxrx   r  rT   rS   r   r=   r   )	r   r   r   r   r  r   r   r  r   )r  r   r   Zunique_resultr.   r-   r   r   r   (test_unique_value_counts_dictionary_type  s*    "$ r  c                  C   sV  t dddd dddgt jt jdddd dddgdddddgft dd ddgt jt jdd ddgddddgft jdd ddgt  dt jt jdd ddgddt jddgt  dfg} | D ]\}}| }||stt |g }|j	dkst|
d|stt jg |jd }|j	dks@t|j|jkstqd S 	Nr   r   r   r   r   r=   r1   r   )r   r   r   r   r?   rt   r   r   rY   ry  chunkr>   r  r   r   r   test_dictionary_encode_simple  s8    r  c               
   C   s  t dddd dddgdd t jt jddd ddgdddddgft d dd	dd
gdd t jt jdddgdddd	gft jd dd	dd
gt  ddd t jt jdddgddt jdd	gt  dfg} | D ]\}}| }||stt |g }|j	dkst|j
|j
ks,t|d|sBtt jg |j
d }|j	dksft|j
|j
kstqt dd	dg}|d  d S )Nr   r   r   r   r   r   r=   r1   r   Zxyzzyr   )r   r   r   r   Zlarge_stringrt   r   r   rY   ry  r>   r  rB   )r   r   r.   r-   r   r   r   r   test_dictionary_encode_sliced  sH     r  c                  C   s<   t jg t  d} |  }t|jdks,t|jdd d S )Nr=   r   Tr  )r   r   r   rt   r   r   r   r   )r   encodedr   r   r   "test_dictionary_encode_zero_length9  s    r  c                  C   s   t dddd dddgt jt jdddd dddgdddddgft dd ddgt jt jdd ddgddddgft jdd ddgt  dt jt jdd ddgddt jddgt  dfg} | D ]\}}| }||stqd S r  )r   r   r   r   r?   Zdictionary_decoder   r   )r   r.   r   r-   r   r   r   test_dictionary_decodeA  s,    r  c                  C   sT   t jtjdddgddt dd} t jdddgdd}| d}||sPtd S )	Nr   r   r   r   r_   rf   r=   r  )r   r   rM   time32rg  r   r   r   r.   r-   r   r   r   test_cast_time32_to_intU  s    
r  c                  C   sT   t jtjdddgddt dd} t jdddgdd}| d}||sPtd S 	Nr   r   r   r   r_   rh   r=   i8)r   r   rM   time64rg  r   r   r  r   r   r   test_cast_time64_to_int^  s    
r  c                  C   sT   t jtjdddgddt dd} t jdddgdd}| d}||sPtd S r  )r   r   rM   rm   rg  r   r   r  r   r   r   test_cast_timestamp_to_intg  s    
r  c               	   C   s|   t jdddgdd} | d}|d}t tdddtdddtdddgd}||sjt|| sxtd S )	Nr   r   r   r  r=   date32i  r   )r   r   rg  r   r   r   r   )r   Zresult1result2Z	expected1r   r   r   test_cast_date32_to_intp  s    

r  c                  C   sT   t jtjdddgddt dd} t jdddgdd}| d}||sPtd S r  )r   r   rM   rp   rg  r   r   r  r   r   r   test_cast_duration_to_int  s    
r  c               	   C   s   t jdddgt  d} | t  }t jdddgt  d}||sLtdd	g}t |}|jt  ksttt	
t |t   W 5 Q R X t j|td
gt  d}|t  }|jdkstd S )Ns   foos   bars   bazr=   r1   r   r      mañana	utf-16-leT)r   r>   r   )r   r   r<   rg  r   r   r   encoder>   r%   r&   rZ   r   rM   r   )Z
binary_arrZutf8_arrr.   Znon_utf8_valuesZnon_utf8_binaryZnon_utf8_all_nullrl  r   r   r   test_cast_binary_to_utf8  s    
r  c                  C   sR   t jtjdddgddt  d} t jdddgdd}| d}||sNtd S )Nr   r   r   r   r_   r=   r  )r   r   rM   date64rg  r   r   r  r   r   r   test_cast_date64_to_int  s    
r  c               	   C   s   t  ddddddd} t  ddd}tj| |gdd}tj|  | gdd}||s^t|d	}|d
  |d  kstd S )N  r   r;  "   8   r  r  r=   r   r   )r   r   r   r   r   r   r  r!   )Zval1Zval2r-   r  Zas_i8r   r   r   !test_date64_from_builtin_datetime  s    
r  )r   rx   boolFr      r      rr  rD   r   uint32r   r  r   floatr   g?g?doubler   rr   rs   r   r<   r   r   r   r   s   abcs   bcds   cdec                 C   s&   t j|| d}|| |s"td S r  )r   r   rg  r   r   )r   rx   r   r   r   r   test_cast_identities  s    r  )rI   r)  r   rS   r   r   r   rT   )r   rr   )r   r   c                 C   sH   t j| |d}tdtjd D ]$}tt||}||stqd S )Nr=   r   r   )	r   r   r4   pickleHIGHEST_PROTOCOLloadsdumpsr   r   )rI   r)  r   protor-   r   r   r   test_array_pickle  s    r  c                  C   sX   t jdddddgdddg} tdtjd D ]$}tt| |}| |s.t	q.d S )Nr   r   r   rr   rs   r   )
r   r   r   r4   r  r  r  r  r   r   )r   r  r-   r   r   r   test_array_pickle_dictionary  s    r  )Z	min_valueZ	max_valuer   c                 C   s&   t | }t |}| |s"td S r  )r  r  r  r   r   )r   rI   Zrestoredr   r   r   test_pickling  s    

r  c           
      C   s   t pt}t d kr$|jdk r$td tj| |d}dd | D }tdtjd D ]T}g }|j	|||j
d}|j||d}||std	d | D }	|	|ksTtqTd S )
NrT   z#need pickle5 package or Python 3.8+r=   c                 S   s   g | ]}|d k	r|j ndqS Nr   rG   r|   bufr   r   r   r~      s   z&test_array_pickle5.<locals>.<listcomp>r   )buffer_callback)rF   c                 S   s   g | ]}|d k	r|j ndqS r  r  r  r   r   r   r~   	  s   )pickle5r  r  r%   skipr   r   rF   r4   r  appendr  r   r   )
rI   r)  Z	picklemodr   	addressesr  rF   Zpickledr-   Zresult_addressesr   r   r   test_array_pickle5  s     
r  narrr_   c                 C   s   t | }| j| jksttj| |  tj| d d |d d   tj| dd  |dd    tj| dd |dd   d S )Nr   r   )r   r   r`   rE   r   rM   rO   rP   )r  r   r   r   r   test_to_numpy_roundtrip  s    
""r  c                  C   s<   t jdgt  d} t tjdgdd}| |s8td S )N            r=   u8r_   )r   r   r  rM   r   r   r  r   r   r   $test_array_uint64_from_py_over_range'  s    r  c                  C   s   t jddddgdd} t| }t| }t| |d ks@t|jdksNttjt jdt jddt jdgdddd}|jdkst|jd	kstd S )
Nr   r   r   rS   r   r_   r   r=   r   )	rM   r   r   rw   r   r   r>   r  r   )r   r   r   r   r   r   r   )test_array_conversions_no_sentinel_values-  s    

 r  c                  C   sN  t jddd gt dd} t jtjddtjddd gt dd}| |sRtt jddd gt dd} t jtjddtjd	dd gt dd}| |stt jddd gt d
d} t jtjddtjddd gt d
d}| |stt jdd	d gt dd} t jtjddtjddd gt dd}| |sJtd S )Nr   r   rf   r=   )secondrg     )microsecondr  rh   ri   )r   r   r  r   r   r   r   r  )r-   r.   r   r   r   test_time32_time64_from_integer;  s@    
 
 
 
 r  c                  C   s   dd } | d | d d S )Nc                 S   s:   t jdtjg| dd}t jdd g| d}||s6td S )Nr   Tr>   from_pandasr=   )r   r   rM   r  r   r   r   r   r   r   _check_caseX  s    z=test_binary_string_pandas_null_sentinels.<locals>._check_caser<   r   r   )r  r   r   r   (test_binary_string_pandas_null_sentinelsV  s    r  c                  C   sZ  d t jgdfdt jgdfdt jgdfdt jgdfdt jgdfdt jgtdfd	t jgt ftd
t jgtddfdt jgt fdt jgt fdt jgt	 fdt jgt
dfdt jgtdfdt jgtdfdt jgtdfg} | D ]\\}}tttf tj||d W 5 Q R X tj||d	d}|j|dkrJdndkstqd S )Nr   r   r<   r   r?   Z
large_utf8s   stringr   Tr   r;  r   r   rf   rh   r=   r  r   )rM   r  r   r<   bool_r  r  r  r  r  r  r  rm   rp   r%   r&   rZ   r'   r   r   r   )r   r   r   r-   r   r   r   &test_pandas_null_sentinels_raise_error`  s*    r  c                  C   sP   dd l } | jddtjgtd}t|}tjddtjgdd}||sLtd S )Nr   r   r   r_   T)r  )	pandasIndexrM   r  ra   r   r   r   r   )pdr   r-   r.   r   r   r    test_pandas_null_sentinels_index}  s
    
r  c                  C   s   t jd tdddgdd} t| }tjd tdddgt d}||sTt|jdd}t j	
||  |j| jks~td S )N  rS   zdatetime64[D]r_   r=   FrW   )rM   r   r   r   r   r  r   r   rE   rO   rP   r`   r,   r   r   r   )test_array_roundtrip_from_numpy_datetimeD  s    
 r  c                  C   sL   t d tddddddtddddd	dg} | jt jd
d dksHtd S )Nr  rS   r;  rA   rD     r   r   r   rh   rl   )r   r   r   r>   rm   r   r#   r   r   r   test_array_from_naive_datetimes  s    r	  )r`   r>   datetime64[s]datetime64[ms]zdatetime64[us]zdatetime64[ns]c              
   C   s   d t  ddddddt  ddddd	dg}ttj|| d
}tj||d}||sZttttj|| d
}||std S )Nr  rS   r;  rA   rD   r  r   r   r   r_   r=   )r   r   r   rM   r   r   r&  )r`   r>   rI   r   r.   r   r   r   test_array_from_numpy_datetime  s    r  c               
   C   s   d t  ddddddt  ddddd	dg} tj| d
d}tj| dd}t|d d	 t|d	d   } ttj t|  W 5 Q R X d S )Nr  rS   r;  rA   rD   r  r   r   r   r
  r_   r  )r   rM   r   r&  r%   r&   r   ArrowNotImplementedError)rI   rf   rg   r   r   r   5test_array_from_different_numpy_datetime_units_raises  s     r  c                 C   s   t d| }t d| }t d| }t|||g}tj|||gt| d}|j|jks^t|jj| ksnt|d |d kstd S )NNaT2017-01-01 01:01:01.1111111112018-11-22 12:24:48.111111111r=   r   )rM   
datetime64r   r   rm   r>   r   re   )re   r   r{  ya1Za2r   r   r   "test_array_from_list_of_timestamps  s    r  c               	   C   sN   t d} t d}t d}tjtjdd t| ||g W 5 Q R X d S )Nr  r  r  z'Unbound or generic datetime64 time unitrU   )rM   r  r%   r&   r   r  r   )r   r{  r  r   r   r   +test_array_from_timestamp_with_generic_unit  s    


r  ztimedelta64[s]ztimedelta64[ms]ztimedelta64[us]ztimedelta64[ns]c                 C   s   d t dt ddg}tj|| d}t|}t|tjs@t|j|ksNttj||d}|	|sjt|
 |kszttttj|| d}|	|st|
 |kstd S )Nr   r   r_   r=   )r   r   rM   r   r   r"   ZDurationArrayr   r>   r   r   r&  )r`   r>   rI   rQ   r   r.   r   r   r   test_array_from_numpy_timedelta  s    

r  c               
   C   s   t d} | gt | gfD ]$}tt t| W 5 Q R X qt dd} | gt | gfD ]$}tt t| W 5 Q R X q`d S )Nr   M)rM   Ztimedelta64r   r%   r&   r.  r   )tdrI   r   r   r   .test_array_from_numpy_timedelta_incorrect_unit  s    
r  c               	   C   sP  t jdddgdd} t| }|jdks,ttjdddgdd}||sNtt dd	dg}tj| |d
}tjdd dgdd}||stt jdddgd ddd d d } t dd	dgd d d d }tj| |d
}tjddd ddd ddgdd}||s
tt jdddgdd} t| }tjdddgdd}||sLtd S )Nabcdeabcr0   z|S5r_   r<   r=   FTr  rT   r   z|S0rM   r   r   r>   r   r   )r   	arrow_arrr.   r   r   r   r   test_array_from_numpy_ascii	  s(    
"
r  c                  C   s   d t jddddddddg} t| t }t|tjs<t|jt ksNtd t	ddt jddddddt jdd d gg}t|}|
|st| |kstd S )Nr   )r   secondsmicrosecondsmillisecondsminuteshoursweeksr   r   )r   r!  r"  r#  r$  r!  r  )r   r   r   r   r  r"   MonthDayNanoIntervalArrayr   r>   MonthDayNanor   r   rI   r   r  r.   r   r   r   "test_interval_array_from_timedelta!	  s6    
    

r*  c                  C   s  ddl m}  ddlm} d | dddddddddd	g}t|}t|tjsPt|j	t
 ksbtd tddtjdddddtjdd	 d
 gg}t|}||st|  d |ddtjdddddtjdd	 ddgksttt t|dddg W 5 Q R X tt t|dddg W 5 Q R X tt t|dddg W 5 Q R X tt t|dd	g W 5 Q R X d S )Nr   )relativedelta
DateOffsetr   )	yearsmonthsr   r   r!  r#  r$  r%  leapdaysr   r   r   r!  r#  r$  r&  r  r/  r   r!  nanosecondsiUUUr3   )r.  r/  i$I$)r%  r   l   	z )r   r3  l   \kpz)Zdateutil.relativedeltar+  r  r-  r   r   r"   r'  r   r>   r  r(  r   r   r   rv   r   r%   r&   rZ   )r+  r-  rI   r   r  r.   r   r   r   &test_interval_array_from_relativedelta7	  sh         
 


  

r4  c                  C   sz   d dg} t | t  }t|t js(t|jt  ks:td t dddgg}t |}||sft|	 |ksvtd S )N)r   r   r   r   r5  )
r   r   r  r"   r'  r   r>   r(  r   r   r)  r   r   r   test_interval_array_from_tuplea	  s    
r6  c                  C   s$  ddl m}  d | dddddddddd	|  g}t|}t|tjsHt|jt ksZtd t	dddgt	dddgg}t|}|
|std | ddtjdddddtjdd	 dd
| ddddd
g}|  |kstt|g  }t|dks
tt|d |ks td S )Nr   r,  r   )	r.  r/  r   r   r!  r#  r$  r%  r3  r   r   l   E5IQr1  r&  r2  )Zpandas.tseries.offsetsr-  r   r   r"   r'  r   r>   r  r(  r   r   r   rv   r   r   r&  )r-  rI   r   r  r.   Zexpected_from_pandasZactual_listr   r   r   #test_interval_array_from_dateoffsetp	  sL         

  
	r7  c               
   C   sb  ddg} | D ]}t jdddg|d}t|}|jdks>ttjdddgdd}||s`tt d	d
d	g}tj||d}tjdd dgdd}||stt jdddgd |dd d d }t d	d
d	gd d d d }tj||d}tjddd ddd ddgdd}||stqt jdddgdd}t|}tjdddgdd}||s^td S )Nz<U5z>U5r  r  r0   r_   r   r=   FTr  rT   r   z<U0r  )dtypesr`   r   r  r.   r   r   r   r   test_array_from_numpy_unicode	  s2    

" 
r9  c                	   C   s8   t t$ tjtdddgt d W 5 Q R X d S )Nr   r   r   r=   )r%   r&   r'   r   r   rM   r   r   r   r   r   !test_array_string_from_non_string	  s    r:  c               	   C   s   t jd d gtd} tj| t d}|jdks2tt jt jt jgdd} t	t
 tj| t d W 5 Q R X tj| t dd}|jdkstd S )Nr_   r=   r   r   Tr  )rM   r   ra   r   r   r   r   r  r%   r&   r'   )valsr   r   r   r   test_array_string_from_all_null	  s    r<  c               	   C   s   t jjddddgdddddgd} t| }tjddd dgdd	}||sPttjtd
d" tj| t ddddgd W 5 Q R X d S )Nr   r   r   rS   r   FT)r`   r   r=   z Cannot pass a numpy masked arrayrU   r  )	rM   mar   r   r   r   r%   r&   rZ   r=  r-   r.   r   r   r   test_array_from_masked	  s    

r?  c                  C   s>   t jjdgdd} t| }tjdgdd}||s:td S )Nr   r   r_   r=   )rM   r=  r   r   r   r   r>  r   r   r   test_array_from_shrunken_masked	  s    
r@  c               	   C   st   d} t dddgdddgg}tjt| d t| W 5 Q R X t d	}tjt| d t| W 5 Q R X d S )
Nz only handle 1-dimensional arraysr   r   r   rS   rT   r   rU   r   r   )r]   Zarr2dZarr0dr   r   r   "test_array_from_invalid_dim_raises	  s    
rA  c                  C   sx   t jdtd} t| d d df }tdddg}||sBtt| dd d f }tddg}||sttd S )N)r   r   r_   r   T)rM   Zonesr  r   r   r   r   r,   r   r   r   test_array_from_strided_bool	  s    rB  c                  C   s   dddgt  t dffdddgt  t  t  t  ffddd	gt  t  ffd
ddgt  ffg} | D ]h\}}t	
|}|D ]P}d t	
ddgfD ]8}t j
|d d d ||d}|d d d | kstqqqpd S )N   ab   cd   efr   r   r   r   r   r  abcdZefFr  )r   r<   r   r   r   r   r   r   r   rM   r   r   r   )Zpydatarx   r8  nparrayZpatyper   arrow_arrayr   r   r   test_array_from_strided	  s    $
rJ  c                  C   s:   t ddd dd dgd } | jdks(t| jdks6td S )NTFr  i  )r   r   Z
true_countr   Zfalse_countr#   r   r   r   #test_boolean_true_count_false_count
  s    rK  c                  C   s  t jddd dgt  d} |  }t|dks2t|d  }dt|  krVdks\n tt|d dkspt| dd  }| }|jdk t|dkst|d  }dt|  krdksn tt|d dkstt	
d|d  d	kstt tdd
dg} |  }t|dks(t|d d ks:tt	
d|d  dksXtt dd dg} |  }t|dkst|d  }t|d d
kst|d  }t	
d|dkst|d  }|dkstd S )Nr   r   rS   r=   r   @   rA   Zhhxxh)r   r   rS   rT   r   Z3b)rS   rT   r   s   foo!s   bar!!r   4i)r   rS   rS   r   s	   foo!bar!!)r   r   r   rF   r   r   
to_pybytes	bytearrayr   r   unpackrM   r   )rr   rF   null_bitmapZa_slicedr(  rx   r   r   r   test_buffers_primitive
  s8    
rR  c               
   C   s  t jddgd dd ddggt t  d} |  }t|dksBt|d  }t|d dksbt|d  }t	
d|d	kst|d  }t|d d
kst|d  }t	
d|dkstt jdd dgt 	t dt  t dt  gd} |  }t|dkst|d  }t|d dks4t|d  }t|d dksVt|d  }t	
d|dksxt|d  }t|d dkst|d  }t	
d|dkstd S )Nr   r   r   rS   rT   r=   r   rM  )r   r   r   r   7   Zqqq8xqq)r   r   r   rS   rT   )*   N)N+   rr   rs   Zbxx)rT  r   Z4xh)rU  )r   r   r   r   rF   r   r   rN  rO  r   rP  r   r   r   )rr   rF   rQ  r(  rx   r   r   r   test_buffers_nested-
  s8    *rV  c                  C   s  t tjdddgdd} | jdks(t|  dks8tt| t	| | j ksVtt jdd dgdd	} | jd
ksxt|  d
kstt| t	| | j kstt jddgd dd ddggt 
t  d	} | jdkst|  dkstt| t	| | j kstt jdddggddgggt 
t 
t  d	} |  dksPt| jdks`tt jddgddggdddgd dggddgggt 
t 
t  d	} | dd}|jdkst| dkstd S )NrS   rT   r   r   r_      r   r   r=      r   >   B   r   r   rD         r      rS  )r   r   rM   nbytesr   Zget_total_buffer_sizer   	getsizeofra   
__sizeof__r   r   r   rB   )rr   r  r   r   r   test_total_buffer_sizeP
  s*    * 0,ra  c                  C   sH   t t jdd dgt  dt jdddgt  dg} | jdksDtd S )Nr   r   r=   rS   rT   r   r   )r   rY   r   r   r^  r   )rr   r   r   r   test_nbytes_sizeg
  s    rb  c                	   C   s*   t t ttdg W 5 Q R X d S )Nr   )r%   r&   r'   reprr   Tensorr   r   r   r   $test_invalid_tensor_constructor_reprm
  s    re  c                	   C   s"   t t t  W 5 Q R X d S r  )r%   r&   r'   r   rd  r   r   r   r    test_invalid_tensor_constructions
  s    rf  )offset_typer   c           	   
   C   s|  ||t  }t jd dd dgd ddggg g ddgd gddggg|d	}t jd
d
ddddg| d	}|t  }t jdd dgd ddgg ddgd ddgg|d	}t jd
dddddddg| d	}t jdd dddddddg	t  d	}| |st|j|st|j|st| |s(t|j|s:t|j|sLt|  |sdt|jj|sxtd S )Nr   r   r   rS   rT   r   r   r   r=   r   r   )r   r   r   flattenr   r   r(  rx   )	rg  r   r  r   r*  r  r   Zoffsets1arr0r   r   r   test_list_array_flattenx
  sp    	     rj  	list_typer=  c                 C   sV   t jddgd d d gddgg| d}t jddddddgt  d}| |sRtd S )Nr   r   r   rS   r=   r   )r   r   r   Zvalue_parent_indicesr   r   )rk  r   r.   r   r   r   test_list_value_parent_indices
  s    rm  )rg  rk  c                 C   s   t |dd rFtjddgd d d gddgg|d}tjdd ddg| d}n6tjdddgd g ddgg|d}tjdd ddg| d}| |std S )Nr=  r   r   r   rS   r=   r   )getattrr   r   Zvalue_lengthsr   r   )rg  rk  r   r.   r   r   r   test_list_value_lengths
  s(    ro  c                 C   s   | t  }t jdgddgdddgg|d}| d d }t d|d	< |j|jt|||jgd
}|	 dgd dddggkst
|j	 d	dddgkst
| }|jdd |j|jkst
|	 ddddgkst
|j	 ddddddgkst
d S )Nr   r   r   rS   rT   r   r=      r   r   Tr  )r   r   r   rF   r   r   r>   r   rx   r   r   r(  rh  r   
value_type)r   r)  r   rF   Z	flattenedr   r   r   %test_list_array_flatten_non_canonical
  s     rr  klassc                 C   s  | j ddddgddddddgd}|j ddddddgks@t|j ddddgksZt|dd  }|j ddddddgkst|j dddgkst|  dddgkst|jd  }|jd  }|d  |j||    krdgksn td S )	Nr   r   rS   r   r   r   rT   )r(  rx   )r   rx   r   r   r(  rh  r!   )rs  r   r   rz   r   r   r   r   %test_list_array_values_offsets_sliced
  s    "rt  c                  C   s&  t t t  dd} t jddgddgddggd dd gd dd	ggg| d
}|j| s\tt t  d}t jddgddgddgdd gd dd	gg|d
}|j|st| |stt  }t jdddddddd dd	g
|d
}|j|st| |s
t|  |s"td S )Nr   r   r   rS   rT   r   r   r   r   r=   )r   r   r   r   r>   r   r   rh  )r  r   r  r   Ztyp0ri  r   r   r   "test_fixed_size_list_array_flatten  s\                 ru  c                  C   sT   t jdgdgdggt jt  ddd} | dd   t jdgt  dksPtd S )Nr   r   r   rl  r=   )r   r   r   r   rh  r   )r   r   r   r   -test_fixed_size_list_array_flatten_with_slice'  s    rv  c               	   C   sd  t t  t  } t t jdt  ddt dt  g}t jddgdgg| d}|jj	|sht
|jt jd	d
dddddddg|dkst
|j	t d	ddgst
|j	t jd
ddgt  dst
t j|j|j	t d	dgdggst
t j|j|j	t jd
dgdggt t  dsBt
tt |  W 5 Q R X d S )NkeyFr   r   r0  r1  r2  r=   rr   r   )rw  r   rs   r   r   r   )r   r3  r   r   r   r   r   rx   r>   r   r   r8  r9  r?  r   r(  r   r%   r&   r.  rh  )r   Z	ty_valuesrr   r   r   r   test_map_array_values_offsets-  s.    $
 
rx  c                  C   s  t t dt  t dt  g} t jdddg| d}| \}}|jt  ksXt|jt  ksjt|	 ddd	gkst|	 d
ddgkst|dd   \}}|	 dd	gkst|	 ddgkstt jdd dg| d}| \}}|	 dd dgks
t|	 d
d dgks"t|dd   \}}|	 d dgksLt|	 d dgksbtt jdddg| d}| \}}|	 ddd gkst|	 d ddgkst|dd   \}}|	 dd gkst|	 ddgkstt jdd dg| d}| \}}|	 dd d gks*t|	 d d d
gksBt|dd   \}}|	 d d gkslt|	 d d
gkstd S )Nr{  r  r   r   r   r=   r   r   rT   r   r   r   )r   N)r         @)Nr   r   ry  )Nr   )
r   r   r   r   r   r   rh  r>   r   r   )r   rr   ZxsZysr   r   r   test_struct_array_flattenE  sB    rz  c            
   
   C   s  t t dt  t dt  g} t jdddg| d}|d}|d}|d	}|d
}|d}|d}t|t jjst	t|t jj
st	|t jdddgt  dst	|t jdddgt  dst	||st	||st	||s
t	||st	d t  fD ]&}tt || W 5 Q R X q&dD ]&}tt || W 5 Q R X qRdD ]&}	tt ||	 W 5 Q R X q~d S )Nr{  r  r   r   r   r=   r   r   r   r   r   rT   r   r   r   r   r5  zr0   )r   r   r   r   r   r   r"   r   
Int16Arrayr   
FloatArrayr   r%   r&   r'   r   rG  
r   rr   Zx0Zy0x1y1Zx2y2Zinvalid_indexZinvalid_namer   r   r   test_struct_array_fieldk  s6    





""r  c            
   
   C   s  t t dt  t dt  g} t jdddg| t dddgd}|d	}|d
}|d}|d}|d}|d}t|t jj	st
t|t jjst
|t jd
d dgt  dst
|t jdd dgt  dst
||st
||s
t
||st
||s*t
d t  fD ]&}tt || W 5 Q R X q6dD ]&}tt || W 5 Q R X qbdD ]&}	tt ||	 W 5 Q R X qd S )Nr{  r  r   r   r   FTr>   r   r   r   r   r   rT   r=   r   r   r{  r|  )r   r   r   r   r   r   Z_flattened_fieldr"   r   r~  r   r  r   r%   r&   r'   r   rG  r  r   r   r   !test_struct_array_flattened_field  s:    





""r  c                  C   s   t  t  t  t  t  t  t  t  t 	 t 
 t  t  t  t  t  t  t jddt  g} t| | D ]D\}}zt jg |d| W q t jjt jfk
r   Y qY qX qd S )NrS   )lengthr=   )r   r   r   r   r   r   r   r   rr  r  r  r  r   r   r  r  r<   r   	itertoolsproductr   rg  r   r  r  )rV  t1t2r   r   r   test_empty_cast  s0    
r  c                  C   s   t jdddgddg} t jdddg| }| ddgdggksFtt jdddgddg} t jdddddg| }| dddddgkstd S )Nr   r   rr   rs   r   r   )r   r   r   r?  r   r   )r6  Zlist_arrZ	dict_arr2r   r   r   test_nested_dictionary_array  s    r  c               	   C   s  t ddg} t jddgtd}t| t }t|t }tddg}||s\t||sjtt jddgtd}tj| t |d}||stt ddg} t	
t t| t  W 5 Q R X t	
t" tj| t t dgd W 5 Q R X d S )NZtotoZtatar_   Fr  r  r  )rM   r   ra   r   r   r   r   r  r  r%   r&   rZ   )ZvecZvec2r   r   r.   r   r   r   r   test_array_from_numpy_str_utf8  s    r  c            
         s  dg} dg}dd t dD dd  D  | fddt d	D 7 } | fd
dt d	D 7 }| t f|t ffD ]\}}t|}t|}d }t|tjst	|j
|kst	|jdkst	d}t |jD ]6}||}|D ]"}	|	 || kst	|d7 }qqq|d S )N   xr{  c                 S   s(   i | ] }|d d t |d d qS )r  i rD   r   )r   r  rB  r   r   r   
<dictcomp>  s    z9test_numpy_binary_overflow_to_chunked.<locals>.<dictcomp>rD   c                 S   s   i | ]\}}|| d qS )r   )decode)r|   rz   r{  r   r   r   r    s    c                    s   g | ]} |d   qS rD   r   rB  )unique_stringsr   r   r~     s     z9test_numpy_binary_overflow_to_chunked.<locals>.<listcomp>i   c                    s   g | ]} |d   qS r  r   rB  )unicode_unique_stringsr   r   r~     s      r   r   )r4   r9  r   r<   r   rM   r   r"   r  r   r>   ry  r  r!   )
rx   Zunicode_valuesr   Zex_typer   r  Zvalue_indexrz   r  valr   )r  r  r   %test_numpy_binary_overflow_to_chunked  s6    




r  c                  C   s   d} d}| gg|d  }t |}t|t js2tt||d ksFt| gg| }t |}t|t jsltt||ks|tt|d|d kstt|ddkstd S )NA   xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxi    r   r   )r   r   r"   r(   r   r   r  r  )Zkilobyte_stringZtwo_megar;  r   r   r   r   #test_list_child_overflow_to_chunked  s    

r  c                  C   s   t jddd dgddddgd} | t  ks.tt jddd dgtddddgd} | t  ksbtt jg g dt  ks|td S )Nr1   r   r   FTr  )r   Z
infer_typer   r   rM   r   r   )r   r   r   r   test_infer_type_masked-  s    
r  c                  C   sz   t jdd ddgtddddgd} | jt  ks6tt jtjdd ddgddtddddgd} | jt  ksvtd S )NrS   r  FTr  r   r_   )r   r   rM   r>   r   r   r#   r   r   r   test_array_masked<  s    r  c                  C   s  t jdd ddgtddddgd} |  dd dd gks<tt jdd ddgt ddddgd} |  dd dd gksxtt jdd ddgddddgd} |  dd dd gkstt jddd dgddddgd} |  dd d d gksttt j* t jdd ddgt dddd	gd} W 5 Q R X tt j$ t jdd ddgdddd	gd} W 5 Q R X tt j* t jdd ddgtdddd	gd} W 5 Q R X tt j< t jdd ddgt jddddgt ddddgdd} W 5 Q R X tt j* t jdd ddgt dd ddgd} W 5 Q R X tt* t jtdd ddgddddgd} W 5 Q R X tt0 t jtdd ddgt ddddgd} W 5 Q R X d S )
NrS   r  FTr  r   r   r   g      @)	r   r   rM   r   r   r%   r&   r[  r'   r#   r   r   r   test_array_supported_masksH  s\    



r  c                  C   sL   dd l } tj| jddgddd| jddgdd	d
}| d dgksHtd S )Nr   r   rr   r   )r$  r`   TFr  r_   r  )r  r   r   ZSeriesr   r   )r  r   r   r   r   !test_array_supported_pandas_masksz  s
    r  c                  C   sv  t jdgt dtdgd} dg|  ks2tt jtdgt dtdgd}dg| ksjtt jtdgt dtdgd}d g| kstt jtdgt  tdgd}dg| kstt jtdgt  tdgd}d g| ksttdddgd	 }t j|t d
tdddgd	 d}d||dk< dddgd	 | ksrtd S )Nrp  r   Fr  Ts   aaas   bbbs   cccrD   r   s   XXX)r   r   r<   rM   r   r   )Zmasked_basicZmaskedZmasked_nullsZnparI  r   r   r   test_binary_array_masked  s4    




r  c                  C   s   t dddg} tj| d d d tdt ddgd}ddg| ksNtt dddg} t| d d d td}ddg| kstd S )NrC  rD  rE  r   Fr  )rM   r   r   r<   r   r   )rH  rI  r   r   r   test_binary_array_strided  s    r  c               
   C   s   ddgt jddgddtdfddgt dgdggtjdfdddgt ddgtjd	ft ddgt jddgddtdft ddgt dgdggtdft dddgt ddgtd	fg} | D ]4\}}}}tj||d
 tj||d W 5 Q R X qd S )Nr   r   Fr   r_   zmust be boolean dtypezmust be 1D arrayr   zdifferent lengthrU   r  )rM   r   r'   r   r  rZ   r%   r&   )r   objr   exr]   r   r   r   test_array_invalid_mask_raises  s8          r  c                	   C   s*   t t ttdg W 5 Q R X d S )Nr  )r%   r&   OverflowErrorr   r   rR  r   r   r   r   test_array_from_large_pyints  s    r  c               	   C   s$  G dd d} | t jdddgdd}t|}tjdddgt d}||sVttj|t d}tjdddgt d}||sttj|t d}tjdddgt d}||sttt	  tj|t d	d
d	gd W 5 Q R X tt	 tj|dd W 5 Q R X G dd d}|t jdddgdd}tt
 t| W 5 Q R X G dd d}|t jdddgdd}t|}tjdddgt d}||stG dd d}t jdddgdd}|||}t|}tjdddgdddggt d}||s td S )Nc                   @   s   e Zd Zdd ZdddZdS )z$test_array_protocol.<locals>.MyArrayc                 S   s
   || _ d S r  rI   selfrI   r   r   r   __init__  s    z-test_array_protocol.<locals>.MyArray.__init__Nc                 S   s   t j| j|dS r  )r   r   rI   r  r>   r   r   r   __arrow_array__  s    z4test_array_protocol.<locals>.MyArray.__arrow_array__)Nr   r   r   r  r  r   r   r   r   MyArray  s   r  r   r   r   r   r_   r=   TFr  r  c                   @   s   e Zd Zdd ZdddZdS )z+test_array_protocol.<locals>.MyArrayInvalidc                 S   s
   || _ d S r  r  r  r   r   r   r    s    z4test_array_protocol.<locals>.MyArrayInvalid.__init__Nc                 S   s   t | jS r  )rM   r   rI   r  r   r   r   r    s    z;test_array_protocol.<locals>.MyArrayInvalid.__arrow_array__)Nr  r   r   r   r   MyArrayInvalid  s   r  c                   @   s   e Zd Zdd ZdddZdS )z%test_array_protocol.<locals>.MyArray2c                 S   s
   || _ d S r  r  r  r   r   r   r    s    z.test_array_protocol.<locals>.MyArray2.__init__Nc                 S   s   t j| jg|dS r  )r   rY   rI   r  r   r   r   r    s    z5test_array_protocol.<locals>.MyArray2.__arrow_array__)Nr  r   r   r   r   MyArray2  s   r  c                   @   s   e Zd Zdd ZdddZdS )z%test_array_protocol.<locals>.MyArray3c                 S   s   || _ || _d S r  )data1data2)r  r  r  r   r   r   r    s    z.test_array_protocol.<locals>.MyArray3.__init__Nc                 S   s   t j| j| jg|dS r  )r   rY   r  r  r  r   r   r   r  	  s    z5test_array_protocol.<locals>.MyArray3.__arrow_array__)Nr  r   r   r   r   MyArray3  s   r  )rM   r   r   r   r   r   r   r%   r&   rZ   r'   rY   )r  r   r-   r.   r  r  r  rQ   r   r   r   test_array_protocol  s<    
$


"r  c                  C   sB   t t ddgt ddgg} | t ddddgs>td S )Nr   r   r   rS   )r   concat_arraysr   r   r   )Zconcatenatedr   r   r   test_concat_array  s    r  c                	   C   s:   t tj$ ttdgtdgg W 5 Q R X d S )Nr   r   )r%   r&   r   r  r  r   r   r   r   r   !test_concat_array_different_types  s    r  c               	   C   sd   t jtdd td g W 5 Q R X tddgddgg} t jtdd t|  W 5 Q R X d S )Nzshould contain Array objectsrU   r   r   r   rS   )r%   r&   r'   r   r  rY   r#   r   r   r   test_concat_array_invalid_type  s
    r  c                  C   s^   t jdddgt jdddd} |  }|jjd k	s6tt | g} |  }|jjd k	sZtd S )Nr   r   r   rf   zEurope/Brusselsrl   r=   )r   r   rm   rv   dtrj   r   rY   )r   rf   r   r   r   test_to_pandas_timezone)  s    r  c                  C   sZ   t dgt dgt dgg} t| }| }|d jdksFt| | ksVtd S )Nr   r   r   r   r  )rM   r  r   r   rv   r`   r   r   )r.   r   r-   r   r   r   test_to_pandas_float16_list4  s
    "
r  c                  C   s   t jdddgt  d} | d}| dddgks8tt dddgd	dd
gg} | d}| d
dd	dddgksxtt jdddd gt  d} | jddd}| dddd gkst| jddd}| d dddgkstd S )NrT   r   #   r=   
descendingr   r   r   rS   r   at_end)null_placementat_start)r   r   r   sortr   r   rY   )r   
sorted_arrr   r   r   test_array_sort>  s    

r  c               	   C   sB  t jjt jddddgt  dt ddddggd	d
gd} | jdd	d}| ddddddddddddgksztt jjt jddddgt  dt ddddggd	d
gt ddddgd}|jdd	dd}| d dddddddddgkst|jdd	dd}| dddddddddd gks>td S )NrT   r   r  r=   r1   carr   Zfoobarrr   rs   r   r  )byr   FTr  r  )r  r  r  )r   r  r   r   r   r  r   r   )r   r  Zarr_with_nullsr   r   r   test_struct_array_sortN  sT    
     r  c               	   C   s  t dddg} t | }| |ks&tt j| t  d}t jdddgt  d}||ks\t|jt  ksntt jdgt  d} tt j t j| t 	 d W 5 Q R X t jdgt 	 d}t j| t 	 dd}||kstt j| t 
 d	}| |kstd S )
Nr   r   r   r=   l    r   Frf  )Zmemory_pool)r   r   r   r   r>   r   r%   r&   r  r   Zdefault_memory_poolr,   r   r   r    test_array_accepts_pyarrow_arrayt  s    
r  c                 C   sX   | j  |kst| j |ks$tt| |ks4t|  |ksDt|  |ksTtd S r  )run_endsr   r   rx   r   Zfind_physical_lengthZfind_physical_offset)	ree_arrayr  rx   Zlogical_lengthZphysical_lengthZphysical_offsetr   r   r   check_run_end_encoded  s
    r  c                 C   s>   ddddg}ddddg}t j||| }t|||ddd d S )	Nr   rT   rD   r  r   r   rS   r   )r   RunEndEncodedArrayr   r  )ree_typer  rx   r  r   r   r   +check_run_end_encoded_from_arrays_with_type  s    r  c                  C   s\   t   t t t fD ]:} t t t t fD ]}t| |}t | q<qd S r  )r  r   r   r   r   r  r  run_end_encoded)run_end_typerq  r  r   r   r    test_run_end_encoded_from_arrays  s
     r  c            	   	   C   s  ddddg} ddddg}t jt  t  d}d}d g}d}d}| |g}t j||||||}t|| |dd	d t j||g |||}t|| |dd	d t j|||d
||}t|| |dd	d t j||d	 ||d	|}t|| ||d	 dd tt	  t j||d d g||| W 5 Q R X tt	 t j|||||d  W 5 Q R X tt	 t j|||||| g W 5 Q R X tt	 t j|||d|| W 5 Q R X d S )Nr   rT   rD   r  r   r   )r  rq  r   rS   r   )
r   r  r   r   r  r   r  r%   r&   rZ   )	r  rx   r  r  rF   r   r   r   r  r   r   r   !test_run_end_encoded_from_buffers  sp                 r  )N)collections.abcr   r   r  Z
hypothesishZhypothesis.strategies
strategiesstr  r  r%   r   r   r   r   numpyrM   r  ImportErrorZpyarrowr   Zpyarrow.tests.strategiestestsZpastr   r    r$   r)   r/   r2   r5   r7   r8   r;   rC   rR   r^   rb   rd   markZparametrizero   rq   ru   r  r{   Znopandasr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r	  r
  r  r  r  r  r  r  r?  ZLargeListArrayr+  r-  r/  r5  r7  r:  r>  r@  rX  r^  ra  rc  rm  rv  rw  rx  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  r  r4   r<   r  r   r   r   r   r   Zpickle_test_parametrizer  r  givenr  Z	all_typesZintegersr  r  rN   r   r  r  rr  r   r   r  r  r  r  r  r  r  r  r  r	  rm   r  r  r  r  rp   r  r  r  r*  r4  r6  r7  r9  r:  r<  r?  r@  rA  rB  rJ  rK  rR  rV  ra  rb  re  rf  rj  rm  ro  rr  rt  ru  rv  rx  rz  r  r  r  r  r  ZslowZlarge_memoryr  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r   r   r   <module>   sn  


&
7(		
#
H

F


6


	


 	
3*JE
%#(	 				

$
		

	

	


)# %#
6

"&"#
&2 C
	&	