
    z-Phj)                    #   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n# e$ r dZY nw xY wd dlZd dlmc mZ d dlmZ e
j        j        d             Zd Zd Zd Zd Zd	 Z d
 Z!d Z"d Z#d Z$d Z%e
j        j        d             Z&e
j        j        d             Z'e
j        j        d             Z(e
j        j        d             Z)e
j        j        e
j        *                    dg d          e
j        *                    dddg          d                                     Z+e
j        j        e
j        *                    dg d          d                         Z,e
j        j        d             Z-e
j        j.        d             Z/e
j        j0        e
j        j.        d                         Z1e
j        *                    dd ej2                     ej3                     ej4                    g          d             Z5d Z6d Z7d  Z8e
j        j        d!             Z9d" Z:e
j        j        d#             Z;d$ Z<d% Z=d& Z>e
j        j        d'             Z?e
j        j        d(             Z@d) ZAe
j        j        d*             ZBd+ ZCd, ZDe
j        *                    d-ejE        ejF        ejG        ejH        g          d.             ZId/ ZJd0 ZKd1 ZLe
j        *                    d2d3          d4             ZMe
j        j        d5             ZNe
j        j        d6             ZOe
j        j        d7             ZPd8 ZQd9 ZRe
j        j        e
j        *                    d:ejS        ejE        fejT        ejF        fg          d;                         ZUe
j        *                    d:ejS        ejE        fejT        ejF        ff          e
j        *                    d<dd ggdd dgd ggd gd=ggf          d>                         ZVe
j        *                    d:ejS        ejE        fejT        ejF        ff          d?             ZWd@ ZXdA ZYdB ZZe
j        j        dC             Z[dD Z\dE Z]dF Z^dG Z_dH Z`dI ZadJdJdKdLZbe
j        j        dM             ZcdN ZddO ZedP ZfdQ ZgdR ZhdS Zie
j        j        dT             Zje
j        j        dU             Zke
j        j        dV             ZldW Zme
j        j        dX             ZndY ZodZ Zpe
j        j        d[             Zqe
j        j        d\             Zrd] Zsd^ Ztd_ Zud` Zvda Zwdb Zxdc Zydd Zzde Z{df Z|dg Z}e
j        j        dh             Z~e
j        j        di             Ze
j        j        dj             Zdk Ze
j        j        dl             Ze
j        j        dm             Ze
j        j        dn             Zdo Ze
j        *                    dpdqg drfds ed dt          fdu ed dv          fdw ed dx          fdy ed dx          fdz ed dx          fd{ ed dx          fd| ed dx          fd} ed dx          fd~g dfdg dfdg dfdg df ej        d          g dfg          d             Ze
j        *                    dg d ej                    fg d ej                    fg d ej                    fg d ej4                    fg dfd=dgdgg ejE         ej                              fddgdgg ejF         ej                              fdgdddgg ejE         ej4                              fd=dgdgg ejG         ej                              fddgdgg ejH         ej                              fdgdddgg ejG         ej4                              fg d ej         ej        d ej                               ej        d ej4                              g          fg          Zed             Zd Ze
j        j         ej        ej        j        f           ej         ej        ej         ej        d dx                              d                                     Zed             Ze
j        j        d             Ze
j        j        d             Ze
j        j        d             Zd Ze
j        j        d             Ze
j        j        d             Ze
j        j.        d             Ze
j        j        d             Zd Ze
j        j        e
j        *                    dd ej        d          fd ej        d          fd ej        d          fd ej        d          fg          d                         Ze
j        j        d             Ze
j        j        e
j        *                    dg d          d                         Ze
j        j        d             Ze
j        j        e
j        *                    dd ej        d          fd ej        d          fd ej        d          fd ej        d          fg          d                         Ze
j        j        d             Ze
j        j        e
j        *                    dd ej                     ej                     ej                    g          d                         Zd Ze
j        j.        d             Zd Ze
j        j.        d             Ze
j        j        e
j        *                    dd ej                     ej                     ej                    g          d                         Ze
j        j        d             Ze
j        j        d             Ze
j        j        dÄ             Ze
j        j        dĄ             Ze
j        j        dń             Ze
j        j        dƄ             Ze
j        j        dǄ             ZdȄ Ze
j        j        dɄ             Zdʄ Ze
j        j        d˄             Zd̄ Zd̈́ Zd΄ Ze
j        *                    d ej                    ejE        f ej                    ejF        fg          dЄ             Ze
j        *                    d ejE         ej                               ejE         ej                    dҦ           ejF         ej                              g          dӄ             Ze
j        *                    d ej                     ejE         ej                              f ej                     ejE         ej                    dҦ          f ej                     ejF         ej                              f ej                     ejG         ej                              f ej                     ejH         ej                              fg          dՄ             Ze
j        *                    d-ejE        ejF        g          dք             Ze
j        *                    dejS        ejT        g          d؄             Zdل Zdڄ Zdۄ Zd܄ Zd݄ Zdބ Zd߄ Zd Ze
j        j        d             Ze
j        j        e
j        j        e
j        j        e
j        *                    dddJg          d                                                 Ze
j        j        d             Ze
j        j        d             Ze
j        j        d             Ze
j        j        d             Ze
j        j.        d             Ze
j        j        d             Ze
j        j        d             Ze
j        j        d             Zd Ze
j        j        d             Ze
j        j        d             Z G d d          Z G d d          Ze
j        *                    deeg          d             Zd Zd Zd Zd Ze
j        j.        d             Ze
j        j.        d             Zd Zd Zd Zd Zdd Zd Zd Zd Ze
j        j        d             Ze
j        j        d             Ze
j        j.        d             Ze
j        *                    d:ej        ejG        fej        ejH        fg          d             Ze
j        *                    d:ej        ejG        fej        ejH        fg          d             Ze
j        *                    d	ej        ejG         ej                    fej        ejH         ej                    fg          d
             Ze
j        *                    dej        ej        g          d             Ze
j        j        e
j        *                    dg d          d                         Zd ZdS (      )IterableN)Versionc                  <   d} t          j        t          j        d| gdt           j                  }|j        dk    r4t          |j        t          j                   |                                 t          |j        
                                          dk    sJ d S )NzOif 1:
    import pyarrow as pa

    assert pa.total_allocated_bytes() == 0
    z-cT)universal_newlinesstderrr   )file)
subprocessrunsys
executablePIPE
returncodeprintr   check_returncodelen
splitlines)coderess     X/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/pyarrow/tests/test_array.pytest_total_bytes_allocatedr   (   s    D
 .#.$5,0J J JC
~cjsz****sz$$&&''1,,,,,,    c                      t          j        g d          } t          j        |           } |            J ~  |            J d S N         )paarrayweakrefref)arrwrs     r   test_weakrefr$   7   sL    
(999

C	S		B244244<<<<<r   c                      t          j        g d          } | d                                         J | d         j        du sJ t	          | d         t           j                  sJ d S )Nr   Nr   r   F)r   r   as_pyis_valid
isinstanceInt64Scalarr"   s    r   test_getitem_NULLr,   ?   sf    
(<<<
 
 Cq6<<>>!!!q6?e####c!fbn-------r   c                      t          j        t                    5  t          j        ddg           d d d            d S # 1 swxY w Y   d S )Nr   r   )pytestraises	TypeErrorr   Array r   r   test_constructor_raisesr3   F   s     
y	!	!  
!Q                 s   >AAc                  v    t          j        dgd g dg          } |                                 }d}||k    sJ d S )Nr   )r   r   Nz9[
  [
    1
  ],
  null,
  [
    2,
    3,
    null
  ]
]r   r   	to_stringr"   resultexpecteds      r   test_list_formatr:   M   sK    
(QC|||,
-
-C]]__FH Xr   c                  n    t          j        g d          } |                                 }d}||k    sJ d S )N Nfooz[
  "",
  null,
  "foo"
]r5   r7   s      r   test_string_formatr?   _   sE    
($$$
%
%C]]__FH Xr   c                      t          j        t          d                    } |                     d          }d}||k    sJ d S )Nd   r   )windowz[
  0,
  1,
  ...
  98,
  99
])r   r   ranger6   r7   s      r   test_long_array_formatrD   k   sJ    
(5::

C]]!]$$FH Xr   c                  r    t          j        g d          } |                     d          }d}||k    sJ d S )Nr<   r   )indentz[
 "",
 null,
 "foo"
]r5   r7   s      r   test_indented_string_formatrG   y   sG    
($$$
%
%C]]!]$$F+HXr   c                  r    t          j        g d          } |                     d          }d}||k    sJ d S )Nr<   r   )top_level_indentz [
   "",
   null,
   "foo"
 ]r5   r7   s      r   %test_top_level_indented_string_formatrJ      sG    
($$$
%
%C]]A]..F3HXr   c                  n    t          j        g d          } |                                 }d}||k    sJ d S )N)    r   Ns   foos   z([
  00,
  ,
  null,
  01666F6F,
  80FF
]r5   r7   s      r   test_binary_formatrM      sE    
(@@@
A
AC]]__FH Xr   c                     t          j        g dd          } t          j        g dd          }| j        dk    sJ |                     dd          j        dk    sJ |j        dk    sJ |                    dd          j        dk    sJ d S )	N)s   0000Ns   11111s   222222s   3333333binarytypelarge_binary   r   r      )r   r   total_values_lengthslice)r"   	large_arrs     r   test_binary_total_values_lengthrX      s    
(CCC " " "CIII,. . .I "b((((99Q??."4444(B....??1a  4::::::r   c                     t          j        t          d                    } |                                 }|                                 d         }|j        |j        j        k    sJ d } dd l}|	                                 |j
        J t          j        d          }t          j                            ||           d S )N
   r   r   )r   r   rC   to_numpybuffersaddressctypesdatagccollectbasenparangetestingassert_array_equal)r"   np_arr	arrow_bufr`   r9   s        r   test_to_numpy_zero_copyri      s    
(599

C\\^^F a I 22222
CIIIJJLLL ;"""y}}HJ!!&(33333r   c                  D   g dg dg} t          j        |           }d}t          j        t          |          5  |                    d           d d d            n# 1 swxY w Y   |                                }g d}t          j                            ||           d S )N)r   r      )rk      rA   z>zero_copy_only must be False for pyarrow.ChunkedArray.to_numpymatchTzero_copy_only)r   r   rk   rk   rl   rA   )	r   chunked_arrayr.   r/   
ValueErrorr[   rc   re   rf   )elementschunked_arrmsgrg   r9   s        r   %test_chunked_array_to_numpy_zero_copyrv      s    		;;;'H"8,,K
JC	z	-	-	- 2 2D1112 2 2 2 2 2 2 2 2 2 2 2 2 2 2 !!##F###HJ!!&(33333s   AA!$A!c                  l   t          j        g d          } t          j        t                    5  |                                  d d d            n# 1 swxY w Y   |                     d          }t          j        g d          }t          j                            ||           t          j        g d          }t          j        t                    5  |                                 d d d            n# 1 swxY w Y   |                    d          }t          j        g dt                    }t          j                            ||           t          j        g d          }t          j        t          d          5  |                                 d d d            d S # 1 swxY w Y   d S )	NTFTFro   NNNdtyper   r   Nzwith 1 nullsrm   )
r   r   r.   r/   rr   r[   rc   re   rf   object)bool_arrr8   r9   null_arrr"   s        r   test_to_numpy_unsupported_typesr      sH    x+++,,H	z	"	"                 e44Fx+++,,HJ!!&(333x***++H	z	"	"                 e44Fx***&999HJ!!&(333
(<<<
 
 C	z	8	8	8                   s5   AAAC88C<?C<F))F-0F-c                     t          j        t          d                    } |                                 }t	          j        t                    5  d|d<   d d d            n# 1 swxY w Y   |                     dd          }d|d<   | d                                         dk    sJ t	          j        t                    5  |                     dd           d d d            d S # 1 swxY w Y   d S )NrZ   r   FT)rp   writable)r   r   rC   r[   r.   r/   rr   r'   )r"   rg   np_arr2s      r   test_to_numpy_writabler      s]   
(599

C\\^^F 
z	"	"  q	               ll%$l??GGAJq6<<>>Q 
z	"	" 9 9D48889 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9s$   A!!A%(A%C&&C*-C*unit)smsusnstzUTCc                    t          j        g dt          j        | |                    }t          j        g dd                    |                     }|                                }t          j                            ||           d S )Nr   r   zdatetime64[{}]rz   )r   r   	timestamprc   formatr[   re   rf   )r   r   r"   r9   rg   s        r   test_to_numpy_datetime64r      sz     (999bl4B777
8
8Cx			)9)@)@)F)FGGGH\\^^FJ!!&(33333r   c                    t          j        g dt          j        |                     }t          j        g dd                    |                     }|                                }t          j                            ||           d S )Nr   ztimedelta64[{}]rz   )r   r   durationrc   r   r[   re   rf   )r   r"   r9   rg   s       r   test_to_numpy_timedelta64r      su     (999bk$//
0
0Cx			):)A)A$)G)GHHHH\\^^FJ!!&(33333r   c                      t          j        g d                                          } t          j        g dt                    }|                     d          }t          j                            ||           d S )N)abr   rz   Fro   )r   r   dictionary_encoderc   r}   r[   re   rf   )r"   r9   rg   s      r   test_to_numpy_dictionaryr     sl     (???
#
#
5
5
7
7Cxv666H\\\//FJ!!&(33333r   c                  6   dd l } t          j        t          d                    }t          d          D ]2}|                                }t          j        |          dk    sJ d }3t          j        |          dk    sJ t          d          D ]}t          j        t          d                    }|                                }d }|                                  t          j        |j        j	                  }|dk    sJ |
                                 d S )Nr   rZ   r   )r`   r   r   rC   	to_pandasr   getrefcountra   valuesrb   sum)r`   r"   iseriesbase_refcounts        r   test_to_pandas_zero_copyr     s   III
(599

C2YY  v&&!++++?31$$$$2YY  huRyy!!


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

 r   c                     t          j        t          d                    } t          j        d | D                       }|                                g dk    sJ |j        t          j        d          k    sJ t          |d         t           j        j	                  sJ t          j        |           }|                                g dk    sJ |j        t          j        d          k    sJ t          j        | d          }|                                g d	k    sJ t          j        g d
          } | j
        t          j                    k    sJ t          j        |           }|                                }|d d         g dk    sJ t          j        |d                   sJ |j        t          j        d          k    sJ t           j                            t          j        g d          t          j        g d                    } t          j        |           }|j        t          j        d          k    sJ |                                g dk    sJ d S )Nrk   c                     g | ]}|S r2   r2   ).0_s     r   
<listcomp>z test_asarray.<locals>.<listcomp>4  s    (((q(((r   r   r   r   r   Or   int64strrz   )0123)r   r   r   Nr   )              ?       @float64r   r   r   r   r   r   r   cr}   )r   r   r   r   r   )r   r   rC   rc   asarraytolistr{   r)   lib
Int64ValuerQ   r   isnanDictionaryArrayfrom_arrays)r"   rg   rs   s      r   test_asarrayr   ,  s6   
 (588

C Z((C((())F==??lll****<28C==((((fQi!233333 Z__F==??lll****<28G,,,,,, Z5)))F==??2222222 (???
#
#C8rxzz!!!!Z__F}}HBQB<<<<''''8HQK     <28I...... 

(
(
!!28OOO#<#<> >CZ__F<28H------==??777777777r   tyc                    t          j        d|           }t          j        g d|           }t          |          dk    sJ |                    |          sJ |  |j        t          j                    k    sJ d S |j        | k    sJ d S )Nr   rP   ry   )r   nullsr   r   equalsrQ   nullr   r"   r9   s      r   
test_nullsr   T  s     (12


Cx***444Hs88q====::h	zx2799$$$$$$x2~~~~~~r   c                  j   t          j        d          } t          j                                        }t          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| 	                    d                    
          f|                                dt          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 |
j                            |	j                  sJ |
                    |	          sJ |	j        t          j                    k    r|
j        |k    sJ |
j        dk    sJ d S )Npytz)tzinfoz
US/Easternr   )daysrZ   r   )r   r   r   rP   gGz@r   stringrk         ry   TrT   r   r   	   Frl   r   r   r   )r.   importorskipdatetimedatetodaynowreplaceutc
astimezonetimezone	timedeltar   r   r   r   r   scalaruint8r   time
large_listint8repeatr   rQ   r   r   
null_count)r   r   r   now_utcnow_with_tzonedaycasesvaluesizer9   r"   s              r   test_array_from_scalarr   g  s   v&&DM!!E




!
!Ckkk**G$$T]]<%@%@AAKQ'''F 
q"(D6""#	r28B<< 	QBHJJ7778	q"(D$<bjll;;;<	1bhzA~../Iabhjj)))HaS2XBHJJ///	

 
4!RX&8&8&899:	4"bhv{334	28UGaK(()	b"(C52:&&'H	A\$4==+F+FGGG  	
 
Q#((**!1223	BHfX\**+	28UGaK(()
QBHq!fq!f-../Ir1gBM"'))$<$<===Hr1gY]rwyy)A)ABBB	

 q		1bhaa(8(8'9A'=>>?A!EF "' ' 'tXit$$3xx4xx}-----zz(#####=BGII%%>T)))))>Q&&&&&' 'r   c                     g d} t           j                            g d|           }t          j        |d         d          }t           j                            dgdz  |           }|                    |          sJ t          j        |d         d          }t           j                            dgdz  |           }|                    |          sJ d S )Nr>   barbaz)r   r   r   r   )
dictionaryr   rl   r   r   )r   r   r   r   r   )r   r"   r8   r9   s       r   !test_array_from_dictionary_scalarr     s    &&&J


(
(*
(
M
MCYs1vq!!F!--qcAg*-MMH=="""""Ys1vq!!F!--qcAg*-MMH=="""""""r   c                     t          j        t          dd                    } |                                 }t          t	          |            t	          |                     D ](}| |                                         ||         k    sJ )t          dt	          |           z  t	          |                      D ];}t          j        t                    5  | |          d d d            n# 1 swxY w Y   <t          t	          |           dt	          |           z            D ];}t          j        t                    5  | |          d d d            n# 1 swxY w Y   <d S )NrZ      r   )	r   r   rC   	to_pylistr   r'   r.   r/   
IndexErrorr"   lstidxs      r   test_array_getitemr     s   
(5R==
!
!C
--//Cc#hhYC)) , ,3x~~3s8+++++R#c((]SXXI..  ]:&& 	 	HH	 	 	 	 	 	 	 	 	 	 	 	 	 	 	SXXq3s88|,,  ]:&& 	 	HH	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 s$   	C))C-	0C-	=	EE	E	c                  >   t          j        t          dd                    } |                                 }t          t	          |            t	          |                     D ]:}| t          j        |                                                   ||         k    sJ ;d S )NrZ   r   )r   r   rC   r   r   rc   int32r'   r   s      r    test_array_getitem_numpy_scalarsr     s    
(5R==
!
!C
--//Cc#hhYC)) 6 628C==!''))SX555556 6r   c                     t          j        t          d                    } |                     d          }t          j        t          dd                    }|                    |          sJ |                     dd          }t          j        t          dd                    }|                    |          sJ |                     d                              |           sJ t          |                     t          |                               dk    sJ t          |                     t          |           dz                       dk    sJ t          |                     t          |           dz   d                    dk    sJ t          j        t                    5  |                     d           d d d            n# 1 swxY w Y   t          j        t                    5  |                     dd           d d d            n# 1 swxY w Y   | dd                              |                     d                    sJ | dd                             |                     dd	                    sJ | d
d                              |                     t          |           dz
                      sJ t          |           }t          | dz  |dz            D ]}t          | dz  |dz            D ]}| ||         }|
                                 |                                 ||         }|                                |k    sJ t          ,|                                                                |k    sJ d S )NrZ   r   rk      r   rA   r   rl   r   )r   r   rC   rV   r   r   r.   r/   r   rr   validater   rc   r[   r   )	r"   slicedr9   sliced2	expected2nstartstopr   s	            r   test_array_slicer    s   
