o
    h$                    @   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:e
jjd=d> Z;d?d@ Z<dAdB Z=dCdD Z>e
jjdEdF Z?e
jjdGdH Z@dIdJ ZAe
jjdKdL ZBdMdN ZCdOdP ZDe
j*dQejEejFejGejHgdRdS ZIdTdU ZJdVdW ZKdXdY ZLe
j*dZd[d\d] ZMe
jjd^d_ ZNe
jjd`da ZOe
jjdbdc ZPddde ZQdfdg ZRe
jje
j*dhejSejEfejTejFfgdidj ZUe
j*dhejSejEfejTejFffe
j*dkdd ggdd dgd ggd gdlggfdmdn ZVe
j*dhejSejEfejTejFffdodp ZWdqdr ZXdsdt ZYdudv ZZe
jjdwdx Z[dydz Z\d{d| Z]d}d~ Z^dd Z_dd Z`dd ZadddddZbe
jjdd Zcdd Zddd Zedd Zfdd Zgdd Zhdd Zie
jjdd Zje
jjdd Zke
jjdd Zldd Zme
jjdd Zndd Zodd Zpe
jjdd Zqe
jjdd Zrdd Zsdd Ztdd Zudd Zvdd Zwdd Zxdd Zydd Zzdd Z{dd Z|dd Z}e
jjdd Z~e
jjdd Ze
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dldgdggeEe fddgdggeFe fdgdddggeEe4 fdldgdggeGe fddgdggeHe fdgdddggeGe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dd Zedd 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d,d- Zd.d/ Ze
jj.d0d1 Zd2d3 Ze
jj.d4d5 Ze
jjd6d7 Ze
jjd8d9 Ze
jjd:d; Ze
jjd<d= Ze
jjd>d? Ze
jjd@dA Ze
jjdBdC Ze
jjdDdE ZdFdG Ze
jjdHdI ZdJdK Ze
jjdLdM ZdNdO ZdPdQ ZdRdS Ze
j*dTe ejEfe ejFfgdUdV Ze
j*dWeEe ejEe ddXeFe gdYdZ Ze
j*d[e eEe fe ejEe ddXfe eFe fe eGe fe eHe fgd\d] Ze
j*dQejEejFgd^d_ Ze
j*d`ejSejTgdadb ZĐdcdd ZŐdedf ZƐdgdh Zǐdidj ZȐdkdl Zɐdmdn Zʐdodp Zːdqdr Ze
jjdsdt Ze
jje
jje
jjϐdudv Ze
jjϐdwdx Ze
jjdydz 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*dhejejGfejejHfgdd Ze
j*dhejejGfejejHfgdd Ze
j*dejejGe fejejHe 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   L/var/www/vscode/kcb/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   s2   t dgd g dg} |  }d}||ksJ d S )Nr   )r   r   Nz9[
  [
    1
  ],
  null,
  [
    2,
    3,
    null
  ]
]r   r   	to_stringr   resultexpectedr   r   r   test_list_formatM   s   r3   c                  C   *   t g d} |  }d}||ksJ d S )N Nfooz[
  "",
  null,
  "foo"
]r.   r0   r   r   r   test_string_format_   s   r8   c                  C   s.   t td} | jdd}d}||ksJ d S )Nd   r   )windowz[
  0,
  1,
  ...
  98,
  99
])r   r   ranger/   r0   r   r   r   test_long_array_formatk   s   r<   c                  C   .   t g d} | jdd}d}||ksJ d S )Nr5   r   )indentz[
 "",
 null,
 "foo"
]r.   r0   r   r   r   test_indented_string_formaty      r?   c                  C   r=   )Nr5   r   )top_level_indentz [
   "",
   null,
   "foo"
 ]r.   r0   r   r   r   %test_top_level_indented_string_format   r@   rB   c                  C   r4   )N)        Ns   foos   z([
  00,
  ,
  null,
  01666F6F,
  80FF
]r.   r0   r   r   r   test_binary_format   s   rE   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   

rO   c                  C   sr   t td} |  }|  d }|j|jjksJ d } dd l}|	  |j
d us+J td}tj|| d S )N
   r   r   )r   r   r;   to_numpybuffersaddressctypesdatagccollectbasenparangetestingassert_array_equal)r   np_arr	arrow_bufrV   r2   r   r   r   test_to_numpy_zero_copy   s   
r_   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      )r`      r9   z>zero_copy_only must be False for pyarrow.ChunkedArray.to_numpymatchTzero_copy_only)r   r   r`   r`   ra   r9   )	r   chunked_arrayr)   r*   
ValueErrorrQ   rY   r[   r\   )elementschunked_arrmsgr]   r2   r   r   r   %test_chunked_array_to_numpy_zero_copy   s   
rk   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TFTFrd   NNNdtyper   r   Nzwith 1 nullsrb   )
r   r   r)   r*   rg   rQ   rY   r[   r\   object)bool_arrr1   r2   null_arrr   r   r   r   test_to_numpy_unsupported_types   s$   


"rt   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 )NrP   r   FT)re   writable)r   r   r;   rQ   r)   r*   rg   r#   )r   r]   np_arr2r   r   r   test_to_numpy_writable   s   
"rw   unit)smsusnstzUTCc                 C   sL   t g dt j| |d}tjg dd| d}| }tj|| d S )Nr   r}   zdatetime64[{}]rn   )r   r   	timestamprY   formatrQ   r[   r\   )rx   r}   r   r2   r]   r   r   r   test_to_numpy_datetime64   s   r   c                 C   sH   t g dt | }tjg dd| d}| }tj|| d S )Nr   ztimedelta64[{}]rn   )r   r   durationrY   r   rQ   r[   r\   )rx   r   r2   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   rn   Frd   )r   r   dictionary_encoderY   rq   rQ   r[   r\   )r   r2   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   rP   r   )rV   r   r   r;   	to_pandasr	   getrefcountrW   valuesrX   sum)rV   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 )Nr`   c                 S      g | ]}|qS r   r   ).0_r   r   r   
<listcomp>4      z test_asarray.<locals>.<listcomp>r   r   r   r   Or   int64strrn   )0123)r   r   r   Nr   )              ?       @float64r   r   r   r   r   r   r   crq   )r   r   r   r   r   )r   r   r;   rY   asarraytolistro   r%   lib
Int64ValuerH   r   isnanDictionaryArrayfrom_arrays)r   r]   rh   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   rG   rm   )r   nullsr   r   equalsrH   nullr   r   r2   r   r   r   
test_nullsT  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   )daysrP   r   )r   r   r   rG   gGz@r   stringr`         rm   TrK   r{   r   	   Fra   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   rH   r   r   
null_count)r   r   r   now_utcnow_with_tzonedaycasesvaluesizer2   r   r   r   r   test_array_from_scalarg  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r7   barbaz)r   r   r   r   )
dictionaryr   ra   r   r   )r   r   r   r   r   )r   r   r1   r2   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 )NrP      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 )NrP   r   )r   r   r;   r   r   rY   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 )NrP   r   r`      r   r9   r   ra   r   )r   r   r;   rM   r   r   r)   r*   r   rg   validater   rY   rQ   r   )	r   slicedr2   sliced2	expected2nstartstopr   r   r   r   test_array_slice  s@   
 $
