U
    -e2                 &   @   sH  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	d dl
Z
d dlmZ d dlZd dlm  mZ e	je fe	je fe	je fe	je fe	je fe	je fe	je fe	je fgZee \ZZG dd dZG dd dZ G d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*G dd dZ+dd Z,dd  Z-d!d" Z.d#d$ Z/d%d& Z0d'd( Z1d)d* Z2e-e.e1gZ3e2e0ge3 Z4e/ge4 Z5e
j67d+e4Z8e
j67d+e3Z9e
j67d+e5Z:e:d,d- Z;e8d.d/ Z<e9d0d1 Z=e9d2d3 Z>e9d4d5 Z?e:d6d7 Z@e9d8d9 ZAe9d:d; ZBe:d<d= ZCe9d>d? ZDe9d@dA ZEe9dBdC ZFe9e
j67dDedEdF ZGe:e
j67dDedGdH ZHe9e
j67dDedIdJ ZIe9dKdL ZJe9e
j67dDedMdN ZKe9e
j67dDedOdP ZLe9dQdR ZMe:dSdT ZNdUdV ZOe
j6jPdWeQdXdYdZ ZRe
j67d[d\d]d^d_gd`da ZSe
j67d[d\d]d^d_gdbdc ZTe:e
j67ddededf ZUdgdh ZVdidj ZWdkdl ZXdmdn ZYdodp ZZdqdr Z[dsdt Z\e9e
j67due	j]e] fe	j^e^ fe	j_e_ fge
j67dvdwdxgdydz Z`e
j67dvdwdxge
j67d{e	jaebgd|d} Zcd~d Zde
j6jPdeedXdd Zfe
j67ddwdxgeg fddgeh fdddge fddddge^ fejij dgek fdejij gel femddddgendfdemdddgeodfejp dgeqdfejrddgesdfddget fdddgetdfdddgeu fdddgev fdddgew fdddddddgexde fde fgfgdd Zye
j67dddgdggeze fddgddggeze dfdgddgge{e fgdd Z|dd Z}dd Z~dd Zdd Zdd Ze
j6je
j67deu ew gdd Ze
j6je
j6je
j67deu ew gdd Ze
j6je
j67det ev gdd Zdd Ze
j67dev ew gdd Zdd Zdd Zdd Zdd Ze
j67dek ddgfel ddgfgdd Zdd Ze
j67dejnddfejnddfejoddfejoddfgddǄ ZddɄ Ze
j67dddddge
j67dddddgddЄ Ze
j67dddddgdd҄ ZddԄ Zddք Ze
j6jdd؄ Zddڄ Zdd܄ ZG ddބ dejiZG dd dejZG dd dejrZdd Ze
j6jPej dddd Ze
j6jdd Ze
j67ddwdxgdd Ze
j67dddddgdd Ze
j67dddddgdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd 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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
j67d0e e e e e e e e e^ e_ g
d1d2 Ze
j67d3e e e e gd4d5 ZÐd6d7 ZĐd8d9 Ze
j67d:dejrd;dfdejrd;d<fdejrd;d=fdejrd>d=fgd?d@ Ze
j6jdAdB ZeejɡdCdD Ze
j6jdEdF Ze
j6jdGdH Ze
j6jdIdJ Ze
j6je
j6jdKdL Ze
j6je
j67dMev dNfet dOfgdPdQ Ze
j6jdRdS Ze
j6je
j6jdTdU Ze:e
j67dVdwdxdgedwedxdgeg fdddgededede ge fdddgeddede ge fddgededgeh fdWddgeҐdWeddge_ fdejij gdeejij gek fdejij gdeejij el gel femddddgeemddddgeodfejrddgeejrddgesdfdedXddgdeedXddgeqdfeddYdZggeeddYdZggeԡ fddgededgev fddgededget fddgedetdedetdgetdfdddggedddggeze fddggeddggezev fdddgejde d[ejde d[dge fddgejҐdWe d[dge fd\d]gejҐd\etdd[ejҐd]etdd[getdfdgejdeu d[geu fdgejdew d[gew fdgejdee ev d[gee ev fddgedee ev edee ev gee ev fdgejdee e d[gee e fd^gejҐd_d`gexde fde fgd[gexde fde fgfdagejҐd_dbgexde fdev fgd[gexde fdev fgfgdcdd Ze:dedf ZdS (g      N)_pandas_apic                   @   s   e Zd Zdd Zdd ZdS )StrangeIterablec                 C   s
   || _ d S N)lst)selfr    r   c/var/www/html/Darija-Ai-Train/env/lib/python3.8/site-packages/pyarrow/tests/test_convert_builtin.py__init__1   s    zStrangeIterable.__init__c                 C   s
   | j  S r   )r   __iter__r   r   r   r   r
   4   s    zStrangeIterable.__iter__N)__name__
__module____qualname__r	   r
   r   r   r   r   r   0   s   r   c                   @   s   e Zd Zdd Zdd ZdS )MyIntc                 C   s
   || _ d S r   value)r   r   r   r   r   r	   9   s    zMyInt.__init__c                 C   s   | j S r   r   r   r   r   r   __int__<   s    zMyInt.__int__N)r   r   r   r	   r   r   r   r   r   r   8   s   r   c                   @   s   e Zd Zdd ZdS )MyBrokenIntc                 C   s   dd  d S )N   r   r   r   r   r   r   r   A   s    zMyBrokenInt.__int__N)r   r   r   r   r   r   r   r   r   @   s   r   c                 C   s(   t j| stt| t|ks$tdS )zP
    Check a struct type is as expected, but not taking order into account.
    N)patypesZ	is_structAssertionErrorset)tyexpectedr   r   r   check_struct_typeE   s    r   c                  C   s2   t tddddg} t d}| |s.td S )Nr   r         )r   r   r   r   )r   arrayr   equalsr   arr1arr2r   r   r   test_iterable_typesM   s    
r#   c                  C   sR   t tg } t| dkst| jdks,t| jt  ks>t|  g ksNtd S Nr   )	r   r   r   lenr   
null_counttypenull	to_pylistarrr   r   r   test_empty_iterableT   s
    r,   c                  C   s8   t jttdt  dd} t d}| |s4td S )Nr   r'   sizer   r   r   r   r   iterrangeint64r   r   r    r   r   r   test_limited_iterator_types\   s    
r4   c                  C   s8   t jttdt  dd} t d}| |s4td S )Nr   r   r-   )r   r   r0   r    r   r   r   #test_limited_iterator_size_overflowb   s    
r5   c                  C   s8   t jttdt  dd} t d}| |s4td S )Nr   
   r-   r/   r0   r    r   r   r   $test_limited_iterator_size_underflowh   s    
r7   c                  C   sV   t d} t ttd}|| s*tt jttdt  d}|| sRtd S )Nr/   r   r'   )r   r   r1   r2   r   r   r3   r   r!   r   r   r   test_iterator_without_sizen   s
    
r:   c                  C   sX   t d} t jtddd}|| s,tt jtdt  dd}|| sTtd S )Nr/   r   r   r.   r-   )r   r   	itertoolscountr   r   r3   r9   r   r   r   test_infinite_iteratorw   s
    
r>   c                	   C   sd   t t tdd tdD  W 5 Q R X t t" tjdd tdD dd W 5 Q R X d S )Nc                 s   s   | ]}d d V  qdS r   r   Nr   .0xr   r   r   	<genexpr>   s     z(test_failing_iterator.<locals>.<genexpr>r6   c                 s   s   | ]}d d V  qdS r?   r   r@   r   r   r   rC      s     r;   )pytestraisesZeroDivisionErrorr   r   r2   r   r   r   r   test_failing_iterator   s    "rG   c                   @   s   e Zd Zdd ZdS )ObjectWithOnlyGetitemc                 C   s   dS )Nr   r   )r   keyr   r   r   __getitem__   s    z!ObjectWithOnlyGetitem.__getitem__N)r   r   r   rJ   r   r   r   r   rH      s   rH   c                	   C   s*   t jtdd tt  W 5 Q R X d S )Nzhas no len()match)rD   rE   	TypeErrorr   r   rH   r   r   r   r   test_object_with_getitem   s    rN   c                 C   s   | S r   r   xsr   r   r   _as_list   s    rQ   c                 C   s   t | S r   )tuplerO   r   r   r   	_as_tuple   s    rS   c                 C   s
   t | S r   )collectionsdequerO   r   r   r   	_as_deque   s    rV   c                 C   s   dd t | D }| S )Nc                 S   s   i | ]\}}||qS r   r   )rA   kvr   r   r   
<dictcomp>   s      z#_as_dict_values.<locals>.<dictcomp>)	enumeratevalues)rP   dctr   r   r   _as_dict_values   s    r]   c                 C   s"   t jt| td}| |d d < |S )NZdtype)npemptyr%   object)rP   r+   r   r   r   _as_numpy_array   s    rb   c                 C   s   t | S r   )r   rO   r   r   r   _as_set   s    rc   seqc                 C   s6   t | dddg}t dddg}||s2td S Nr   r   r   r   r   r   r   rd   r!   r"   r   r   r   test_sequence_types   s    rh   c                 C   s:   t | dddgg}t dddgg}||s6td S re   rf   rg   r   r   r   test_nested_sequence_types   s    ri   c                 C   s^   dd dd g}t | |}t|dks*t|jdks8t|jt  ksJt| |ksZtd S )NTF   r   )r   r   r%   r   r&   r'   bool_r)   rd   r   r+   r   r   r   test_sequence_boolean   s    rm   c                 C   sT   t dd t dd g}t| |}|jt ks8t| dd dd gksPtd S )NTF)r_   rk   r   r   r'   r   r)   rl   r   r   r   test_sequence_numpy_boolean   s    rn   c                 C   s^   t ddg}t| |d d |d ddg}|jt ks@t| dd dddgksZtd S )NTFr   r   )r_   r   r   r'   rk   r   r)   )rd   r[   r+   r   r   r   &test_sequence_mixed_numpy_python_bools   s     ro   c                 C   sR   t | g }t|dkst|jdks,t|jt  ks>t| g ksNtd S r$   r   r   r%   r   r&   r'   r(   r)   rd   r+   r   r   r   test_empty_list   s
    rr   c                 C   s   g ddgd g}t | |}t|dks,t|jdks:t|jt t  ksRt| |ksbtt j| |t t 	 d}t|dkst|jdkst|jt t 	 kst| |kstd S Nr   r   r   r8   )
r   r   r%   r   r&   r'   list_r3   r)   int32rd   datar+   r   r   r   test_nested_lists   s    rx   c                 C   st   g ddgd g}t j| |t t  d}t|dks:t|jdksHt|jt t  ks`t| |ksptd S )Nr   r   r8   r   )	r   r   
large_listint16r%   r   r&   r'   r)   rv   r   r   r   test_nested_large_lists  s    r{   c              	   C   s|   t t, tj| g ddgdgtt d W 5 Q R X t t, tj| g ddgdgtt d W 5 Q R X d S rs   )rD   rE   rM   r   r   rt   r3   ry   )rd   r   r   r   test_list_with_non_list  s    0r|   c                 C   s   t | tjg tjdtjddgtjdd g}t|dks@t|jdksNt|jt t  ksft|	 g ddgd gkstd S )Nr^   r   r   r   )
r   r   r_   r3   r%   r   r&   r'   rt   r)   rq   r   r   r   test_nested_arrays  s     r}   c              
   C   s  ddgdd gd g}t j| |t t  dd}t|dks@t|jdksNt|jt t  dksht| |ksxtt	jddgddt	jddgddd g}t j| |t t  dd}t|dkst|jdkst|jt t  dkst| ddgddgd gkstdddgdd gd g}dddggt	jdddgddgfD ]>}t
