o
    Zh                    @   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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!g d"e
j%&d#dd$gd%d& Z'e
j%&d!g d"d'd( Z(d)d* Z)e
j%j*d+d, Z+e
j%j,e
j%j*d-d. Z-e
j%&d/de. e/ e0 gd0d1 Z1d2d3 Z2d4d5 Z3d6d7 Z4d8d9 Z5d:d; Z6d<d= Z7d>d? Z8d@dA Z9dBdC Z:dDdE Z;dFdG Z<dHdI Z=dJdK Z>e
j%&dLej?ej@gdMdN ZAdOdP ZBdQdR ZCdSdT ZDe
j%&dUdVdWdX ZEdYdZ ZFd[d\ ZGd]d^ ZHd_d` ZIdadb ZJe
j%&dcejKej?fejLej@fgddde ZMe
j%&dcejKej?fejLej@ffe
j%&dfdd ggdd dgd ggd gdgggfdhdi ZNe
j%&dcejKej?fejLej@ffdjdk ZOdldm ZPdndo ZQdpdq ZRdrds ZSdtdu ZTdvdw ZUdxdy ZVdzd{ ZWd|d} ZXd~d~dddZYdd ZZdd Z[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|e
j%&ddg dʢfde}d d̃fde}d d΃fde}d dЃfde}d dЃfde}d dЃfde}d dЃfde}d dЃfde}d dЃfdg dעfdg dעfdg dڢfdg dܢfe~dݡg dޢfgdd Ze
j%&dg de fg de fg de fg de0 fg dfdgdgdgge?e fddgdgge@e fdgdddgge?e0 fg deede ede0 gfg	Zedd Zdd Zejejjfdeejejejd ddddd Zedd Ze
j%&dejdejdejdejdejdejdejdej/dejdejdejdejdejdejdejdejdejdejdejdejdejdejdgdd Zdd Zd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!g d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*d/d0 Zd1d2 Zd3d4 Zd5d6 Zd7d8 Zd9d: Zd;d< Z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 Ze
j%&dOe ej?fe ej@fgdPdQ Ze
j%&dRe?e ej?e ddSe@e gdTdU Ze
j%&dVe e?e fe ej?e ddSfe e@e fgdWdX Ze
j%&dLej?ej@gdYdZ Ze
j%&d[ejKejLg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%je
j%j͐dpdq Ze
j%j͐drds Zϐdtdu ZАdvdw Zѐdxdy Ze
j%j*dz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
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s+J 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)coderes r   O/var/www/html/lang_env/lib/python3.10/site-packages/pyarrow/tests/test_array.pytest_total_bytes_allocated$   s   
r   c                  C   s:   t g d} t| }| d usJ ~ | d u sJ d S N         )paarrayweakrefref)arrwrr   r   r   test_weakref2   s
   
r    c                  C   sL   t g d} | d  d u sJ | d jdu sJ t| d t js$J d S )Nr   Nr   r   F)r   r   as_pyZis_valid
isinstanceZInt64Scalarr   r   r   r   test_getitem_NULL:   s   r%   c                   C   s>   t t tddg W d    d S 1 sw   Y  d S )Nr   r   )pytestraises	TypeErrorr   Arrayr   r   r   r   test_constructor_raisesA   s   "r*   c                  C   s2   t dgd g dg} |  }d}||ksJ d S )Nr   )r   r   Nz9[
  [
    1
  ],
  null,
  [
    2,
    3,
    null
  ]
]r   r   	to_stringr   resultexpectedr   r   r   test_list_formatH   s   r0   c                  C   *   t g d} |  }d}||ksJ d S )N Nfooz[
  "",
  null,
  "foo"
]r+   r-   r   r   r   test_string_formatZ   s   r5   c                  C   s.   t td} | jdd}d}||ksJ d S )Nd   r   )Zwindowz[
  0,
  1,
  ...
  98,
  99
])r   r   ranger,   r-   r   r   r   test_long_array_formatf   s   r8   c                  C   .   t g d} | jdd}d}||ksJ d S )Nr2   r   )indentz[
 "",
 null,
 "foo"
]r+   r-   r   r   r   test_indented_string_formatt      r;   c                  C   r9   )Nr2   r   )Ztop_level_indentz [
   "",
   null,
   "foo"
 ]r+   r-   r   r   r   %test_top_level_indented_string_format|   r<   r=   c                  C   r1   )N)        Ns   foos   z([
  00,
  ,
  null,
  01666F6F,
  80FF
]r+   r-   r   r   r   test_binary_format   s   r@   c                  C   sp   t jg ddd} t jg ddd}| jdksJ | ddjdks$J |jdks+J |ddjdks6J d S )	N)s   0000Ns   11111s   222222s   3333333binarytypelarge_binary   r   r      )r   r   Ztotal_values_lengthslice)r   Z	large_arrr   r   r   test_binary_total_values_length   s   

rH   c                  C   sr   t td} |  }|  d }|j|jjksJ d } dd l}|	  |j
d us+J td}tj|| d S )N
   r   r   )r   r   r7   to_numpybuffersaddressctypesdatagccollectbasenparangetestingassert_array_equal)r   np_arrZ	arrow_bufrO   r/   r   r   r   test_to_numpy_zero_copy   s   
rW   c                  C   sz   g dg dg} t | }d}tjt|d |jdd W d    n1 s'w   Y  | }g d}tj|| d S )N)r   r      )rX      r6   z>zero_copy_only must be False for pyarrow.ChunkedArray.to_numpymatchTzero_copy_only)r   r   rX   rX   rY   r6   )	r   chunked_arrayr&   r'   
ValueErrorrJ   rR   rT   rU   )elementschunked_arrmsgrV   r/   r   r   r   %test_chunked_array_to_numpy_zero_copy   s   
rc   c                  C   s  t g d} tt |   W d    n1 sw   Y  | jdd}tg d}tj|| t g d}tt |  W d    n1 sOw   Y  |jdd}tjg dt	d}tj|| t g d}tjtdd |  W d    d S 1 sw   Y  d S )	NTFTFr\   NNNdtyper   r   Nzwith 1 nullsrZ   )
r   r   r&   r'   r_   rJ   rR   rT   rU   object)Zbool_arrr.   r/   Znull_arrr   r   r   r   test_to_numpy_unsupported_types   s$   


"rj   c                  C   s   t td} |  }tt d|d< W d    n1 sw   Y  | jddd}d|d< | d  dks9J tt | jddd W d    d S 1 sQw   Y  d S )NrI   r   FT)r]   writable)r   r   r7   rJ   r&   r'   r_   r"   )r   rV   Znp_arr2r   r   r   test_to_numpy_writable   s   
"rl   unit)smsusnstzUTCc                 C   sL   t g dt j| |d}tjg dd| d}| }tj|| d S )Nr   rr   zdatetime64[{}]rf   )r   r   	timestamprR   formatrJ   rT   rU   )rm   rr   r   r/   rV   r   r   r   test_to_numpy_datetime64   s   rw   c                 C   sH   t g dt | }tjg dd| d}| }tj|| d S )Nr   ztimedelta64[{}]rf   )r   r   durationrR   rv   rJ   rT   rU   )rm   r   r/   rV   r   r   r   test_to_numpy_timedelta64   s   ry   c                  C   sB   t g d } tjg dtd}| jdd}tj|| d S )N)abrz   rf   Fr\   )r   r   dictionary_encoderR   ri   rJ   rT   rU   )r   r/   rV   r   r   r   test_to_numpy_dictionary   s   r}   c                  C   s   dd l } ttd}tdD ]}| }t|dksJ d }qt|dks*J tdD ]$}ttd}| }d }|   t|jj	}|dksNJ |
  q.d S )Nr   rI   r   )rO   r   r   r7   	to_pandasr   getrefcountrP   valuesrQ   sum)rO   r   iZseriesZbase_refcountr   r   r   test_to_pandas_zero_copy  s    
r   c                  C   s|  t td} tdd | D }| g dksJ |jtdks%J t|d t jj	s0J t| }| g dks?J |jtdksIJ tj| dd	}| g d
ksZJ t g d} | j
t  ksjJ t| }| }|d d g dksJ t|d sJ |jtdksJ t jt g dt g d} t| }|jtdksJ | g dksJ d S )NrX   c                 S   s   g | ]}|qS r   r   ).0_r   r   r   
<listcomp>(  s    z test_asarray.<locals>.<listcomp>r   r   r   r   Or   int64strrf   )0123)r   r   r   Nr   )              ?       @float64r   r   r   r   r   rz   r{   cri   )rz   r{   r   rz   r{   )r   r   r7   rR   Zasarraytolistrg   r#   libZ
Int64ValuerC   r   isnanDictionaryArrayfrom_arrays)r   rV   r`   r   r   r   test_asarray   s.   


