o
    Gh1                    @   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zd dlZW n eyA   dZY nw d dlZd dlm  mZ d dlmZ e
jjdd Zdd Zdd	 Zd
d Zdd Zdd Z dd Z!dd Z"dd Z#dd Z$dd Z%e
jjdd Z&e
jjdd Z'e
jjdd Z(e
jjd d! Z)e
jje
j*d"g d#e
j*d$dd%gd&d' Z+e
jje
j*d"g d#d(d) Z,e
jjd*d+ Z-e
jj.d,d- Z/e
jj0e
jj.d.d/ Z1e
j*d0de2 e3 e4 gd1d2 Z5d3d4 Z6d5d6 Z7d7d8 Z8e
jjd9d: Z9d;d< Z:d=d> Z;d?d@ Z<dAdB Z=dCdD Z>dEdF Z?e
jjdGdH Z@e
jjdIdJ ZAdKdL ZBe
jjdMdN ZCdOdP ZDdQdR ZEe
j*dSejFejGejHejIgdTdU ZJdVdW ZKdXdY ZLdZd[ ZMe
j*d\d]d^d_ ZNe
jjd`da ZOe
jjdbdc ZPe
jjddde ZQdfdg ZRdhdi ZSe
jje
j*djejTejFfejUejGfgdkdl ZVe
j*djejTejFfejUejGffe
j*dmdd ggdd dgd ggd gdnggfdodp ZWe
j*djejTejFfejUejGffdqdr ZXdsdt ZYdudv ZZdwdx Z[e
jjdydz Z\d{d| Z]d}d~ Z^dd Z_dd Z`dd Zadd ZbdddddZce
jjdd Zddd Zedd Zfdd Zgdd Zhdd Zidd Zje
jjdd Zke
jjdd Zle
jjdd Zmdd Zndd Zoe
jjdd Zpdd Zqdd Zre
jjdd Zse
jjdd Ztdd Zudd Zvdd Zwdd Zxdd Zydd Zzdd Z{dd Z|dd Z}dd Z~dd Ze
jjddĄ Ze
jjddƄ Ze
jjddȄ Zddʄ Ze
jjdd̄ Ze
jjdd΄ Ze
jjddЄ Zdd҄ Ze
j*ddg dբfded d׃fded dكfded dۃfded dۃfded dۃfded dۃfded dۃfded dۃfdg dfdg dfdg dfdg dfedg dfgdd Ze
j*dg de fg de fg de fg de4 fg dfdndgdggeFe fddgdggeGe fdgdddggeFe4 fdndgdggeHe fddgdggeIe fdgdddggeHe4 fg deede ede4 gfgZedd Zdd Ze
jjejejjfdeejejejd dddd d Zedd Ze
jjdd Ze
jjdd Ze
jjdd	 Zd
d Ze
jjdd Ze
jjdd Ze
jj.dd Ze
jjdd Zdd Ze
jje
j*ddedfdedfdedfdedfgdd  Ze
jjd!d" Ze
jje
j*d"g d#d$d% Ze
jjd&d' Ze
jje
j*dd(edfd)edfd*edfd+edfgd,d- Ze
jjd.d/ Ze
jje
j*d0de e e gd1d2 Zd3d4 Ze
jj.d5d6 Zd7d8 Ze
jj.d9d: Ze
jje
j*d;de e e gd<d= Ze
jjd>d? Ze
jjd@dA Ze
jjdBdC Ze
jjdDdE Ze
jjdFdG Ze
jjdHdI Ze
jjdJdK ZdLdM Ze
jjdNdO ZdPdQ Ze
jjdRdS ZdTdU ZÐdVdW ZĐdXdY Ze
j*dZeơ ejFfe ejGfgd[d\ Ze
j*d]eFeơ ejFeơ dd^eGeơ gd_d` Ze
j*daeơ eFeơ feơ ejFeơ dd^fe eGeơ feơ eHeơ fe eIeơ fgdbdc Ze
j*dSejFejGgddde Ze
j*dfejTejUgdgdh Zːdidj Z̐dkdl Z͐dmdn Zΐdodp Zϐdqdr ZАdsdt Zѐdudv ZҐdwdx Ze
jjdydz Ze
jje
jje
jje
j*d{d|dgd}d~ Ze
jj֐dd Ze
jjdd Ze
jjdd Ze
jjdd Ze
jj.dd Ze
jjdd Ze
jjdd Ze
jjdd Zߐdd Ze
jjdd Ze
jjdd ZG dd dZG dd dZe
j*deeg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 Zdd Ze
jjdd Ze
jjdd Ze
jj.dd Ze
j*djejejHfejejIfgdd Ze
j*djejejHfejejIfgdd Ze
j*dejejHeơ fejejIe fgdÐdĄ Ze
j*dejejgdƐdǄ Ze
jje
j*dg dɢdʐd˄ Zd̐d̈́ ZdS (      )IterableN)Versionc                  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   Y/var/www/html/Persson_Maskin/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_weakref7   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_pyis_valid
isinstance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_raisesF   s   "r-   c                  C   sN   t dgd g dg} |  }d}||ksJ | jdd}d}||ks%J d S )Nfoo)barza longer stringNzQ[
  [
    "foo"
  ],
  null,
  [
    "bar",
    "a longer string",
    null
  ]
]
   )element_size_limitz`[
  [
    "foo"
  ],
  null,
  [
    "bar",
    "a longer (... 7 chars omitted)",
    null
  ]
]r   r   	to_stringr   resultexpectedr   r   r   test_list_formatM   s   r7   c                  C   *   t g d} |  }d}||ksJ d S )N Nr.   z[
  "",
  null,
  "foo"
]r2   r4   r   r   r   test_string_formatn   s   r;   c                  C   s.   t td} | jdd}d}||ksJ d S )Nd   r   )windowz[
  0,
  1,
  ...
  98,
  99
])r   r   ranger3   r4   r   r   r   test_long_array_formatz   s   r?   c                  C   .   t g d} | jdd}d}||ksJ d S )Nr9   r   )indentz[
 "",
 null,
 "foo"
]r2   r4   r   r   r   test_indented_string_format      rB   c                  C   r@   )Nr9   r   )top_level_indentz [
   "",
   null,
   "foo"
 ]r2   r4   r   r   r   %test_top_level_indented_string_format   rC   rE   c                  C   r8   )N)        Ns   foos   z([
  00,
  ,
  null,
  01666F6F,
  80FF
]r2   r4   r   r   r   test_binary_format   s   rH   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   total_values_lengthslice)r   	large_arrr   r   r   test_binary_total_values_length   s   

rR   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 )Nr0   r   r   )r   r   r>   to_numpybuffersaddressctypesdatagccollectbasenparangetestingassert_array_equal)r   np_arr	arrow_bufrX   r6   r   r   r   test_to_numpy_zero_copy   s   
ra   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      )rb      r<   z>zero_copy_only must be False for pyarrow.ChunkedArray.to_numpymatchTzero_copy_only)r   r   rb   rb   rc   r<   )	r   chunked_arrayr)   r*   
ValueErrorrS   r[   r]   r^   )elementschunked_arrmsgr_   r6   r   r   r   %test_chunked_array_to_numpy_zero_copy   s   
rm   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TFTFrf   NNNdtyper   r   Nzwith 1 nullsrd   )
r   r   r)   r*   ri   rS   r[   r]   r^   object)bool_arrr5   r6   null_arrr   r   r   r   test_to_numpy_unsupported_types   s$   