r   c                  C   s  t d} t| }t|g}td d dtd ddtdddtdd dtdddtdddtd d dtdddtd	d
dtdddg
}|D ]B}|| }t| | }||sZJ tj|gdgd| }tj|gdgd}||suJ || }t| | g}||sJ qFd S )N   r   r   r   rP   r   r   r   r   iif0names)rY   rZ   r   r   rf   rM   r   record_batch)r]   r   ri   r   caser1   r2   r   r   r   test_array_slice_negative_step  s2   











r   c                  C   s   t jdgt  d} t jg dt  d}t g d}t jg dgd gt t  d}| | dks5J | |dks>J | | dksIJ | | dksTJ | | d	ks_J d S )
Nr7   rG   r7   r   Nr   r   r6   z
@@ -1, +1 @@
+"bar"
+null
z'# Array types differed: string vs int64z3# Array types differed: string vs list<item: int64>)r   r   utf8list_r   diffstrip)arr1arr2arr3arr4r   r   r   test_array_diff  s    r   c                  C   sH   t td} ttd| D ]\}}|| ksJ qt| ts"J d S )NrP   )r   r   r;   zipr#   r%   r   )r   r   jr   r   r   test_array_iter   s   r   c                  C   sd   t t dt  t dt  g} t jg d| d}|dd   dddd	d
dgks0J d S )Nr   r   r         @r         @)ra         @rG   r   r   r  r   ra   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   MyObject5  s    r  rY   r   r)   r*   rg   r   )r  r   r   r   r   test_array_factory_invalid_type2  s
   "r  c                  C   s<   t g d} t| }t| }t| |d ksJ d S )Nr   r   )rY   r   r	   r   r   )r   refcountr   r   r   r   test_array_ref_to_ndarray_base=  s   

r  c                  C   s   t jg dt  d} t jg dt  d}t jg dt  d}| |kdu s)J | |kdu s1J | |kdu s9J | |kdu sAJ | dkdu sIJ | d kdu sQJ d S )Nr   rG   TFr   )r   r   r   r   )r   r   r   r   r   r   test_array_eqF  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r`   ra   r         r`   )r`   Nr   r  r   r   offset)Nr   r  r6   )r   	py_bufferrY   int16r   r,   from_buffersrH   r   r)   r*   r+   )
values_buf	nulls_bufr   r   r   r   test_array_from_buffersV  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   rR   StringArrayr  r   r   r  r   r,   rF   )r   rR   copiedbinary_copyr   r   r   r   test_string_binary_from_buffersk  s<   
r%  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 12rG   Tfullznumber of buffers is at least 2rb   r   r   )r   r   string_viewrR   StringViewArrayr  r   r   r   r)   r*   rg   )r   rR   r#  rc   r   r   r   test_string_view_from_buffers  s    "r+  list_type_factoryc                 C   s"  | t  }t jg dd g g dg|d}|j|ksJ | }tt t j	|d|d |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   r`   ra   rG   r`   r   children)r   r  r   rH   rR   r)   r*   rg   r,   r  num_buffersr   )r,  r   r   rR   childr#  r   r   r   test_list_from_buffers  s    "r2  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   r7   r   ra   r6   rG   r   r   r.  )r   r  r  r  r   r   rR   r)   r*   rg   r,   r  r   )r   r   rR   r/  r#  r   r   r   test_struct_from_buffers  s$   &
"r3  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r`   ra   r   rG   )r   Nr6   r   r   r   r`   r   r   ra   r   r6   r   r   r   Fnullable)fieldsr   zint64 vs int32rb   )TFF)r7  maskr   r8  zMask must ber8  znot contain nulls)TFN)r   r   r   StructArrayr   rH   r  r   r)   r*   rg   r  r6  r   r+   rf   is_null)r   r   r   expected_listr   fafbfc
structtypefa2arraysr7  r8  r   r   r   test_struct_from_arrays  s~   



  rD  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   r4  zExpected Arrayrb   r7   )r   rf   r)   r*   r+   r;  r   )ri   r   r   r   test_struct_array_from_chunked#  s   "rE  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threerG  rF  r  )
r   r   r   r   r  rH   r   indicesrR   r   )r  r   r   r   r   r   test_dictionary_from_buffers-  s   rJ  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   rn   )FFTFFFr:  rY   r   r   rq   r   r   r   rI  r   r   r   r;   r   r#   )rI  r   r8  d1d2r   r   r   r   test_dictionary_from_numpy6  s   rN  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)r7   r   Nr7   Frd   )r   r   Nr   r7   r   T)r   r   r   r   )r7   r   r   r7   ffffff+@      &@)rO  rP  rP  rO  )rO  rP  NrO  )	equal_nanr  rK   )r  rK   Nr  )r   r   rQ   r   r   rY   r[   r\   r)   r*   ArrowInvalidassert_allclose)r2   r   anonullsafloatafloat2aintsr   r   r   test_dictionary_to_numpyM  s   
	

rX  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   rn   rK  )rI  r   iarrdarrrL  r   r   r   r   !test_dictionary_from_boxed_arrays  s   

r[  c                  C   s   t g d} t g d}t g d}t g d}t j| | tt j t j|| W d    n1 s;w   Y  tt j t j|| W d    n1 sXw   Y  t jj||dd d S )Nr   r   r   r   r   r   )r   r   r   r   r   Fsafe)r   r   r   r   r)   r*   ArrowException)indices1indices2indices3r   r   r   r   'test_dictionary_from_arrays_boundscheck  s   rc  c                  C   s<   t g d} t g d}t j| |}|jjdd d S )Nr\  r   Tr'  )r   r   r   r   rI  r   )rI  r   r   r   r   r   test_dictionary_indices  s   rd  )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   ra   r   i4rn   r   rG   r  r   r!     d   e   f   g   hrF   r   ra   r   namer   Nr   r   r  r   r!  ri  rj  rk  )r   r   Nr   )r   r   rP   )r   r   r   r   r   Tr'  )rY   r   r   r   rF   r   r  rH   value_fieldrn  rZ   r)   r*   rg   listr;   r   r+   )
re  r,  offsets_arroffsetspyvaluesr   r1   r2   typoffsets2r   r   r   test_list_from_arrays  sR   $



$rx  r   r   c                 C   s<   t ||t  }| j|j|j| d}||ksJ d S )Nr:  )r   r   r   r   rt  r   r<  )re  r,  r   reconstructed_arrr   r   r   !test_list_array_types_from_arrays  s
   rz  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   r`   r:  zAmbiguous to specify both rb   r   -Null bitmap with offsets slice not supported.)r   r   r   r   rt  r   r   r<  r)   r*   rg   NotImplementedError)re  r,  r   rt  ry  	arr_slicerj   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   rG   )r   map_r   r   castr   r   )tr   r1   