r   tyc                 C   sn   t jd| d}t jg d| d}t|dksJ ||sJ | d u r.|jt  ks,J d S |j| ks5J d S )Nr   rB   re   )r   nullsr   r   equalsrC   nullr   r   r/   r   r   r   
test_nullsH  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g d	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g d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 ]A\}}}	t||}
t|
|ks%J |
j|	js/J |
|	s7J |	jt krI|
j|ksGJ q|
jdksQJ qd S )Npytz)tzinfoz
US/Easternr   )daysrI   r   )r   r   r   rB   gGz@r   stringrX         re   TrF   rp   rt   	   FrY   rz   r{   r   )r&   Zimportorskipdatetimedatetodaynowreplaceutc
astimezonetimezone	timedeltar   r   r   r   r   Zscalaruint8ru   time
large_listint8repeatr   rC   r   r   
null_count)r   r   r   now_utcZnow_with_tzZonedaycasesvaluesizer/   r   r   r   r   test_array_from_scalar[  sZ   


  #r   c                  C   s   g d} t jjg d| d}t |d d}t jjdgd | d}||s(J t |d d}t jjdgd | d}||sBJ d S )Nr4   barbaz)r   r   r   r   )
dictionaryr   rY   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$J qtdt|  t|  D ]}tt | |  W d    n1 sGw   Y  q1tt| dt|  D ]}tt | |  W d    n1 snw   Y  qXtt|  t| D ]}| t	
|  || ksJ q~d S )NrI      r   )r   r   r7   	to_pylistr   r"   r&   r'   
IndexErrorrR   int32)r   lstidxr   r   r   test_array_getitem  s"   

 r   c            	      C   s   t td} | d}t tdd}||sJ | dd}t tdd}||s0J | d| s:J t| t| dksGJ t| t| d dksVJ t| t| d ddksfJ tt | d W d    n1 s{w   Y  tt	 | dd W d    n1 sw   Y  | dd  | dsJ | dd | dd	sJ | d
d  | t| d sJ t| }t| d |d D ]5}t| d |d D ](}| || }|
  |  || }| |ksJ |  |ksJ qqd S )NrI   r   rX      r   r6   r   rY   r   )r   r   r7   rG   r   r   r&   r'   r   r_   validater   rJ   r   )	r   slicedr/   Zsliced2Z	expected2nstartstopr   r   r   r   test_array_slice  s<   
 $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 ]B}|| }t| | }||sPJ tj|gd	gd
| }tj|gd	gd
}||skJ || }t| | g}||s~J q<d S )N   r   r   r   rI   r   r   r   Zf0names)rR   rS   r   r   r^   rG   r   Zrecord_batch)rV   r   ra   r   caser.   r/   r   r   r   test_array_slice_negative_step  s.   









r   c                  C   s   t jdgt  d} t jg dt  d}t g d}t jg dgd gt t  d}| | dks5J | |dks>J | | dksIJ | | dksTJ | | d	ks_J d S )
Nr4   rB   r4   r   Nr   r   r3   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   diffstrip)arr1arr2arr3Zarr4r   r   r   test_array_diff  s    r   c                  C   sH   t td} ttd| D ]\}}|| ksJ qt| ts"J d S )NrI   )r   r   r7   zipr"   r#   r   )r   r   jr   r   r   test_array_iter  s   r   c                  C   sd   t t dt  t dt  g} t jg d| d}|dd   dddd	d
dgks0J d S )Nrz   r{   r         @r         @)rY         @rB   r   r   r   r   rY   r   )r   structfieldr   float32r   r   )r   r   r   r   r   test_struct_array_slice  s   r   c                  C   sV   G dd d} t |  g}tt t| W d    d S 1 s$w   Y  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   rR   r   r&   r'   r_   r   )r   r   r   r   r   test_array_factory_invalid_type  s
   "r   c                  C   s<   t g d} t| }t| }t| |d ksJ d S )Nr   r   )rR   r   r   r   r   )r   refcountr   r   r   r   test_array_ref_to_ndarray_base'  s   

r   c                  C   s   t jg dt  d} t jg dt  d}t jg dt  d}| |kdu s)J | |kdu s1J | |kdu s9J | |kdu sAJ | dkdu sIJ | d kdu sQJ d S )Nr   rB   TFr   )r   r   r   r   )r   r   r   r   r   r   test_array_eq/  s   r   c                  C   s0  t tg d} t tdg}t jt  d|| g}|jt  ks(J | g dks2J t jt  dd | g}|jt  ksGJ | g dksQJ t jjt  d|| gdd}|jt  kshJ | g dksrJ t	
t t jjt  dd	d	gdd W d    d S 1 sw   Y  d S )
NrX   rY   r         rX   )rX   Nr   r   r   r   offset)Nr   r   r3   )r   	py_bufferrR   int16r   r)   from_buffersrC   r   r&   r'   r(   )Z
values_bufZ	nulls_bufr   r   r   r   test_array_from_buffers?  s    "r   c                  C   s~  t g d} |  }t jt| |d |d |d | j| j}| g dks*J t j	t 
 t| |  | j| j}| g dksFJ t jt| |d |d |d }| g dksaJ | dd  }| }t jt||d |d |d d|j}| g dksJ |jdksJ | dd  }| }t jt||d |d d d|j}| dd	gksJ |jdksJ d S )
N)rz   Nr{   r   r   r   r   )   aN   b   cr   )Nr{   r   r{   r   )r   r   rK   ZStringArrayr   r   r   r   r   r)   rA   )r   rK   copiedZbinary_copyr   r   r   r   test_string_binary_from_buffersS  s<   
r  list_type_factoryc                 C   s  | t  }t jg dd g g dg|d}|j|ksJ | }tt t j	|dd |d g W d    n1 s<w   Y  t j	t  d|dd  }t jj	|d|d d |gd}|
|seJ tt t jj	|dd |d g||gd W d    d S 1 sw   Y  d S )	Nr   r   r   )r   rX   rY   rB   rX   r   r   r   children)r   r   r   rC   rK   r&   r'   r_   r)   r   r   )r  r   r   rK   childr  r   r   r   test_list_from_buffersv  s   "r  c                  C   sD  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 d    n1 sCw   Y  t j
t  d	|d
d	 t j
t  d	|d	d  g}t j
j| d	|d d
 |d}||syJ tt	 t j
j| d	|d g|d d
 d W d    d S 1 sw   Y  d S )Nrz   r{   r   r4   r   rY   r3   rB   r   r   r  )r   r   r   r   r   r   rK   r&   r'   r_   r)   r   r   )r   r   rK   r	  r  r   r   r   test_struct_from_buffers  s$   &
"r  c                  C   s0  t jg dt  d} t g d}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g d	}|jt d| jfd|jfd|jfgksUJ | |ks]J t	t
 t j| ||gddg W d    n1 syw   Y  t jg g }|jt g ksJ | g ksJ t jd| jdd}t d|j}t d|j}t jj| ||g|||gd}|jt |||gksJ |jd jrJ | |ksJ t	t
 t jj| ||g||gd W d    n1 sw   Y  t jjg g d}|jt g ksJ | g ksJ t dt  }tj	t
dd t jj| ||g|||gd W d    n	1 s@w   Y  | ||g}	|||g}
t g d}t jj|	|
|d}| d g|dd   ksoJ t jj|	g d	|d}| d g|dd   ksJ tj	tdd t jj|	|
g dd W d    n	1 sw   Y  tj	t
dd t jj|	|
t g dd W d    n	1 sw   Y  tj	tdd t jj|	|
t |gd W d    n	1 sw   Y  t jjg g |d}| |ks
J | d i i gksJ d S )NrX   rY   r   rB   )r   Nr3   r   r   r   rX   r   r   rY   r   r3   rz   r{   r   Fnullable)fieldsr   zint64 vs int32rZ   )TFF)r  maskr   r  zMask must ber  znot contain nulls)TFN)r   r   r   StructArrayr   rC   r   r   r&   r'   r_   r   r  r   r(   r^   is_null)rz   r{   r   expected_listr   faZfbfcZfa2arraysr  r  r   r   r   test_struct_from_arrays  st   



  r  c                  C   s\   t g dg dg} tjtdd t j| gdg W d    d S 1 s'w   Y  d S )Nr   r  zExpected ArrayrZ   r4   )r   r^   r&   r'   r(   r  r   )ra   r   r   r   test_struct_array_from_chunked  s   "r  r   )r   r   c                 C   sR   t g d }t jj|jt||  |j |j	| d}|| d  |ks'J d S )N)onetwothreer  r  r   )
r   r   r|   r   r   rC   r   indicesrK   r   )r   rz   r{   r   r   r   test_dictionary_from_buffers  s   r   c                  C   s  t g dd} t jg dtd}t g d}tj| |}tjj| ||d}|j | 	 ks3J |j | 	 ks>J |j
 |	 ksIJ |j
 |	 ksTJ tt| D ]-}||  || |  ksjJ || ry||  d u sxJ qZ||  || |  ksJ qZd S )Nr  r   r   rf   )FFTFFFr  rR   r   r   ri   r   r   r   r  r   r   r   r7   r   r"   )r  r   r  d1Zd2r   r   r   r   test_dictionary_from_numpy  s   r#  c                  C   s  t g djdd} t jt g dt ddg}tj|jdd|  t	t j
 |jdd W d    n1 s>w   Y  t jt g dt ddg}t g d	jdd} tj|jdd|  t	t j
 |jdd W d    n1 sw   Y  t jt g dt d
dg}t g d } tj|jdd|  tj|jdd|  t jt g dt d
dg}t g djdd} tjj|jdd| dd t jt g dt ddg}t g djdd} tjj|jdd| dd d S )N)r4   r   Nr4   Fr\   )r   r   Nr   r4   r   T)r   r   r   r   )r4   r   r   r4   ffffff+@      &@)r$  r%  r%  r$  )r$  r%  Nr$  )Z	equal_nanr   rF   )r   rF   Nr   )r   r   rJ   r   r   rR   rT   rU   r&   r'   ArrowInvalidZassert_allclose)r/   rz   ZanonullsZafloatZafloat2Zaintsr   r   r   test_dictionary_to_numpy  s   
	

r'  c                  C   s   t g dd} t jg dtd}t| }t|}tj||}|j | 	 ks-J |j
 |	 ks8J tt| D ]}||  || |  ksNJ q>d S )Nr  r   r   rf   r!  )r  r   Ziarrdarrr"  r   r   r   r   !test_dictionary_from_boxed_arraysX  s   

