
    g8"                    )   d dl mZ d dlZd dlZd dlZd dlmZ d dl	Z	d dl
Z
d dlZd dlZd dlZd dlZ	 d dlZd dlZd dlmc mZ d dlmZ e
j2                  j4                  d        Zd Zd Zd Zd Zd	 Z d
 Z!d Z"d Z#d Z$d Z%e
j2                  j                  d        Z&e
j2                  j                  d        Z'e
j2                  j                  d        Z(e
j2                  j                  d        Z)e
j2                  j                  e
j2                  jU                  dg d      e
j2                  jU                  dddg      d                      Z+e
j2                  j                  e
j2                  jU                  dg d      d               Z,e
j2                  j                  d        Z-e
j2                  j\                  d        Z/e
j2                  j`                  e
j2                  j\                  d               Z1e
j2                  jU                  dd ejd                          ejf                          ejh                         g      d        Z5d Z6d Z7d  Z8e
j2                  j                  d!        Z9d" Z:e
j2                  j                  d#        Z;d$ Z<d% Z=d& Z>e
j2                  j                  d'        Z?e
j2                  j                  d(        Z@d) ZAe
j2                  j                  d*        ZBd+ ZCe
j2                  jU                  d,ej                  ej                  ej                  ej                  g      d-        ZHd. ZId/ ZJd0 ZKe
j2                  jU                  d1d2      d3        ZLe
j2                  j                  d4        ZMe
j2                  j                  d5        ZNe
j2                  j                  d6        ZOd7 ZPd8 ZQe
j2                  j                  e
j2                  jU                  d9ej                  ej                  fej                  ej                  fg      d:               ZTe
j2                  jU                  d9ej                  ej                  fej                  ej                  ff      e
j2                  jU                  d;dd ggdd dgd ggd gd<ggf      d=               ZUe
j2                  jU                  d9ej                  ej                  fej                  ej                  ff      d>        ZVd? ZWd@ ZXdA ZYe
j2                  j                  dB        ZZdC Z[dD Z\dE Z]dF Z^dG Z_dH Z`dIdIdJdKZae
j2                  j                  dL        ZbdM ZcdN ZddO ZedP ZfdQ ZgdR Zhe
j2                  j                  dS        Zie
j2                  j                  dT        Zje
j2                  j                  dU        ZkdV Zle
j2                  j                  dW        ZmdX ZndY Zoe
j2                  j                  dZ        Zpe
j2                  j                  d[        Zqd\ Zrd] Zsd^ Ztd_ Zud` Zvda Zwdb Zxdc Zydd Zzde Z{df Z|e
j2                  j                  dg        Z}e
j2                  j                  dh        Z~e
j2                  j                  di        Zdj Ze
j2                  j                  dk        Ze
j2                  j                  dl        Ze
j2                  j                  dm        Zdn Ze
j2                  jU                  dodpg dqfdr ed ds      fdt ed du      fdv ed dw      fdx ed dw      fdy ed dw      fdz ed dw      fd{ ed dw      fd| ed dw      fd}g d~fdg d~fdg dfdg df ej                  d      g dfg      d        Ze
j2                  jU                  dg d ej                         fg d ej                         fg d ej                         fg d ejh                         fg dfd<dgdgg ej                   ej                               fddgdgg ej                   ej                               fdgdddgg ej                   ejh                               fd<dgdgg ej                   ej                               fddgdgg ej                   ej                               fdgdddgg ej                   ejh                               fg d ej                   ej                  d ej                                ej                  d ejh                               g      fg      Zed        Zd Ze
j2                  j                   ej                   ej"                  j$                  f       ej&                   ej(                  ej*                   ej,                  d dw                  d                      Zed        Ze
j2                  j                  d        Ze
j2                  j                  d        Ze
j2                  j                  d        Zd Ze
j2                  j                  d        Ze
j2                  j                  d        Ze
j2                  j\                  d        Ze
j2                  j                  d        Zd Ze
j2                  j                  e
j2                  jU                  dd ejD                  d      fd ejD                  d      fd ejD                  d      fd ejD                  d      fg      d               Ze
j2                  j                  d        Ze
j2                  j                  e
j2                  jU                  dg d      d               Ze
j2                  j                  d        Ze
j2                  j                  e
j2                  jU                  dd ejN                  d      fd ejN                  d      fd ejN                  d      fd ejN                  d      fg      d               Ze
j2                  j                  d        Ze
j2                  j                  d        Zd Ze
j2                  j\                  d        Zd Ze
j2                  j\                  d        Ze
j2                  j                  d        Ze
j2                  j                  d        Ze
j2                  j                  d        Ze
j2                  j                  d        Ze
j2                  j                  d        Ze
j2                  j                  d        Ze
j2                  j                  dÄ        Ze
j2                  j                  dĄ        Zdń Ze
j2                  j                  dƄ        ZdǄ Ze
j2                  j                  dȄ        ZdɄ Zdʄ Zd˄ Ze
j2                  jU                  d ej|                         ej                  f ej                         ej                  fg      d̈́        Ze
j2                  jU                  d ej                   ej|                                ej                   ej|                         dϫ       ej                   ej|                               g      dЄ        Ze
j2                  jU                  d ej|                          ej                   ej|                               f ej|                          ej                   ej|                         dϫ      f ej                          ej                   ej|                               f ej|                          ej                   ej|                               f ej                          ej                   ej|                               fg      d҄        Ze
j2                  jU                  d,ej                  ej                  g      dӄ        Ze
j2                  jU                  dej                  ej                  g      dՄ        Zdք Zdׄ Zd؄ Zdل Zdڄ Zdۄ Zd܄ Zd݄ Ze
j2                  j                  dބ        Ze
j2                  j                  e
j2                  j                  e
j2                  j                  d߄                      Ze
j2                  j                  d        Ze
j2                  j                  d        Ze
j2                  j                  d        Ze
j2                  j                  d        Ze
j2                  j\                  d        Ze
j2                  j                  d        Ze
j2                  j                  d        Ze
j2                  j                  d        Zd Ze
j2                  j                  d        Ze
j2                  j                  d        Z G d d      Z G d d      Ze
j2                  jU                  deeg      d        Zd Zd Zd Zd Ze
j2                  j\                  d        Ze
j2                  j\                  d        Zd Zd Zd Zd ZddZd Zd Zd Ze
j2                  j                  d        Ze
j2                  j                  d         Ze
j2                  j\                  d        Ze
j2                  jU                  d9ej                  ej                  fej                  ej                  fg      d        Ze
j2                  jU                  d9ej                  ej                  fej                  ej                  fg      d        Ze
j2                  jU                  dej                  ej                   ej|                         fej                  ej                   ej                         fg      d        Ze
j2                  jU                  dej                  ej                  g      d        Ze
j2                  j                  e
j2                  jU                  dg d	      d
               Zd Zy# e$ r dZY Rw xY w(      )IterableN)Versionc                  N   d} t        j                  t        j                  d| gdt         j                        }|j
                  dk7  r5t        |j                  t        j                         |j                          t        |j                  j                               dk(  sJ y )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ress     M/var/www/openai/venv/lib/python3.12/site-packages/pyarrow/tests/test_array.pytest_total_bytes_allocatedr   (   sz    D
 ..#..$5,0JC
~~cjjszz*szz$$&'1,,,    c                      t        j                  g d      } t        j                  |       } |       J ~  |       J y N         )paarrayweakrefref)arrwrs     r   test_weakrefr$   7   s;    
((9
C	S	B44<<r   c                      t        j                  g d      } | d   j                         J | d   j                  du sJ t	        | d   t         j
                        sJ y )Nr   Nr   r   F)r   r   as_pyis_valid
isinstanceInt64Scalarr"   s    r   test_getitem_NULLr,   ?   sT    
((<
 Cq6<<>!!!q6??e###c!fbnn---r   c                      t        j                  t              5  t        j                  ddg       d d d        y # 1 sw Y   y xY w)Nr   r   )pytestraises	TypeErrorr   Array r   r   test_constructor_raisesr3   F   s,     
y	!
!Q 
"	!	!s	   ;Ac                  l    t        j                  dgd g dg      } | j                         }d}||k(  sJ y )Nr   )r   r   Nz9[
  [
    1
  ],
  null,
  [
    2,
    3,
    null
  ]
]r   r   	to_stringr"   resultexpecteds      r   test_list_formatr:   M   s;    
((QC|,
-C]]_FH Xr   c                  d    t        j                  g d      } | j                         }d}||k(  sJ y )N Nfooz[
  "",
  null,
  "foo"
]r5   r7   s      r   test_string_formatr?   _   s3    
(($
%C]]_FH Xr   c                  v    t        j                  t        d            } | j                  d      }d}||k(  sJ y )Nd   r   )windowz[
  0,
  1,
  ...
  98,
  99
])r   r   ranger6   r7   s      r   test_long_array_formatrD   k   s;    
((5:
C]]!]$FH Xr   c                  h    t        j                  g d      } | j                  d      }d}||k(  sJ y )Nr<   r   )indentz[
 "",
 null,
 "foo"
]r5   r7   s      r   test_indented_string_formatrG   y   s4    
(($
%C]]!]$F+HXr   c                  h    t        j                  g d      } | j                  d      }d}||k(  sJ y )Nr<   r   )top_level_indentz [
   "",
   null,
   "foo"
 ]r5   r7   s      r   %test_top_level_indented_string_formatrJ      s4    
(($
%C]]A].F3HXr   c                  d    t        j                  g d      } | j                         }d}||k(  sJ y )N)    r   Ns   foos   z([
  00,
  ,
  null,
  01666F6F,
  80FF
]r5   r7   s      r   test_binary_formatrM      s3    
((@
AC]]_FH Xr   c                  0   t        j                  g dd      } t        j                  g dd      }| j                  dk(  sJ | j                  dd      j                  dk(  sJ |j                  dk(  sJ |j                  dd      j                  dk(  sJ y )	N)s   0000Ns   11111s   222222s   3333333binarytypelarge_binary   r   r      )r   r   total_values_lengthslice)r"   	large_arrs     r   test_binary_total_values_lengthrX      s    
((C "CI,.I ""b(((99Q?.."444((B...??1a 44:::r   c                     t        j                  t        d            } | j                         }| j	                         d   }|j
                  |j                  j                  k(  sJ d } dd l}|j                          |j                  J t        j                  d      }t        j                  j                  ||       y )N
   r   r   )r   r   rC   to_numpybuffersaddressctypesdatagccollectbasenparangetestingassert_array_equal)r"   np_arr	arrow_bufr`   r9   s        r   test_to_numpy_zero_copyri      s    
((59
C\\^F a I 2 2222
CJJL ;;"""yy}HJJ!!&(3r   c                  .   g dg dg} t        j                  |       }d}t        j                  t        |      5  |j                  d       d d d        |j                         }g d}t        j                  j                  ||       y # 1 sw Y   >xY w)N)r   r      )rk      rA   z>zero_copy_only must be False for pyarrow.ChunkedArray.to_numpymatchTzero_copy_only)r   r   rk   rk   rl   rA   )	r   chunked_arrayr.   r/   
ValueErrorr[   rc   re   rf   )elementschunked_arrmsgrg   r9   s        r   %test_chunked_array_to_numpy_zero_copyrv      sw    ;'H""8,K
JC	z	-D1 
. !!#F#HJJ!!&(3 
.	-s   BBc                  8   t        j                  g d      } t        j                  t              5  | j                          d d d        | j                  d      }t        j                  g d      }t        j                  j                  ||       t        j                  g d      }t        j                  t              5  |j                          d d d        |j                  d      }t        j                  g dt              }t        j                  j                  ||       t        j                  g d      }t        j                  t        d      5  |j                          d d d        y # 1 sw Y   7xY w# 1 sw Y   xY w# 1 sw Y   y xY w)	NTFTFro   NNNdtyper   r   Nzwith 1 nullsrm   )
r   r   r.   r/   rr   r[   rc   re   rf   object)bool_arrr8   r9   null_arrr"   s        r   test_to_numpy_unsupported_typesr      s    xx+,H	z	" 
# e4Fxx+,HJJ!!&(3xx*+H	z	" 
# e4Fxx*&9HJJ!!&(3
((<
 C	z	8 
9	8% 
#	" 
#	" 
9	8s#   E7FF7FFFc                     t        j                  t        d            } | j                         }t	        j
                  t              5  d|d<   d d d        | j                  dd      }d|d<   | d   j                         dk(  sJ t	        j
                  t              5  | j                  dd       d d d        y # 1 sw Y   oxY w# 1 sw Y   y xY w)NrZ   r   FT)rp   writable)r   r   rC   r[   r.   r/   rr   r'   )r"   rg   np_arr2s      r   test_to_numpy_writabler      s    
((59
C\\^F 
z	"q	 
# ll%$l?GGAJq6<<>Q 
z	"D48 
#	" 
#	" 
#	"s   B<C<CCunit)smsusnstzUTCc                    t        j                  g dt        j                  | |            }t        j                  g ddj	                  |             }|j                         }t        j                  j                  ||       y )Nr   r   zdatetime64[{}]rz   )r   r   	timestamprc   formatr[   re   rf   )r   r   r"   r9   rg   s        r   test_to_numpy_datetime64r      sZ     ((9bll4B7
8Cxx	)9)@)@)FGH\\^FJJ!!&(3r   c                 
   t        j                  g dt        j                  |             }t        j                  g ddj	                  |             }|j                         }t        j                  j                  ||       y )Nr   ztimedelta64[{}]rz   )r   r   durationrc   r   r[   re   rf   )r   r"   r9   rg   s       r   test_to_numpy_timedelta64r      sX     ((9bkk$/
0Cxx	):)A)A$)GHH\\^FJJ!!&(3r   c                      t        j                  g d      j                         } t        j                  g dt              }| j                  d      }t        j                  j                  ||       y )N)abr   rz   Fro   )r   r   dictionary_encoderc   r}   r[   re   rf   )r"   r9   rg   s      r   test_to_numpy_dictionaryr     sO     ((?
#
5
5
7Cxxv6H\\\/FJJ!!&(3r   c                     dd l } t        j                  t        d            }t        d      D ].  }|j	                         }t        j                  |      dk(  sJ d }0 t        j                  |      dk(  sJ t        d      D ]  }t        j                  t        d            }|j	                         }d }| j                          t        j                  |j                  j                        }|dk(  sJ |j                           y )Nr   rZ   r   )r`   r   r   rC   	to_pandasr   getrefcountra   valuesrb   sum)r`   r"   iseriesbase_refcounts        r   test_to_pandas_zero_copyr     s    
((59
C2Yv&!+++ 
 ??31$$$2YhhuRy!


 (:(:;!!!

 r   c                     t        j                  t        d            } t        j                  | D cg c]  }| c}      }|j                         g dk(  sJ |j                  t        j                  d      k(  sJ t        |d   t         j                  j                        sJ t        j                  |       }|j                         g dk(  sJ |j                  t        j                  d      k(  sJ t        j                  | d      }|j                         g dk(  sJ t        j                  g d	      } | j                  t        j                         k(  sJ t        j                  |       }|j                         }|d d
 g dk(  sJ t        j                  |d
         sJ |j                  t        j                  d      k(  sJ t         j                  j                  t        j                  g d      t        j                  g d            } t        j                  |       }|j                  t        j                  d      k(  sJ |j                         g dk(  sJ y c c}w )Nrk   r   r   r   r   Or   int64strrz   )0123)r   r   r   Nr   )              ?       @float64r   r   r   r   r   r   r   cr}   )r   r   r   r   r   )r   r   rC   rc   asarraytolistr{   r)   lib
Int64ValuerQ   r   isnanDictionaryArrayfrom_arrays)r"   _rg   rs   s       r   test_asarrayr   ,  s   
 ((58
C ZZC(CqC()F==?l***<<288C=(((fQi!2!2333 ZZ_F==?l***<<288G,,,, ZZ5)F==?2222 ((?
#C88rxxz!!!ZZ_F}}HBQ<<'''88HQK   <<288I.... 


(
(
!288O#<>CZZ_F<<288H----==?7777; )s   	I(tyc                    t        j                  d|       }t        j                  g d|       }t        |      dk(  sJ |j	                  |      sJ | $|j
                  t        j                         k(  sJ y |j
                  | k(  sJ y )Nr   rP   ry   )r   nullsr   r   equalsrQ   nullr   r"   r9   s      r   
test_nullsr   T  st     ((12
Cxx*4Hs8q==::h	zxx2779$$$xx2~~r   c                     t        j                  d      } t        j                  j	                         }t        j                  j                         }|j                  | j                        }|j                  | j                  d            }t        j                  d      }d dt        j                  d g      fd dt        j                  d      fddt        j                  g d	t        j                         
      fddt        j                  ddgt        j                         
      fddt        j                  dgdz        ft        j                   dt        j"                         
      dt        j                  dgdz  t        j"                         
      ft        j                   d       dt        j                  g d      ft        j                   d      dt        j                  dgdz        f|dt        j                  |gdz        f|dt        j                  |gdz        f|dt        j                  |gdz  t        j$                  d| j                  d            
      f|j'                         dt        j                  |j'                         gdz        f|dt        j                  |gdz        fddt        j                  dgdz        fddgdt        j                  ddgddgg      ft        j                   ddgt        j(                  t        j*                               
      dt        j                  ddggdz  t        j(                  t        j*                               
      fddddt        j                  dddgdz        fg}|D ]  \  }}}	t        j,                  ||      }
t/        |
      |k(  sJ |
j0                  j3                  |	j0                        sJ |
j3                  |	      sJ |	j0                  t        j4                         k(  r|
j6                  |k(  rJ |
j6                  dk(  rJ  y )Npytz)tzinfoz
US/Easternr   )daysrZ   r   )r   r   r   rP   gGz@r   stringrk         ry   TrT   r   r   	   Frl   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   rQ   r   r   
null_count)r   r   r   now_utcnow_with_tzonedaycasesvaluesizer9   r"   s              r   test_array_from_scalarr   g  sd   v&DMM!E





!Ckkk*G$$T]]<%@AKQ'F 
q"((D6"#	r288B< 	QBHHJ78	q"((D$<bjjl;<	1bhhzA~./IIabhhj)HHaS2XBHHJ/	

 
4!RXX&89:	4"bhhv{34	288UGaK()	b"((C52:&'HH	A\\$4==+FG	
 
Q#((*!123	BHHfX\*+	288UGaK()
QBHHq!fq!f-./IIr1gBMM"'')$<=HHr1gY]rwwy)AB	

 q	1bhhaa(8'9A'=>?A!EF "'tXiit$3x4xxx}}---zz(###==BGGI%>>T)))>>Q&&& "'r   c                     g d} t         j                  j                  g d|       }t        j                  |d   d      }t         j                  j                  dgdz  |       }|j	                  |      sJ t        j                  |d   d      }t         j                  j                  dgdz  |       }|j	                  |      sJ y )Nr>   barbaz)r   r   r   r   )
dictionaryr   rl   r   r   )r   r   r   r   r   )r   r"   r8   r9   s       r   !test_array_from_dictionary_scalarr     s    &J



(
(*
(
MCYYs1vq!F!!--qcAg*-MH=="""YYs1vq!F!!--qcAg*-MH=="""r   c                  F   t        j                  t        dd            } | j                         }t        t	        |        t	        |             D ]  }| |   j                         ||   k(  rJ  t        dt	        |       z  t	        |              D ])  }t        j                  t              5  | |    d d d        + t        t	        |       dt	        |       z        D ])  }t        j                  t              5  | |    d d d        + y # 1 sw Y   xY w# 1 sw Y   BxY w)NrZ      r   )	r   r   rC   	to_pylistr   r'   r.   r/   
IndexErrorr"   lstidxs      r   test_array_getitemr     s    
((5R=
!C
--/Cc#hYC)3x~~3s8+++ *R#c(]SXI.]]:&H '& / SXq3s8|,]]:&H '& - '& '&s   -D:DD	D 	c                     t        j                  t        dd            } | j                         }t        t	        |        t	        |             D ]0  }| t        j                  |         j                         ||   k(  r0J  y )NrZ   r   )r   r   rC   r   r   rc   int32r'   r   s      r    test_array_getitem_numpy_scalarsr     sd    
((5R=
!C
--/Cc#hYC)288C=!'')SX555 *r   c                     t        j                  t        d            } | j                  d      }t        j                  t        dd            }|j	                  |      sJ | j                  dd      }t        j                  t        dd            }|j	                  |      sJ | j                  d      j	                  |       sJ t        | j                  t        |                   dk(  sJ t        | j                  t        |       dz               dk(  sJ t        | j                  t        |       dz   d            dk(  sJ t        j                  t              5  | j                  d       d d d        t        j                  t              5  | j                  dd       d d d        | dd  j	                  | j                  d            sJ | dd j	                  | j                  dd	            sJ | d
d  j	                  | j                  t        |       dz
              sJ t        |       }t        | dz  |dz        D ]  }t        | dz  |dz        D ]i  }| || }|j                          | j                         || }|j                         |k(  sJ t        G|j                         j                         |k(  riJ   y # 1 sw Y   ]xY w# 1 sw Y   6xY w)NrZ   r   rk      r   rA   r   rl   r   )r   r   rC   rV   r   r   r.   r/   r   rr   validater   rc   r[   r   )	r"   slicedr9   sliced2	expected2nstartstopr   s	            r   test_array_slicer     s]   
((59
CYYq\Fxxa%H=="""ii1oGq!%I>>)$$$ 99Q<s### syyS"#q(((syySA&'1,,,syySAs+,111	z	"		" 
# 
z	"		!R 
# qr7>>#))A,'''q8??399Q?+++rs8??399SX\2333CArAvq1u%1"q&!a%(DeD/CLLN}}uT2H==?h...~||~,,.(::: ) & 
#	" 
#	"s    KKKK$c                     t        j                  d      } t        j                  |       }t        j                  |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 ]  }||   }t        j                  | |         }|j                  |      sJ t        j                  |gdg      |   }t        j                  |gdg      }|j                  |      sJ ||   }t        j                  | |   g      }|j                  |      rJ  y )N   r   r   r   rZ   r   r   r   r   iif0names)rc   rd   r   r   rq   rV   r   record_batch)rg   r"   rt   r   caser8   r9   s          r   test_array_slice_negative_stepr    s[    YYr]F
((6
C""C5)K 	dD"dArb!RaraRb!RdD!aQb#rc3E T88F4L)}}X&&&#tf5d;??H:dV<}}X&&&T"##VD\N3}}X&&& r   c                     t        j                  dgt        j                               } t        j                  g dt        j                               }t        j                  g d      }t        j                  g dgd gt        j                  t        j                                     }| j                  |       dk(  sJ | j                  |      dk(  sJ | j                  |      j                         dk(  sJ | j                  |      j                         dk(  sJ | j                  |      j                         d	k(  sJ y )
Nr>   rP   r>   r   Nr   r   r=   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arr4s       r   test_array_diffr    s   88UG"''),D88(rwwy9D88ID88R!dO"((288:*>?D99T?b   99T?    
 99T?  "&OOOO99T?  "&OOOO99T?  " (; < < <r   c                      t        j                  t        d            } t        t        d      |       D ]  \  }}||j	                         k(  rJ  t        | t              sJ y )NrZ   )r   r   rC   zipr'   r)   r   )r"   r   js      r   test_array_iterr     sQ    
((59
CE"Is#1AGGI~~ $ c8$$$r   c                  <   t        j                  t        j                  dt        j                               t        j                  dt        j                               g      } t        j
                  g d|       }|dd  j                         dddd	d
dgk(  sJ y )Nr   r   r         @r         @)rl         @rP   r   r   r  r   rl   r  )r   structfieldr   float32r   r   )r   r"   s     r   test_struct_array_slicer"  )  s    	BHHS"''),HHS"**,/1 
2B
((1
;Cqr7#5)*#5#7 7 7 7r   c                       G d d      } t        j                   |        g      }t        j                  t              5  t        j                  |       d d d        y # 1 sw Y   y xY w)Nc                       e Zd Zy)1test_array_factory_invalid_type.<locals>.MyObjectN)__name__
__module____qualname__r2   r   r   MyObjectr%  5  s    r   r)  rc   r   r.   r/   rr   r   )r)  r"   s     r   test_array_factory_invalid_typer+  2  sC      ((HJ<
 C	z	"
 