jtdd	$ t j| |t t  dd W 5 Q R X qJg g d g}t j| |t t  d
d}t|dkst|jdkst|jt t  d
kst| g g d gkstd S )Nr   r   r   r8   r3   r^   rj   z&Length of item not correct: expected 2rK   r   )r   r   rt   r3   r%   r   r&   r'   r)   r_   rD   rE   
ValueErrorrv   r   r   r   test_nested_fixed_size_list"  s6      & ,
r   c                 C   sZ   t | d d g}t|dks"t|jdks0t|jt  ksBt| d d gksVtd S )Nr   rp   rq   r   r   r   test_sequence_all_noneE  s
    r   np_scalar_pa_typec                 C   sz   |\}}dd dd t |jt |jg}tj| ||d}t|dksJt|jdksXt|j	|ksft|
 |ksvtd S Nr   r   r8      r   r_   iinfominmaxr   r   r%   r   r&   r'   r)   rd   r   	np_scalarpa_typer   r+   r   r   r   test_sequence_integerN  s    
 
r   c              	   C   s   |\}}t t tj| tjg|dd W 5 Q R X tj| tjg|dd}d g}t|dksdt|j	dksrt|j
|kst| |kstd S )NFr'   from_pandasTr   )rD   rE   r~   r   r   r_   nanr%   r   r&   r'   r)   rd   r   _r   r+   r   r   r   r   test_sequence_integer_np_nan[  s    "r   c              	   C   s   |\}}t t& tj| tjggt|dd W 5 Q R X tj| tjggt|dd}d gg}t|dksvt	|j
dkst	|jt|kst	| |kst	d S )NFr   Tr   r   )rD   rE   r~   r   r   r_   r   rt   r%   r   r&   r'   r)   r   r   r   r   #test_sequence_integer_nested_np_nanl  s    * r   c                 C   s^   dd dd g}t | |}t|dks*t|jdks8t|jt  ksJt| |ksZtd S )Nr   r   rj   r   )r   r   r%   r   r&   r'   r3   r)   rl   r   r   r   test_sequence_integer_inferred}  s    r   c              	   C   s   |\}}|dd |dd |t |j|t |jg}tj| ||d}t|dksZt|jdksht|j	|ksvt|
 |kstd S r   r   r   r   r   r   test_sequence_numpy_integer  s    r   c                 C   s   |\}}|dd |dd g}||t |j|t |jg7 }t| |}t|dks^t|jdkslt|j	|kszt|
 |kstd S )Nr   r   r   r   r   r   r   r   r   $test_sequence_numpy_integer_inferred  s    r   c                 C   sD   ddddg}t tt|}tj| |t d}| |ks@td S )Nr   *   l       l         r8   )listmapr   r   r   r3   r)   r   )rd   r   rw   r+   r   r   r   test_sequence_custom_integers  s    r   c              	   C   s>   t  g}tjtjdd tj| |t d W 5 Q R X d S )Ntried to convert to intrK   r8   )r   rD   rE   r   ArrowInvalidr   r3   )rd   rw   r   r   r   test_broken_integers  s    r   c                  C   s   t dt dg} t| }tjddgdd}||s>tt dt dg} t| }tjddgdd}||s|td S )Nr6   g      ?float64r8   float32)r_   ru   r   r   r   r   r   int8)rw   r+   r   r   r   r   test_numpy_scalars_mixed_type  s    