(599

CYYq\\Fxa%%H=="""""ii1ooGq!%%I>>)$$$$$ 99Q<<s##### syyS""##q((((syySA&&''1,,,,syySAs++,,1111	z	"	"  		"               
z	"	"  		!R               qrr7>>#))A,,'''''qs8??399Q??+++++rss8??399SXX\2233333CArAvq1u%% ; ;1"q&!a%(( 	; 	;DeDj/CLLNNN}}uTz2H==??h....~||~~,,..(::::	;; ;s$   (G

GG.HHHc                  N   t          j        d          } t          j        |           }t          j        |g          }t          d d d          t          d dd          t          ddd          t          dd d          t          ddd          t          ddd          t          d d d          t          ddd          t          d	d
d          t          ddd          g
}|D ]}||         }t          j        | |                   }|                    |          sJ t          j        |gdg          |         }t          j        |gdg          }|                    |          sJ ||         }t          j        | |         g          }|                    |          sJ d S )N   r   r   r   rZ   r   r   r   r   iif0names)rc   rd   r   r   rq   rV   r   record_batch)rg   r"   rt   r   caser8   r9   s          r   test_array_slice_negative_stepr    s    Yr]]F
(6

C"C5))K 	dD"dArb!RaraRb!RdD!aQb#rc3E  ' 'T8F4L))}}X&&&&&#tf555d;?H:dV<<<}}X&&&&&T"#VD\N33}}X&&&&&&' 'r   c                     t          j        dgt          j                              } t          j        g dt          j                              }t          j        g d          }t          j        g dgd gt          j        t          j                                        }|                     |           dk    sJ |                     |          dk    sJ |                     |                                          dk    sJ |                     |                                          dk    sJ |                     |                                          d	k    sJ d S )
Nr>   rP   r>   r   Nr   r   r=   z
@@ -1, +1 @@
+"bar"
+null
z'# Array types differed: string vs int64z3# Array types differed: string vs list<item: int64>)r   r   utf8list_r   diffstrip)arr1arr2arr3arr4s       r   test_array_diffr    sM   8UG"')),,,D8(((rwyy999D8IIID8R!dO"(28::*>*>???D99T??b    99T??     
 99T??  ""&OOOOO99T??  ""&OOOOO99T??  "" (; < < < < < <r   c                      t          j        t          d                    } t          t          d          |           D ]\  }}||                                k    sJ  t          | t                    sJ d S )NrZ   )r   r   rC   zipr'   r)   r   )r"   r   js      r   test_array_iterr     sm    
(599

CE"IIs##  1AGGII~~~~~c8$$$$$$$r   c                  F   t          j        t          j        dt          j                              t          j        dt          j                              g          } t          j        g d|           }|dd                                          dddd	d
dgk    sJ d S )Nr   r   r         @r         @)rl         @rP   r   r   r   r   rl   r!  )r   structfieldr   float32r   r   )r   r"   s     r   test_struct_array_slicer%  )  s    	BHS"')),,HS"*,,//1 
2 
2B
(111
;
;
;Cqrr7#5#5)*#5#5#7 7 7 7 7 7 7r   c                       G d d          } t          j         |             g          }t          j        t                    5  t          j        |           d d d            d S # 1 swxY w Y   d S )Nc                       e Zd ZdS )1test_array_factory_invalid_type.<locals>.MyObjectN)__name__
__module____qualname__r2   r   r   MyObjectr(  5  s        r   r,  rc   r   r.   r/   rr   r   )r,  r"   s     r   test_array_factory_invalid_typer.  2  s            (HHJJ<
 
 C	z	"	"  
                 s   A&&A*-A*c                      t          j        g d          } t          j        |           }t	          j        |           }t          j        |           |dz   k    sJ d S )Nr   r   )rc   r   r   r   r   )r"   refcountr  s      r   test_array_ref_to_ndarray_baser1  =  sV    
(999

Cs##H8C==D?3HqL111111r   c                  t   t          j        g dt          j                              } t          j        g dt          j                              }t          j        g dt          j                              }| |k    du sJ | |k    du sJ | |k    du sJ | |k    du sJ | dk    du sJ | d k    du sJ d S )Nr   rP   TFr   )r   r   r   r   )r  r  r  s      r   test_array_eqr3  F  s     8IIIBHJJ///D8IIIBHJJ///D8IIIBHJJ///DDLT!!!!DLU""""DLU""""DLT!!!!AI%DLU""""""r   c                     t          j        t          j        g d                    } t          j        t          j        dg                    }t           j                            t          j                    d|| g          }|j        t          j                    k    sJ |                                g dk    sJ t           j                            t          j                    dd | g          }|j        t          j                    k    sJ |                                g dk    sJ t           j                            t          j                    d|| gd          }|j        t          j                    k    sJ |                                g dk    sJ t          j
        t                    5  t           j                            t          j                    dd	d	gd           d d d            d S # 1 swxY w Y   d S )
Nrk   rl   r         rk   )rk   Nr   r6  r   r   offset)Nr   r6  r=   )r   	py_bufferrc   int16r   r1   from_buffersrQ   r   r.   r/   r0   )
values_buf	nulls_bufr"   s      r   test_array_from_buffersr?  V  s   bh|||4455JRXzl3344I
(



A	:/F
G
GC8rxzz!!!!==??ooo----
(



Aj/A
B
BC8rxzz!!!!==??lll****
(



A	:/F'(   * *C8rxzz!!!!==??lll****	y	!	! A A
bhjj!b"Xa@@@A A A A A A A A A A A A A A A A A As   57G99G= G=c                     t          j        g d          } |                                 }t           j                            t          |           |d         |d         |d         | j        | j                  }|                                g dk    sJ t           j	                            t          j
                    t          |           |                                 | j        | j                  }|                                g dk    sJ t           j                            t          |           |d         |d         |d                   }|                                g dk    sJ | dd          }|                                }t           j                            t          |          |d         |d         |d         d|j                  }|                                g dk    sJ |j        dk    sJ | dd          }|                                }t           j                            t          |          |d         |d         d d|j                  }|                                dd	gk    sJ |j        dk    sJ d S )
N)r   Nr   r   r   r   r   )   aN   b   cr   )Nr   r   r   r   )r   r   r\   StringArrayr<  r   r   r9  r   r1   rO   )r   r\   copiedbinary_copyr   s        r   test_string_binary_from_buffersrG  k  s\   H***++EmmooG^((E

GAJ
GAJ8H F !6!6!66666(''	SZZ(-9I(-6 6K   ""&>&>&>>>>>^((E

GAJ
GAJ8 8F!6!6!66666122YFnnG^((FWQZWQZV]L LF!1!1!11111!!!! 122YFnnG^((FWQZT2v}F FF#s++++!!!!!!r   c                  \   t          j        g dt          j                              } |                                 }t           j                            t          j                    t          |           |          }|                    d           |                                g dk    sJ d}t          j
        t          |          5  t           j                            t          j                    t          |           |dd                    d d d            d S # 1 swxY w Y   d S )	N)z String longer than 12 charactersNshortzLength is 12rP   Tfullznumber of buffers is at least 2rm   r   r   )r   r   string_viewr\   StringViewArrayr<  r   r   r   r.   r/   rr   )r   r\   rE  rn   s       r   test_string_view_from_buffersrN    sn   H	
 	
 	

   " " "E mmooG,,
#e**g/ /F
OOO " " "     /E	z	/	/	/ 8 8
''Nc%jj'!A#,	8 	8 	88 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8s   AD!!D%(D%list_type_factoryc                 P    | t          j                              }t          j        g dd g g dg|          }|j        |k    sJ |                                }t          j        t                    5  t           j        	                    |d|d |j
                            d d d            n# 1 swxY w Y   t           j        	                    t          j                    d||j
        d                    }t           j        	                    |d|d |j
                 |g          }|                    |          sJ t          j        t                    5  t           j        	                    |d|d |j
                 ||g           d d d            d S # 1 swxY w Y   d S )Nr   r   r   )r   rk   rl   rP   rk   r   children)r   r;  r   rQ   r\   r.   r/   rr   r1   r<  num_buffersr   )rO  r   r   r\   childrE  s         r   test_list_from_buffersrV    s    
	28::	&	&BHiiir9995B???E:mmooG	z	"	" ? ?
b!W_bn_%=>>>? ? ? ? ? ? ? ? ? ? ? ? ? ? ? H!!"(**a1IJJEX""2q'/2>/*BeW"UUF==	z	"	" 7 7
b!W_bn_%=(-u~ 	 	7 	7 	77 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7s$   5/B00B47B4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|           }|                                }t          j        t                    5  t           j
                            | d	d |d
         g           d d d            n# 1 swxY w Y   t           j
                            t          j                    d	|d
d	                   t           j
                            t          j                    d	|d	d                    g}t           j
                            | d	|d d
         |          }|                    |          sJ t          j        t                    5  t           j
                            | d	|d         g|d d
                    d d d            d S # 1 swxY w Y   d S )Nr   r   r   r>   r   rl   r=   rP   r   r   rR  )r   r"  r#  r;  r  r   r\   r.   r/   rr   r1   r<  r   )r   r   r\   rS  rE  s        r   test_struct_from_buffersrX    s=   	BHS"(**--rxRWYY/G/GH	I	IBHAE**D2C2CD  EmmooG	z	"	" 9 9
b!dGAJ%78889 9 9 9 9 9 9 9 9 9 9 9 9 9 9 %%bhjj!WQqS\BB%%bgiiGABBK@@BHX""2q'"1"+"IIF==	z	"	" 5 5
b!gaj\'/| 	 	5 	5 	55 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5s$   +*C!!C%(C%;3G;;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                            | ||gg d	          }|j        t          j        d| j        fd|j        fd|j        fg          k    sJ |                                |k    sJ t          j	        t                    5  t           j                            | ||gddg           d d d            n# 1 swxY w Y   t           j                            g g           }|j        t          j        g           k    sJ |                                g k    sJ t          j        d| j        d          }t          j        d|j                  }t          j        d|j                  }t           j                            | ||g|||g          }|j        t          j        |||g          k    sJ |j        d         j        rJ |                                |k    sJ t          j        |||g          }t           j                            | ||g|          }|j        t          j        |||g          k    sJ |j        d         j        rJ |                                |k    sJ t          j	        t                    5  t           j                            | ||g||g           d d d            n# 1 swxY w Y   t           j                            g g           }|j        t          j        g           k    sJ |                                g k    sJ t          j        dt          j                              }	t          j	        t          d          5  t           j                            | ||g|	||g           d d d            n# 1 swxY w Y   | ||g}
|||g}t          j        g d          }t           j                            |
||          }|                                d g|dd          z   k    sJ t           j                            |
g d	|          }|                                d g|dd          z   k    sJ t          j	        t          d          5  t           j                            |
|g d           d d d            n# 1 swxY w Y   t          j	        t          d          5  t           j                            |
|t          j        g d                     d d d            n# 1 swxY w Y   t          j	        t          d          5  t           j                            |
|t          j        |g                     d d d            n# 1 swxY w Y   t           j                            g g |          }|                                |k    sJ |                                d i i gk    sJ d S )Nrk   rl   r   rP   )r   Nr=   r   r   r   rk   r   r   rl   r   r=   r   r   r   Fnullable)fieldsr   zint64 vs int32rm   )TFF)r]  maskr  r^  zMask must ber^  znot contain nulls)TFN)r   r   r   StructArrayr   rQ   r"  r   r.   r/   rr   r#  r\  r   r0   rq   is_null)r   r   r   expected_listr"   fafbfc
structtypefa2arraysr]  r^  s                r   test_struct_from_arraysrj    s   
,,,A
"""##A
1a&$D	*++Ae1a&))d&&b4y))M .
$
$aAY
@
@C8ry
qvafQV}57 7 7 7 7 7==??m++++	z	"	" : :
""Aq!9sCj999: : : : : : : : : : : : : : : .
$
$R
,
,C8ry}}$$$$==??b     
#qv	.	.	.B	#qv		B	#qv		B
.
$
$aAYB|
$
D
DC8ry"b"......x{####==??m++++ BB<((J
.
$
$aAYZ
$
@
@C8ry"b"......x{####==??m++++	z	"	" ? ?
""Aq!9b"X">>>? ? ? ? ? ? ? ? ? ? ? ? ? ? ? .
$
$R
$
3
3C8ry}}$$$$==??b     (3


#
#C	z)9	:	:	: D D
""Aq!9c2r]"CCCD D D D D D D D D D D D D D D AYF"b\F8((())D
.
$
$VF
$
F
FC==??tf}QRR'888888
.
$
$V???
$
N
NC==??tf}QRR'888888 
y	7	7	7 N N
""668L8L8L"MMMN N N N N N N N N N N N N N N 
z)<	=	=	= @ @
""F*=*=*=!>!> 	# 	@ 	@ 	@@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ 
y	7	7	7 ; ;
""F!14&!9!9 	# 	; 	; 	;; ; ; ; ; ; ; ; ; ; ; ; ; ; ;
 .
$
$R$
$
7
7C;;==D    ==??tRn,,,,,,sl   ?&D11D58D5 'L33L7:L7(PPP%%TTT<7U??VV%6W''W+.W+c                      t          j        g dg dg          } t          j        t          d          5  t           j                            | gdg           d d d            d S # 1 swxY w Y   d S )Nr   rZ  zExpected Arrayrm   r>   )r   rq   r.   r/   r0   ra  r   )rt   s    r   test_struct_array_from_chunkedrl  #  s     "IIIyyy#9::K	y(8	9	9	9 ; ;
""K=5':::; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ;s   #A&&A*-A*r9  )r   r   c                     t          j        g d                                          }t           j                            |j        t          |          | z
  |j                                        |j	        |           }|| d          |k    sJ d S )N)onetwothreero  rn  r8  )
r   r   r   r   r<  rQ   r   indicesr\   r   )r9  r   r   s      r   test_dictionary_from_buffersrr  -  s    
66677IIKKA
''Av()	(9(9(;(;Q\/5 	( 	7 	7A VWW:??????r   c                     t          j        g dd          } t          j        g dt                    }t          j        g d          }t          j                            | |          }t          j                            | ||          }|j                                        | 	                                k    sJ |j                                        | 	                                k    sJ |j
                                        |	                                k    sJ |j
                                        |	                                k    sJ t          t          |                     D ]}||                                         || |                  k    sJ ||         r||                                         J S||                                         || |                  k    sJ d S )NrQ  r   r   rz   )FFTFFFr`  rc   r   r   r}   r   r   r   rq  r   r   r   rC   r   r'   )rq  r   r^  d1d2r   s         r   test_dictionary_from_numpyrw  6  s   i			1%%G///v>>>J8===>>D			'	'	<	<B			'	'$	'	G	GB:!!W^^%5%55555:!!W^^%5%55555=""$$
(9(9(;(;;;;;=""$$
(9(9(;(;;;;;3w<<   ; ;!u{{}}
71: 666667 	;a5;;==((((a5;;==Jwqz$::::::; ;r   c                     t          j        g d                              d          } t           j                            t          j        g d          t          j        ddg                    }t
          j                            |                    d          |            t          j	        t           j
                  5  |                    d           d d d            n# 1 swxY w Y   t           j                            t          j        g d          t          j        ddg                    }t          j        g d	                              d          } t
          j                            |                    d          |            t          j	        t           j
                  5  |                    d           d d d            n# 1 swxY w Y   t           j                            t          j        g d          t          j        d
dg                    }t          j        g d                                          } t
          j                            |                    d          |            t
          j                            |                    d          |            t           j                            t          j        g d          t          j        d
dg                    }t          j        g d                              d          } t
          j                            |                    d          | d           t           j                            t          j        g d          t          j        ddg                    }t          j        g d                              d          } t
          j                            |                    d          | d           d S )N)r>   r   Nr>   Fro   )r   r   Nr   r>   r   T)r   r   r   r   )r>   r   r   r>   ffffff+@      &@)ry  rz  rz  ry  )ry  rz  Nry  )	equal_nanr6  rT   )r6  rT   Nr6  )r   r   r[   r   r   rc   re   rf   r.   r/   ArrowInvalidassert_allclose)r9   r   anonullsafloatafloat2aintss         r   test_dictionary_to_numpyr  M  s8   x### heh$$  	&&
!!
%  	 	A J!!!**E*"B"B"*, , , 
r	'	' ( ( 	


$
'''( ( ( ( ( ( ( ( ( ( ( ( ( ( ( !--

%   H x$$$ heh$$  J!!("3"35"3"I"I"*, , , 
r	'	' / /.../ / / / / / / / / / / / / / / ++

$ F x00011::<<HJ!!&///"F"F"*, , ,J!!&///"G"G"*, , ,  ,,
!!
$ G x    heh$$  J..     **
!!
!R E x((())22%2HHHJe,,      s$   C((C,/C,7GG!Gc                  X   t          j        g dd          } t          j        g dt                    }t	          j        |           }t	          j        |          }t          j                            ||          }|j                                        | 	                                k    sJ |j
                                        |	                                k    sJ t          t          |                     D ].}||                                         || |                  k    sJ /d S )NrQ  r   r   rz   rt  )rq  r   iarrdarrru  r   s         r   !test_dictionary_from_boxed_arraysr    s   i			1%%G///v>>>J8GD8JD			'	'd	3	3B:!!W^^%5%55555=""$$
(9(9(;(;;;;;3w<<   7 7!u{{}}
71: 6666667 7r   c                     t          j        g d          } t          j        g d          }t          j        g d          }t          j        g d          }t           j                            | |           t	          j        t           j                  5  t           j                            ||           d d d            n# 1 swxY w Y   t	          j        t           j                  5  t           j                            ||           d d d            n# 1 swxY w Y   t           j                            ||d           d S )Nr   r   r   r   r   r   )r   r   r   r   r   Fsafe)r   r   r   r   r.   r/   ArrowException)indices1indices2indices3r   s       r   'test_dictionary_from_arrays_boundscheckr    s   x***++Hx


##Hx%%H///00J ""8Z888	r(	)	) = =
&&x<<<= = = = = = = = = = = = = = = 
r(	)	) = =
&&x<<<= = = = = = = = = = = = = = =
 ""8Ze"DDDDDs$   !CCC-!DD!Dc                      t          j        g d          } t          j        g d          }t           j                            | |          }|j                            d           d S )Nr  r   TrJ  )r   r   r   r   rq  r   )rq  r   r"   s      r   test_dictionary_indicesr    se    h)))**G///00J


(
(*
=
=CKd#####r   )list_array_typerO  c                    t          j        g dd          }t          j        |d          }g d}t          j        |d          }|                     ||          }t          j        |d d         |dd	         |d	d
         g |t          j                                        }|                    |          sJ  |t          j        dt          j                                        }|                     |||          }|j        |k    sJ |j        j        j	        dk    sJ g d}g d}|                     ||          }t          j        |d d         d |dd          g |t          j                                        }|                    |          sJ g d}	|                     |	|          }t          j        |d d         |dd          d g |t          j                                        }|                    |          sJ g d}t          j
        d	          }t          j        t                    5  |                     ||           d d d            n# 1 swxY w Y   g d}t          t          d                    }|                     ||          }t          j        t                    5  |                    d           d d d            n# 1 swxY w Y    |t          j                              }t          j        t"                    5  |                     |||           d d d            d S # 1 swxY w Y   d S )Nr   r   rl   r   i4rz   r   rP   rA  rB  rC     d   e   f   g   hrO   r   rl   r   namer   Nr   r   rA  rB  rC  r  r  r  )r   r   Nr   )r   r   rZ   )r   r   r   r   r   TrJ  )rc   r   r   r   rO   r   r#  rQ   value_fieldr  rd   r.   r/   rr   listrC   r   r0   )
r  rO  offsets_arroffsetspyvaluesr   r8   r9   typoffsets2s
             r   test_list_from_arraysr    s   
 (<<<t444Kh{111G???HXhX...F((&99Fx"1"x!}hqsmD..ry{{;;= = =H ==""""" 
BHVRY[[99
:
:C((&#>>F;#;"'61111 ooG111F((&99FxT6!"":6..ry{{;;= = =H ==""""" H((6::FxVABBZ6..ry{{;;= = =H==""""" jjGYq\\F	z	"	" 5 5##GV4445 5 5 5 5 5 5 5 5 5 5 5 5 5 5 llG%((^^F((&99F	z	"	" # #T"""# # # # # # # # # # # # # # # 
BIKK
(
(C	y	!	! ? ?##GV##>>>? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?s6   I++I/2I/K((K,/K,(MMMr"   r   c                     t          j        | |t          j                                        }|                     |j        |j        |                                          }||k    sJ d S )Nr`  )r   r   r   r   r  r   rb  )r  rO  r"   reconstructed_arrs       r   !test_list_array_types_from_arraysr    sm     (3))"'))44
5
5C'33SZckkmm 4 5 5#######r   c                    t          j        dgd dd gdgg |t          j                                        }t          j        g d          }|                     |j        |j                  }|                                dgg dd gdggk    sJ |                     ||j                  }||k    sJ |                     |j        |j        |                                          }||k    sJ t          j	        t          d          5  |                     ||j        |                                           d d d            n# 1 swxY w Y   |dd          }d}t          j	        t          |          5  |                     |j        |j        |                                           d d d            d S # 1 swxY w Y   d S )Nr   )r   Nr   r   rk   r`  zAmbiguous to specify both rm   r   -Null bitmap with offsets slice not supported.)r   r   r   r   r  r   r   rb  r.   r/   rr   NotImplementedError)r  rO  r"   r  r  	arr_sliceru   s          r   &test_list_array_types_from_arrays_failr    s    (QC4y1#.0A0A"'))0L0L
M
MCh)))**G (33CKLL&&((aS"q$i!,EEEEE (33GSZHH#####'33CK47J9< 4 H H ##### 
z)E	F	F	F M M##GSZckkmm#LLLM M M M M M M M M M M M M M M ABBI
9C	*#	6	6	6 K K##y/i6G6G6I6I 	$ 	K 	K 	KK K K K K K K K K K K K K K K K K Ks$   
0EE
E
85F::F>F>c                     t          j        t          j                    t          j                              } t          j        ddig|           }|                    t          j        t          j                    t          j                                        }t          j        t          j                    t          j                              }t          j        ddig|          }|                    |          sJ d S )Nr   r   rP   )r   map_r   r   castr   r   )tr"   r8   
t_expectedr9   s        r   test_map_castr  2  s    