#	"	"s   AA'c                      t        j                  g d      } t        j                  |       }t	        j                  |       }t        j                  |       |dz   k(  sJ y )Nr   r   )rc   r   r   r   r   )r"   refcountr  s      r   test_array_ref_to_ndarray_baser.  =  sF    
((9
Cs#H88C=D??3HqL111r   c                  r   t        j                  g dt        j                               } t        j                  g dt        j                               }t        j                  g dt        j                               }| |k(  du sJ | |k7  du sJ | |k(  du sJ | |k7  du sJ | dk(  du sJ | d k(  du sJ y )Nr   rP   TFr   )r   r   r   r   )r  r  r  s      r   test_array_eqr0  F  s     88IBHHJ/D88IBHHJ/D88IBHHJ/DDLT!!!DLU"""DLU"""DLT!!!AI%DLU"""r   c                     t        j                  t        j                  g d            } t        j                  t        j                  dg            }t         j
                  j                  t        j                         d|| g      }|j                  t        j                         k(  sJ |j                         g dk(  sJ t         j
                  j                  t        j                         dd | g      }|j                  t        j                         k(  sJ |j                         g dk(  sJ t         j
                  j                  t        j                         d|| gd      }|j                  t        j                         k(  sJ |j                         g dk(  sJ t        j                  t              5  t         j
                  j                  t        j                         dd	d	gd       d d d        y # 1 sw Y   y xY w)
Nrk   rl   r         rk   )rk   Nr   r3  r   r   offset)Nr   r3  r=   )r   	py_bufferrc   int16r   r1   from_buffersrQ   r   r.   r/   r0   )
values_buf	nulls_bufr"   s      r   test_array_from_buffersr<  V  sf   bhh|45JRXXzl34I
((


A	:/F
GC88rxxz!!!==?o---
((


Aj/A
BC88rxxz!!!==?l***
((


A	:/F'(   *C88rxxz!!!==?l***	y	!
bhhj!b"Xa@ 
"	!	!s   <8G==Hc                     t        j                  g d      } | j                         }t         j                  j	                  t        |       |d   |d   |d   | j                  | j                        }|j                         g dk(  sJ t         j                  j	                  t        j                         t        |       | j                         | j                  | j                        }|j                         g dk(  sJ t         j                  j	                  t        |       |d   |d   |d         }|j                         g dk(  sJ | dd  }|j                         }t         j                  j	                  t        |      |d   |d   |d   d|j                        }|j                         g dk(  sJ |j                  dk(  sJ | dd  }|j                         }t         j                  j	                  t        |      |d   |d   d d|j                        }|j                         dd	gk(  sJ |j                  dk(  sJ y )
N)r   Nr   r   r   r   r   )   aN   b   cr   )Nr   r   r   r   )r   r   r\   StringArrayr9  r   r   r6  r   r1   rO   )r   r\   copiedbinary_copyr   s        r   test_string_binary_from_buffersrD  k  s   HH*+EmmoG^^((E
GAJ
GAJ8H8HF !6666((''		SZ(-9I9I(-6K   "&>>>>^^((E
GAJ
GAJ8F!666612YFnnG^^((FWQZWQZV]]LF!1111!!! 12YFnnG^^((FWQZT2v}}FF#s+++!!!r   list_type_factoryc                 8    | t        j                               }t        j                  g dd g g dg|      }|j                  |k(  sJ |j	                         }t        j                  t              5  t         j                  j                  |d|d |j                          d d d        t         j                  j                  t        j                         d||j                  d        }t         j                  j                  |d|d |j                   |g      }|j                  |      sJ t        j                  t              5  t         j                  j                  |d|d |j                   ||g       d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)Nr   r   r   )r   rk   rl   rP   rk   r   children)r   r8  r   rQ   r\   r.   r/   rr   r1   r9  num_buffersr   )rE  r   r   r\   childrB  s         r   test_list_from_buffersrL    s8    
288:	&BHHir95B?E::mmoG	z	"
b!W_bnn%=> 
# HH!!"((*a1IJEXX""2q'/2>>*BeW"UF==	z	"
b!W_bnn%=(-u~ 	 	7 
#	" 
#	" 
#	"s   4/F3FFFc            	         t        j                  t        j                  dt        j                               t        j                  dt        j                               g      } t        j
                  dddd dddg|       }|j                         }t        j                  t              5  t         j                  j                  | d	d |d
   g       d d d        t         j                  j                  t        j                         d	|d
d	       t         j                  j                  t        j                         d	|d	d        g}t         j                  j                  | d	|d d
 |      }|j                  |      sJ t        j                  t              5  t         j                  j                  | d	|d   g|d d
        d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)Nr   r   r   r>   r   rl   r=   rP   r   r   rH  )r   r  r   r8  r  r   r\   r.   r/   rr   r1   r9  r   )r   r   r\   rI  rB  s        r   test_struct_from_buffersrN    sk   	BHHS"((*-rxxRWWY/GH	IBHHAE*D2CDEmmoG	z	"
b!dGAJ%78 
# %%bhhj!WQq\B%%bggiGABK@BHXX""2q'"1+"IF==	z	"
b!gaj\'/| 	 	5 
#	" 
#	" 
#	"s   -'G+GGG#c            	         t        j                  g dt        j                               } t        j                  g d      }t        j                  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                  j	                  | ||gg d	      }|j
                  t        j                  d| j
                  fd|j
                  fd|j
                  fg      k(  sJ |j                         |k(  sJ t        j                  t              5  t         j                  j	                  | ||gddg       d d d        t         j                  j	                  g g       }|j
                  t        j                  g       k(  sJ |j                         g k(  sJ t        j                  d| j
                  d      }t        j                  d|j
                        }t        j                  d|j
                        }t         j                  j	                  | ||g|||g      }|j
                  t        j                  |||g      k(  sJ |j
                  d   j                  rJ |j                         |k(  sJ t        j                  |||g      }t         j                  j	                  | ||g|      }|j
                  t        j                  |||g      k(  sJ |j
                  d   j                  rJ |j                         |k(  sJ t        j                  t              5  t         j                  j	                  | ||g||g       d d d        t         j                  j	                  g g       }|j
                  t        j                  g       k(  sJ |j                         g k(  sJ t        j                  dt        j                               }	t        j                  t        d      5  t         j                  j	                  | ||g|	||g       d d d        | ||g}
|||g}t        j                  g d      }t         j                  j	                  |
||      }|j                         d g|dd  z   k(  sJ t         j                  j	                  |
g d	|      }|j                         d g|dd  z   k(  sJ t        j                  t        d      5  t         j                  j	                  |
|g d       d d d        t        j                  t        d      5  t         j                  j	                  |
|t        j                  g d             d d d        t        j                  t        d      5  t         j                  j	                  |
|t        j                  |g             d d d        t         j                  j	                  g g |      }|j!                         |k(  sJ |j                         d i i gk(  sJ y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   6xY w# 1 sw Y   xY w# 1 sw Y   xY w)Nrk   rl   r   rP   )r   Nr=   r   r   r   rk   r   r   rl   r   r=   r   r   r   Fnullable)fieldsr   zint64 vs int32rm   )TFF)rS  maskr  rT  zMask must berT  znot contain nulls)TFN)r   r   r   StructArrayr   rQ   r  r   r.   r/   rr   r   rR  r   r0   rq   is_null)r   r   r   expected_listr"   fafbfc
structtypefa2arraysrS  rT  s                r   test_struct_from_arraysr`    s(   
,A
"#A
1a&$D	*+Ae1a&)d&b4y)M ..
$
$aAY
@C88ryy
qvvaffQVV}57 7 7 7==?m+++	z	"
""Aq!9sCj9 
# ..
$
$R
,C88ryy}$$$==?b    
#qvv	.B	#qvv	B	#qvv	B
..
$
$aAYB|
$
DC88ryy"b"....xx{####==?m+++ BB<(J
..
$
$aAYZ
$
@C88ryy"b"....xx{####==?m+++	z	"
""Aq!9b"X"> 
# ..
$
$R
$
3C88ryy}$$$==?b    ((3

#C	z)9	:
""Aq!9c2r]"C 
; AYF"b\F88()D
..
$
$VF
$
FC==?tf}QR'88888
..
$
$V?
$
NC==?tf}QR'88888 
y	7
""668L"M 
8 
z)<	=
""F*=!> 	# 	@ 
> 
y	7
""F!1!14&!9 	# 	; 
8
 ..
$
$R$
$
7C;;=D   ==?tRn,,,y 
#	". 
#	" 
;	: 
8	7 
>	= 
8	7sH   &X%'X1(X'%X4#8Y>7YXX$'X14X>Y
Yc                      t        j                  g dg dg      } t        j                  t        d      5  t         j
                  j                  | gdg       d d d        y # 1 sw Y   y xY w)Nr   rP  zExpected Arrayrm   r>   )r   rq   r.   r/   r0   rW  r   )rt   s    r   test_struct_array_from_chunkedrb  	  sL     ""Iy#9:K	y(8	9
""K=5': 
:	9	9s   #A##A,r6  )r   r   c                    t        j                  g d      j                         }t         j                  j	                  |j
                  t        |      | z
  |j                  j                         |j                  |       }|| d  |k(  sJ y )N)onetwothreere  rd  r5  )
r   r   r   r   r9  rQ   r   indicesr\   r   )r6  r   r   s      r   test_dictionary_from_buffersrh    sr    
67IIKA
''Av()		(9(9(;Q\\/5 	( 	7A VW:??r   c                  h   t        j                  g dd      } t        j                  g dt              }t        j                  g d      }t        j
                  j                  | |      }t        j
                  j                  | ||      }|j                  j                         | j                         k(  sJ |j                  j                         | j                         k(  sJ |j                  j                         |j                         k(  sJ |j                  j                         |j                         k(  sJ t        t        |             D ]Y  }||   j                         || |      k(  sJ ||   r||   j                         :J ||   j                         || |      k(  rYJ  y )NrG  r   r   rz   )FFTFFFrV  rc   r   r   r}   r   r   r   rg  r   r   r   rC   r   r'   )rg  r   rT  d1d2r   s         r   test_dictionary_from_numpyrm    se   ii	1%G/v>J88=>D				'	'	<B				'	'$	'	GB::!W^^%5555::!W^^%5555==""$
(9(9(;;;;==""$
(9(9(;;;;3w< !u{{}
71: 66667a5;;=(((a5;;=Jwqz$:::: !r   c                     t        j                  g d      j                  d      } t         j                  j	                  t        j                  g d      t        j                  ddg            }t
        j                  j                  |j                  d      |        t        j                  t         j                        5  |j                  d       d d d        t         j                  j	                  t        j                  g d      t        j                  ddg            }t        j                  g d	      j                  d      } t
        j                  j                  |j                  d      |        t        j                  t         j                        5  |j                  d       d d d        t         j                  j	                  t        j                  g d      t        j                  d
dg            }t        j                  g d      j                         } t
        j                  j                  |j                  d      |        t
        j                  j                  |j                  d      |        t         j                  j	                  t        j                  g d      t        j                  d
dg            }t        j                  g d      j                  d      } t
        j                  j                  |j                  d      | d       t         j                  j	                  t        j                  g d      t        j                  ddg            }t        j                  g d      j                  d      } t
        j                  j                  |j                  d      | d       y # 1 sw Y   xY w# 1 sw Y   -xY w)N)r>   r   Nr>   Fro   )r   r   Nr   r>   r   T)r   r   r   r   )r>   r   r   r>   ffffff+@      &@)ro  rp  rp  ro  )ro  rp  Nro  )	equal_nanr3  rT   )r3  rT   Nr3  )r   r   r[   r   r   rc   re   rf   r.   r/   ArrowInvalidassert_allclose)r9   r   anonullsafloatafloat2aintss         r   test_dictionary_to_numpyrx  3  s   xx#heh$  	&&
!
% 	A JJ!!!**E*"B"*, 
r	' 	


$
' 
( !!--

% H xx$heh$  JJ!!("3"35"3"I"*, 
r	'. 
( ++

$F xx01::<HJJ!!&///"F"*,JJ!!&///"G"*,   ,,
!
$G xx heh$  JJ.   **
!
!RE xx()22%2HHJJe,  i 
(	'$ 
(	's   O$O"O"O,c                  $   t        j                  g dd      } t        j                  g dt              }t	        j                  |       }t	        j                  |      }t        j
                  j                  ||      }|j                  j                         | j                         k(  sJ |j                  j                         |j                         k(  sJ t        t        |             D ]   }||   j                         || |      k(  r J  y )NrG  r   r   rz   rj  )rg  r   iarrdarrrk  r   s         r   !test_dictionary_from_boxed_arraysr|  z  s    ii	1%G/v>J88GD88JD				'	'd	3B::!W^^%5555==""$
(9(9(;;;;3w< !u{{}
71: 6666 !r   c                     t        j                  g d      } t        j                  g d      }t        j                  g d      }t        j                  g d      }t         j                  j                  | |       t	        j
                  t         j                        5  t         j                  j                  ||       d d d        t	        j
                  t         j                        5  t         j                  j                  ||       d d d        t         j                  j                  ||d       y # 1 sw Y   xxY w# 1 sw Y   8xY w)Nr   r   r   r   r   r   )r   r   r   r   r   Fsafe)r   r   r   r   r.   r/   ArrowException)indices1indices2indices3r   s       r   'test_dictionary_from_arrays_boundscheckr    s    xx*+Hxx
#Hxx%H/0J ""8Z8	r((	)
&&x< 
* 
r((	)
&&x< 
*
 ""8Ze"D 
*	) 
*	)s    !D8,!E8EEc                      t        j                  g d      } t        j                  g d      }t         j                  j                  | |      }|j                  j                  d       y )Nr~  r   Tfull)r   r   r   r   rg  r   )rg  r   r"   s      r   test_dictionary_indicesr    sM    hh)*G/0J



(
(*
=CKKd#r   )list_array_typerE  c                    t        j                  g dd      }t        j                  |d      }g d}t        j                  |d      }| j                  ||      }t        j                  |d d |dd	 |d	d
 g |t        j                                     }|j                  |      sJ  |t        j                  dt        j                                     }| j                  |||      }|j                  |k(  sJ |j                  j                  j                  dk(  sJ g d}g d}| j                  ||      }t        j                  |d d d |dd  g |t        j                                     }|j                  |      sJ g d}	| j                  |	|      }t        j                  |d d |dd  d g |t        j                                     }|j                  |      sJ g d}t        j                  d	      }t        j                  t              5  | j                  ||       d d d        g d}t        t        d            }| j                  ||      }t        j                  t              5  |j!                  d       d d d         |t        j                               }t        j                  t"              5  | j                  |||       d d d        y # 1 sw Y   xY w# 1 sw Y   fxY w# 1 sw Y   y xY w)Nr   r   rl   r   i4rz   r   rP   r>  r?  r@     d   e   f   g   hrO   r   rl   r   namer   Nr   r   r>  r?  r@  r  r  r  )r   r   Nr   )r   r   rZ   )r   r   r   r   r   Tr  )rc   r   r   r   rO   r   r   rQ   value_fieldr  rd   r.   r/   rr   listrC   r   r0   )
r  rE  offsets_arroffsetspyvaluesr   r8   r9   typoffsets2s
             r   test_list_from_arraysr    s   
 ((<t4Khh{1G?HXXhX.F((&9Fxx"1x!}hqmD.ryy{;=H ==""" BHHVRYY[9
:C((&#>F;;#;;""''6111 G1F((&9FxxT6!":6.ryy{;=H ==""" H((6:FxxVABZ6.ryy{;=H==""" GYYq\F	z	"##GV4 
# G%(^F((&9F	z	"T" 
# BIIK
(C	y	!##GV##> 
"	! 
#	" 
#	"
 
"	!s$   K%9K1K=%K.1K:=Lr"   r   c                     t        j                  | |t        j                                     }| j                  |j                  |j
                  |j                               }||k(  sJ y )NrV  )r   r   r   r   r  r   rX  )r  rE  r"   reconstructed_arrs       r   !test_list_array_types_from_arraysr    sZ     ((3)"'')4
5C'33SZZckkm 4 5####r   c                 v   t        j                  dgd dd gdgg |t        j                                     }t        j                  g d      }| j                  |j                  |j
                        }|j                         dgg dd gdggk(  sJ | j                  ||j
                        }||k(  sJ | j                  |j                  |j
                  |j                               }||k(  sJ t        j                  t        d      5  | j                  ||j
                  |j                                d d d        |dd  }d}t        j                  t        |      5  | j                  |j                  |j
                  |j                                d d d        y # 1 sw Y   kxY w# 1 sw Y   y xY w)Nr   )r   Nr   r   rk   rV  zAmbiguous to specify both rm   r   -Null bitmap with offsets slice not supported.)r   r   r   r   r  r   r   rX  r.   r/   rr   NotImplementedError)r  rE  r"   r  r  	arr_sliceru   s          r   &test_list_array_types_from_arrays_failr    s    ((QC4y1#.0A"'')0L
MChh)*G (33CKKL&&(aS"q$i!,EEEE (33GSZZH####'33CKK47JJ9< 4 H #### 
z)E	F##GSZZckkm#L 
G ABI
9C	*#	6##y//i6G6G6I 	$ 	K 
7	6 
G	F 
7	6s   -F##7F/#F,/F8c                     t        j                  t        j                         t        j                               } t        j                  ddig|       }|j	                  t        j                  t        j
                         t        j                                     }t        j                  t        j
                         t        j                               }t        j                  ddig|      }|j                  |      sJ y )Nr   r   rP   )r   map_r   r   castr   r   )tr"   r8   
t_expectedr9   s        r   test_map_castr    s    

BHHJ'A
((QF8!
$CXXbggbhhj"((*56FRXXZ0Jxx!Qz2H=="""r   c                     t        j                  t        j                  ddd      d      } t        j                  ddgdgg| 	      }|j                  j
                  t        j                  dt        j                         d      k(  sJ |j                  j                  t        j                  d
t        j                               k(  sJ t        |      dk(  sJ y )Nr  r   FrQ  r   r   r   r   r   r   r   rP   r   r   )
r   r  r   r   rQ   	key_fieldr  
item_fieldr   r   )r  r"   s     r   test_map_labelledr  $  s    
E:GDA
((Xx(8*5A
>C88&"'')e!LLLL88"((7BHHJ"????s8q==r   c                  z   t        j                  ddgdggt        j                  t        j                         t        j                                     } t        j                  dddddigt        j                  t        j                         t        j                                     }| j                  |      sJ y )	Nr  r  r  r   r   r   r   r   )r   r   r  r   r   r   )tup_arrdict_arrs     r   test_map_from_dictr  -  s    hh8,xj9wwryy{BHHJ79Gxxqq)C84		RXXZ8:H >>(###r   c                     t        j                  g dd      } t        j                  | d      }g d}t        t	        t        |                  }t        t        ||            }|d d |dd |dd	 g}t        j                  |d
      }t        j                  |d      }t        j                  j                  |||      }t        j                  |t        j                  t        j                         t        j                                     }	|j                  |	      sJ g d}g d}g d}t        t        ||            }|d d d |dd  g}t        j                  |d
      }t        j                  |d      }t        j                  j                  |||      }t        j                  |t        j                  t        j                         t        j                                     }	|j                  |	      sJ t        j                  j                  |||t        j                  |j                  |j                              }|j                  |	      sJ t        j                  t        j                   d      5  t        j                  j                  |||t        j"                                d d d        t        j                  t        j                   d      5  t        j                  j                  |||t        j                  |j                  t        j$                                      d d d        t        j                  j                  g d||t        j                  |j                  |j                        t        j                  g dt        j&                                     }|j(                  dk(  sJ |j                  |	      sJ t        j                  j                  g d||t        j                  g dt        j&                                     }|j                  |	      sJ g d}d d |dd  g}t        j                  j                  g d||t        j                  |j                  |j                        t        j                  g dt        j&                                     }t        j                  |t        j                  t        j                         t        j                                     }	|j(                  dk(  sJ |j                  |	      sJ d}
t        j                  t        j*                  |
      5  t        j                  j                  |||t        j                  |j                  |j                        t        j                  g dt        j&                                      d d d        d}t        j                  g dt        j                               }t        j                  t        j,                  |      5  t        j                  j                  |j/                  d      ||t        j                  |j                  |j                        t        j                  g dt        j&                                      d d d        g d}t        j0                  d      }t        j0                  d      }t        j                  j                  |||      }t        j                  t2              5  t        j                  j                  |dgz   ||       d d d        t        j                  t2              5  t        j                  j                  ||t        j4                  ||g             d d d        t        |      d d d gz   }t        |      t        |      k(  sJ t        j                  t2              5  t        j                  j                  |||       d d d        t        j                  |t        j                               }t        j                  j                  |j/                  d      ||      }t        j                  j                  g d||      }	|j                  |	      sJ |j6                  dk(  sJ |	j6                  dk(  sJ t        j                  g dt        j                               }t        j                  j                  |j/                  d      t        j                  g t        j"                               t        j                  g t        j"                                     }t        j                  j                  g dt        j                  g t        j"                               t        j                  g t        j"                                     }	|j                  |	      sJ |j6                  dk(  sJ |	j6                  dk(  sJ y # 1 sw Y   VxY w# 1 sw Y   xY w# 1 sw Y   YxY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   SxY w) Nr  r  rz   r   rP   r  r   rl   r   rO   r  r  )r   r   r   Nrk   rl   zExpected map type, got stringrm   zMismatching map items typer   r   r   r   FTFrV  r   )r   NNr   )TTFz=Ambiguous to specify both validity map and offsets with nullsr  )r   r   r   rl   r   r   r   r   rl   r   )r   r   r   r   r   r   )r   r   r   r   r   )rc   r   r   r  rC   r   r  MapArrayr   r  rO   r   r   rQ   r.   r/   ArrowTypeErrorr   r   bool_r   rr  ArrowNotImplementedErrorrV   rd   rr   concatenater6  )r  r  pykeyspyitemspypairs	pyentrieskeysitemsr8   r9   msg1msg2r   keys_with_nulls                 r   test_map_from_arraysr  7  sj   ((<t4Khh{1G=F5V%&G3vw'(G!galGAaL9I88F*DHHW4(E[[$$WdE:Fxx			RXXZ(HIH==""" G1F#G3vw'(G!dGABK0I88F*DHHW4(E[[$$WdE:Fxx			RXXZ(HIH==""" [[$$WdE277		

< F ==""" 
r((0O	P
ubiikB 
Q 
r((0L	M
ubggIIHHJ7
 	 
N [[$$\4		

A XX*< % F
 !!!==""" [[$$\4*,((3G8:
+D % 'F ==""" !GtWQR[)I[[$$\4		

A XX)
; % F
 xx			RXXZ(HIH!!!==""" KD	rd	3
ubggIIJJ7 .RXXZ@ 	  	
 
4 ;Dhh|RXXZ0G	r22$	?
a 0$rwwIIJJ@ .RXXZ@ 	  	
 
@ G99Q<DIIaLE
u5A 
z	"
1#tU; 
# 
z	"
r~~uen/MN 
# $Z_v-N~#e*,,,	z	"
? 
# hhw
+G[[$$W]]1%5tUCF{{&&y$>H=="""==A??ahh)288:6G[[$$a
RYY[!
RYY[!F
 {{&&
RYY[!
RYY[!H
 =="""==A??aI 
Q	P 
N	ML 
4	3 
@	? 
#	" 
#	" 
#	"sW   5h'AhA6h(*Bh5&i&7i)"ihh%(h25h?iii&c                  	   t        j                  t        d      t        j                               } t         j                  j                  | d      }|j                         g dg dg dgk(  sJ |j                  j                  t        j                  t        j                         d            sJ t        j                  t        j                  dt        j                               d      }t         j                  j                  | |      }|j                         g dg dg dgk(  sJ |j                  j                  |      sJ |j                  j                  j                  dk(  sJ t         j                  j                  | |t        j                  g d      	      }|j                         g dd g dgk(  sJ t         j                  j                  | dt        j                  g d      
      }|j                         g dd g dgk(  sJ t        j                  t              5  t         j                  j                  | d       d d d        t        j                  t              5  t         j                  j                  t        j                  g t        j                               d       d d d        t        j                  t              5  t         j                  j                  | d       d d d        t        j                  t        j                         d      }t        j                  t              5  t         j                  j                  | |       d d d        t        j                  t        j                          d      }t        j                  t"              5  t         j                  j                  | |       d d d        t        j                  t              5  t         j                  j                  |        d d d        t        j                  t        j                         d      }t        j                  t              5  t         j                  j                  | d|       d d d        y # 1 sw Y   8xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   JxY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   y xY w)N   rk   r   r2  )r   r   rZ   rT   r  rP   r  rQ   rT  )	list_sizerT  r   rl   )r  rQ   )r   r   rC   r   FixedSizeListArrayr   r   rQ   r   r  r   r  r  r.   r/   rr   r   r0   )r   r8   r  s      r    test_fixed_size_list_from_arraysr    sd   XXeBi,F""..vq9F,n!MMMM;;bhhrxxz15666
((288FBHHJ/
3C""..vC.@F,n!MMMM;;c""";;""''6111""..v4746HH=Q4R / TF ,n!EEEE""..v9:46HH=Q4R / TF ,n!EEEE 
z	"
))&"5 
# 
z	"
))"((2rxxz*BAF 
# 
z	"
))&!4 
# ((288:q
!C	z	"
))&s); 
# ((2::<
#C	y	!
))&s); 
" 
z	"
))&1 
# ((288:q
!C	z	"
))&AC)H 
#	"3 
#	" 
#	" 
#	"
 
#	"
 
"	! 
#	" 
#	"sU   /!R1AR!R "R-."R:1 S#SRR R*-R7:SSSc                     t        j                  g dt        j                               } t        j                  g d      }t         j                  j	                  ||       }|j                         ddgddggk(  sJ |j                  j                  t        j                  t        j                                     sJ t        j                  g d      }t         j                  j	                  ||       }|j                         ddgd ddggk(  sJ t        j                  t              5  t         j                  j	                  t        j                  g d      |        d d d        t        j                  t              5  t         j                  j	                  t        j                  g d	      |        d d d        y # 1 sw Y   axY w# 1 sw Y   y xY w)
Nr   r   r   rk   )r   r   rk   r   r   r   rk   )r   Nr   rk   )r   r   rk   )r   r   rl   )r   r   r   	ListArrayr   r   rQ   r   r  r.   r/   rr   )r   r  r8   s      r   test_variable_list_from_arraysr    sF   XXlBHHJ/Fhhy!G\\%%gv6F1a&1a&!1111;;bhhrxxz2333hh'G\\%%gv6F1a&$A!7777 
z	"
  *!5v> 
# 
z	"
  )!4f= 
#	" 
#	" 
#	"s   +6G6GG
Gc            
         t        j                  g dd      t        j                  g dd      t        j                  g dd      } t        j                  g dd      }t        j                  g d	d
      g dfd} |t         j                  j                  | g      ddgddg|         |t         j                  j                  | gddg      ddgddg|         |t         j                  j                  |gddg      ddgddg|        |t         j                  j                  |gddgddg      ddgddg|       t         j                  j                  |g      }t	        j
                  t         j                        5  |j                  d       d d d        t         j                  j                  | gddg      }t	        j
                  t         j                        5  |j                  d       d d d        t        j                  g dd
      }t         j                  j                  | |g      }t	        j
                  t         j                        5  |j                  d       d d d        y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   y xY w)Nr>  r?  r@  r  rO   rP   r   r   r   r   r   r   r   r   r   r   rT   r4  rT   rT   r4  r4  rT   )r   r   r   r   r   r   r   r   r>  r   r?  r@  r   r   r  c                 V   | j                  d       t        | j                  j                        D cg c]  }| j                  |   j                   }}||k(  sJ | j                  j
                  dk(  sJ | j                  j                  |k(  sJ | j                         k(  sJ |j                  | j                        sJ 	j                  | j                        sJ | j                  d      j                        sJ | j                  d      j                        sJ t        j                  t              5  | j                  d       d d d        t        j                  t              5  | j                  d       d d d        y c c}w # 1 sw Y   BxY w# 1 sw Y   y xY w)NTr  denser   r   r   r   )r   rC   rQ   
num_fieldsr  mode
type_codesr   r   r  r   r.   r/   KeyError)
r8   expected_field_namesexpected_type_codesexpected_type_code_valuesr   actual_field_namesrO   r   py_valuevalue_offsetss
         r   check_resultz+test_union_from_dense.<locals>.check_result  sc   T"',V[[-C-C'DF'D! %kk!n11'D 	 F!%9999{{7***{{%%)<<<<!X---(//0A0ABBB##FNN333||A%%f---||A%%e,,,]]8$LL %]]8$LLO %$F %$$$s    F F3FFF(r   r   r   r   r  r  r  binintrT   r4  r  Tr  )r   r   r   r   r   r   rk   )r   r   
UnionArray
from_denser.   r/   rr  r   )	typeslogical_typesr  r"   bad_offsetsrO   r   r  r  s	        @@@@r   test_union_from_denser    se   XX.X>FHHYW-EHH*8EHH9GMHH2AM0H& ))%+15/;'*Cj&'V+0	2 ))%+15/+0%.: (-en&'V+02 ))-+15/68"X * ? (+Cj&("X+8: ))-+15/+0%.2r(D (-en&("X+8: --
"
"=-$*E?4C	r	'$ 
(
--
"
"5-&%/12h # 8C	r	'$ 
( ((0w?K
--
"
"5+
GC	r	'$ 
(	' 
(	' 
(	' 
(	's$   %J 
J,J8 J),J58Kc            	         t        j                  g dd      t        j                  g dd      t        j                  g dd      } t        j                  g dd      }g d	fd
} |t         j                  j                  | g      ddgddg|         |t         j                  j                  | gddg      ddgddg|         |t         j                  j                  |gddg      ddgddg|        |t         j                  j                  |gddgddg      ddgddg|       t         j                  j                  |g      }t	        j
                  t         j                        5  |j                  d       d d d        t         j                  j                  | gddg      }t	        j
                  t         j                        5  |j                  d       d d d        t	        j
                  t         j                        5  t         j                  j                  |dd  g      }d d d        y # 1 sw Y   xY w# 1 sw Y   gxY w# 1 sw Y   y xY w)N)r>      r?  r@  r  r  r  rO   rP   )r   r   r   r   r   r   r   r   r  r   r  r  c                    | j                  d       | j                         k(  sJ t        | j                  j                        D cg c]  }| j                  |   j
                   }}||k(  sJ | j                  j                  dk(  sJ | j                  j                  |k(  sJ |j                  | j                        sJ | j                  d      j                        sJ | j                  d      j                        sJ t        j                  t        j                        5  | j                   d d d        t        j                  t              5  | j                  d       d d d        t        j                  t              5  | j                  d       d d d        y c c}w # 1 sw Y   uxY w# 1 sw Y   NxY w# 1 sw Y   y xY w)NTr  sparser   r   r   r   )r   r   rC   rQ   r  r  r  r  r   r   r.   r/   r   r  r  r  )	r8   r  r  r  r   r  rO   r   r  s	         r   r  z,test_union_from_sparse.<locals>.check_result]  sp   T"!X---',V[[-C-C'DF'D! %kk!n11'D 	 F!%9999{{8+++{{%%)<<<<(//0A0ABBB||A%%f---||A%%e,,,]]2,,-NN .]]8$LL %]]8$LLO %$F .-$$$$s*   
 F)-F.F:G.F7:GGr   r   r   r   r  r  r  rT   r4  r  Tr  )r   r   r  from_sparser.   r/   rr  r   )r  r  r  r"   rO   r   r  s       @@@r   test_union_from_sparser  U  s&   XX@#%FHH*9EHH*8EHH9GM0H( **565/B'*Cj&'V+02 **565/,15>;',en&'V+0	2 **=65/792h + @'*Cj&("X+8	: **=65/,15>,.85 (-en&("X+8: --
#
#MFE?
CC	r	'$ 
(
--
#
#EFE?02Bx $ 9C	r	'$ 
( 
r	'mm''ab	7JK 
(	' 
(	' 
(	' 
(	's$   I)I"'&I.I"I+.I7c            	         t         j                  j                  t        j                  g dt        j                               t        j                  g d      t        j                  g d      g      } | j                         g dk(  sJ t         j                  j                  t        j                  g dt        j                               t        j                  g dt        j                               t        j                  g d      t        j                  g d	      g      } | j                         g d
k(  sJ y )N)r   r   r   r   r   rP   )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+   s    r   %test_union_array_to_pylist_with_nullsr    s    
--
#
#
rwwy1HH/0HH56	
C ==?;;;;
--
"
"
&RWWY7
&RXXZ8HH*+HH()	
C ==?FFFFr   c                     t         j                  j                  t        j                  g dt        j                               t        j                  g d      t        j                  g d      g      } | dd  j                         g dk(  sJ t        j                  g dd      }t        j                  g d	d
      }t        j                  g dd      }t        j                  g dd      }t         j                  j                  ||||g      } | j                         }t        t        |             D ]7  }t        |t        |             D ]  }| || j                         ||| k(  rJ  9 y )N)r   r   r   r   rP   )r   r   r   dr  r   )r   r   rk   r  rO   r   r   r  r   )r   r   r   r   r   r   r   r   )	r   r  r  r   r   r   r  rC   r   )r"   rO   r   r  r  r   r   r  s           r   test_union_array_slicer    s   
--
#
#BHH\	$J%'XX.B%C%'XXl%;%=>C qr7+---XX.X>FHHYW-EHH*8EHH2AM
--
"
"5-&%
IC
--/C3s8_q#c(#Aq8%%'3q8333 $ r   Tr  check_array_constructionc                   | \  }}}}t        |t        j                        r|j                  |k(  sJ |}nt        j                  ||      }t        |t        j                        r|j                  |k(  sJ |}nt        j                  ||      }|j                  ||      }	|	j                  d       |	j                  |      sJ |r,t        j                  |||      }|j                  |      sJ y y )NrP   r  Tr  rQ   r  )r)   r   r1   rQ   r   r  r   r   )
r  r  r   in_datain_typeout_dataout_typer9   in_arrcasteds
             r   _check_cast_caser	    s    +/(GWh(BHH%}}(((88H84 '288$||w&&&'0[[[-F
OOO=="""  't<}}X&&&  r   c            	         t        j                  g dd      dt        j                  g dd      t        j                         ft        j                  g dd      dt        j                  g dd      t        j                         ft        j                  g dd      dt        j                  g dd      t        j
                         ft        j                  g dd      dt        j                  g dd      t        j                         fg} | D ]  }t        |        t        j                  d	gd      d
dft        j                  dgd      d
dft        j                  dgd      d
dft        j                  d	gd      ddfg}|D ]Z  \  }}}t        j                  ||      }t        j                  t        j                        5  |j                  |       d d d        \ y # 1 sw Y   gxY w)Nr   i1rz   r   r  u4u1f8P  r   r8  p uint16r   u2rP   )rc   r   r   r   r  r   r   r	  r.   r/   rr  r  )
safe_casesr  unsafe_casesr  r  r  r  s          r   test_cast_integers_safer    s    
,d	+V	,d	+RXXZ	9	,d	+V	,d	+RYY[	:	,d	+V	,d	+RXXZ	9	,d	+V	,d	+RZZ\	;	J   
5'	&9	5'	&:	2$d	#Wh7	5'	&':	L '3"('0]]2??+KK! ,+ '3 ,+s   G33G<	c                      t        j                  g d      } t        j                  t              5  | j                  d        d d d        y # 1 sw Y   y xY wr   )r   r   r.   r/   r0   r  r+   s    r   test_cast_noner    s3    
((9
C	y	! 
"	!	!s   AAc                     t        j                  ddgddgg      } t        j                  t              5  | j                  t        j                                d d d        t        j                  ddgdggt        j                  t        j                                     } t        j                  t              5  | j                  t        j                                d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)Nr   r   r   rk   r>  r?  r@  )	r   r   r.   r/   r  r  r   r  rO   r+   s    r   test_cast_list_to_primitiver    s    
((QFQF#
$C	*	+ 
, ((T4L4&)288BIIK+@
AC	*	+ 
,	+	 
,	+ 
,	+s   $C':$C3'C03C<c                      t        j                  g d      } | j                  dk(  sJ | d d  }|j                  |       sJ | d d  y )Nr   rP   r   rl   )r   rq   
num_chunksr   )r"   r8   s     r   $test_slice_chunked_array_zero_chunksr    sL    


2F
+C>>QVF== Gr   c                  h   t        j                  g d      t        j                  g d      g} t        j                  |       }t        j                         }|j	                  |      }t        j                  | D cg c]  }|j	                  |       c}      }|j                  |      sJ y c c}w )Nr   rP  )r   r   rq   r   r  r   )r_  carrtargetr  xr9   s         r   test_cast_chunked_arrayr!    s    hhy!288I#67FF#DZZ\FYYvF @A @AH==""" !As   <B/c                     t        j                  t        j                         t        j                               t        j                         ft        j                         t        j
                         ffD ]W  \  } }t        j                  g |       }|j                  |      }t        j                  g |      }|j                  |      rWJ  y NrP   )	r   r   r   r   r   r   rq   r  r   )typ1typ2r"   r8   r9   s        r   test_cast_chunked_array_emptyr&  "  s    bggi=ryy{K
BHHJ/1
d r-$##BT2}}X&&&1r   c                      t        j                  t              5  t        j                  g g      j
                  } d d d        t         t        j                        sJ y # 1 sw Y   &xY wN)r.   warnsFutureWarningr   rq   r_   r)   ChunkedArray)r   s    r   test_chunked_array_data_warnsr,  -  sH    	m	$t$)) 
%c2??+++ 
%	$s   !A  A)c                     t        j                  dgd      dt        j                  dg      j                  d      t        j                         ft        j                  dgd      dt        j                  dg      j                  d      t        j
                         ft        j                  dgd      dt        j                  dg      j                  d      t        j
                         ft        j                  dgd      t        j
                         t        j                  dg      j                  d      t        j                         fg} | D ]  }t        |d	
        y )Nr  r  rz   r   i2r  r  r   Fr  )rc   r   astyper   r8  r  r	  r  r  s     r   test_cast_integers_unsafer1  3  s    
5'	&	5'		!	!	!	-rxxz	;	5'	&	5'		!	!	!	-ryy{	<	2$d	#W	2$		T		*BIIK	9	5'	&			5'		!	!	!	-rxxz	;	L E* r   c                     t        j                  g dd      dt        j                  g dd      t        j                         ft        j                  g dd      dt        j                  g dd      t        j                         ft        j                  g dd      dt        j                  g dd      t        j                         fg} | D ]  }t	        |d	
        y )Nr   r         @r!  rz   r   r  r   )g      $g      4@g      >ir  iTr  )rc   r   r   r   r	  r  r  s     r   !test_floating_point_truncate_safer7  H  s     
/	3Y	)4	("((*	6	/	3Y	)4	("((*	6	&i	8)	.	-rxxz	;J D) r   c                  \   t        j                  g dd      dt        j                  g dd      t        j                         ft        j                  g dd      dt        j                  g dd      t        j                         ft        j                  g dd      dt        j                  g dd      t        j                         fg} | D ]J  }t	        j
                  t        j                  d	
      5  t        |d       d d d        t        |d       L y # 1 sw Y   xY w)N)r  g@r  r!  rz   r   r  r   )g333333$g3333334@gL>r5  	truncatedrm   Tr  F)rc   r   r   r   r.   r/   rr  r	  r0  s     r   #test_floating_point_truncate_unsafer:  V  s     
/	3Y	)4	("((*	6	/	3Y	)4	("((*	6	&i	8)	.	-rxxz	;L ]]2??+>T- ? 	E* >>s   <D""D+	c                  J   t        j                  d      d t        j                  d      gt        j                  dd      g dt        j                         ft        j                  d      d t        j                  d      gt        j                  dd	      g d
t        j
                         ft        j                  d      d t        j                  d      gt        j                  dd	      g dt        j                         fg} | D ]  }t        |       t        |d        y )N123456z-912345    rl   @ Ni'1234-9123   rZ   i  Ni]123z-91{   NiTr  )decimalDecimalr   
decimal128r   r8  r   r	  r6  s     r   test_decimal_to_int_saferJ  i  s     __X&gooi.HIMM"a #HHJ		
 __V$dGOOG,DEMM"b!HHJ		
 __U#T7??5+ABMM"b!GGI		
J( D) r   c                     t        j                  t        j                  d      d t        j                  d      g      t	        j
                  dd      g dt	        j                         ft        j                  d      d t        j                  d      gt	        j
                  dd      g dt	        j                         ft        j                  d	      d t        j                  d
      gt	        j
                  dd      g dt	        j                         fg} | D ]I  }t        j                  t        j                  d      5  t        |       d d d        t        |dd       K y # 1 sw Y   xY w)N1234567890123z-912345678901234r=  rl   )iqNir<  z
-912345678)i@Nir@  rA  )iN]   zInteger value out of boundsrm   Fr  )rc   r   rG  rH  r   rI  r   r8  r   r.   r/   rr  r	  )out_of_bounds_casesr  s     r   'test_decimal_to_int_value_out_of_boundsrO    s    HH0 23 
 MM"a *HHJ		
 __X&gool.KLMM"a !HHJ		
 __V$dGOOG,DEMM"a GGI		
#2 $]]2??!>@T"@ 	EEJ $@ @s   E''E0	c                     t        j                  d      d t        j                  d      gt        j                  dd      g dt        j                         ft        j                  d      d t        j                  d      gt        j                  dd	      g d
t        j
                         ft        j                  d      d t        j                  d      gt        j                  dd	      g dt        j                         fg} | D ]J  }d}t        j                  t        j                  |      5  t        |       d d d        t        |d       L y # 1 sw Y   xY w)Nz	123456.21z
-912345.13r=  rl   r>  z1234.134z-9123.1rB  rZ   rC  z123.1451z-91.21rE  0Rescaling Decimal128 value would cause data lossrm   Fr  )rG  rH  r   rI  r   r8  r   r.   r/   rr  r	  )non_integer_casesr  
msg_regexps      r   test_decimal_to_int_non_integerrT    s    ,-
 MM"a #HHJ		
 __Z($	0JKMM"b!HHJ		
 __Z($0IJMM"b!GGI		
#2 "G
]]2??*=T" > 	E* " >=s   1EE	c                     t        j                  t        j                  d      d gt        j                  dd            } | j                  t        j                  dd            }t        j                  t        j                  d      d gt        j                  dd            }|j                  |      sJ d}t        j                  t         j                  |      5  | j                  t        j                  d	d
            }d d d        | j                  t        j                  d	d
      d      }t        j                  t        j                  d      d gt        j                  d	d
            }|j                  |      sJ t        j                  t         j                  d      5  | j                  t        j                  dd            }d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)Nz1234.12rB  rZ   rP   r   r   rQ  rm   r   r   Fr  z1234.1z'Decimal value does not fit in precisionrl   r   )
r   r   rG  rH  rI  r  r   r.   r/   rr  )r"   r8   r9   rS  s       r   test_decimal_to_decimalrV    sq   
((		#T*]]2r"C XXbmmB*+Fxx		#T*]]2q!H =="""CJ	rj	9"--1-. 
: XXbmmAq)X6Fxx		"D)]]1a H =="""	rF
H"--1-.
H 
H 
:	9
H 
Hs    &G-&G(G%(G1c                     t        j                  t        j                  dg      } t	        j
                  t         j                  d      5  | j                  t        j                         d       d d d        y # 1 sw Y   y xY w)Nr   r9  rm   Tr  )	r   r   rc   nanr.   r/   rr  r  r   r+   s    r    test_safe_cast_nan_to_int_raisesrY    sL    
((BFFB<
 C	rk	:$' 
;	:	:s   &A::Bc                     t        j                  g dd      t        j                         t        j                  g dd      t        j                         ft        j                  g dd      t        j                         t        j                  g dd      t        j                         fg} | D ]  }t        |        y )Nr   r  rz   r  r.  r  )rc   r   r   r   r  r	  r6  s     r   test_cast_signed_to_unsignedr[    s     
,d	+RXXZ	,d	+RXXZ	9	,d	+RYY[	,d	+RYY[	:J  r   c                     d gdz  } t        j                         }t        j                         t        j                         t        j                         t        j                         t        j
                         t        j
                  d      t        j                  t        j                               t        j                  t        j                         d      t        j                  t        j                               t        j                  dd      t        j                  d      t        j                  dd      t        j                  dd      t        j                  d      t        j                         t        j                  t        j                  d	t        j                               t        j                  d
t        j                  t        j                                      t        j                  dt        j"                               g      t        j$                  t        j                         t        j"                               g}|D ]  }t'        | || |f        t        j(                  t        j                  d	t        j
                  d            t        j                  d
t        j"                               gt         j*                  j,                        t        j(                  t        j                  d	t        j
                  d            t        j                  d
t        j"                               gt         j*                  j.                        g}t        j0                  | t        j                               }|D ]5  }t3        j4                  t6              5  |j9                  |       d d d        7 y # 1 sw Y   BxY w)Nr   rZ   rk   rB  r   r   r   zEurope/Parisr   r   r   )r  rP   )r   r   r   float16r  rO   r  r8  r   r   rI  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  s        r   test_cast_from_nullrc    sN   fqjGggiG
	





	
		
		"

Q
bhhj!
b!
T
Te$
Tn-
D
""$
		288C,88C"'')!4588C-/ 	0 	bhhj"))+.'I* '7GX>? 
 	"((3		".((3		,.46FF4J4J	L
"((3		".((3		,.46FF4K4K	M	I XXgBGGI.F]]./KK! 0/ //s   -O

O	c                  (   t        j                  g d      t        j                  g dt        j                               ft        j                  d dg      t        j                  d dgt        j                               fg} | D ]  \  }}|j	                  |j
                  d      }|j                  d       |j                  |      sJ |j	                  |j
                  d      }|j                  d       |j                  |      rJ  y )	N)r   127z-128)r      irP   18446744073709551615l    Tr  r  )r   r   r   uint64r  rQ   r   r   )r   r  r9   r  casted_backs        r   $test_cast_string_to_number_roundtriprj  %  s    	&	'	.rwwy	1	3	4/0	1	4-.RYY[	A	CE "X]]6T"}}X&&&kk&++Dk9$'!!&))) "r   c            	         t        j                  g dt        j                  t        j                         t        j                                     } t        j                  g d      }| j
                  t        j                  t        j                         t        j                               k(  sJ | j                  t        j                               |k(  sJ t        j                         t        j                         t        j                         fD ]  }t        j                  |t        j                               }t        j                  g dt        j                  |t        j                                     }| j                  |      |k(  rJ  t        j                  t         j                        5  | j                  t        j                                d d d        y # 1 sw Y   y xY w)Nr
  rP   )r   r   r   r   r   rQ   r  r   r8  r   r.   r/   rr  )r"   r9   key_typer  s       r   test_cast_dictionaryrm  5  s,   
((]]288:ryy{3C xx,-H88r}}RXXZ====88BIIK H,,, WWY
BHHJ7mmHbiik288 x5
 xx}((( 8 
r	' 
(	'	's   :$G''G0c                  \   t        j                  g dt        j                               } t        j                  g dt        j                               }| j	                  t        j                               j                  |      sJ | j	                  d      j                  |      sJ y )Nr   rP   rO   )r   r   r  rO   viewr   r"   r9   s     r   	test_viewrq  M  sp    
(((rwwy
9Cxx-BIIK@H88BIIK ''11188H$$X...r   c                  *   t        j                  g d      t        j                  g d      ft        j                  g d      t        j                  g d      ft        j                  g dt        j                               t        j                  g dt        j                               fg} | D ]_  \  }}|j                         }|j	                  |      sJ t        j
                  |g      j                         }|j	                  |      r_J  y )Nr   r   r   r   r   r   r   r>   Nr   r>   r>   Nr   )r   r   rR   uniquer   rq   r   r"   r9   r8   s       r   test_unique_simplerx  V  s    	$	%rxx	':;	-	.	&	'	)	-r/@	A	&(9	:	<	E X}}X&&&!!3%(//1}}X&&&	 r   c                  B   t        j                  g d      t        j                  g d      t        j                  g dt        j                               ft        j                  g d      t        j                  g d      t        j                  g dt        j                               ft        j                  g dt        j                               t        j                  g dt        j                               t        j                  g dt        j                               fg} | D ]  \  }}}|t        j                  |g      fD ]  }|j                         }|j                  j                  t        j                  t        j                  d|j                        t        j                  d	t        j                               g            sJ |j                  d      j                  |      sJ |j                  d	      j                  |      rJ   y )
Nrs  r   r   r   r   rP   rt  ru  )r   r   r   r   counts)
r   r   r   rR   rq   value_countsrQ   r   r  r   )r   r"   expected_valuesexpected_countsarr_inr8   s         r   test_value_counts_simpler  e  s   	$	%	)		)"((*	-	/ 
-	.	&	'	)"((*	-	/ 
-r/@	A	&(9	:	)"((*	-	/
E 27-_oB,,cU34F((*F;;%%		288Hchh788Hbhhj9; <= = = <<)00AAA<<)00AAA 5 27r   c                  .   t        j                  g d      } t        j                  g d      }t         j                  j                  | |      }|j	                         }t         j                  j                  | j	                         |      }|j                  |      sJ |j                         }|j                  d      j                  |      sJ |j                  d      j                  t        j                  g dd            sJ t         j                  j                  t        j                  g d      |      }|j	                         }t         j                  j                  t        j                  g d      t        j                  g d            }|j                  |      sJ |j                         }|j                  d      j                  |      sJ |j                  d      j                  t        j                  g d            sJ y )	N)r   r   r   r   r   r   r   r   r   r   r   r   )r>   r   r   quxr   r{  )r   rl   rk   r   rP   r  )r   r   r   r   rv  r   r|  r   )rg  r   r"   unique_resultr9   r8   s         r   (test_unique_value_counts_dictionary_typer  {  s   hh;<G67J



(
(*
=CJJLM!!--gnn.>
KH)))F<<!((777<<!(()')JKKK



(
(
'"J0CJJLM!!--bhhr.H.0hhr.GIH)))F<<!((777<<!(("7)CDDDr   c                     t        j                  g d      t         j                  j                  t        j                  g dd      g d      ft        j                  g d      t         j                  j                  t        j                  g dd      dd	g      ft        j                  g dt        j                               t         j                  j                  t        j                  g dd      t        j                  dd	gt        j                                     fg} | D ]  \  }}|j                         }|j                  |      sJ t        j                  |g      j                         }|j                  d
k(  sJ |j                  d      j                  |      sJ t        j                  g |j                        j                         }|j                  dk(  sJ |j                  |j                  k(  rJ  y )Nr   r   r   Nr   r   r   r   r   r   Nr   r   r   r   rP   r   rt  r   Nr   r   r>   r   r   r   )r   r   r   r   rR   r   r   rq   r  chunkrQ   rw  s       r   test_dictionary_encode_simpler    s   	*	+				'	'XX.W=
	 
-	.				'	'XXoG4U^
	 
-BOO4E	F				'	'XXoG4XXuen2??+<=
?	@E X&&(}}X&&&!!3%(::<  A%%%||A%%h///!!"3884FFH  A%%%{{hmm+++ r   c                     t        j                  g d      dd t         j                  j                  t        j                  g dd      g d      ft        j                  g d      dd t         j                  j                  t        j                  g d	d      d
dg      ft        j                  g dt        j                               dd t         j                  j                  t        j                  g d	d      t        j                  d
dgt        j                                     fg} | D ]  \  }}|j                         }|j                  |      sJ t        j                  |g      j                         }|j                  dk(  sJ |j                  |j                  k(  sJ |j                  d      j                  |      sJ t        j                  g |j                        j                         }|j                  dk(  sJ |j                  |j                  k(  rJ  t        j                  g d      }|j                  d      j                          y )Nr  r   r   )r   r   Nr   r   r   rP   )r   r   r   )Nr>   r   r>   xyzzyr   r   r   r>   r   r   r   )r   r   r   r   large_stringr   r   rq   r  rQ   r  rV   )r   r"   r9   r8   r   s        r   test_dictionary_encode_slicedr    s   	*	+Ab	1				'	'XX(w7
	 
6	7"	=				'	'XXig.U^
	 
6(
**+B
0				'	'XXig.XXuen2??+<=
?	@E X&&(}}X&&&!!3%(::<  A%%%{{hmm+++||A%%h///!!"3884FFH  A%%%{{hmm+++  HH*+E	KKN$$&r   c                      t        j                  g t        j                               } | j                         }t	        |j
                        dk(  sJ |j                  d       y )NrP   r   Tr  )r   r   r   r   r   r   r   )r"   encodeds     r   "test_dictionary_encode_zero_lengthr    sP    
((2BIIK
(C##%Gw!!"a'''$r   c                     t        j                  g d      t         j                  j                  t        j                  g dd      g d      ft        j                  g d      t         j                  j                  t        j                  g dd      dd	g      ft        j                  g dt        j                               t         j                  j                  t        j                  g dd      t        j                  dd	gt        j                                     fg} | D ](  \  }}|j                         }|j                  |      r(J  y )
Nr  r  r   rP   r   rt  r  r>   r   )r   r   r   r   rR   dictionary_decoder   )r   r9   r"   r8   s       r   test_dictionary_decoder    s   	*	+				'	'XX.W=
	 
-	.				'	'XXoG4U^
	 
-BOO4E	F				'	'XXoG4XXuen2??+<=
?	@E #&&(}}X&&& r   c                      t        j                  t        j                  g dd      t        j                  d            } t        j                  g dd      }| j	                  d      }|j                  |      sJ y )NrG  r   rz   r   rP   r  )r   r   rc   time32r  r   r"   r9   r8   s      r   test_cast_time32_to_intr    sW    
((288IW5		#(Cxx	-HXXd^F=="""r   c                      t        j                  t        j                  g dd      t        j                  d            } t        j                  g dd      }| j	                  d      }|j                  |      sJ y NrG  r   rz   r   rP   i8)r   r   rc   time64r  r   r  s      r   test_cast_time64_to_intr    sW    
((288IW5		$)Cxx	-HXXd^F=="""r   c                      t        j                  t        j                  g dd      t        j                  d            } t        j                  g dd      }| j	                  d      }|j                  |      sJ y r  )r   r   rc   r   r  r   r  s      r   test_cast_timestamp_to_intr    sX    
((288IW5T*,Cxx	-HXXd^F=="""r   c            	         t        j                  g dd      } | j                  d      }|j                  d      }t        j                  t        j                  ddd      t        j                  ddd      t        j                  ddd      g      j                  d      }|j                  |      sJ |j                  |       sJ y )	NrG  r  rP   date32i  r   r   r   )r   r   r  r   r   r   )r"   result1result2	expected1s       r   test_cast_date32_to_intr  	  s    
((94
(Chhx Gll4 GdAq!dAq!dAq!  tH~	  >>)$$$>>#r   c                      t        j                  t        j                  g dd      t        j                  d            } t        j                  g dd      }| j	                  d      }|j                  |      sJ y r  )r   r   rc   r   r  r   r  s      r   test_cast_duration_to_intr    sX    
((288IW5D)+Cxx	-HXXd^F=="""r   c                  6   t        j                  g dt        j                               } | j                  t        j                               }t        j                  g dt        j                               }|j                  |      sJ dj                  d      g}t        j                  |      }|j                  t        j                         k(  sJ t        j                  t              5  |j                  t        j                                d d d        t        j                  |t        j                  dg      t        j                               }|j                  t        j                               }|j                  dk(  sJ y # 1 sw Y   |xY w)	N)s   foos   bars   bazrP   r      mañana	utf-16-leT)rT  rQ   r   )r   r   rO   r  r  r   encoderQ   r.   r/   rr   r   rc   r   )
binary_arrutf8_arrr9   non_utf8_valuesnon_utf8_binarynon_utf8_all_nullr  s          r   test_cast_binary_to_utf8r  #  s   2EJrwwy)Hxx-BGGI>H??8$$$!))+67Ohh/O299;...	z	"RYY[) 
# rxx7G&(iik3 ##BIIK0F!!! 
#	"s   0$FFc                      t        j                  t        j                  g dd      t        j                               } t        j                  g dd      }| j	                  d      }|j                  |      sJ y )NrG  r   rz   rP   r  )r   r   rc   date64r  r   r  s      r   test_cast_date64_to_intr  8  sU    
((288IW5		%Cxx	-HXXd^F=="""r   c            	         t        j                   ddddddd      } t        j                   ddd      }t        j                  | |gd      }t        j                  | j                         |j                         gd      }|j	                  |      sJ |j                  d	      }|d
   j                         |d   j                         k(  sJ y )N  r   r  "   8   r?  r  rP   r   r   )r   r   r   r   r   ro  r'   )val1val2r8   r  as_i8s        r   !test_date64_from_builtin_datetimer  C  s    T1aRV<DT1a(DXXtTl2Fhh		TYY[1AG==!!!KK E8>>uQx~~////r   )r   r   boolrx   r      r      r  rZ   r8  uint32r   rh  r   float)r   g?g?doubler   r   rO   )r>  r?  r@  r   )s   abcs   bcds   cdec                 v    t        j                  ||       }|j                  |       j                  |      sJ y r#  )r   r   r  r   )r   r   r"   s      r   test_cast_identitiesr  O  s0    " ((6
#C88B<s###r   )r_   r  )TFTT)r   r   rk   r   )r   r  N)r   Nr   r   rk   rl   r   r   r   r   ))r   r   )r   r   Nc                     t        j                  | |      }t        d|j                  dz         D ]6  }|j	                  |j                  ||            }|j                  |      r6J  y )NrP   r   r   )r   r   rC   HIGHEST_PROTOCOLloadsdumpsr   )r_   r  pickle_moduler   protor8   s         r   test_array_pickler  x  s_     HHT$Eq-881<=$$]%8%8%FG||F### >r   c                     t         j                  j                  g dg d      }t        d| j                  dz         D ]6  }| j                  | j                  ||            }|j                  |      r6J  y )Nr   r   r   r   )r   r   r   rC   r  r  r  r   )r  r   r  r8   s       r   test_array_pickle_dictionaryr    sg     **?OLEq-881<=$$]%8%8%FG||F### >r   )suppress_health_check)	min_value	max_valuer   c                 n    | j                  |      }| j                  |      }|j                  |      sJ y r(  )r  r  r   )r  r"   r_   restoreds       r   test_picklingr    s6     s#D""4(H::hr   c                    t        j                  | |      }|j                         D cg c]  }||j                  nd }}t	        d|j
                  dz         D ]z  }g }|j                  |||j                        }|j                  ||      }	|j                  |	      sJ |	j                         D cg c]  }||j                  nd }
}|
|k(  rzJ  y c c}w c c}w )NrP   r   rl   r   )buffer_callback)r\   )
r   r   r\   r]   rC   r  r  appendr  r   )r_   r  r  r   buf	addressesr  r\   pickledr8   result_addressess              r   test_array_pickle_protocol5r    s     HHT$E!MMO-+S !$Q6+  - q-881<=%%eUGNN%S$$Wg$>||F### (.~~'79'7 ,/?CKKA'7 	 99,,, >-9s   C7Cc                  >   t        j                  dt         j                        t        j                  dt         j                        t        j                  dt         j                        t        j                  dt         j
                        t        j                  dt         j                        t        j                  dt         j                        t        j                  dt         j                        t        j                  dt         j                        t        j                  dt         j                        t        j                  dt         j                        t        j                  dt         j                        fD ]  } t        j                  |       }| j                  |j!                         j                  k(  sJ t         j"                  j%                  | |j!                                t         j"                  j%                  | d d |d d j!                                t         j"                  j%                  | dd  |dd  j!                                t         j"                  j%                  | dd |dd j!                                 y )NrZ   rz   r   r   )rc   rd   r   r   r8  r   rh  r  r  r   r   r!  r]  r   r   r{   r[   re   rf   )narrr"   s     r   test_to_numpy_roundtripr    s    			"BHH%
		"BHH%
		"BHH%
		"BGG$
		"BII&
		"BII&
		"BII&
		"BHH%
		"BJJ'
		"BJJ'
		"BJJ' hhtnzzS\\^11111


%%dCLLN;


%%d2AhBQ0@0@0BC


%%d12hAB0@0@0BC


%%d1QiQq1B1B1DE%r   c                      t        j                  dgt        j                               } t        j                  t        j                  dgd            }| j	                  |      sJ y )N            rP   u8rz   )r   r   rh  rc   r   rp  s     r   $test_array_uint64_from_py_over_ranger    sG    
((G9299;
/Cxx'$78H::hr   c            
         t        j                  g dd      } t        j                  |       }t	        j                  |       }t        j                  |       |dz   k(  sJ |j
                  dk(  sJ t	        j                  t        j                  dt         j                  ddt         j                  dgd      d	      }|j
                  dk(  sJ |j                  d
k(  sJ y )Nr  r   rz   r   r   r   rk   r!  rP   r   )rc   r   r   r   r   rQ   rX  r   )r"   r-  r  r  s       r   )test_array_conversions_no_sentinel_valuesr    s    
((<v
.Cs#H88C=D??3HqL1119988BHHaArvvq9K"$D99	!!!??ar   c                     t        j                  g dt        j                  d            } t        j                  t        j                  d      t        j                  d      d gt        j                  d            }| j                  |      sJ t        j                  g dt        j                  d            } t        j                  t        j                  d	      t        j                  d
	      d gt        j                  d            }| j                  |      sJ t        j                  g dt        j                  d            } t        j                  t        j                  d	      t        j                  d	      d gt        j                  d            }| j                  |      sJ t        j                  g dt        j                  d            } t        j                  t        j                  d	      t        j                  d	      d gt        j                  d            }| j                  |      sJ y )Nr|   r   rP   r   )secondr   r     )microsecondr  r   )r  r  Nr   )r   r   r  r   r   r   r  )r8   r9   s     r   test_time32_time64_from_integerr    s   XXl38Fxxa0!a0$8YYs^-H =="""XXl49Fxx48!48$@YYt_.H =="""XXl49Fxx15!15t=YYt_.H =="""XX(ryy?Fxx15!15t=YYt_.H =="""r   c                  *    d }  | d        | d       y )Nc                     t        j                  dt        j                  g| d      }t        j                  dd g|       }|j	                  |      sJ y )Nr   TrQ   from_pandasrP   )r   r   rc   rX  r   r   s      r   _check_casez=test_binary_string_pandas_null_sentinels.<locals>._check_case  sD    hh"&&)E88Xt,26zz(###r   rO   r  r2   )r  s    r   (test_binary_string_pandas_null_sentinelsr    s    $ r   c                     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        j                  d      fd	t         j                  gt        j                         ft        j                  d
      t         j                  gt        j                  dd      fdt         j                  gt        j                         fdt         j                  gt        j                         fdt         j                  gt        j                         fdt         j                  gt        j                  d      fdt         j                  gt        j                  d      fdt         j                  gt        j                  d      fdt         j                  gt        j                  d      fg} | D ]t  \  }}t        j                  t         t"        f      5  t        j$                  ||       d d d        t        j$                  ||d	      }|j&                  |dk7  rdndk(  rtJ  y # 1 sw Y   <xY w)Nr   r   rO   r  rR   
large_utf8s   stringr   Tr   r  r   r   r   r   rP   r  r   )rc   rX  r   rO   r  rG  rH  rI  r  r  r  r  r   r   r.   r/   rr   r0   r   r   )r   r  r   r8   s       r   &test_pandas_null_sentinels_raise_errorr    s     
BFF	X&
BFF	V$
BFF	^,
BFF	\*
RVV	biil+
$
//#
	'r1)=>
RVVbiik"
RVVbiik"
RVVbiik"
RVVbiin%
RVVbiio&
RVVbll4()
RVVbkk$'(E" b]]J	23HHT# 4 $RT:  ",QA>>> 33s   I((I1	c                      dd l } | j                  ddt        j                  gt              }t        j                  |      }t        j                  ddt        j                  gd      }|j                  |      sJ y )Nr   r   r   rz   T)r  )pandasIndexrc   rX  r}   r   r   r   )pdr   r8   r9   s       r    test_pandas_null_sentinels_indexr  	  s\     
((Aq"&&>(
0CXXc]FxxArvvD9H=="""r   c                     t        j                  d t        j                  ddd      gd      } t	        j                  |       }t	        j                  d t        j                  ddd      gt	        j
                               }|j                  |      sJ |j                  d      }t         j                  j                  ||        |j                  | j                  k(  sJ y )N  rk   zdatetime64[D]rz   rP   Fro   )rc   r   r   r   r   r  r   r[   re   rf   r{   r7   s      r   )test_array_roundtrip_from_numpy_datetimeDr  '	  s    
((D(--a34O
LCXXc]Fxxx}}T1a89		LH=="""__E_2FJJ!!&#.<<399$$$r   c                      t        j                  d t        j                  dddddd      t        j                  ddddd	d      g      } | j                  t        j                  d
d       k(  sJ y )Nr  rk   r  rT   rZ     r   r   r   r   r   )r   r   r   rQ   r   r+   s    r   test_array_from_naive_datetimesr  3	  sg    
(($1b"b1$1aA. C
 88r||DT2222r   )r{   rQ   datetime64[s]r   datetime64[ms]r   zdatetime64[us]r   zdatetime64[ns]r   c           
         d t        j                   dddddd      t        j                   ddddd	d      g}t        j                  t        j                  || 
            }t        j                  ||      }|j	                  |      sJ t        j                  t        t        j                  || 
                  }|j	                  |      sJ y )Nr  rk   r  rT   rZ   r  r   r   r   rz   rP   )r   r   r   rc   r   r  )r{   rQ   r_   r"   r9   s        r   test_array_from_numpy_datetimer  <	  s     	$1b"b1$1aA.D ((288D.
/Cxx4(H::h ((4U34
5C::hr   c            
         d t        j                   dddddd      t        j                   ddddd	d      g} t        j                  | d
      }t        j                  | d      }t        |d d	       t        |d	d        z   } t	        j
                  t        j                        5  t        j                  |        d d d        y # 1 sw Y   y xY w)Nr  rk   r  rT   rZ   r  r   r   r   r   rz   r  )r   rc   r   r  r.   r/   r   r  )r_   r   r   s      r   5test_array_from_different_numpy_datetime_units_raisesr  T	  s     	$1b"b1$1aA.D
 	_-A	$.	/B"1;bf%D	r22	3
 
4	3	3s   $CC)r   r   r   r   c                    t        j                  d|       }t        j                  d|       }t        j                  d|       }t        j                  |||g      }t        j                  |||gt        j                  |             }|j
                  |j
                  k(  sJ |j
                  j                  | k(  sJ |d   |d   k(  sJ y )NNaT2017-01-01 01:01:01.1111111112018-11-22 12:24:48.111111111rP   r   )rc   
datetime64r   r   r   rQ   r   )r   r   r   ya1a2s         r   "test_array_from_list_of_timestampsr  c	  s     	eT"A
5t<A
5t<A	1a)	B	1a)",,t"4	5B77bgg77<<4a5BqE>>r   c                  &   t        j                  d      } t        j                  d      }t        j                  d      }t        j                  t        j
                  d      5  t	        j                  | ||g       d d d        y # 1 sw Y   y xY w)Nr  r  r	  z'Unbound or generic datetime64 time unitrm   )rc   r
  r.   r/   r   r  r   )r   r   r  s      r   +test_array_from_timestamp_with_generic_unitr  r	  sk    
eA
56A
56A	r22F
H
!Q
H 
H 
Hs   %BBztimedelta64[s]ztimedelta64[ms]ztimedelta64[us]ztimedelta64[ns]c                 B   d t        j                  d      t        j                  dd      g}t        j                  ||       }t	        j                  |      }t        |t        j                        sJ |j                  |k(  sJ t	        j                  ||      }|j                  |      sJ |j                         |k(  sJ t	        j                  t        t        j                  ||                   }|j                  |      sJ |j                         |k(  sJ y )Nr   r   rz   rP   )r   r   rc   r   r   r)   DurationArrayrQ   r   r   r  )r{   rQ   r_   rg   r"   r9   s         r   test_array_from_numpy_timedeltar  }	  s     	11a D XXd%(F
((6
Cc2++,,,88txx4(H::h==?d""" ((4U34
5C::h==?d"""r   c                     t        j                  d      } | gt        j                  | g      fD ]9  }t        j                  t
              5  t        j                  |       d d d        ; t        j                  dd      } | gt        j                  | g      fD ]9  }t        j                  t
              5  t        j                  |       d d d        ; y # 1 sw Y   xY w# 1 sw Y   RxY w)Nr   M)rc   timedelta64r   r.   r/   r  r   )tdr_   s     r   .test_array_from_numpy_timedelta_incorrect_unitr  	  s     
	Brxx~&]]./HHTN 0/ '
 
3	Brxx~&]]./HHTN 0/ ' 0/ 0/s   C6C#C 	#C,	c                  L   t        j                  g dd      } t        j                  |       }|j                  dk(  sJ t        j                  g dd      }|j	                  |      sJ t        j                  g d      }t        j                  | |      }t        j                  g dd      }|j	                  |      sJ t        j                  g dd	z  d      d d d
   } t        j                  g dd	z        d d d
   }t        j                  | |      }t        j                  g dd      }|j	                  |      sJ t        j                  g dd      } t        j                  |       }t        j                  g dd      }|j	                  |      sJ y )Nabcdeabcr=   z|S5rz   rO   rP   r  rV  r  Nr=   rl   r   r  r=   Nr  r=   Nr  r=   r=   r=   r=   z|S0rc   r   r   rQ   r   )r"   	arrow_arrr9   rT  s       r   test_array_from_numpy_asciir"  	  sT   
(('u
5CI>>X%%%xx,8<HH%%%88()D4(Ixx+(;HH%%% (('!+5
9#A#
>C88(1,-cc2D4(IxxK%'HH%%% ((<u
-CIxx84HH%%%r   c                      d t        j                  ddddddd      g} t        j                  | t        j                               }t        |t        j                        sJ |j                  t        j                         k(  sJ d t        j                  ddt        j                  ddddd      t        j                  d      z  dz  g      g}t        j                  |      }|j                  |      sJ |j                         |k(  sJ y )Nr   )r   secondsmicrosecondsmillisecondsminuteshoursweeksr   r   )r$  r%  r&  r'  r(  r%  r  )r   r   r   r   r^  r)   MonthDayNanoIntervalArrayrQ   MonthDayNanor   r   r_   r"   rY  r9   s       r   "test_interval_array_from_timedeltar.  	  s   11()1AQ	HID ((4335
6Cc27788888r113333
A",,QQ:;Q346 #,,!<= AEEF 	GHM xx&H::h==?m+++r   c                     ddl m}  ddlm} d  | ddddddddd	      g}t	        j
                  |      }t        |t        j                        sJ |j                  t	        j                         k(  sJ d t	        j                  ddt        j                  dddd      t        j                  d	      z  d
z  g      g}t	        j
                  |      }|j                  |      sJ |j                         j                         d  |ddt        j                  dddd      t        j                  d	      z  d      gk(  sJ t!        j"                  t$              5  t	        j
                   |dd      g       d d d        t!        j"                  t$              5  t	        j
                   |dd      g       d d d        t!        j"                  t$              5  t	        j
                   |dd      g       d d d        t!        j"                  t$              5  t	        j
                   |d	      g       d d d        y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   axY w# 1 sw Y   y xY w)Nr   )relativedelta
DateOffsetr   )	yearsmonthsr   r$  r%  r'  r(  r)  leapdaysr4  r   r$  r%  r'  r(  r*  r  r4  r   r%  nanosecondsiUUUrA   )r3  r4  i$I$)r)  r   l   	z )r$  r8  l   \kpz)dateutil.relativedeltar0  r  r2  r   r   r)   r+  rQ   r^  r,  r   r   r   r   r   r.   r/   rr   )r0  r2  r_   r"   rY  r9   s         r   &test_interval_array_from_relativedeltar:  	  s    5!AaaaqA	?@D ((4.Cc27788888r113333
Q",,QQ56aA",,!<=@DEF 	GHM xx&H::h==?!!#j%//89D%//Q?@ &'(() ) ) ) 
z	"
*OSABC 
#	z	"
*N#>?@ 
#	z	"
*&=)*, - 	. 
# 
z	"
*+;=>? 
#	" 
#	"	"	"	"	" 
#	"s0   IIII(III%(I1c                     d dg} t        j                  | t        j                               }t        |t         j                        sJ |j
                  t        j                         k(  sJ d t        j                  g d      g}t        j                  |      }|j                  |      sJ |j                         |k(  sJ y )N)r   r   )	r   r   r^  r)   r+  rQ   r,  r   r   r-  s       r   test_interval_array_from_tupler=  
  s    *D ((4335
6Cc27788888r113333

#%M xx&H::h==?m+++r   c                     ddl m}  d  | ddddddddd	       |        g}t        j                  |      }t	        |t        j
                        sJ |j                  t        j                         k(  sJ d t        j                  g d      t        j                  g d      g}t        j                  |      }|j                  |      sJ d  | ddt        j                  dddd	      t        j                  d
      z  d       | dddd      g}|j                         j                         |k(  sJ t        j                  |g      j                         j                         }t        |      dk(  sJ t        |d         |k(  sJ y )Nr   r1  r   )	r3  r4  r   r$  r%  r'  r(  r)  r8  )r4  r   l   E5IQ)r   r   r   r4  r   r6  r*  r7  )pandas.tseries.offsetsr2  r   r   r)   r+  rQ   r^  r,  r   r   r   r   r   r   r  )r2  r_   r"   rY  r9   expected_from_pandasactual_lists          r   #test_interval_array_from_dateoffsetrB  
  s~   1111AQA	? 	D ((4.Cc27788888r113333
./
	"$M xx&H::hj%//89D%//Q?@ &'( 	!!!CE ==?!!#';;;; ((D6",,.557K{q   A#7777r   c                  f   ddg} | D ]M  }t        j                  g d|      }t        j                  |      }|j                  dk(  sJ t        j                  g dd      }|j	                  |      sJ t        j                  g d      }t        j                  ||      }t        j                  g d	d      }|j	                  |      sJ t        j                  g dd
z  |      d d d   }t        j                  g dd
z        d d d   }t        j                  ||      }t        j                  g dd      }|j	                  |      rNJ  t        j                  g dd      }t        j                  |      }t        j                  g dd      }|j	                  |      sJ y )Nz<U5z>U5r  rz   r  rP   r  rV  r  rl   r   r  r  z<U0r   )dtypesr{   r"   r!  r9   rT  s         r   test_array_from_numpy_unicoderE  ;
  si   U^Fhh+59HHSM	~~'''880v>)))xx,-HHSt,	88/f=))) hh+a/u=ccBxx,q01#A#6HHSt,	88 *068)))) . ((<u
-CIxx62HH%%%r   c                      t        j                  t              5  t        j                  t        j                  g d      t        j                                d d d        y # 1 sw Y   y xY wNr   rP   )r.   r/   r0   r   r   rc   r   r2   r   r   !test_array_string_from_non_stringrH  \
  s9     
y	!
)$299;7 
"	!	!s   ?A""A+c                  @   t        j                  d d gt              } t        j                  | t        j                               }|j
                  dk(  sJ t        j                  t         j                  t         j                  gd      } t        j                  t              5  t        j                  | t        j                                d d d        t        j                  | t        j                         d      }|j
                  dk(  sJ y # 1 sw Y   ExY w)Nrz   rP   r   r   Tr  )
rc   r   r}   r   r   r   rX  r.   r/   r0   )valsr"   s     r   test_array_string_from_all_nullrK  c
  s     88T4L/D
((4biik
*C>>Q88RVVRVV$I6D	y	!
BIIK( 
"
((4biikt
<C>>Q 
"	!s   &*DDc                     t         j                  j                  g ddg d      } t        j                  |       }t        j                  g dd      }|j	                  |      sJ t        j                  t        d      5  t        j                  | t        j                  g d	      
       d d d        y # 1 sw Y   y xY w)Nr  r   FFTF)r{   rT  r   r   Nrk   rP   z Cannot pass a numpy masked arrayrm   )TFFFrV  )rc   mar   r   r   r.   r/   rr   rO  r8   r9   s      r   test_array_from_maskedrQ  r
  s    	\5 
 
7BXXb\Fxxg6H??6"""	z)K	L
"((#>?@ 
M	L	Ls   -B99Cc                      t         j                  j                  dgd      } t        j                  |       }t        j                  dgd      }|j	                  |      sJ y )Nr   r   rz   rP   )rc   rO  r   r   r   rP  s      r   test_array_from_shrunken_maskedrS  ~
  sK    	aS	(BXXb\Fxx'*H??6"""r   c                  |   d} t        j                  g dg dg      }t        j                  t        |       5  t        j                  |       d d d        t        j                  d      }t        j                  t        |       5  t        j                  |       d d d        y # 1 sw Y   XxY w# 1 sw Y   y xY w)Nz only handle 1-dimensional arraysr   rP  rm   r   r*  )ru   arr2darr0ds      r   "test_array_from_invalid_dim_raisesrW  
  sz    
,CHHi+,E	z	-
 
. HHQKE	z	-
 
.	-	 
.	- 
.	-s   B&B2&B/2B;c                  R   t        j                  dt              } t        j                  | d d df         }t        j                  g d      }|j                  |      sJ t        j                  | dd d f         }t        j                  ddg      }|j                  |      sJ y )N)r   r   rz   r   )TTTT)rc   onesr  r   r   r   r7   s      r   test_array_from_strided_boolrZ  
  s     ''&
%CXXc!Q$i Fxx*+H=="""XXc!Q$i Fxxt%H=="""r   c            	         g dt        j                         t        j                  d      ffg dt        j                         t        j                         t        j                         t        j
                         ffg dt        j                         t        j                         ffg dt        j                         ffg} | D ]x  \  }}t        j                  |      }|D ]Y  }d t        j                  ddg      fD ];  }t        j                  |d d d   ||      }|d d d   |j                         k(  r;J  [ z y )N   abs   cd   efr   r   r3  )abcdefFrV  )r   rO   r   r8  r   r   r!  r   r  rc   r   r   )pydatar   rD  nparraypatyperT  arrow_arrays          r   test_array_from_stridedrf  
  s     
biil ;<	RWWY
BHHJ
CD	2::<67	bggi]+	F !((6"Frxx78 hhwss|V,02cc{k&;&;&==== 9  !r   c                  |    t        j                  g ddz        } | j                  dk(  sJ | j                  dk(  sJ y )N)TTNFNTr  i  )r   r   
true_countfalse_countr+   s    r   #test_boolean_true_count_false_countrj  
  s:    
((84?
@C>>T!!!??d"""r   c                     t        j                  g dt        j                               } | j                         }t	        |      dk(  sJ |d   j                         }dt	        |      cxk  rdk  sJ  J t        |      d   dk(  sJ | dd  }|j                         }|j                  dk(   t	        |      dk(  sJ |d   j                         }dt	        |      cxk  rdk  sJ  J t        |      d   dk(  sJ t        j                  d|d   j                               d	k(  sJ t        j                  t        j                  g d
            } | j                         }t	        |      dk(  sJ |d   J t        j                  d|d   j                               d
k(  sJ t        j                  g d      } | j                         }t	        |      dk(  sJ |d   j                         }t        |      d   dk(  sJ |d   j                         }t        j                  d|      dk(  sJ |d   j                         }|dk(  sJ y )NrN  rP   r   r   r   @   rT   hhxxh)r   r   rk   rP  3b)s   foo!Ns   bar!!r   rl   4i)r   rk   rk   r   s	   foo!bar!!)r   r   r8  r\   r   
to_pybytes	bytearrayr6  r  unpackrc   r   )r   r\   null_bitmapa_slicedr  r   s         r   test_buffers_primitiveru  
  s/   
rxxz2AiikGw<1!*'')KK &B&&&&&[!!$
222 uH GOOqw<1!*'')KK &B&&&&&[!!$
222=='!*"7"7"9:iGGG
#$AiikGw<11:==wqz44679DDD
*+AiikGw<1!*'')K[!!$
222aj##%G==w'<777QZ""$F\!!!r   c                     t        j                  ddgd g dgt        j                  t        j                                     } | j	                         }t        |      dk(  sJ |d   j                         }t        |      d   dk(  sJ |d   j                         }t        j                  d|      d	k(  sJ |d   j                         }t        |      d   d
k(  sJ |d   j                         }t        j                  d|      dk(  sJ t        j                  g dt        j                  t        j                  dt        j                               t        j                  dt        j                               g            } | j	                         }t        |      dk(  sJ |d   j                         }t        |      d   dk(  sJ |d   j                         }t        |      d   dk(  sJ |d   j                         }t        j                  d|      dk(  sJ |d   j                         }t        |      d   dk(  sJ |d   j                         }t        j                  d|      dk(  sJ y )Nr   r   r   Nrk   rl   rP   rk   r   rl   ro  r  7   r   qqq8xqq)r   r   r   rk   rl   ))*   NN)N+   r   r   bxx)rz  r   4xh)r{  )r   r   r  r   r\   r   rp  rq  r  rr  r   r   r8  )r   r\   rs  r  r   s        r   test_buffers_nestedr~  
  s/   
1a&$0rxx
7KLAiikGw<1!*'')K[!!$
222aj##%G==w'<777!*'')K[!!$
222QZ""$F==F+>>>
/ii#rwwy!9!##rxxz!:!< =	>A iikGw<1!*'')K[!!$
222!*'')K[!!$
222QZ""$F=='5000!*'')K[!!$
222QZ""$F=='5000r   c            	         t        j                  t        j                  g dd            } | j                  dk(  sJ | j	                         dk(  sJ t        j                  |       t        j                  |       | j                  z   k\  sJ t        j                  g dd      } | j                  dk(  sJ | j	                         dk(  sJ t        j                  |       t        j                  |       | j                  z   k\  sJ t        j                  dd	gd g d
gt        j                  t        j                                     } | j                  dk(  sJ | j	                         dk(  sJ t        j                  |       t        j                  |       | j                  z   k\  sJ t        j                  g dgddgggt        j                  t        j                  t        j                                           } | j	                         dk(  sJ | j                  dk(  sJ t        j                  dd	gddggg dd dggddgggt        j                  t        j                  t        j                                           } | j                  dd	      }|j                  dk(  sJ |j	                         dk(  sJ y )NrP  r   rz      r   Nr   rP      r   r   rw  >   B   )rl   r   r3  r   rZ         r   rk   r      rx  )r   r   rc   nbytesget_total_buffer_sizer   	getsizeofr}   
__sizeof__r  r   r   rV   )r   r  s     r   test_total_buffer_sizer     s5   
)734A88u""$---==v003ahh>>>>
G,A88w""$///==v003ahh>>>>
1a&$0rxx
7KLA88r>>""$(======v003ahh>>>>
9+By)"'')9L0MNA""$(CCCC88r>>
Aq6Aq6"Yqc$:aWIFhhrxx	23	5A	
AB997777##%)IIIIr   c                      t        j                  t        j                  g dt        j                               t        j                  g dt        j                               g      } | j                  dk(  sJ y )Nr  rP   rP  r4  )r   rq   r   r8  r  )r   s    r   test_nbytes_sizer    sP    
"((<bhhjA((9288:>@ 	AA88r>>r   c                      t        j                  t              5  t        t	        j
                  dg             d d d        y # 1 sw Y   y xY w)Nr   )r.   r/   r0   reprr   Tensorr2   r   r   $test_invalid_tensor_constructor_reprr    s,    	y	!RYYs^ 
"	!	!    AAc                      t        j                  t              5  t        j                          d d d        y # 1 sw Y   y xY wr(  )r.   r/   r0   r   r  r2   r   r    test_invalid_tensor_constructionr  $  s#    	y	!
		 
"	!	!s	   8A)offset_typerE  c           
      0    | |t        j                                     }t        j                  d g dd ddggg g ddgd gddggg|      }t        j                  g d	|       } |t        j                               }t        j                  g dd ddgg ddgd ddgg|      }t        j                  g d
|       }t        j                  g dt        j                               }|j                         j	                  |      sJ |j
                  j	                  |      sJ |j                  j	                  |      sJ |j                         j	                  |      sJ |j
                  j	                  |      sJ |j                  j	                  |      sJ |j                         j                         j	                  |      sJ |j                  j                  j	                  |      sJ |j                  d      j	                  |      sJ y )Nr&   r   rk   rl   r   r3  r   rP   )r   r   r   r   r   r3  )r   r   r   rl   rl   r3  r3  r   	r   Nr   r   rk   rl   r   r3  r   T)r   r   r   flattenr   r  r   )	r  rE  r%  r  r  r$  r  offsets1arr0s	            r   test_list_array_flattenr  )  s    HHJ	
D
 88F	

 	F	
 F	
  !D" xx*=HRXXZ(D88	
A
	
A	
A D xx0{CH88 
 HHJD <<>  &&&<<x(((;;d###<<>  &&&<<x(((;;d###<<>!!#**4000;;$$T***<<$$T***r   	list_typer  c                     t        j                  ddgd d d gddgg|       }t        j                  g dt        j                               }|j                         j	                  |      sJ y )Nr   r   r   rk   rP   )r   r   r   r   r   r   )r   r   r   value_parent_indicesr   )r  r"   r9   s      r   test_list_value_parent_indicesr  b  sj    
 ((F4LF		

 C xx*<H##%,,X666r   )r  r  c                 F   t        |dd       r;t        j                  ddgd d d gddgg|      }t        j                  g d|       }n8t        j                  g dd g ddgg|      }t        j                  g d	|       }|j                         j	                  |      sJ y )
Nr  r   r   r   rk   rP   )r   Nr   r   rG  )r   Nr   r   )getattrr   r   value_lengthsr   )r  r  r"   r9   s       r   test_list_value_lengthsr  r  s     y+t,hhAtA	
  88O+> hhA	
  88O+>%%h///r   c                     | t        j                               }t        j                  dgddgg dg|      }|j                         d d }t        j                  d      |d<   |j                  |j                  t        |      ||j                  g      }|j                         dgd g dgk(  sJ |j                  j                         g d	k(  sJ |j                         }|j                  d
       |j                  |j                  k(  sJ |j                         g dk(  sJ |j                  j                         g dk(  sJ y )Nr   r   r   rP  rP      r   rH  )r   r   r   r   Tr  )r   rk   rl   r   r   r   r   rk   rl   r   )r   r   r   r\   r7  r9  rQ   r   r   r   r  r  r   
value_type)rE  r  r"   r\   	flatteneds        r   %test_list_array_flatten_non_canonicalr    s    BHHJ
'C
((QC!Q+#
6CkkmBQGg&GAJ


388SXw#**

NC==?sD)4444;;  "l222ID!>>S^^+++ L000 ::!%7777r   klassc                 |   | j                  g dg d      }|j                  j                         g dk(  sJ |j                  j                         g dk(  sJ |dd  }|j                  j                         g dk(  sJ |j                  j                         g dk(  sJ |j	                         j                         g dk(  sJ |j                  d   j                         }|j                  d   j                         }|d   j                         |j                  || j                         cxk(  rdgk(  sJ  J y )	N)r   r   rk   r   r  )r  r   r   )r   rk   r   rP  r   rk   r   r   r   r  r  r'   )r  r"   r  r   r  s        r   %test_list_array_values_offsets_slicedr    s    

L9K

LC::!%7777;;  "l222
 qr7D;;  "&8888<<!!#y000<<>##%222QAQA7==?dkk!A.88:AqcAAAAAr   c            	         t        j                  t        j                  t        j                         d      d      } t        j                  ddgddgddggd dd gd dd	ggg| 
      }|j                  j                  |       sJ t        j                  t        j                         d      }t        j                  ddgddgddgdd gd dd	gg|
      }|j                  j                  |      sJ |j                         j                  |      sJ t        j                         }t        j                  g d|
      }|j                  j                  |      sJ |j                         j                  |      sJ |j                         j                         j                  |      sJ |j                         j                  |      sJ |j                  d      j                  |      sJ y )Nr   r   r   rk   rl   r   r3  r   r   rP   )
r   r   r   rk   rl   r   r3  Nr   r   T)r   r  r   r   rQ   r   r  )r%  r  r$  r  typ0r  s         r   "test_fixed_size_list_array_flattenr    s   88BHHRXXZ+Q/D88FFF	

 	IF	
 D 99D!!!88BHHJ"D88	
AAA	
D	4!Q D 99D!!!<<>  &&&88:D88 D 99D!!!<<>  &&&<<>!!#**4000<<>  &&&<<$$T***r   c                     t        j                  dgdgdggt        j                  t        j                         d            } | dd  j	                         t        j                  dgt        j                               k(  sJ y )Nr   r   r   r  rP   )r   r   r  r   r  )r   s    r   -test_fixed_size_list_array_flatten_with_slicer    sb    HHqcA3_((2::<1=?E9"((A3RZZ\"BBBBr   c            	      Z   t        j                  t        j                         t        j                               } t        j                  t        j
                  dt        j                         d      t        j
                  dt        j                               g      }t        j                  ddgdgg|       }|j                  j                  j                  |      sJ |j                  t        j                  d	d
dddddddg|      k(  sJ |j                  j                  t        j                  g d            sJ |j                  j                  t        j                  g dt        j                                     sJ t         j                  j                  |j                  |j                        j                  t        j                  d	dgdgg            sJ t         j                  j                  |j                  |j                        j                  t        j                  d
dgdggt        j                  t        j                                           sJ t!        j"                  t$              5  |j'                          d d d        y # 1 sw Y   y xY w)NkeyFrQ  r   r  r  r  rP   r   r   )r  r   r   r   r   r   r   r   )r   r  r  r   r  r   r   r   rQ   r   r  r  r  r   r  r  r.   r/   r  r  )r   	ty_valuesr   s      r   test_map_array_values_offsetsr    s   	BHHJ	'B		288E2779uE88GRXXZ8: ;I
8X&
3"=A88==	***88rxxa a a ! 	   
 66==/233377>>"((9288:>???<<##AIIqvv6==
3*se$%' ' '<<##AIIqww7>>
1a&1#RXXbhhj%9:< < < 
*	+			 
,	+	+s   J!!J*c                  F   t        j                  t        j                  dt        j                               t        j                  dt        j                               g      } t        j
                  g d|       }|j                         \  }}|j                  t        j                         k(  sJ |j                  t        j                         k(  sJ |j                         g dk(  sJ |j                         g dk(  sJ |dd  j                         \  }}|j                         dd	gk(  sJ |j                         d
dgk(  sJ t        j
                  g d|       }|j                         \  }}|j                         g dk(  sJ |j                         g dk(  sJ |dd  j                         \  }}|j                         d dgk(  sJ |j                         d d
gk(  sJ t        j
                  g d|       }|j                         \  }}|j                         g dk(  sJ |j                         g dk(  sJ |dd  j                         \  }}|j                         dd gk(  sJ |j                         dd
gk(  sJ t        j
                  g d|       }|j                         \  }}|j                         g dk(  sJ |j                         g dk(  sJ |dd  j                         \  }}|j                         d d gk(  sJ |j                         d dgk(  sJ y )Nr   r  r  rP   r  r  r  r  r   r   rl   r  r  )r  Nr  r  )r  Nr  )r   N)r         @)Nr  r|   )Nr  r  r   r  )r  N)Nr  )r   NN)NNr  r  )	r   r  r   r8  r!  r   r  rQ   r   )r   r   xsyss       r   test_struct_array_flattenr    s   	BHHS"((*-HHS"**,/1 
2B
/b9AYY[FB77bhhj   77bjjl"""<<>Y&&&<<>_,,,qrU]]_FB<<>aV###<<>c3Z'''
+"5AYY[FB<<>\)))<<>----qrU]]_FB<<>dAY&&&<<>dC[(((
3"=AYY[FB<<>\)))<<>----qrU]]_FB<<>aY&&&<<>c3Z'''
/b9AYY[FB<<>_,,,<<>....qrU]]_FB<<>dD\)))<<>dC[(((r   c                     t        j                  t        j                  dt        j                               t        j                  dt        j                               g      } t        j
                  g d|       }|j                  d      }|j                  d      }|j                  d      }|j                  d      }|j                  d      }|j                  d      }t        |t         j                  j                        sJ t        |t         j                  j                        sJ |j                  t        j
                  g d	t        j                                     sJ |j                  t        j
                  g d
t        j                                     sJ |j                  |      sJ |j                  |      sJ |j                  |      sJ |j                  |      sJ d t        j                         fD ]5  }t        j                  t              5  |j                  |       d d d        7 dD ]5  }t        j                  t              5  |j                  |       d d d        7 dD ]5  }	t        j                  t              5  |j                  |	       d d d        7 y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   ZxY w)Nr   r  r  rP   r   r   r   r   r  r  r   r<  zr=   )r   r  r   r8  r!  r   r)   r   
Int16Array
FloatArrayr   r.   r/   r0   r   r  
r   r   x0y0x1y1x2y2invalid_indexinvalid_names
             r   test_struct_array_fieldr  !  s   	BHHS"((*-HHS"**,/1 
2B
/b9A	
B	
B	
B	
B	
B	
Bb"&&++,,,b"&&++,,,99RXXibhhj9:::99RXXoBJJLABBB99R==99R==99R==99R==
+]]9%GGM" &% , !]]:&GGM" '& ! "]]8$GGL! %$ " &% '& %$s$   %J6KK6J?	K	K	c                     t        j                  t        j                  dt        j                               t        j                  dt        j                               g      } t        j
                  g d| t        j
                  g d            }|j                  d      }|j                  d      }|j                  d      }|j                  d	      }|j                  d      }|j                  d      }t        |t         j                  j                        sJ t        |t         j                  j                        sJ |j                  t        j
                  g d
t        j                                     sJ |j                  t        j
                  g dt        j                                     sJ |j                  |      sJ |j                  |      sJ |j                  |      sJ |j                  |      sJ d t        j                         fD ]5  }t        j                  t              5  |j                  |       d d d        7 dD ]5  }t        j                  t              5  |j                  |       d d d        7 dD ]5  }	t        j                  t               5  |j                  |	       d d d        7 y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   ZxY w)Nr   r  r  r  r  r   r   r   r   )r   Nrl   rP   )r  Nr  r  r  )r   r  r   r8  r!  r   _flattened_fieldr)   r   r  r  r   r.   r/   r0   r   r  r  s
             r   !test_struct_array_flattened_fieldr  C  s'   	BHHS"((*-HHS"**,/1 
2B
/bhh34	6A 
		A	B	
		A	B	
		B	B	
		B	B	
		C	 B	
		C	 Bb"&&++,,,b"&&++,,,99RXXl<===99RXX.RZZ\BCCC99R==99R==99R==99R==
+]]9%}- &% , !]]:&}- '& ! "]]8$|, %$ " &% '& %$s$   ;K5K/K$K	K!	$K-	c                     t        j                         t        j                         t        j                         t        j                         t        j
                         t        j                         t        j                         t        j                         t        j                         t        j                         t        j                         t        j                         t        j                         t        j                         t        j                         t        j                          t        j                   d      t        j"                         g} t%        j&                  | |       D ],  \  }}	 t        j(                  g |      j+                  |       . y # t         j,                  j.                  t         j0                  f$ r Y _w xY w)Nrk   )lengthrP   )r   r   r  r   r8  r   r   r   r  r  rh  r]  r!  r   r  r  rO   r   	itertoolsproductr   r  r   r  rr  )r  t1t2s      r   test_empty_castr  f  s   
	


	








		
		
		









		
		
		
		
		%E* %%eU3R	 HHRb!&&r*	 4
 //A 		s   8&F!!-GGc                  ~   t         j                  j                  g dddg      } t         j                  j                  g d|       }|j	                         ddgdggk(  sJ t         j                  j                  g dddg      } t         j                  j                  g d|       }|j	                         g dk(  sJ y )Nr  r   r   )r   r   r   )r   r   r   r   r   )r   r   r   r   r   )r   r   r   r  r   )r  list_arr	dict_arr2s      r   test_nested_dictionary_arrayr    s    !!--i#sDH||''	8<HS#J#6666!!--i#sDH""..II $====r   c                     t        j                  ddg      } t        j                  ddgt              }t        j                  | t        j                               }t        j                  |t        j                               }t        j                  ddg      }|j                  |      sJ |j                  |      sJ t        j                  ddgt              }t        j                  | t        j                         |      }|j                  |      sJ t        j                  dj                  d      g      } t        j                  t              5  t        j                  | t        j                                d d d        t        j                  t              5  t        j                  | t        j                         t        j                  dg             d d d        y # 1 sw Y   jxY w# 1 sw Y   y xY w)Ntototatarz   FrV  r  r  )rc   r   r}   r   r   r   r  r  r.   r/   rr   )vecvec2r"   r  r9   rT  s         r   test_array_from_numpy_str_utf8r    s[    ((FF#
$C88VV$F3D
((3		
$C88D"))+&Dxx()H::h;;x    88UEN$/D
((3		$
/C::h ((Y&&{34
5C	z	"
biik" 
# 
z	"
biik%(9: 
#	" 
#	" 
#	"s   )G,$?G8,G58Hc            	      x   dg} dg}t        d      D ci c]&  }|ddz  t        |dz        j                  d      z   ( }}|j                         D ci c]  \  }}||j	                  d       }}}| t        d      D cg c]
  }||dz      c}z  } |t        d      D cg c]
  }||dz      c}z  }| t        j                         f|t        j                         ffD ]  \  }}t        j                  |      }t        j                  |      }	d }t        |	t
        j                        sJ |	j                  |k(  sJ |	j                  dk(  sJ d}
t        |	j                        D ]7  }|	j                  |      }|D ]  }|j                         ||
   k(  sJ |
d	z  }
! 9  y c c}w c c}}w c c}w c c}w )
N   xr   rZ   i r  i      r   r   )rC   r   r  r  decoder   rO   r  rc   r   r)   r+  rQ   r  r  r'   )r   unicode_valuesr   unique_stringsr   unicode_unique_stringsr  ex_typer"   r!  value_indexr  vals                r   %test_numpy_binary_overflow_to_chunkedr    s    VFUN
 rA 	
4=!CBK$6$6v$>>>  
 +9*>*>*@B*@$!Q  &!11*@  B
uW~>~!~a"f%~>>F %g0 .1 .a"f5 .0 0N "299;/)277957ghhtnHHSM	)R__555~~((( ##s***y++,AOOA&Eyy{d;&7777q   -7B>0s   +F'F,F2#F7c                     d} d}| gg|dz
  z  }t        j                  |      }t        |t         j                        sJ t	        |      |dz
  k(  sJ | gg|z  }t        j                  |      }t        |t         j
                        sJ t	        |      |k(  sJ t	        |j                  d            |dz
  k(  sJ t	        |j                  d            dk(  sJ y )N   xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxi    r   r   )r   r   r)   r1   r   r+  r  )kilobyte_stringtwo_megarJ  r"   s       r   #test_list_child_overflow_to_chunkedr    s     OH(Q,/D
((4.Cc288$$$s8x!|###)D
((4.Cc2??+++s8xsyy|1,,,syy|!!!r   c                  V   t        j                  g dg d      } | t        j                         k(  sJ t        j                  g dt        j                  g d            } | t        j
                         k(  sJ t        j                  g g       t        j
                         k(  sJ y )N)r>   r   Nr   FFFTrV  TTTT)r   
infer_typer  rc   r   r   )r   s    r   test_infer_type_maskedr    s~     
.7
9B?? 
.HH%=>
@B?? =="%222r   c                  r   t        j                  g dt        j                  g d            } | j                  t        j                         k(  sJ t        j                  t        j                  g dd      t        j                  g d            } | j                  t        j                         k(  sJ y )Nrk   Nrk   r4  FTFTrV  r   rz   )r   r   rc   rQ   r   r+   s    r   test_array_maskedr    s}     ((#!;<>C88rxxz!!! ((288,C8!;<>C88rxxz!!!r   c                     t        j                  g dt        j                  g d            } | j                         g dk(  sJ t        j                  g dt        j                  g d            } | j                         g dk(  sJ t        j                  g dg d      } | j                         g dk(  sJ t        j                  g dg d      } | j                         g dk(  sJ t	        j
                  t         j                        5  t        j                  g dt        j                  g d            } d d d        t	        j
                  t         j                        5  t        j                  g dg d      } d d d        t	        j
                  t         j                        5  t        j                  g dt        j                  g d            } d d d        t	        j
                  t         j                        5  t        j                  g dt        j                  g dt        j                  g d	                  } d d d        t	        j
                  t         j                        5  t        j                  g dt        j                  g d
            } d d d        t	        j
                  t              5  t        j                  t        j                  g d      g d      } d d d        t	        j
                  t              5  t        j                  t        j                  g d      t        j                  g d            } d d d        y # 1 sw Y   *xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   ?xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   y xY w)Nr  r  rV  )rk   Nrk   N)rk   Nrk   r   )rk   r   Nr   )rk   NNN)r   r   r4  g      @r  )FNFTTFTF)r   r   rc   r   r.   r/   r  r0   r+   s    r   test_array_supported_masksr    s|    ((#!;<>C==?0000
((?!;<>C==?0000
((?24C==?0000
((?24C==?3333 
r((	)hhHH%9:< 
* 
r((	)hh02 
* 
r((	)hhHH%9:< 
* 
r((	)hhHH%?*,((3K*LNO 
*
 
r((	)hhHH%?@B 
*
 
y	!hhrxx 0168 
" 
y	!hhrxx 01HH%?@B 
"	!5 
*	) 
*	) 
*	) 
*	)
 
*	)
 
"	! 
"	!sV   /M),M63/NAN>/N/N)AN5)M36N NNN&)N25N>c                      dd l } t        j                  | j                  ddgdd      | j                  ddgd	      
      }|j	                         d dgk(  sJ y )Nr   r   r   r   )r  r{   TFr  rz   rV  )r  r   r   Seriesr   )r  r"   s     r   !test_array_supported_pandas_masksr  5  sU    
((6==!Qc=AtUm6BDC==?tQi'''r   c                     t        j                  dgt        j                  d      t        j                  dg            } dg| j	                         k(  sJ t        j                  t        j                  dg      t        j                  d      t        j                  dg            }dg|j	                         k(  sJ t        j                  t        j                  dg      t        j                  d      t        j                  dg            }d g|j	                         k(  sJ t        j                  t        j                  dg      t        j                         t        j                  dg            }dg|j	                         k(  sJ t        j                  t        j                  dg      t        j                         t        j                  dg            }d g|j	                         k(  sJ t        j                  g ddz        }t        j                  |t        j                  d      t        j                  g d	dz              }d
||dk(  <   g ddz  |j	                         k(  sJ y )Nr  r   Fr  T)s   aaa   bbbs   cccrZ   r   )FFFs   XXXr  )r   r   rO   rc   r   )masked_basicmaskedmasked_nullsnpare  s        r   test_binary_array_maskedr	  =  s    88WIBIIaL!#5'!24L9..0000 XXbhhy)		!88UG,.F9((****88BHHgY/biil!#4&!13L6\++---- XXbhhy)		88UG,.F9((****88BHHgY/biik!#4&!13L6\++---- ((+B.
/C((3RYYq\ ")>r)A BDKCv$R'K,A,A,CCCCr   c                     t        j                  g d      } t        j                  | d d d   t        j                  d      t        j                  ddg            }ddg|j	                         k(  sJ t        j                  g d      } t        j                  | d d d   t        j                  d            }ddg|j	                         k(  sJ y )Nr\  r   FrV  r]  r^  )rc   r   r   rO   r   )rc  re  s     r   test_binary_array_stridedr  ^  s     hh,-G((73Q3<1 "% 8:K5>[224444 hh,-G((73Q3<16K5>[224444r   c            
         ddgt        j                  ddgd      t        dfddgt        j                  dgdgg      t        j                  dfg dt        j                  ddg      t        j                  d	ft        j                  ddg      t        j                  ddgd      t        dft        j                  ddg      t        j                  dgdgg      t
        dft        j                  g d      t        j                  ddg      t
        d	fg} | D ]>  \  }}}}t        j                  ||
      5  t        j                  ||       d d d        @ y # 1 sw Y   KxY w)Nr   r   Fr   rz   zmust be boolean dtypezmust be 1D arrayr   zdifferent lengthrm   rV  )rc   r   r0   r   rr  rr   r.   r/   )r   objrT  exru   s        r   test_array_invalid_mask_raisesr  l  sD    Q5%.4	+	- QE7UG,-	,	. 
BHHeU^,	,	. 
1a&	288UEN#>	+	- 
1a&	288eWug$67	'	) 
)	bhhu~6	'	)!E& $T2s]]2S)HHSt$ *) $))s   9EE%	c                      t        j                  t              5  t        j                  t        d      g       d d d        y # 1 sw Y   y xY w)Nr  )r.   r/   OverflowErrorr   r   r  r2   r   r   test_array_from_large_pyintsr    s,    	}	%
#g,  
&	%	%r  c                  $   t        j                  g d      } t        j                  |       }t        j                  g dd      }t        j                  j                  ||       t        j                  | d      }t        j                  j                  ||       t        j                  | dd      }t        j                  j                  ||       t        j                  g d      } t        j                  dd	t        j                  gd
      }t        j                  |       }t        j                  j                  ||       t        t        j                        t        d      k  rpt        j                  | d      }t        j                  j                  ||       t        j                  | d
d      }t        j                  j                  ||       nt        j                  t        d      5  t        j                  | d       d d d        t        j                  g d      } t        j                  t              5  t        j                  | d
d       d d d        t        j                  g d      } | j                  d      }|j                  j                  sJ t        j                  g d      } | j                  t        j                  d
      d      }|j                  d
k(  sJ y # 1 sw Y   xY w# 1 sw Y   xY w)Nr   r   rz   F)copy)r{   r  r|   r   r   r   z
2.0.0.dev0zUnable to avoid a copyrm   T)r   r   rc   r   re   rf   rX  r   __version__r.   r/   rr   	__array__flags	writeabler{   r7   s      r   test_numpy_array_protocolr    s    ((9
CZZ_Fxx	1HJJ!!&(3 XXc&FJJ!!&(3XXcu5FJJ!!&(3 ((<
 CxxArvvi8HZZ_FJJ!!&(3r~~!66#E*


%%fh7#YU;


%%fh7 ]]:-EFHHSu% G hhy!]]:&HHS	6 ' ((9
C]]]%F<<!!!!
((9
C]])!44]@F<<9$$$ GF '&s   9K:	L:LLc                      G d d      }  | t        j                  g dd            }t        j                  |      }t        j                  g dt        j                               }|j	                  |      sJ t        j                  |t        j                               }t        j                  g dt        j                               }|j	                  |      sJ t        j                  |t        j
                               }t        j                  g dt        j
                               }|j	                  |      sJ t        j                  t              5  t        j                  |t        j                  g d             d d d        t        j                  t              5  t        j                  |d	
       d d d         G d d      } |t        j                  g dd            }t        j                  t              5  t        j                  |       d d d         G d d      } |t        j                  g dd            }t        j                  |      }t        j                  g dt        j                               }|j	                  |      sJ  G d d      }t        j                  g dd      } |||      }t        j                  |      }t        j                  g dg dgt        j                               }|j	                  |      sJ y # 1 sw Y   xY w# 1 sw Y   wxY w# 1 sw Y   $xY w)Nc                       e Zd Zd ZddZy)$test_array_protocol.<locals>.MyArrayc                     || _         y r(  r_   selfr_   s     r   __init__z-test_array_protocol.<locals>.MyArray.__init__  	    DIr   Nc                 D    t        j                  | j                  |      S r#  )r   r   r_   r   rQ   s     r   __arrow_array__z4test_array_protocol.<locals>.MyArray.__arrow_array__  s    88DIID11r   r(  r&  r'  r(  r!  r%  r2   r   r   MyArrayr    s    		2r   r'  r   r   rz   rP   rx   rV  r   r  c                       e Zd Zd ZddZy)+test_array_protocol.<locals>.MyArrayInvalidc                     || _         y r(  r  r  s     r   r!  z4test_array_protocol.<locals>.MyArrayInvalid.__init__  r"  r   Nc                 @    t        j                  | j                        S r(  )rc   r   r_   r$  s     r   r%  z;test_array_protocol.<locals>.MyArrayInvalid.__arrow_array__  s    88DII&&r   r(  r&  r2   r   r   MyArrayInvalidr)    s    		'r   r,  c                       e Zd Zd ZddZy)%test_array_protocol.<locals>.MyArray2c                     || _         y r(  r  r  s     r   r!  z.test_array_protocol.<locals>.MyArray2.__init__  r"  r   Nc                 F    t        j                  | j                  g|      S r#  )r   rq   r_   r$  s     r   r%  z5test_array_protocol.<locals>.MyArray2.__arrow_array__  s    ##TYYKd;;r   r(  r&  r2   r   r   MyArray2r.    s    		<r   r1  c                       e Zd Zd ZddZy)%test_array_protocol.<locals>.MyArray3c                      || _         || _        y r(  )data1data2)r   r5  r6  s      r   r!  z.test_array_protocol.<locals>.MyArray3.__init__  s    DJDJr   Nc                 \    t        j                  | j                  | j                  g|      S r#  )r   rq   r5  r6  r$  s     r   r%  z5test_array_protocol.<locals>.MyArray3.__arrow_array__  s"    ##TZZ$<4HHr   r(  r&  r2   r   r   MyArray3r3    s    		Ir   r8  )rc   r   r   r   r   r   r.   r/   rr   r0   rq   )r'  r"   r8   r9   r,  r1  r8  rg   s           r   test_array_protocolr9    s1   2 2 "((9G4
5CXXc]Fxx	
3H=="""XXc
+Fxx	
3H=="""XXc

-Fxx	

5H==""" 
z	"
288$789 
#	z	"
1 
#' ' )7;
<C	y	!
 
"
< < 288IW5
6CXXc]Fxx	
3H=="""I I XXiw/F
66
"CXXc]FI 6RXXZHH=="""W 
#	"	"	" 
"	!s$   $-L22L?M2L<?M	Mc                       e Zd Zd ZddZy)ArrayWrapperc                     || _         y r(  r  r  s     r   r!  zArrayWrapper.__init__  	    	r   Nc                 8    | j                   j                  |      S r(  )r_   __arrow_c_array__)r   requested_schemas     r   r?  zArrayWrapper.__arrow_c_array__  s    yy**+;<<r   r(  )r&  r'  r(  r!  r?  r2   r   r   r;  r;    s    =r   r;  c                       e Zd Zd ZddZy)ArrayDeviceWrapperc                     || _         y r(  r  r  s     r   r!  zArrayDeviceWrapper.__init__
  r=  r   Nc                 <     | j                   j                  |fi |S r(  )r_   __arrow_c_device_array__)r   r@  kwargss      r   rE  z+ArrayDeviceWrapper.__arrow_c_device_array__  s    1tyy112BMfMMr   r(  )r&  r'  r(  r!  rE  r2   r   r   rB  rB  	  s    Nr   rB  wrapper_classc                 d    | t        j                  g dt        j                                     }t        j                  |      }||j                  k(  sJ t        j                  |t        j                               }|t        j                  g dt        j                               k(  sJ y rG  )r   r   r   r_   r   )rG  r"   r8   s      r   test_c_array_protocolrI    su     <
=CXXc]FSXX XXc
+FRXXibhhj9999r   c                     t        j                  g dt        j                               } t        j                  t
        d      5  | j                  d       d d d        | j                  d       }y # 1 sw Y   xY w)Nr   rP   z7Received unsupported keyword argument\(s\): \['other'\]rm   znot-none)other)r   r   r   r.   r/   r  rE  )r"   r   s     r   0test_c_array_protocol_device_unsupported_keywordrL    sb    
((9288:
.C	H
 	$$:$6	
 	$$4$0A
 
s   A55A>c                      t        j                  t        j                  ddg      t        j                  ddg      g      } | j                  t        j                  g d            sJ y )Nr   r   r   rk   r  )r   concat_arraysr   r   )concatenateds    r   test_concat_arrayrP  ,  sQ    ##	1a&	288QF+,.Lrxx5666r   c                      t        j                  t        j                        5  t        j                  t        j
                  dg      t        j
                  dg      g       d d d        y # 1 sw Y   y xY w)Nr   r   )r.   r/   r   rr  rN  r   r2   r   r   !test_concat_array_different_typesrR  2  sE    	r	'
"((A3-2$89 
(	'	's   A A--A6c                  P   t        j                  t        d      5  t        j                  d g       d d d        t        j
                  ddgddgg      } t        j                  t        d      5  t        j                  |        d d d        y # 1 sw Y   ^xY w# 1 sw Y   y xY w)Nzshould contain Array objectsrm   r   r   r   rk   )r.   r/   r0   r   rN  rq   r+   s    r   test_concat_array_invalid_typerT  7  s     
y(F	G
$  
H 

QFQF+
,C	y(F	G
 
H	G	 
H	G 
H	Gs   B1BBB%c                  ,   t        j                  g dt        j                  dd            } | j                         }|j                  j
                  J t        j                  | g      } | j                         }|j                  j
                  J y )Nr   r   zEurope/Brusselsr   rP   )r   r   r   r   dtr   rq   )r"   r   s     r   test_to_pandas_timezonerW  B  sp     ((92<<8I#J
KCA4477


C5
!CA4477r   c                  "   t        j                  d      gt        j                  d      gt        j                  d      gg} t        j                  |       }|j	                         }|d   j
                  dk(  sJ |j                         | k(  sJ y )Nr   r   r   r   r]  )rc   r]  r   r   r   r{   r   )r9   r"   r8   s      r   test_to_pandas_float16_listrY  M  sq     A"**Q-2::a=/BH
((8
C]]_F!9??i'''==?h&&&r   c                  .   t        j                  g dt        j                               } | j                  d      }|j	                         g dk(  sJ t        j
                  g dg dg      } | j                  d      }|j	                         g dk(  sJ t        j                  g dt        j                               } | j                  dd	
      }|j	                         g dk(  sJ | j                  dd
      }|j	                         g dk(  sJ y )N)rl   r3  #   rP   
descending)r[  r3  rl   r   rP  )r   rl   rk   r   r   r   )rl   r3  r[  Nat_end)null_placement)r[  r3  rl   Nat_start)Nr[  r3  rl   )r   r   r   sortr   rq   )r"   
sorted_arrs     r   test_array_sortrb  W  s    
((:BHHJ
/C,'J!Z///


Iy1
2C,'J!%7777
((#"((*
5C,x@J!%5555,zBJ!%5555r   c                  n   t         j                  j                  t        j                  g dt        j                               t        j                  g d      gddg      } | j                  dd      }|j                         d	d
ddddddddddgk(  sJ | j                         }|j                         dddddddddd	d
dgk(  sJ t         j                  j                  t        j                  g dt        j                               t        j                  g d      gddgt        j                  g d            }|j                  ddd      }|j                         d d	d
dddddddgk(  sJ |j                  ddd      }|j                         d	d
dddddddd gk(  sJ y )N)rl   r3  r3  r[  rP   )r>   carr   foobarr   r   r  r\  )byr[  re  r   r3  rd  r   rl   r>   rM  rU  r_  )rf  r^  r]  )r   rW  r   r   r   r`  r   )r"   ra  arr_with_nullss      r   test_struct_array_sortrh  g  s   
..
$
$
RXXZ0
01& 3Z % C
 ,3/J!x eee	&    J!eeex 	&    ^^//
RXXZ0
011 3Zbhh'BC 0 EN
  $$Z % 9J!x ee	&     $$X % 7J!x ee	&   r   c                     t        j                  g d      } t        j                  |       }| |k(  sJ t        j                  | t        j                               }t        j                  g dt        j                               }||k(  sJ |j                  t        j                         k(  sJ t        j                  dgt        j                               } t        j                  t         j                        5  t        j                  | t        j                                d d d        t        j                  dgt        j                               }t        j                  | t        j                         d      }||k(  sJ t        j                  | t        j                               }| |k(  sJ y # 1 sw Y   xY w)Nr   rP   l    r   Fr  )memory_pool)
r   r   r   rQ   r   r.   r/   rr  r   default_memory_poolr7   s      r    test_array_accepts_pyarrow_arrayrl    s0   
((9
CXXc]F&== XXc
+Fxx	
3Hv==BHHJ&&& ((K=rxxz
2C	r	'
288:& 
( xx288:.HXXc
7FX XXcr'='='?@F&== 
(	's   ?*F==Gc                     | j                   j                         |k(  sJ | j                  j                         |k(  sJ t        |       |k(  sJ | j	                         |k(  sJ | j                         |k(  sJ y r(  )run_endsr   r   r   find_physical_lengthfind_physical_offset)	ree_arrayrn  r   logical_lengthphysical_lengthphysical_offsets         r   check_run_end_encodedru    s|    '')X555%%'6111y>^+++))+>>>))+>>>r   c                 v    g d}g d}t         j                  j                  |||       }t        |||ddd       y Nr   rl   rZ   rB  r   r   r   r   rB  rk   r   )r   RunEndEncodedArrayr   ru  )ree_typern  r   rq  s       r   +check_run_end_encoded_from_arrays_with_typer|    s8    HF%%11(FHMI)Xvr1a@r   c                    g d}g d}t        j                  || j                        }t        j                  || j                        }t         j                  j                  ||      }|j                  | k(  sJ t        |||ddd       y rw  )r   r   run_end_typer  rz  r   rQ   ru  )r{  rn  r   typed_run_endstyped_valuesrq  s         r   'check_run_end_encoded_from_typed_arraysr    st    HFXXh(=(=>N88FH$7$78L%%11.,OI>>X%%%)Xvr1a@r   c                     t                t        j                         t        j                         t        j                         fD ]  } t        j
                         t        j                         t        j                         t        j                         fD ].  }t        j                  | |      }t        |       t        |       0  y r(  )	r|  r   r8  r   r   r  rh  run_end_encodedr  )r~  r  r{  s      r    test_run_end_encoded_from_arraysr    sy    /1RXXZ<99;
BIIKLJ)),
CH7A3H= M =r   c            	         g d} g d}t        j                  t        j                         t        j                               }d}d g}d}d}| |g}t         j                  j                  ||||||      }t        || |ddd       t         j                  j                  ||g |||      }t        || |ddd       t         j                  j                  |||d||      }t        || |ddd       t         j                  j                  ||dz
  ||d|      }t        || ||dz
  dd	       t        j                  t              5  t         j                  j                  ||d d g|||       d d d        t        j                  t              5  t         j                  j                  |||||d        d d d        t        j                  t              5  t         j                  j                  |||||| g       d d d        t        j                  t              5  t         j                  j                  |||d	||       d d d        y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   hxY w# 1 sw Y   y xY w)