r)  c                  C   s   t g d} t g d}t g d}t g d}t j| | tt j t j|| W d    n1 s;w   Y  tt j t j|| W d    n1 sXw   Y  t jj||dd d S )Nr   r   r   r   r   r   )r   r   r   r   r   Fsafe)r   r   r   r   r&   r'   ZArrowException)Zindices1Zindices2Zindices3r   r   r   r   'test_dictionary_from_arrays_boundscheckh  s   r-  c                  C   s<   t g d} t g d}t j| |}|jjdd d S )Nr*  r   Tfull)r   r   r   r   r  r   )r  r   r   r   r   r   test_dictionary_indices}  s   r0  )list_array_typer  c           
      C   sV  t jg ddd}tj|dd}g d}tj|dd}| ||}tj|d d |dd	 |d	d
 g|t d}||sBJ |tdt }| |||}|j|ksZJ |jjj	dkscJ g d}g d}| ||}tj|d d d |dd  g|t d}||sJ g d}	| |	|}tj|d d |dd  d g|t d}||sJ g d}t 
d	}tt | || W d    n1 sw   Y  g d}ttd}| ||}tt |jdd W d    n1 sw   Y  |t }tt | j|||d W d    d S 1 s$w   Y  d S )Nr   r   rY   r   i4rf   r   rB   r  r  r     d   e   f   g   hrA   r   rY   r   namer   Nr   r   r  r  r  r5  r6  r7  )r   r   Nr   )r   r   rI   )r   r   r   r   r   Tr.  )rR   r   r   r   rA   r   r   rC   value_fieldr:  rS   r&   r'   r_   listr7   r   r(   )
r1  r  offsets_arroffsetsZpyvaluesr   r.   r/   typoffsets2r   r   r   test_list_from_arrays  sR   $



$rC  r   r   c                 C   s<   t ||t  }| j|j|j| d}||ksJ d S )Nr  )r   r   r   r   r@  r   r  )r1  r  r   reconstructed_arrr   r   r   !test_list_array_types_from_arrays  s
   rE  c                 C   s@  t dgd dd gdgg|t  }t g d}| |j|j}| dgg dd gdggks1J | ||j}||ks>J | j|j|j| d}||ksPJ tj	t
dd | j||j| d W d    n1 smw   Y  |dd  }d}tj	t|d | j|j|j| d W d    d S 1 sw   Y  d S )Nr   )r   Nr   r   rX   r  zAmbiguous to specify both rZ   r   z-Null bitmap with offsets slice not supported.)r   r   r   r   r@  r   r   r  r&   r'   r_   NotImplementedError)r1  r  r   r@  rD  Z	arr_slicerb   r   r   r   &test_list_array_types_from_arrays_fail  s*   $	 "rG  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s(J |jjt d
t  ks6J t	|dks>J d S )Nr:  r   Fr  r   rz   r   r{   r   r   r   rB   r   r   )
r   map_r   r   rC   Z	key_fieldr   Z
item_fieldr   r   )tr   r   r   r   test_map_labelled  s
    rM  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/J d S )	NrH  rI  rJ  r   r   r   r   r   )r   r   rK  r   r   r   )Ztup_arrdict_arrr   r   r   test_map_from_dict  s   rO  c                  C   s>  t jg ddd} tj| dd}g d}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}	||	s`J g d}g d}g d}tt||}|d d d |dd  g}tj|d
d}tj|dd}tj|||}tj|t	t
 t d}	||	sJ tj|||t	|j|j}||	sJ tjtjdd tj|||t  W d    n1 sw   Y  tjtjdd tj|||t	|jt  W d    n	1 s	w   Y  g d}t d}t d}tj|||}
tt tj|dg || W d    n	1 s@w   Y  tt tj||t ||g W d    n	1 scw   Y  t|d d d g }t|t|ks~J tt tj||| W d    d S 1 sw   Y  d S )Nr2  r3  rf   r   rB   r4  r   rY   r   rA   r;  r<  )r   r   r   NrX   rY   zExpected map type, got stringrZ   zMismatching map items type)r   r   r   rY   r   r   )rR   r   r   r>  r7   r   r   ZMapArrayr   rK  rA   r   r   rC   r&   r'   ArrowTypeErrorr   r   rS   r_   Zconcatenate)r?  r@  ZpykeysZpyitemsZpypairsZ	pyentrieskeysitemsr.   r/   r   Zkeys_with_nullr   r   r   test_map_from_arrays  sd   "

$rS  c                  C   s  t tdt  } t j| d}| g dg dg dgks"J |jt 	t  ds0J t 	t 
dt  d}t jj| |d}| g dg dg dgksUJ |j|s]J |jjjdksfJ t jj| |t g dd	}| g dd g dgksJ t jj| dt g dd
}| g dd g dgksJ tt t j| d W d    n1 sw   Y  tt t jt g t  d W d    n1 sw   Y  tt t j| d W d    n1 sw   Y  t 	t  d}tt t jj| |d W d    n	1 sw   Y  t 	t  d}tt t jj| |d W d    n	1 sAw   Y  tt t j|  W d    n	1 s]w   Y  t 	t  d}tt t jj| d|d W d    d S 1 sw   Y  d S )N   rX   r   r   )r   r   rI   rF   r:  rB   FTFrC   r  )	list_sizer  r   rY   )rW  rC   )r   r   r7   r   ZFixedSizeListArrayr   r   rC   r   r   r   r=  r:  r&   r'   r_   r   r(   )r   r.   rA  r   r   r    test_fixed_size_list_from_arraysK  sV   ""$rY  c                  C   s*  t g dt  } t g d}t j|| }| ddgddggks&J |jt t  s3J t g d}t j|| }| ddgd ddggksPJ t	
t t jt g d|  W d    n1 slw   Y  t	
t t jt g d	|  W d    d S 1 sw   Y  d S )
Nr   r   r   rX   )r   r   rX   r   r   r   rX   )r   Nr   rX   )r   r   rX   )r   r   rY   )r   r   r   	ListArrayr   r   rC   r   r   r&   r'   r_   )r   r@  r.   r   r   r   test_variable_list_from_arrays  s   "r\  c               	      s4  t jg ddd t jg dddt jg ddd} t jg ddd}t jg d	d
dg d 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 d    n1 sw   Y  t jj|  gddgd}tt j |jdd W d    n1 sw   Y  t jg dd
d}t j| | g}tt j |jdd W d    d S 1 sw   Y  d S )Nr  r  r  r5  rA   rB   r   r   r   r   r   r   r   r   r   r   rF   r   rF   rF   r   r   rF   )r   r   r   r   r   r   r   r   r  r   r  r  r   r   r5  c                    s   j dd  fddt jjD }||ksJ  jjdks!J  jj|ks)J   ks1J | js9J  jsAJ  	dsKJ  	dsUJ t
t  	d W d    n1 sjw   Y  t
t  	d	 W d    d S 1 sw   Y  d S )
NTr.  c                       g | ]} j | jqS r   rC   r:  r   r   r.   r   r   r         z?test_union_from_dense.<locals>.check_result.<locals>.<listcomp>Zdenser   r   r   r   )r   r7   rC   
num_fieldsmode
type_codesr   r   r@  r   r&   r'   KeyErrorr.   expected_field_namesexpected_type_codesexpected_type_code_valuesZactual_field_namesrA   r   py_valuevalue_offsetsrd  r   check_result  s$   

"z+test_union_from_dense.<locals>.check_resultr   r   r   r   rk  rl  rm  binintrF   r   rh  Tr.  )r   r   r   r   r   r   rX   )r   r   
UnionArray
from_denser&   r'   r&  r   )typeslogical_typesrq  r   Zbad_offsetsr   rn  r   test_union_from_dense  sn   
$rz  c                     s  t jg ddd t jg dddt jg ddd} t jg ddd}g d	 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 d    n1 sw   Y  t jj|  gddgd}tt j |jdd W d    n1 sw   Y  tt j t j| dd  g}W d    d S 1 sw   Y  d S )N)r      r  r  r{  r{  r5  rA   rB   )r   r   r   r   r   r   r   r   r^  r   r_  r`  c                    s:   j dd   ksJ  fddt jjD }||ks!J  jjdks)J  jj|ks1J | js9J  dsCJ  dsMJ t	
tj  j W d    n1 saw   Y  t	
t  d W d    n1 s{w   Y  t	
t  d	 W d    d S 1 sw   Y  d S )
NTr.  c                    ra  r   rb  rc  rd  r   r   r     re  z@test_union_from_sparse.<locals>.check_result.<locals>.<listcomp>sparser   r   r   r   )r   r   r7   rC   rf  rg  rh  r   r   r&   r'   r   rP  r@  ri  rj  rA   r   ro  rd  r   rq    s(   

"z,test_union_from_sparse.<locals>.check_resultr   r   r   r   rr  rs  rt  rF   r   ru  Tr.  )r   r   rv  from_sparser&   r'   r&  r   )rx  ry  rq  r   r   r}  r   test_union_from_sparse  s`   
"r  c               	   C   s   t jt jg dt  dt g dt g dg} |  g dks&J t jt jg dt  dt jg dt  dt g dt g d	g} |  g d
ksVJ d S )N)r   r   r   r   r   rB   )r   皙?Nffffff
@g@)TNFTF)r   NNr  F)r   r   r   r   r   r   r   )r   r   r   r   r   r   r   )r   r  Nr  )TNF)r   Tr  Nr  NF)r   rv  r~  r   r   r   rw  r   r$   r   r   r   %test_union_array_to_pylist_with_nulls!  s   r  c                  C   s  t jt jg dt  dt g dt g dg} | dd   g dks*J t jg ddd}t jg d	d
d}t jg ddd}t jg ddd}t j||||g} |  }tt| D ]}t|t| D ]}| ||  ||| ks}J qkqbd S )N)r   r   r   r   rB   )rz   r{   r   drZ  r   )r{   r   rX   r]  rA   r   r   r^  r   )r   r   r   r   r   r   r   r   )	r   rv  r~  r   r   r   rw  r7   r   )r   rA   r   rx  rp  r   r   r   r   r   r   test_union_array_slice7  s"   "r  Tr,  check_array_constructionc          
      C   s   | \}}}}t |tjr|j|ksJ |}ntj||d}t |tjr-|j|ks*J |}ntj||d}|j||d}	|	jdd |	|sHJ |rYtj|||d}||s[J d S d S )NrB   r+  Tr.  rC   r,  )r#   r   r)   rC   r   castr   r   )