BHJJ''A
(QF8!
$
$
$CXXbgbhjj"(**5566FRXZZ00Jx!Qz22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 d S )Nr  r   Fr[  r   r   r   r   r   r   r   rP   r   r   )
r   r  r#  r   rQ   	key_fieldr  
item_fieldr   r   )r  r"   s     r   test_map_labelledr  >  s    
E:::GDDA
(Xx(8*5A
>
>
>C8&"'))e!L!L!LLLLL8"(7BHJJ"?"?????s88q======r   c                  t   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                                        }|                     |          sJ d S )	Nr  r  r  r   r   r   r   r   )r   r   r  r   r   r   )tup_arrdict_arrs     r   test_map_from_dictr  G  s    h8,xj9wry{{BHJJ779 9Gxqq))C84	RXZZ8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                            |||          }t          j        |t          j	        t          j
                    t          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                            |||          }t          j        |t          j	        t          j
                    t          j                                        }	|                    |	          sJ t          j                            |||t          j	        |j        |j                            }|                    |	          sJ t          j        t          j        d          5  t          j                            |||t          j                               d d d            n# 1 swxY w Y   t          j        t          j        d          5  t          j                            |||t          j	        |j        t          j                                         d d d            n# 1 swxY w Y   t          j                            g d||t          j	        |j        |j                  t          j        g dt          j                                        }|j        dk    sJ |                    |	          sJ t          j                            g d||t          j        g dt          j                                        }|                    |	          sJ g d}d d |dd          g}t          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 |                    |	          sJ d}
t          j        t          j        |
          5  t          j                            |||t          j	        |j        |j                  t          j        g dt          j                                         d d d            n# 1 swxY w Y   d}t          j        g dt          j                              }t          j        t          j        |          5  t          j                            |                    d          ||t          j	        |j        |j                  t          j        g dt          j                                         d d d            n# 1 swxY w Y   g d}t          j        d          }t          j        d          }t          j                            |||          }t          j        t2                    5  t          j                            |dgz   ||           d d d            n# 1 swxY w Y   t          j        t2                    5  t          j                            ||t          j        ||g                     d d d            n# 1 swxY w Y   t          |          d d         d gz   }t          |          t          |          k    sJ t          j        t2                    5  t          j                            |||           d d d            n# 1 swxY w Y   t          j        |t          j                              }t          j                            |                    d          ||          }t          j                            g d||          }	|                    |	          sJ |j        dk    sJ |	j        dk    sJ t          j        g dt          j                              }t          j                            |                    d          t          j        g t          j                              t          j        g t          j                                        }t          j                            g dt          j        g t          j                              t          j        g t          j                                        }	|                    |	          sJ |j        dk    sJ |	j        dk    sJ d S ) Nr  r  rz   r   rP   r  r   rl   r   rO   r  r  )r   r   r   Nrk   rl   zExpected map type, got stringrm   zMismatching map items typer   r   r   r   FTFr`  r   )r   NNr   )TTFz=Ambiguous to specify both validity map and offsets with nullsr  )r   r   r   rl   r   r   r   r   rl   r   )r   r   r   r   r   r   )r   r   r   r   r   )rc   r   r   r  rC   r   r  MapArrayr   r  rO   r   r   rQ   r.   r/   ArrowTypeErrorr   r   bool_r   r|  ArrowNotImplementedErrorrV   rd   rr   concatenater9  )r  r  pykeyspyitemspypairs	pyentrieskeysitemsr8   r9   msg1msg2r   keys_with_nulls                 r   test_map_from_arraysr  Q  s
   (<<<t444Kh{111G===F5V%%&&G3vw''((G!gaclGAaCL9I8F***DHW4(((E[$$WdE::Fx		RXZZ(H(HIIIH==""""" ooG111F###G3vw''((G!dGABBK0I8F***DHW4(((E[$$WdE::Fx		RXZZ(H(HIIIH==""""" [$$WdE27	
< <  F ==""""" 
r(0O	P	P	P C C
ubikkBBBC C C C C C C C C C C C C C C 
r(0L	M	M	M  
ubgIHJJ7
 7
 	 	 	               [$$\\\4	
A A X***<<< %  F
 !!!!==""""" [$$\\\4*,(3G3G3G8:

+D +D +D % ' 'F ==""""" !  GtWQRR[)I[$$\\\4	
A A X)))

;;; %  F
 x		RXZZ(H(HIIIH!!!!==""""" KD	rd	3	3	3 
 

ubgIJ7 7 ...RXZZ@@@ 	  	
 	
 	

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 ;Dh|||RXZZ00G	r2$	?	?	? 
 

a 0 0$rwIJ@ @ ...RXZZ@@@ 	  	
 	
 	

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 llG9Q<<DIaLLE
u55A 
z	"	" < <
1#tU;;;< < < < < < < < < < < < < < < 
z	"	" O O
r~uen/M/MNNNO O O O O O O O O O O O O O O $ZZ_v-N~#e**,,,,	z	"	" @ @
???@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ hw

++G[$$W]]1%5%5tUCCF{&&yyy$>>H=="""""=A?ah)))28::66G[$$a
RY[[!!
RY[[!! F
 {&&
RY[[!!
RY[[!! H
 =="""""=A?as   (4K((K,/K,AM++M/2M/3A)W((W,/W,=A<[[	[	6&]((],/],6___/"aa!$a!c                  	   t          j        t          d          t          j                              } t           j                            | d          }|                                g dg dg dgk    sJ |j                            t          j	        t          j                    d                    sJ t          j	        t          j
        dt          j                              d          }t           j                            | |          }|                                g dg dg dgk    sJ |j                            |          sJ |j        j        j        dk    sJ t           j                            | |t          j        g d          	          }|                                g dd g dgk    sJ t           j                            | dt          j        g d          
          }|                                g dd g dgk    sJ t          j        t                    5  t           j                            | d           d d d            n# 1 swxY w Y   t          j        t                    5  t           j                            t          j        g t          j                              d           d d d            n# 1 swxY w Y   t          j        t                    5  t           j                            | d           d d d            n# 1 swxY w Y   t          j	        t          j                    d          }t          j        t                    5  t           j                            | |           d d d            n# 1 swxY w Y   t          j	        t          j                    d          }t          j        t"                    5  t           j                            | |           d d d            n# 1 swxY w Y   t          j        t                    5  t           j                            |            d d d            n# 1 swxY w Y   t          j	        t          j                    d          }t          j        t                    5  t           j                            | d|           d d d            d S # 1 swxY w Y   d S )N   rk   r   r5  )r   r   rZ   rT   r  rP   r  rQ   r^  )	list_sizer^  r   rl   )r  rQ   )r   r   rC   r   FixedSizeListArrayr   r   rQ   r   r  r#  r  r  r.   r/   rr   r   r0   )r   r8   r  s      r    test_fixed_size_list_from_arraysr    s   XeBii,,F"..vq99F,,,nnn!MMMMM;bhrxzz15566666
(28FBHJJ//
3
3C"..vC.@@F,,,nnn!MMMMM;c""""";"'61111"..v4746H=Q=Q=Q4R4R / T TF ,,,nnn!EEEEE"..v9:46H=Q=Q=Q4R4R / T TF ,,,nnn!EEEEE 
z	"	" 6 6
))&"5556 6 6 6 6 6 6 6 6 6 6 6 6 6 6 
z	"	" G G
))"(2rxzz*B*BAFFFG G G G G G G G G G G G G G G 
z	"	" 5 5
))&!4445 5 5 5 5 5 5 5 5 5 5 5 5 5 5 (28::q
!
!C	z	"	" < <
))&s);;;< < < < < < < < < < < < < < < (2:<<
#
#C	y	!	! < <
))&s);;;< < < < < < < < < < < < < < < 
z	"	" 2 2
))&1112 2 2 2 2 2 2 2 2 2 2 2 2 2 2 (28::q
!
!C	z	"	" I I
))&AC)HHHI I I I I I I I I I I I I I I I I Is   .!II"I?AKKK4!L!!L%(L%+"NN N#"PPP5 Q!!Q%(Q%+#SS"Sc                     t          j        g dt          j                              } t          j        g d          }t           j                            ||           }|                                ddgddggk    sJ |j                            t          j        t          j                                        sJ t          j        g d          }t           j                            ||           }|                                ddgd ddggk    sJ t          j
        t                    5  t           j                            t          j        g d          |            d d d            n# 1 swxY w Y   t          j
        t                    5  t           j                            t          j        g d	          |            d d d            d S # 1 swxY w Y   d S )
Nr   r   r   rk   )r   r   rk   r   r   r   rk   )r   Nr   rk   )r   r   rk   )r   r   rl   )r   r   r   	ListArrayr   r   rQ   r   r  r.   r/   rr   )r   r  r8   s      r   test_variable_list_from_arraysr    s   XlllBHJJ//Fhyyy!!G\%%gv66F1a&1a&!11111;bhrxzz2233333h''G\%%gv66F1a&$A!77777 
z	"	" ? ?
  ***!5!5v>>>? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 
z	"	" > >
  )))!4!4f===> > > > > > > > > > > > > > > > > >s$   .5E//E36E35G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                            | g          ddgddg|             |t           j                            | gddg          ddgddg|             |t           j                            |gddg          ddgddg|            |t           j                            |gddgddg          ddgddg|           t           j                            |g          }t	          j        t           j                  5  |                    d           d d d            n# 1 swxY w Y   t           j                            | gddg          }t	          j        t           j                  5  |                    d           d d d            n# 1 swxY w Y   t          j        g dd
          }t           j                            | |g          }t	          j        t           j                  5  |                    d           d d d            d S # 1 swxY w Y   d S )NrA  rB  rC  r  rO   rP   r   r   r   r   r   r   r   r   r   r   rT   r7  rT   rT   r7  r7  rT   )r   r   r   r   r   r   r   r   rA  r   rB  rC  r   r   r  c                 >                          d            fdt           j        j                  D             }||k    sJ  j        j        dk    sJ  j        j        |k    sJ                                  k    sJ |                     j                  sJ                      j                  sJ  	                    d                                        sJ  	                    d                                        sJ t          j        t                    5   	                    d           d d d            n# 1 swxY w Y   t          j        t                    5   	                    d           d d d            d S # 1 swxY w Y   d S )	NTrJ  c                 4    g | ]}j         |         j        S r2   rQ   r  r   r   r8   s     r   r   z?test_union_from_dense.<locals>.check_result.<locals>.<listcomp>0  8     F F F"# %k!n1 F F Fr   denser   r   r   r   )r   rC   rQ   
num_fieldsmode
type_codesr   r   r  r#  r.   r/   KeyError)	r8   expected_field_namesexpected_type_codesexpected_type_code_valuesactual_field_namesrO   r   py_valuevalue_offsetss	   `    r   check_resultz+test_union_from_dense.<locals>.check_result-  s,   T"""F F F F',V[-C'D'DF F F!%99999{7****{%)<<<<<!!X----(//0ABBBBB##FN33333||A%%f-----||A%%e,,,,,]8$$ 	 	LL	 	 	 	 	 	 	 	 	 	 	 	 	 	 	]8$$ 	 	LLOOO	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s$   )EEE/FFFr   r   r   r   r  r  r  binintrT   r7  r  TrJ  )r   r   r   r   r   r   rk   )r   r   
UnionArray
from_denser.   r/   r|  r   )	typeslogical_typesr  r"   bad_offsetsrO   r   r  r  s	        @@@@r   test_union_from_denser  %  s   X...X>>>FHYYYW---EH***888EH999GGGMH222AAAM000H       & L))%+15/; ;'*Cj&'V+0	2 2 2 2 L))%+15/+0%.: : (-en&'V+02 2 2 2 L))-+15/68"X * ? ? (+Cj&("X+8: : : : L))-+15/+0%.2r(D D (-en&("X+8: : : : -
"
"=-$*E?4 4C	r	'	'    $                             
-
"
"5-&%/12h # 8 8C	r	'	'    $                              (000w???K
-
"
"5+
G
GC	r	'	'    $                                   s6   'G

GGH==II!KK	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                            | g          ddgddg|             |t           j                            | gddg          ddgddg|             |t           j                            |gddg          ddgddg|            |t           j                            |gddgddg          ddgddg|           t           j                            |g          }t	          j        t           j                  5  |                    d           d d d            n# 1 swxY w Y   t           j                            | gddg          }t	          j        t           j                  5  |                    d           d d d            n# 1 swxY w Y   t	          j        t           j                  5  t           j                            |dd          g          }d d d            d S # 1 swxY w Y   d S )N)rA      rB  rC  r  r  r  rO   rP   )r   r   r   r   r   r   r   r   r  r   r  r  c                                           d                                            k    sJ  fdt           j        j                  D             }||k    sJ  j        j        dk    sJ  j        j        |k    sJ |                     j                  sJ                      d                                        sJ                      d                                        sJ t          j
        t          j                  5   j         d d d            n# 1 swxY w Y   t          j
        t                    5                       d           d d d            n# 1 swxY w Y   t          j
        t                    5                       d           d d d            d S # 1 swxY w Y   d S )	NTrJ  c                 4    g | ]}j         |         j        S r2   r  r  s     r   r   z@test_union_from_sparse.<locals>.check_result.<locals>.<listcomp>{  r  r   sparser   r   r   r   )r   r   rC   rQ   r  r  r  r   r#  r.   r/   r   r  r  r  )r8   r  r  r  r  rO   r   r  s   `    r   r  z,test_union_from_sparse.<locals>.check_resultw  s   T"""!!X----F F F F',V[-C'D'DF F F!%99999{8++++{%)<<<<<(//0ABBBBB||A%%f-----||A%%e,,,,,]2,-- 	 	NN	 	 	 	 	 	 	 	 	 	 	 	 	 	 	]8$$ 	 	LL	 	 	 	 	 	 	 	 	 	 	 	 	 	 	]8$$ 	 	LLOOO	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s6   D&&D*-D*
E,,E03E0F33F7:F7r   r   r   r   r  r  r  rT   r7  r  TrJ  )r   r   r  from_sparser.   r/   r|  r   )r  r  r  r"   rO   r   r  s       @@@r   test_union_from_sparser  o  s   X@@@#% % %FH***999EH***888EH999GGGM000H      ( L**565/BB'*Cj&'V+02 2 2 2 L**565/,15>; ;',en&'V+0	2 2 2 2 L**=65/792h + @ @'*Cj&("X+8	: : : : L**=65/,15>,.85 5 (-en&("X+8: : : : -
#
#MFE?
C
CC	r	'	'    $                             
-
#
#EFE?02Bx $ 9 9C	r	'	'    $                              
r	'	' L Lm''abb	7JKKL L L L L L L L L L L L L L L L L Ls6   F++F/2F/:HH!$H!+I>>JJc            	         t           j                            t          j        g dt          j                              t          j        g d          t          j        g d          g          } |                                 g dk    sJ t           j                            t          j        g dt          j                              t          j        g dt          j                              t          j        g d          t          j        g d	          g          } |                                 g d
k    sJ d S )N)r   r   r   r   r   rP   )r   皙?Nffffff
@g@)TNFTF)r   NNr  F)r   r   r   r   r   r   r   )r   r   r   r   r   r   r   )r   r  Nr  )TNF)r   Tr  Nr  NF)r   r  r  r   r   r   r  r   r+   s    r   %test_union_array_to_pylist_with_nullsr    s.   
-
#
#
rwyy111H///00H55566	
 C ==??;;;;;;;
-
"
"
&&&RWYY777
&&&RXZZ888H***++H((())	
 C ==??FFFFFFFFFr   c                  0   t           j                            t          j        g dt          j                              t          j        g d          t          j        g d          g          } | dd                                          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                            ||||g          } |                                 }t          t          |                     D ]L}t          |t          |                     D ],}| ||                                         |||         k    sJ -Md S )N)r   r   r   r   rP   )r   r   r   dr  r   )r   r   rk   r  rO   r   r   r  r   )r   r   r   r   r   r   r   r   )	r   r  r  r   r   r   r  rC   r   )r"   rO   r   r  r  r   r   r  s           r   test_union_array_slicer    s   
-
#
#BH\\\		$J$J$J%'X.B.B.B%C%C%'Xlll%;%;%=> >C qrr7+++----X...X>>>FHYYYW---EH***888EH222AAAM
-
"
"5-&%
I
IC
--//C3s88__ 4 4q#c((## 	4 	4Aqs8%%''3qs833333	4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        ||          }|                    ||          }	|	                    d           |	                    |          sJ |r.t          j        |||          }|                    |          sJ d S d S )NrP   r  TrJ  rQ   r  )r)   r   r1   rQ   r   r  r   r   )
r
  r  r  in_datain_typeout_dataout_typer9   in_arrcasteds
             r   _check_cast_caser    s   +/(GWh(BH%% 5}((((8H8444 '28$$ 1|w&&&&'00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 ]g\  }}}t          j        ||          }t          j	        t          j
                  5  |                    |           d d d            n# 1 swxY w Y   hd S )Nr   i1rz   r   r  u4u1f8P  r   r;  p uint16r   u2rP   )rc   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	+	+	+RXZZ	9	,,,d	+	+	+V	,,,d	+	+	+RY[[	:	,,,d	+	+	+V	,,,d	+	+	+RXZZ	9	,,,d	+	+	+V	,,,d	+	+	+RZ\\	;	J    