"rv   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 )Nr0   r   FT)rg   writable)r   r   r>   rS   r)   r*   ri   r#   )r   r_   np_arr2r   r   r   test_to_numpy_writable   s   
"ry   unit)smsusnstzUTCc                 C   sN   t g dt j| |d}tjg dd|  dd}| }tj|| d S )Nr   r   zdatetime64[]rp   )r   r   	timestampr[   rS   r]   r^   )rz   r   r   r6   r_   r   r   r   test_to_numpy_datetime64  s   r   c                 C   sJ   t g dt | }tjg dd|  dd}| }tj|| d S )Nr   ztimedelta64[r   rp   )r   r   durationr[   rS   r]   r^   )rz   r   r6   r_   r   r   r   test_to_numpy_timedelta64  s   r   c                  C   sB   t g d } tjg dtd}| jdd}tj|| d S )N)abr   rp   Frf   )r   r   dictionary_encoder[   rs   rS   r]   r^   )r   r6   r_   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   r0   r   )rX   r   r   r>   	to_pandasr	   getrefcountrY   valuesrZ   sum)rX   r   iseries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 )Nrb   c                 S      g | ]}|qS r   r   ).0_r   r   r   
<listcomp>C      z test_asarray.<locals>.<listcomp>r   r   r   r   Or   int64strrp   )0123)r   r   r   Nr   )              ?       @float64r   r   r   r   r   r   r   crs   )r   r   r   r   r   )r   r   r>   r[   asarraytolistrq   r%   lib
Int64ValuerK   r   isnanDictionaryArrayfrom_arrays)r   r_   rj   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   rJ   ro   )r   nullsr   r   equalsrK   nullr   r   r6   r   r   r   
test_nullsc  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   )daysr0   r   )r   r   r   rJ   gGz@r   stringrb         ro   TrN   r}   r   	   Frc   r   r   r   )r)   importorskipdatetimedatetodaynowreplaceutc
astimezonetimezone	timedeltar   r   r   r   r   scalaruint8r   time
large_listint8repeatr   rK   r   r   
null_count)r   r   r   now_utcnow_with_tzonedaycasesvaluesizer6   r   r   r   r   test_array_from_scalarv  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r.   r/   baz)r   r   r   r   )
dictionaryr   rc   r   r   )r   r   r   r   r   )r   r   r5   r6   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  qXd S )Nr0      r   )	r   r   r>   	to_pylistr   r#   r)   r*   
IndexErrorr   lstidxr   r   r   test_array_getitem  s   

r   c                  C   sT   t tdd} |  }tt|  t| D ]}| t|  || ks'J qd S )Nr0   r   )r   r   r>   r   r   r[   int32r#   r   r   r   r    test_array_getitem_numpy_scalars  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 ]:}t| d |d D ]-}| || }|
  |  || }| |ksJ td ur|  |ksJ qqd S )Nr0   r   rb      r   r<   r   rc   r   )r   r   r>   rP   r   r   r)   r*   r   ri   validater   r[   rS   r   )	r   slicedr6   sliced2	expected2nstartstopr   r   r   r   test_array_slice  s@   
 $
r   c                  C   s$  t 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td	d
dtdddg
}|D ]H}|| }tj| | |jd}||s^J tj|gdgd| }tj|gdgd}||syJ || }tj| | g|jd}||sJ qGd S )N   r   r   r   r0   r   r   r   r   iirJ   f0names)	listr>   r   r   rh   rP   rK   r   record_batch)r   r   rk   r   caser5   r6   r   r   r   test_array_slice_negative_step  s2   










r   c                  C   s   g d} | D ]}t j| }|jdd |t jtt| t  ds%J qt jddt  d}|jdd |t jttddt  dsIJ t	
t j t dd	d W d    d S 1 sbw   Y  d S )
N))rc   g   )r      r   )rb   r   rc   )r0   ir   )r<   i)r   r   )r   r0   r   )r0   r   r   TfullrJ   r   e   memory_poolr   r0   )r   r\   r   r   r   r   r>   r   default_memory_poolr)   r*   ArrowInvalid)r   r   r5   r   r   r   test_arange  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}t jg dt  d}t jddgt  d}| | dksKJ | |d	ksTJ | | d
ks_J | | d
ksjJ | | dksuJ ||dks~J ||dksJ d S )Nr.   rJ   r.   r/   Nr   r   )g      ?r   r   r   r:   z
@@ -1, +1 @@
+"bar"
+null
z'# Array types differed: string vs int64z3# Array types differed: string vs list<item: int64>z&
@@ -0, +0 @@
-1.5
+1
@@ -2, +2 @@
-6
)r   r   utf8list_r   float16diffstrip)arr1arr2arr3arr4arr5arr6r   r   r   test_array_diff5  s    r  c                  C   sH   t td} ttd| D ]\}}|| ksJ qt| ts"J d S )Nr0   )r   r   r>   zipr#   r%   r   )r   r   jr   r   r   test_array_iterR  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 )Nr   r   r         @r         @)rc         @rJ   r   r   r  r   rc   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   MyObjectg  s    r  r[   r   r)   r*   ri   r   )r  r   r   r   r   test_array_factory_invalid_typed  s
   "r   c                  C   s<   t g d} t| }t| }t| |d ksJ d S )Nr   r   )r[   r   r	   r   r   )r   refcountr  r   r   r   test_array_ref_to_ndarray_baseo  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   rJ   TFr   )r   r   r   r   )r  r  r	  r   r   r   test_array_eqx  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rb   rc   r         rb   )rb   Nr   r%  r   r   offset)Nr   r%  r:   )r   	py_bufferr[   int16r   r,   from_buffersrK   r   r)   r*   r+   )
values_buf	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)r   Nr   r   r   r   r   )   aN   b   cr   )Nr   r   r   r   )r   r   rT   StringArrayr+  r   r   r(  r   r,   rI   )r   rT   copiedbinary_copyr   r   r   r   test_string_binary_from_buffers  s<   
r5  c                  C   s   t jg dt  d} |  }t jt  t| |}|jdd | g dks+J d}t	j
t|d t jt  t| |dd  W d    d S 1 sPw   Y  d S )	N)z String longer than 12 charactersNshortzLength is 12rJ   Tr   znumber of buffers is at least 2rd   r   r   )r   r   string_viewrT   StringViewArrayr+  r   r   r   r)   r*   ri   )r   rT   r3  re   r   r   r   test_string_view_from_buffers  s    "r9  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 |j
  W d    n1 s=w   Y  t j	t  d||j
d  }t jj	|d|d |j
 |gd}||shJ tt t jj	|d|d |j
 ||gd W d    d S 1 sw   Y  d S )Nr   r   r   )r   rb   rc   rJ   rb   r   children)r   r*  r   rK   rT   r)   r*   ri   r,   r+  num_buffersr   )r:  r   r   rT   childr3  r   r   r   test_list_from_buffers  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 )Nr   r   r   r.   r   rc   r:   rJ   r   r   r<  )r   r  r  r*  r  r   rT   r)   r*   ri   r,   r+  r   )r   r   rT   r=  r3  r   r   r   test_struct_from_buffers  s$   &
"rA  c                  C   s  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 |||g}t jj| ||g|d}|jt |||gksJ |jd jrJ | |ksJ t	t
 t jj| ||g||gd W d    n	1 s)w   Y  t jjg g d}|jt g ksAJ | g ksJJ t dt  }	tj	t
dd t jj| ||g|	||gd W d    n	1 ssw   Y  | ||g}
|||g}t g d}t jj|
||d}| d g|dd   ksJ 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 sw   Y  tj	tdd t jj|
|t |gd W d    n	1 s&w   Y  t jjg g |d}| |ks=J | d i i gksIJ d S )Nrb   rc   r   rJ   )r/   Nr:   r   r   r   rb   r/   r   rc   r   r:   r   r   r   Fnullable)fieldsr   zint64 vs int32rd   )TFF)rE  maskr   rF  zMask must berF  znot contain nulls)TFN)r   r   r   StructArrayr   rK   r  r   r)   r*   ri   r  rD  r   r+   rh   is_null)r   r   r   expected_listr   fafbfc
structtypefa2arraysrE  rF  r   r   r   test_struct_from_arrays  s~   



  rR  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   rB  zExpected Arrayrd   r.   )r   rh   r)   r*   r+   rI  r   )rk   r   r   r   test_struct_array_from_chunkedU  s   "rS  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threerU  rT  r'  )