r   r,  r  in_datain_typeZout_dataout_typer/   in_arrcastedr   r   r   _check_cast_caseJ  s"   r  c               	   C   sj  t jg ddddt jg dddt ft jg ddddt jg dddt ft jg ddddt jg dddt ft jg ddddt jg dddt fg} | D ]}t| qXt 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 d    n1 sw   Y  qd S )Nr   i1rf   r   r3  Zu4u1Zf8P  r   r   p uint16r   u2rB   )rR   r   r   r   r  r   r   r  r&   r'   r&  r  )
safe_casesr   unsafe_casesr  r  r  r  r   r   r   test_cast_integers_safec  s6   
r  c                  C   sH   t g d} tt | d  W d    d S 1 sw   Y  d S r   )r   r   r&   r'   r(   r  r$   r   r   r   test_cast_none  s   "r  c                  C   s   t ddgddgg} tt | t   W d    n1 s"w   Y  t ddgdggt t  } tt | t   W d    d S 1 sOw   Y  d S )Nr   r   r   rX   r  r  r  )	r   r   r&   r'   rF  r  r   r   rA   r$   r   r   r   test_cast_list_to_primitive  s    "r  c                  C   sF   t jg dd} | jdksJ | d d  }|| sJ | d d  d S )Nr   rB   r   rY   )r   r^   
num_chunksr   )r   r.   r   r   r   $test_slice_chunked_array_zero_chunks  s
   r  c                     sb   t g dt g dg} t | }t   | }t  fdd| D }||s/J d S )Nr   r  c                    s   g | ]}|  qS r   )r  )r   xtargetr   r   r     s    z+test_cast_chunked_array.<locals>.<listcomp>)r   r   r^   r   r  r   )r  Zcarrr  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}||s4J qd S NrB   )	r   r   r   r   r   r   r^   r  r   )typ1typ2r   r.   r/   r   r   r   test_cast_chunked_array_empty  s   
r  c                  C   sL   t t tg gj} W d    n1 sw   Y  t| tjs$J d S N)r&   ZwarnsFutureWarningr   r^   rN   r#   ChunkedArray)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
 qZd S )Nr  r3  rf   r   i2r  r  r   Fr+  )rR   r   Zastyper   r   r  r  r  r   r   r   r   test_cast_integers_unsafe  s    r  c                  C   s   t jg ddddt jg dddt ft jg ddddt jg dddt ft jg ddddt jg dddt fg} | D ]}t|d	d
 qCd S )Nr   r         @r   rf   r   r3  r   )g      $g      4@g      >ir   iTr+  )rR   r   r   r   r  r  r   r   r   r   !test_floating_point_truncate_safe  s   r  c               	   C   s   t jg ddddt jg dddt ft jg ddddt jg dddt ft jg ddddt jg dddt fg} | D ]&}tjtjd	d
 t|dd W d    n1 s^w   Y  t|dd qCd S )N)r  g@r  r   rf   r   r3  r   )g333333$g3333334@gL>r  	truncatedrZ   Tr+  F)rR   r   r   r   r&   r'   r&  r  r  r   r   r   #test_floating_point_truncate_unsafe  s    r  c                  C   s   t dd t dgtddg dt ft dd t dgtdd	g d
t ft dd t dgtdd	g dt fg} | D ]}t| t|dd qFd S )N123456z-912345    rY   @ Ni'1234-9123   rI   i  Ni]Z123z-91{   NiTr+  )decimalDecimalr   
decimal128r   r   r   r  r  r   r   r   test_decimal_to_int_safe  s(   


r  c               	   C   s   t tdd tdgtddg dt ftdd tdgtddg dt ftd	d td
gtddg dt fg} | D ]%}t	j
tjdd t| W d    n1 sbw   Y  t|ddd qId S )NZ1234567890123z-912345678901234r  rY   )iqNir  z
-912345678)i@Nir  r  )iN]   zInteger value out of boundsrZ   Fr  )rR   r   r  r  r   r  r   r   r   r&   r'   r&  r  )Zout_of_bounds_casesr   r   r   r   'test_decimal_to_int_value_out_of_bounds  s8   



r  c               	   C   s   t dd t dgtddg dt ft dd t dgtdd	g d
t ft dd t dgtdd	g dt fg} | D ]&}d}tjtj	|d t
| W d    n1 saw   Y  t
|dd qFd S )Nz	123456.21z
-912345.13r  rY   r  z1234.134z-9123.1r  rI   r  z123.1451z-91.21r  0Rescaling Decimal128 value would cause data lossrZ   Fr+  )r  r  r   r  r   r   r   r&   r'   r&  r  )Znon_integer_casesr   
msg_regexpr   r   r   test_decimal_to_int_non_integer+  s4   



r  c                  C   s2  t jtdd gt ddd} | t dd}t jtdd gt ddd}||s0J d}tjt j	|d | t d	d
}W d    n1 sNw   Y  | jt d	d
dd}t jtdd gt d	d
d}||suJ tjt j	dd | t dd}W d    d S 1 sw   Y  d S )Nz1234.12r  rI   rB   r   r   r  rZ   r   r   Fr+  z1234.1z'Decimal value does not fit in precisionrY   r   )
r   r   r  r  r  r  r   r&   r'   r&  )r   r.   r/   r  r   r   r   test_decimal_to_decimalN  s2   


"r  c                  C   sX   t tjdg} tjt jdd | jt  dd W d    d S 1 s%w   Y  d S )Nr   r  rZ   Tr+  )	r   r   rR   nanr&   r'   r&  r  r   r$   r   r   r    test_safe_cast_nan_to_int_raisesj  s   "r  c                  C   sv   t jg dddt t jg dddt ft jg dddt t jg dddt fg} | D ]}t| q2d S )Nr   r  rf   r  r  r  )rR   r   r   r   r  r  r  r   r   r   test_cast_signed_to_unsignedq  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 qtt 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 d    n1 sw   Y  qd S )Nr   rI   rX   r  rp   rs   rt   zEurope/Parisrz   r{   r   )rg  rB   )r   r   r   float16r   rA   r   r   r   r   r  ru   rx   month_day_nano_intervalr   r   r   r   r   r  unionr   ZUnionMode_DENSEZUnionMode_SPARSEr   r&   r'   rF  r  )r  r  Z	out_typesr  r  r   r   r   test_cast_from_null}  sV   

r  c                  C   s   t g dt jg dt  dft d dgt jd dgt  dfg} | D ].\}}|j|jdd}|jdd ||s?J |j|jdd}|jdd ||sTJ q&d S )	N)r   Z127z-128)r      irB   Z18446744073709551615l    Tr+  r.  )r   r   r   uint64r  rC   r   r   )r   r  r/   r  Zcasted_backr   r   r   $test_cast_string_to_number_roundtrip  s   r  c                  C   s   t jg dt t  t  d} t g d}| jt t  t  ks'J | t  |ks2J t  t  t 	 fD ]"}t |t  }t jg dt |t  d}| ||ks_J q=t
t j | t 	  W d    d S 1 syw   Y  d S )Nr   rB   )r   r   r   r   r   rC   r  r   r   r   r&   r'   r&  )r   r/   Zkey_typerA  r   r   r   test_cast_dictionary  s"   "r  c                  C   s\   t jg dt  d} t jg dt  d}| t  |s"J | d|s,J d S )Nr   rB   rA   )r   r   r   rA   viewr   r   r/   r   r   r   	test_view  s   r  c                  C   s   t g dt g dft g dt g dft g dt  t g dt  fg} | D ]\}}| }||s@J t |g }||sOJ q1d S )Nr   r   r   r   r   r   r   r4   Nr   r4   r4   Nr   )r   r   rD   uniquer   r^   r   r   r/   r.   r   r   r   test_unique_simple  s   r  c                  C   s$  t g dt g dt jg dt  dft g dt g dt jg dt  dft g dt  t g dt  t jg dt  dfg} | D ]@\}}}|t |gfD ]2}| }|jt t 	d|jt 	d	t  gszJ |	d|sJ |	d	|sJ q\qOd S )
Nr  r   )r   r   r   rB   r  r  )r   r   r   r   counts)
r   r   r   rD   r^   value_countsrC   r   r   r   )r   r   Zexpected_valuesZexpected_countsZarr_inr.   r   r   r   test_value_counts_simple  s2   r  c                  C   s  t g d} t g d}t j| |}| }t j|  |}||s)J | }|d|s7J |dt jg dddsHJ t jt jg dd|}| }t jt jg ddt jg dd}||spJ | }|d|s~J |dt jg ddsJ d S )	N)r   r   r   r   r   r   r   r   r   r   r   r   )r4   r   r   Zquxr   r  )r   rY   rX   r   rB   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   s*  t g dt jt jg dddg dft g dt jt jg ddddd	gft jg dt  dt jt jg dddt jdd	gt  dfg} | D ]A\}}| }||s`J t |g }|jd
ksoJ |	d|syJ t jg |j
d }|jdksJ |j
|j
ksJ qQd S )Nr   r   r   Nr   r   r   r   r   r   Nr   r   r   r   rB   r   r  r   Nr   r   r4   r   r   r   )r   r   r   r   rD   r|   r   r^   r  chunkrC   r  r   r   r   test_dictionary_encode_simple  s:   r  c               
   C   sn  t g ddd t jt jg dddg dft g ddd t jt jg d	ddd
dgft jg dt  ddd t jt jg d	ddt jd
dgt  dfg} | D ]I\}}| }||slJ t |g }|jdks{J |j	|j	ksJ |
d|sJ t jg |j	d }|jdksJ |j	|j	ksJ q]t g d}|d  d S )Nr  r   r   )r   r   Nr   r   r   rB   )r   r   r   )Nr4   r   r4   Zxyzzyr   r   r   r4   r   r   r   )r   r   r   r   Zlarge_stringr|   r   r^   r  rC   r  rG   )r   r   r/   r.   r   r   r   r   test_dictionary_encode_sliced/  sF   
r  c                  C   s<   t jg t  d} |  }t|jdksJ |jdd d S )NrB   r   Tr.  )r   r   r   r|   r   r   r   )r   encodedr   r   r   "test_dictionary_encode_zero_lengthO  s   r  c               
   C   s   t g dt jt jg dddg dft g dt jt jg ddddd	gft jg dt  dt jt jg dddt jdd	gt  dfg} | D ]\}}| }||s`J qQd S )