r   z)Type inference for uint64 not implemented)reasonrE   c                  C   sb   dt t jjg} tj| t d}tt j| dd}||sFtt| }||s^td S )Nr   r8   uint64r^   )r_   r   r   r   r   r   r   r   )rw   r+   r   Zarr_inferredr   r   r   test_uint64_max_convert  s    
r   bits          @   c              	   C   s~   t td|   }tttjf td| d  g| W 5 Q R X tttjf" td| d   d g| W 5 Q R X d S )Nzint%dr   r   getattrr   rD   rE   OverflowErrorr   r   r   r   r   r   r   test_signed_integer_overflow  s
     r   c              	   C   sl   t td|   }tttjf td|  g| W 5 Q R X tttjf tdg| W 5 Q R X d S )Nzuint%dr   r   r   r   r   r   test_unsigned_integer_overflow  s
    r   typc              	   C   s0   t tj tj| dg|d W 5 Q R X d S )N1r8   )rD   rE   r   r   r   )rd   r   r   r   r   test_integer_from_string_error  s    r   c               	   C   s   dddddg} t dddddg}tj| |d}tdd ddd g}||sRttt tj| |dd  d W 5 Q R X d S )	Nr   r   r   rj      FT)mask)r_   r   r   r   r   rD   rE   r~   )rw   r   resultr   r   r   r   test_convert_with_mask  s    r   c                  C   sF   dd l } |   t }tdd dd g |   t |ksBtd S )Nr   r   r   )gcZcollectr   Ztotal_allocated_bytesr   r   )r   Zbytes_beforer   r   r   test_garbage_collection  s    r   c                  C   s^   ddd dd d g} t | }t|dks*t|jdks8t|jt  ksJt| | ksZtd S )N      ?      ?      @r   r   )r   r   r%   r   r&   r'   r   r)   rw   r+   r   r   r   test_sequence_double  s    
r   c                  C   s   ddd dd d g} t | }ddd dd d g}t |}||sBtddd dd d g}t |}ddd dd d g}t |}||std S )Nr   r   r   r   rf   )rw   r+   Zdata2r"   data3Zarr3Zdata4Zarr4r   r   r   $test_double_auto_coerce_from_integer  s    



r   c               	   C   sz   dddd ddg} dddd dg}dddd dg}t |  tt t | W 5 Q R X tt t | W 5 Q R X d S )Nr   r   r   l          l       l         l      )r   r   rD   rE   r~   )valid_valuesinvalid_valuesinvalid_values2r   r   r   .test_double_integer_coerce_representable_range  s    
r   c               	   C   s   t j} | dddg}| ddg}| ddg}tj|t d tt tj|t d W 5 Q R X tt tj|t d W 5 Q R X d S )Nr   i   i   i  ir8   )r_   r   r   r   rD   rE   r~   )Zf32r   r   r   r   r   r   /test_float32_integer_coerce_representable_range/  s    r   c                	   C   s   t jtdd tjddgt d W 5 Q R X t jtdd tjddgt d W 5 Q R X t jtdd tddg W 5 Q R X d S )	Nztried to convert to booleanrK   Tfoor8   ztried to convert to float32r   ztried to convert to double)rD   rE   r~   r   r   rk   r   r   r   r   r   test_mixed_sequence_errors@  s      r   znp_scalar,pa_typer   TFc                 C   s   |d|dd |dd t jg}tj| ||d}t|dks@t|rT|jdksbtn|jdksbt|rv|j|kstn|jt kst|	 d d |d d kst|r|	 d	 d kstnt 
|	 d	 std S )
Nr   r   r   r   r   r   r   rj   r   )r_   r   r   r   r%   r   r&   r'   r   r)   isnan)rd   r   r   r   rw   r+   r   r   r   test_sequence_numpy_doubleK  s     r   	inner_seqc                 C   s   t j|ddg|dddg|t jgd gtd}tj|| d}t|dksNt|jdks\t|jt	t
 kstt| r| ddgdddgd gd gkstn(t j| ddgdddgt jgd g d S )Nr          @      @r^   r   rj   r   )r_   r   r   ra   r   r%   r   r&   r'   rt   r   r)   testingZassert_equal)r   r   rw   r+   r   r   r    test_ndarray_nested_numpy_doubleh  s"    

&r   c                  C   s8  t jdtd} t jddgt jdt jddgt jdg| d d < t jdtd}ddg|d< ddg|d< ttt }t| g|kstt| |g}tjddgddggddgddggg|d	}|	|stt jdtd} t dgt dgg| d d < t| | g}|
 dgdggdgdgggks4td S )
Nr   r^   r   r   rj   r   r   r   r8   )r_   r`   ra   r   r3   r   rt   
infer_typer   r   r)   r+   r"   expected_typer   r   r   r   r   #test_nested_ndarray_in_object_array}  s$    " r   z?Type inference for multidimensional ndarray not yet implementedc                  C   s   t jddgddggt jd} t jddgddggt jd}ttt }t| g|ks`tt| |g}tjddgddggddgddggg|d}||std S )	Nr   r   r   r^   rj   r   r   r8   )r_   r   r3   r   rt   r   r   r   r   r   r   r   ,test_multidimensional_ndarray_as_nested_list  s    "r   )rw   
value_typer   r   r   r   susr6   )seconds   a   bs   aaas   bbbs   cccr      cabcr   r   r   c                 C   sN   t |}tj| td}t j|g|d}|j|s8t| | gksJtd S )Nr^   r8   )	r   rt   r_   r   ra   r'   r   r   r)   )rw   r   r   ndarrayr+   r   r   r   #test_list_array_from_object_ndarray  s
    
r   rj   c                 C   sh   t jt| td}dd | D |d d < t|}tj|g|d}|j|sRt	|
 | gksdt	d S )Nr^   c                 S   s   g | ]}t j|td qS )r^   )r_   r   ra   )rA   itemr   r   r   
<listcomp>  s     z>test_nested_list_array_from_object_ndarray.<locals>.<listcomp>r8   )r_   r`   r%   ra   r   rt   r   r'   r   r   r)   )rw   r   r   r   r+   r   r   r   *test_nested_list_array_from_object_ndarray  s    
r   c               	   C   sZ   t t ttjdg W 5 Q R X tjtjdgdd} td dg}| |sVtd S )NstrTr   )	rD   rE   r~   r   r   r_   r   r   r   )r+   r   r   r   r   !test_array_ignore_nan_from_pandas  s
    r   c                  C   s   t jdddgddd t jdddgd	dg} t| }tjdddgd dddggtt d
}||slttt }tj| |d
}||}||std S )Nr   r   r   r3   r^   rj   r   r   uint32r8   )	r_   r   r   rt   r3   r   r   r   cast)rw   r+   r   t2r"   Z	expected2r   r   r   $test_nested_ndarray_different_dtypes  s    

r   c                  C   sZ   ddd dg} t | }t|dks&t|jdks4t|jt  ksFt| | ksVtd S )Nr   bar   mañanarj   r   )r   r   r%   r   r&   r'   stringr)   r   r   r   r   test_sequence_unicode  s    
r   c                 C   s   ddt dg}dddg}dddg}t|}tj|t d}|jt ksPt||s^ttj|| d}tj|| d}|j| kst||sttj||d}tj||d}|j|kst||std S )NZqux   foos   barzs   quxr   Zbarzr8   )	bytearrayr   r   binaryr'   r   r   )binary_typeZstring_typer[   Zb_valuesZu_valuesr+   r   r   r   r   check_array_mixed_unicode_bytes  s    


r   c                   C   s(   t t t  t t t  d S r   )r   r   r   r   large_binarylarge_stringr   r   r   r   test_array_mixed_unicode_bytes  s    r   r   c                 C   s`   d}t dt| }|g| }tj|| d}t|tjs>t|j| ksLtt||ks\td S )Nsh  0123456789abcdefghijklmnopqrstuvwxyz0123456789abcdefghijklmnopqrstuvwxyz0123456789abcdefghijklmnopqrstuvwxyz0123456789abcdefghijklmnopqrstuvwxyz0123456789abcdefghijklmnopqrstuvwxyz0123456789abcdefghijklmnopqrstuvwxyz0123456789abcdefghijklmnopqrstuvwxyz0123456789abcdefghijklmnopqrstuvwxyz0123456789abcdefghijklmnopqrstuvwxyz0123456789abcdefghijklmnopqrstuvwxyz       r8   )	mathceilr%   r   r   
isinstanceArrayr   r'   )r   r   nrepeatsrw   r+   r   r   r   test_large_binary_array  s    
r   c                 C   s   d}t dt| }tjd|| d dg| d}t|tjs@t|j| ksNtt|dks^t|d 	 }t|t|| kstd S )N$   0123456789abcdefghijklmnopqrstuvwxyzr   r      barr8   rj   r   )
r   r   r%   r   r   r   r   r   r'   Z	as_buffer)r   r   r   r+   bufr   r   r   test_large_binary_value#  s    r   c              	   C   sL   d}t dt| }ttj  tjd|| d dg| d W 5 Q R X d S )Nr   r   r   r   r8   )r   r   r%   rD   rE   r   ZArrowCapacityErrorr   )r   r   r   r   r   r   test_string_too_large2  s    r  c                  C   s   d} dt dt dd d d | dtdd g}d t t fD ]b}tj||d}t|d	ksdt|j	d
ksrt|j
|kst st| ddd| dd gksBtqBd S )Ns   mañanar   s   dadas   d-a-t-ar   zutf-8r   r8   r   r   s   data)
memoryviewdecoder   r   r   r   r   r%   r   r&   r'   r)   )u1rw   r   r+   r   r   r   test_sequence_bytes<  s    r  c              	   C   sp   dd dg}t j|| d}|j| ks&t|d  dks:tdd}tt j t j|g| d W 5 Q R X d S )Nr   r   r8   r   r   r   z	utf-16-le)	r   r   r'   r   as_pyencoderD   rE   r   )r   rw   r+   valr   r   r   test_sequence_utf8_to_unicodeM  s    