r   r   r   r   r+  rK   r   indicesrT   r   )r(  r   r   r   r   r   test_dictionary_from_buffers_  s   rX  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   rp   )FFTFFFrH  r[   r   r   rs   r   r   r   rW  r   r   r   r>   r   r#   )rW  r   rF  d1d2r   r   r   r   test_dictionary_from_numpyh  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)r.   r/   Nr.   Frf   )r   r   Nr   r.   r/   T)r   r   r   r   )r.   r/   r/   r.   ffffff+@      &@)r]  r^  r^  r]  )r]  r^  Nr]  )	equal_nanr%  rN   )r%  rN   Nr%  )r   r   rS   r   r   r[   r]   r^   r)   r*   r   assert_allclose)r6   r   anonullsafloatafloat2aintsr   r   r   test_dictionary_to_numpy  s   
	

re  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   rp   rY  )rW  r   iarrdarrrZ  r   r   r   r   !test_dictionary_from_boxed_arrays  s   

rh  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*   ArrowException)indices1indices2indices3r   r   r   r   'test_dictionary_from_arrays_boundscheck  s   rp  c                  C   s<   t g d} t g d}t j| |}|jjdd d S )Nri  r   Tr   )r   r   r   r   rW  r   )rW  r   r   r   r   r   test_dictionary_indices  s   rq  )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   rc   r   i4rp   r   rJ   r/  r0  r1     d   e   f   g   hrI   r   rc   r   namer   Nr   r   r/  r0  r1  rv  rw  rx  )r   r   Nr   )r   r   r0   )r   r   r   r   r   Tr   )r[   r   r   r   rI   r   r  rK   value_fieldr{  r\   r)   r*   ri   r   r>   r   r+   )
rr  r:  offsets_arroffsetspyvaluesr   r5   r6   typoffsets2r   r   r   test_list_from_arrays  sR   $



$r  r   r   c                 C   s<   t ||t  }| j|j|j| d}||ksJ d S )NrH  )r   r   r   r   r  r   rJ  )rr  r:  r   reconstructed_arrr   r   r   !test_list_array_types_from_arrays.  s
   r  c                 C   s@  t dgd dd gdgg|t  }t 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   rb   rH  zAmbiguous to specify both rd   r   -Null bitmap with offsets slice not supported.)r   r   r   r   r  r   r   rJ  r)   r*   ri   NotImplementedError)rr  r:  r   r  r  	arr_slicerl   r   r   r   &test_list_array_types_from_arrays_fail@  s*   $	 "r  c                  C   s|   t t  t  } t jddig| d}|t t  t  }t t  t  }t jddig|d}||s<J d S )Nr   r   rJ   )r   map_r   r   castr   r   )tr   r5   
t_expectedr6   r   r   r   test_map_castd  s   r  c                  C   s   t t jddddd} t jddgdgg| d	}|jjt jdt  ddks(J |jjt d
t  ks6J t	|dks>J d S )Nr{  r   FrC  r   r   r   r   r   r   r   rJ   r   r   )
r   r  r  r   rK   	key_fieldr  
item_fieldr   r   )r  r   r   r   r   test_map_labelledp  s
    r  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 )	Nr  r  r  r   r   r   r   r   )r   r   r  r   r   r   )tup_arrdict_arrr   r   r   test_map_from_dicty  s   r  c                  C   sT  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  tjjg d||t	|j|jtjg dt dd}|jdks2J ||	s:J tjjg d||tjg dt dd}||	sWJ g d}d d |dd  g}tjjg d||t	|j|jtjg dt dd}tj|t	t
 t d}	|jdksJ ||	sJ d}
tjtj|
d" tjj|||t	|j|jtjg dt dd W d    n	1 sw   Y  d}tg dt }tjtj|d% tjj|d||t	|j|jtjg dt dd 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 sHw   Y  tt tj||t ||g W d    n	1 skw   Y  t|d d d g }t|t|ksJ tt tj||| W d    n	1 sw   Y  t|t }tj|d||}tjg d||}	||	sJ |jdksJ |	jdksJ tg dt }tj|dtg t tg t }tjg dtg t tg t }	||	sJ |jdks J |	jdks(J d S ) Nrs  rt  rp   r   rJ   ru  r   rc   r   rI   r|  r}  )r   r   r   Nrb   rc   zExpected map type, got stringrd   zMismatching map items typer   r   r   r   FTFrH  r   )r   NNr   )TTFz=Ambiguous to specify both validity map and offsets with nullsr  )r   r   r   rc   r   r   r   r   rc   r   )r   r   r   r   r   r   )r   r   r   r   r   )r[   r   r   r   r>   r   r  MapArrayr   r  rI   r   r   rK   r)   r*   ArrowTypeErrorr   r   bool_r   r   ArrowNotImplementedErrorrP   r\   ri   concatenater(  )r  r  pykeyspyitemspypairs	pyentrieskeysitemsr5   r6   msg1msg2r   keys_with_nullr   r   r   test_map_from_arrays  s   "


r  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   rb   r   r$  )r   r   r0   rN   r{  rJ   r  rK   rF  )	list_sizerF  r   rc   )r  rK   )r   r   r>   r   FixedSizeListArrayr   r   rK   r   r  r  r~  r{  r)   r*   ri   r   r+   )r   r5   r  r   r   r    test_fixed_size_list_from_arrays  sV   ""$r  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   rb   )r   r   rb   r   r   r   rb   )r   Nr   rb   )r   r   rb   )r   r   rc   )r   r   r   	ListArrayr   r   rK   r   r  r)   r*   ri   )r   r  r5   r   r   r   test_variable_list_from_arraysD  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/  r0  r1  rv  rI   rJ   r   r   r   r   r   r   r   r   r   r   rN   r&  rN   rN   r&  r&  rN   )r   r   r   r   r   r   r   r   r/  r   r0  r1  r   r   rv  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   rK   r{  r   r   r5   r   r   r   b      z?test_union_from_dense.<locals>.check_result.<locals>.<listcomp>denser   r   r   r   )r   r>   rK   
num_fieldsmode
type_codesr   r   r  r  r)   r*   KeyErrorr5   expected_field_namesexpected_type_codesexpected_type_code_valuesactual_field_namesrI   r   py_valuevalue_offsetsr  r   check_result_  s$   