Nr  r  r   rB   r   r  r  r4   r   )r   r   r   r   rD   Zdictionary_decoder   )r   r/   r   r.   r   r   r   test_dictionary_decodeW  s.   r  c                  C   P   t jtjg dddt dd} t jg ddd}| d}||s&J d S )Nr  r   rf   rn   rB   r3  )r   r   rR   time32r  r   r   r/   r.   r   r   r   test_cast_time32_to_intk     
r  c                  C   r  Nr  r   rf   rp   rB   i8)r   r   rR   time64r  r   r  r   r   r   test_cast_time64_to_intt  r  r  c                  C   r  r  )r   r   rR   ru   r  r   r  r   r   r   test_cast_timestamp_to_int}  r  r  c               	   C   sz   t jg ddd} | d}|d}t tdddtdddtdddgd}||s4J || s;J d S )	Nr  r3  rB   date32i  r   r   r   )r   r   r  r   r   r   )r   Zresult1result2Z	expected1r   r   r   test_cast_date32_to_int  s   

r  c                  C   r  r  )r   r   rR   rx   r  r   r  r   r   r   test_cast_duration_to_int  r  r  c                  C   s   t jg dt  d} | t  }t jg dt  d}||s$J ddg}t |}|jt  ks8J t	t
 |t   W d    n1 sOw   Y  t j|tdgt  d}|t  }|jdkspJ d S )	N)s   foos   bars   bazrB   r      mañana	utf-16-leT)r  rC   r   )r   r   rA   r  r   r   encoderC   r&   r'   r_   r   rR   r   )Z
binary_arrZutf8_arrr/   Znon_utf8_valuesZnon_utf8_binaryZnon_utf8_all_nullr  r   r   r   test_cast_binary_to_utf8  s   
r  c                  C   sN   t jtjg dddt  d} t jg ddd}| d}||s%J d S )Nr  r   rf   rB   r  )r   r   rR   date64r  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/J |d	}|d
  |d  ksBJ d S )N  r   rT  "   8   r  r  rB   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   r   boolrd   r      r      r  rI   r   uint32r   r  r   float)r   g?g?doubler   r   rA   )r  r  r  r   )s   abcs   bcds   cdec                 C   s&   t j|| d}|| |sJ d S r  )r   r   r  r   )r   r   r   r   r   r   test_cast_identities  s   r  )rN   rA  )TFTT)r   r   rX   r   )r   r   N)rz   Nr{   r   rX   rY   r   rz   r{   r   ))r   rz   )r   r   Nc                 C   sH   t j| |d}td|jd D ]}||||}||s!J qd S )NrB   r   r   )r   r   r7   HIGHEST_PROTOCOLloadsdumpsr   )rN   rA  pickle_moduler   protor.   r   r   r   test_array_pickle  s
   r  c                 C   sP   t jg dg d}td| jd D ]}| | ||}||s%J qd S )Nr   r   r   r   )r   r   r   r7   r  r  r	  r   )r
  r   r  r.   r   r   r   test_array_pickle_dictionary  s
   r  )Zsuppress_health_check)Z	min_valueZ	max_valuer   c                 C   s&   |  |}| |}||sJ d S r  )r	  r  r   )r
  r   rN   Zrestoredr   r   r   test_pickling  s   

r  c           
      C   s   t j| |d}dd | D }td|jd D ]*}g }|j|||jd}|j||d}||s3J dd | D }	|	|ksBJ qd S )	NrB   c                 S      g | ]}|d ur|j ndqS Nr   rL   r   bufr   r   r   r         z/test_array_pickle_protocol5.<locals>.<listcomp>rY   r   )buffer_callback)rK   c                 S   r  r  r  r  r   r   r   r     r  )	r   r   rK   r7   r  r	  appendr  r   )
rN   rA  r
  r   	addressesr  rK   Zpickledr.   Zresult_addressesr   r   r   test_array_pickle_protocol5  s   r  narrrf   c                 C   s   t | }| j| jksJ 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   rg   rJ   rR   rT   rU   )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}| |sJ d S )N            rB   u8rf   )r   r   r  rR   r   r  r   r   r   $test_array_uint64_from_py_over_range:  s   r  c                  C   s   t jg ddd} t| }t| }t| |d ksJ |jdks%J tjt jdt jddt jdgdddd	}|jdks@J |jd
ksGJ d S )NrZ  r   rf   r   r   r   rX   r   rB   r   )rR   r   r   r   r   rC   r  r   )r   r   r   r   r   r   r   )test_array_conversions_no_sentinel_values@  s   

 r  c                  C   sD  t jg dt dd} t jtjddtjddd gt dd}| |s(J t jg dt dd} t jtjdd	tjd
d	d gt dd}| |sPJ t jg dt dd} t jtjdd	tjdd	d gt dd}| |sxJ t jg dt dd} t jtjdd	tjdd	d gt dd}| |sJ d S )Nrh   rn   rB   r   )secondr   ro     )microsecondr  rp   )r!  r  Nrq   )r   r   r  r   r   r   r  )r.   r/   r   r   r   test_time32_time64_from_integerN  s8   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}||sJ d S )Nr   TrC   from_pandasrB   )r   r   rR   r  r   r   r   r   r   _check_casek  s   z=test_binary_string_pandas_null_sentinels.<locals>._check_caserA   r   r   )r&  r   r   r   (test_binary_string_pandas_null_sentinelsi  s   r'  c                  C   sl  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 ]7\}}tttf tj||d W d    n1 sw   Y  tj||d	d}|j|dkrdndksJ q|d S )Nr   r   rA   r   rD   Z
large_utf8s   stringr   Tr   rT  r   r   rn   rp   rB   r$  r   )rR   r  r   rA   bool_r  r  r  r  r  r  r  ru   rx   r&   r'   r_   r(   r   r   )r   r   r   r.   r   r   r   &test_pandas_null_sentinels_raise_errors  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}||s&J d S )Nr   r   r   rf   T)r%  )pandasIndexrR   r  ri   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}||s*J |jdd}t j	||  |j
| j
ks?J d S )N  rX   zdatetime64[D]rf   rB   Fr\   )rR   r   r   r   r   r  r   rJ   rT   rU   rg   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s$J d S )Nr.  rX   rT  rF   rI     r   r   r   rp   rt   )r   r   r   rC   ru   r$   r   r   r   test_array_from_naive_datetimes  s   r1  )rg   rC   datetime64[s]rn   datetime64[ms]ro   zdatetime64[us]rp   zdatetime64[ns]rq   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}||s-J tttj|| d
}||s@J d S )Nr.  rX   rT  rF   rI   r0  r   r   r   rf   rB   )r   r   r   rR   r   r>  )rg   rC   rN   r   r/   r   r   r   test_array_from_numpy_datetime  s   r4  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 d    d S 1 sJw   Y  d S )Nr.  rX   rT  rF   rI   r0  r   r   r   r2  rf   r3  )r   rR   r   r>  r&   r'   r   ArrowNotImplementedError)rN   rn   ro   r   r   r   5test_array_from_different_numpy_datetime_units_raises  s    "r6  )rq   rp   ro   rn   c                 C   s   t d| }t d| }t d| }t|||g}tj|||gt| d}|j|jks/J |jj| ks7J |d |d ksAJ d S )NNaT2017-01-01 01:01:01.1111111112018-11-22 12:24:48.111111111rB   r   )rR   
datetime64r   r   ru   rC   rm   )rm   r   r  ya1Za2r   r   r   "test_array_from_list_of_timestamps  s   r=  c                  C   sd   t d} t d}t d}tjtjdd t| ||g W d    d S 1 s+w   Y  d S )Nr7  r8  r9  z'Unbound or generic datetime64 time unitrZ   )rR   r:  r&   r'   r   r5  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 J |j|ks'J tj||d}||s5J |	 |ks=J tt
tj|| d}||sPJ |	 |ksXJ d S )Nr   r   rf   rB   )r   r   rR   r   r   r#   ZDurationArrayrC   r   r   r>  )rg   rC   rN   rV   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 d    n1 s%w   Y  qt dd} | gt | gfD ]}tt t| W d    n1 sQw   Y  q:d S )Nr   M)rR   Ztimedelta64r   r&   r'   rF  r   )tdrN   r   r   r   .test_array_from_numpy_timedelta_incorrect_unit	  s   
rB  c                  C   s0  t jg ddd} t| }|jdksJ tjg ddd}||s%J t g d}tj| |d}tjg ddd}||sCJ t jg dd	 ddd d d
 } t g dd	 d d d
 }tj| |d}tjg ddd}||sxJ t jg ddd} t| }tjg ddd}||sJ d S )Nabcdeabcr3   z|S5rf   rA   rB   rU  r  rD  Nr3   rY   r   rD  r3   NrD  r3   NrD  r3   r3   r3   r3   z|S0rR   r   r   rC   r   )r   	arrow_arrr/   r  r   r   r   test_array_from_numpy_ascii	  s(   
 

rK  c                  C   s   d t jddddddddg} t| t }t|tjsJ |jt ks'J d tddt jddddddt jdd d gg}t|}|	|sMJ |
 |ksUJ d S )Nr   )r   secondsmicrosecondsmillisecondsminuteshoursweeksr   r   )rL  rM  rN  rO  rP  rM  r!  )r   r   r   r   r  r#   MonthDayNanoIntervalArrayrC   MonthDayNanor   r   rN   r   r  r/   r   r   r   "test_interval_array_from_timedelta4	  s.   