Nrx  ry  )r~  r  rB  r   rk   r   r   r   )
r   r  r   r   rz  r9  ru  r.   r/   rr   )	rn  r   r{  r  r\   r   r6  rI  rq  s	            r   !test_run_end_encoded_from_buffersr    s/   HF!!rxxzbhhjQHFfGJF&!H%%228VW3=v3;=I )Xvr1a@%%228VR3=v3;=I )Xvr1a@%%228VW35v3;=I )Xvr1a@%%228VaZ3=q(LI)Xvvz1aH	z	"
**8VdD\+5vx	I 
# 
z	"
**8VW+5vt	E 
# 
z	"
**8VW+5vz	K 
# 
z	"
**8VW+,fh	@ 
#	" 
#	" 
#	" 
#	" 
#	"s0    'I%I&I%I'III$'I0c                  T   g d} g d}t        j                  t        j                         t        j                               }t         j                  j                  | ||      }g d}t        j                  ||      }|j                  |      sJ t        j                  t        j                  |      |      }|j                  |      sJ t        j                  t        j                         t        j                               }t        j                  ||      }|j                  |      rJ t         j                  j                  | ||      }|j                  |      sJ g d} g d}t         j                  j                  | ||      }g d}t        j                  ||      }|j                  |      sJ g d} g d	}t         j                  j                  | ||      }t        j                  g d
      }t        j                  |||      }|j                  |      sJ y )N)r   r   r   r   r   r   r   r   r   r   rP   )r   r   rl   r   )r   r   r   N)r   r   r   r   r   N)r   r   rk   rl   r   )r   r   Nr   N)FFFTFTr  )r   r  r   r   rz  r   r   r   rc   r8  r!  )	rn  r   r{  r9   r"   r8   
ree_type_2
expected_2rT  s	            r   )test_run_end_encoded_from_array_with_typer    s   HF!!"((*bhhj9H$$00619;H CXXc)F=="""XXbhhsm(3F=="""##BHHJ

=JXXc
+F}}X&&&&&228V3=?J==$$$HF$$00619;H  CXXc)F=="""H"F$$00619;H 88<=DXXct4F=="""r   c                     g d} t        j                  | t        j                  t        j                         t        j                                     }t        j                  |       }t
        j                  j                  |j                  d      |       t        j                  t         j                        5  |j                          d d d        y # 1 sw Y   y xY w)Nr  Fro   )r   r   r  r   r   rc   re   rf   r[   r.   r/   rr  )r"   rq  r9   s      r   test_run_end_encoded_to_numpyr  )  s    