"z+test_union_from_dense.<locals>.check_resultr   r   r   r   r  r  r  binintrN   r&  r  Tr   )r   r   r   r   r   r   rb   )r   r   
UnionArray
from_denser)   r*   r   r   )typeslogical_typesr  r   bad_offsetsr   r  r   test_union_from_denseW  sn   
$r  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/      r0  r1  r  r  rv  rI   rJ   )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                    r  r   r  r  r  r   r   r     r  z@test_union_from_sparse.<locals>.check_result.<locals>.<listcomp>sparser   r   r   r   )r   r   r>   rK   r  r  r  r   r  r)   r*   r   r  r  r  r  rI   r   r  r  r   r    s(   

"z,test_union_from_sparse.<locals>.check_resultr   r   r   r   r  r  r  rN   r&  r  Tr   )r   r   r  from_sparser)   r*   r   r   )r  r  r  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   rJ   )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   r  r  r   r   r   r  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   rJ   )r   r   r   dr  r   )r   r   rb   r  rI   r   r   r  r   )r   r   r   r   r   r   r   r   )	r   r  r  r   r   r   r  r>   r   )r   rI   r   r  r  r   r   r  r   r   r   test_union_array_slice  s"   "r  Trk  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 )NrJ   rj  Tr   rK   rk  )r%   r   r,   rK   r   r  r   r   )
r   rk  r  in_datain_typeout_dataout_typer6   in_arrcastedr   r   r   _check_cast_case  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   i1rp   r   rt  u4u1f8P  r   r*  p uint16r   u2rJ   )r[   r   r   r   r  r   r   r  r)   r*   r   r  )
safe_casesr   unsafe_casesr  r  r  r  r   r   r   test_cast_integers_safe(  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_noneE  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   rb   r/  r0  r1  )	r   r   r)   r*   r  r  r   r  rI   r'   r   r   r   test_cast_list_to_primitiveM  s    "r  c                  C   sF   t jg dd} | jdksJ | d d  }|| sJ | d d  d S )Nr   rJ   r   rc   )r   rh   
num_chunksr   )r   r5   r   r   r   $test_slice_chunked_array_zero_chunksX  s
   r  c                     sb   t g dt g dg} t | }t   | }t  fdd| D }||s/J d S )Nr   rB  c                    s   g | ]}|  qS r   )r  )r   xtargetr   r   r   j  s    z+test_cast_chunked_array.<locals>.<listcomp>)r   r   rh   r   r  r   )rQ  carrr  r6   r   r  r   test_cast_chunked_arrayd  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 NrJ   )	r   r   r   r   r   r   rh   r  r   )typ1typ2r   r5   r6   r   r   r   test_cast_chunked_array_emptyn  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)   warnsFutureWarningr   rh   rW   r%   ChunkedArray)r   r   r   r   test_chunked_array_data_warnsy  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  rt  rp   r   i2r  r  r   Frj  )r[   r   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  rp   r   rt  r   )g      $g      4@g      >ir   iTrj  )r[   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  rp   r   rt  r   )g333333$g3333334@gL>r  	truncatedrd   Trj  F)r[   r   r   r   r)   r*   r   r  r  r   r   r   #test_floating_point_truncate_unsafe  s    r  c                  C   s   dddddd ddt dg	} tj| t d	}|jt ksJ | dddddd d
dt dg	ks2J t|dks:J d}tjtj	|d tjg dt d	}W d    d S 1 s[w   Y  d S )Nr   r   r   r   r   g1@gS?infrJ   g     @g     ?z@[
  -5,
  0,
  1,
  2,
  3,
  null,
  12344,
  1.234375,
  inf
]z@Could not convert 'a' with type str: tried to convert to float16rd   )r   r   N)
floatr   r   r  rK   r   r   r)   r*   r   )valsr   r  r   r   r   !test_half_float_array_from_python  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    rc   @ Ni'1234-9123   r0   i  Ni]123z-91{   NiTrj  )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 )N1234567890123z-912345678901234r  rc   )iqNir  z
-912345678)i@Nir  r  )iN]   zInteger value out of boundsrd   Fr  )r[   r   r   r!  r   r"  r   r*  r   r)   r*   r   r  )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  rc   r  z1234.134z-9123.1r  r0   r  z123.1451z-91.21r  -Rescaling Decimal value would cause data lossrd   Frj  )r   r!  r   r"  r   r*  r   r)   r*   r   r  )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  r0   rJ   r   r   r(  rd   r   r   Frj  z1234.1z'Decimal value does not fit in precisionrc   r   )
r   r   r   r!  r"  r  r   r)   r*   r   )r   r5   r6   r*  r   r   r   test_decimal_to_decimal&  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  rd   Trj  )	r   r   r[   nanr)   r*   r   r  r   r'   r   r   r    test_safe_cast_nan_to_int_raisesB  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  rp   r  r  r  )r[   r   r   r   r  r  r  r   r   r   test_cast_signed_to_unsignedJ  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   r0   rb   r  r}   r   r   zEurope/Parisr   r   r   )r  rJ   )r   r   r   r  r  rI   r  r*  r   r   r"  r   r   month_day_nano_intervalr  r  r   r   r   r  unionr   UnionMode_DENSEUnionMode_SPARSEr   r)   r*   r  r  )r  r  	out_typesr  r  r   r   r   test_cast_from_nullW  sV   

r5  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   127z-128)r      irJ   18446744073709551615l    Trj  r   )r   r   r   uint64r  rK   r   r   )r   r  r6   r  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  rJ   )r   r   r   r   r   rK   r  r   r*  r   r)   r*   r   )r   r6   key_typer  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   rJ   rI   )r   r   r  rI   viewr   r   r6   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   r.   Nr/   r.   r.   Nr/   )r   r   rL   uniquer   rh   r   r   r6   r5   r   r   r   test_unique_simple  s   rF  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 )
NrA  r   r   r   r   rJ   rB  rC  )r   r   r   r   counts)
r   r   r   rL   rh   value_countsrK   r   r  r  )r   r   expected_valuesexpected_countsarr_inr5   r   r   r   test_value_counts_simple  s2   rM  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   )r.   r/   r   quxr   rH  )r   rc   rb   r   rJ   r  )r   r   r   r   rD  r   rI  r  )rW  r   r   unique_resultr6   r5   r   r   r   (test_unique_value_counts_dictionary_type  s(   ""rP  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   rJ   r   rB  r   Nr   r   r.   r/   r   r   )r   r   r   r   rL   r   r   rh   r  chunkrK   rE  r   r   r   test_dictionary_encode_simple  s:   rU  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 )NrQ  r   r   )r   r   Nr   r   r   rJ   )r   r   r   )Nr.   r/   r.   xyzzyr   r   r   r.   r/   r   r   )r   r   r   r   large_stringr   r   rh   r  rK   rT  rP   )r   r   r6   r5   r   r   r   r   test_dictionary_encode_sliced	  sF   
rY  c                  C   s<   t jg t  d} |  }t|jdksJ |jdd d S )NrJ   r   Tr   )r   r   r   r   r   r   r   )r   encodedr   r   r   "test_dictionary_encode_zero_length)  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 )
NrQ  rR  r   rJ   r   rB  rS  r.   r/   )r   r   r   r   rL   dictionary_decoder   )r   r6   r   r5   r   r   r   test_dictionary_decode1  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   rp   r{   rJ   rt  )r   r   r[   time32r  r   r   r6   r5   r   r   r   test_cast_time32_to_intE     
ra  c                  C   r^  Nr;  r   rp   r}   rJ   i8)r   r   r[   time64r  r   r`  r   r   r   test_cast_time64_to_intO  rb  rf  c                  C   r^  rc  )r   r   r[   r   r  r   r`  r   r   r   test_cast_timestamp_to_intY  rb  rg  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;  rt  rJ   date32i  r   r   r   )r   r   r  r   r   r   )r   result1result2	expected1r   r   r   test_cast_date32_to_intc  s   

rl  c                  C   r^  rc  )r   r   r[   r   r  r   r`  r   r   r   test_cast_duration_to_ints  rb  rm  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   bazrJ   r      mañana	utf-16-leT)rF  rK   r   )r   r   rI   r  r  r   encoderK   r)   r*   ri   r   r[   r   )
binary_arrutf8_arrr6   non_utf8_valuesnon_utf8_binarynon_utf8_all_nullr  r   r   r   test_cast_binary_to_utf8}  s   
rv  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   rp   rJ   rd  )r   r   r[   date64r  r   r`  r   r   r   test_cast_date64_to_int  s   
rx  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   r  "   8   r  rw  rJ   r   r   )r   r   r   r   r   r>  r#   )val1val2r5   rj  as_i8r   r   r   !test_date64_from_builtin_datetime  s   
 r  )r   r   boolrn   r      r   r   r  r0   r*  uint32r   r9  r   r  )r   g?g?doubler   r   rI   )r/  r0  r1  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  )rW   r  )TFTT)r   r   rb   r   )r   r  N)r   Nr   r   rb   rc   r   r   r   r   ))r   r   )r   r   Nc                 C   sH   t j| |d}td|jd D ]}||||}||s!J qd S )NrJ   r   r   )r   r   r>   HIGHEST_PROTOCOLloadsdumpsr   )rW   r  pickle_moduler   protor5   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   r>   r  r  r  r   )r  r   r  r5   r   r   r   test_array_pickle_dictionary  s
   r  )suppress_health_check)	min_value	max_valuer   c                 C   s&   |  |}| |}||sJ d S r  )r  r  r   )r  r   rW   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 )	NrJ   c                 S      g | ]}|d ur|j ndqS Nr   rU   r   bufr   r   r   r         z/test_array_pickle_protocol5.<locals>.<listcomp>rc   r   )buffer_callback)rT   c                 S   r  r  r  r  r   r   r   r    	  r  )	r   r   rT   r>   r  r  appendr  r   )
