
    /_i1                    *   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:d# Z;d$ Z<d% Z=d& Z>d' Z?e
j2                  j                  d(        Z@e
j2                  j                  d)        ZAd* ZBe
j2                  j                  d+        ZCd, ZDd- ZEe
j2                  jU                  d.ej                  ej                  ej                  ej                  g      d/        ZJd0 ZKd1 ZLd2 ZMe
j2                  jU                  d3d4      d5        ZNe
j2                  j                  d6        ZOe
j2                  j                  d7        ZPe
j2                  j                  d8        ZQd9 ZRd: ZSe
j2                  j                  e
j2                  jU                  d;ej                  ej                  fej                  ej                  fg      d<               ZVe
j2                  jU                  d;e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?               ZWe
j2                  jU                  d;ej                  ej                  fej                  ej                  ff      d@        ZXdA ZYdB ZZdC Z[e
j2                  j                  dD        Z\dE Z]dF Z^dG Z_dH Z`dI ZadJ ZbdKdKdLdMZce
j2                  j                  dN        ZddO ZedP ZfdQ ZgdR ZhdS ZidT Zje
j2                  j                  dU        Zke
j2                  j                  dV        Zle
j2                  j                  dW        ZmdX ZndY Zoe
j2                  j                  dZ        Zpd[ Zqd\ Zre
j2                  j                  d]        Zse
j2                  j                  d^        Ztd_ Zud` Zvda Zwdb Zxdc Zydd Zzde Z{df Z|dg Z}dh Z~di Ze
j2                  j                  dj        Ze
j2                  j                  dk        Ze
j2                  j                  dl        Zdm Ze
j2                  j                  dn        Ze
j2                  j                  do        Ze
j2                  j                  dp        Zdq Ze
j2                  jU                  drdsg dtfdu ed dv      fdw ed dx      fdy ed dz      fd{ ed dz      fd| ed dz      fd} ed dz      fd~ ed dz      fd ed dz      fdg dfdg 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j0                   ej2                  d dz                  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jJ                  d      fd ejJ                  d      fd ejJ                  d      fd ejJ                  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jT                  d      fd ejT                  d      fd ejT                  d      fd ejT                  d      fg      d               Ze
j2                  j                  d        Ze
j2                  j                  e
j2                  jU                  dd ej                          ejZ                          ej\                         g      d               Zd Ze
j2                  j\                  d        Zd Ze
j2                  j\                  d        Ze
j2                  j                  e
j2                  jU                  dd ejh                          ejj                          ejl                         g      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                  e
j2                  jU                  dddKg      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 Zd  Zd ZddZd Zd Zd Ze
j2                  j                  d        Ze
j2                  j                  d        Ze
j2                  j\                  d        Ze
j2                  jU                  d;ej                  ej                  fej                  ej                  fg      d	        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                         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 w 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     W/var/www/html/land_sniper/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   s5     
y	! 
!Q  s	   ;Ac                      t        j                  dgd g dg      } | j                         }d}||k(  sJ | j                  d      }d}||k(  sJ y )Nfoo)barza longer stringNzQ[
  [
    "foo"
  ],
  null,
  [
    "bar",
    "a longer string",
    null
  ]
]
   )element_size_limitz`[
  [
    "foo"
  ],
  null,
  [
    "bar",
    "a longer (... 7 chars omitted)",
    null
  ]
]r   r   	to_stringr"   resultexpecteds      r   test_list_formatr>   M   sc    
((UGT#CD
EC]]_FH X]]b]1FH Xr   c                  d    t        j                  g d      } | j                         }d}||k(  sJ y )N Nr5   z[
  "",
  null,
  "foo"
]r9   r;   s      r   test_string_formatrB   n   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   ranger:   r;   s      r   test_long_array_formatrG   z   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"
]r9   r;   s      r   test_indented_string_formatrJ      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"
 ]r9   r;   s      r   %test_top_level_indented_string_formatrM      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
]r9   r;   s      r   test_binary_formatrP      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_lengthr[      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 )Nr7   r   r   )r   r   rF   to_numpybuffersaddressctypesdatagccollectbasenparangetestingassert_array_equal)r"   np_arr	arrow_bufrb   r=   s        r   test_to_numpy_zero_copyrk      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      )rm      rD   z>zero_copy_only must be False for pyarrow.ChunkedArray.to_numpymatchTzero_copy_only)r   r   rm   rm   rn   rD   )	r   chunked_arrayr.   r/   
ValueErrorr]   re   rg   rh   )elementschunked_arrmsgri   r=   s        r   %test_chunked_array_to_numpy_zero_copyrx      s~    ;'H""8,K
JC	z	- 2D12 !!#F#HJJ!!&(32 2s   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TFTFrq   NNNdtyper   r   Nzwith 1 nullsro   )
r   r   r.   r/   rt   r]   re   rg   rh   object)bool_arrr<   r=   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  %   s#   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)Nr7   r   FT)rr   writable)r   r   rF   r]   r.   r/   rt   r'   )r"   ri   np_arr2s      r   test_to_numpy_writabler      s    
((59
C\\^F 
z	" q	 ll%$l?GGAJq6<<>Q 
z	" 9D489 9 9 9s   B<C<CCunit)smsusnstzUTCc                     t        j                  g dt        j                  | |            }t        j                  g dd|  d      }|j	                         }t        j
                  j                  ||       y )Nr   r   zdatetime64[]r|   )r   r   	timestampre   r]   rg   rh   )r   r   r"   r=   ri   s        r   test_to_numpy_datetime64r     sW     ((9bll4B7
8Cxx	;tfA)>?H\\^FJJ!!&(3r   c                     t        j                  g dt        j                  |             }t        j                  g dd|  d      }|j	                         }t        j
                  j                  ||       y )Nr   ztimedelta64[r   r|   )r   r   durationre   r]   rg   rh   )r   r"   r=   ri   s       r   test_to_numpy_timedelta64r     sU     ((9bkk$/
0Cxx	<vQ)?@H\\^FJJ!!&(3r   c                      t        j                  g d      j                         } t        j                  g dt              }| j                  d      }t        j                  j                  ||       y )N)abr   r|   Frq   )r   r   dictionary_encodere   r   r]   rg   rh   )r"   r=   ri   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v sJ d }/ t        j                  |      dv sJ t        d      D ]  }t        j                  t        d            }|j	                         }d }| j                          t        j                  |j                  j                        }|dk(  sJ |j                           y )Nr   r7   )r   r   r   )rb   r   r   rF   	to_pandasr   getrefcountrc   valuesrd   sum)rb   r"   iseriesbase_refcounts        r   test_to_pandas_zero_copyr     s    
((59
C2Y  v&&000 ??36)))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 )Nrm   r   r   r   r   Or   int64strr|   )0123)r   r   r   Nr   )              ?       @float64r   r   r   r   r   r   r   cr   )r   r   r   r   r   )r   r   rF   re   asarraytolistr}   r)   lib
Int64ValuerT   r   isnanDictionaryArrayfrom_arrays)r"   _ri   ru   s       r   test_asarrayr   =  s   
 ((58
C ZZC(q()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   rS   r{   )r   nullsr   r   equalsrT   nullr   r"   r=   s      r   
test_nullsr   e  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   )daysr7   r   )r   r   r   rS   gGz@r   stringrm         r{   TrW   r   r   	   Frn   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   rT   r   r   
null_count)r   r   r   now_utcnow_with_tzonedaycasesvaluesizer=   r"   s              r   test_array_from_scalarr   x  si   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r5   r6   baz)r   r   r   r   )
dictionaryr   rn   r   r   )r   r   r   r   r   )r   r"   r<   r=   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)Nr7      r   )	r   r   rF   	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 )Nr7   r   )r   r   rF   r   r   re   int32r'   r   s      r    test_array_getitem_numpy_scalarsr     si    
((5R=
!C
--/Cc#hYC) 6288C=!'')SX5556r   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)Nr7   r   rm      r   rD   r   rn   r   )r   r   rF   rY   r   r   r.   r/   r   rt   validater   re   r]   r   )	r"   slicedr=   sliced2	expected2nstartstopr   s	            r   test_array_slicer    su   
((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        t        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                        }|j                  |      sJ t        j                  |gdg      |   }t        j                  |gdg      }|j                  |      sJ ||   }t        j                  | |   g|j                        }|j                  |      rJ  y )N   r   r   r   r7   r   r   r   r   iirS   f0names)	listrF   r   r   rs   rY   rT   r   record_batch)r   r"   rv   r   caser<   r=   s          r   test_array_slice_negative_stepr
    sj   %)_F
((6
C""C5)K 	dD"dArb!RaraRb!RdD!aQb#rc3E  'T88F4Lsxx8}}X&&&#tf5d;??H:dV<}}X&&&T"##VD\NB}}X&&&'r   c            
         g d} | D ]o  }t        j                  | }|j                  d       |j                  t        j                  t        t        |       t        j                                     roJ  t        j                  ddt        j                               }|j                  d       |j                  t        j                  t        t        dd            t        j                                     sJ t        j                  t         j                        5  t        j                  dd	d       d d d        y # 1 sw Y   y xY w)
N))rn   g   )r      r   )rm   r  rn   )r7   ir   )rD   i)r   r   )r   r7   r   )r7   r   r   TfullrS   r   e   memory_poolr   r7   )r   rf   r   r   r   r  rF   r   default_memory_poolr.   r/   ArrowInvalid)r   r	  r<   s      r   test_aranger    s    	E  LD!T"}}RXXd5$<&8rxxzJKKKL YYr3B,B,B,DEF
OOO==$uR~"6RXXZHIII 
r	' 
		!R  s   %EE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                                     }t        j                  g dt        j
                               }t        j                  ddg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 |j                  |      dk(  sJ |j                  |      dk(  sJ y )Nr5   rS   r5   r6   Nr   r   )g      ?r   r   r   rA   z
@@ -1, +1 @@
+"bar"
+null
z'# Array types differed: string vs int64z3# Array types differed: string vs list<item: int64>z&
@@ -0, +0 @@
-1.5
+1
@@ -2, +2 @@
-6
)r   r   utf8list_r   float16diffstrip)arr1arr2arr3arr4arr5arr6s         r   test_array_diffr$  7  sj   88UG"''),D88(rwwy9D88ID88R!dO"((288:*>?D88Kbjjl3D88QF.D99T?b   99T?    
 99T?  "&OOOO99T?  "&OOOO99T?  " (; < < <99T?b   99T?    r   c                      t        j                  t        d            } t        t        d      |       D ]  \  }}||j	                         k(  rJ  t        | t              sJ y )Nr7   )r   r   rF   zipr'   r)   r   )r"   r   js      r   test_array_iterr(  T  sV    
((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         @)rn         @rS   r   r   r.  r   rn   r/  )r   structfieldr   float32r   r   )r   r"   s     r   test_struct_array_slicer3  ]  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   MyObjectr6  i  s    r   r:  re   r   r.   r/   rt   r   )r:  r"   s     r   test_array_factory_invalid_typer<  f  sL      ((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   )re   r   r   r   r   )r"   refcountr  s      r   test_array_ref_to_ndarray_baser?  q  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   rS   TFr   )r   r   r   r   )r  r  r   s      r   test_array_eqrA  z  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rm   rn   r         rm   )rm   Nr   rD  r   r   offset)Nr   rD  rA   )r   	py_bufferre   int16r   r1   from_buffersrT   r   r.   r/   r0   )
values_buf	nulls_bufr"   s      r   test_array_from_buffersrM    ss   bhh|45JRXXzl34I
((


A	:/F
GC88rxxz!!!==?o---
((


Aj/A
BC88rxxz!!!==?l***
((


A	:/F'(   *C88rxxz!!!==?l***	y	! A
bhhj!b"Xa@A A A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^   StringArrayrJ  r   r   rG  r   r1   rR   )r   r^   copiedbinary_copyr   s        r   test_string_binary_from_buffersrU    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   c                  &   t        j                  g dt        j                               } | j                         }t         j                  j                  t        j                         t        |       |      }|j                  d       |j                         g dk(  sJ d}t        j                  t        |      5  t         j                  j                  t        j                         t        |       |dd        d d d        y # 1 sw Y   y xY w)	N)z String longer than 12 charactersNshortzLength is 12rS   Tr  znumber of buffers is at least 2ro   r   r   )r   r   string_viewr^   StringViewArrayrJ  r   r   r   r.   r/   rt   )r   r^   rS  rp   s       r   test_string_view_from_buffersrZ    s    HH	

  "E mmoG,,
#e*g/F
OOO "    /E	z	/ 8
''NNc%j'!A,	88 8 8s   >A DD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   rm   rn   rS   rm   r   children)r   rI  r   rT   r^   r.   r/   rt   r1   rJ  num_buffersr   )r[  r   r   r^   childrS  s         r   test_list_from_buffersrb    sH    
288:	&BHHir95B?E::mmoG	z	" ?
b!W_bnn%=>? HH!!"((*a1IJEXX""2q'/2>>*BeW"UF==	z	" 7
b!W_bnn%=(-u~ 	 	77 7? ?7 7s   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   r5   r   rn   rA   rS   r   r   r^  )r   r0  r1  rI  r  r   r^   r.   r/   rt   r1   rJ  r   )r   r   r^   r_  rS  s        r   test_struct_from_buffersrd    s{   	BHHS"((*-rxxRWWY/GH	IBHHAE*D2CDEmmoG	z	" 9
b!dGAJ%789 %%bhhj!WQq\B%%bggiGABK@BHXX""2q'"1+"IF==	z	" 5
b!gaj\'/| 	 	55 59 95 5s   -'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rm   rn   r   rS   )r6   NrA   r   r   r   rm   r6   r   rn   r   rA   r   r   r   Fnullable)fieldsr   zint64 vs int32ro   )TFF)ri  maskr  rj  zMask must berj  znot contain nulls)TFN)r   r   r   StructArrayr   rT   r0  r   r.   r/   rt   r1  rh  r   r0   rs   is_null)r   r   r   expected_listr"   fafbfc
structtypefa2arraysri  rj  s                r   test_struct_from_arraysrv    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	: D
""Aq!9c2r]"CD 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 N
""668L"MN 
z)<	= @
""F*=!> 	# 	@@ 
y	7 ;
""F!1!14&!9 	# 	;;
 ..
$
$R$
$
7C;;=D   ==?tRn,,,y: :.? ?D DN N@ @; ;sH   &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   rf  zExpected Arrayro   r5   )r   rs   r.   r/   r0   rm  r   )rv   s    r   test_struct_array_from_chunkedrx  W  sU     ""Iy#9:K	y(8	9 ;
""K=5':; ; ;s   #A##A,rG  )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threer{  rz  rF  )
r   r   r   r   rJ  rT   r   indicesr^   r   )rG  r   r   s      r   test_dictionary_from_buffersr~  a  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 )Nr]  r   r   r|   )FFTFFFrl  re   r   r   r   r   r   r   r}  r   r   r   rF   r   r'   )r}  r   rj  d1d2r   s         r   test_dictionary_from_numpyr  j  sj   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)r5   r6   Nr5   Frq   )r   r   Nr   r5   r6   T)r   r   r   r   )r5   r6   r6   r5   ffffff+@      &@)r  r  r  r  )r  r  Nr  )	equal_nanrD  rW   )rD  rW   NrD  )r   r   r]   r   r   re   rg   rh   r.   r/   r  assert_allclose)r=   r   anonullsafloatafloat2aintss         r   test_dictionary_to_numpyr    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 )Nr]  r   r   r|   r  )r}  r   iarrdarrr  r   s         r   !test_dictionary_from_boxed_arraysr    s    ii	1%G/v>J88GD88JD				'	'd	3B::!W^^%5555==""$
(9(9(;;;;3w<  7!u{{}
71: 66667r   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   Tr  )r   r   r   r   r}  r   )r}  r   r"   s      r   test_dictionary_indicesr    sM    hh)*G/0J



(
(*
=CKKd#r   )list_array_typer[  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   rn   r   i4r|   r   rS   rO  rP  rQ     d   e   f   g   hrR   r   rn   r   namer   Nr   r   rO  rP  rQ  r  r  r  )r   r   Nr   )r   r   r7   )r   r   r   r   r   Tr  )re   r   r   r   rR   r   r1  rT   value_fieldr  rf   r.   r/   rt   r  rF   r   r0   )
r  r[  offsets_arroffsetspyvaluesr   r<   r=   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	" 5##GV45 G%(^F((&9F	z	" #T"# BIIK
(C	y	! ?##GV##>? ?5 5# #
? ?s$   K%9K1K=%K.1K:=Lr"   r   c                     t        j                  | |t        j                                     }| j                  |j                  |j
                  |j                               }||k(  sJ y )Nrl  )r   r   r   r   r  r   rn  )r  r[  r"   reconstructed_arrs       r   !test_list_array_types_from_arraysr  0  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   rm   rl  zAmbiguous to specify both ro   r   -Null bitmap with offsets slice not supported.)r   r   r   r   r  r   r   rn  r.   r/   rt   NotImplementedError)r  r[  r"   r  r  	arr_slicerw   s          r   &test_list_array_types_from_arrays_failr  B  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 M##GSZZckkm#LM ABI
9C	*#	6 K##y//i6G6G6I 	$ 	KK KM MK Ks   -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   rS   )r   map_r   r   castr   r   )tr"   r<   
t_expectedr=   s        r   test_map_castr  f  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   Frg  r   r   r   r   r   r   r   rS   r   r   )
r   r  r1  r   rT   	key_fieldr  
item_fieldr   r   )r  r"   s     r   test_map_labelledr  r  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  r|   r   rS   r  r   rn   r   rR   r  r  )r   r   r   Nrm   rn   zExpected map type, got stringro   zMismatching map items typer   r   r   r   FTFrl  r   )r   NNr   )TTFz=Ambiguous to specify both validity map and offsets with nullsr  )r   r   r   rn   r   r   r   r   rn   r   )r   r   r   r   r   r   )r   r   r   r   r   )re   r   r   r  rF   r   r&  MapArrayr   r  rR   r   r   rT   r.   r/   ArrowTypeErrorr   r   bool_r   r  ArrowNotImplementedErrorrY   rf   rt   concatenaterG  )r  r  pykeyspyitemspypairs	pyentrieskeysitemsr<   r=   msg1msg2r   keys_with_nulls                 r   test_map_from_arraysr    s   ((<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 C
ubiikBC 
r((0L	M 
ubggIIHHJ7
 	 [[$$\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@ 	  	

 ;Dhh|RXXZ0G	r22$	? 

a 0$rwwIIJJ@ .RXXZ@ 	  	

 G99Q<DIIaLE
u5A 
z	" <
1#tU;< 
z	" O
r~~uen/MNO $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C C L
 

 
< <O O@ @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   rm   r   rC  )r   r   r7   rW   r  rS   r  rT   rj  )	list_sizerj  r   rn   )r  rT   )r   r   rF   r   FixedSizeListArrayr   r   rT   r   r  r1  r  r  r.   r/   rt   r   r0   )r   r<   r  s      r    test_fixed_size_list_from_arraysr    s   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	" 6
))&"56 
z	" G
))"((2rxxz*BAFG 
z	" 5
))&!45 ((288:q
!C	z	" <
))&s);< ((2::<
#C	y	! <
))&s);< 
z	" 2
))&12 ((288:q
!C	z	" I
))&AC)HI I36 6G G5 5
< <
< <2 2I I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   rm   )r   r   rm   r   r   r   rm   )r   Nr   rm   )r   r   rm   )r   r   rn   )r   r   r   	ListArrayr   r   rT   r   r  r.   r/   rt   )r   r  r<   s      r   test_variable_list_from_arraysr  F  sV   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rO  rP  rQ  r  rR   rS   r   r   r   r   r   r   r   r   r   r   rW   rE  rW   rW   rE  rE  rW   )r   r   r   r   r   r   r   r   rO  r   rP  rQ  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   rF   rT   
num_fieldsr  mode
type_codesr   r   r  r1  r.   r/   KeyError)
r<   expected_field_namesexpected_type_codesexpected_type_code_valuesr   actual_field_namesrR   r   py_valuevalue_offsetss
         r   check_resultz+test_union_from_dense.<locals>.check_resulta  st   T"',V[[-C-C'DF"# %kk!n11 F 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intrW   rE  r  Tr  )r   r   r   r   r   r   rm   )r   r   
UnionArray
from_denser.   r/   r  r   )	typeslogical_typesr  r"   bad_offsetsrR   r   r  r  s	        @@@@r   test_union_from_denser  Y  s|   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)rO      rP  rQ  r  r  r  rR   rS   )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   rF   rT   r  r  r  r  r   r1  r.   r/   r   r  r  r  )	r<   r  r  r  r   r  rR   r   r  s	         r   r  z,test_union_from_sparse.<locals>.check_result  s   T"!X---',V[[-C-C'DF"# %kk!n11 F 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  rW   rE  r  Tr  )r   r   r  from_sparser.   r/   r  r   )r   r  r  r"   rR   r   r  s       @@@r   test_union_from_sparser	    sB   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	' Lmm''ab	7JKL L      L L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   rS   )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   rS   )r   r   r   dr  r   )r   r   rm   r  rR   r   r   r  r   )r   r   r   r   r   r   r   r   )	r   r  r  r   r   r   r  rF   r   )r"   rR   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_ 4q#c(# 	4Aq8%%'3q8333	44r   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 )NrS   r  Tr  rT   r  )r)   r   r1   rT   r   r  r   r   )
r	  r  r  in_datain_typeout_dataout_typer=   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   i1r|   r   r  u4u1f8P  r   rI  p uint16r   u2rS   )re   r   r   r   r#  r   r   r  r.   r/   r  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!	" 	""	" 	"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)  G  s<    
((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   rm   rO  rP  rQ  )	r   r   r.   r/   r  r  r   r  rR   r+   s    r   test_cast_list_to_primitiver+  O  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   rS   r   rn   )r   rs   
num_chunksr   )r"   r<   s     r   $test_slice_chunked_array_zero_chunksr.  Z  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   rf  )r   r   rs   r   r  r   )ru  carrtargetr  xr=   s         r   test_cast_chunked_arrayr3  f  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 NrS   )	r   r   r   r   r   r   rs   r  r   )typ1typ2r"   r<   r=   s        r   test_cast_chunked_array_emptyr8  p  s    bggi=ryy{K
BHHJ/1 '
d r-$##BT2}}X&&&'r   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   rs   ra   r)   ChunkedArray)r   s    r   test_chunked_array_data_warnsr>  {  sO    	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  r|   r   i2r"  r$  r   Fr  )re   r   astyper   rI  r#  r  r&  r	  s     r   test_cast_integers_unsaferC    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         @r2  r|   r   r  r   )g      $g      4@g      >ir  iTr  )re   r   r   r   r  r%  r	  s     r   !test_floating_point_truncate_saferI    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  r2  r|   r   r  r   )g333333$g3333334@gL>rG  	truncatedro   Tr  F)re   r   r   r   r.   r/   r  r  rB  s     r   #test_floating_point_truncate_unsaferL    s     
/	3Y	)4	("((*	6	/	3Y	)4	("((*	6	&i	8)	.	-rxxz	;L  +]]2??+> 	.T-	. 	E*+	. 	.s   <D""D+	c                      dddddd ddt        d      g	} t        j                  | t        j                         	      }|j                  t        j                         k(  sJ |j                         dddddd d
dt        d      g	k(  sJ t        |      dk(  sJ d}t        j                  t        j                  |      5  t        j                  g dt        j                         	      }d d d        y # 1 sw Y   y xY w)Nr   r   r   r   r   g1@gS?infrS   g     @g     ?z@[
  -5,
  0,
  1,
  2,
  3,
  null,
  12344,
  1.234375,
  inf
]z@Could not convert 'a' with type str: tried to convert to float16ro   )r   r   N)
floatr   r   r  rT   r   r   r.   r/   r  )valsr"   r  s      r   !test_half_float_array_from_pythonrQ    s    3Qj(E%LID
((4bjjl
+C88rzz|###==?r1c34'u7 7 7 7s8 2 3 3 3MD	rd	3 :hh~BJJL9: : :s   ?,C44C=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    rn   @ Ni'1234-9123   r7   i  Ni]123z-91{   NiTr  )decimalDecimalr   
decimal128r   rI  r   r  rH  s     r   test_decimal_to_int_safera    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-912345678901234rT  rn   )iqNirS  z
-912345678)i@NirW  rX  )iN]   zInteger value out of boundsro   Fr  )re   r   r^  r_  r   r`  r   rI  r   r.   r/   r  r  )out_of_bounds_casesr	  s     r   'test_decimal_to_int_value_out_of_boundsrf    s(    HH0 23 
 MM"a *HHJ		
 __X&gool.KLMM"a !HHJ		
 __V$dGOOG,DEMM"a GGI		