Cb00RXXZHIIxx}HJJ!!)"4"4E"4"JHU	r	' 
(	'	's   ;CCc                     g d} t        j                  | t        j                  t        j                         t        j                                     }|j                         j                         | k(  sJ t        j                  t         j                        5  |j                  d       d d d        y # 1 sw Y   y xY w)Nr  Tro   )
r   r   r  r   r   r   r   r.   r/   rr  )r"   rq  s     r   test_run_end_encoded_to_pandasr  5  s}    
Cb00RXXZHII '')S000	r	'40 
(	'	's   B55B>c                    g d}g d}g d}| j                  |||      }|j                         ddgddgdd	gd d
ggk(  sJ |j                  j                         |k(  sJ |j                  j                         |k(  sJ |j                  j                         |k(  sJ  |t        j                  dt        j                                     }| j                  ||||      }|j                  |k(  sJ |j                  j                  j                  dk(  sJ  |t        j                               }t        j                  t              5  | j                  ||||       d d d        g d}g d}g d}| j                  |||      }|j                         ddgddgddggk(  sJ |j                  j                         |k(  sJ |j                  j                         |k(  sJ |j                  j                         |k(  sJ g }dd g}ddg}| j                  |||      }|j                         g d gk(  sJ |j                  j                         |k(  sJ |j                  j                         ddgk(  sJ |j                  j                         |k(  sJ g }ddg}d dg}| j                  |||      }|j                         d g gk(  sJ |j                  j                         |k(  sJ |j                  j                         |k(  sJ |j                  j                         ddgk(  sJ ddg}g d}g d}t        j                  g d      }| j                  ||||      }|j                         dgd dggk(  sJ |j                  j                         |k(  sJ |j                  j                         |k(  sJ |j                  j                         |k(  sJ y # 1 sw Y   zxY w)N)r   r   r   rk   rl   r   Nr3  )r   r   rk   r   )r   r   r   r   r   r   r   rk   rl   r   r3  r  rP   r  )r   r   r   rz  r   )r   r   r   )r   r   r   r  rV  )r   r   r   r  sizesr   r   r   rQ   r  r  rO   r.   r/   r0   r   )	r  rE  r   r  r  r   r  r8   rT  s	            r   test_list_view_from_arraysr  @  s   
 )FGE''?E??!Q!Q!Q$ CCCC<<!!#v---==""$///;;  "e+++ BHHVRXXZ8
9C((%EF;;#;;""''6111 BIIK
(C	y	!##GUF#E 
" FGE''?E??!Q!Q!Q 8888<<!!#v---==""$///;;  "e+++ F$iGFE''?E??T
***<<!!#v---==""$A...;;  "e+++ F!fG1IE''?E??r
***<<!!#v---==""$///;;  "q!f,,, VFGE88()D''T'JE??!dQC 0000<<!!#v---==""$///;;  "e+++] 
"	!s   	OO!c                 :   ddg}g d}g d}t        j                  g d      }t        j                  t         j                  j
                        5  | j                  ||||       d d d        g d}| j                  ||||      }|dd  }t        j                  t         j                  j
                        5  | j                  |j                  |j                  |j                  |j                                d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)Nr   r   )r   r   N)r   r   r   )FFTrV  )r   r   r   )r   r   r.   r/   r   rr  r   r  r  r   rX  )r  rE  r   r  r  rT  r   array_slices           r    test_list_view_from_arrays_failsr    s     VFGE88()D 