5'	&	&	&9	5'	&	&	&:	2$d	#	#	#Wh7	5'	&	&	&':	L '3 " ""('000]2?++ 	" 	"KK!!!	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	"" "s   G##G'	*G'	c                      t          j        g d          } t          j        t                    5  |                     d            d d d            d S # 1 swxY w Y   d S r   )r   r   r.   r/   r0   r  r+   s    r   test_cast_noner$    s    
(999

C	y	!	!                   s   AAAc                     t          j        ddgddgg          } t          j        t                    5  |                     t          j                               d d d            n# 1 swxY w Y   t          j        ddgdggt          j        t          j                                        } t          j        t                    5  |                     t          j                               d d d            d S # 1 swxY w Y   d S )Nr   r   r   rk   rA  rB  rC  )	r   r   r.   r/   r  r  r   r  rO   r+   s    r   test_cast_list_to_primitiver&    sW   
(QFQF#
$
$C	*	+	+                 (T4L4&)28BIKK+@+@
A
AC	*	+	+                   s#   'A''A+.A+'C<<D D c                      t          j        g d          } | j        dk    sJ | d d          }|                    |           sJ | d d          d S )Nr   rP   r   rl   )r   rq   
num_chunksr   )r"   r8   s     r   $test_slice_chunked_array_zero_chunksr)  &  sb    

2F
+
+
+C>QVF== GGGGr   c                  F   t          j        g d          t          j        g d          g} t          j        |           }t          j                    |                              }t          j        fd| D                       }|                    |          sJ d S )Nr   rZ  c                 :    g | ]}|                               S r2   )r  )r   xtargets     r   r   z+test_cast_chunked_array.<locals>.<listcomp>8  s#     @ @ @A @ @ @r   )r   r   rq   r   r  r   )ri  carrr  r9   r-  s       @r   test_cast_chunked_arrayr/  2  s    hyyy!!28III#6#67FF##DZ\\FYYvF @ @ @ @ @ @ @AAH=="""""""r   c                     t          j        t          j                    t          j                              t          j                    ft          j                    t          j                    ffD ]]\  } }t          j        g |           }|                    |          }t          j        g |          }|                    |          sJ ^d S NrP   )	r   r   r   r   r   r   rq   r  r   )typ1typ2r"   r8   r9   s        r   test_cast_chunked_array_emptyr4  <  s    bgii==ry{{K

BHJJ/1 ' '
d r---$#BT222}}X&&&&&&' 'r   c                      t          j        t                    5  t          j        g g          j        } d d d            n# 1 swxY w Y   t          | t          j                  sJ d S N)r.   warnsFutureWarningr   rq   r_   r)   ChunkedArray)r   s    r   test_chunked_array_data_warnsr:  G  s    	m	$	$ * *t$$)* * * * * * * * * * * * * * *c2?+++++++s   AAAc                     t          j        dgd          dt          j        dg                              d          t          j                    ft          j        dgd          dt          j        dg                              d          t          j                    ft          j        dgd          dt          j        dg                              d          t          j                    ft          j        dgd          t          j                    t          j        dg                              d          t          j                    fg} | D ]}t          |d	
           d S )Nr  r  rz   r   i2r  r  r   Fr  )rc   r   astyper   r;  r  r  r!  r
  s     r   test_cast_integers_unsafer?  M  sL    
5'	&	&	&	5'			!	!	!	-	-rxzz	;	5'	&	&	&	5'			!	!	!	-	-ry{{	<	2$d	#	#	#W	2$		T		*	*BIKK	9	5'	&	&	&		5'			!	!	!	-	-rxzz	;	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	
           d S )Nr   r         @r$  rz   r   r  r   )g      $g      4@g      >ir  iTr  )rc   r   r   r   r  r   r
  s     r   !test_floating_point_truncate_saferE  b  s     
///	3	3	3Y	)))4	(	(	("(**	6	///	3	3	3Y	)))4	(	(	("(**	6	&&&i	8	8	8)	...	-	-	-rxzz	;J  * *D)))))* *r   c                  T   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	          j        t          j        d	
          5  t          |d           d d d            n# 1 swxY w Y   t          |d           ]d S )N)r  g@r  r$  rz   r   r  r   )g333333$g3333334@gL>rC  	truncatedrm   Tr  F)rc   r   r   r   r.   r/   r|  r  r>  s     r   #test_floating_point_truncate_unsaferH  p  sq    
///	3	3	3Y	)))4	(	(	("(**	6	///	3	3	3Y	)))4	(	(	("(**	6	&&&i	8	8	8)	...	-	-	-rxzz	;L  + +]2?+>>> 	. 	.T----	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	E*****+ +s   -DD	D	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 ]"}t          |           t          |d           #d S )N123456z-912345    rl   @ Ni'1234-9123   rZ   i  Ni]123z-91{   NiTr  )decimalDecimalr   
decimal128r   r;  r   r  rD  s     r   test_decimal_to_int_saferX    s    _X&&goi.H.HIM"a  ###HJJ		
 _V$$dGOG,D,DEM"b!!HJJ		
 _U##T7?5+A+ABM"b!!GII		
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 ][}t          j
        t          j        d          5  t          |           d d d            n# 1 swxY w Y   t          |dd           \d S )N1234567890123z-912345678901234rK  rl   )iqNirJ  z
-912345678)i@NirN  rO  )iN]   zInteger value out of boundsrm   Fr  )rc   r   rU  rV  r   rW  r   r;  r   r.   r/   r|  r  )out_of_bounds_casesr
  s     r   'test_decimal_to_int_value_out_of_boundsr]    s    H00 233  
 M"a  ***HJJ		
 _X&&gol.K.KLM"a  !!!HJJ		
 _V$$dGOG,D,DEM"a  OOGII		
#2 $ K K]2?!>@ @ @ 	# 	#T"""	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	EEJJJJJK Ks   /EE	E	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 ]\}d}t          j        t          j	        |          5  t          |           d d d            n# 1 swxY w Y   t          |d           ]d S )Nz	123456.21z
-912345.13rK  rl   rL  z1234.134z-9123.1rP  rZ   rQ  z123.1451z-91.21rS  0Rescaling Decimal128 value would cause data lossrm   Fr  )rU  rV  r   rW  r   r;  r   r.   r/   r|  r  )non_integer_casesr
  
msg_regexps      r   test_decimal_to_int_non_integerrb    s    ,,--
 M"a  ###HJJ		
 _Z(($	0J0JKM"b!!HJJ		
 _Z(($0I0IJM"b!!GII		
#2 " + +G
]2?*=== 	# 	#T"""	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	E*****+ +s   D;;D?	D?	c                     t          j        t          j        d          d gt          j        dd                    } |                     t          j        dd                    }t          j        t          j        d          d gt          j        dd                    }|                    |          sJ d}t          j        t           j	        |          5  |                     t          j        d	d
                    }d d d            n# 1 swxY w Y   |                     t          j        d	d
          d          }t          j        t          j        d          d gt          j        d	d
                    }|                    |          sJ t          j        t           j	        d          5  |                     t          j        dd                    }d d d            d S # 1 swxY w Y   d S )Nz1234.12rP  rZ   rP   r   r   r_  rm   r   r   Fr  z1234.1z'Decimal value does not fit in precisionrl   r   )
r   r   rU  rV  rW  r  r   r.   r/   r|  )r"   r8   r9   ra  s       r   test_decimal_to_decimalrd    sM   
(		#	#T*]2r""  C XXbmB**++Fx		#	#T*]2q!!  H =="""""CJ	rj	9	9	9 / /"-1--../ / / / / / / / / / / / / / / XXbmAq))X66Fx		"	"D)]1a    H =="""""	rF
H 
H 
H / /"-1--../ / / / / / / / / / / / / / / / / /s$   )DDD:)G00G47G4c                     t          j        t          j        dg          } t	          j        t           j        d          5  |                     t          j                    d           d d d            d S # 1 swxY w Y   d S )Nr   rG  rm   Tr  )	r   r   rc   nanr.   r/   r|  r  r   r+   s    r    test_safe_cast_nan_to_int_raisesrg    s    
(BFB<
 
 C	rk	:	:	: ( ($'''( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (s   )A77A;>A;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          |           d S )Nr   r  rz   r  r<  r  )rc   r   r   r   r  r  rD  s     r   test_cast_signed_to_unsignedri  
  s     
,,,d	+	+	+RXZZ	,,,d	+	+	+RXZZ	9	,,,d	+	+	+RY[[	,,,d	+	+	+RY[[	:J    r   c                  D   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          j        | t          j                              }|D ]H}t3          j        t6                    5  |                    |           d d d            n# 1 swxY w Y   Id S )Nr   rZ   rk   rP  r   r   r   zEurope/Parisr   r   r   )r  rP   )r   r   r   float16r  rO   r  r;  r   r   rW  r   r   month_day_nano_intervalr"  r#  r   r   r   r  unionr   UnionMode_DENSEUnionMode_SPARSEr   r.   r/   r  r  )r  r  	out_typesr  r  s        r   test_cast_from_nullrq    s   fqjGgiiG
		





		
	
	"

Q
bhjj!!
b!
T
Te$$$
Tn---
D
"$$
	28C,,8C"'))!4!4558C--/ 	0 	0 	bhjj")++..'I*  @ @'7GX>???? 	"(3	"..(3	,,.46F4J	L 	L 	L
"(3	"..(3	,,.46F4K	M 	M 	M	I XgBGII...F " "].// 	" 	"KK!!!	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	"" "s   2NN	N	c                  6   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        d          }|                    d           |                    |          sJ |                    |j        d          }|                    d           |                    |          sJ d S )	N)r   127z-128)r      irP   18446744073709551615l    Tr  rJ  )r   r   r   uint64r  rQ   r   r   )r   r  r9   r  casted_backs        r   $test_cast_string_to_number_roundtriprx  ?  s#   	&&&	'	'	...rwyy	1	1	1	3	4/0	1	1	4-.RY[[	A	A	A	CE " * *X]66T"""}}X&&&&&kk&+Dk9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 |                     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                                        }|                     |          |k    sJ t          j        t           j                  5  |                     t          j	                               d d d            d S # 1 swxY w Y   d S )Nr  rP   )r   r   r   r   r   rQ   r  r   r;  r   r.   r/   r|  )r"   r9   key_typer  s       r   test_cast_dictionaryr{  O  s   
(]28::ry{{33  C x,,,--H8r}RXZZ======88BIKK  H,,,, WYY

BHJJ7 ) )mHbikk228   x55
 
 
 xx}}((((( 
r	'	'                   s   ('GG #G c                  t   t          j        g dt          j                              } t          j        g dt          j                              }|                     t          j                                                  |          sJ |                     d                              |          sJ d S )Nr   rP   rO   )r   r   r  rO   viewr   r"   r9   s     r   	test_viewr  g  s    
((((rwyy
9
9
9Cx---BIKK@@@H88BIKK  ''1111188H$$X.......r   c                  6   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 ]n\  }}|                                }|                    |          sJ t          j        |g                                          }|                    |          sJ od S )Nr   r   r   r   r   r   r   r>   Nr   r>   r>   Nr   )r   r   rR   uniquer   rq   r   r"   r9   r8   s       r   test_unique_simpler  p  s   	$$$	%	%rx			':':;	---	.	.	&&&	'	'	)	---r/@/@	A	A	&&&(9(9	:	:	<	E  ' 'X}}X&&&&&!3%((//11}}X&&&&&&	' 'r   c                  2   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                            t          j        t          j	        d|j                  t          j	        d	t          j                              g                    sJ |	                    d                              |          sJ |	                    d	                              |          sJ ׌d S )
Nr  r   r   r   r   rP   r  r  )r   r   r   r   counts)
r   r   r   rR   rq   value_countsrQ   r   r"  r#  )r   r"   expected_valuesexpected_countsarr_inr8   s         r   test_value_counts_simpler    s   	$$$	%	%	)))			)))"(**	-	-	-	/ 
---	.	.	&&&	'	'	)))"(**	-	-	-	/ 
---r/@/@	A	A	&&&(9(9	:	:	)))"(**	-	-	-	/
E 27 B B-_oB,cU334 	B 	BF((**F;%%	28Hch778Hbhjj99; < <= = = = = <<))00AAAAA<<))00AAAAAA	BB Br   c                     t          j        g d          } t          j        g d          }t           j                            | |          }|                                }t           j                            |                                 |          }|                    |          sJ |                                }|                    d                              |          sJ |                    d                              t          j        g dd                    sJ t           j                            t          j        g d          |          }|                                }t           j                            t          j        g d          t          j        g d                    }|                    |          sJ |                                }|                    d                              |          sJ |                    d                              t          j        g d                    sJ d S )	N)r   r   r   r   r   r   r   r   r   r   r   r   )r>   r   r   quxr   r  )r   rl   rk   r   rP   r  )r   r   r   r   r  r   r  r#  )rq  r   r"   unique_resultr9   r8   s         r   (test_unique_value_counts_dictionary_typer    s   h;;;<<G66677J


(
(*
=
=CJJLLM!--gnn.>.>
KKH)))))F<<!!((77777<<!!(()))')J)J)JKKKKK


(
(
'"""J0 0CJJLLM!--bhr.H.H.H.0hr.G.G.GI IH)))))F<<!!((77777<<!!(("7)C)C)CDDDDDDDr   c                     t          j        g d          t           j                            t          j        g dd          g d          ft          j        g d          t           j                            t          j        g dd          dd	g          ft          j        g dt          j                              t           j                            t          j        g dd          t          j        dd	gt          j                                        fg} | D ]\  }}|                                }|                    |          sJ t          j        |g                                          }|j        d
k    sJ |	                    d                              |          sJ t          j        g |j
                                                  }|j        dk    sJ |j
        |j
        k    sJ d S )Nr   r   r   Nr   r   r   r   r   r   Nr   r   r   r   rP   r   r  r   Nr   r   r>   r   r   r   )r   r   r   r   rR   r   r   rq   r(  chunkrQ   r  s       r   test_dictionary_encode_simpler    s   	***	+	+			'	'X...W===YY
 
	 
---	.	.			'	'XoooG444U^
 
	 
---BO4E4E	F	F	F			'	'XoooG444Xuen2?+<+<===
? 
?	@E  , ,X&&((}}X&&&&&!3%((::<< A%%%%||A%%h/////!"38444FFHH A%%%%{hm+++++, ,r   c                     t          j        g d          dd         t           j                            t          j        g dd          g d          ft          j        g d          dd         t           j                            t          j        g d	d          d
dg          ft          j        g dt          j                              dd         t           j                            t          j        g d	d          t          j        d
dgt          j                                        fg} | D ]\  }}|                                }|                    |          sJ t          j        |g                                          }|j        dk    sJ |j	        |j	        k    sJ |
                    d                              |          sJ t          j        g |j	                                                  }|j        dk    sJ |j	        |j	        k    sJ t          j        g d          }|                    d                                           d S )Nr  r   r   )r   r   Nr   r   r   rP   )r   r   r   )Nr>   r   r>   xyzzyr   r   r   r>   r   r   r   )r   r   r   r   large_stringr   r   rq   r(  rQ   r  rV   )r   r"   r9   r8   r   s        r   test_dictionary_encode_slicedr    sp   	***	+	+AbD	1			'	'X(((w777YY
 
	 
666	7	7"	=			'	'Xiiig...U^
 
	 
666((
* 
* 
**+B$
0			'	'Xiiig...Xuen2?+<+<===
? 
?	@E  	, 	,X&&((}}X&&&&&!3%((::<< A%%%%{hm++++||A%%h/////!"38444FFHH A%%%%{hm+++++ H***++E	KKNN$$&&&&&r   c                      t          j        g t          j                              } |                                 }t	          |j                  dk    sJ |                    d           d S )NrP   r   TrJ  )r   r   r   r   r   r   r   )r"   encodeds     r   "test_dictionary_encode_zero_lengthr    sf    
(2BIKK
(
(
(C##%%Gw!""a''''$r   c                     t          j        g d          t           j                            t          j        g dd          g d          ft          j        g d          t           j                            t          j        g dd          dd	g          ft          j        g dt          j                              t           j                            t          j        g dd          t          j        dd	gt          j                                        fg} | D ]0\  }}|                                }|                    |          sJ 1d S )
Nr  r  r   rP   r   r  r  r>   r   )r   r   r   r   rR   dictionary_decoder   )r   r9   r"   r8   s       r   test_dictionary_decoder    sd   	***	+	+			'	'X...W===YY
 
	 
---	.	.			'	'XoooG444U^
 
	 
---BO4E4E	F	F	F			'	'XoooG444Xuen2?+<+<===
? 
?	@E  ' '#&&((}}X&&&&&&' 'r   c                  
   t          j        t          j        g dd          t          j        d                    } t          j        g dd          }|                     d          }|                    |          sJ d S )NrQ  r   rz   r   rP   r  )r   r   rc   time32r  r   r"   r9   r8   s      r   test_cast_time32_to_intr    s}    
(28IIIW555	#( ( (Cx			---HXXd^^F=="""""""r   c                  
   t          j        t          j        g dd          t          j        d                    } t          j        g dd          }|                     d          }|                    |          sJ d S NrQ  r   rz   r   rP   i8)r   r   rc   time64r  r   r  s      r   test_cast_time64_to_intr    s}    
(28IIIW555	$) ) )Cx			---HXXd^^F=="""""""r   c                  
   t          j        t          j        g dd          t          j        d                    } t          j        g dd          }|                     d          }|                    |          sJ d S r  )r   r   rc   r   r  r   r  s      r   test_cast_timestamp_to_intr    s    
(28IIIW555T**, , ,Cx			---HXXd^^F=="""""""r   c            	         t          j        g dd          } |                     d          }|                    d          }t          j        t          j        ddd          t          j        ddd          t          j        ddd          g                              d          }|                    |          sJ |                    |           sJ d S )	NrQ  r  rP   date32i  r   r   r   )r   r   r  r   r   r   )r"   result1result2	expected1s       r   test_cast_date32_to_intr  #  s    
(9994
(
(
(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          }|                     d          }|                    |          sJ d S r  )r   r   rc   r   r  r   r  s      r   test_cast_duration_to_intr  3  s    
(28IIIW555D))+ + +Cx			---HXXd^^F=="""""""r   c                  >   t          j        g dt          j                              } |                     t          j                              }t          j        g dt          j                              }|                    |          sJ d                    d          g}t          j        |          }|j        t          j                    k    sJ t          j	        t                    5  |                    t          j                               d d d            n# 1 swxY w Y   t          j        |t          j        dg          t          j                              }|                    t          j                              }|j        dk    sJ d S )	N)s   foos   bars   bazrP   r      mañana	utf-16-leT)r^  rQ   r   )r   r   rO   r  r  r   encoderQ   r.   r/   rr   r   rc   r   )
binary_arrutf8_arrr9   non_utf8_valuesnon_utf8_binarynon_utf8_all_nullr  s          r   test_cast_binary_to_utf8r  =  s   222EEEJrwyy))Hx---BGII>>>H??8$$$$$!))+667Oh//O29;;....	z	"	" * *RY[[)))* * * * * * * * * * * * * * * rx7G7G&(ikk3 3 3 ##BIKK00F!!!!!!s   1'D$$D(+D(c                     t          j        t          j        g dd          t          j                              } t          j        g dd          }|                     d          }|                    |          sJ d S )NrQ  r   rz   rP   r  )r   r   rc   date64r  r   r  s      r   test_cast_date64_to_intr  R  s{    
(28IIIW555	% % %Cx			---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        |                                 |                                gd          }|                    |          sJ |                    d	          }|d
                                         |d                                         k    sJ d S )N  r   r  "   8   rM  r  rP   r   r   )r   r   r   r   r   r}  r'   )val1val2r8   r  as_i8s        r   !test_date64_from_builtin_datetimer  ]  s    T1aRV<<DT1a((DXtTl222Fh		TYY[[1AAAG==!!!!!KK  E8>>uQx~~////////r   )r   r   boolrx   r      r      r  rZ   r;  uint32r   rv  r   float)r   g?g?doubler   r   rO   )rA  rB  rC  r   )s   abcs   bcds   cdec                     t          j        ||           }|                    |                               |          sJ d S r1  )r   r   r  r   )r   r   r"   s      r   test_cast_identitiesr  i  sB    " (6