t_expectedr2   r   r   r   test_map_cast2  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 )Nrn  r   Fr5  r   r   r   r   r   r   r   rG   r   r   )
r   r  r  r   rH   	key_fieldr   
item_fieldr   r   )r  r   r   r   r   test_map_labelled>  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_dictG  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 ) Nrf  rg  rn   r   rG   rh  r   ra   r   rF   ro  rp  )r   r   r   Nr`   ra   zExpected map type, got stringrb   zMismatching map items typer   r   r   r   FTFr:  r   )r   NNr   )TTFz=Ambiguous to specify both validity map and offsets with nullsr{  )r   r   r   ra   r   r   r   r   ra   r   )r   r   r   r   r   r   )r   r   r   r   r   )rY   r   r   rr  r;   r   r   MapArrayr   r  rF   r   r   rH   r)   r*   ArrowTypeErrorr   r   bool_r   rR  ArrowNotImplementedErrorrM   rZ   rg   concatenater  )rs  rt  pykeyspyitemspypairs	pyentrieskeysitemsr1   r2   msg1msg2r   keys_with_nullr   r   r   test_map_from_arraysQ  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   r`   r   r  )r   r   rP   rK   rn  rG   r  rH   r8  )	list_sizer8  r   ra   )r  rH   )r   r   r;   r   FixedSizeListArrayr   r   rH   r   r   r  rq  rn  r)   r*   rg   r   r+   )r   r1   rv  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   r`   )r   r   r`   r   r   r   r`   )r   Nr   r`   )r   r   r`   )r   r   ra   )r   r   r   	ListArrayr   r   rH   r   r   r)   r*   rg   )r   rt  r1   r   r   r   test_variable_list_from_arrays  s   "r  c               	      s4  t jg ddd t jg dddt jg ddd} t jg ddd}t jg d	d
dg d fdd}|t j|  gddgddg| d |t j|  gddgddgddg| d |t jj| gddgdddgddg|d |t j| gddgddgddgddg|d t j| g}tt j |jdd W d    n1 sw   Y  t jj|  gddgd}tt j |jdd W d    n1 sw   Y  t jg dd
d}t j| | g}tt j |jdd W d    d S 1 sw   Y  d S )Nr  r   r!  ri  rF   rG   r   r   r   r   r   r   r   r   r   r   rK   r  rK   rK   r  r  rK   )r   r   r   r   r   r   r   r   r  r   r   r!  r   r   ri  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   rH   rn  r   r   r1   r   r   r   0      z?test_union_from_dense.<locals>.check_result.<locals>.<listcomp>denser   r   r   r   )r   r;   rH   
num_fieldsmode
type_codesr   r   rt  r  r)   r*   KeyErrorr1   expected_field_namesexpected_type_codesexpected_type_code_valuesactual_field_namesrF   r   py_valuevalue_offsetsr  r   check_result-  s$   

"z+test_union_from_dense.<locals>.check_resultr   r   r   r   r  r  r  binintrK   r  r  Tr'  )r   r   r   r   r   r   r`   )r   r   
UnionArray
from_denser)   r*   rR  r   )typeslogical_typesr  r   bad_offsetsr   r  r   test_union_from_dense%  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      r   r!  r  r  ri  rF   rG   )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;   rH   r  r  r  r   r  r)   r*   r   r  rt  r  r  rF   r   r  r  r   r  w  s(   

"z,test_union_from_sparse.<locals>.check_resultr   r   r   r   r  r  r  rK   r  r  Tr'  )r   r   r  from_sparser)   r*   rR  r   )r  r  r  r   r   r  r   test_union_from_sparseo  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   rG   )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   rG   )r   r   r   dr  r   )r   r   r`   r  rF   r   r   r  r   )r   r   r   r   r   r   r   r   )	r   r  r  r   r   r   r  r;   r   )r   rF   r   r  r  r   r   r   r   r   r   test_union_array_slice  s"   "r  Tr^  check_array_constructionc          
      C   s   | \}}}}t |tjr|j|ksJ |}ntj||d}t |tjr-|j|ks*J |}ntj||d}|j||d}	|	jdd |	|sHJ |rYtj|||d}||s[J d S d S )NrG   r]  Tr'  rH   r^  )r%   r   r,   rH   r   r  r   r   )