r	  c                  C   sr   dd t ddg} tj| tdd}t|dks4t|jdksBt|jtdksVt| dd ddgksntd S )Ns   foof   barb   2346rj   r8   r   )	r   r   r   r   r%   r   r&   r'   r)   r   r   r   r   test_sequence_fixed_size_bytes[  s    r  c               	   C   s<   dd ddg} t tj tj| tdd W 5 Q R X d S )Nr   r
  r  rj   r8   )rD   rE   r   r   r   r   rw   r   r   r   5test_fixed_size_bytes_does_not_accept_varying_lengthsd  s    r  c                  C   sF   dg} t | d dksttd}tj| |d}| | ksBtd S )Ns   h    Ar      r8   )r%   r   r   r   r   r)   )rw   r   r+   r   r   r   #test_fixed_size_binary_length_checkj  s
    
r  c                  C   s   t dddd t dddt dddg} t| }t|dksDt|jt ksVt|jdksdt|d 	 t dddkst|d 	 d kst|d 	 t dddkst|d	 	 t dddkstd S )
N  r   i  i  r      rj   r   r   )
datetimedater   r   r%   r   r'   date32r&   r  r   r   r   r   test_sequence_dates  s    
r  inputi*  l    ,Uqc                 C   s   | \}}t dddd g}tj||d}tj||d}||fD ]b}t|dksRt|j|ks`t|jdksnt|d  t dddkst|d  d ks>tq>d S )Nr  r   r8   r   r   )	r  r  r   r   r%   r   r'   r&   r  )r  tZ	ex_valuesrw   r+   r"   rB   r   r   r   test_sequence_explicit_types  s    r  c               	   C   s:   dd g} t ttjf tj| t d W 5 Q R X d S )Nl        r8   )rD   rE   r   r   ZArrowExceptionr   r  )r   r   r   r   test_date32_overflow  s    r  )	time_typeunitint_typeru   msr3   nsc              
      sX   fdd} fdd}t ddddt d	d
d
dd t ddddt ddd
dg}|  }tj||d}t|d	ks|t|j|kst|jdkst||}t	t
||}	| |	kst|d
  ||d
 kst|d  ||d kst|d  d kst|d  ||d ks,t|d  ||d ksJtddd}
d S )Nc                    sZ   ddddg}d|  d  }| d kr*d S | jd | jd  | j | jd	  }t|| S )
Nr   r  r   r  r6   r   i  <   gư>)indexhourminutesecondmicrosecondint)r  units
multiplierr   r  r   r   expected_integer_value  s    z@test_sequence_time_with_timezone.<locals>.expected_integer_valuec                    s:    dkr| j ddS  dkr2| j | jd d dS | S d S )Nr   r   r%  r    )replacer%  )r  r)  r   r   expected_time_value  s
    z=test_sequence_time_with_timezone.<locals>.expected_time_valuer      "   @ r   r   r,  r      8   雙 r6   í r8   r   r   rj   c                 S   s   t j| |d}t |S )N)hoursminutes)r  	timedeltatimezone)r6  r7  offsetr   r   r   tz  s    z,test_sequence_time_with_timezone.<locals>.tz)r   )r  timer   r   r%   r   r'   r&   r   r   r   r)   r  )r  r  r  r*  r.  rw   r   r+   r[   r   r;  r   r)  r    test_sequence_time_with_timezone  s,    
r=  c                  C   s
  t  dddddddd t  dddd	dd
dt  dddddddg} t| }t|dks\t|jtdkspt|jdks~t|d  t  dddddddkst|d  d kst|d  t  dddd	dd
dkst|d  t  dddddddkstd S N        r   r/  r0  r1    r  r3  r4    r   r   .   9   r5  rj   r   r   r   r   )	r  r   r   r%   r   r'   	timestampr&   r  r   r   r   r   test_sequence_timestamp  s2    
  
  
  rG  r9  UTCz	Etc/GMT-1zEurope/Budapestr  c                    s~  t d fdd} fdd}tdddd	d
dd jtdddddddd  dtddddddd dtdd	dddddg} j|d |d d |d  j|d  jg}tjd}tj	||d}t
|dkst|j|kst|jdkst|d}tt||}	| |	ksHttt
|D ]$}
||
  |||
 ksTtqTd S )Npytzc                    sL   ddddg}d|  d  }| d kr*d S tt|  }t|| S d S )Nr   r  r   r  r6   r   )r!  decimalDecimalr   rF  r&  )dtr'  r(  tsr)  r   r   r*    s    zEtest_sequence_timestamp_with_timezone.<locals>.expected_integer_valuec                    sh   | d krd S dkr"| j dd} ndkr@| j | jd d d} d krT| j d dS |  S d S )Nr   r   r+  r  r,  tzinfo)r-  r%  
astimezoner9  )rL  rI  r9  r  r   r   expected_datetime_value  s    zFtest_sequence_timestamp_with_timezone.<locals>.expected_datetime_valuer?  r@  rA  r   r/  r0  r1    r   r   r   r,  
US/EasternrB  r  r3  r4  Europe/MoscowrC  r5  r   rj   r;  r8   r3   )rD   importorskipr  utclocalizer9  rP  r   rF  r   r%   r   r'   r&   r   r   r   r)   r2   r  )r9  r  r*  rR  rw   utcdatar   r+   r[   r   ir   rQ  r   %test_sequence_timestamp_with_timezone  s>    




r\  c                    s   t d dd l}| dd tddddd	d
d|jtddddddd|dtddddd
dd|dtdddddddg}dd |D }|d k	r||  fdd|D }tj	d|d}tj
||d}| |kstd S )NrI  r   ZPYARROW_IGNORE_TIMEZONEr   r?  r@  rA  r   r/  r0  r1  rS  r   r   r,  rT  rB  r  r3  r4  rU  rC  r5  c                 S   s   g | ]}|j d dqS )NrN  )r-  rA   rL  r   r   r   r   T  s     zEtest_pyarrow_ignore_timezone_environment_variable.<locals>.<listcomp>c                    s   g | ]}  |qS r   )fromutcr]  rN  r   r   r   W  s     r   rV  r8   )rD   rW  rI  Zsetenvr  rX  rY  r9  r   rF  r   r)   r   )Zmonkeypatchr9  rI  rw   r   r   r+   r   rN  r   1test_pyarrow_ignore_timezone_environment_variable;  s*    



r_  c                  C   s  t d dd l} tddddddd	| jtd
ddddddd | dtddddddd| dtdddddddg}tjdd dtjdddtjdd dtjdddtjdddg}t	||D ]*\}}|g| }t
|}|j|kstqd S )NrI  r   r?  r@  rA  r   r/  r0  r1  rS  r   r   r,  rT  rB  r  r3  r4  rU  rC  r5  r   rV  rH  )rD   rW  rI  r  rX  rY  r9  r   rF  zipr   r'   r   )rI  rw   r   rL  r   	prependedr+   r   r   r   /test_sequence_timestamp_with_timezone_inference^  s0    




rb  c                  C   s  t d dd l} tddddddd	tjd
ddddddtjjdd tjddddddd| jdddtjddddddd| jdddg}tjdd dtjdddtjdd dtjdddtjdddg}t	||D ]*\}}|g| }t
|}|j|kstqd S )Nzoneinfor   r?  r@  rA  r   r/  r0  r1  rS  r   r   r,  rN  rB  r  r3  r4  rT  )rI   rC  r5  rU  r   rV  rH  )rD   rW  rc  r  r9  rX  ZZoneInfor   rF  r`  r   r'   r   )rc  rw   r   rL  r   ra  r+   r   r   r   8test_sequence_timestamp_with_zoneinfo_timezone_inference|  s0    