rvv**	+##GUF#F 
, G''T'JE)K 
rvv**	+##!2!2[%8%8%: 	$ 	< 
,	+ 
,	+ 
,	+s   D:ADDD)r  rE  r  c           
      t   t        j                  g dt        j                               } |t        j                               }t        j                  g dd ddgg ddgd dd	gg|      }t        j                  g d
|      }t        j                  g d|      } | |t        j                                     }t        j                  d g dd ddggg g ddgd gdd	ggg|      }	t        j                  g d|      }
t        j                  g d|      }|j                         j	                  |      sJ |j
                  j	                  |      sJ |j                  j	                  |      sJ |j                  j	                  |      sJ |	j                         j	                  |      sJ |	j
                  j	                  |
      sJ |	j                  j	                  |      sJ |	j                  j	                  |      sJ |	j                         j                         j	                  |      sJ |	j                  j                  j	                  |      sJ |	j                  d      j	                  |      sJ g d}g d}g d}| j                  |||      }|j                         j                         g dk(  sJ t        j                  g d      }| j                  ||||      }|j                         j                         g dk(  sJ |j                  j                         g dk(  sJ y )Nr  rP   r&   r   rk   rl   r   r3  r   )r   r   r   rl   rl   r3  r3  )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   )rk   r   r   r   r  rV  )rk   r   r   )