r   r^  r  in_datain_typeout_dataout_typer2   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   i1rn   r   rg  u4u1f8P  r   r  p uint16r   u2rG   )rY   r   r   r   r  r   r   r  r)   r*   rR  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_none  s   "r  c                  C   s   t ddgddgg} tt | t   W d    n1 s"w   Y  t ddgdggt t  } tt | t   W d    d S 1 sOw   Y  d S )Nr   r   r   r`   r  r   r!  )	r   r   r)   r*   r|  r  r   r   rF   r'   r   r   r   test_cast_list_to_primitive  s    "r  c                  C   sF   t jg dd} | jdksJ | d d  }|| sJ | d d  d S )Nr   rG   r   ra   )r   rf   
num_chunksr   )r   r1   r   r   r   $test_slice_chunked_array_zero_chunks&  s
   r  c                     sb   t g dt g dg} t | }t   | }t  fdd| D }||s/J d S )Nr   r4  c                    s   g | ]}|  qS r   )r  )r   xtargetr   r   r   8  s    z+test_cast_chunked_array.<locals>.<listcomp>)r   r   rf   r   r  r   )rC  carrr  r2   r   r  r   test_cast_chunked_array2  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 NrG   )	r   r   r   r   r   r   rf   r  r   )typ1typ2r   r1   r2   r   r   r   test_cast_chunked_array_empty<  s   
r  c                  C   sL   t t tg gj} W d    n1 sw   Y  t| tjs$J d S N)r)   warnsFutureWarningr   rf   rU   r%   ChunkedArray)r   r   r   r   test_chunked_array_data_warnsG  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  rg  rn   r   i2r  r  r   Fr]  )rY   r   astyper   r  r  r  r  r   r   r   r   test_cast_integers_unsafeM  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	  rn   r   rg  r   )g      $g      4@g      >ir   iTr]  )rY   r   r   r   r  r  r   r   r   r   !test_floating_point_truncate_safeb  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	  rn   r   rg  r   )g333333$g3333334@gL>r   	truncatedrb   Tr]  F)rY   r   r   r   r)   r*   rR  r  r  r   r   r   #test_floating_point_truncate_unsafep  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    ra   @ Ni'1234-9123   rP   i  Ni]123z-91{   NiTr]  )decimalDecimalr   
decimal128r   r  r   r  r  r   r   r   test_decimal_to_int_safe  s(   


r  c               	   C   s   t tdd tdgtddg dt ftdd tdgtddg dt ftd	d td
gtddg dt fg} | D ]%}t	j
tjdd t| W d    n1 sbw   Y  t|ddd qId S )N1234567890123z-912345678901234r  ra   )iqNir  z
-912345678)i@Nir	  r
  )iN]   zInteger value out of boundsrb   Fr  )rY   r   r  r  r   r  r   r  r   r)   r*   rR  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  ra   r  z1234.134z-9123.1r  rP   r  z123.1451z-91.21r  0Rescaling Decimal128 value would cause data lossrb   Fr]  )r  r  r   r  r   r  r   r)   r*   rR  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  rP   rG   r   r   r  rb   r   r   Fr]  z1234.1z'Decimal value does not fit in precisionra   r   )
r   r   r  r  r  r  r   r)   r*   rR  )r   r1   r2   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  rb   Tr]  )	r   r   rY   nanr)   r*   rR  r  r   r'   r   r   r    test_safe_cast_nan_to_int_raises  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  rn   r  r  r  )rY   r   r   r   r  r  r  r   r   r   test_cast_signed_to_unsigned
  s   
r  c                  C   s  d gd } t  }t  t  t  t  t  t dt t  t t  dt 	t  t 
ddt dt jdddt jdddt dt  t t d	t  t d
t t  t dt  gt t  t  g}|D ]
}t| || |f 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   rP   r`   r  r{   r~   r   zEurope/Parisr   r   r   )r  rG   )r   r   r   float16r   rF   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_null  sV   