rW   r  r  r   	addressesr  rT   pickledr5   result_addressesr   r   r   test_array_pickle_protocol5  s   r  c                  C   s>  t jdt jdt jdt jdt jdt jdt jdt jdt jdt jdt jdt jdt jdt jdt jdt j	dt jdt j
dt jdt jdt jdt jdfD ]M} 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   qOd S )Nr0   rp   r   r   )r[   r\   r   r   r*  r   r9  r  r  r   r   r  r  r   r   rq   rS   r]   r^   )narrr   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            rJ   u8rp   )r   r   r9  r[   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 dD ]$}tjt jdt jddt jdg|d|d	}|j|ksDJ |jd
ksKJ q'd S )Nr  r   rp   r   )r  r  r   r   r   rb   rJ   r   )r[   r   r	   r   r   rK   r-  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 )Nrr   r{   rJ   r   )secondr   r|     )microsecondry  r}   )r  ry  Nr~   )r   r   r_  r   r   r   re  )r5   r6   r   r   r   test_time32_time64_from_integer3	  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rK   from_pandasrJ   )r   r   r[   r-  r   r   r   r   r   _check_caseQ	  s   z=test_binary_string_pandas_null_sentinels.<locals>._check_caserI   r  r   )r  r   r   r   (test_binary_string_pandas_null_sentinelsN	  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   rI   r  rL   
large_utf8s   stringr   Tr   r  r   r   r{   r}   rJ   r  r   )r[   r-  r   rI   r  r   r!  r"  rh  rw  r_  re  r   r   r)   r*   ri   r+   r   r   )r   r   r   r5   r   r   r   &test_pandas_null_sentinels_raise_errorY	  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   rp   T)r  )pandasIndexr[   r-  rs   r   r   r   )pdr   r5   r6   r   r   r    test_pandas_null_sentinels_indexw	  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  rb   zdatetime64[D]rp   rJ   Frf   )r[   r   r   r   r   rh  r   rS   r]   r^   rq   r4   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  rb   r  rN   r0     r   r   r   r}   r   )r   r   r   rK   r   r'   r   r   r   test_array_from_naive_datetimes	  s   r  )rq   rK   datetime64[s]r{   datetime64[ms]r|   zdatetime64[us]r}   zdatetime64[ns]r~   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  rb   r  rN   r0   r  r   r   r   rp   rJ   )r   r   r   r[   r   r   )rq   rK   rW   r   r6   r   r   r   test_array_from_numpy_datetime	  s   	r  c               
   C   s   d t  ddddddt  ddddd	dg} tj| d
d}tj| dd}t|d d	 t|d	d   } ttj t|  W d    d S 1 sJw   Y  d S )Nr  rb   r  rN   r0   r  r   r   r   r  rp   r  )r   r[   r   r   r)   r*   r   r  )rW   r{   r|   r   r   r   5test_array_from_different_numpy_datetime_units_raises	  s    "r  )r~   r}   r|   r{   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.111111111rJ   r   )r[   
datetime64r   r   r   rK   rz   )rz   r   r  ya1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 )Nr  r  r  z'Unbound or generic datetime64 time unitrd   )r[   r  r)   r*   r   r  r   )r   r  r  r   r   r   +test_array_from_timestamp_with_generic_unit	  s   


"r  ztimedelta64[s]ztimedelta64[ms]ztimedelta64[us]ztimedelta64[ns]c                 C   s   d t dt ddg}tj|| d}t|}t|tjs J |j|ks'J tj||d}||s5J |	 |ks=J tt
tj|| d}||sPJ |	 |ksXJ d S )Nr   r   rp   rJ   )r   r   r[   r   r   r%   DurationArrayrK   r   r   r   )rq   rK   rW   r_   r   r6   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)r[   timedelta64r   r)   r*   r  r   )tdrW   r   r   r   .test_array_from_numpy_timedelta_incorrect_unit	  s   
r  binary_typec                 C   sD  | pt  }tjg ddd}t || }|j|ksJ t jg d|d}||s,J tg d}t j|| |d}t jg d|d}||sKJ 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}||sJ tjg ddd}t || }t jg d|d}||sJ d S )Nabcdeabcr:   z|S5rp   rJ   r  rH  r  Nr:   rc   r   r  r:   Nr  r:   Nr  r:   r:   r:   r:   z|S0)r   rI   r[   r   rK   r   )r  expected_typer   	arrow_arrr6   rF  r   r   r   test_array_from_numpy_ascii
  s*    
r  c                  C   s   d t jddddddddg} t| t }t|tjs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   )r  r  r  r  r  r  r  )r   r   r   r   r0  r%   MonthDayNanoIntervalArrayrK   MonthDayNanor   r   rW   r   rK  r6   r   r   r   "test_interval_array_from_timedelta+
  s.   


r  c                  C   s  ddl m}  ddlm} d | dddddddddd	g}t|}t|tj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   r  r  r  r  r  leapdaysr&  r   r  r  r  r  r  r  r  r   r  nanosecondsiUUUr<   )r  r  i$I$)r  r   l   	z )r  r  l   \kpz)dateutil.relativedeltar  r  r  r   r   r%   r  rK   r0  r  r   r   r   r   r   r)   r*   ri   )r  r  rW   r   rK  r6   r   r   r   &test_interval_array_from_relativedeltaA
  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   r0  r%   r  rK   r  r   r   r  r   r   r   test_interval_array_from_tuplek
  s   
r  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   r  r   )	r  r  r   r  r  r  r  r  r  )r&  r   l   E5IQ)r   r   r   r&  r   r  r  r  )pandas.tseries.offsetsr  r   r   r%   r  rK   r0  r  r   r   r   r   r   r   r   )r  rW   r   rK  r6   expected_from_pandasactual_listr   r   r   #test_interval_array_from_dateoffsetz
  s>   


	r  string_typec                 C   sV  | pt  }ddg}|D ]}}tjg d|d}t || }|j|ks$J t jg d|d}||s4J tg d}t j|| |d}t jg d|d}||sSJ tjg dd	 |dd d d
 }tg dd	 d d d
 }t j|| |d}t jg d|d}||sJ qtjg ddd}t || }t jg d|d}||sJ d S )Nz<U5z>U5r  rp   rJ   r  rH  r  rc   r   r  r  z<U0)r   r  r[   r   rK   r   )r  r  dtypesrq   r   r  r6   rF  r   r   r   test_array_from_numpy_unicode
  s.    
r  c                   C   sL   t t tjtg dt d W d    d S 1 sw   Y  d S Nr   rJ   )r)   r*   r+   r   r   r[   r   r   r   r   r   !test_array_string_from_non_string
  s   "r  c                  C   s   t jd d gtd} tj| t d}|jdk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 )Nrp   rJ   r   r   Tr  )
r[   r   rs   r   r   r   r-  r)   r*   r+   )r  r   r   r   r   test_array_string_from_all_null
  s   r  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 )Nr  r   FFTF)rq   rF  r   r   Nrb   rJ   z Cannot pass a numpy masked arrayrd   )TFFFrH  )r[   mar   r   r   r)   r*   ri   r  r5   r6   r   r   r   test_array_from_masked
  s   