#2 $ K]]2??!>@ 	#T"	# 	EEJK	# 	#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.13rT  rn   rU  z1234.134z-9123.1rY  r7   rZ  z123.1451z-91.21r\  -Rescaling Decimal value would cause data lossro   Fr  )r^  r_  r   r`  r   rI  r   r.   r/   r  r  )non_integer_casesr	  
msg_regexps      r   test_decimal_to_int_non_integerrk    s    ,-
 MM"a #HHJ		
 __Z($	0JKMM"b!HHJ		
 __Z($0IJMM"b!GGI		
#2 " +D
]]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.12rY  r7   rS   r   r   rh  ro   r   r   Fr  z1234.1z'Decimal value does not fit in precisionrn   r   )
r   r   r^  r_  r`  r  r   r.   r/   r  )r"   r<   r=   rj  s       r   test_decimal_to_decimalrm  (  sy   
((		#T*]]2r"C XXbmmB*+Fxx		#T*]]2q!H =="""@J	rj	9 /"--1-./ XXbmmAq)X6Fxx		"D)]]1a H =="""	rF
H /"--1-./ // // /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   rK  ro   Tr  )	r   r   re   nanr.   r/   r  r  r   r+   s    r    test_safe_cast_nan_to_int_raisesrp  D  sU    
((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  r|   r  r@  r$  )re   r   r   r   r#  r  rH  s     r   test_cast_signed_to_unsignedrr  L  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   r7   rm   rY  r   r   r   zEurope/Parisr   r   r   )r  rS   )r   r   r   r  r  rR   r  rI  r   r   r`  r   r   month_day_nano_intervalr0  r1  r   r   r   r  unionr   UnionMode_DENSEUnionMode_SPARSEr   r.   r/   r  r  )r  r  	out_typesr  r  s        r   test_cast_from_nullry  Y  se   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!	" 	""	" 	"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      irS   18446744073709551615l    Tr  r  )r   r   r   uint64r  rT   r   r   )r   r  r=   r  casted_backs        r   $test_cast_string_to_number_roundtripr    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  rS   )r   r   r   r   r   rT   r  r   rI  r   r.   r/   r  )r"   r=   key_typer  s       r   test_cast_dictionaryr    s:   
((]]288:ryy{3C xx,-H88r}}RXXZ====88BIIK H,,, WWY
BHHJ7 )mmHbiik288 x5
 xx}((() 
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   rS   rR   )r   r   r  rR   viewr   r"   r=   s     r   	test_viewr    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   r5   Nr6   r5   r5   Nr6   )r   r   rU   uniquer   rs   r   r"   r=   r<   s       r   test_unique_simpler    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 )
Nr  r   r   r   r   rS   r  r  )r   r   r   r   counts)
r   r   r   rU   rs   value_countsrT   r   r0  r1  )r   r"   expected_valuesexpected_countsarr_inr<   s         r   test_value_counts_simpler    s   	$	%	)		)"((*	-	/ 
-	.	&	'	)"((*	-	/ 
-r/@	A	&(9	:	)"((*	-	/
E 27 B-_oB,,cU34 	BF((*F;;%%		288Hchh788Hbhhj9; <= = = <<)00AAA<<)00AAA	BBr   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   )r5   r6   r   quxr   r  )r   rn   rm   r   rS   r  )r   r   r   r   r  r   r  r1  )r}  r   r"   unique_resultr=   r<   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   rS   r   r  r   Nr   r   r5   r6   r   r   )r   r   r   r   rU   r   r   rs   r-  chunkrT   r  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   rS   )r   r   r   )Nr5   r6   r5   xyzzyr   r   r   r5   r6   r   r   )r   r   r   r   large_stringr   r   rs   r-  rT   r  rY   )r   r"   r=   r<   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 )NrS   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   rS   r   r  r  r5   r6   )r   r   r   r   rU   dictionary_decoder   )r   r=   r"   r<   s       r   test_dictionary_decoder  3  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 )Nr]  r   r|   r   rS   r  )r   r   re   time32r  r   r"   r=   r<   s      r   test_cast_time32_to_intr  G  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 Nr]  r   r|   r   rS   i8)r   r   re   time64r  r   r  s      r   test_cast_time64_to_intr  Q  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   re   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 )	Nr]  r  rS   date32i  r   r   r   )r   r   r  r   r   r   )r"   result1result2	expected1s       r   test_cast_date32_to_intr  e  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   re   r   r  r   r  s      r   test_cast_duration_to_intr  u  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   bazrS   r      mañana	utf-16-leT)rj  rT   r   )r   r   rR   r  r  r   encoderT   r.   r/   rt   r   re   r   )
binary_arrutf8_arrr=   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 )Nr]  r   r|   rS   r  )r   r   re   date64r  r   r  s      r   test_cast_date64_to_intr    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   rV  r  rS   r   r   )r   r   r   r   r   r  r'   )val1val2r<   r  as_i8s        r   !test_date64_from_builtin_datetimer    s    T1aRV<DT1a(DXXtTl2Fhh		TYY[1AG==!!!KK E8>>uQx~~////r   )r   r   boolrz   r      r   r  r#  r7   rI  uint32r   r~  r   rO  )r   g?g?doubler   r   rR   )rO  rP  rQ  r   )s   abcs   bcds   cdec                 v    t        j                  ||       }|j                  |       j                  |      sJ y r5  )r   r   r  r   )r   r   r"   s      r   test_cast_identitiesr    s0    " ((6
#C88B<s###r   )ra   r  )TFTT)r   r   rm   r   )r   r,  N)r   Nr   r   rm   rn   r   r   r   r   ))r   r   )r   r   Nc                     t        j                  | |      }t        d|j                  dz         D ]6  }|j	                  |j                  ||            }|j                  |      r6J  y )NrS   r   r   )r   r   rF   HIGHEST_PROTOCOLloadsdumpsr   )ra   r  pickle_moduler   protor<   s         r   test_array_pickler    sd     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   rF   r  r  r  r   )r  r   r  r<   s       r   test_array_pickle_dictionaryr    sl     **?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"   ra   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 )NrS   r   rn   r   )buffer_callback)r^   )
r   r   r^   r_   rF   r  r  appendr  r   )ra   r  r  r   buf	addressesr  r^   pickledr<   result_addressess              r   test_array_pickle_protocol5r    s     HHT$E!MMO- !$Q6 -I - q-881<= -%%eUGNN%S$$Wg$>||F### (.~~'79 # ,/?CKKA 9 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 )Nr7   r|   r   r   )re   rf   r   r   rI  r   r~  r  r#  r   r   r2  r  r   r   r}   r]   rg   rh   )narrr"   s     r   test_to_numpy_roundtripr  	  s    			"BHH%
		"BHH%
		"BHH%
		"BGG$
		"BII&
		"BII&
		"BII&
		"BHH%
		"BJJ'
		"BJJ'
		"BJJ' F hhtnzzS\\^11111