r&  c                  C   s   t g dt jg dt  dft d dgt jd dgt  dfg} | D ].\}}|j|jdd}|jdd ||s?J |j|jdd}|jdd ||sTJ q&d S )	N)r   127z-128)r      irG   18446744073709551615l    Tr]  r'  )r   r   r   uint64r  rH   r   r   )r   r  r2   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   rG   )r   r   r   r   r   rH   r  r   r  r   r)   r*   rR  )r   r2   key_typerv  r   r   r   test_cast_dictionaryO  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   rG   rF   )r   r   r   rF   viewr   r   r2   r   r   r   	test_viewg  s   r1  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   r7   Nr   r7   r7   Nr   )r   r   rI   uniquer   rf   r   r   r2   r1   r   r   r   test_unique_simplep  s   r7  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 )
Nr2  r   r   r   r   rG   r3  r4  )r   r   r   r   counts)
r   r   r   rI   rf   value_countsrH   r   r  r  )r   r   expected_valuesexpected_countsarr_inr1   r   r   r   test_value_counts_simple  s2   r>  c                  C   s  t g d} t g d}t j| |}| }t j|  |}||s)J | }|d|s7J |dt jg dddsHJ t jt jg dd|}| }t jt jg ddt jg dd}||spJ | }|d|s~J |dt jg ddsJ d S )	N)r   r   r   r   r   r   r   r   r   r   r   r   )r7   r   r   quxr   r9  )r   ra   r`   r   rG   r   )r   r   r   r   r5  r   r:  r  )rI  r   r   unique_resultr2   r1   r   r   r   (test_unique_value_counts_dictionary_type  s(   ""rA  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   rG   r   r3  r   Nr   r   r7   r   r   r   )r   r   r   r   rI   r   r   rf   r  chunkrH   r6  r   r   r   test_dictionary_encode_simple  s:   rF  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 )NrB  r   r   )r   r   Nr   r   r   rG   )r   r   r   )Nr7   r   r7   xyzzyr   r   r   r7   r   r   r   )r   r   r   r   large_stringr   r   rf   r  rH   rE  rM   )r   r   r2   r1   r   r   r   r   test_dictionary_encode_sliced  sF   
rJ  c                  C   s<   t jg t  d} |  }t|jdksJ |jdd d S )NrG   r   Tr'  )r   r   r   r   r   r   r   )r   encodedr   r   r   "test_dictionary_encode_zero_length  s   rL  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 )
NrB  rC  r   rG   r   r3  rD  r7   r   )r   r   r   r   rI   dictionary_decoder   )r   r2   r   r1   r   r   r   test_dictionary_decode  s.   rN  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   rn   ry   rG   rg  )r   r   rY   time32r  r   r   r2   r1   r   r   r   test_cast_time32_to_int     
rR  c                  C   rO  Nr-  r   rn   r{   rG   i8)r   r   rY   time64r  r   rQ  r   r   r   test_cast_time64_to_int  rS  rW  c                  C   rO  rT  )r   r   rY   r   r  r   rQ  r   r   r   test_cast_timestamp_to_int  rS  rX  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-  rg  rG   date32i  r   r   r   )r   r   r  r   r   r   )r   result1result2	expected1r   r   r   test_cast_date32_to_int#  s   

r]  c                  C   rO  rT  )r   r   rY   r   r  r   rQ  r   r   r   test_cast_duration_to_int3  rS  r^  c                  C   s   t jg dt  d} | t  }t jg dt  d}||s$J ddg}t |}|jt  ks8J t	t
 |t   W d    n1 sOw   Y  t j|tdgt  d}|t  }|jdkspJ d S )	N)s   foos   bars   bazrG   r      mañana	utf-16-leT)r8  rH   r   )r   r   rF   r  r   r   encoderH   r)   r*   rg   r   rY   r   )
binary_arrutf8_arrr2   non_utf8_valuesnon_utf8_binarynon_utf8_all_nullr  r   r   r   test_cast_binary_to_utf8=  s   
rg  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   rn   rG   rU  )r   r   rY   date64r  r   rQ  r   r   r   test_cast_date64_to_intR  s   
ri  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  rh  rG   r   r   )r   r   r   r   r   r/  r#   )val1val2r1   r[  as_i8r   r   r   !test_date64_from_builtin_datetime]  s   
 rp  )r   r   boolrl   r      r      r  rP   r  uint32r   r*  r   float)r   g?g?doubler   r   rF   )r  r   r!  r   )s   abcs   bcds   cdec                 C   s&   t j|| d}|| |sJ d S r  )r   r   r  r   )r   r   r   r   r   r   test_cast_identitiesi  s   rw  )rU   rv  )TFTT)r   r   r`   r   )r   r  N)r   Nr   r   r`   ra   r   r   r   r   ))r   r   )r   r   Nc                 C   sH   t j| |d}td|jd D ]}||||}||s!J qd S )NrG   r   r   )r   r   r;   HIGHEST_PROTOCOLloadsdumpsr   )rU   rv  pickle_moduler   protor1   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;   rx  ry  rz  r   )r{  r   r|  r1   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  )rz  ry  r   )r{  r   rU   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 )	NrG   c                 S      g | ]}|d ur|j ndqS Nr   rS   r   bufr   r   r   r         z/test_array_pickle_protocol5.<locals>.<listcomp>ra   r   )buffer_callback)rR   c                 S   r  r  r  r  r   r   r   r     r  )	r   r   rR   r;   rx  rz  appendry  r   )
rU   rv  r{  r   	addressesr|  rR   pickledr1   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 )NrP   rn   r   r   )rY   rZ   r   r   r  r   r*  rt  r  r   r   r	  r   r   r   ro   rQ   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            rG   u8rn   )r   r   r*  rY   r   r0  r   r   r   $test_array_uint64_from_py_over_range  s   r  c                  C   s   t jg ddd} t| }t| }t| |d ksJ |jdks%J tjt jdt jddt jdgdddd	}|jdks@J |jd
ksGJ d S )Nr  r   rn   r   r   r   r`   r	  rG   r   )rY   r   r	   r   r   rH   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 )Nrp   ry   rG   r   )secondr   rz     )microsecondrj  r{   )r  rj  Nr|   )r   r   rP  r   r   r   rV  )r1   r2   r   r   r   test_time32_time64_from_integer  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rH   from_pandasrG   )r   r   rY   r  r   r   r   r   r   _check_case	  s   z=test_binary_string_pandas_null_sentinels.<locals>._check_caserF   r   r   )r  r   r   r   (test_binary_string_pandas_null_sentinels	  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   rF   r   rI   
large_utf8s   stringr   Tr   r  r   r   ry   r{   rG   r  r   )rY   r  r   rF   r  r  r  r  rY  rh  rP  rV  r   r   r)   r*   rg   r+   r   r   )r   r   r   r1   r   r   r   &test_pandas_null_sentinels_raise_error	  s.   r  c                  C   sP   dd l } | jddtjgtd}t|}tjddtjgdd}||s&J d S )Nr   r   r   rn   T)r  )pandasIndexrY   r  rq   r   r   r   )pdr   r1   r2   r   r   r    test_pandas_null_sentinels_index6	  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  r`   zdatetime64[D]rn   rG   Frd   )rY   r   r   r   r   rY  r   rQ   r[   r\   ro   r0   r   r   r   )test_array_roundtrip_from_numpy_datetimeDA	  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  r`   r  rK   rP     r   r   r   r{   r   )r   r   r   rH   r   r'   r   r   r   test_array_from_naive_datetimesM	  s   r  )ro   rH   datetime64[s]ry   datetime64[ms]rz   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  r`   r  rK   rP   r  r   r   r   rn   rG   )r   r   r   rY   r   rr  )ro   rH   rU   r   r2   r   r   r   test_array_from_numpy_datetimeV	  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  r`   r  rK   rP   r  r   r   r   r  rn   r  )r   rY   r   rr  r)   r*   r   r  )rU   ry   rz   r   r   r   5test_array_from_different_numpy_datetime_units_raisesn	  s    "r  )r|   r{   rz   ry   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.111111111rG   r   )rY   
datetime64r   r   r   rH   rx   )rx   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 unitrb   )rY   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   rn   rG   )r   r   rY   r   r   r%   DurationArrayrH   r   r   rr  )ro   rH   rU   r]   r   r2   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)rY   timedelta64r   r)   r*   r|  r   )tdrU   r   r   r   .test_array_from_numpy_timedelta_incorrect_unit	  s   
r  c                  C   s0  t jg ddd} t| }|jdksJ tjg ddd}||s%J t g d}tj| |d}tjg ddd}||sCJ t jg dd	 ddd d d
 } t g dd	 d d d
 }tj| |d}tjg ddd}||sxJ t jg ddd} t| }tjg ddd}||sJ d S )Nabcdeabcr6   z|S5rn   rF   rG   r  r:  r  Nr6   ra   r   r  r6   Nr  r6   Nr  r6   r6   r6   r6   z|S0rY   r   r   rH   r   )r   	arrow_arrr2   r8  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   r!  r%   MonthDayNanoIntervalArrayrH   MonthDayNanor   r   rU   r   r=  r2   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r9   )r  r  i$I$)r  r   l   	z )r  r  l   \kpz)dateutil.relativedeltar  r  r  r   r   r%   r  rH   r!  r  r   r   r   r   r   r)   r*   rg   )r  r  rU   r   r=  r2   r   r   r   &test_interval_array_from_relativedelta	  s`   





"r  c                  C   sx   d dg} t | t  }t|t jsJ |jt  ksJ d t g dg}t |}||s2J | |ks:J d S )N)r   r   )	r   r   r!  r%   r  rH   r  r   r   r  r   r   r   test_interval_array_from_tuple"
  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  rH   r!  r  r   r   r   r   r   r   rr  )r  rU   r   r=  r2   expected_from_pandasactual_listr   r   r   #test_interval_array_from_dateoffset1
  s>   


	r  c                  C   sB  ddg} | D ]z}t jg d|d}t|}|jdksJ tjg ddd}||s-J t g d}tj||d}tjg d	dd}||sKJ t jg dd
 |dd d d }t g dd
 d d d }tj||d}tjg ddd}||sJ qt jg ddd}t|}tjg ddd}||sJ d S )Nz<U5z>U5r  rn   r   rG   r  r:  r  ra   r   r  r  z<U0r  )dtypesro   r   r  r2   r8  r   r   r   test_array_from_numpy_unicodeU
  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   rG   )r)   r*   r+   r   r   rY   r   r   r   r   r   !test_array_string_from_non_stringv
  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 )Nrn   rG   r   r   Tr  )
rY   r   rq   r   r   r   r  r)   r*   r+   )valsr   r   r   r   test_array_string_from_all_null}
  s   r  c                  C   s   t jj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)ro   r8  r   r   Nr`   rG   z Cannot pass a numpy masked arrayrb   )TFFFr:  )rY   mar   r   r   r)   r*   rg   r  r1   r2   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   rn   rG   )rY   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   r4  rb   r   r  )rj   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   rn   r   )TTTT)rY   onesrq  r   r   r   r0   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efFr:  )r   rF   r   r  r   r   r	  r   r   rY   r   r   )pydatar   r  nparraypatyper8  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  rG   r   r   r   @   rK   hhxxh)r   r   r`   r4  3b)s   foo!Ns   bar!!r   ra   4i)r   r`   r`   r   s	   foo!bar!!)r   r   r  rR   r   
to_pybytes	bytearrayr  r  unpackrY   r   )r   rR   null_bitmapa_slicedrt  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   Nr`   ra   rG   r`   r   ra   r  r  7   r   qqq8xqq)r   r   r   r`   ra   ))*   NN)N+   r   r   bxx)r  r   4xh)r  )r   r   r   r   rR   r   r  r  r  r  r  r   r  )r   rR   r  rt  r   r   r   r   test_buffers_nested
  s8   &