#
#
#C88B<<s#######r   )r_   r  )TFTT)r   r   rk   r   )r   r  N)r   Nr   r   rk   rl   r   r   r   r   ))r   r   )r   r   Nc                     t          j        | |          }t          d|j        dz             D ]B}|                    |                    ||                    }|                    |          sJ Cd S )NrP   r   r   )r   r   rC   HIGHEST_PROTOCOLloadsdumpsr   )r_   r  pickle_moduler   protor8   s         r   test_array_pickler    s     HT$$$Eq-81<== $ $$$]%8%8%F%FGG||F######$ $r   c                    t           j                            g dg d          }t          d| j        dz             D ]B}|                     |                     ||                    }|                    |          sJ Cd S )Nr   r   r   r   )r   r   r   rC   r  r  r  r   )r  r   r  r8   s       r   test_array_pickle_dictionaryr    s     **???OOOLLEq-81<== $ $$$]%8%8%F%FGG||F######$ $r   )suppress_health_check)	min_value	max_valuer   c                     |                      |          }|                     |          }|                    |          sJ d S r6  )r  r  r   )r  r"   r_   restoreds       r   test_picklingr    sH     s##D""4((H::hr   c                    t          j        | |          }d |                                D             }t          d|j        dz             D ]u}g }|                    |||j                  }|                    ||          }|                    |          sJ d |                                D             }	|	|k    sJ vd S )NrP   c                 $    g | ]}||j         ndS Nr   r]   r   bufs     r   r   z/test_array_pickle_protocol5.<locals>.<listcomp>  s2     - - - !$Q - - -r   rl   r   )buffer_callback)r\   c                 $    g | ]}||j         ndS r  r  r  s     r   r   z/test_array_pickle_protocol5.<locals>.<listcomp>  s2     9 9 9 # ,/?CKK 9 9 9r   )	r   r   r\   rC   r  r  appendr  r   )
r_   r  r  r   	addressesr  r\   pickledr8   result_addressess
             r   test_array_pickle_protocol5r    s     HT$$$E- -!MMOO- - -I q-81<== - -%%eUGN%SS$$Wg$>>||F#####9 9'-~~'7'79 9 99,,,,,- -r   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 ]3} t          j        |           }| j        |                                j        k    sJ t           j                            | |                                           t           j                            | d d         |d d                                                    t           j                            | dd          |dd                                                     t           j                            | dd         |dd                                                    5d S )NrZ   rz   r   r   )rc   rd   r   r   r;  r   rv  r  r  r   r   r$  rk  r   r   r{   r[   re   rf   )narrr"   s     r   test_to_numpy_roundtripr    s    		"BH%%%
	"BH%%%
	"BH%%%
	"BG$$$
	"BI&&&
	"BI&&&
	"BI&&&
	"BH%%%
	"BJ'''
	"BJ'''
	"BJ''' F F htnnzS\\^^11111

%%dCLLNN;;;

%%d2A2hBQB0@0@0B0BCCC

%%d122hABB0@0@0B0BCCC

%%d1Q3iQqS1B1B1D1DEEEE%F Fr   c                      t          j        dgt          j                              } t          j        t          j        dgd                    }|                     |          sJ d S )N            rP   u8rz   )r   r   rv  rc   r   r~  s     r   $test_array_uint64_from_py_over_ranger    s\    
(G929;;
/
/
/Cx'$77788H::hr   c            
         t          j        g dd          } t          j        |           }t	          j        |           }t          j        |           |dz   k    sJ |j        dk    sJ t	          j        t          j        dt           j        ddt           j        dgd          d	          }|j        dk    sJ |j        d
k    sJ d S )Nr  r   rz   r   r   r   rk   r$  rP   r   )rc   r   r   r   r   rQ   rf  r   )r"   r0  r  r  s       r   )test_array_conversions_no_sentinel_valuesr    s    
(<<<v
.
.
.Cs##H8C==D?3HqL111198BHaArvq9KKK"$ $ $D9	!!!!?ar   c                     t          j        g dt          j        d                    } t          j        t          j        d          t          j        d          d gt          j        d                    }|                     |          sJ t          j        g dt          j        d                    } t          j        t          j        d	          t          j        d
	          d gt          j        d                    }|                     |          sJ t          j        g dt          j        d                    } t          j        t          j        d	          t          j        d	          d gt          j        d                    }|                     |          sJ t          j        g dt          j        d                    } t          j        t          j        d	          t          j        d	          d gt          j        d                    }|                     |          sJ d S )Nr|   r   rP   r   )secondr   r     )microsecondr  r   )r  r  Nr   )r   r   r  r   r   r   r  )r8   r9   s     r   test_time32_time64_from_integerr    s   Xlll3888Fxa000!a000$8Ys^^- - -H =="""""Xlll4999Fx4888!4888$@Yt__. . .H =="""""Xlll4999Fx1555!1555t=Yt__. . .H =="""""X(((ry???Fx1555!1555t=Yt__. . .H =="""""""r   c                  8    d }  | d            | d           d S )Nc                     t          j        dt          j        g| d          }t          j        dd g|           }|                    |          sJ d S )Nr   TrQ   from_pandasrP   )r   r   rc   rf  r   r   s      r   _check_casez=test_binary_string_pandas_null_sentinels.<locals>._check_case	  sV    h"&)EEE8Xt,2666zz(#######r   rO   r  r2   )r  s    r   (test_binary_string_pandas_null_sentinelsr  	  s9    $ $ $ KKr   c                  V   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          j        t           t"          f          5  t          j        ||           d d d            n# 1 swxY w Y   t          j        ||d	          }|j        |dk    rdndk    sJ d S )Nr   r   rO   r  rR   
large_utf8s   stringr   Tr   r  r   r   r   r   rP   r  r   )rc   rf  r   rO   r  rU  rV  rW  r  r  r  r  r   r   r.   r/   rr   r0   r   r   )r   r
  r   r8   s       r   &test_pandas_null_sentinels_raise_errorr  	  s     
BF	X&
BF	V$
BF	^,
BF	\*
RV	bill+
$
/#

	'r1)=)=>
RVbikk"
RVbikk"
RVbikk"
RVbinn%
RVbioo&
RVbl4(()
RVbk$''(E"  ? ?b]J	233 	$ 	$HT####	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ $RT::: ",,QQA>>>>>? ?s   G11G5	8G5	c                      dd l } |                     ddt          j        gt                    }t          j        |          }t          j        ddt          j        gd          }|                    |          sJ d S )Nr   r   r   rz   T)r  )pandasIndexrc   rf  r}   r   r   r   )pdr   r8   r9   s       r    test_pandas_null_sentinels_indexr  6	  st     
((Aq"&>(
0
0CXc]]FxArvD99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                              }|                    |          sJ |                    d          }t           j        	                    ||            |j
        | j
        k    sJ d S )N  rk   zdatetime64[D]rz   rP   Fro   )rc   r   r   r   r   r  r   r[   re   rf   r{   r7   s      r   )test_array_roundtrip_from_numpy_datetimeDr  A	  s    
(D(-a334O
L
L
LCXc]]Fxx}T1a889	LLLH=="""""__E_22FJ!!&#...<39$$$$$$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 d S )Nr  rk   r  rT   rZ     r   r   r   r   r   )r   r   r   rQ   r   r+   s    r   test_array_from_naive_datetimesr  M	  su    
($1b"b11$1aA..  C
 8r|DT222222222r   )r{   rQ   datetime64[s]r   datetime64[ms]r   zdatetime64[us]r   zdatetime64[ns]r   c           
         d t          j         dddddd          t          j         ddddd	d          g}t          j        t          j        || 
                    }t          j        ||          }|                    |          sJ t          j        t          t          j        || 
                              }|                    |          sJ d S )Nr  rk   r  rT   rZ   r  r   r   r   rz   rP   )r   r   r   rc   r   r  )r{   rQ   r_   r"   r9   s        r   test_array_from_numpy_datetimer  V	  s     	$1b"b11$1aA..D (28D...
/
/Cx4(((H::h (4U33344
5
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            d S # 1 swxY w Y   d S )Nr  rk   r  rT   rZ   r  r   r   r   r  rz   r  )r   rc   r   r  r.   r/   r   r  )r_   r   r   s      r   5test_array_from_different_numpy_datetime_units_raisesr  n	  s    	$1b"b11$1aA..D
 	_---A	$.	/	/	/B"1";;bf%D	r2	3	3  
                 s   -CCC)r   r   r   r   c                 x   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 d S )NNaT2017-01-01 01:01:01.1111111112018-11-22 12:24:48.111111111rP   r   )rc   
datetime64r   r   r   rQ   r   )r   r   r,  ya1a2s         r   "test_array_from_list_of_timestampsr!  }	  s     	eT""A
5t<<A
5t<<A	1a)		B	1a)",t"4"4	5	5	5B7bg7<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            d S # 1 swxY w Y   d S )Nr  r  r  z'Unbound or generic datetime64 time unitrm   )rc   r  r.   r/   r   r  r   )r   r,  r  s      r   +test_array_from_timestamp_with_generic_unitr#  	  s    
eA
566A
566A	r2F
H 
H 
H  
!Q                 s   BB	Bztimedelta64[s]ztimedelta64[ms]ztimedelta64[us]ztimedelta64[ns]c                 Z   d t          j        d          t          j        dd          g}t          j        ||           }t	          j        |          }t          |t          j                  sJ |j        |k    sJ t	          j        ||          }|                    |          sJ |	                                |k    sJ t	          j        t          t          j        ||                               }|                    |          sJ |	                                |k    sJ d S )Nr   r   rz   rP   )r   r   rc   r   r   r)   DurationArrayrQ   r   r   r  )r{   rQ   r_   rg   r"   r9   s         r   test_array_from_numpy_timedeltar&  	  s!    	11a  D Xd%(((F
(6

Cc2+,,,,,8tx4(((H::h==??d"""" (4U33344
5
5C::h==??d""""""r   c                     t          j        d          } | gt          j        | g          fD ]G}t          j        t
                    5  t          j        |           d d d            n# 1 swxY w Y   Ht          j        dd          } | gt          j        | g          fD ]G}t          j        t
                    5  t          j        |           d d d            n# 1 swxY w Y   Hd S )Nr   M)rc   timedelta64r   r.   r/   r  r   )tdr_   s     r   .test_array_from_numpy_timedelta_incorrect_unitr+  	  sX    
		Brx~~&  ].// 	 	HTNNN	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 
3		Brx~~&  ].// 	 	HTNNN	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 s$   A))A-	0A-	=CC"	%C"	binary_typec                    | pt          j                    }t          j        g dd          }t          j        ||           }|j        |k    sJ t          j        g d|          }|                    |          sJ t          j        g d          }t          j        || |          }t          j        g d|          }|                    |          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
|          }|                    |          sJ t          j        g dd          }t          j        ||           }t          j        g d|          }|                    |          sJ d S )Nabcdeabcr=   z|S5rz   rP   r  r`  r/  Nr=   rl   r   r/  r=   Nr/  r=   Nr/  r=   r=   r=   r=   z|S0)r   rO   rc   r   rQ   r   )r,  expected_typer"   	arrow_arrr9   r^  s         r   test_array_from_numpy_asciir6  	  s     .29;;M
('''u
5
5
5Ck**I>]****x,,,=AAAHH%%%%%8((())Dk555Ix+++-@@@HH%%%%% ('''!+5
9
9
9##A#
>C8(((1,--ccc2Dk555IxKKK*, , ,HH%%%%% (<<<u
-
-
-Ck**Ix=99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        |          }|	                    |          sJ |
                                |k    sJ d S )Nr   )r   secondsmicrosecondsmillisecondsminuteshoursweeksr   r   )r8  r9  r:  r;  r<  r9  r  )r   r   r   r   rl  r)   MonthDayNanoIntervalArrayrQ   MonthDayNanor   r   r_   r"   rc  r9   s       r   "test_interval_array_from_timedeltarB  	  s9   11()1AQ	H 	H 	HID (4355
6
6Cc27888888r1333333
A",QQ:;Q346 6 6 #,!<<<= AEEF 	G 	GHM x&&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        |          }|                    |          s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            n# 1 swxY w Y   t!          j        t$                    5  t	          j         |dd          g           d d d            n# 1 swxY w Y   t!          j        t$                    5  t	          j         |dd          g           d d d            n# 1 swxY w Y   t!          j        t$                    5  t	          j         |d	          g           d d d            d S # 1 swxY w Y   d S )Nr   )relativedelta
DateOffsetr   )	yearsmonthsr   r8  r9  r;  r<  r=  leapdaysr7  r   r8  r9  r;  r<  r>  r  rH  r   r9  nanosecondsiUUUrA   )rG  rH  i$I$)r=  r   l   	z )r8  rL  l   \kpz)dateutil.relativedeltarD  r	  rF  r   r   r)   r?  rQ   rl  r@  r   r   r   r   r   r.   r/   rr   )rD  rF  r_   r"   rc  r9   s         r   &test_interval_array_from_relativedeltarN   
  s)    544444!!!!!!AaaaqA	? 	? 	?@D (4..Cc27888888r1333333
Q",QQ56aA A A",!<<<=@DEF 	G 	GHM x&&H::h==??!!##jj%/89D D D%/Q???@ &'( ( (() ) ) ) ) 
z	"	" D D
**OSAAABCCCD D D D D D D D D D D D D D D	z	"	" A A
**N#>>>?@@@A A A A A A A A A A A A A A A	z	"	" . .
**&=)*, , , - 	. 	. 	.. . . . . . . . . . . . . . . 
z	"	" @ @
**+;===>???@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @sH   $!FFF5!G""G&)G&!H33H7:H7 JJJ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        |          }|                    |          sJ |                                |k    sJ d S )N)r   r   )	r   r   rl  r)   r?  rQ   r@  r   r   rA  s       r   test_interval_array_from_tuplerQ  *
  s    *D (4355
6
6Cc27888888r1333333



##%M x&&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        |          }|	                    |          sJ d  | ddt          j        dddd	          t          j        d
          z  d           | dddd          g}|                                                                |k    sJ t          j        |g                                                                          }t          |          dk    sJ t          |d                   |k    sJ d S )Nr   rE  r   )	rG  rH  r   r8  r9  r;  r<  r=  rL  )r7  r   l   E5IQ)r   r   r   r7  r   rJ  r>  rK  )pandas.tseries.offsetsrF  r   r   r)   r?  rQ   rl  r@  r   r   r   r   r   r   r  )rF  r_   r"   rc  r9   expected_from_pandasactual_lists          r   #test_interval_array_from_dateoffsetrV  9
  s   111111
111AQA	? 	? 	? 	
D (4..Cc27888888r1333333
...//
			""$M x&&H::hjj%/89D D D%/Q???@ &'( ( ( 	
!!!CCCE ==??!!##';;;;; (D6"",,..5577K{q    A#7777777r   string_typec                    | pt          j                    }ddg}|D ]T}t          j        g d|          }t          j        ||           }|j        |k    sJ t          j        g d|          }|                    |          sJ t          j        g d          }t          j        || |          }t          j        g d|          }|                    |          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|          }|                    |          sJ Vt          j        g dd          }t          j        ||           }t          j        g d|          }|                    |          sJ d S )Nz<U5z>U5r.  rz   rP   r  r`  r1  rl   r   r2  r3  z<U0)r   r  rc   r   rQ   r   )rW  r4  dtypesr{   r"   r5  r9   r^  s           r   test_array_from_numpy_unicoderZ  ]
  s     ,2799MU^F * *h+++5999HS+..	~....8000}EEE)))))x,,,--HS+D999	8///mDDD))))) h+++a/u===cccBx,,,q011##A#6HS+D999	8 * * *0=? ? ?)))))) (<<<u
-
-
-Ck**Ix=999HH%%%%%%%r   c                      t          j        t                    5  t          j        t          j        g d          t          j                               d d d            d S # 1 swxY w Y   d S Nr   rP   )r.   r/   r0   r   r   rc   r   r2   r   r   !test_array_string_from_non_stringr]  
  s     
y	!	! 8 8
)))$$29;;77778 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8s   <A##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            n# 1 swxY w Y   t          j        | t          j                    d          }|j        dk    sJ d S )Nrz   rP   r   r   Tr  )
rc   r   r}   r   r   r   rf  r.   r/   r0   )valsr"   s     r   test_array_string_from_all_nullr`  
  s    8T4L///D
(4bikk
*
*
*C>Q8RVRV$I666D	y	!	! ) )
BIKK(((() ) ) ) ) ) ) ) ) ) ) ) ) ) )
(4bikkt
<
<
<C>Qs   (CCCc                     t           j                            g ddg d          } t          j        |           }t          j        g dd          }|                    |          sJ t          j        t          d          5  t          j        | t          j        g d	          
           d d d            d S # 1 swxY w Y   d S )Nr  r   FFTF)r{   r^  r   r   Nrk   rP   z Cannot pass a numpy masked arrayrm   )TFFFr`  )rc   mar   r   r   r.   r/   rr   rd  r8   r9   s      r   test_array_from_maskedrf  
  s   	\\\555 
 
7 
7BXb\\Fxg666H??6"""""	z)K	L	L	L A A
"(#>#>#>??@@@@A A A A A A A A A A A A A A A A A As   +B==CCc                      t           j                            dgd          } t          j        |           }t          j        dgd          }|                    |          sJ d S )Nr   r   rz   rP   )rc   rd  r   r   r   re  s      r   test_array_from_shrunken_maskedrh  
  s\    	aS	(	(BXb\\Fx'***H??6"""""""r   c                     d} t          j        g dg dg          }t          j        t          |           5  t          j        |           d d d            n# 1 swxY w Y   t          j        d          }t          j        t          |           5  t          j        |           d d d            d S # 1 swxY w Y   d S )Nz only handle 1-dimensional arraysr   rZ  rm   r   r-  )ru   arr2darr0ds      r   "test_array_from_invalid_dim_raisesrl  
  s/   
,CHiii+,,E	z	-	-	-  
               HQKKE	z	-	-	-  
                 s#   AA AB55B9<B9c                  h   t          j        dt                    } t          j        | d d df                   }t          j        g d          }|                    |          sJ t          j        | dd d f                   }t          j        ddg          }|                    |          sJ d S )N)r   r   rz   r   )TTTT)rc   onesr  r   r   r   r7   s      r   test_array_from_strided_boolro  
  s     '&
%
%
%CXc!!!Q$i  Fx***++H=="""""Xc!QQQ$i  Fxt%%H=="""""""r   c            	      v   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 ]|\  }}t          j
        |          }|D ]`}d t          j
        ddg          fD ]E}t          j
        |d d d         ||          }|d d d         |                                k    sJ Fa}d S )N   abs   cd   efr   r   rA  )abcdefFr`  )r   rO   r   r;  r   r   r$  r   r  rc   r   r   )pydatar   rY  nparraypatyper^  arrow_arrays          r   test_array_from_stridedr{  
  sF    
		bill ;<	RWYY

BHJJ

CD	2:<<67			bgii]+	F ! > >(6"" 	> 	>Frx778 > > hwsss|V,02 2 2ccc{k&;&;&=&======>	>> >r   c                  l    t          j        g ddz            } | j        dk    sJ | j        dk    sJ d S )N)TTNFNTr  i  )r   r   
true_countfalse_countr+   s    r   #test_boolean_true_count_false_countr  
  sI    
(8884?
@
@C>T!!!!?d""""""r   c                     t          j        g dt          j                              } |                                 }t	          |          dk    sJ |d                                         }dt	          |          cxk    rdk    sn J t          |          d         dk    sJ | dd          }|                                }|j        dk     t	          |          dk    sJ |d                                         }dt	          |          cxk    rdk    sn J t          |          d         dk    sJ t          j	        d|d                                                   d	k    sJ t          j        t          j        g d
                    } |                                 }t	          |          dk    sJ |d         J t          j	        d|d                                                   d
k    sJ t          j        g d          } |                                 }t	          |          dk    sJ |d                                         }t          |          d         dk    sJ |d                                         }t          j	        d|          dk    sJ |d                                         }|dk    sJ d S )Nrc  rP   r   r   r   @   rT   hhxxh)r   r   rk   rZ  3b)s   foo!Ns   bar!!r   rl   4i)r   rk   rk   r   s	   foo!bar!!)r   r   r;  r\   r   
to_pybytes	bytearrayr9  r"  unpackrc   r   )r   r\   null_bitmapa_slicedr  r   s         r   test_buffers_primitiver  
  s   
rxzz222AiikkGw<<1!*''))KK  &&&&B&&&&&&[!!!$
2222 uH  GOqw<<1!*''))KK  &&&&B&&&&&&[!!!$
2222='!*"7"7"9"9::iGGGG
##$$AiikkGw<<11:=wqz4466779DDDD
***++AiikkGw<<1!*''))K[!!!$
2222aj##%%G=w''<7777QZ""$$F\!!!!!!r   c                     t          j        ddgd g dgt          j        t          j                                        } |                                 }t          |          dk    sJ |d                                         }t          |          d         dk    sJ |d                                         }t          j	        d|          d	k    sJ |d                                         }t          |          d         d
k    sJ |d                                         }t          j	        d|          dk    sJ t          j        g dt          j        t          j
        dt          j                              t          j
        dt          j                              g                    } |                                 }t          |          dk    sJ |d                                         }t          |          d         dk    sJ |d                                         }t          |          d         dk    sJ |d                                         }t          j	        d|          dk    sJ |d                                         }t          |          d         dk    sJ |d                                         }t          j	        d|          dk    sJ d S )Nr   r   r   Nrk   rl   rP   rk   r   rl   r  r  7   r   qqq8xqq)r   r   r   rk   rl   ))*   NN)N+   r   r   bxx)r  r   4xh)r  )r   r   r  r   r\   r   r  r  r"  r  r#  r   r;  )r   r\   r  r  r   s        r   test_buffers_nestedr    s   
1a&$0rx

7K7KLLLAiikkGw<<1!*''))K[!!!$
2222aj##%%G=w''<7777!*''))K[!!!$
2222QZ""$$F=F++>>>>
///i#rwyy!9!9!##rxzz!:!:!< = =	> 	> 	>A iikkGw<<1!*''))K[!!!$
2222!*''))K[!!!$
2222QZ""$$F=''50000!*''))K[!!!$
2222QZ""$$F=''5000000r   c            	      x   t          j        t          j        g dd                    } | j        dk    sJ |                                 dk    sJ t          j        |           t                              |           | j        z   k    sJ t          j        g dd          } | j        dk    sJ |                                 dk    sJ t          j        |           t                              |           | j        z   k    sJ t          j        dd	gd g d
gt          j	        t          j
                                        } | j        dk    sJ |                                 dk    sJ t          j        |           t                              |           | j        z   k    sJ t          j        g dgddgggt          j	        t          j	        t          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                                                  } |                     dd	          }|j        dk    sJ |                                dk    sJ d S )NrZ  r   rz      r   Nr   rP      r   r   r  >   B   )rl   r   r6  r   rZ         r   rk   r      r  )r   r   rc   nbytesget_total_buffer_sizer   	getsizeofr}   
__sizeof__r  r   r   rV   )r   r  s     r   test_total_buffer_sizer  *  s   
)))733344A8u""$$----=v0033ah>>>>>
G,,,A8w""$$////=v0033ah>>>>>
1a&$0rx

7K7KLLLA8r>>>>""$$(======v0033ah>>>>>
999+By)"'))9L9L0M0MNNNA""$$(CCCCC8r>>>>
Aq6Aq6"YYYqc$:aWIFhrx		2233	5 	5 	5A	
AB977777##%%)III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 d S )Nr  rP   rZ  r7  )r   rq   r   r;  r  )r   s    r   test_nbytes_sizer  B  sf    
"(<<<bhjjAAA(99928::>>>@ 	A 	AA8r>>>>>>r   c                      t          j        t                    5  t          t	          j        dg                     d d d            d S # 1 swxY w Y   d S )Nr   )r.   r/   r0   reprr   Tensorr2   r   r   $test_invalid_tensor_constructor_reprr  H  s    	y	!	!  RYs^^                    #A

AAc                      t          j        t                    5  t          j                     d d d            d S # 1 swxY w Y   d S r6  )r.   r/   r0   r   r  r2   r   r    test_invalid_tensor_constructionr  N  s    	y	!	!  
	                 s   ;??)offset_typerO  c           
      h    | |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                              }|                                                    |          sJ |j                            |          sJ |j                            |          sJ |                                                    |          sJ |j                            |          sJ |j                            |          sJ |                                                                                    |          sJ |j        j                            |          sJ |                    d                              |          sJ d S )Nr&   r   rk   rl   r   r6  r   rP   )r   r   r   r   r   r6  )r   r   r   rl   rl   r6  r6  r   	r   Nr   r   rk   rl   r   r6  r   T)r   r   r   flattenr   r  r   )	r  rO  r3  r  r  r2  r  offsets1arr0s	            r   test_list_array_flattenr  S  s    HJJ	
 	
 D
 8LLF	

 	F	
 F	
  !  D" x***===HRXZZ((D8	
A
	
A	
A   D x000{CCCH8   
 HJJ  D <<>>  &&&&&<x(((((;d#####<<>>  &&&&&<x(((((;d#####<<>>!!##**400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                              }|                                                    |          sJ d S )Nr   r   r   rk   rP   )r   r   r   r   r   r   )r   r   r   value_parent_indicesr   )r  r"   r9   s      r   test_list_value_parent_indicesr    s    
 (F4LF		

   C x***<<<H##%%,,X6666666r   )r  r  c                 X   t          |dd           r9t          j        ddgd d d gddgg|          }t          j        g d|           }n6t          j        g dd g ddgg|          }t          j        g d	|           }|                                                    |          sJ d S )
Nr  r   r   r   rk   rP   )r   Nr   r   rQ  )r   Nr   r   )getattrr   r   value_lengthsr   )r  r  r"   r9   s       r   test_list_value_lengthsr    s     y+t,, ?hAtA	
    8OOO+>>> h		A	
    8OOO+>>>%%h///////r   c                     | t          j                              }t          j        dgddgg dg|          }|                                d d         }t          j        d          |d<   |                    |j        t          |          ||j        g          }|	                                dgd g dgk    sJ |j
        	                                g d	k    sJ |                                }|                    d
           |j        |j        k    sJ |	                                g dk    sJ |j        	                                g dk    sJ d S )Nr   r   r   rZ  rP      r   rR  )r   r   r   r   TrJ  )r   rk   rl   r   r   r   r   rk   rl   r   )r   r   r   r\   r:  r<  rQ   r   r   r   r  r  r   
value_type)rO  r  r"   r\   	flatteneds        r   %test_list_array_flatten_non_canonicalr    sa    
BHJJ
'
'C
(QC!Q+#
6
6
6CkkmmBQBGg&&GAJ


38SXXw#*

N
NC==??sD)))44444;  ""lll2222ID!!!>S^++++  LLL0000 :!!%7%7%7777777r   klassc                    |                      g dg d          }|j                                        g dk    sJ |j                                        g dk    sJ |dd          }|j                                        g dk    sJ |j                                        g dk    sJ |                                                                g dk    sJ |j        d                                         }|j        d                                         }|d                                         |j        ||                                         cxk    rdgk    sn J d S )	N)r   r   rk   r   r  )r  r   r   )r   rk   r   rZ  r   rk   r   r   r   r  r  r'   )r  r"   r  r   r  s        r   %test_list_array_values_offsets_slicedr    so    

LLL9K9K9K

L
LC:!!%7%7%77777;  ""lll2222
 qrr7D;  ""&8&8&88888<!!##yyy0000<<>>##%%2222QAQA7==??dk!A#.88::AAAAqcAAA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                            |           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                            |          sJ |                                                    |          sJ t          j                    }t          j        g d|
          }|j                            |          sJ |                                                    |          sJ |                                                                                    |          sJ |                                                    |          sJ |                    d                              |          sJ d S )Nr   r   r   rk   rl   r   r6  r   r   rP   )
r   r   r   rk   rl   r   r6  Nr   r   T)r   r  r   r   rQ   r   r  )r3  r  r2  r  typ0r  s         r   "test_fixed_size_list_array_flattenr    s    8BHRXZZ++Q//D8FFF	

 	IF	
   D 9D!!!!!8BHJJ""D8	
AAA	
D	4!Q   D 9D!!!!!<<>>  &&&&&8::D8     D 9D!!!!!<<>>  &&&&&<<>>!!##**400000<<>>  &&&&&<<$$T*******r   c                     t          j        dgdgdggt          j        t          j                    d                    } | dd                                          t          j        dgt          j                              k    sJ d S )Nr   r   r   r  rP   )r   r   r  r   r  )r   s    r   -test_fixed_size_list_array_flatten_with_slicer    s    HqcA3_(2:<<1===? ? ?E9"(A3RZ\\"B"B"BBBBBBBr   c            	         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        	                    |          sJ |j        t          j        d	d
dddddddg|          k    sJ |j
        	                    t          j        g d                    sJ |j        	                    t          j        g dt          j                                        sJ t           j                            |j        |j
                  	                    t          j        d	dgdgg                    sJ t           j                            |j        |j                  	                    t          j        d
dgdggt          j        t          j                                                  sJ t!          j        t$                    5  |                                 d d d            d S # 1 swxY w Y   d S )NkeyFr[  r   r  r  r  rP   r   r   )r  r   r   r   r   r   r   r   )r   r  r  r   r"  r#  r   r   rQ   r   r  r  r  r   r  r  r.   r/   r  r  )r   	ty_valuesr   s      r   test_map_array_values_offsetsr    s   	BHJJ	'	'B	28E2799uEEE8GRXZZ88: ; ;I
8X&
3"===A8=	*****8rxa  a  a  ! 	      
 6==///22333337>>"(99928::>>>?????<##AIqv66==
3*se$%%' ' ' ' '<##AIqw77>>
1a&1#RXbhjj%9%9:::< < < < < 
*	+	+  			                 s   J  JJc                  *   t          j        t          j        dt          j                              t          j        dt          j                              g          } t          j        g d|           }|                                \  }}|j        t          j                    k    sJ |j        t          j                    k    sJ |                                g dk    sJ |                                g dk    sJ |dd                                          \  }}|                                dd	gk    sJ |                                d
dgk    sJ t          j        g d|           }|                                \  }}|                                g dk    sJ |                                g dk    sJ |dd                                          \  }}|                                d dgk    sJ |                                d d
gk    sJ t          j        g d|           }|                                \  }}|                                g dk    sJ |                                g dk    sJ |dd                                          \  }}|                                dd gk    sJ |                                dd
gk    sJ t          j        g d|           }|                                \  }}|                                g dk    sJ |                                g dk    sJ |dd                                          \  }}|                                d d gk    sJ |                                d dgk    sJ d S )Nr,  r  r  rP   r  r  r   r!  r   r   rl   r   r!  )r  Nr  r  )r  Nr   )r   N)r         @)Nr   r|   )Nr  r   r   r  )r  N)Nr  )r   NN)NNr  r  )	r   r"  r#  r;  r$  r   r  rQ   r   )r   r   xsyss       r   test_struct_array_flattenr  %  sf   	BHS"(**--HS"*,,//1 
2 
2B
///b999AYY[[FB7bhjj    7bjll""""<<>>YYY&&&&<<>>___,,,,qrrU]]__FB<<>>aV####<<>>c3Z''''
+++"555AYY[[FB<<>>\\\))))<<>>-------qrrU]]__FB<<>>dAY&&&&<<>>dC[((((
333"===AYY[[FB<<>>\\\))))<<>>-------qrrU]]__FB<<>>aY&&&&<<>>c3Z''''
///b999AYY[[FB<<>>___,,,,<<>>.......qrrU]]__FB<<>>dD\))))<<>>dC[((((((r   c                  
   t          j        t          j        dt          j                              t          j        dt          j                              g          } t          j        g d|           }|                    d          }|                    d          }|                    d          }|                    d          }|                    d          }|                    d          }t          |t           j        j                  sJ t          |t           j        j	                  sJ |
                    t          j        g d	t          j                                        sJ |
                    t          j        g d