rd  c                  C   s   t d dd l} dd l}|jd| dddtddd	d
ddd| jtdddddddd g}|d 	| j| j|d |d 	| jd g}t
|}|jt
jdddkst|d}dd |D }| |kstd S )NrI  r   l   {FK| rT  r  )r;  r  r?  r@  rA  r   r/  r0  r1  rS  r   r   r,  r   r   rV  r3   c                 S   s$   g | ]}|rt | d  ndqS )i@B N)r&  rF  r]  r   r   r   r     s     zStest_sequence_timestamp_from_mixed_builtin_and_pandas_datetimes.<locals>.<listcomp>)rD   rW  rI  pandas	Timestampr9  r  rX  rY  rP  r   r   r'   rF  r   r   r)   )rI  pdrw   rZ  r+   r[   r   r   r   r   ?test_sequence_timestamp_from_mixed_builtin_and_pandas_datetimes  s,    



rh  c               	   C   s   t  dddg} tjtdd tj| tdd W 5 Q R X tj| tdd}| | ksbtt 	t j
d	d
}t j dddd|dg} tjtdd tj| tdd W 5 Q R X tj| tdd}| d t  dddkstd S )Ni  rj   r  zout of boundsrK   r  r8   r   r   )r6  r2  r/  rN  r   )r  rD   rE   r~   r   r   rF  r)   r   r9  r8  )rw   r+   r;  r   r   r   0test_sequence_timestamp_out_of_bounds_nanosecond  s    ri  c                  C   s  t tdddddddd t tdddd	dd
dt tdddddddg} t| }t|dksnt|jtdkst|j	dkst|d 
 tdddddddkst|d 
 d kst|d 
 tdddd	dd
dkst|d 
 tdddddddkstd S r>  )r_   Z
datetime64r  r   r   r%   r   r'   rF  r&   r  r   r   r   r   test_sequence_numpy_timestamp  s2    
  
  
  rj  c                   @   s   e Zd ZdS )MyDateNr   r   r   r   r   r   r   rk    s   rk  c                   @   s   e Zd ZdS )
MyDatetimeNrl  r   r   r   r   rm    s   rm  c                   @   s   e Zd ZdS )MyTimedeltaNrl  r   r   r   r   rn    s   rn  c            	   
   C   s   t dddg} t }tj| |d}t|dks4t|j|ksBt|d  t	dddks`tt
ddddddd	g} td
}td}td}tj| |d}t|dkst|j|kst|d  tdddddddksttj| |d}t|dkst|j|kst|d  tdddddddks>ttj| |d}t|dks^t|j|ksnt|d  tddddddd	ksttdddg} td
}td}td}t| }t|dkst|j|kst|d  tdddksttj| |d}t|dks.t|j|ks>t|d  tddks\ttj| |d}t|dks|t|j|kst|d  tdddksttj| |d}t|dkst|j|kst|d  tdddkstd S )Nr?  r@  rA  r8   r   r   r/  r0  r1  r   r  r   ix {   i  i  r,  )rk  r   r  r   r%   r   r'   r  r  r  rm  rF  rn  durationr8  )	rw   Z	date_typeZarr_dater   r  r   arr_sarr_msarr_usr   r   r   test_datetime_subclassing  sr    



  
    




  rt  z)pandas required for nanosecond conversion)r   c                  C   s   t  dddddddgtdddddddgg} | D ]`}td}tj||d	}t|dks^t|j|kslt|d
  t  dddddddks2tq2d S )Nr?  r@  rA  r   r/  r0  r1  r  r8   r   )	r  rm  r   rF  r   r%   r   r'   r  )inputsrw   r  arr_nsr   r   r   #test_sequence_timestamp_nanoseconds+  s    
  rw  c               
   C   s  dg} t d}t d}t d}t d}t j| |d}t|dksLt|j|ksZtt|d dksntt|d d	kstt j| |d}t|dkst|j|kstt|d  d
kstt|d dkstt j| |d}t|dkst|j|kstt|d  dks"tt|d dks8tt j| |d}t|dksXt|j|kshtt|d  dkstt|d dkstt	}	G dd d}
|t 
 t  fD ]0}t|	 t jd|
 g|d W 5 Q R X qd S )Nr   r   r  r   r  r8   r   zA<pyarrow.TimestampScalar: datetime.datetime(1970, 1, 1, 0, 0, 1)>z1970-01-01 00:00:01z,datetime.datetime(1970, 1, 1, 0, 0, 0, 1000)z1970-01-01 00:00:00.001000z)datetime.datetime(1970, 1, 1, 0, 0, 0, 1)z1970-01-01 00:00:00.000001z*Timestamp('1970-01-01 00:00:00.000000001')z1970-01-01 00:00:00.000000001c                   @   s   e Zd ZdS )z?test_sequence_timestamp_from_int_with_unit.<locals>.CustomClassNrl  r   r   r   r   CustomClassj  s   rx  )r   rF  r   r%   r   r'   reprr   r  rM   r  date64rD   rE   )rw   r   r  r   r  rq  rr  rs  rv  Zexpected_excrx  r   r   r   r   *test_sequence_timestamp_from_int_with_unit<  sL    






r{  r   c                 C   s   t ddd}t ddd}| r8t|d t|g}n
|d |g}t|}t|dks\t|jt	dkspt|j
dks~t|d  |kst|d  d kst|d  |kstd S )	Nr   i  r   d   r,  r   r   r   )r  r8  r_   timedelta64r   r   r%   r   r'   rp  r&   r  )r   td1td2rw   r+   r   r   r   test_sequence_durationr  s    

r  c                 C   s   t dddg}t ddt dddt dddt dddd}t| }tj||d}t|dkslt|j|kszt|d  ||  kstd S )	Nr      i  r,  )r   r  r   r  r8   r   r   )	r  r8  r   rp  r   r%   r   r'   r  )r  rw   r   r   rq  r   r   r    test_sequence_duration_with_unit  s    