r  c                  C   s  t tjg ddd} | jdksJ |  dksJ t| t| | j ks*J t jg ddd} | jdks:J |  dksBJ t| t| | j ksQJ t jdd	gd g d
gt 	t 
 d} | jdkskJ |  dkssJ t| t| | j ksJ t jg dgddgggt 	t 	t  d} |  dksJ | jdksJ t jdd	gddggg dd dggddgggt 	t 	t  d} | dd	}|jdksJ | dksJ d S )Nr4  r   rn      r   Nr   rG      r   r   r
  >   B   )ra   r   r  r   rP         r   r`   r      r  )r   r   rY   nbytesget_total_buffer_sizer	   	getsizeofrq   
__sizeof__r   r   r   rM   )r   r  r   r   r   test_total_buffer_size  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  rG   r4  r  )r   rf   r   r  r  )r   r   r   r   test_nbytes_size2  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_repr8  s   "r"  c                   C   s8   t t t  W d    d S 1 sw   Y  d S r  )r)   r*   r+   r   r!  r   r   r   r    test_invalid_tensor_construction>  s   
"r#  )offset_typer,  c           	   	   C   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   r`   ra   r   r  r   rG   )r   r   r   r   r   r  )r   r   r   ra   ra   r  r  r   	r   Nr   r   r`   ra   r   r  r   T)r   r   r   flattenr   rt  r   )	r$  r,  r  r   rw  r  r   offsets1arr0r   r   r   test_list_array_flattenC  s^   	
r)  	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   r`   rG   )r   r   r   r   r   r   )r   r   r   value_parent_indicesr   )r*  r   r2   r   r   r   test_list_value_parent_indices|  s   r-  )r$  r*  c                 C   s   t |dd r!tjddgd d d gddgg|d}tjg d| d}ntjg dd g ddgg|d}tjg d	| d}| |sBJ d S )
Nr  r   r   r   r`   rG   )r   Nr   r   r-  )r   Nr   r   )getattrr   r   value_lengthsr   )r$  r*  r   r2   r   r   r   test_list_value_lengths  s(   	r0  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   r4  rG      r   r.  )r   r   r   r   Tr'  )r   r`   ra   r   r   r   r   r`   ra   r   )r   r   r   rR   r  r  rH   r   r   r   rt  r&  r   
value_type)r,  rv  r   rR   	flattenedr   r   r   %test_list_array_flatten_non_canonical  s   r5  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   r`   r   r2  )rt  r   r   )r   r`   r   r4  r   r`   r   r   r   rt  r&  r#   )r6  r   r   r   r   r   r   r   %test_list_array_values_offsets_sliced  s   8r8  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   r`   ra   r   r  r   r   rG   )
r   r   r   r`   ra   r   r  Nr   r   T)r   r   r   r   rH   r   r&  )r  r   r  r   typ0r(  r   r   r   "test_fixed_size_list_array_flatten  sB   
r:  c                  C   sT   t jdgdgdggt jt  ddd} | dd   t jdgt  dks(J d S )Nr   r   r   r+  rG   )r   r   r   r   r&  )r   r   r   r   -test_fixed_size_list_array_flatten_with_slice  s   ,r;  c                  C   sr  t t  t  } t t jdt  ddt dt  g}t jddgdgg| d}|jj	|s4J |jt jd	d
dddddddg|dksLJ |j
	t g dsYJ |j	t jg dt  dsjJ t j|j|j
	t d	dgdggsJ t j|j|j	t jd
dgdggt t  dsJ tt |  W d    d S 1 sw   Y  d S )NkeyFr5  r   r  r  r  rG   r   r   )r<  r   r   r   r   r   r   r   )r   r  r   r   r  r  r   r   rH   r   r  r  r  r   rt  r   r)   r*   r|  r&  )r   	ty_valuesr   r   r   r   test_map_array_values_offsets  s0   " 
"r>  c                  C   s^  t t dt  t dt  g} t jg d| d}| \}}|jt  ks+J |jt  ks4J | g dks>J | g dksHJ |dd   \}}| dd	gks\J | d
dgksfJ t jg d| d}| \}}| g dksJ | g dksJ |dd   \}}| d dgksJ | d d
gksJ t jg d| d}| \}}| g dksJ | g dksJ |dd   \}}| dd gksJ | dd
gksJ t jg d| d}| \}}| g dksJ | g dksJ |dd   \}}| d d gks"J | d dgks-J d S )Nr  r  r  rG   r  r  r  r  r   r   ra   r  r  )r  Nr  r  )r  Nr  )r   N)r         @)Nr  rp   )NrA  r  r   rA  )r@  N)Nr  )r   NN)NNr  r  )	r   r  r  r  r	  r   r&  rH   r   )r   r   xsysr   r   r   test_struct_array_flatten  sB   rD  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  rG   r   r   r   r   r  r?  r   r  zr6   )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   





  rS  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   Nra   rG   )r  Nr  rE  rF  )r   r  r  r  r	  r   _flattened_fieldr%   r   rH  rI  r   r)   r*   r+   r   r  rJ  r   r   r   !test_struct_array_flattened_field]  sH   





  rU  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 )Nr`   )lengthrG   )r   r   r  r   r  r   r   r   r  rt  r*  r   r	  r   rY  rh  rF   r   	itertoolsproductr   r  r   r  rR  )r  t1t2r   r   r   test_empty_cast  s4   