t          j                                        sJ |
                    |          sJ |
                    |          sJ |
                    |          sJ |
                    |          sJ d t          j                    fD ]H}t          j        t                    5  |                    |           d d d            n# 1 swxY w Y   IdD ]H}t          j        t                    5  |                    |           d d d            n# 1 swxY w Y   IdD ]H}	t          j        t                    5  |                    |	           d d d            n# 1 swxY w Y   Id S )Nr,  r  r  rP   r   r   r   r   r  r  r   rP  zr=   )r   r"  r#  r;  r$  r   r)   r   
Int16Array
FloatArrayr   r.   r/   r0   r   r  
r   r   x0y0x1y1x2y2invalid_indexinvalid_names
             r   test_struct_array_fieldr  K  sT   	BHS"(**--HS"*,,//1 
2 
2B
///b999A	
B	
B	
B	
B	
B	
Bb"&+,,,,,b"&+,,,,,99RXiiibhjj999:::::99RXoooBJLLAAABBBBB99R==99R==99R==99R==

+ # #]9%% 	# 	#GGM"""	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# ! # #]:&& 	# 	#GGM"""	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# " " "]8$$ 	" 	"GGL!!!	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	"" "s6   ?I!!I%	(I%	
J,,J0	3J0	K77K;	>K;	c                  4   t          j        t          j        dt          j                              t          j        dt          j                              g          } t          j        g d| t          j        g d                    }|                    d          }|                    d          }|                    d          }|                    d	          }|                    d          }|                    d          }t          |t           j        j	                  sJ t          |t           j        j
                  sJ |                    t          j        g d
t          j                                        sJ |                    t          j        g dt          j                                        sJ |                    |          sJ |                    |          sJ |                    |          sJ |                    |          sJ d t          j                    fD ]H}t          j        t                    5  |                    |           d d d            n# 1 swxY w Y   IdD ]H}t          j        t                    5  |                    |           d d d            n# 1 swxY w Y   IdD ]H}	t          j        t                     5  |                    |	           d d d            n# 1 swxY w Y   Id S )Nr,  r  r  r  r  r   r   r   r   )r   Nrl   rP   )r  Nr!  r  r  )r   r"  r#  r;  r$  r   _flattened_fieldr)   r   r  r  r   r.   r/   r0   r   r  r  s
             r   !test_struct_array_flattened_fieldr  m  s   	BHS"(**--HS"*,,//1 
2 
2B
///bh33344	6 	6 	6A 
		A		B	
		A		B	
		B		B	
		B		B	
		C	 	 B	
		C	 	 Bb"&+,,,,,b"&+,,,,,99RXlll<<<=====99RX...RZ\\BBBCCCCC99R==99R==99R==99R==

+ . .]9%% 	. 	.}---	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. ! . .]:&& 	. 	.}---	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. " - -]8$$ 	- 	-|,,,	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	-- -s6   I66I:	=I:	KK	K	*LL	L	c                  l   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 ]U\  }}	 t          j        g |                              |           0# t           j        j        t           j        f$ r Y Rw xY wd S )Nrk   )lengthrP   )r   r   r  r   r;  r   r   r   r  r  rv  rk  r$  r   r  r  rO   r   	itertoolsproductr   r  r   r  r|  )r  t1t2s      r   test_empty_castr    s7   
		



		












	
	
	






	
	
	
	
	%E* %eU33  R	 HRb!!!&&r****/A 	 	 	H	 s   $)F F10F1c                     t           j                            g dddg          } t           j                            g d|           }|                                ddgdggk    sJ t           j                            g dddg          } t           j                            g d|           }|                                g dk    sJ d S )Nr  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    !--iii#sDDH|''			8<<HS#J#66666!--iii#sDDH"..I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          }|                    |          sJ |                    |          sJ t          j        ddgt                    }t          j        | t          j                    |          }|                    |          sJ t          j        d                    d          g          } t          j	        t                    5  t          j        | t          j                               d d d            n# 1 swxY w Y   t          j	        t                    5  t          j        | t          j                    t          j        dg                     d d d            d S # 1 swxY w Y   d S )Ntototatarz   Fr`  r  r  )rc   r   r}   r   r   r   r  r  r.   r/   rr   )vecvec2r"   r  r9   r^  s         r   test_array_from_numpy_str_utf8r    s/    (FF#