rV  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s(J |jt	 ks1J d t
ddtjdddddtjdd	 d
 gg}t|}||sVJ |  d |ddtjdddddtjdd	 ddgksuJ tt t|dddg W d    n1 sw   Y  tt t|dddg W d    n1 sw   Y  tt t|dddg W d    n1 sw   Y  tt t|dd	g W d    d S 1 sw   Y  d S )Nr   )relativedelta
DateOffsetr   )	yearsmonthsr   rL  rM  rO  rP  rQ  leapdaysr   r   rL  rM  rO  rP  rR  r!  r[  r   rM  nanosecondsiUUUr6   )rZ  r[  i$I$)rQ  r   l   	z )rL  r_  l   \kpz)Zdateutil.relativedeltarW  r*  rY  r   r   r#   rS  rC   r  rT  r   r   r   r~   r   r&   r'   r_   )rW  rY  rN   r   r  r/   r   r   r   &test_interval_array_from_relativedeltaJ	  s`   





"r`  c                  C   sx   d dg} t | t  }t|t jsJ |jt  ksJ d t g dg}t |}||s2J | |ks:J d S )N)r   r   )	r   r   r  r#   rS  rC   rT  r   r   rU  r   r   r   test_interval_array_from_tuplet	  s   
rb  c                  C   s  ddl m}  d | dddddddddd	|  g}t|}t|tjs$J |jt ks-J d tg dtg dg}t|}|	|sHJ d | ddt
jddddd	t
jdd
 dd| dddddg}|  |kspJ t|g  }t|dksJ t|d |ksJ d S )Nr   rX  r   )	rZ  r[  r   rL  rM  rO  rP  rQ  r_  )r   r   l   E5IQ)r   r   r   r   r   r]  rR  r^  )Zpandas.tseries.offsetsrY  r   r   r#   rS  rC   r  rT  r   r   r   r~   r   r   r>  )rY  rN   r   r  r/   Zexpected_from_pandasZactual_listr   r   r   #test_interval_array_from_dateoffset	  s>   


	rc  c                  C   sB  ddg} | D ]z}t jg d|d}t|}|jdksJ tjg ddd}||s-J t g d}tj||d}tjg d	dd}||sKJ t jg dd
 |dd d d }t g dd
 d d d }tj||d}tjg ddd}||sJ qt jg ddd}t|}tjg ddd}||sJ d S )Nz<U5z>U5rC  rf   r   rB   rU  r  rF  rY   r   rG  rH  z<U0rI  )dtypesrg   r   rJ  r/   r  r   r   r   test_array_from_numpy_unicode	  s,   
 

re  c                   C   sL   t t tjtg dt d W d    d S 1 sw   Y  d S )Nr   rB   )r&   r'   r(   r   r   rR   r   r   r   r   r   !test_array_string_from_non_string	  s   "rf  c                  C   s   t jd d gtd} tj| t d}|jdksJ t jt jt jgdd} tt	 tj| t d W d    n1 s=w   Y  tj| t dd}|jdksSJ d S )Nrf   rB   r   r   Tr$  )
rR   r   ri   r   r   r   r  r&   r'   r(   )valsr   r   r   r   test_array_string_from_all_null	  s   rh  c                  C   s   t jjg ddg dd} t| }tjg ddd}||s"J tjtdd tj| t g d	d
 W d    d S 1 sAw   Y  d S )NrZ  r   FFTF)rg   r  r   r   NrX   rB   z Cannot pass a numpy masked arrayrZ   )TFFFr  )rR   mar   r   r   r&   r'   r_   rk  r.   r/   r   r   r   test_array_from_masked	  s   
"rm  c                  C   s>   t jjdgdd} t| }tjdgdd}||sJ d S )Nr   r   rf   rB   )rR   rk  r   r   r   rl  r   r   r   test_array_from_shrunken_masked	  s   
rn  c                  C   s   d} t g dg dg}tjt| d t| W d    n1 s$w   Y  t d}tjt| d t| W d    d S 1 sFw   Y  d S )Nz only handle 1-dimensional arraysr   r  rZ   r   r   )rb   Zarr2dZarr0dr   r   r   "test_array_from_invalid_dim_raises	  s   
"ro  c                  C   sv   t jdtd} t| d d df }tg d}||s J t| dd d f }tddg}||s9J d S )N)r   r   rf   r   )TTTT)rR   Zonesr   r   r   r   r-   r   r   r   test_array_from_strided_bool	  s   rp  c                  C   s   g dt  t dffg dt  t  t  t  ffg dt  t  ffg dt  ffg} | D ]4\}}t	
|}|D ](}d t	
ddgfD ]}t j
|d d d ||d}|d d d | ksfJ qJq?q4d S )N   abs   cd   efr   r   r  )abcdZefFr  )r   rA   r   r   r   r   r   r   r   rR   r   r   )Zpydatar   rd  nparrayZpatyper  arrow_arrayr   r   r   test_array_from_strided
  s    "
rx  c                  C   s2   t g dd } | jdksJ | jdksJ d S )N)TTNFNTr!  i  )r   r   Z
true_countZfalse_countr$   r   r   r   #test_boolean_true_count_false_count
  s   ry  c                  C   s  t jg dt  d} |  }t|dksJ |d  }dt|  kr*dks-J  J t|d dks7J | dd  }| }|jdk t|dksNJ |d  }dt|  kradksdJ  J t|d dksnJ t	d|d  d	ks|J t t
g d
} |  }t|dksJ |d d u sJ t	d|d  d
ksJ t g d} |  }t|dksJ |d  }t|d dksJ |d  }t	d|dksJ |d  }|dksJ d S )Nrj  rB   r   r   r   @   rF   Zhhxxh)r   r   rX   r  Z3b)s   foo!Ns   bar!!r   rY   4i)r   rX   rX   r   s	   foo!bar!!)r   r   r   rK   r   
to_pybytes	bytearrayr   r   unpackrR   r   )rz   rK   null_bitmapZa_slicedr@  r   r   r   r   test_buffers_primitive
  s8    
 r  c               
   C   s  t jddgd g dgt t  d} |  }t|dksJ |d  }t|d dks/J |d  }t	d|d	ks?J |d  }t|d d
ksOJ |d  }t	d|dks_J t jg dt t 
dt  t 
dt  gd} |  }t|dksJ |d  }t|d dksJ |d  }t|d dksJ |d  }t	d|dksJ |d  }t|d dksJ |d  }t	d|dksJ d S )Nr   r   r   NrX   rY   rB   rX   r   rY   r{  )r   r   r   r   7   r   Zqqq8xqq)r   r   r   rX   rY   ))*   NN)N+   rz   r{   Zbxx)r  r   Z4xh)r  )r   r   r   r   rK   r   r|  r}  r   r~  r   r   r   )rz   rK   r  r@  r   r   r   r   test_buffers_nested@
  s8   &
r  c                  C   s  t tjg ddd} | jdksJ |  dksJ t| t| | j ks*J t jg ddd} | jdks:J |  dksBJ t| t| | j ksQJ t jdd	gd g d
gt 	t 
 d} | jdkskJ |  dkssJ t| t| | j ksJ t jg dgddgggt 	t 	t  d} |  dksJ | jdksJ t jdd	gddggg dd dggddgggt 	t 	t  d} | dd	}|jdksJ | dksJ d S )Nr  r   rf      r   Nr   rB      r   r   r  >   B   )rY   r   r   r   rI         r   rX   r      r  )r   r   rR   nbytesZget_total_buffer_sizer   	getsizeofri   
__sizeof__r   r   r   rG   )rz   r<  r   r   r   test_total_buffer_sizec
  s*   &.*r  c                  C   sD   t t jg dt  dt jg dt  dg} | jdks J d S )Nr  rB   r  r   )r   r^   r   r   r  )rz   r   r   r   test_nbytes_sizez
  s   r  c                   C   s@   t t ttdg W d    d S 1 sw   Y  d S )Nr   )r&   r'   r(   reprr   Tensorr   r   r   r   $test_invalid_tensor_constructor_repr
  s   "r  c                   C   s8   t t t  W d    d S 1 sw   Y  d S r  )r&   r'   r(   r   r  r   r   r   r    test_invalid_tensor_construction
  s   
"r  )offset_typer  c           	   	   C   sH  ||t  }t jd g dd ddggg g ddgd gddggg|d}t jg d	| d}|t  }t jg dd ddgg ddgd ddgg|d}t jg d
| d}t jg dt  d}| |seJ |j|smJ |j|suJ | |s~J |j|sJ |j|sJ |  |sJ |jj|sJ d S )Nr!   r   rX   rY   r   r   r   rB   )r   r   r   r   r   r   )r   r   r   rY   rY   r   r   r   )	r   Nr   r   rX   rY   r   r   r   )r   r   r   flattenr   r@  r   )	r  r  r  r   rB  r  r   Zoffsets1arr0r   r   r   test_list_array_flatten
  s\   	