"r  c                  C   s>   t jjdgdd} t| }tjdgdd}||sJ d S )Nr   r   rp   rJ   )r[   r  r   r   r   r  r   r   r   test_array_from_shrunken_masked
  s   
r  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   rB  rd   r   r  )rl   arr2darr0dr   r   r   "test_array_from_invalid_dim_raises
  s   
"r  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   rp   r   )TTTT)r[   onesr  r   r   r   r4   r   r   r   test_array_from_strided_bool
  s   r  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cdefFrH  )r   rI   r   r*  r   r   r  r   r  r[   r   r   )pydatar   r  nparraypatyperF  arrow_arrayr   r   r   test_array_from_strided	  s    "
r	  c                  C   s2   t g dd } | jdksJ | jdksJ d S )N)TTNFNTr  i  )r   r   
true_countfalse_countr'   r   r   r   #test_boolean_true_count_false_count  s   r  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 )Nr  rJ   r   r   r   @   rN   hhxxh)r   r   rb   rB  3b)s   foo!Ns   bar!!r   rc   4i)r   rb   rb   r   s	   foo!bar!!)r   r   r*  rT   r   
to_pybytes	bytearrayr(  r  unpackr[   r   )r   rT   null_bitmap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   Nrb   rc   rJ   rb   r   rc   r  r  7   r   qqq8xqq)r   r   r   rb   rc   ))*   NN)N+   r   r   bxx)r  r   4xh)r  )r   r   r  r   rT   r   r  r  r  r  r  r   r*  )r   rT   r  r  r   r   r   r   test_buffers_nestedH  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 )NrB  r   rp      r   Nr   rJ      r   r   r  >   B   )rc   r   r%  r   r0         r   rb   r      r  )r   r   r[   nbytesget_total_buffer_sizer	   	getsizeofrs   
__sizeof__r  r   r   rP   )r   r  r   r   r   test_total_buffer_sizek  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   rJ   rB  r&  )r   rh   r   r*  r'  )r   r   r   r   test_nbytes_size  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   
"r0  )offset_typer:  c           	   	   C   s\  ||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|sJ d S )Nr"   r   rb   rc   r   r%  r   rJ   )r   r   r   r   r   r%  )r   r   r   rc   rc   r%  r%  r   	r   Nr   r   rb   rc   r   r%  r   T)r   r   r   flattenr   r  r   )	r1  r:  r  r  r  r  r  offsets1arr0r   r   r   test_list_array_flatten  s^   	
r6  	list_typer  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   rb   rJ   )r   r   r   r   r   r   )r   r   r   value_parent_indicesr   )r7  r   r6   r   r   r   test_list_value_parent_indices  s   r:  )r1  r7  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 )
Nr  r   r   r   rb   rJ   )r   Nr   r   r;  )r   Nr   r   )getattrr   r   value_lengthsr   )r1  r7  r   r6   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   rB  rJ      r   r<  )r   r   r   r   Tr   )r   rb   rc   r   r   r   r   rb   rc   r   )r   r   r   rT   r)  r+  rK   r   r   r   r  r3  r   
value_type)r:  r  r   rT   	flattenedr   r   r   %test_list_array_flatten_non_canonical  s   rB  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   rb   r   r?  )r  r   r   )r   rb   r   rB  r   rb   r   r   r   r  r3  r#   )rC  r   r  r   r  r   r   r   %test_list_array_values_offsets_sliced  s   8rE  c                  C   s8  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 | |sJ |d|sJ d S )Nr   r   r   rb   rc   r   r%  r   r   rJ   )
r   r   r   rb   rc   r   r%  Nr   r   T)r   r  r   r   rK   r   r3  )r  r  r  r  typ0r5  r   r   r   "test_fixed_size_list_array_flatten$  sB   
rG  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   r8  rJ   )r   r   r  r   r3  )r   r   r   r   -test_fixed_size_list_array_flatten_with_sliceH  s   ,rH  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keyFrC  r   r  r  r  rJ   r   r   )rI  r   r   r   r   r   r   r   )r   r  r  r   r  r  r   r   rK   r   r  r  r  r   r  r  r)   r*   r  r3  )r   	ty_valuesr   r   r   r   test_map_array_values_offsetsN  s0   " 
"rK  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  rJ   r  r  r  r  r   r   rc   r  r  )r  Nr  r   )r  Nr  )r   N)r         @)Nr  rr   )NrN  r  r   rN  )rM  N)Nr  )r   NN)NNr  r  )	r   r  r  r*  r  r   r3  rK   r   )r   r   xsysr   r   r   test_struct_array_flattenf  sB   rQ  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  rJ   r   r   r   r   r  rL  r   r   zr:   )r   r  r  r*  r  r   r%   r   
Int16Array
FloatArrayr   r)   r*   r+   r   r  
r   r   x0y0x1y1x2y2invalid_index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  r  r  r   r   r   r   )r   Nrc   rJ   )r  Nr  rR  rS  )r   r  r  r*  r  r   _flattened_fieldr%   r   rU  rV  r   r)   r*   r+   r   r  rW  r   r   r   !test_struct_array_flattened_field  sH   





  rb  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 )Nrb   )lengthrJ   )r   r   r  r   r*  r   r   r   r  r  r9  r  r  r   rh  rw  rI   r   	itertoolsproductr   r  r   r  r   )r  t1t2r   r   r   test_empty_cast  s4   
rh  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 )NrW  r   r   )r   r   r   )r   r   r   r   r   )r   r   r   r   r   )r   r   r   r  r   )r  list_arr	dict_arr2r   r   r   test_nested_dictionary_array  s   rk  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 )Ntototatarp   FrH  rn  ro  )r[   r   rs   r   r   r   r  rp  r)   r*   ri   )vecvec2r   r  r6   rF  r   r   r   test_array_from_numpy_str_utf8  s"   "rp  large_typesFc                    sx  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 }| r8t nt }| rBt nt }||f||ffD ]k\}}t|}t||}d }|j	|ksfJ | rt
|tjspJ t t|D ]}	||	 }
|
 ||	 ksJ qvqNt
|tjsJ |jdksJ d}t |jD ]}	||	}|D ]}
|
 || ksJ |d7 }qqqNd S )N   xr  c                 S   s(   i | ]}|d d t |d d qS )rr  i r0   r  )r   rp  r  r   r   r   