$
$C8VV$F333D
(3	
$
$C8D")++&&Dx())H::h;;x      8UEN$///D
(3	$
/
/
/C::h (Y&&{334
5
5C	z	"	" # #
bikk"""# # # # # # # # # # # # # # # 
z	"	" ; ;
bikk%(9(9::::; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ;s$   !'FFF8<HHHlarge_typesFc                    dg}dg}d t          d          D             d                                 D             |fdt          d          D             z  }|fdt          d          D             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 | rdt          |t          j                  sJ t          t          |                    D ]*}	||	         }
|
                                ||	         k    sJ +t          |t          j                  sJ |j        d	k    sJ d
}t          |j                  D ]A}	|                    |	          }|D ]'}
|
                                ||         k    sJ |dz  }(B'd S )N   xr,  c                 f    i | ].}|d dz  t          |dz                                d          z   /S )r  i rZ   r  )r   r  r   r   s     r   
<dictcomp>z9test_numpy_binary_overflow_to_chunked.<locals>.<dictcomp>  sL        	
4=!CBKK$6$6v$>$>>  r   rZ   c                 @    i | ]\  }}||                     d           S )r  )decode)r   r   r,  s      r   r  z9test_numpy_binary_overflow_to_chunked.<locals>.<dictcomp>  s@     B B B"&!Q  &!1!1 B B Br   c                 &    g | ]}|d z           S rZ   r2   )r   r   unique_stringss     r   r   z9test_numpy_binary_overflow_to_chunked.<locals>.<listcomp>  s"    >>>!~a"f%>>>r   i   c                 &    g | ]}|d z           S r  r2   )r   r   unicode_unique_stringss     r   r   z9test_numpy_binary_overflow_to_chunked.<locals>.<listcomp>  s2     0 0 0 .a"f5 0 0 0r      r   r   )rC   r  r   rR   rO   r  r  rc   r   rQ   r)   r1   r   r'   r9  r(  r  )r  r   unicode_valuesr,  rW  r
  ex_typer"   r5  r   valvalue_indexr  r  r  s                @@r   %test_numpy_binary_overflow_to_chunkedr    so    VFUN r  NB B*8*>*>*@*@B B B
>>>>uW~~>>>>F 0 0 0 0 %g0 0 0 0N (3C"/###	K%0?"-///bgiiK!;/);79 % %ghtnnHS'**	~(((( 	%i222223y>>** . .lyy{{d1g-----. i99999 '3....K9/00 % %!**  % %C99;;${*;;;;;1$KK%%+% %r   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	          |                    d                    |dz
  k    sJ t	          |                    d                    dk    sJ d S )N   xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxi    r   r   )r   r   r)   r1   r   r9  r  )kilobyte_stringtwo_megar_  r"   s       r   #test_list_child_overflow_to_chunkedr    s     OH(Q,/D
(4..Cc28$$$$$s88x!|####)D
(4..Cc2?+++++s88xsyy||1,,,,syy||!!!!!!r   c                  P   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 d S )N)r>   r   Nr   FFFTr`  TTTT)r   
infer_typer  rc   r   r   )r   s    r   test_infer_type_maskedr    s     
...777
9 
9 
9B???? 
...H%=%=%=>>
@ 
@ 
@B???? ="%%%222222r   c                  V   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 d S )Nrk   Nrk   rB  FTFTr`  r   rz   )r   r   rc   rQ   r   r+   s    r   test_array_maskedr  *  s     (###!;!;!;<<> > >C8rxzz!!!! (28,,,C888!;!;!;<<> > >C8rxzz!!!!!!r   c                  t   t          j        g dt          j        g d                    } |                                 g dk    sJ t          j        g dt          j        g d                    } |                                 g dk    sJ t          j        g dg d          } |                                 g dk    sJ t          j        g dg d          } |                                 g dk    sJ t	          j        t           j                  5  t          j        g dt          j        g d                    } d d d            n# 1 swxY w Y   t	          j        t           j                  5  t          j        g dg d          } d d d            n# 1 swxY w Y   t	          j        t           j                  5  t          j        g dt          j        g d                    } d d d            n# 1 swxY w Y   t	          j        t           j                  5  t          j        g dt          j        g dt          j        g d	                              } d d d            n# 1 swxY w Y   t	          j        t           j                  5  t          j        g dt          j        g d
                    } d d d            n# 1 swxY w Y   t	          j        t                    5  t          j        t          j        g d          g d          } d d d            n# 1 swxY w Y   t	          j        t                    5  t          j        t          j        g d          t          j        g d                    } d d d            d S # 1 swxY w Y   d S )Nr  r  r`  )rk   Nrk   N)rk   Nrk   r   )rk   r   Nr   )rk   NNN)r   r   rB  g      @r  )FNFTTFTF)r   r   rc   r   r.   r/   r  r0   r+   s    r   test_array_supported_masksr  7  s    (###!;!;!;<<> > >C==??0000000
(???!;!;!;<<> > >C==??0000000
(???2224 4 4C==??0000000
(???2224 4 4C==??3333333 
r(	)	) < <hH%9%9%9::< < << < < < < < < < < < < < < < < 
r(	)	) 2 2h0002 2 22 2 2 2 2 2 2 2 2 2 2 2 2 2 2 
r(	)	) < <hH%9%9%9::< < << < < < < < < < < < < < < < < 
r(	)	) O OhH%?%?%?*,(3K3K3K*L*LN N NO O OO O O O O O O O O O O O O O O
 
r(	)	) B BhH%?%?%?@@B B BB B B B B B B B B B B B B B B
 
y	!	! 8 8hrx 0 0 0116668 8 88 8 8 8 8 8 8 8 8 8 8 8 8 8 8 
y	!	! B Bhrx 0 0 011H%?%?%?@@B B BB B B B B B B B B B B B B B B B B Bs   -EEE=F$$F(+F(-HH
H
/AI>>JJ'-K  K$'K$-L==MM!?N--N14N1c                      dd l } t          j        |                     ddgdd          |                     ddgd	          
          }|                                d dgk    sJ d S )Nr   r   r   r   )r  r{   TFr  rz   r`  )r	  r   r   Seriesr   )r	  r"   s     r   !test_array_supported_pandas_masksr  j  sv    MMM
(6==!Qc=AAtUm6BBD D DC==??tQi''''''r   c                     t          j        dgt          j        d          t          j        dg                    } dg|                                 k    sJ t          j        t          j        dg          t          j        d          t          j        dg                    }dg|                                k    sJ t          j        t          j        dg          t          j        d          t          j        dg                    }d g|                                k    sJ t          j        t          j        dg          t          j                    t          j        dg                    }dg|                                k    sJ t          j        t          j        dg          t          j                    t          j        dg                    }d g|                                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  |                                k    sJ d S )Nr  r   Fr  T)s   aaa   bbbs   cccrZ   r   )FFFs   XXXr!  )r   r   rO   rc   r   )masked_basicmaskedmasked_nullsnparz  s        r   test_binary_array_maskedr&  r  s]    8WIBIaLL!#5'!2!24 4 4L9..000000 Xbhy))	!8UG,,. . .F9((******8BHgY//bill!#4&!1!13 3 3L6\++------ Xbhy))	8UG,,. . .F9((******8BHgY//bikk!#4&!1!13 3 3L6\++------ (+++B.
/
/C(3RYq\\ ")>)>)>r)A B BD D DKCv$$$R'K,A,A,C,CCC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|                                k    sJ t          j        g d          } t          j        | d d d         t          j        d                    }ddg|                                k    sJ d S )Nrq  r   Fr`  rr  rs  )rc   r   r   rO   r   )rx  rz  s     r   test_binary_array_stridedr(    s     h,,,--G(733Q3<1 "% 8 8: : :K5>[22444444 h,,,--G(733Q3<166K5>[224444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 ]K\  }}}}t          j        ||
          5  t          j        ||           d d d            n# 1 swxY w Y   Ld S )Nr   r   Fr   rz   zmust be boolean dtypezmust be 1D arrayr   zdifferent lengthrm   r`  )rc   r   r0   r   r|  rr   r.   r/   )r   objr^  exru   s        r   test_array_invalid_mask_raisesr,    s    Q5%.444	+	- QE7UG,--	,	. 
BHeU^,,	,	. 
1a&		28UEN#>>>	+	- 
1a&		28eWug$677	'	) 
)))		bhu~66	'	)!E& $ % %T2s]2S))) 	% 	%HSt$$$$	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	%% %s   *EE	E	c                      t          j        t                    5  t          j        t          d          g           d d d            d S # 1 swxY w Y   d S )Nr  )r.   r/   OverflowErrorr   r   r  r2   r   r   test_array_from_large_pyintsr/    s    	}	%	% ! !
#g,,   ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !r  c                     t          j        g d          } t          j        |           }t          j        g dd          }t          j                            ||           t          j        | d          }t          j                            ||           t          j        | dd          }t          j                            ||           t          j        g d          } t          j        dd	t          j        gd
          }t          j        |           }t          j                            ||           t          t          j                  t          d          k     rnt          j        | d          }t          j                            ||           t          j        | d
d          }t          j                            ||           nt          j
        t          d          5  t          j        | d           d d d            n# 1 swxY w Y   t          j        g d          } t          j
        t                    5  t          j        | d
d           d d d            n# 1 swxY w Y   t          j        g d          } |                     d          }|j        j        sJ t          j        g d          } |                     t          j        d
          d          }|j        d
k    sJ d S )Nr   r   rz   F)copy)r{   r1  r|   r   r   r   z
2.0.0.dev0zUnable to avoid a copyrm   T)r   r   rc   r   re   rf   rf  r   __version__r.   r/   rr   	__array__flags	writeabler{   r7   s      r   test_numpy_array_protocolr6    s    (999

CZ__Fx			111HJ!!&(333 Xc&&&FJ!!&(333Xcu555FJ!!&(333 (<<<
 
 CxArvi888HZ__FJ!!&(333r~!6!666#E***

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

%%fh7777 ]:-EFFF 	& 	&HSu%%%%	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& hyyy!!]:&& 	7 	7HS	6666	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 (999

C]]]%%F<!!!!
(999

C]])!4!44]@@F<9$$$$$$s$   0HHHI11I58I5c                      G d d          }  | t          j        g dd                    }t          j        |          }t          j        g dt          j                              }|                    |          sJ t          j        |t          j                              }t          j        g dt          j                              }|                    |          sJ t          j        |t          j                              }t          j        g dt          j                              }|                    |          sJ t          j        t                    5  t          j        |t          j        g d                     d d d            n# 1 swxY w Y   t          j        t                    5  t          j        |d	
           d d d            n# 1 swxY w Y    G d d          } |t          j        g dd                    }t          j        t                    5  t          j        |           d d d            n# 1 swxY w Y    G d d          } |t          j        g dd                    }t          j        |          }t          j        g dt          j                              }|                    |          sJ  G d d          }t          j        g dd          } |||          }t          j        |          }t          j
        g dg dgt          j                              }|                    |          sJ d S )Nc                       e Zd Zd ZddZdS )$test_array_protocol.<locals>.MyArrayc                     || _         d S r6  r_   selfr_   s     r   __init__z-test_array_protocol.<locals>.MyArray.__init__      DIIIr   Nc                 8    t          j        | j        |          S r1  )r   r   r_   r=  rQ   s     r   __arrow_array__z4test_array_protocol.<locals>.MyArray.__arrow_array__  s    8DID1111r   r6  r)  r*  r+  r>  rB  r2   r   r   MyArrayr9    s7        	 	 		2 	2 	2 	2 	2 	2r   rD  r   r   rz   rP   rx   r`  r   r  c                       e Zd Zd ZddZdS )+test_array_protocol.<locals>.MyArrayInvalidc                     || _         d S r6  r;  r<  s     r   r>  z4test_array_protocol.<locals>.MyArrayInvalid.__init__  r?  r   Nc                 4    t          j        | j                  S r6  )rc   r   r_   rA  s     r   rB  z;test_array_protocol.<locals>.MyArrayInvalid.__arrow_array__  s    8DI&&&r   r6  rC  r2   r   r   MyArrayInvalidrF    s7        	 	 		' 	' 	' 	' 	' 	'r   rI  c                       e Zd Zd ZddZdS )%test_array_protocol.<locals>.MyArray2c                     || _         d S r6  r;  r<  s     r   r>  z.test_array_protocol.<locals>.MyArray2.__init__  r?  r   Nc                 :    t          j        | j        g|          S r1  )r   rq   r_   rA  s     r   rB  z5test_array_protocol.<locals>.MyArray2.__arrow_array__  s    #TYKd;;;;r   r6  rC  r2   r   r   MyArray2rK    s7        	 	 		< 	< 	< 	< 	< 	<r   rN  c                       e Zd Zd ZddZdS )%test_array_protocol.<locals>.MyArray3c                 "    || _         || _        d S r6  )data1data2)r=  rR  rS  s      r   r>  z.test_array_protocol.<locals>.MyArray3.__init__(  s    DJDJJJr   Nc                 F    t          j        | j        | j        g|          S r1  )r   rq   rR  rS  rA  s     r   rB  z5test_array_protocol.<locals>.MyArray3.__arrow_array__,  s!    #TZ$<4HHHHr   r6  rC  r2   r   r   MyArray3rP  '  s=        	 	 		I 	I 	I 	I 	I 	Ir   rU  )rc   r   r   r   r   r   r.   r/   rr   r0   rq   )rD  r"   r8   r9   rI  rN  rU  rg   s           r   test_array_protocolrV    s3   2 2 2 2 2 2 2 2 '"(999G444
5
5CXc]]Fx			

333H=="""""Xc

+++Fx			

333H=="""""Xc
---Fx			
555H==""""" 
z	"	" : :
28$7$7$7889999: : : : : : : : : : : : : : :	z	"	"  
1              ' ' ' ' ' ' ' ' .)))7;;;
<
<C	y	!	!  
              
< < < < < < < < (28IIIW555
6
6CXc]]Fx			