r  	list_typerW  c                 C   sN   t jddgd d d gddgg| d}t jg dt  d}| |s%J d S )Nr   r   r   rX   rB   )r   r   r   r   r   r   )r   r   r   Zvalue_parent_indicesr   )r  r   r/   r   r   r   test_list_value_parent_indices
  s   r  )r  r  c                 C   s   t |dd r!tjddgd d d gddgg|d}tjg d| d}ntjg dd g ddgg|d}tjg d	| d}| |sBJ d S )
NrW  r   r   r   rX   rB   )r   Nr   r   r  )r   Nr   r   )getattrr   r   Zvalue_lengthsr   )r  r  r   r/   r   r   r   test_list_value_lengths
  s(   r  c                 C   s   | t  }t jdgddgg dg|d}| d d }t d|d< |j|jt|||jgd}|	 dgd g dgks@J |j
	 g d	ksKJ | }|jd
d |j|jks]J |	 g dksgJ |j	 g dksrJ d S )Nr   r   r   r  rB      r   r  )r   r   r   r   Tr.  )r   rX   rY   r   r   r   r   rX   rY   r   )r   r   r   rK   r   r   rC   r   r   r   r@  r  r   
value_type)r  rA  r   rK   Z	flattenedr   r   r   %test_list_array_flatten_non_canonical
  s   r  klassc                 C   s   | j g dg dd}|j g dksJ |j g dks!J |dd  }|j g dks2J |j g dks=J |  g dksIJ |jd  }|jd  }|d  |j||    krndgksqJ  J d S )	N)r   r   rX   r   r  )r@  r   r   )r   rX   r   r  r   rX   )r   r   r   r@  r  r"   )r  r   r   r   r   r   r   r   %test_list_array_values_offsets_sliced  s   8r  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.J t t  d}t jddgddgddgdd gd dd	gg|d
}|j|sUJ | |s^J t  }t jg d|d
}|j|ssJ | |s|J |  |sJ d S )Nr   r   r   rX   rY   r   r   r   r   rB   )
r   r   r   rX   rY   r   r   Nr   r   )r   r   r   r   rC   r   r  )r  r   r  r   Ztyp0r  r   r   r   "test_fixed_size_list_array_flatten  s>   
r  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s(J d S )Nr   r   r   r  rB   )r   r   r   r   r  )r   r   r   r   -test_fixed_size_list_array_flatten_with_slice:  s   ,r  c                  C   sr  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	|s4J |jt jd	d
dddddddg|dksLJ |j
	t g dsYJ |j	t jg dt  dsjJ t j|j|j
	t d	dgdggsJ t j|j|j	t jd
dgdggt t  dsJ tt |  W d    d S 1 sw   Y  d S )NkeyFr  r   rH  rI  rJ  rB   rz   r   )r  r   r{   r   r   r   r   r   )r   rK  r   r   r   r   r   r   rC   r   rQ  rR  r[  r   r@  r   r&   r'   rF  r  )r   Z	ty_valuesrz   r   r   r   test_map_array_values_offsets@  s0   " 
"r  c                  C   s^  t t dt  t dt  g} t jg d| d}| \}}|jt  ks+J |jt  ks4J | g dks>J | g dksHJ |dd   \}}| dd	gks\J | d
dgksfJ t jg d| d}| \}}| g dksJ | g dksJ |dd   \}}| d dgksJ | d d
gksJ t jg d| d}| \}}| g dksJ | g dksJ |dd   \}}| dd gksJ | dd
gksJ t jg d| d}| \}}| g dksJ | g dksJ |dd   \}}| d d gks"J | d dgks-J d S )Nr  r;  r   rB   r   r   rY   r   r   r   r   r   rY   r   r   )r   Nr   r  )r   Nr   )r   N)r         @)Nr   rh   )Nr  r   r   r  )r  N)Nr   )r   NN)NNr   r   )	r   r   r   r   r   r   r  rC   r   )r   rz   ZxsZysr   r   r   test_struct_array_flattenX  sB   r  c            
   	   C   s  t t dt  t dt  g} t jg d| d}|d}|d}|d}|d}|d}|d}t|t jjsCJ t|t jj	sLJ |
t jg d	t  ds\J |
t jg d
t  dslJ |
|ssJ |
|szJ |
|sJ |
|sJ d t  fD ]}tt || W d    n1 sw   Y  qdD ]}tt || W d    n1 sw   Y  qdD ]}	tt ||	 W d    n1 sw   Y  qd S )Nr  r;  r   rB   r   r   r   r   r  r  r   ra  zr3   )r   r   r   r   r   r   r#   r   
Int16Array
FloatArrayr   r&   r'   r(   r   ri  
r   rz   Zx0Zy0x1y1Zx2y2Zinvalid_indexZinvalid_namer   r   r   test_struct_array_field~  sD   





  r  c            
   	   C   s  t t dt  t dt  g} t jg d| t g dd}|d}|d}|d}|d	}|d}|d}t|t jj	sIJ t|t jj
sRJ |t jg d
t  dsbJ |t jg dt  dsrJ ||syJ ||sJ ||sJ ||sJ d t  fD ]}tt || W d    n1 sw   Y  qdD ]}tt || W d    n1 sw   Y  qdD ]}	tt ||	 W d    n1 sw   Y  qd S )Nr  r;  r   rU  rV  r   r   r   r   )r   NrY   rB   )r   Nr   r  r  )r   r   r   r   r   r   Z_flattened_fieldr#   r   r  r  r   r&   r'   r(   r   ri  r  r   r   r   !test_struct_array_flattened_field  sH   





  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 ]\}}zt jg |d| W q@ t jjt jfy^   Y q@w d S )NrX   )lengthrB   )r   r   r(  r   r   r   r   r   r  r  r  r  r   r   r  r  rA   r   	itertoolsproductr   r  r   r5  r&  )rx  t1t2r   r   r   test_empty_cast  s4   
r  c                  C   s   t jg dddg} t jg d| }| ddgdggks!J t jg dddg} t jg d| }| g dks?J d S )Nr  rz   r{   )r   r   r   )r   r   r   r   r   )rz   r{   rz   r{   rz   )r   r   r   r[  r   )rN  Zlist_arrZ	dict_arr2r   r   r   test_nested_dictionary_array  s   r  c                  C   s6  t ddg} t jddgtd}t| t }t|t }tddg}||s.J ||s5J t jddgtd}tj| t |d}||sOJ t ddg} t	t
 t| t  W d    n1 spw   Y  t	t
 tj| t t dgd W d    d S 1 sw   Y  d S )NZtotoZtatarf   Fr  r  r  )rR   r   ri   r   r   r   r   r  r&   r'   r_   )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 ]H\}}t|}t|}d }t|tjsVJ |j	|ks]J |j
dksdJ d}t |j
D ]}||}|D ]}	|	 || ksJ |d7 }qtqkq>d S )N   xr  c                 S   s(   i | ]}|d d t |d d qS )r  i rI   r   )r   r  rc  r   r   r   
<dictcomp>  s    z9test_numpy_binary_overflow_to_chunked.<locals>.<dictcomp>rI   c                 S   s   i | ]
\}}|| d qS )r   )decode)r   r   r  r   r   r   r    s    c                       g | ]} |d   qS rI   r   rc  )unique_stringsr   r   r     s    z9test_numpy_binary_overflow_to_chunked.<locals>.<listcomp>i   c                    r  r  r   rc  )unicode_unique_stringsr   r   r     re     r   r   )r7   rR  r   rA   r   rR   r   r#   r  rC   r  r  r"   )
r   Zunicode_valuesr   Zex_typer   rJ  Zvalue_indexr   r  valr   )r  r  r   %test_numpy_binary_overflow_to_chunked  s<   





r  c                  C   s   d} d}| gg|d  }t |}t|t jsJ t||d ks#J | gg| }t |}t|t js6J t||ks>J t|d|d ksKJ t|ddksVJ d S )NA   xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxi    r   r   )r   r   r#   r)   r   r  r  )Zkilobyte_stringZtwo_megarg  r   r   r   r   #test_list_child_overflow_to_chunked.  s   

r  c                  C   sp   t jg dg dd} | t  ksJ t jg dtg dd} | t  ks)J t jg g dt  ks6J d S )N)r4   r   Nr   )FFFTr  TTTT)r   Z
infer_typer   rR   r   r   )r   r   r   r   test_infer_type_masked@  s   

r  c                  C   sj   t jg dtg dd} | jt  ksJ t jtjg dddtg dd} | jt  ks3J d S )NrX   NrX   r  FTFTr  r   rf   )r   r   rR   rC   r   r$   r   r   r   test_array_maskedO  s   
r  c               	   C   s  t jg dtg dd} |  g dksJ t jg dt g dd} |  g dks0J t jg dg dd} |  g dksEJ t jg dg dd} |  g dksZJ tt j t jg dt g dd} W d    n1 syw   Y  tt j t jg dg dd} W d    n1 sw   Y  tt j t jg dtg dd} W d    n1 sw   Y  tt j t jg dt jg dt g d	dd} W d    n1 sw   Y  tt j t jg dt g d
d} W d    n	1 sw   Y  tt t jtg dg dd} W d    n	1 s2w   Y  tt t jtg dt g dd} W d    d S 1 sZw   Y  d S )Nr  r  r  )rX   NrX   N)rX   NrX   r   )rX   r   Nr   )rX   NNN)r   r   r  g      @r  )FNFT)TFTF)r   r   rR   r   r&   r'   rP  r(   r$   r   r   r   test_array_supported_masks[  sj   