r  c                 C   sR   dg}t | }t j||d}t|dks.t|j|ks<t|d jdksNtd S )Nr   r8   r   r   )r   rp  r   r%   r   r'   r   )r  rw   r   r+   r   r   r   )test_sequence_duration_from_int_with_unit  s    
r  c                  C   s   t ddd} t dd}| d g| |gg}t|}t|dksDt|jttdks^t|	 |ksnttj|ttdd}t|dkst|jttdkst|	 |kstd S )Nr   r,  r|  r   r   r  r8   )
r  r8  r   r   r%   r   r'   rt   rp  r)   r~  r  rw   r+   r   r   r   #test_sequence_duration_nested_lists  s    
r  c                  C   s  t ddd} t dd}t| d gt| t|gg}t|}t|dksVt|jt	t
dkspt| | d g| |ggksttjt| d gddtt| t|gg}t|}t|dkst|jt	t
dkst| | d g| |ggkstd S )Nr   r,  r|  r   r   ztimedelta64[us]r^   )r  r8  r_   r}  r   r   r%   r   r'   rt   rp  r)   r  r   r   r   )test_sequence_duration_nested_lists_numpy  s     

r  c               	   C   s  ddd g} t | }|jt  ks&t| | ks6tdgdgd g} t | }|jt t  ksft| | ksvtdgdddgd gg} t | }|jt t  kst| | kstd d dggdddgd gd gg} t | }|jt t t  kst| | kstt jt jf}t	
| t dddgg W 5 Q R X t	
| t ddg g W 5 Q R X t	
|  t dgdgd dggg W 5 Q R X d S )Nr   r   r   rj   )r   r   r'   r3   r   r)   rt   r   ArrowTypeErrorrD   rE   )rw   r+   
exceptionsr   r   r   test_sequence_nesting_levels  s.    




 r  c               	   C   s0   dddg} t tj t|  W 5 Q R X d S )Nr   r   r   )rD   rE   r   r  r   r  r   r   r   test_sequence_mixed_types_fails  s    
r  c               	   C   sD   ddddidddg} t  }tt t j| |d W 5 Q R X d S )	Nz-10z-5r   r   0510r8   )r   r   rD   rE   rM   r   )rw   r'   r   r   r   3test_sequence_mixed_types_with_specified_type_fails  s    r  c                  C   sP   t dt dg} tjtjfD ]*}tj| |dddd}| | ks tq d S )Nz1234.183z8094.234r@  r   	precisionscaler8   rJ  rK  r   
decimal128
decimal256r   r)   r   rw   r'   r+   r   r   r   test_sequence_decimal  s    r  c                  C   sP   t dt dg} tjtjfD ]*}tj| |dddd}| | ks tq d S )Nz1234234983.183z80943244.234rA  r   r  r8   r  r  r   r   r   *test_sequence_decimal_different_precisions  s     r  c                  C   sN   t dt dg} tjtjfD ](}tj| |ddd}| | ks tq d S )NZ
1234234983Z8094324r6   )r  r8   r  r  r   r   r   test_sequence_decimal_no_scale  s    r  c                  C   sP   t dt dg} tjtjfD ]*}tj| |dddd}| | ks tq d S )Nz-1234.234983z	-8.094324r6   r   r  r8   r  r  r   r   r   test_sequence_decimal_negative  s    r  c                  C   sP   t dt dg} tjtjfD ]*}tj| |dddd}| | ks tq d S )Nz	-.4234983z.0103943r@  r  r8   r  r  r   r   r   #test_sequence_decimal_no_whole_part  s    r  c                  C   sP   t dt dg} tjtjfD ]*}tj| |dddd}| | ks tq d S )Nz-394029506937548693.42983z32358695912932.01033r/  r   r  r8   r  r  r   r   r   #test_sequence_decimal_large_integer  s    r  c                  C   sT   dddg} dd | D }t jt jfD ]*}t j| |dddd	}| |ks$tq$d S )
Nr   r   lc&E(ON c                 S   s   g | ]}t |qS r   )rJ  rK  r@   r   r   r   r   &  s     z7test_sequence_decimal_from_integers.<locals>.<listcomp>   r   r  r8   )r   r  r  r   r)   r   )rw   r   r'   r+   r   r   r   #test_sequence_decimal_from_integers$  s
    
r  c                	   C   s0   t jtdd ttdg W 5 Q R X d S )Nzprecision out of rangerK   ZP11111111111111111111111111111111111111111111111111111111111111111111111111111111)rD   rE   r~   r   r   rJ  rK  r   r   r   r   (test_sequence_decimal_too_high_precision,  s    r  c                  C   s  t dtddft dtddft dtdd	ft d
tddft dtddft dtddft dtddft dtddft dtddff	D ]J\} }t| g|kstt| g}|j|kst| d | kstqd S )N1.234rj   r   12300r   r   z12300.0r   r   1.23E+4z123E+2z123E+4r@  z0.0123z0.01230z1.230E-2	rJ  rK  r   r  r   r   r   r'   r)   )rw   r   r+   r   r   r   test_sequence_decimal_infer2  s    r  c                  C   s$  t dt dgtddft dt dgtddft dt dgtddft d	t d
gtddft dt dgtddft dt dgtddft dt dgtddfg} | D ]D\}}t||kstt|}|j|kst| |kstqd S )Nr  z3.456rj   r   z456.7r   z123.4z4.567Z123e2Z4567e3r@  r   Z123e4Z4567e2z0.123z0.04567r   z0.001z1.01E5	   r  )casesrw   r   r+   r   r   r   !test_sequence_decimal_infer_mixedH  s6    







r  c                  C   sB  t dtddtddtddgtddtddgft dtddtddtdd	gtddtdd
gft dtddtddtdd	gtddtdd
gffD ]x\} }}|D ]6}tj| g|d}|j|kst| d | kstq|D ],}t	t
 tj| g|d W 5 Q R X qqd S )Nr  rj   r   r   r   r  r   r   r  r8   )rJ  rK  r   r  r   r'   r   r)   rD   rE   r~   )rw   ZtypsZ
wrong_typsr   r+   r   r   r    test_sequence_decimal_given_typeb  s(       r  c                  C   s*   t td} t d}| |s&td S )Nr   r/   )r   r   r2   r   r   r    r   r   r   test_range_types  s    
r  c                  C   sR   t td} t| dkst| jdks,t| jt  ks>t|  g ksNtd S r$   )	r   r   r2   r%   r   r&   r'   r(   r)   r*   r   r   r   test_empty_range  s
    r  c               	   C   s  t jjg g d} | jt g ks$tt| dks4t|  g ksDtt jd ddgt 	 d}t jdd dgt 
 d}t jdd	d gt  d}t j|||gd
ddg} d ddddd d	dddd dg}|  }||kst||ftt t j|gd
dg W 5 Q R X d S )N)namesr   r   r   r8   r   r   TFintsstrsbools)r  r  r  )r   StructArrayfrom_arraysr'   structr   r%   r)   r   r3   r   rk   rD   rE   r~   )r+   r  r  r  r   Zpylistr   r   r   test_structarray  s&    


r  c               	   C   s   t t dt  t dt  t dt  g} t jg | d}| g ksRtddddd	d
ddg}t j|| d}| |kstdddd i d d
dg}t j|| d}dd ddd d d d dd d
d dg}| |kstd S )Nr   r   r   r8   r   r   Tr   r   r   r   r   Fr   r   r   	r   r  fieldru   r   rk   r   r)   r   )r   r+   rw   r   r   r   r   test_struct_from_dicts  s.    




r  c               	   C   s   t t dt  t dt  t dt  g} t jg | d}| g ksRtddddd	d
g}t j|| d}| ddd ddd d	dgkstd S )Nr   r   r   r8   r   r   )r   r   r   F)r   r   r  r  )r   r+   rw   r   r   r   !test_struct_from_dicts_bytes_keys  s    