333H=="""""I I I I I I I I Xiiiw///F
(66
"
"CXc]]FIII 6RXZZHHHH=="""""""s6   *+F!!F%(F%G((G,/G,:II"Ic                       e Zd Zd ZddZdS )ArrayWrapperc                     || _         d S r6  r;  r<  s     r   r>  zArrayWrapper.__init__7      			r   Nc                 6    | j                             |          S r6  )r_   __arrow_c_array__)r=  requested_schemas     r   r\  zArrayWrapper.__arrow_c_array__:  s    y**+;<<<r   r6  )r)  r*  r+  r>  r\  r2   r   r   rX  rX  6  s7          = = = = = =r   rX  c                       e Zd Zd ZddZdS )ArrayDeviceWrapperc                     || _         d S r6  r;  r<  s     r   r>  zArrayDeviceWrapper.__init__?  rZ  r   Nc                 (     | j         j        |fi |S r6  )r_   __arrow_c_device_array__)r=  r]  kwargss      r   rb  z+ArrayDeviceWrapper.__arrow_c_device_array__B  s     1ty12BMMfMMMr   r6  )r)  r*  r+  r>  rb  r2   r   r   r_  r_  >  s=          N N N N N Nr   r_  wrapper_classc                 X    | 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 d S r\  )r   r   r   r_   r   )rd  r"   r8   s      r   test_c_array_protocolrf  F  s     -<<<
=
=CXc]]FSX Xc

+++FRXiiibhjj999999999r   c                     t          j        g dt          j                              } t          j        t
          d          5  |                     d           d d d            n# 1 swxY w Y   |                     d           }d S )Nr   rP   z7Received unsupported keyword argument\(s\): \['other'\]rm   znot-none)other)r   r   r   r.   r/   r  rb  )r"   r   s     r   0test_c_array_protocol_device_unsupported_keywordri  S  s    
(99928::
.
.
.C	H
 
 
 7 7 	$$:$666	7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 	$$4$00AAAs   A((A,/A,c                      t          j        t          j        ddg          t          j        ddg          g          } |                     t          j        g d                    sJ d S )Nr   r   r   rk   r  )r   concat_arraysr   r   )concatenateds    r   test_concat_arrayrm  a  sf    #	1a&		28QF++,. .Lrx556666666r   c                      t          j        t          j                  5  t          j        t          j        dg          t          j        dg          g           d d d            d S # 1 swxY w Y   d S )Nr   r   )r.   r/   r   r|  rk  r   r2   r   r   !test_concat_array_different_typesro  g  s    	r	'	' : :
"(A3--2$8999: : : : : : : : : : : : : : : : : :s   =A))A-0A-c                  Z   t          j        t          d          5  t          j        d g           d d d            n# 1 swxY w Y   t          j        ddgddgg          } t          j        t          d          5  t          j        |            d d d            d S # 1 swxY w Y   d S )Nzshould contain Array objectsrm   r   r   r   rk   )r.   r/   r0   r   rk  rq   r+   s    r   test_concat_array_invalid_typerq  l  s,    
y(F	G	G	G ! !
$   ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! 
QFQF+
,
,C	y(F	G	G	G  
                 s!   >AA>B  B$'B$c                     t          j        g dt          j        dd                    } |                                 }|j        j        J t          j        | g          } |                                 }|j        j        J d S )Nr   r   zEurope/Brusselsr   rP   )r   r   r   r   dtr   rq   )r"   r   s     r   test_to_pandas_timezonert  w  s~     (9992<8I#J#J#J
K
K
KCA47

C5
!
!CA47r   c                  ,   t          j        d          gt          j        d          gt          j        d          gg} t          j        |           }|                                }|d         j        dk    sJ |                                | k    sJ d S )Nr   r   r   r   rk  )rc   rk  r   r   r   r{   r   )r9   r"   r8   s      r   test_to_pandas_float16_listrv    s     A"*Q--2:a==/BH
(8

C]]__F!9?i''''==??h&&&&&&r   c                  n   t          j        g dt          j                              } |                     d          }|                                g dk    sJ t          j        g dg dg          } |                     d          }|                                g dk    sJ t          j        g dt          j                              } |                     dd	
          }|                                g dk    sJ |                     dd
          }|                                g dk    sJ d S )N)rl   r6  #   rP   
descending)rx  r6  rl   r   rZ  )r   rl   rk   r   r   r   )rl   r6  rx  Nat_end)null_placement)rx  r6  rl   Nat_start)Nrx  r6  rl   )r   r   r   sortr   rq   )r"   
sorted_arrs     r   test_array_sortr    s=   
(:::BHJJ
/
/
/C,''J!!ZZZ////

IIIyyy1
2
2C,''J!!%7%7%77777
(###"(**
5
5
5C,x@@J!!%5%5%55555,zBBJ!!%5%5%5555555r   c                     t           j                            t          j        g dt          j                              t          j        g d          gddg          } |                     dd          }|                                d	d
ddddddddddgk    sJ |                                 }|                                dddddddddd	d
dgk    sJ t           j                            t          j        g dt          j                              t          j        g d          gddgt          j        g d                    }|                    ddd          }|                                d d	d
dddddddgk    sJ |                    ddd          }|                                d	d
dddddddd gk    sJ d S )N)rl   r6  r6  rx  rP   )r>   carr   foobarr   r   r  ry  )byrx  r  r   r6  r  r   rl   r>   rb  r_  r|  )r  r{  rz  )r   ra  r   r   r   r}  r   )r"   r~  arr_with_nullss      r   test_struct_array_sortr    s   
.
$
$
RXZZ000
00011& 3Z %  C
 ,3//J!!x  eee	&     J!!eeex  	&     ^//
RXZZ000
000111 3Zbh'B'B'BCC 0 E EN
  $$Z % 9 9J!!x  ee	&      $$X % 7 7J!!x  ee	&      r   c                  n   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            n# 1 swxY w Y   t          j        dgt          j                              }t          j        | t          j                    d          }||k    sJ t          j        | t          j	                              }| |k    sJ d S )Nr   rP   l    r   Fr  )memory_pool)
r   r   r   rQ   r   r.   r/   r|  r   default_memory_poolr7   s      r    test_array_accepts_pyarrow_arrayr    s   
(999

CXc]]F&==== Xc

+++Fx			

333Hv=BHJJ&&&& (K=rxzz
2
2
2C	r	'	' ' '
28::&&&&' ' ' ' ' ' ' ' ' ' ' ' ' ' ' x28::...HXc

777FX Xcr'='?'?@@@F&======s   /(D##D'*D'c                    | j                                         |k    sJ | j                                        |k    sJ t          |           |k    sJ |                                 |k    sJ |                                 |k    sJ d S r6  )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5%%''61111y>>^++++))++>>>>))++>>>>>>r   c                     g d}g d}t           j                            |||           }t          |||ddd           d S Nr   rl   rZ   rP  r   r   r   r   rP  rk   r   )r   RunEndEncodedArrayr   r  )ree_typer  r   r  s       r   +check_run_end_encoded_from_arrays_with_typer    sL    ~~H\\F%11(FHMMI)Xvr1a@@@@@r   c                     g d}g d}t          j        || j                  }t          j        || j                  }t           j                            ||          }|j        | k    sJ t          |||ddd           d S r  )r   r   run_end_typer  r  r   rQ   r  )r  r  r   typed_run_endstyped_valuesr  s         r   'check_run_end_encoded_from_typed_arraysr    s    ~~H\\FXh(=>>N8FH$788L%11.,OOI>X%%%%)Xvr1a@@@@@r   c                     t                       t          j                    t          j                    t          j                    fD ]} t          j                    t          j                    t          j                    t          j                    fD ]5}t          j        | |          }t          |           t          |           6d S r6  )	r  r   r;  r   r   r  rv  run_end_encodedr  )r  r  r  s      r    test_run_end_encoded_from_arraysr    s    /111RXZZ< > >9;;

BIKKL 	> 	>J),
CCH7AAA3H====	>> >r   c            	         g d} g d}t          j        t          j                    t          j                              }d}d g}d}d}| |g}t           j                            ||||||          }t          || |ddd           t           j                            ||g |||          }t          || |ddd           t           j                            |||d||          }t          || |ddd           t           j                            ||dz
  ||d|          }t          || ||dz
  dd	           t          j        t                    5  t           j                            ||d d g|||           d d d            n# 1 swxY w Y   t          j        t                    5  t           j                            |||||d            d d d            n# 1 swxY w Y   t          j        t                    5  t           j                            |||||| g           d d d            n# 1 swxY w Y   t          j        t                    5  t           j                            |||d	||           d d d            d S # 1 swxY w Y   d S )
Nr  r  )r  r  rP  r   rk   r   r   r   )
r   r  r   r   r  r<  r  r.   r/   rr   )	r  r   r  r  r\   r   r9  rS  r  s	            r   !test_run_end_encoded_from_buffersr    s   ~~H\\F!rxzzbhjjQQ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 LI)Xvvz1aHHH	z	"	" I I
**8VdD\+5vx	I 	I 	II I I I I I I I I I I I I I I 
z	"	" E E
**8VW+5vt	E 	E 	EE E E E E E E E E E E E E E E 
z	"	" K K
**8VW+5vz	K 	K 	KK K K K K K K K K K K K K K K 
z	"	" @ @
**8VW+,fh	@ 	@ 	@@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @sH   'F  FF$%GGG9&H++H/2H/%JJJc                  l   g d} g d}t          j        t          j                    t          j                              }t           j                            | ||          }g d}t          j        ||          }|                    |          sJ t          j        t          j        |          |          }|                    |          sJ t          j        t          j	                    t          j
                              }t          j        ||          }|                    |          rJ t           j                            | ||          }|                    |          sJ g d} g d}t           j                            | ||          }g d}t          j        ||          }|                    |          sJ g d} g d	}t           j                            | ||          }t          j        g d
          }t          j        |||          }|                    |          sJ d S )N)r   r   r   r   r   r   r   r   r   r   rP   )r   r   rl   r   )r   r   r   N)r   r   r   r   r   N)r   r   rk   rl   r   )r   r   Nr   N)FFFTFTr  )r   r  r   r   r  r   r   r   rc   r;  r$  )	r  r   r  r9   r"   r8   
ree_type_2
expected_2r^  s	            r   )test_run_end_encoded_from_array_with_typer  6  s(   yyHYYF!"(**bhjj99H$00619; ;H 

CXc)))F=="""""Xbhsmm(333F=="""""#BHJJ
==JXc
+++F}}X&&&&&&228V3=? ?J==$$$$$||H__F$00619; ;H  

CXc)))F=="""""H"""F$00619; ;H 8<<<==DXct444F=="""""""r   c                     g d} t          j        | t          j        t          j                    t          j                                        }t          j        |           }t
          j                            |                    d          |           t          j
        t           j                  5  |                                 d d d            d S # 1 swxY w Y   d S )Nr  Fro   )r   r   r  r   r   rc   re   rf   r[   r.   r/   r|  )r"   r  r9   s      r   test_run_end_encoded_to_numpyr  ^  s    


Cb0RXZZHHIIIx}}HJ!!)"4"4E"4"J"JHUUU	r	'	'                   s   5CCCc                     g d} t          j        | t          j        t          j                    t          j                                        }|                                                                | k    sJ t          j        t           j	                  5  |                    d           d d d            d S # 1 swxY w Y   d S )Nr  Tro   )
r   r   r  r   r   r   r   r.   r/   r|  )r"   r  s     r   test_run_end_encoded_to_pandasr  j  s    


Cb0RXZZHHIII  ''))S0000	r	'	' 1 140001 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1s   B==CCc                    g d}g d}g d}|                      |||          }|                                ddgddgdd	gd d
ggk    sJ |j                                        |k    sJ |j                                        |k    sJ |j                                        |k    sJ  |t          j        dt          j                                        }|                      ||||          }|j        |k    sJ |j        j	        j
        dk    sJ  |t          j                              }t          j        t                    5  |                      ||||           d d d            n# 1 swxY w Y   g d}g d}g d}|                      |||          }|                                ddgddgddggk    sJ |j                                        |k    sJ |j                                        |k    sJ |j                                        |k    sJ g }dd g}ddg}|                      |||          }|                                g d gk    sJ |j                                        |k    sJ |j                                        ddgk    sJ |j                                        |k    sJ g }ddg}d dg}|                      |||          }|                                d g gk    sJ |j                                        |k    sJ |j                                        |k    sJ |j                                        ddgk    sJ ddg}g d}g d}t          j        g d          }|                      ||||          }|                                dgd dggk    sJ |j                                        |k    sJ |j                                        |k    sJ |j                                        |k    sJ d S )N)r   r   r   rk   rl   r   Nr6  )r   r   rk   r   )r   r   r   r   r   r   r   rk   rl   r   r6  r  rP   r  )r   r   r   r  r   )r   r   r   )r   r   r   r  r`  )r   r   r   r  sizesr   r#  r   rQ   r  r  rO   r.   r/   r0   r   )	r  rO  r   r  r  r   r  r8   r^  s	            r   test_list_view_from_arraysr  u  s   
 )((FllGLLE''??E??!Q!Q!Q$ CCCCC<!!##v----=""$$////;  ""e++++ 
BHVRXZZ88
9
9C((%EEF;#;"'61111 
BIKK
(
(C	y	!	! F F##GUF#EEEF F F F F F F F F F F F F F F \\FiiGIIE''??E??!Q!Q!Q 88888<!!##v----=""$$////;  ""e++++ F$iGFE''??E??T
****<!!##v----=""$$A....;  ""e++++ F!fG1IE''??E??r
****<!!##v----=""$$////;  ""q!f,,,, VFiiGIIE8((())D''T'JJE??!dQC 00000<!!##v----=""$$////;  ""e++++++s   E--E14E1c                 ,   ddg}g d}g d}t          j        g d          }t          j        t           j        j                  5  |                     ||||           d d d            n# 1 swxY w Y   g d}|                     ||||          }|dd          }t          j        t           j        j                  5  |                     |j        |j        |j	        |
                                           d d d            d S # 1 swxY w Y   d S )Nr   r   )r   r   N)r   r   r   )FFTr`  )r   r   r   )r   r   r.   r/   r   r|  r   r  r  r   rb  )r  rO  r   r  r  r^  r   array_slices           r    test_list_view_from_arrays_failsr    s    VFllGIIE8((())D 
rv*	+	+ G G##GUF#FFFG G G G G G G G G G G G G G G iiG''T'JJE)K 
rv*	+	+ < <##!2[%8%8%:%: 	$ 	< 	< 	<< < < < < < < < < < < < < < < < < <s$   A,,A03A0;D		DD)r  rO  r  c           
         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|          }|                                                    |          sJ |j                            |          sJ |j                            |          sJ |j                            |          sJ |	                                                    |          sJ |	j                            |
          sJ |	j                            |          sJ |	j                            |          sJ |	                                                                                    |          sJ |	j        j                            |          sJ |	                    d                              |          sJ g d}g d}g d}|                     |||          }|                                	                                g dk    sJ t          j        g d          }|                     ||||          }|                                	                                g dk    sJ |j        	                                g dk    sJ d S )Nr  rP   r&   r   rk   rl   r   r6  r   )r   r   r   rl   rl   r6  r6  )r   r   r   r   r   r   r   )r   r   r   r   r   )r   r   r   r   r   Tr  )r   r   r   r   )r   r   r   r   )rk   r   r   r   r  r`  )rk   r   r   )
r   r   r   r  r   r  r  r   r   r   )r  rO  r  r  r2  r  r  sizes1r3  r  r  sizes2r   r  r  r   r^  s                    r   test_list_view_flattenr    s    8   
 HJJ  D RXZZ((D8	
A
	
A	
A   D x---K@@@HX++++>>>FHJJ	
 	
 D
 8LLF	

 	F	
 F	
  !  D" xk:::HXoooK888F<<>>  &&&&&<x(((((:V$$$$$;d#####<<>>  &&&&&<x(((((:V$$$$$;d#####<<>>!!##**400000;$$T*****<<$$T***** \\FllGLLE''??E==??$$&&,,,6666 8///00D''T'JJE==??$$&&)))3333<!!##|||333333r   list_view_typec                 D   |                      g dg dg d          }|dd          }|j                                        g dk    sJ |j                                        ddgk    sJ |                                                                g dk    sJ |j        d	                                         }|j        d                                         }|d	                                         |j        ||                                         cxk    rdgk    sn J d S )
N)r   r   rk   )r   r   r   r  )r  r  r   r   r   rk   rZ  r   r  )r  r   sliced_arrayr   r  s        r   test_list_view_slicer  "  sM    &&yyy A0 A0 A08J8J8J ' L LE9L((**.@.@.@@@@@))++1v5555!!++--::::Q%%''AQ%%''A?  ""l&9!A#&>&H&H&J&JQQQQqcQQQQQQQQr   numpy_native_dtype)r  r  r  c                    t          j        |                                           }t          j        d|          }t	          j        t          j                  5  t          j        |           d d d            n# 1 swxY w Y   t	          j        t          j                  5  t          j        |t          j	                               d d d            n# 1 swxY w Y   t	          j        t          j                  5  t          j        |g           d d d            n# 1 swxY w Y   t	          j        t          j                  5  t          j
                            |gdg           d d d            d S # 1 swxY w Y   d S )NrZ   rz   rP   r   r  )rc   r{   newbyteorderrd   r.   r/   r   r  r   r   ra  r   )r  numpy_swapped_dtyperg   s      r   test_swapped_byte_order_failsr  6  sI   
 (#566CCEEYr!4555F 
r2	3	3  
               
r2	3	3 , ,
bjll++++, , , , , , , , , , , , , , , 
r2	3	3  
&               
r2	3	3 : :
""F8C5"999: : : : : : : : : : : : : : : : : :sH   A<<B B %(CC CD$$D(+D($E>>FFc                     t          j        d          } |                     d          }t          j        dt          j                  }t          j        g dt          j                  }|                    |          }|                    |          }t          j
                            t          j                    dd |g          }t          j
                            t          j                    dd |g          }t          j
                            t          j                    d||g          }|                                 |j        dk    sJ |                                d |gk    sJ |j        t          j        j        k    sJ |j        du sJ t'          |          dk    sJ |                    dd          j        dk    sJ t+          |          sJ t-          |          sJ t          j        t0                    5  |                                 d d d            n# 1 swxY w Y   t          j        t0                    5  |                                 d d d            n# 1 swxY w Y   t          j        t0                    5  |                    |           d d d            n# 1 swxY w Y   t          j        t0                    5  |                    t          j                               d d d            n# 1 swxY w Y   t          j        t0                    5  |                    t          j                               d d d            n# 1 swxY w Y   t          j        t0                    5  |                                 d d d            n# 1 swxY w Y   t          j        t0                    5  |                                  d d d            n# 1 swxY w Y   t          j        t0                    5  |!                                 d d d            n# 1 swxY w Y   t          j        t0                    5  |"                                 d d d            n# 1 swxY w Y   t          j        t0                    5  |j#         d d d            n# 1 swxY w Y   t          j        t0                    5  |j$         d d d            n# 1 swxY w Y   t          j        t0                    5  |%                                 d d d            n# 1 swxY w Y   t          j        t0                    5  d tM          |          D              d d d            n# 1 swxY w Y   t          j        t0                    5  ||k     d d d            n# 1 swxY w Y   t          j        t0                    5  |'                                 d d d            n# 1 swxY w Y   t          j        t0                    5  |(                                 d d d            n# 1 swxY w Y   t          j        t0                    5  |)                                 d d d            n# 1 swxY w Y   t          j        t0                    5  |*                    d           d d d            n# 1 swxY w Y   t          j        t0                    5  |d          d d d            n# 1 swxY w Y   t          j        t0                    5  |+                    dg           d d d            n# 1 swxY w Y   t          j        t0                    5  |,                                 d d d            n# 1 swxY w Y   t          j        t0                    5  |-                    g d	           d d d            n# 1 swxY w Y   t          j        t0                    5  |.                    d           d d d            n# 1 swxY w Y   t          j        t0                    5  |/                                 d d d            n# 1 swxY w Y   t          j        t0                    5  |0                                 d d d            n# 1 swxY w Y   t          j        t0                    5  |1                                 d d d            n# 1 swxY w Y   t          j        t0                    5  |2                                 d d d            n# 1 swxY w Y   t          j        t0                    5  |                    d
           d d d            d S # 1 swxY w Y   d S )Nzpyarrow.cudar   rk   rz   r  Fr   c                     g | ]}|S r2   r2   r  s     r   r   z&test_non_cpu_array.<locals>.<listcomp>  s    qr   )TTFFTrJ  )3r.   r   Contextrc   rd   r   r   r  buffer_from_datar   r1   r<  r   r9  r\   device_typeDeviceAllocationTypeCUDAis_cpur   rV   r  r   r/   r  
__dlpack____dlpack_device__r  r  r   r}  r   r  r   r  r   r  r  iterrb  is_nanr(   	fill_nulltake	drop_nullfilterindexr}  r3  r[   r   )	cudactxr_   validitycuda_data_bufcuda_validity_bufr"   r  r  s	            r   test_non_cpu_arrayr  O  s   ~..D
,,q//C9Qbh'''Dx222"(CCCH((..M,,X66
(



Am/D
E
EC8  Q}0EFFDX**


A)=9; ;N LLNNN:????;;==T=11111?b5::::::s88q====99Q??!Q&&&&99s88OOO 
*	+	+                	*	+	+                                  
*	+	+                	*	+	+                	*	+	+                	*	+	+  			              	*	+	+  

              	*	+	+                                 	*	+	+                	*	+	+ " "!!" " " " " " " " " " " " " " "	*	+	+  

              	*	+	+ $ $!!###$ $ $ $ $ $ $ $ $ $ $ $ $ $ $	*	+	+  DII              	*	+	+  t              	*	+	+                	*	+	+  

              	*	+	+                	*	+	+  a              	*	+	+  A              	*	+	+  !              	*	+	+                	*	+	+ / /

---.../ / / / / / / / / / / / / / /	*	+	+  		!              	*	+	+  


              	*	+	+                	*	+	+                	*	+	+  

              	*	+	+    $                                   s  H((H,/H,I--I14I1J33J7:J7'L

LL.'M!!M%(M%N&&N*-N*
O++O/2O/P00P47P4Q55Q9<Q9R--R14R1S%%S),S)	T**T.1T.U44U8;U8V++V/2V/W00W47W4X55X9<X9Y::Y>Y>[  [[$	[99[= [=]  ]]$^^	^	)___1```7aaa<bb!$b!c""c&)c&d''d+.d+e//e36e3r6  )collections.abcr   r   rU  
hypothesishhypothesis.strategies
strategiesstr  r.   r"  r	   r   r    numpyrc   ImportErrorpyarrowr   pyarrow.tests.strategiestestspastpyarrow.vendored.versionr   mark	processesr   r$   r,   r3   r:   r?   rD   rG   rJ   rM   rX   ri   rv   r   r   parametrizer   r   r   r	  r   nopandasr   r   r   r   r   r   r   r   r   r  r  r  r  r%  r.  r1  r3  r?  rG  rN  r  r   	list_viewlarge_list_viewrV  rX  rj  rl  rr  rw  r  r  r  r  r  LargeListArrayr  r  r  r  r  r  r  r  r  r  r  r  r  r  r"  r$  r&  r)  r/  r4  r:  r?  rE  rH  rX  r]  rb  rd  rg  ri  rq  rx  r{  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  rC   rO   r  r  r   r   r;  r#  pickle_test_parametrizer  r  settingsHealthChecktoo_slowgivenri  	all_typesintegersr  r  r  r  r  r  r  r  r  r  r  r   r  r  r!  r#  r   r&  r+  rR   binary_viewr6  rB  rN  rQ  rV  r  r  rL  rZ  r]  r`  rf  rh  rl  ro  r{  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/  r6  rV  rX  r_  rf  ri  rm  ro  rq  rt  rv  r  r  r  r  r  r  r  r  r  r  r  ListViewArrayLargeListViewArrayr  r  r  r  r  r  r2   r   r   <module>r     s   $ % $ $ $ $ $       " " " " " "           



    	BBB     ' ' ' ' ' ' ' ' ' , , , , , , - - -  . . .    $	 	 	        	; 	; 	; 4 4 4& 4 4 4   4 9 9 9" !8!8!899e}--4 4 .- :9 4 !8!8!8994 4 :9 4 4 4 4   6 #8 #8  #8L BGIIBGIIBIKK	   
 
 
4' 4' 4'n
# 
# 
#   6 6 6&; &; &;R ' ' 'B< < <&% % %7 7 7    2 2 2# # #  A A A( "  "  "F8 8 84 ,HbmR\2+=/? @ @7 7@ @7*5 5 5*L- L- L-^; ; ; 6**  +* ; ; ;, C C CL 7 7 7 E E E*$ $ $ A<2,bm<>? ?3? 3?? ? 3?l A\28&D   	A3K	At9qcS1#J!  
$ $ 	 $ A\28&D  K K	 K@	# 	# 	#  $ $ $ I  I  I X1I 1I 1Ih> > >&G  G  G TBL BL BLJG G G,4 4 4& $($ ' ' ' ' '2 " " "8    	 	 	# # #' ' ', , , + + +( 
* 
* 
* + + +$* * *4 "K "K "KJ +  +  +F/ / /8 ( ( ( 	 	 	%" %" %"P* * *   0/ / /' ' 'B B B,E E E4, , ,4' ' '@     ' ' '( # # # # # # # # #    # # # " " "( # # #	0 	0 	0 )   !eeAsmmUU1c]]uuQ||eeArlluuQ||eeArlluuQ||eeArllooo!!!"RYq\\+++,,   $ $!  $
 !+11	"	"	"HBHJJ/	xrxzz"			:2:<<(			929;;'	T
a&1#,,-a&1#hbhjj112%Sz	"HBHYRY[[$9$9:a&1#XRXZZ001a&1#**828::667%Sz	"LBL$=$=>	#	#	#BIxrxXRXZZ00("(3		2L2LMNN	P  ( $ $ $$ $ $ 1=#9";<<<DKR[1333        =<   - - -" F F F,            # # #6    ? ? ?: # # # % % %3 3 3 *lbl3''(|r|D))*|r|D))*|r|D))*	-        "    !8!8!899
 
 :9 
    *{r{3''(D))*D))*D))*	-  # #  #,    BIKKBOBN	)  
& &  &@, , ,, &@ &@ &@R, , ,  8  8  8F BGIIBMOOBN	)  
 &  &   &F 8 8 8    A A A # # #    # # # > > >"# # # "" "" ""J 1  1  1F J J J.      
 =#28::rx0828::r}2MNP P4+ 4+P P4+n BHXRXZZBHXRXZZ1%%%BM("(**'    	7 	7	   	7 5#28::xrx

';';<#28::xrx

a'H'H'HI#28::}r}XRXZZ'@'@A#28::|r|HBHJJ'?'?@#28::'9r'9("(**'E'EF	HI I0 0I I04 ,rx.GHH8 8 IH8& 2<1B"CDDB B EDB$!+ !+ !+HC C C  0#) #) #)L" " "D -  -  -F  >> > > ; ; ;4 66-% -% 76   -%` " " "" 3 3 3 	" 	" 	" /B /B /Bd ( ( ( D D D@ 
5 
5 
5 % % %4! ! ! +% +% +%\ @# @# @#F= = = = = = = =N N N N N N N N <9K*LMM	: 	: NM	:1 1 17 7 7: : :
      ' ' '6 6 6 + + +\  4? ? ?A A A AA A A> > >,@ ,@ ,@^ $# $# $#N    1 1 1 A+R\:0"2DEGH HB, B,H HB,J A+R\:0"2DEGH H< <H H<* P+R\828::F0"2DhbhjjQST TG4 G4T TG4T )B,<b>S+TUUR R VUR& -/A/A/ABB: : CB :.R  R  R  R  R s   7 A A