$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s$J d S )Nr   r   rz   r   )r:  rg   TFr   rf   r  )r*  r   r   ZSeriesr   )r*  r   r   r   r   !test_array_supported_pandas_masks  s
   r  c                  C   sl  t jdgt dtdgd} dg|  ksJ t jtdgt dtdgd}dg| ks5J t jtdgt dtdgd}d g| ksQJ t jtdgt  tdgd}dg| kslJ t jtdgt  tdgd}d g| ksJ tg dd }t j|t dtg d	d d}d
||dk< g dd | ksJ d S )Nr  r   FrV  T)s   aaa   bbbs   cccrI   r   )FFFs   XXXr  )r   r   rA   rR   r   )Zmasked_basicZmaskedZmasked_nullsZnparw  r   r   r   test_binary_array_masked  s4   




r  c                  C   s   t g d} tj| d d d tdt ddgd}ddg| ks&J t g d} t| d d d td}ddg| ksEJ d S )Nrq  r   Fr  rr  rs  )rR   r   r   rA   r   )rv  rw  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g d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 g dt ddgtd	fg} | D ]$\}}}}tj||d
 tj||d W d    n1 s~w   Y  q_d S )Nr   r   Fr   rf   zmust be boolean dtypezmust be 1D arrayr   zdifferent lengthrZ   r  )rR   r   r(   r   r&  r_   r&   r'   )r   objr  exrb   r   r   r   test_array_invalid_mask_raises  s2   r  c                   C   s@   t t ttdg W d    d S 1 sw   Y  d S )Nr  )r&   r'   OverflowErrorr   r   rt  r   r   r   r   test_array_from_large_pyints  s   "r  c                  C   sH  G dd d} | t jg ddd}t|}tjg dt d}||s)J tj|t d}tjg dt d}||sDJ tj|t d}tjg dt d}||s_J tt tj|t g dd W d    n1 s{w   Y  tt tj|d	d
 W d    n1 sw   Y  G dd d}|t jg ddd}tt	 t| W d    n1 sw   Y  G dd d}|t jg ddd}t|}tjg dt d}||sJ G dd d}t jg ddd}|||}t|}tj
g dg dgt d}||s"J d S )Nc                   @      e Zd Zdd ZdddZdS )z$test_array_protocol.<locals>.MyArrayc                 S   
   || _ d S r  rN   selfrN   r   r   r   __init__     
z-test_array_protocol.<locals>.MyArray.__init__Nc                 S   s   t j| j|dS r  )r   r   rN   r  rC   r   r   r   __arrow_array__  s   z4test_array_protocol.<locals>.MyArray.__arrow_array__r  r   r   r   r  r  r   r   r   r   MyArray      r  r   r   rf   rB   rd   r  r   r  c                   @   r  )z+test_array_protocol.<locals>.MyArrayInvalidc                 S   r  r  r  r  r   r   r   r    r  z4test_array_protocol.<locals>.MyArrayInvalid.__init__Nc                 S   s   t | jS r  )rR   r   rN   r  r   r   r   r       z;test_array_protocol.<locals>.MyArrayInvalid.__arrow_array__r  r  r   r   r   r   MyArrayInvalid  r  r  c                   @   r  )z%test_array_protocol.<locals>.MyArray2c                 S   r  r  r  r  r   r   r   r    r  z.test_array_protocol.<locals>.MyArray2.__init__Nc                 S   s   t j| jg|dS r  )r   r^   rN   r  r   r   r   r    s   z5test_array_protocol.<locals>.MyArray2.__arrow_array__r  r  r   r   r   r   MyArray2  r  r  c                   @   r  )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   r^   r  r  r  r   r   r   r    s   z5test_array_protocol.<locals>.MyArray3.__arrow_array__r  r  r   r   r   r   MyArray3  s    r  )rR   r   r   r   r   r   r&   r'   r_   r(   r^   )r  r   r.   r/   r  r  r  rV   r   r   r   test_array_protocol  sB   



r  c                  C   st   G dd d} | t jg dt  d}t |}||jks J t j|t  d}|t jg dt  dks8J d S )Nc                   @   r  )z+test_c_array_protocol.<locals>.ArrayWrapperc                 S   r  r  r  r  r   r   r   r  (  r  z4test_c_array_protocol.<locals>.ArrayWrapper.__init__Nc                 S   s   | j |S r  )rN   __arrow_c_array__)r  Zrequested_schemar   r   r   r  +  r  z=test_c_array_protocol.<locals>.ArrayWrapper.__arrow_c_array__r  )r   r   r   r  r  r   r   r   r   ArrayWrapper'  r  r  r   rB   )r   r   r   rN   r   )r  r   r.   r   r   r   test_c_array_protocol&  s   
"r  c                  C   s>   t t ddgt ddgg} | t g dsJ d S )Nr   r   r   rX   rZ  )r   concat_arraysr   r   )Zconcatenatedr   r   r   test_concat_array8  s   r  c                   C   sP   t tj ttdgtdgg W d    d S 1 s!w   Y  d S )Nr   r   )r&   r'   r   r&  r  r   r   r   r   r   !test_concat_array_different_types>  s    "r  c                  C   s   t jtdd td g W d    n1 sw   Y  tddgddgg} t jtdd t|  W d    d S 1 s@w   Y  d S )Nzshould contain Array objectsrZ   r   r   r   rX   )r&   r'   r(   r   r  r^   r$   r   r   r   test_concat_array_invalid_typeC  s   "r  c                  C   s\   t jg dt jdddd} |  }|jjd usJ t | g} |  }|jjd us,J d S )Nr   rn   zEurope/Brusselsrt   rB   )r   r   ru   r~   dtrr   r^   )r   rn   r   r   r   test_to_pandas_timezoneN  s   r  c                  C   sZ   t dgt dgt dgg} t| }| }|d jdks#J | | ks+J d S )Nr   r   r   r   r  )rR   r  r   r   r~   rg   r   )r/   r   r.   r   r   r   test_to_pandas_float16_listY  s
   "
r  c                  C   s   t jg dt  d} | d}| g dksJ t g dg dg} | d}| g dks4J t jg dt  d} | jdd	d
}| g dksPJ | jddd
}| g dksaJ d S )N)rY   r   #   rB   
descending)r  r   rY   r   r  )r   rY   rX   r   r   r   )rY   r   r  Nat_end)null_placement)r  r   rY   Nat_start)Nr  r   rY   )r   r   r   sortr   r^   )r   
sorted_arrr   r   r   test_array_sortc  s   

r   c                  C   s*  t jjt jg dt  dt g dgddgd} | jddd}| d	d
ddddddddddgks9J t jjt jg dt  dt g dgddgt g dd}|jdddd}| d d	d
dddddddgksvJ |jdddd}| d	d
dddddddd gksJ d S )N)rY   r   r   r  rB   )r4   carr   foobarrz   r{   r   r  )byr  r  r   r   r  r   rY   r4   ri  r  r  )r  r  r  )r   r  r   r   r   r  r   )r   r  Zarr_with_nullsr   r   r   test_struct_array_sorts  sJ   

r  c                  C   s  t g d} t | }| |ksJ t j| t  d}t jg dt  d}||ks,J |jt  ks5J t jdgt  d} tt j t j| t  d W d    n1 sYw   Y  t jdgt  d}t j| t  dd}||ksxJ t j| t 	 d}| |ksJ d S )Nr   rB   l    r   Fr  )Zmemory_pool)
r   r   r   rC   r   r&   r'   r&  r   Zdefault_memory_poolr-   r   r   r    test_array_accepts_pyarrow_array  s    
r  c                 C   sX   | j  |ks	J | j |ksJ t| |ksJ |  |ks"J |  |ks*J d S r  )run_endsr   r   r   Zfind_physical_lengthZfind_physical_offset)	ree_arrayr  r   Zlogical_lengthZphysical_lengthZphysical_offsetr   r   r   check_run_end_encoded  s
   r  c                 C   s6   g d}g d}t j||| }t|||ddd d S )Nr   rY   rI   r  r   r   r   r   r  rX   r   )r   RunEndEncodedArrayr   r  )ree_typer  r   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_typer  r  r   r   r    test_run_end_encoded_from_arrays  s    
r  c            	   	   C   s  g d} g d}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 d    n1 sw   Y  tt	 t j|||||d  W d    n1 sw   Y  tt	 t j|||||| g W d    n1 sw   Y  tt	 t j|||d	|| W d    d S 1 sw   Y  d S )
Nr	  r
  )r  r  r  r   rX   r   r   r   )
r   r  r   r   r  r   r  r&   r'   r_   )	r  r   r  r  rK   r   r   r	  r  r   r   r   !test_run_end_encoded_from_buffers  s^   "r  r  )collections.abcr   r   r  Z
hypothesishZhypothesis.strategiesZ
strategiesstr  r&   r   r   r   r   numpyrR   Zpyarrowr   Zpyarrow.tests.strategiesZtestsZpastr   r    r%   r*   r0   r5   r8   r;   r=   r@   rH   rW   rc   rj   rl   markZparametrizerw   ry   r}   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-  r0  r[  ZLargeListArrayrC  rE  rG  rM  rO  rS  rY  r\  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  r  r  r  r  r  r  r  r  r7   rA   r  r(  r   r   r   r   Zpickle_test_parametrizer  r  settingsZHealthCheckZtoo_slowgivenr  Z	all_typesZintegersr  r  rS   r   r  r  r  r   r   r  r  r  r  r#  r'  r)  r-  r/  r1  ru   r4  r6  r=  r>  rx   r?  rB  rK  rV  r`  rb  rc  re  rf  rh  rm  rn  ro  rp  rx  ry  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  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   r   <module>   sj  

&
7(		
#
H

F


6


	


 	
D4JE
%#(	 				






$
		

	



	

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