r   r   r   r  r   r  r  r   r   r   )r  rE  r  r  r$  r  r  sizes1r%  r  r  sizes2r   r  r  r   rT  s                    r   test_list_view_flattenr    s    88 
 HHJD RXXZ(D88	
A
	
A	
A D xx-K@HXX++>FHHJ	
D
 88F	

 	F	
 F	
  !D" xxk:HXXoK8F<<>  &&&<<x(((::V$$$;;d###<<>  &&&<<x(((::V$$$;;d###<<>!!#**4000;;$$T***<<$$T*** FGE''?E==?$$&,666 88/0D''T'JE==?$$&)333<<!!#|333r   list_view_typec                    | j                  g dg dg d      }|dd  }|j                  j                         g dk(  sJ |j                  j                         ddgk(  sJ |j	                         j                         g dk(  sJ |j                  d	   j                         }|j                  d   j                         }|d	   j                         |j                  || j                         cxk(  rdgk(  sJ  J y )
N)r   r   rk   )r   r   r   r  )r  r  r   r   r   rk   rP  r   r  )r  r   sliced_arrayr   r  s        r   test_list_view_slicer    s     &&y A08J ' LE9L((*.@@@@))+1v555!++-:::Q%%'AQ%%'A?  "l&9&9!A&>&H&H&JQqcQQQQQr   numpy_native_dtype)r  r  r  c                 &   t        j                  |       j                         }t        j                  d|      }t	        j
                  t        j                        5  t        j                  |       d d d        t	        j
                  t        j                        5  t        j                  |t        j                                d d d        t	        j
                  t        j                        5  t        j                  |g       d d d        t	        j
                  t        j                        5  t        j                  j                  |gdg       d d d        y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   qxY w# 1 sw Y   y xY w)NrZ   rz   rP   r   r  )rc   r{   newbyteorderrd   r.   r/   r   r  r   r   rW  r   )r  numpy_swapped_dtyperg   s      r   test_swapped_byte_order_failsr    s   
 ((#56CCEYYr!45F 
r22	3
 
4 
r22	3
bjjl+ 
4 
r22	3
& 
4 
r22	3
""F8C5"9 
4	3 
4	3 
4	3 
4	3 
4	3s0   E#*E/4E;6$F#E,/E8;FFc                     t        j                  d      } | j                  d      }t        j                  dt        j
                        }t        j                  g dt        j                        }|j                  |      }|j                  |      }t        j                  j                  t        j
                         dd |g      }t        j                  j                  t        j
                         dd |g      }t        j                  j                  t        j
                         d||g      }|j                          |j                  dk(  sJ |j                         d |gk(  sJ |j                  t        j                   j"                  k(  sJ |j$                  du sJ t'        |      dk(  sJ |j)                  dd      j                  dk(  sJ t+        |      sJ t-        |      sJ t        j.                  t0              5  |j3                          d d d        t        j.                  t0              5  |j5                          d d d        t        j.                  t0              5  |j7                  |       d d d        t        j.                  t0              5  |j9                  t        j:                                d d d        t        j.                  t0              5  |j=                  t        j:                                d d d        t        j.                  t0              5  |j?                          d d d        t        j.                  t0              5  |jA                          d d d        t        j.                  t0              5  |jC                          d d d        t        j.                  t0              5  |jE                          d d d        t        j.                  t0              5  |jF                   d d d        t        j.                  t0              5  |jH                   d d d        t        j.                  t0              5  |jK                          d d d        t        j.                  t0              5  tM        |      D 	cg c]  }	|	 c}	 d d d        t        j.                  t0              5  ||k(   d d d        t        j.                  t0              5  |jO                          d d d        t        j.                  t0              5  |jQ                          d d d        t        j.                  t0              5  |jS                          d d d        t        j.                  t0              5  |jU                  d       d d d        t        j.                  t0              5  |d    d d d        t        j.                  t0              5  |jW                  dg       d d d        t        j.                  t0              5  |jY                          d d d        t        j.                  t0              5  |j[                  g d       d d d        t        j.                  t0              5  |j]                  d       d d d        t        j.                  t0              5  |j_                          d d d        t        j.                  t0              5  |ja                          d d d        t        j.                  t0              5  |jc                          d d d        t        j.                  t0              5  |je                          d d d        t        j.                  t0              5  |j                  d	
       d d d        y # 1 sw Y   lxY w# 1 sw Y   GxY w# 1 sw Y   !xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   gxY w# 1 sw Y   BxY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY wc c}	w # 1 sw Y   xY w# 1 sw Y   sxY w# 1 sw Y   NxY w# 1 sw Y   )xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xxY w# 1 sw Y   PxY w# 1 sw Y   *xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   y xY w)Nzpyarrow.cudar   rk   rz   r  Fr   )TTFFTr  )3r.   r   Contextrc   rd   r   r   r  buffer_from_datar   r1   r9  r   r6  r\   device_typeDeviceAllocationTypeCUDAis_cpur   rV   r  r   r/   r  
__dlpack____dlpack_device__r  r  r   ro  r   rv  r   r|  r   r  r  iterrX  is_nanr(   	fill_nulltake	drop_nullfilterindexr`  r  r[   r   )
cudactxr_   validitycuda_data_bufcuda_validity_bufr"   r  rg  r   s
             r   test_non_cpu_arrayr    s   ~.D
,,q/C99Qbhh'Dxx2"((CH((.M,,X6
((


Am/D
EC88  Q}0EFDXX**

A)=9;N LLN::??;;=T=1111??b55:::::::s8q==99Q?!!Q&&&99s8O8 
*	+ 
,	*	+ 
, 
*	+ 
,	*	+ 
,	*	+ 
,	*	+	 
,	*	+

 
,	*	+ 
,	*	+ 
,	*	+!! 
,	*	+

 
,	*	+!!# 
,	*	+IIqI 
,	*	+t 
,	*	+ 
,	*	+

 
,	*	+ 
,	*	+a 
,	*	+A 
,	*	+! 
,	*	+ 
,	*	+

-. 
,	*	+		! 
,	*	+
 
,	*	+ 
,	*	+ 
,	*	+

 
,	*	+$ 
,	+q 
,	+	+	+ 
,	+	+	+	+	+	+	+	+	+	+	+	+	+	+	+	+	+	+	+ 	 
,	+	+	+	+	+	+	+	+	+	+	+	+	+	+	+	+	+	+	+	+	+	+	+	+	+	+	+	+	+	+	+sb  	^;^-^ $^+%$^8*___ _,2_9 `` `%	` `%;`2"`?aa8a&+a3b b8b-b' b4cc6c(c(^^^(+^58____),_69``` `%%`/2`<?a	aa#&a03a= b
bb$'b14b>ccc%(c1r(  )collections.abcr   r   rG  
hypothesishhypothesis.strategies
strategiesstr  r.   r  r	   r   r    numpyrc   ImportErrorpyarrowr   pyarrow.tests.strategiestestspastpyarrow.vendored.versionr   mark	processesr   r$   r,   r3   r:   r?   rD   rG   rJ   rM   rX   ri   rv   r   r   parametrizer   r   r   r  r   nopandasr   r   r   r   r   r   r   r   r   r   r  r  r  r"  r+  r.  r0  r<  rD  r  r   	list_viewlarge_list_viewrL  rN  r`  rb  rh  rm  rx  r|  r  r  r  LargeListArrayr  r  r  r  r  r  r  r  r  r  r  r  r  r	  r  r  r  r  r!  r&  r,  r1  r7  r:  rJ  rO  rT  rV  rY  r[  rc  rj  rm  rq  rx  r  r  r  r  r  r  r  r  r  r  r  r  r  r  rC   rO   r  r  r   r   r8  r   pickle_test_parametrizer  r  settingsHealthChecktoo_slowgivenr_  	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=  rB  rE  rH  rK  rQ  rS  rW  rZ  rf  rj  ru  r~  r  r  r  r  r   r  r  r  r  r  r  r  r  r  r  r  r  r  r  slowlarge_memoryr  r  r  r  r  r  r	  r  r  r  r  r9  r;  rB  rI  rL  rP  rR  rT  rW  rY  rb  rh  rl  ru  r|  r  r  r  r  r  r  ListViewArrayLargeListViewArrayr  r  r  r  r  r  r2   r   r   <module>r     s{  $ %    "     
   ' ' , - -.$		; 4 4& 4 4  4 9 9" !89e}-4 . : 4 !894 : 4 4 4  6 #8  #8L BGGIBGGIBIIK	  

4'n
# 6 6&;R ' 'B<&%7   2 2#  A A( "F ,HHbmmR\\2+=+=/? @7@7*5*L-^; 6* + ; ;, C CL 7 7 E*$ A<<2,,bmm<>?3?? 3?l A\\288&D  	A3K	At9qcS1#J! 
$	$ A\\288&D K	K@	#$ I  I X1Ih>&G TBLJG,4& $($ '2 " "8	#', + +( 
* 
* + +$*4 "K "KJ +F/8 ( ( 	 	%"P* 0/'B,E4,4'@ '( # # # # # #  # # " "( # #	0 ) !eAsmU1c]uQ|eArluQ|eArluQ|eArlo!"RYYq\+,,  $! $
 !++11	"HBHHJ/	xrxxz"	:2::<(	9299;'	T
a&1#,-a&1#hbhhj12%Sz	"HBHHYRYY[$9:a&1#XRXXZ01a&1#***8288:67%Sz	"LBLL$=>	#BIIxrxxXRXXZ0("((3			2LMN	P ( $ $$ 1==#9#9";<DKKR[[13  =   - -" F F,        #6   ? ?: # # % %3 *lbll3'(|r||D)*|r||D)*|r||D)*	-    "   !89
 : 
   *{r{{3'(D)*D)*D)*	- # #,   & &:,, &@ &@R,  8  8F & &@ 8 8   A A # #   # # > >"# "" ""J 1F J J.
 =#288:rxx08288:r}}2MNP4+P4+n BHHXRXXZBHHXRXXZ1%BMM("((*'  	7	 	7 5#288:xrxx
';<#288:xrxx
a'HI#288:}r}}XRXXZ'@A#288:|r||HBHHJ'?@#288:'9r'9'9("((*'EF	HI0I04 ,rxx.GH8 I8& 2<<1B1B"CDB EB$!+HC0#)L"D -F>> ; ;4 #!   #!L " "" 3 3 	" 	" /B /Bd ( ( D D@ 
5 
5 % %4! +% +%\ @# @#F= =N N <9K*LM	: N	:17:
   ' '6 +\4?AA>,@^ $# $#N   1 1 A++R\\:00"2D2DEGHB,HB,J A++R\\:00"2D2DEGH<H<* P++R\\8288:F00"2D2DhbhhjQSTG4TG4T )B,<,<b>S>S+TUR VR& -/AB: C :.R u  	Bs   AQ> Q>AR	RAR	