r[  c                  C   s   t jg dddg} t jg d| }| ddgdggks!J t jg dddg} t jg d| }| g dks?J d S )NrH  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   r^  c                  C   s6  t ddg} t jddgtd}t| t }t|t }tddg}||s.J ||s5J t jddgtd}tj| t |d}||sOJ t ddg} t	t
 t| t  W d    n1 spw   Y  t	t
 tj| t t dgd W d    d S 1 sw   Y  d S )Ntototatarn   Fr:  r_  r`  )rY   r   rq   r   r   r   rq  ra  r)   r*   rg   )vecvec2r   r   r2   r8  r   r   r   test_array_from_numpy_str_utf8  s"   "rc  c            
         s  dg} dg}dd t dD dd  D  | fddt d	D 7 } | fd
dt d	D 7 }| t f|t ffD ]H\}}t|}t|}d }t|tjsVJ |j	|ks]J |j
dksdJ d}t |j
D ]}||}|D ]}	|	 || ksJ |d7 }qtqkq>d S )N   xr  c                 S   s(   i | ]}|d d t |d d qS )rd  i rP   r   )r   ra  r  r   r   r   
<dictcomp>  s    z9test_numpy_binary_overflow_to_chunked.<locals>.<dictcomp>rP   c                 S   s   i | ]
\}}|| d qS )r   )decode)r   r   r  r   r   r   re    s    c                       g | ]} |d   qS rP   r   r  )unique_stringsr   r   r     s    z9test_numpy_binary_overflow_to_chunked.<locals>.<listcomp>i   c                    rg  rh  r   r  )unicode_unique_stringsr   r   r     r     r   r   )r;   r  r   rF   r   rY   r   r%   r  rH   r  rE  r#   )
r   unicode_valuesr   ex_typer   r  value_indexr   rE  valr   )rj  ri  r   %test_numpy_binary_overflow_to_chunked  s<   





rp  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  rE  )kilobyte_stringtwo_megar  r   r   r   r   #test_list_child_overflow_to_chunked  s   

rt  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)r7   r   Nr   FFFTr:  TTTT)r   
infer_typer   rY   r   r   )r   r   r   r   test_infer_type_masked  s   

rx  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r`   Nr`   r  FTFTr:  r   rn   )r   r   rY   rH   r   r'   r   r   r   test_array_masked  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 )Nry  rz  r:  )r`   Nr`   N)r`   Nr`   r   )r`   r   Nr   )r`   NNN)r   r   r  g      @rv  )FNFTTFTF)r   r   rY   r   r)   r*   r  r+   r'   r   r   r   test_array_supported_masks  sj   









$r}  c                  C   sL   dd l } tj| jddgddd| jddgdd	d
}| d dgks$J d S )Nr   r   r   r   )rn  ro   TFrq  rn   r:  )r  r   r   Seriesr   )r  r   r   r   r   !test_array_supported_pandas_masksO  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 )Nr1  r   Fr  T)s   aaa   bbbs   cccrP   r   )FFFs   XXXr  )r   r   rF   rY   r   )masked_basicmaskedmasked_nullsnpar  r   r   r   test_binary_array_maskedW  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   Fr:  r  r  )rY   r   r   rF   r   )r  r  r   r   r   test_binary_array_stridedx  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   rn   zmust be boolean dtypezmust be 1D arrayr   zdifferent lengthrb   r:  )rY   r   r+   r   rR  rg   r)   r*   )r   objr8  exrj   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   rn   F)copy)ro   r  rp   r   r   r   z
2.0.0.dev0zUnable to avoid a copyrb   T)r   r   rY   r   r[   r\   r  r   __version__r)   r*   rg   	__array__flags	writeablero   r0   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  rU   selfrU   r   r   r   __init__     
z-test_array_protocol.<locals>.MyArray.__init__Nc                 S   s   t j| j|dS r  )r   r   rU   r  rH   r   r   r   __arrow_array__  s   z4test_array_protocol.<locals>.MyArray.__arrow_array__r  r  r  r  r  r  r   r   r   r   MyArray      r  r   r   rn   rG   rl   r:  r   r  c                   @   r  )z+test_array_protocol.<locals>.MyArrayInvalidc                 S   r  r  r  r  r   r   r   r    r  z4test_array_protocol.<locals>.MyArrayInvalid.__init__Nc                 S   s   t | jS r  )rY   r   rU   r  r   r   r   r       z;test_array_protocol.<locals>.MyArrayInvalid.__arrow_array__r  r  r   r   r   r   MyArrayInvalid  r  r  c                   @   r  )z%test_array_protocol.<locals>.MyArray2c                 S   r  r  r  r  r   r   r   r    r  z.test_array_protocol.<locals>.MyArray2.__init__Nc                 S   s   t j| jg|dS r  )r   rf   rU   r  r   r   r   r    s   z5test_array_protocol.<locals>.MyArray2.__arrow_array__r  r  r   r   r   r   MyArray2   r  r  c                   @   r  )z%test_array_protocol.<locals>.MyArray3c                 S   s   || _ || _d S r  )data1data2)r  r  r  r   r   r   r    s   
z.test_array_protocol.<locals>.MyArray3.__init__Nc                 S   s   t j| j| jg|dS r  )r   rf   r  r  r  r   r   r   r    s   z5test_array_protocol.<locals>.MyArray3.__arrow_array__r  r  r   r   r   r   MyArray3  s    r  )rY   r   r   r   r   r   r)   r*   rg   r+   rf   )r  r   r1   r2   r  r  r  r]   r   r   r   test_array_protocol  sB   



r  c                   @   r  )ArrayWrapperc                 C   r  r  r  r  r   r   r   r    r  zArrayWrapper.__init__Nc                 C   s   | j |S r  )rU   __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    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  )rU   __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   rU   r   )r  r   r1   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   rG   z7Received unsupported keyword argument\(s\): \['other'\]rb   znot-none)other)r   r   r   r)   r*   r|  r  )r   r   r   r   r   0test_c_array_protocol_device_unsupported_keyword8  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   r`   r  )r   concat_arraysr   r   )concatenatedr   r   r   test_concat_arrayF  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   rR  r  r   r   r   r   r   !test_concat_array_different_typesL  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 objectsrb   r   r   r   r`   )r)   r*   r+   r   r  rf   r'   r   r   r   test_concat_array_invalid_typeQ  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   ry   zEurope/Brusselsr   rG   )r   r   r   r   dtr}   rf   )r   ry   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   )rY   r   r   r   r   ro   r   )r2   r   r1   r   r   r   test_to_pandas_float16_listg  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)ra   r  #   rG   
descending)r  r  ra   r   r4  )r   ra   r`   r   r   r   )ra   r  r  Nat_end)null_placement)r  r  ra   Nat_start)Nr  r  ra   )r   r   r   sortr   rf   )r   
sorted_arrr   r   r   test_array_sortq  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)ra   r  r  r  rG   )r7   carr   foobarr   r   r   r  )byr  r  r   r  r  r   ra   r7   r  r9  r  )r  r  r  )r   r;  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   rG   l    r   Fr  )memory_pool)
r   r   r   rH   r   r)   r*   rR  r   default_memory_poolr0   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   ra   rP   r  r   r   r   r   r  r`   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_typer3  r  r   rH   r  )r  r  r   typed_run_endstyped_valuesr  r   r   r   'check_run_end_encoded_from_typed_arrays  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   rt  r*  run_end_encodedr  )r  r3  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  r3  r  r   r`   r   r   r   )
r   r  r   r   r  r  r  r)   r*   rg   )	r  r   r  rV  rR   r   r  r/  r  r   r   r   !test_run_end_encoded_from_buffers  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   rG   )r   r   ra   r   )r   r   r   N)r   r   r   r   r   N)r   r   r`   ra   r   )r   r   Nr   N)FFFTFTr  )r   r  r   r   r  r   r   r   rY   r  r	  )	r  r   r  r2   r   r1   
ree_type_2
expected_2r8  r   r   r   )test_run_end_encoded_from_array_with_type  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  Frd   )r   r   r  r   r   rY   r[   r\   rQ   r)   r*   rR  )r   r  r2   r   r   r   test_run_end_encoded_to_numpyC  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  Trd   )
r   r   r  r   r   r   r   r)   r*   rR  )r   r  r   r   r   test_run_end_encoded_to_pandasO  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   r`   ra   r   Nr  )r   r   r`   r   )r   r   r   r   r   r   r   r`   ra   r   r  rn  rG   r  )r   r   r   r8  r   )r   r   r   )r   r   r   r  r:  )r   r   r   rt  sizesr   r  r   rH   rq  rn  rF   r)   r*   r+   r   )	re  r,  r   rt  r  r   rv  r1   r8  r   r   r   test_list_view_from_arraysZ  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   )FFTr:  )r   r   r   )r   r   r)   r*   r   rR  r   rt  r  r   r<  )re  r,  r   rt  r  r8  r   array_slicer   r   r    test_list_view_from_arrays_fails  s    
"r  )re  r,  r$  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 )Nr%  rG   r"   r   r`   ra   r   r  r   )r   r   r   ra   ra   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   )r`   r   r   r   ru  r:  )r`   r   r   )
r   r   r   r&  r   rt  r  r   r   r   )re  r,  r$  r(  r  r   r'  sizes1r  r   rw  sizes2r   rt  r  r   r8  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   r`   )r   r   r   r2  )rt  r  r   r   r   r`   r4  r   r7  )r  r   sliced_arrayr   r   r   r   r   test_list_view_slice  s   8r  numpy_native_dtype)r  rg  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 )NrP   rn   rG   r   r   )rY   ro   newbyteorderrZ   r)   r*   r   r  r   r   r;  r   )r  numpy_swapped_dtyper]   r   r   r   test_swapped_byte_order_fails  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   r`   rn   r|  Fr   c                 S   r   r   r   r  r   r   r   r   h  r   z&test_non_cpu_array.<locals>.<listcomp>)TTFFTr'  )3r)   r   ContextrY   rZ   r   r   r  buffer_from_datar   r,   r  r   r  rR   device_typeDeviceAllocationTypeCUDAis_cpur   rM   r   r   r*   r|  
__dlpack____dlpack_device__r   r  r   r/  r   r5  r   r:  r   r  r  iterr<  is_nanr$   	fill_nulltake	drop_nullfilterindexr  r  rQ   r   )	cudactxrU   validitycuda_data_bufcuda_validity_bufr   r   r  r   r   r   test_non_cpu_array4  s   




