<dictcomp>!  s    z9test_numpy_binary_overflow_to_chunked.<locals>.<dictcomp>r0   c                 S   s   i | ]
\}}|| d qS )r  )decode)r   r   r  r   r   r   rs  %  s    c                       g | ]} |d   qS r0   r   r  )unique_stringsr   r   r   '  s    z9test_numpy_binary_overflow_to_chunked.<locals>.<listcomp>i   c                    ru  rv  r   r  )unicode_unique_stringsr   r   r   (  r     r   r   )r>   r  r   rL   rI   r  r  r[   r   rK   r%   r,   r   r#   r  r  rT  )rq  r   unicode_valuesr  r  r   ex_typer   r  r   valvalue_indexrT  r   )rx  rw  r   %test_numpy_binary_overflow_to_chunked  sL   


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 )N   xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxi    r   r   )r   r   r%   r,   r   r  rT  )kilobyte_stringtwo_megar  r   r   r   r   #test_list_child_overflow_to_chunkedI  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)r.   r/   Nr   FFFTrH  TTTT)r   
infer_typer  r[   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rb   Nrb   r  FTFTrH  r   rp   )r   r   r[   rK   r   r'   r   r   r   test_array_maskedk  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  rH  )rb   Nrb   N)rb   Nrb   r   )rb   r   Nr   )rb   NNN)r   r   r  g      @r  )FNFTTFTF)r   r   r[   r   r)   r*   r  r+   r'   r   r   r   test_array_supported_masksx  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   r   r   )r{  rq   TFr  rp   rH  )r  r   r   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   Fr  T)s   aaa   bbbs   cccr0   r   )FFFs   XXXr  )r   r   rI   r[   r   )masked_basicmaskedmasked_nullsnpar  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 )Nr  r   FrH  r   r  )r[   r   r   rI   r   )r  r  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   rp   zmust be boolean dtypezmust be 1D arrayr   zdifferent lengthrd   rH  )r[   r   r+   r   r   ri   r)   r*   )r   objrF  exrl   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   r  r   r   r   r   test_array_from_large_pyints  s   "r  c                  C   s  t g d} t| }tjg ddd}tj|| tj| dd}tj|| tj| ddd}tj|| t g d} tjdd	tjgd
d}t| }tj|| ttjtdk r~tj| dd}tj|| tj| d
dd}tj|| nBt	j
tdd tj| dd W d    n1 sw   Y  t g d} t	
t tj| d
dd W d    n1 sw   Y  t g d} | jdd}|jjsJ t g d} | jtd
dd}|jd
ksJ d S )Nr   r   rp   F)copy)rq   r  rr   r   r   r   z
2.0.0.dev0zUnable to avoid a copyrd   T)r   r   r[   r   r]   r^   r-  r   __version__r)   r*   ri   	__array__flags	writeablerq   r4   r   r   r   test_numpy_array_protocol  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  rW   selfrW   r   r   r   __init__7     
z-test_array_protocol.<locals>.MyArray.__init__Nc                 S   s   t j| j|dS r  )r   r   rW   r  rK   r   r   r   __arrow_array__:  s   z4test_array_protocol.<locals>.MyArray.__arrow_array__r  r  r  r  r  r  r   r   r   r   MyArray6      r  r   r   rp   rJ   rn   rH  r   r  c                   @   r  )z+test_array_protocol.<locals>.MyArrayInvalidc                 S   r  r  r  r  r   r   r   r  P  r  z4test_array_protocol.<locals>.MyArrayInvalid.__init__Nc                 S   s   t | jS r  )r[   r   rW   r  r   r   r   r  S     z;test_array_protocol.<locals>.MyArrayInvalid.__arrow_array__r  r  r   r   r   r   MyArrayInvalidO  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   rh   rW   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  i  s   
z.test_array_protocol.<locals>.MyArray3.__init__Nc                 S   s   t j| j| jg|dS r  )r   rh   r  r  r  r   r   r   r  m  s   z5test_array_protocol.<locals>.MyArray3.__arrow_array__r  r  r   r   r   r   MyArray3h  s    r  )r[   r   r   r   r   r   r)   r*   ri   r+   rh   )r  r   r5   r6   r  r  r  r_   r   r   r   test_array_protocol3  sB   



r  c                   @   r  )ArrayWrapperc                 C   r  r  r  r  r   r   r   r  x  r  zArrayWrapper.__init__Nc                 C   s   | j |S r  )rW   __arrow_c_array__)r  requested_schemar   r   r   r  {  r  zArrayWrapper.__arrow_c_array__r  )r  r  r  r  r  r   r   r   r   r  w  r  r  c                   @   r  )ArrayDeviceWrapperc                 C   r  r  r  r  r   r   r   r    r  zArrayDeviceWrapper.__init__Nc                 K   s   | j j|fi |S r  )rW   __arrow_c_device_array__)r  r  kwargsr   r   r   r    s   z+ArrayDeviceWrapper.__arrow_c_device_array__r  )r  r  r  r  r  r   r   r   r   r    r  r  wrapper_classc                 C   sf   | t jg dt  d}t |}||jksJ t j|t  d}|t jg dt  dks1J d S r  )r   r   r   rW   r   )r  r   r5   r   r   r   test_c_array_protocol  s
   
"r  c                  C   s`   t jg dt  d} tjtdd | jdd W d    n1 s#w   Y  | jd d}d S )Nr   rJ   z7Received unsupported keyword argument\(s\): \['other'\]rd   znot-none)other)r   r   r   r)   r*   r  r  )r   r   r   r   r   0test_c_array_protocol_device_unsupported_keyword  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   rb   r  )r   concat_arraysr   r   )concatenatedr   r   r   test_concat_array  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 objectsrd   r   r   r   rb   )r)   r*   r+   r   r  rh   r'   r   r   r   test_concat_array_invalid_type  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   r{   zEurope/Brusselsr   rJ   )r   r   r   r   dtr   rh   )r   r{   r   r   r   test_to_pandas_timezone  s   r  c                  C   sZ   t dgt dgt dgg} t| }| }|d jdks#J | | ks+J d S )Nr   r   r   r   r  )r[   r  r   r   r   rq   r   )r6   r   r5   r   r   r   test_to_pandas_float16_list  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)rc   r%  #   rJ   
descending)r  r%  rc   r   rB  )r   rc   rb   r   r   r   )rc   r%  r  Nat_end)null_placement)r  r%  rc   Nat_start)Nr  r%  rc   )r   r   r   sortr   rh   )r   
sorted_arrr   r   r   test_array_sort  s   

r  c                  C   sb  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 |  }| dddddddddd	d
dgksUJ 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sJ |jdddd}| d	d
dddddddd gksJ d S )N)rc   r%  r%  r  rJ   )r.   carr/   foobarr   r   r   r  )byr  r  r   r%  r  r/   rc   r.   r  rG  r  )r  r  r  )r   rI  r   r   r   r  r   )r   r  arr_with_nullsr   r   r   test_struct_array_sort  sX   


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   rJ   l    r   Fr  r   )
r   r   r   rK   r   r)   r*   r   r   r   r4   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   find_physical_lengthfind_physical_offset)	ree_arrayr  r   logical_lengthphysical_length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   rc   r0   r  r   r   r   r   r  rb   r   )r   RunEndEncodedArrayr   r  )ree_typer  r   r  r   r   r   +check_run_end_encoded_from_arrays_with_type.  s   r  c                 C   s^   g d}g d}t || j}t || j}t j||}|j| ks$J t|||ddd d S r  )r   r   run_end_typer@  r  r   rK   r  )r  r  r   typed_run_endstyped_valuesr  r   r   r   'check_run_end_encoded_from_typed_arrays5  s   r  c                  C   sd   t   t t t fD ]!} t t t t fD ]}t| |}t | t| qqd S r  )	r  r   r*  r   r   r  r9  run_end_encodedr  )r  r@  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   rb   r   r   r   )
r   r  r   r   r  r+  r  r)   r*   ri   )	r  r   r  rc  rT   r   r(  r=  r  r   r   r   !test_run_end_encoded_from_buffersH  s^   "r  c            	      C   s\  g d} g d}t t  t  }t j| ||}g d}t j||d}||s,J t jt||d}||s=J t t 	 t 
 }t j||d}||rUJ t j| ||}||sdJ g d} g d}t j| ||}g d}t j||d}||sJ g d} g d	}t j| ||}t g d
}t j|||d}||sJ d S )N)r   r   r   r   r   r   r   r   r   r   rJ   )r   r   rc   r   )r   r   r   N)r   r   r   r   r   N)r   r   rb   rc   r   )r   r   Nr   N)FFFTFTr  )r   r  r   r   r  r   r   r   r[   r*  r  )	r  r   r  r6   r   r5   
ree_type_2
expected_2rF  r   r   r   )test_run_end_encoded_from_array_with_typew  sD   



r  c                  C   s~   g d} t | t t  t  }t| }tj|jdd| t	
t j |  W d    d S 1 s8w   Y  d S )Nr  Frf   )r   r   r  r   r   r[   r]   r^   rS   r)   r*   r   )r   r  r6   r   r   r   test_run_end_encoded_to_numpy  s   