%%dCLLN;


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


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


%%d1QiQq1B1B1DE%Fr   c                      t        j                  dgt        j                               } t        j                  t        j                  dgd            }| j	                  |      sJ y )N            rS   u8r|   )r   r   r~  re   r   r  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 dD ]r  }t	        j                  t        j                  dt         j                  ddt         j                  dg|      |	      }|j
                  |k(  sJ |j                  d
k(  rrJ  y )Nr  r   r|   r   )r  r2  r   r   r   rm   rS   r   )re   r   r   r   r   rT   ro  r   )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/ $xx!RVVQ2661!=RH!yyB!###	$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   rS   r   )secondr   r     )microsecondr  r   )r  r  Nr   )r   r   r  r   r   r   r  )r<   r=   s     r   test_time32_time64_from_integerr  5	  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rT   from_pandasrS   )r   r   re   ro  r   r   s      r   _check_casez=test_binary_string_pandas_null_sentinels.<locals>._check_caseS	  sD    hh"&&)E88Xt,26zz(###r   rR   r  r2   )r  s    r   (test_binary_string_pandas_null_sentinelsr  P	  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   rR   r  rU   
large_utf8s   stringr   Tr   r  r   r   r   r   rS   r  r   )re   ro  r   rR   r  r^  r_  r`  r  r  r  r  r   r   r.   r/   rt   r0   r   r   )r   r	  r   r<   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#	$ $RT:  ",QA>>>?	$ 	$s   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   r|   T)r  )pandasIndexre   ro  r   r   r   r   )pdr   r<   r=   s       r    test_pandas_null_sentinels_indexr  y	  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  rm   zdatetime64[D]r|   rS   Frq   )re   r   r   r   r   r  r   r]   rg   rh   r}   r;   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  rm   r  rW   r7     r   r   r   r   r   )r   r   r   rT   r   r+   s    r   test_array_from_naive_datetimesr  	  sg    
(($1b"b1$1aA. C
 88r||DT2222r   )r}   rT   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  rm   r  rW   r7   r  r   r   r   r|   rS   )r   r   r   re   r   r  )r}   rT   ra   r"   r=   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  rm   r  rW   r7   r  r   r   r   r  r|   r  )r   re   r   r  r.   r/   r   r  )ra   r   r   s      r   5test_array_from_different_numpy_datetime_units_raisesr  	  s     	$1b"b1$1aA.D
 	_-A	$.	/B"1;bf%D	r22	3 
  s   $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.111111111rS   r   )re   
datetime64r   r   r   rT   r   )r   r   r2  ya1a2s         r   "test_array_from_list_of_timestampsr"  	  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 unitro   )re   r  r.   r/   r   r  r   )r   r2  r  s      r   +test_array_from_timestamp_with_generic_unitr$  	  sm    
eA
56A
56A	r22F
H 
!Q  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   r|   rS   )r   r   re   r   r   r)   DurationArrayrT   r   r   r  )r}   rT   ra   ri   r"   r=   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)re   timedelta64r   r.   r/   r  r   )tdra   s     r   .test_array_from_numpy_timedelta_incorrect_unitr,  	  s     
	Brxx~& ]]./ 	HHTN	 	
 
3	Brxx~& ]]./ 	HHTN	 		 		 	s   C6C#C 	#C,	binary_typec                    | xs t        j                         }t        j                  g dd      }t        j                  ||       }|j                  |k(  sJ t        j                  g d|      }|j                  |      sJ t        j                  g d      }t        j                  || |      }t        j                  g 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
|      }|j                  |      sJ t        j                  g dd      }t        j                  ||       }t        j                  g d|      }|j                  |      sJ y )NabcdeabcrA   z|S5r|   rS   r  rl  r0  NrA   rn   r   r0  rA   Nr0  rA   Nr0  rA   rA   rA   rA   z|S0)r   rR   re   r   rT   r   )r-  expected_typer"   	arrow_arrr=   rj  s         r   test_array_from_numpy_asciir7  
  sp     .299;M
(('u
5Ck*I>>]***xx,=AHH%%%88()Dk5Ixx+-@HH%%% (('!+5
9#A#
>C88(1,-cc2Dk5IxxK*,HH%%% ((<u
-Ck*Ixx=9H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   )r9  r:  r;  r<  r=  r:  r  )r   r   r   r   rt  r)   MonthDayNanoIntervalArrayrT   MonthDayNanor   r   ra   r"   ro  r=   s       r   "test_interval_array_from_timedeltarC  -
  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   r9  r:  r<  r=  r>  leapdaysrE  r   r9  r:  r<  r=  r?  r  rI  r   r:  nanosecondsiUUUrD   )rH  rI  i$I$)r>  r   l   	z )r9  rM  l   \kpz)dateutil.relativedeltarE  r
  rG  r   r   r)   r@  rT   rt  rA  r   r   r   r   r   r.   r/   rt   )rE  rG  ra   r"   ro  r=   s         r   &test_interval_array_from_relativedeltarO  C
  sG    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	" D
*OSABCD	z	" A
*N#>?@A	z	" .
*&=)*, - 	.. 
z	" @
*+;=>?@ @D DA A. .@ @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   rt  r)   r@  rT   rA  r   r   rB  s       r   test_interval_array_from_tuplerQ  m
  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   rF  r   )	rH  rI  r   r9  r:  r<  r=  r>  rM  )rE  r   l   E5IQ)r   r   r   rE  r   rK  r?  rL  )pandas.tseries.offsetsrG  r   r   r)   r@  rT   rt  rA  r   r   r   r   r   r   r  )rG  ra   r"   ro  r=   expected_from_pandasactual_lists          r   #test_interval_array_from_dateoffsetrV  |
  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   string_typec                    | xs t        j                         }ddg}|D ]P  }t        j                  g d|      }t        j                  ||       }|j                  |k(  sJ t        j                  g d|      }|j                  |      sJ t        j                  g d      }t        j                  || |      }t        j                  g 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|      }|j                  |      rQJ  t        j                  g dd      }t        j                  ||       }t        j                  g d|      }|j                  |      sJ y )Nz<U5z>U5r/  r|   rS   r  rl  r2  rn   r   r3  r4  z<U0)r   r  re   r   rT   r   )rW  r5  dtypesr}   r"   r6  r=   rj  s           r   test_array_from_numpy_unicoderZ  
  s     ,2779MU^F *hh+59HHS+.	~~...880}E)))xx,-HHS+D9	88/mD))) hh+a/u=ccBxx,q01#A#6HHS+D9	88 *0=?))))*. ((<u
-Ck*Ixx=9H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   rS   )r.   r/   r0   r   r   re   r   r2   r   r   !test_array_string_from_non_stringr]  
  sB     
y	! 8
)$299;78 8 8s   ?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)Nr|   rS   r   r   Tr  )
re   r   r   r   r   r   ro  r.   r/   r0   )rP  r"   s     r   test_array_string_from_all_nullr_  
  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}   rj  r   r   Nrm   rS   z Cannot pass a numpy masked arrayro   )TFFFrl  )re   mar   r   r   r.   r/   rt   rc  r<   r=   s      r   test_array_from_maskedre  
  s    	\5 
 
7BXXb\Fxxg6H??6"""	z)K	L A
"((#>?@A A As   -B99Cc                      t         j                  j                  dgd      } t        j                  |       }t        j                  dgd      }|j	                  |      sJ y )Nr   r   r|   rS   )re   rc  r   r   r   rd  s      r   test_array_from_shrunken_maskedrg  
  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   rf  ro   r   r;  )rw   arr2darr0ds      r   "test_array_from_invalid_dim_raisesrk  
  s    
,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   r|   r   )TTTT)re   onesr  r   r   r   r;   s      r   test_array_from_strided_boolrn  
  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   rE  )abcdefFrl  )r   rR   r   rI  r   r   r2  r   r  re   r   r   )pydatar   rY  nparraypatyperj  arrow_arrays          r   test_array_from_stridedrz    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&;&;&====>	>>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_countr~    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 )Nrb  rS   r   r   r   @   rW   hhxxh)r   r   rm   rf  3b)s   foo!Ns   bar!!r   rn   4i)r   rm   rm   r   s	   foo!bar!!)r   r   rI  r^   r   
to_pybytes	bytearrayrG  r0  unpackre   r   )r   r^   null_bitmapa_slicedr  r   s         r   test_buffers_primitiver  $  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   Nrm   rn   rS   rm   r   rn   r  r  7   r   qqq8xqq)r   r   r   rm   rn   ))*   NN)N+   r   r   bxx)r  r   4xh)r  )r   r   r  r   r^   r   r  r  r0  r  r1  r   rI  )r   r^   r  r  r   s        r   test_buffers_nestedr  J  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 )Nrf  r   r|      r   Nr   rS      r   r   r  >   B   )rn   r   rD  r   r7         r   rm   r      r  )r   r   re   nbytesget_total_buffer_sizer   	getsizeofr   
__sizeof__r  r   r   rY   )r   r   s     r   test_total_buffer_sizer  m  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  rS   rf  rE  )r   rs   r   rI  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    s5    	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_typer[  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   rm   rn   r   rD  r   rS   )r   r   r   r   r   rD  )r   r   r   rn   rn   rD  rD  r   	r   Nr   r   rm   rn   r   rD  r   T)r   r   r   flattenr   r  r   )	r  r[  r7  r  r  r6  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   rm   rS   )r   r   r   r   r   r   )r   r   r   value_parent_indicesr   )r  r"   r=   s      r   test_list_value_parent_indicesr    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   rm   rS   )r   Nr   r   r]  )r   Nr   r   )getattrr   r   value_lengthsr   )r  r  r"   r=   s       r   test_list_value_lengthsr    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   rf  rS      r   r^  )r   r   r   r   Tr  )r   rm   rn   r   r   r   r   rm   rn   r   )r   r   r   r^   rH  rJ  rT   r   r   r   r  r  r   
value_type)r[  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   rm   r   r  )r  r   r   )r   rm   r   rf  r   rm   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   rm   rn   r   rD  r   r   rS   )
r   r   r   rm   rn   r   rD  Nr   r   T)r   r  r   r   rT   r   r  )r7  r  r6  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  rS   )r   r   r  r   r  )r   s    r   -test_fixed_size_list_array_flatten_with_slicer  J  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keyFrg  r   r  r  r  rS   r   r   )r  r   r   r   r   r   r   r   )r   r  r  r   r0  r1  r   r   rT   r   r  r  r  r   r  r  r.   r/   r  r  )r   	ty_valuesr   s      r   test_map_array_values_offsetsr  P  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 )Nr2  r  r*  rS   r  r,  r.  r/  r   r   rn   r.  r/  )r+  Nr-  r  )r,  Nr.  )r   N)r         @)Nr.  r~   )Nr  r.  r   r  )r  N)Nr,  )r   NN)NNr,  r,  )	r   r0  r1  rI  r2  r   r  rT   r   )r   r   xsyss       r   test_struct_array_flattenr  h  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)Nr2  r  r*  rS   r   r   r   r   r  r  r   r  zrA   )r   r0  r1  rI  r2  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)Nr2  r  r*  r  r  r   r   r   r   )r   Nrn   rS   )r,  Nr/  r  r  )r   r0  r1  rI  r2  r   _flattened_fieldr)   r   r  r  r   r.   r/   r0   r   r  r  s
             r   !test_struct_array_flattened_fieldr    sQ   	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)Nrm   )lengthrS   )r   r   r  r   rI  r   r   r   r#  r  r~  r  r2  r   r  r  rR   r   	itertoolsproductr   r  r   r  r  )r   t1t2s      r   test_empty_castr    s   
	


	








		
		
		









		
		
		
		
		%E* %%eU3 R	 HHRb!&&r*	
 //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tatar|   Frl  r  r  )re   r   r   r   r   r   r  r  r.   r/   rt   )vecvec2r"   r  r=   rj  s         r   test_array_from_numpy_str_utf8r    sk    ((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large_typesFc           	         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  }| rt        j                         nt        j                         }| rt        j                         nt        j                         }||f||ffD ]  \  }	}
t        j                  |	      }t        j                  ||
      }d }|j                  |
k(  sJ | rSt        |t
        j                        sJ t        t        |            D ]  }||   }|j!                         |	|   k(  rJ  t        |t
        j"                        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   xr2  r7   i r  i      r   r   )rF   r   r  r  decoder   rU   rR   r  r  re   r   rT   r)   r1   r   r'   r=  r-  r  )r  r   unicode_valuesr   unique_stringsr2  unicode_unique_stringsr-  rW  r	  ex_typer"   r6  valvalue_indexr  s                   r   %test_numpy_binary_overflow_to_chunkedr    sX    VFUN
 r 	
4=!CBK$6$6v$>>>N 
 +9*>*>*@B"&!Q  &!11 B B
uW~>!~a"f%>>F %g0 .a"f5 0 0N (3"//#		K%0"--/bggiK!;/);79 %ghhtnHHS'*	~~(((i2223y>* .lyy{d1g---. i999 ''3...K9//0 %!*  %C99;${*;;;;1$K%%+%B>0s   +H/H4H:#H?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_megarP  r"   s       r   #test_list_child_overflow_to_chunkedr  K  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)r5   r6   Nr   FFFTrl  TTTT)r   
infer_typer  re   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rm   Nrm   rF  FTFTrl  r   r|   )r   r   re   rT   r   r+   s    r   test_array_maskedr  m  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  rl  )rm   Nrm   N)rm   Nrm   r   )rm   r   Nr   )rm   NNN)r   r   rF  g      @r  )FNFTTFTF)r   r   re   r   r.   r/   r  r0   r+   s    r   test_array_supported_masksr  z  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((	) 2hh022 
r((	) <hhHH%9:<< 
r((	) OhhHH%?*,((3K*LNOO
 
r((	) BhhHH%?@BB
 
y	! 8hhrxx 01688 
y	! Bhhrxx 01HH%?@BB B5< <2 2< <O O
B B
8 8B B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  r|   rl  )r
  r   r   Seriesr   )r
  r"   s     r   !test_array_supported_pandas_masksr    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   cccr7   r   )FFFs   XXXr  )r   r   rR   re   r   )masked_basicmaskedmasked_nullsnpary  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 )Nrp  r   Frl  rq  rr  )re   r   r   rR   r   )rw  ry  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   r|   zmust be boolean dtypezmust be 1D arrayr   zdifferent lengthro   rl  )re   r   r0   r   r  rt   r.   r/   )r   objrj  exrw   s        r   test_array_invalid_mask_raisesr$    sT    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'    s5    	}	% !
#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   r|   F)copy)r}   r)  r~   r   r   r   z
2.0.0.dev0zUnable to avoid a copyro   T)r   r   re   r   rg   rh   ro  r   __version__r.   r/   rt   	__array__flags	writeabler}   r;   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%	& hhy!]]:& 	7HHS	6	7 ((9
C]]]%F<<!!!!
((9
C]])!44]@F<<9$$$	& 	&	7 	7s   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:  ra   selfra   s     r   __init__z-test_array_protocol.<locals>.MyArray.__init__9  	    DIr   Nc                 D    t        j                  | j                  |      S r5  )r   r   ra   r5  rT   s     r   __arrow_array__z4test_array_protocol.<locals>.MyArray.__arrow_array__<  s    88DIID11r   r:  r7  r8  r9  r6  r:  r2   r   r   MyArrayr1  8  s    		2r   r<  r   r   r|   rS   rz   rl  r   r  c                       e Zd Zd ZddZy)+test_array_protocol.<locals>.MyArrayInvalidc                     || _         y r:  r3  r4  s     r   r6  z4test_array_protocol.<locals>.MyArrayInvalid.__init__R  r7  r   Nc                 @    t        j                  | j                        S r:  )re   r   ra   r9  s     r   r:  z;test_array_protocol.<locals>.MyArrayInvalid.__arrow_array__U  s    88DII&&r   r:  r;  r2   r   r   MyArrayInvalidr>  Q  s    		'r   rA  c                       e Zd Zd ZddZy)%test_array_protocol.<locals>.MyArray2c                     || _         y r:  r3  r4  s     r   r6  z.test_array_protocol.<locals>.MyArray2.__init___  r7  r   Nc                 F    t        j                  | j                  g|      S r5  )r   rs   ra   r9  s     r   r:  z5test_array_protocol.<locals>.MyArray2.__arrow_array__b  s    ##TYYKd;;r   r:  r;  r2   r   r   MyArray2rC  ^  s    		<r   rF  c                       e Zd Zd ZddZy)%test_array_protocol.<locals>.MyArray3c                      || _         || _        y r:  )data1data2)r5  rJ  rK  s      r   r6  z.test_array_protocol.<locals>.MyArray3.__init__k  s    DJDJr   Nc                 \    t        j                  | j                  | j                  g|      S r5  )r   rs   rJ  rK  r9  s     r   r:  z5test_array_protocol.<locals>.MyArray3.__arrow_array__o  s"    ##TZZ$<4HHr   r:  r;  r2   r   r   MyArray3rH  j  s    		Ir   rM  )re   r   r   r   r   r   r.   r/   rt   r0   rs   )r<  r"   r<   r=   rA  rF  rM  ri   s           r   test_array_protocolrN  5  sH   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:  r3  r4  s     r   r6  zArrayWrapper.__init__z  	    	r   Nc                 8    | j                   j                  |      S r:  )ra   __arrow_c_array__)r5  requested_schemas     r   rT  zArrayWrapper.__arrow_c_array__}  s    yy**+;<<r   r:  )r7  r8  r9  r6  rT  r2   r   r   rP  rP  y  s    =r   rP  c                       e Zd Zd ZddZy)ArrayDeviceWrapperc                     || _         y r:  r3  r4  s     r   r6  zArrayDeviceWrapper.__init__  rR  r   Nc                 <     | j                   j                  |fi |S r:  )ra   __arrow_c_device_array__)r5  rU  kwargss      r   rZ  z+ArrayDeviceWrapper.__arrow_c_device_array__  s    1tyy112BMfMMr   r:  )r7  r8  r9  r6  rZ  r2   r   r   rW  rW    s    Nr   rW  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 r\  )r   r   r   ra   r   )r\  r"   r<   s      r   test_c_array_protocolr^    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   rS   z7Received unsupported keyword argument\(s\): \['other'\]ro   znot-none)other)r   r   r   r.   r/   r  rZ  )r"   r   s     r   0test_c_array_protocol_device_unsupported_keywordra    sg    
((9288:
.C	H
 7 	$$:$6	7 	$$4$0A7 7s   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   rm   r  )r   concat_arraysr   r   )concatenateds    r   test_concat_arrayre    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   r  rc  r   r2   r   r   !test_concat_array_different_typesrg    sN    	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 objectsro   r   r   r   rm   )r.   r/   r0   r   rc  rs   r+   s    r   test_concat_array_invalid_typeri    s     
y(F	G !
$ ! 

QFQF+
,C	y(F	G 
 	! ! s   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   rS   )r   r   r   r   dtr   rs   )r"   r   s     r   test_to_pandas_timezonerl    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  )re   r  r   r   r   r}   r   )r=   r"   r<   s      r   test_to_pandas_float16_listrn    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)rn   rD  #   rS   
descending)rp  rD  rn   r   rf  )r   rn   rm   r   r   r   )rn   rD  rp  Nat_end)null_placement)rp  rD  rn   Nat_start)Nrp  rD  rn   )r   r   r   sortr   rs   )r"   
sorted_arrs     r   test_array_sortrw    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)rn   rD  rD  rp  rS   )r5   carr6   foobarr   r   r  rq  )byrp  rz  r   rD  ry  r6   rn   r5   ra  rk  rt  )r{  rs  rr  )r   rm  r   r   r   ru  r   )r"   rv  arr_with_nullss      r   test_struct_array_sortr}    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   rS   l    r   Fr  r  )
r   r   r   rT   r   r.   r/   r  r   r  r;   s      r    test_array_accepts_pyarrow_arrayr    s7   
((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_arrayr  r   logical_lengthphysical_lengthphysical_offsets         r   check_run_end_encodedr  '  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   rn   r7   rY  r   r   r   r   rY  rm   r   )r   RunEndEncodedArrayr   r  )ree_typer  r   r  s       r   +check_run_end_encoded_from_arrays_with_typer  0  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 r  )r   r   run_end_typer  r  r   rT   r  )r  r  r   typed_run_endstyped_valuesr  s         r   'check_run_end_encoded_from_typed_arraysr  7  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   rI  r   r   r  r~  run_end_encodedr  )r  r  r  s      r    test_run_end_encoded_from_arraysr  A  s    /1RXXZ< >99;
BIIKL 	>J)),
CH7A3H=	>>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)
Nr  r  )r  r  rY  r   rm   r   r   r   )
r   r  r   r   r  rJ  r  r.   r/   rt   )	r  r   r  r  r^   r   rG  r_  r  s	            r   !test_run_end_encoded_from_buffersr  J  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	" I
**8VdD\+5vx	II 
z	" E
**8VW+5vt	EE 
z	" K
**8VW+5vz	KK 
z	" @
**8VW+,fh	@@ @I IE EK K@ @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   rS   )r   r   rn   r   )r   r   r   N)r   r   r   r   r   N)r   r   rm   rn   r   )r   r   Nr   N)FFFTFTr  )r   r  r   r   r  r   r   r   re   rI  r2  )	r  r   r  r=   r"   r<   
ree_type_2
expected_2rj  s	            r   )test_run_end_encoded_from_array_with_typer  y  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  Frq   )r   r   r  r   r   re   rg   rh   r]   r.   r/   r  )r"   r  r=   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  Trq   )
r   r   r  r   r   r   r   r.   r/   r  )r"   r  s     r   test_run_end_encoded_to_pandasr    s    
Cb00RXXZHII '')S000	r	' 1401 1 1s   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   rm   rn   r   NrD  )r   r   rm   r   )r   r   r   r   r   r   r   rm   rn   r   rD  r  rS   r  )r   r   r   r  r   )r   r   r   )r   r   r   r  rl  )r   r   r   r  sizesr   r1  r   rT   r  r  rR   r.   r/   r0   r   )	r  r[  r   r  r  r   r  r<   rj  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	! F##GUF#EF 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+++]F F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   )FFTrl  )r   r   r   )r   r   r.   r/   r   r  r   r  r  r   rn  )r  r[  r   r  r  rj  r   array_slices           r    test_list_view_from_arrays_failsr     s    VFGE88()D 
rvv**	+ G##GUF#FG G''T'JE)K 
rvv**	+ <##!2!2[%8%8%: 	$ 	<< <G G< <s   D:ADDD)r  r[  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  rS   r&   r   rm   rn   r   rD  r   )r   r   r   rn   rn   rD  rD  )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   )rm   r   r   r   r
  rl  )rm   r   r   )
r   r   r   r  r   r  r  r   r   r   )r  r[  r  r  r6  r  r  sizes1r7  r  r  sizes2r   r  r  r   rj  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   rm   )r   r   r   r  )r  r  r   r   r   rm   rf  r   r  )r  r   sliced_arrayr   r'  s        r   test_list_view_slicer  e  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)Nr7   r|   rS   r   r  )re   r}   newbyteorderrf   r.   r/   r   r  r   r   rm  r   )r  numpy_swapped_dtyperi   s      r   test_swapped_byte_order_failsr  y  s    
 ((#56CCEYYr!45F 
r22	3 
 
r22	3 ,
bjjl+, 
r22	3 
& 
r22	3 :
""F8C5"9: : , , : :s0   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   rm   r|   r  Fr   )TTFFTr  )3r.   r   Contextre   rf   r   r   r  buffer_from_datar   r1   rJ  r   rG  r^   device_typeDeviceAllocationTypeCUDAis_cpur   rY   r  r   r/   r  
__dlpack____dlpack_device__r  r  r   r  r   r  r   r  r   r  r  iterrn  is_nanr(   	fill_nulltake	drop_nullfilterindexru  r+  r]   r   )
cudactxra   validitycuda_data_bufcuda_validity_bufr"   r  r|  r   s
             r   test_non_cpu_arrayr    sw   ~.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q	*	+ 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   r^  
hypothesishhypothesis.strategies
strategiesstr  r.   r0  r	   r   r    numpyre   ImportErrorpyarrowr   pyarrow.tests.strategiestestspastpyarrow.vendored.versionr   mark	processesr   r$   r,   r3   r>   rB   rG   rJ   rM   rP   r[   rk   rx   r   r   parametrizer   r   r   r
  r   nopandasr   r   r   r   r   r   r   r   r   r  r
  r  r$  r(  r3  r<  r?  rA  rM  rU  rZ  r  r   	list_viewlarge_list_viewrb  rd  rv  rx  r~  r  r  r  r  r  r  LargeListArrayr  r  r  r  r  r  r  r  r  r  r	  r  r  r  r'  r)  r+  r.  r3  r8  r>  rC  rI  rL  rQ  ra  rf  rk  rm  rp  rr  ry  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  rF   rR   r  r  r   r   rI  r1  pickle_test_parametrizer  r  settingsHealthChecktoo_slowgivenru  	all_typesintegersr  r  r  r  r  r  r  r  r  r  r  r   r  r  r"  r$  r   r'  r,  rU   binary_viewr7  rC  rO  rQ  rV  r  r  rX  rZ  r]  r_  re  rg  rk  rn  rz  r~  r  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.  rN  rP  rW  r^  ra  re  rg  ri  rl  rn  rw  r}  r  r  r  r  r  r  r  r  r  ListViewArrayLargeListViewArrayr  r  r  r  r  r  r2   r   r   <module>r     s  $ %    "     
   ' ' , - -.B		; 4 4& 4 4  4 9 9" !89e}-4 . : 4 !894 : 4 4 4  : #8  #8L BGGIBGGIBIIK	  

4'n
# 6 6&;R'B4:%7   2 2#  A A( "F84 ,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)*	- # #,   BIIKBOOBNN	) 
& &@,, &@ &@R,  8  8F BGGIBMMOBNN	) 
 &  &F 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 6-% 7   -%` " "" 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 eC  	Bs   AT< T<AUUAU