$r  r  )collections.abcr   r   r  
hypothesishhypothesis.strategies
strategiesstrW  r)   r  r   r	   r   numpyrY   ImportErrorpyarrowr   pyarrow.tests.strategiestestspastpyarrow.vendored.versionr   mark	processesr   r!   r(   r-   r3   r8   r<   r?   rB   rE   rO   r_   rk   rt   rw   parametrizer   r   r   r  r   nopandasr   r   r   r   r   r   r   r   r   r   r   r   r   r
  r  r  r  r  r%  r+  r   r   	list_viewlarge_list_viewr2  r3  rD  rE  rJ  rN  rX  r[  rc  rd  r  LargeListArrayrx  rz  r~  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r&  r,  r.  r1  r7  r>  rA  rF  rJ  rL  rN  rR  rW  rX  r]  r^  rg  ri  rp  r;   rF   rw  r  r   r   r  r  pickle_test_parametrizer}  r~  settingsHealthChecktoo_slowgivenrC  	all_typesintegersr  r  r  r  r  r  r  r  r  r  r  r   r  r  r  r  r   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r	  r  r  r  r"  r#  r   r)  r-  r0  r5  r8  r:  r;  r>  rD  rS  rU  r[  r^  rc  slowlarge_memoryrp  rt  rx  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>   s6  






&
7
)
!		


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

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

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

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

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