r  c               
   C   s&  t t dt  t dt  t dt  g} ddg}dddd	d
ddd	g}t j|| d}tjt	|t
d}||d d < t j|| d}| |kst||stdd dg}ddd d	d d
d dd	g}t j|| d}| |kstdD ].}tjtdd t j|g| d W 5 Q R X qd S )Nr   r   r   r   r   T)r   r   Fr   r   Tr  r   r   Fr8   r^   )r   r   N)r   NF))r   r   r   )r  r   TN(?i)tuple sizerK   )r   r  r  ru   r   rk   r   r_   r`   r%   ra   r)   r   r   rD   rE   r~   )r   rw   r   r+   data_as_ndarrayr"   tupr   r   r   test_struct_from_tuples  s:    



r  c               	   C   s  t t dt  t dt  t dt  g} dddgddd	gd g}t j|| d
}| ddddddddd gks~tt t dt  t dt  t dt  g} dddgdddgg}t j|| d
}t	
t |  W 5 Q R X t t dt  t dt  t dt  g} g dddgddgddd	dgg}d d d dddddddd dddddg}t j|| d
}| |kstd S )Nr   r   r   r   r   r   r   r   T)r   r   r   r   )r   Fr8   r   r   Tr  r   r   F)r   r   )r   T)r   r   )r   F)r   r   )r   bazr   r   )djuliar   r  r   )r   r  r  ru   r   rk   r   r)   r   rD   rE   r~   )r   rw   r+   r   r   r   r   test_struct_from_list_of_pairs  sV    







r  c               
   C   s  t t dt  t dt  t dt  g} g dddgg}d}tjt|d t j	|| d	 W 5 Q R X d
}t
 t
dt
ddg}|D ]}t|t|t|j}tjt|d  t j	|gdddgg| d	 W 5 Q R X tjt|d  t j	dddg|gg| d	 W 5 Q R X qd S )Nr   r   r   r  r  )r   Nz0The expected field name is `b` but `c` was givenrK   r8   zKCould not convert {} with type {}: was expecting tuple of (key, value) pairzunknown-keyr   r  )r   N)r   r  r  ru   r   rk   rD   rE   r~   r   rR   reescapeformatry  r'   r   rM   )r   rw   msgtemplater  Zkey_value_pairr   r   r   %test_struct_from_list_of_pairs_errors,  sJ     r  c               	   C   sl   t t dt  t dt  t dt  g} dddddg}tt t j	|| d	 W 5 Q R X d S )
Nr   r   r   r  r   r   Fr  r8   )
r   r  r  ru   r   rk   rD   rE   rM   r   )r   rw   r   r   r   test_struct_from_mixed_sequenceZ  s    
r  c                  C   s  t t dt  t dt  t dt  g} dddddd	d
dg}t |}t|j|  |	 |ksrt
dddd i d d	dg}dd ddd d d d dd d	d dg}t |}tjt|td}||d d < t |}t|j|  |	 |kst
||st
t t dt t dt t  t dt  gt dt  g} ddgddddd d
dd dd d	dg}t |}|	 |kst
t i g}|jt g kst
|	 i gkst
tt jt jf t dddig W 5 Q R X d S )Nr   r   r   r   r   Tr  r   r   Fr  r   r^   aaab)r  r  r   r   )r   r  r  r3   r   rk   r   r   r'   r)   r   r_   r`   r%   ra   r   rt   rD   rE   r   r  )r   rw   r+   r   r  r"   r   r   r    test_struct_from_dicts_inferencee  sX    








r  c               	   C   s   d ddg} dd dg}ddd g}dddg}| |||g}t j|dd	d
dg}t jt j| ddt j|ddt |t j|ddgdd	d
dg}tt t j| W 5 Q R X ||std S )Nr   r   r   r   TFr   r  r  r  Zint_nonnullr3   r8   utf8)	r   r  r  r   rD   rE   r~   r   r   )r  r  r  Zints_nonnullZarraysr   r   r   r   r   #test_structarray_from_arrays_coerce  s*    




r  c               	   C   s   t dd tjt dg} tt t| }W 5 Q R X tj| dd}|j	t
ddks^t| | d d d d g ks~ttj| t
dddd	}| t d
d d d gkstd S )Nr  r   Tr   rj   r   r   r6   r   z1.2340)rJ  rK  r_   r   rD   rE   rM   r   r   r'   r  r   r)   )r[   r   r   r   r   $test_decimal_array_with_none_and_nan  s     r  c               
   C   sj  ddddddgdddgdd	dd
dddd dgdddgg} dd | D }t j|t t  t  d}| |kstd | d< d |d< t j|t t  t  d}| |kstddigi gdddgfD ]6}tjt	dd t j|gt ddd W 5 Q R X qdddgdddiigfD ]:}tjt j
dd t j|gt ddd W 5 Q R X q*d S )Nr   r   rI   r   r   r   r   r      drj      er      f   gr@  c                 S   s   g | ]}d d |D qS )c                 S   s   g | ]}|d  |d fqS r  r   )rA   r  r   r   r   r     s     z2test_map_from_dicts.<locals>.<listcomp>.<listcomp>r   )rA   entryr   r   r   r     s     z'test_map_from_dicts.<locals>.<listcomp>r8   r   )rW   rX   zInvalid MaprK   i4r   rI   r   )r   r   map_r   ru   r)   r   rD   rE   r~   r   )rw   r   r+   r  r   r   r   test_map_from_dicts  s(    

$r  c               
   C   s   ddgdgdddgdgg} t j| t t  t  d}| | ksHtd | d	< t j| t t  t  d}| | ks~td
gdgdgfD ]6}tjt	dd t j|gt ddd W 5 Q R X qd S )N)r   r   )r   r   )r   r   )r  rj   )r  r   )r  N)r  r@  r8   r   )r   r   )r  r   Tr  rK   r  )
r   r   r  r   ru   r)   r   rD   rE   r~   )r   r+   r  r   r   r   test_map_from_tuples  s    r  c                  C   s   t jt  t  d} t jdddddg| d}t|jt js@t|j	| sPtt jdddddgt  d}t jddgt  d}|j
	|st|j	|std S )Nr   FTr8   r   r   )r   
dictionaryr   rk   r   r   r'   DictionaryTyper   r   indices)r   r   expected_indicesexpected_dictionaryr   r   r   test_dictionary_from_boolean  s    r  r   c                 C   s   t jt  | d}t jddddddg|d}t|jt js>t|j|sNtt jddddddgt  d}t jdddg| d}|j	|st|j|std S )Nr  r   r   r   r8   r   )
r   r  r   r   r   r'   r  r   r   r  r   r   r   r  r  r   r   r   test_dictionary_from_integers  s    r  input_index_typec                 C   s8   t j| t  d}t jtd|d}|j|s4td S )Nr  r6   r8   )r   r  r3   r   r2   r'   r   r   )r  r   r+   r   r   r   test_dictionary_index_type  s    
r  c                  C   s   t jt  t  d} t jtd| d}t t  t  }|j|sLtt jtd| d}t t 	 t  }|j|std S )Nr     r8      )
r   r  r   r3   r   r2   r'   r   r   rz   )r   r   r   r   r   r   "test_dictionary_is_always_adaptive)  s    r  c                  C   sD  t  t  fD ]} t t  | }t jddddddg|d}t|jt jsPt	t jdddddd	gt  d}t jddddg| d}|j
|st	|j|st	qt t  t d	}t jd
d
dddg|d}t|jt jst	t jdddddgt  d}t jd
ddgt d	d}|j
|s.t	|j|s@t	d S )N r   Zbbcccr8   r   r   r   r   aaabbb)r   r   r   r  r   r   r   r'   r  r   r  r   r  r   r   r   test_dictionary_from_strings8  s    r  )r  r    )Zmilliseconds)microsecondsie;c                 C   s   t | }t jdg|d}t j| |d}||s:t|g}| dkrzzdd l}W n tk
rh   Y nX |jdddg}| |kstd S )Nr  r8   r  r   r)  )	r   rp  r   r)   r   r   re  ImportError	Timedelta)r  r   r   r+   restoredexpected_listrg  r   r   r   *test_duration_array_roundtrip_corner_casesO  s    	
r  c                  C   sp  dd l } td}tjdg|d}| }t|d | js>ttj||d}||sZt| | jdddgksvtt	d}tjdg|d}| }t|d | j
sttj||d}||st| | j
dddgksttj	ddd}d}tj|g|d}| }t|d | j
s$ttj||d}||sBt| | j
|ddd	dgksltd S )
Nr   r  l      "9} r8   r)  rT  rV  l    ^,j2 rH  )re  r   rp  r   r)   r   r  r   r   rF  rf  Ztz_localizeZ
tz_convert)rg  r   r+   rw   r  r   r   r   r   <test_roundtrip_nanosecond_resolution_pandas_temporal_objectsj  sB    