"r  c                  C   sv   g d} t | t t  t  }|  | ksJ tt j	 |jdd W d    d S 1 s4w   Y  d S )Nr  Trf   )
r   r   r  r   r   r   r   r)   r*   r   )r   r  r   r   r   test_run_end_encoded_to_pandas  s   "r  c           	      C   s
  g d}g d}g d}|  |||}| ddgddgdd	gd d
ggks'J |j |ks0J |j |ks9J |j |ksBJ |tdt }|  ||||}|j|ks[J |jj	j
dksdJ |t }tt | j ||||d W d    n1 sw   Y  g d}g d}g d}|  |||}| ddgddgddggksJ |j |ksJ |j |ksJ |j |ksJ g }dd g}ddg}|  |||}| g d gksJ |j |ksJ |j ddgksJ |j |ksJ g }ddg}d dg}|  |||}| d g gksJ |j |ks%J |j |ks/J |j ddgks;J ddg}g d}g d}tg d}| j ||||d}| dgd dggkseJ |j |ksoJ |j |ksyJ |j |ksJ d S )N)r   r   r   rb   rc   r   Nr%  )r   r   rb   r   )r   r   r   r   r   r   r   rb   rc   r   r%  r{  rJ   r  )r   r   r   rG  r   )r   r   r   )r   r   r   r  rH  )r   r   r   r  sizesr   r  r   rK   r~  r{  rI   r)   r*   r+   r   )	rr  r:  r   r  r  r   r  r5   rF  r   r   r   test_list_view_from_arrays  sb   ("r  c                 C   s   ddg}g d}g d}t g d}tt jj | j||||d W d    n1 s.w   Y  g d}| j||||d}|dd  }tt jj | j|j|j|j	|
 d W d    d S 1 sgw   Y  d S )Nr   r   )r   r   N)r   r   r   )FFTrH  )r   r   r   )r   r   r)   r*   r   r   r   r  r  r   rJ  )rr  r:  r   r  r  rF  r   array_slicer   r   r    test_list_view_from_arrays_fails  s    
"r  )rr  r:  r1  c              	   C   s0  t jg dt  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|d}||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 jg d|d}| |swJ |j|sJ |j|sJ |j|sJ |	 |sJ |	j|
sJ |	j|sJ |	j|sJ |	  |sJ |	jj|sJ |	d|sJ g d}g d}g d}| |||}| 	 g dksJ t g d}| j||||d}| 	 g dks
J |j	 g dksJ d S )Nr2  rJ   r"   r   rb   rc   r   r%  r   )r   r   r   rc   rc   r%  r%  )r   r   r   r   r   r   r   )r   r   r   r   r   )r   r   r   r   r   Tr  )r   r   r   r   )r   r   r   r   )rb   r   r   r   r  rH  )rb   r   r   )
r   r   r   r3  r   r  r  r   r   r   )rr  r:  r1  r5  r  r  r4  sizes1r  r  r  sizes2r   r  r  r   rF  r   r   r   test_list_view_flatten  sx   
	r  list_view_typec                 C   s   | j g dg dg dd}|dd  }|j g dksJ |j ddgks*J |  g dks6J |jd	  }|jd  }|d	  |j||    kr[dgks^J  J d S )
N)r   r   rb   )r   r   r   r?  )r  r  r   r   r   rb   rB  r   rD  )r  r   sliced_arrayr   r  r   r   r   test_list_view_slicec  s   8r  numpy_native_dtype)r  rt  r  c                 C   s  t |  }t jd|d}ttj t| W d    n1 s$w   Y  ttj tj|t	 d W d    n1 sCw   Y  ttj t|g W d    n1 s_w   Y  ttj tj
j|gdgd W d    d S 1 sw   Y  d S )Nr0   rp   rJ   r   r   )r[   rq   newbyteorderr\   r)   r*   r   r  r   r   rI  r   )r  numpy_swapped_dtyper_   r   r   r   test_swapped_byte_order_failsw  s   "r  c            	      C   s  t d} | d}tjdtjd}tjg dtjd}||}||}t	j
t	 dd |g}t	j
t	 dd |g}t	j
t	 d||g}|  |jdksUJ | d |gks_J |jt	jjkshJ |jdu soJ t|dkswJ |ddjdksJ t|sJ t|sJ t t |  W d    n1 sw   Y  t t |  W d    n1 sw   Y  t t || W d    n1 sw   Y  t t |t	  W d    n1 sw   Y  t t |t	  W d    n	1 sw   Y  t t |  W d    n	1 s(w   Y  t t |   W d    n	1 sBw   Y  t t |!  W d    n	1 s\w   Y  t t |"  W d    n	1 svw   Y  t t |j# W d    n	1 sw   Y  t t |j$ W d    n	1 sw   Y  t t |%  W d    n	1 sw   Y  t t dd	 t&|D  W d    n	1 sw   Y  t t ||k W d    n	1 sw   Y  t t |'  W d    n	1 sw   Y  t t |(  W d    n	1 s/w   Y  t t |)  W d    n	1 sIw   Y  t t |*d W d    n	1 sdw   Y  t t |d  W d    n	1 s~w   Y  t t |+dg W d    n	1 sw   Y  t t |,  W d    n	1 sw   Y  t t |-g d
 W d    n	1 sw   Y  t t |.d W d    n	1 sw   Y  t t |/  W d    n	1 sw   Y  t t |0  W d    n	1 s w   Y  t t |1  W d    n	1 s:w   Y  t t |2  W d    n	1 sTw   Y  t t |jdd W d    d S 1 sqw   Y  d S )Nzpyarrow.cudar   rb   rp   r  Fr   c                 S   r   r   r   r  r   r   r   r     r   z&test_non_cpu_array.<locals>.<listcomp>)TTFFTr   )3r)   r   Contextr[   r\   r   r   r  buffer_from_datar   r,   r+  r   r(  rT   device_typeDeviceAllocationTypeCUDAis_cpur   rP   r-  r   r*   r  
__dlpack____dlpack_device__r  r  r   r>  r   rD  r   rI  r   r'  r(  iterrJ  is_nanr$   	fill_nulltake	drop_nullfilterindexr  r  rS   r   )	cudactxrW   validitycuda_data_bufcuda_validity_bufr   r  r  r   r   r   test_non_cpu_array  s   




















$r  r  )collections.abcr   r   r   
hypothesishhypothesis.strategies
strategiesstrd  r)   r  r   r	   r   numpyr[   ImportErrorpyarrowr   pyarrow.tests.strategiestestspastpyarrow.vendored.versionr   mark	processesr   r!   r(   r-   r7   r;   r?   rB   rE   rH   rR   ra   rm   rv   ry   parametrizer   r   r   r  r   nopandasr   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r   r"  r#  r.  r5  r9  r  r   	list_viewlarge_list_viewr@  rA  rR  rS  rX  r\  re  rh  rp  rq  r  LargeListArrayr  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/  r5  r;  r=  r@  rF  rM  rP  rU  rY  r[  r]  ra  rf  rg  rl  rm  rv  rx  r  r>   rI   r  r  r   r   r*  r  pickle_test_parametrizer  r  settingsHealthChecktoo_slowgivenrQ  	all_typesintegersr  r  r  r  r  r  r  r  r  r  r  r   r  r  r  r  r   r  r  rL   binary_viewr  r  r  r  r  r  r  r7  r  r  r  r  r  r  r  r	  r  r  r  r+  r,  r/  r0  r   r6  r:  r=  rB  rE  rG  rH  rK  rQ  r`  rb  rh  rk  rp  slow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  r  r  r  r  ListViewArrayLargeListViewArrayr  r  r  r  r  r  r   r   r   r   <module>   sR  
!





&
7
)!		



#
O



F


6


	


 	

 4JE





%#

(	 
	
	
	
	








$
		

	



 )#
#%#

7
$&"#
02 .C
	.	
	/'


E


J