r  c                 C   s*   |   }tj|| jd}|| s&td S )Nr8   )r)   r   r   r'   r   r   )r+   rd   r  r   r   r   test_array_to_pylist_roundtrip  s    r  c                  C   sv  dd } dd }| gd dd |g }t j|t  d}t|t jsFtt|dksVt|d  dksjt|d  d ks~t|d	  |kst|d
g }t j|t  d}t|t jst|j	dkstt|
ddkstt|
ddkst|
dd  dkst|
dd  d ks0t|
dd	  |ksLt|
d d
gksft|d ddg }t j|t  d}t|t jst|j	dkstt|
ddkstt|
ddkstt|
ddksttdD ]Z}|
|d  dkst|
|d  d ks6t|
|d	  |kstq|
d ddgksrtd S )N   x k       r8   r/     r  s   twor   r   r   s   threer   )r   r   r   r   r   r   r%   r  ChunkedArray
num_chunkschunkr)   r2   )v1v2Zone_chunk_datar+   Ztwo_chunk_dataZthree_chunk_datar[  r   r   r   test_auto_chunking_binary_like  s>    
 r  c                  C   s   dggd } t | }t|t js&t|jdks4tt|ddksJtt|ddks`t|d dggd ks~td S )NA   xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxi   r   r   i r   )	r   r   r   r  r   r  r%   r  r)   )valsr+   r   r   r   !test_auto_chunking_list_of_binary  s    
r  c                  C   s  t jddd} | gd }tj|tt d}t|tjs@tt	|dksPtt jddd} | gd }tj|tt d}t|tj
st|jdkstt	|ddkstt	|d	d	kst|d	}|d }t|tjsttj| t d}|j|kstd S )
N)   uint8r^   r@  r8   r   r   r   r   )r_   Zonesr   r   rt   r
  r   r   r   r%   r  r  r  Z
ListScalarr[   )r   rw   r+   r  scalarr   r   r   r   test_auto_chunking_list_like  s"    


r  c                  C   sv   t t  t  } dgd }|gd }t j|| d}t|t jsFtt|ddks\tt|ddksrtd S )N)r   r   r	  r   r8   r   r@  r   )	r   r  r   r   r   r  r   r%   r  )r   r   rw   r+   r   r   r   test_auto_chunking_map_type  s    

r  )r   charrB   r  c                 C   s  |d }|d }t t dt  t dt  t d| g}dd|dgd	 }|dd|d t j||d
}t|t jst	|dd|d t j||d
}t|t j
st	|jdkst	t|ddkst	t|ddkst	|dd  dd|dkst	d S )Nr  r  boolintegerstring-likeTr   )r  r  r  r  r8   r   r   r   )r   r  r  rk   r3   appendr   r   r   r   r  r  r%   r  r  )r   r  r  r  Zstruct_typerw   r+   r   r   r   test_nested_auto_chunking  s,    
r  c                  C   s   dgd } t j| t  d}t|t js,tt|dks<tt|jdksNtt	dt
}t j| |t  d}t|t js~tt|dkstt|jdkstt j| t  d}t|t jstt|dkstt|jdkstd S )Ns   aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaai   r8   r   r   r'   r   r   r   r   r  r   r%   chunksr_   Zzerosr  r   itemsr+   r   r   r   r   $test_array_from_pylist_data_overflow	  s    
r  c                  C   s   dgd } t j| t  d}t|t js,tt|dks<tt|jdksNtt	dt
}t j| |t  d}t|t js~tt|dkstt|jdkstt j| t  d}t|t jstt|dkstt|jdkstd S )Nr   l        r8   r   r  r  r  r   r   r   &test_array_from_pylist_offset_overflow(	  s    
r  )rw   scalar_datar   r   i  r   ir8   r  r  )r   r   r  )r   r   )r   r   r  c                 C   sh   t | |tkrtd tj||d}t| |}||sDttj| ||d}||sdtd S )Nz&The elements in the set get reordered.r8   )r'   r   rD   skipr   r   r   r   )rd   rw   r  r   expectr   r   r   r   !test_array_accepts_pyarrow_scalar@	  s    \
r  c              	   C   sp  | t dt dt dg}tjt jdd t | W 5 Q R X | dt dd g}tjt jdd t | W 5 Q R X | tdt dd g}tjt jdd t | W 5 Q R X | t dtdd g}tjt jdd t | W 5 Q R X tjt jdd  t jt dgt  d	 W 5 Q R X tjt jd
d  t jt dgt 	 d	 W 5 Q R X d S )Nr   r   r   z'cannot mix scalars with different typesrK   zIpyarrow scalars cannot be mixed with other Python scalar values currentlyz0.1z=Cannot append scalar of type string to builder for type int32r8   z;Cannot append scalar of type int64 to builder for type null)
r   r  rD   rE   r   r   r_   float16ru   r(   )rd   sequencer   r   r   (test_array_accepts_pyarrow_scalar_errors	  s8     $r!  )rT   r  rJ  r<   r   r  Z
hypothesishnumpyr_   rD   Zpyarrow.pandas_compatr   Zpyarrowr   Zpyarrow.tests.strategiestests
strategiesZpastr   rz   ru   r3   r
  Zuint16r   r   Zint_type_pairsr`  Znp_int_typesZpa_int_typesr   r   r   r   r#   r,   r4   r5   r7   r:   r>   rG   rH   rN   rQ   rS   rV   r]   rb   rc   ZSEQUENCE_TYPESZITERABLE_TYPESZCOLLECTIONS_TYPESmarkZparametrizeZparametrize_with_iterable_typesZparametrize_with_sequence_typesZ"parametrize_with_collections_typesrh   ri   rm   rn   ro   rr   rx   r{   r|   r}   r   r   r   r   r   r   r   r   r   r   r   Zxfailr   r   r   r   r   r   r   r   r   r   r   r   r  r   r   r   r   r   r   r   r   r   rk   r(   r  todayr  rz  r<  Ztime32Ztime64nowrF  r8  rp  r   r   r   r   r  r   rt   ry   r   r   r   r   r   r   Zlarge_memoryr   Zslowr   r  r  r	  r  r  r  r  r  r  r=  rG  r\  r_  rb  rd  re  rh  ri  rj  rk  rm  rn  rt  Zhave_pandasrw  r{  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  givenZ
all_arraysr  r  r  r  r  r  r  r  r  ZMonthDayNanoZmonth_day_nano_intervalr  r  r!  r   r   r   r   <module>   s2  		

   


	




	

	
"

	



	
		



	
		





:C

A

5



"	"7.4

	
&
)

$ * (  "($(&
.    

Z