+
    nDj9                     *   R t ^ RIt^ RIt^ RIt^ RIt ^ RIt]P                  ! R4      t]P                  ! 4       t]R8H  t]P                  P!                  ]'       * R],          R7      tRtRtR tR tR t]P                  P/                  R	. R/O4      R
 4       tR tR0R lt]P                  P/                  R	. R/O4      R 4       t]P                  P/                  R	. R/O4      R 4       tR t]P                  P/                  R	. R/O4      R 4       t]P                  P/                  R	. R/O4      R 4       t]P                  P/                  R	. R/O4      R 4       t ]P                  P/                  R	. R/O4      R 4       t!]P                  P/                  RRR.4      ]P                  P/                  R	. R/O4      R 4       4       t"]P                  P/                  R	. R/O4      R 4       t#R t$R t%R t&R t'R t(R t)R t*R  t+R! t,R" t-R# t.R$ t/]]P                  P/                  R	. R/O4      R% 4       4       t0R& t1R' t2R( t3R) t4]P                  P/                  R	^
^d.4      R* 4       t5R+ t6R, t7R- t8R. t9R#   ] d    ]P                  P                  t
 ELyi ; i)1z
UNTESTED:
read_message
Nzpyarrow.cudazlinux-x86_64z'CUDA IPC not supported in platform `%s`)reasonc                     \         P                  ^ 4      V n        \         P                  \         P                  P                  4       ^,
          4      V n        R# )    N)cudaContextglobal_contextget_num_devicesglobal_context1modules   &Q/data/cameron/venvs/s3viz/lib/python3.14/site-packages/pyarrow/tests/test_cuda.pysetup_moduler   1   s5     LLOF!\\$,,*F*F*H1*LMF    c                 
    V = R # N)r   r
   s   &r   teardown_moduler   6   s    r   c                  *   \         P                  P                  4       ^ 8  g   Q h\        P                  ^ 8X  g   Q h\
        P                  \         P                  P                  4       ^,
          8X  g   Q h\        P                  p V P                  '       d   Q hR\        V 4      9   g   Q h\        P                  pWP                  8X  g   Q hVP                  '       d   Q hVP                  ^ 8X  g   Q hVP                  \        P                  P                  8X  g   Q h\        P                   ! \"        RR7      ;_uu_ 4        \         P                  \         P                  P                  4       4       RRR4       R#   + '       g   i     R# ; i)r   z)<pyarrow.MemoryManager device: CudaDevicez5device_number argument must be non-negative less thanmatchN)r   r   r   r   device_numberr	   memory_manageris_cpureprdevice	device_iddevice_typepaDeviceAllocationTypeCUDApytestraises
ValueError)mmdevs     r   test_Contextr$   :   s#   <<'')A---''1,,,((DLL,H,H,JQ,NNNN		&	&Byyy=6$r(BBB


C))zzz>==A??b55:::::	z:
< 
< 	T\\1134
< 
< 
< 
<s   2FF	sizec                 ~   \         P                  V 4      p\        P                  ! V\        P                  R 7      p^W ^,          ^V ,          ^,          % VP                  4       p\        P                  ! V\        P                  R 7      p\        P                  P                  WC4       VP                  V 8X  g   Q hR# )dtypeN)	r   new_host_buffernp
frombufferuint8copytestingassert_equalr%   )r%   bufarrarr_cparr2s   &    r   test_manage_allocate_free_hostr4   P   s    


t
$C
--288
,CCa$	XXZF==BHH-DJJD)88tr   c                      \         P                  p \         P                  ^4      p\         P                  V ^,           8X  g   Q h?\         P                  V 8X  g   Q hR# )   N)r   bytes_allocated
new_buffer)r7   cudabufs     r   test_context_allocate_delr:   [   sM    $44O'',G))_s-BBBB))_<<<r   c                   VR8X  Ed   V ^ 8  g   Q h\         P                  ! V 4      pVP                  V 8X  g   Q h\        P                  ! V\        P
                  R7      pVP                  V 8X  g   Q h\        P                  P                  ^^V \        P
                  R7      VR&   VP                  4       ^ 8  g
   V ^ 8X  g   Q h\        P                  ! V\        P
                  R7      p\        P                  P                  W44       W23# VR8X  dO   \        V RR7      w  r2\        P                  V 4      pVP                  V 8X  g   Q hVP                  V^ V R7       W53# \        R4      h)	z5Return a host or device buffer with random data.
    hostr'   )lowhighr%   r(   NNNr   targetpositionnbyteszinvalid target value)r   allocate_bufferr%   r*   r+   r,   randomrandintsumr.   r/   make_random_bufferr   r8   copy_from_hostr!   )r%   rA   r0   r1   arr_dbufs   &&    r   rI   rI   c   s,    qyy  &xx4mmCrxx0xx4""qsRXX"NAwwy1}	))}}S1


*x	8	%d6:((.yyD   C!D9y
+
,,r   c                    \        V 4      w  r\        P                  V4      pVP                  V 8X  g   Q h\        P
                  ! VP                  4       \        P                  R 7      p\        P                  P                  W4       \        P                  ! \        4      ;_uu_ 4        \        V4       RRR4       \        P                  V4      pVP                  V 8X  g   Q h\        P
                  ! VP                  4       \        P                  R 7      p\        P                  P                  W4       \        P                  VP                  4       4      pVP                  V 8X  g   Q h\        P
                  ! VP                  4       \        P                  R 7      p\        P                  P                  W4       VP                  ^ VP                  4      pVP                  V 8X  g   Q h\        P
                  ! VP                  4       \        P                  R 7      p\        P                  P                  W4       V ^8  d   VP!                  W^,          R 4       \        P
                  ! VP                  4       \        P                  R 7      p\        P                  P                  \        P"                  ! W^,          R W^,          R 34      V4       VP!                  VRV ^,           4       \        P                  V4      pVP                  V 8X  g   Q h\        P
                  ! VP                  4       \        P                  R 7      p\        P                  P                  W4       VP!                  W^,          R 4       \        P
                  ! VP                  4       \        P                  R 7      p\        P                  P                  W4       VP                  ^ VP                  ^
,           4      pVP                  V 8X  g   Q h\        P
                  ! VP                  4       \        P                  R 7      p\        P                  P                  W4       VP                  V ^,          V ^
,           4      pVP                  W ^,          ,
          8X  g   Q h\        P
                  ! VP                  4       \        P                  R 7      p\        P                  P                  W^,          R V4       V ^,          p^V ,          ^,          p\        P                  W'VR7      pVP                  V8X  g   Q h\        P
                  ! VP                  4       \        P                  R 7      p\        P                  P                  WWx,            V4       \        P                  VP                  VVR7      4      pVP                  V8X  g   Q h\        P
                  ! VP                  4       \        P                  R 7      p\        P                  P                  WWx,            V4       \        P                  WVR7      pVP                  V8X  g   Q h\        P
                  ! VP                  4       \        P                  R 7      p\        P                  P                  WWx,            V4       \        P                  WWx,            4      pVP                  V8X  g   Q h\        P
                  ! VP                  4       \        P                  R 7      p\        P                  P                  WWx,            V4       \        P                  VP                  4       VVR7      pVP                  V8X  g   Q h\        P
                  ! VP                  4       \        P                  R 7      p\        P                  P                  WWx,            V4       \        P%                  V 4      pVP                  V 8X  g   Q h\        P                  V4      pVP                  Wx4      pVP                  V8X  g   Q h\        P
                  ! VP                  4       \        P                  R 7      p\        P                  P                  WWx,            V4       \&        P)                  V 4      p\        P
                  ! V\        P                  R 7      p	WR&   \        P                  V4      pVP                  V 8X  g   Q h\        P
                  ! VP                  4       \        P                  R 7      p\        P                  P                  W4       \        P                  W'VR7      pVP                  V8X  g   Q h\        P
                  ! VP                  4       \        P                  R 7      p\        P                  P                  WWx,            V4       \        P                  VP                  WxR7      4      pVP                  V8X  g   Q h\        P
                  ! VP                  4       \        P                  R 7      p\        P                  P                  WWx,            V4       R#   + '       g   i     E	L; i)r'   N)offsetr%   rN   lengthr?   )rI   r   buffer_from_datar%   r*   r+   copy_to_hostr,   r.   r/   r   r    BufferError
memoryviewtobytesslicerJ   concatenater8   r   r)   )
r%   r1   r0   r9   r3   cudabuf2arr3soffsetssizerK   s
   &         r   test_context_device_bufferr\   z   sg    "$'HC--c2G<<4==--/rxx@DJJC& 
{	#	#7 
$ --c2G<<4==--/rxx@DJJC& --ckkm<G<<4==--/rxx@DJJC& }}Q-H==D   ==..0ADJJC&ax!GH.}}W113288D


!GHs78}/M N $	&HT1W. ..w7H==D   ==..0ADJJC&CaM*==--/rxx@DJJC& }}QR0H==D   ==..0ADJJC&}}T1Wd2g.H==D7N***==..0ADJJCaM40 AgGdFAIE--c38 . :G<<5   ==--/rxx@DJJC8$?--ciiw?D /8 /F GG<<5   ==--/rxx@DJJC8$? --c-NG<<5   ==--/rxx@DJJC8$?--c'-.HIG<<5   ==--/rxx@DJJC8$? --ckkm5<38 . :G <<5   ==--/rxx@DJJC8$? ''-G<<4 --c2G}}W,H==E!!!==..0ADJJC6= 

t
$C==BHH-DG--c2G<<4==--/rxx@DJJC& --c-NG<<5   ==--/rxx@DJJC6=--			/1G<<5   ==--/rxx@DJJC6=g 
$	#	#s   +i99j
	c                 h   \         p\        V R R7      w  r#VP                  p\        P	                  WP                  P
                  ,          4      pV\        P                  ! WTR7      R&   VP                  V4      pVP                  VP                  8X  g   Q h\        P                  ! VP                  4       VR7      p\        P                  P                  W'4       VP                  V4      pVP                  VP                  8X  g   Q h\        P                  ! VP                  4       VR7      p\        P                  P                  W'4       \        P                  ! \        P                   RR7      ;_uu_ 4        VP                  \        P"                  ! R4      4       RRR4       \        P                  ! \        P                   RR7      ;_uu_ 4        VP                  \        P$                  ! . R	O4      4       RRR4       R#   + '       g   i     Lp; i  + '       g   i     R# ; i)
r   r@   r'   r?   z$buffer is not backed by a CudaBufferr   s   123Nz8cannot create device buffer view from .* 'numpy.ndarray')         )r   rI   r(   r   r)   itemsizer*   r+   buffer_from_objectr%   rR   r.   r/   r   r    r   ArrowTypeError	py_bufferarray)r%   ctxr1   cbufr(   hbufcbuf2r3   s   &       r   test_context_from_objectrj      s   
C"49ICIIE yy'9'9 9:D*-BMM$$Q'""4(E::"""==++-U;DJJC& ""5)E::"""==++-U;DJJC& 
r((D
G 
Gr||F34
G
 
r((5
7 
7 	rxx	23
7 
7
G 
G

7 
7 
7s   ?&H(H H	 H1	c                  d   \         p \        P                  ! \        P                  4      p^
p\        P                  W!P                  ,          4      p\        P                  ! V4      pV P                  VP                  VP                  V4      p\        P                  ! V4      V^,           8X  g   Q h?\        P                  ! V4      V8X  g   Q hV P                  VP                  VP                  V4      p?VP                  4        \        P                  W!P                  ,          4      pV P                  VP                  VP                  4      p?\        P                  ! \        P                   RR7      ;_uu_ 4        VP                  4        RRR4       R#   + '       g   i     R# ; i)
   zCuda error r   N)r   r*   r(   r,   r   r)   ra   sysgetrefcountforeign_bufferaddressr%   rR   r   r    r   ArrowIOError)rf   r(   r%   rh   rcfbufs         r   test_foreign_bufferrt     s4   
CHHRXXED~~ 56D 
	BdllDIIt<D??4 BF***??4 B&&& dllDIIt<D ~~ 56DdllDII6D	r+
. 
.
. 
. 
. 
.s   FF/	c                 x   \        V 4      w  rVP                  4       VP                  4       8X  g   Q h\        P	                  V4      pVP
                  V 8X  g   Q hVP                  '       d   Q hVP                  4       VP                  4       8X  g   Q hV ^ 8  d   VP                  ^ 8  g   Q h\        V 4       F  pW4,          W,          8X  d   K  Q h	  \        R4      \        V ^,          V ^,          4      3 F4  pW5,          P                  4       W,          P                  4       8X  d   K4  Q h	  VP                  V ^,          V ^,          4      pVP                  V8X  g   Q h\        P                  ! \        RR7      ;_uu_ 4        \        P                  4        RRR4       R#   + '       g   i     R# ; i)r   Nz-Do not call CudaBuffer's constructor directlyr   )rI   rU   
to_pybytesr   rQ   r%   r   rp   rangerV   parentr   r    	TypeErrorr   
CudaBuffer)r%   r1   r0   rg   issbufs   &      r   test_CudaBufferr~   5  s_   !$'HC;;=CNN,,,,**3/D99{{{?;;=DOO----ax||a4[w#&     $K$'47# w!!#sv~~'7777	 ::dAgtQw'D;;$	yL
N 
N
N 
N 
N 
Ns   	F((F9	c                    \        V 4      w  rVP                  4       VP                  4       8X  g   Q h\        P	                  V 4      pV\
        P                  ! V\
        P                  R 7      R&   VP                  V 8X  g   Q hVP                  '       g   Q hVP                  4       VP                  4       8X  g   Q h\        V 4       F  pW4,          W,          8X  d   K  Q h	  \        R4      \        V ^,          V ^,          4      3 F4  pW5,          P                  4       W,          P                  4       8X  d   K4  Q h	  VP                  V ^,          V ^,          4      pVP                  V8X  g   Q h?\        P                  ! \        RR7      ;_uu_ 4        \        P!                  4        RRR4       R#   + '       g   i     R# ; i)r'   r?   Nz-Do not call HostBuffer's constructor directlyr   )rI   rU   rv   r   r)   r*   r+   r,   r%   r   rw   rV   rx   r   r    ry   
HostBuffer)r%   r1   r0   rh   r{   r|   r}   s   &      r   test_HostBufferr   Q  sb   !$'HC;;=CNN,,,,%D-0BMM$bhh'*99;;;;;;=DOO----4[w#&     $K$'47# w!!#sv~~'7777	 ::dAgtQw'D;;$	yL
N 
N
N 
N 
N 
Ns   F88G		c                    \         P                  ! R 4      pWP                  ,          p\        P                  ! VRR7      p\        V\        P                  4      '       g   Q h\        V\        P                  4      '       d   Q h\         P                  ! W1R7      pVP                  V 8X  g   Q h\        V 4      VR&   \         P                  ! W1R7      p\         P                  P                  WE4       \        P                  V4      p\        V\        P                  4      '       g   Q h\        V\        P                  4      '       g   Q hVP                  V8X  g   Q hVP                   '       d   Q hVP#                  V^ VR7       VP%                  ^ VR7      p\         P                  ! WqR7      p\         P                  P                  WH4       R# )uint16T)	resizabler'   r?   rB   N)r*   r(   ra   r   rE   
isinstanceBufferr   rz   r+   r%   rw   r.   r/   r   r8   r   rJ   rR   )	r%   dtrD   r0   r1   rK   device_bufferbuf2r3   s	   &        r   test_copy_from_to_hostr   l  s]    
(	BKKF


Vt
4Cc299%%%%#t////
--
&C88t4[CF=='DJJC& #--f5MmT__5555mRYY////'''#####  q @ %%q%@D==(DJJC&r   c           	      ,
   \        V R R7      w  rVP                  4       pVP                  '       g   Q h\        P                  P                  V\        P                  ! V\        P                  R7      4       VP                  V ^,          R7      pVP                  '       g   Q h\        P                  P                  W^,          R \        P                  ! V\        P                  R7      4       VP                  V ^,          V ^,          R7      pVP                  '       g   Q h\        P                  P                  W^,          V ^,          V ^,          ,            \        P                  ! V\        P                  R7      4       VP                  V ^,          ^ R7      pVP                  '       g   Q hVP                  ^ 8X  g   Q hV ^,           R3RV ^,           ^ 3R3 FD  w  rE\        P                  ! \        RR7      ;_uu_ 4        VP                  WER7       RRR4       KF  	  ^ V ^,           3V ^,          V ^,           ^,          ^,           3V ^33 FD  w  rE\        P                  ! \        RR7      ;_uu_ 4        VP                  WER7       RRR4       KF  	  \        P                  ! V ^,          4      pVP                  VR	7       \        P                  P                  VRV ^,           \        P                  ! V\        P                  R7      4       V ^8  d   R# VP                  V^R
7       \        P                  P                  V^^V ^,          ,            \        P                  ! V\        P                  R7      4       VP                  V^R7       \        P                  P                  VR,          \        P                  ! V\        P                  R7      R,          4       VP                  V^^R7       \        P                  P                  V^^ \        P                  ! V\        P                  R7      R,          4       ^ V ^
,           3^
V ^,
          3^ V ^,          3V ^,          V ^,          ^,           33 FE  w  rE\        P                  ! \        RR7      ;_uu_ 4        VP                  W4VR7       RRR4       KG  	  R#   + '       g   i     EK  ; i  + '       g   i     EK  ; i  + '       g   i     K  ; i)r   r@   r'   rC   NrB   !position argument is out-of-ranger   8requested more to copy than available from device buffer)r0   )r0   rC   )r0   rD   :N   N)r0   rD   rC   z,requested copy does not fit into host buffer)r0   rC   rD   r   r   )rI   rR   r   r*   r.   r/   r+   r,   r%   r   r    r!   r   rE   )r%   r1   rL   r0   rC   rD   s   &     r   test_copy_to_hostr     s   "49IC



C::::JJCs"((!CD


T1W

-C::::JJCaM2==BHH+MN


T1WT1W

=C::::JJCaaa8MM#RXX>@ 

T1WQ

7C::::88q== 
ahaW ]]:!DF Fx?F F 
DFdAgQ{1}-ay ]]:#BD D x?D D 

T1W
%C#JJCqM2==BHH+MNby#+JJC2dAg:.MM#RXX>@ 	#b)JJCHbmmCrxx&H&MN#b15JJC$KMM#RXX>sCE RL2tAv,aL47D!GAI. ]]:#9; ; #H; ;	=F F FD D D6; ; ;s$   SS-6TS*-S?Tdest_ctxsameanotherc                   aa \        VR R7      w  poVP                  4       pV R8X  dC   \        p SP                  P                  V P                  8X  d   \
        P                  ! R4       MSP                  p V P                  V4      oVV3R lpV! 4       V8X  g   Q hV^8  d   V! V^,          R7      VRV^,           VRV) ^,           ,           8X  g   Q hV! 4       V8X  g   Q hV! ^V^,          R7      VR,          VRV^,           ,           W1V^,          ,
          ^,
          ) R ,           8X  g   Q hV^,           R3RV^,           ^ 3R3 F;  w  rV\
        P                  ! \        R	R
7      ;_uu_ 4        V! WVR7       RRR4       K=  	  ^ V^,           33 F;  w  rV\
        P                  ! \        RR
7      ;_uu_ 4        V! WVR7       RRR4       K=  	  V^8  d   R# V^,          V^,           ^,          ^,           33 F;  w  rV\
        P                  ! \        RR
7      ;_uu_ 4        V! WVR7       RRR4       K=  	  R#   + '       g   i     EK  ; i  + '       g   i     K  ; i  + '       g   i     K{  ; i)r   r%   rA   r   znot a multi-GPU systemc                     < SP                   ! S.V O5/ VB  SP                  4       p\        P                  ! V\        P                  R 7      P                  4       # r'   )copy_from_devicerR   r*   r+   r,   tolistargskwargsrbufr0   rL   s   *, r   put"test_copy_from_device.<locals>.put  sG    c3D3F3  "}}T299;;r   r   NrB   Nr^   Nr   r   r   6requested more to copy than available in device bufferr   r   r   )
rI   r   r	   contextr   r   skipr8   r    r!   )	r   r%   r1   lstr   rC   rD   r0   rL   s	   &&     @@r   test_copy_from_devicer     s]    "tH=HC
**,C9";;$$(>(>>KK01;;t$D< 5C<<axD!G$HT1Wc)D5!8n(DDDDu||AdAg.Gc(47m#cqLN*;*<&==> 	> > !VRL(T!VQK ]]:!DF F1F F 
DF ]]:#BD D 1D D ax 
q46A+a-  ]]:#@B B 1B BF F FD D DB B Bs$   6
I
I*
I+II(+I<c                 \  aa \        V R R7      w  poVP                  4       p\        P                  V 4      oVV3R lpV! 4       V8X  g   Q hV ^8  d   V! V ^,          R7      VRV ^,           VRV ) ^,           ,           8X  g   Q hV! 4       V8X  g   Q hV! ^V ^,          R7      VR,          VRV ^,           ,           W V ^,          ,
          ^,
          ) R ,           8X  g   Q hV ^,           R3RV ^,           ^ 3R3 F;  w  rE\        P
                  ! \        RR7      ;_uu_ 4        V! WER7       RRR4       K=  	  ^ V ^,           33 F;  w  rE\        P
                  ! \        R	R7      ;_uu_ 4        V! WER7       RRR4       K=  	  V ^8  d   R# V ^,          V ^,           ^,          ^,           33 F;  w  rE\        P
                  ! \        R
R7      ;_uu_ 4        V! WER7       RRR4       K=  	  R#   + '       g   i     EK  ; i  + '       g   i     K  ; i  + '       g   i     K{  ; i)r<   r   c                     < SP                   ! S.V O5/ VB  SP                  4       p\        P                  ! V\        P                  R 7      P                  4       # r   )rJ   rR   r*   r+   r,   r   r   s   *, r   r    test_copy_from_host.<locals>.put  sG    C1$1&1  "}}T299;;r   r   NrB   r   r   r   z6requested more to copy than available from host bufferr   r   r   r   )rI   r   r   r8   r   r    r!   )r%   r1   r   r   rC   rD   r0   rL   s   &     @@r   test_copy_from_hostr     s   !tF;HC
**,C$$T*D< 5C<<axD!G$HT1Wc)D5!8n(DDDDu||AdAg.Gc(47m#cqLN*;*<&==> 	> > !VRL(T!VQK ]]:!DF F1F F 
DF ]]:#@B B 1B B ax 
q46A+a-  ]]:#@B B 1B BF F FB B BB B Bs$   %
G10
H
H1HHH+c                  P   \         P                  ^
4      p V P                  \        P                  P
                  8X  g   Q h\        V P                  \        P                  4      '       g   Q h\        V P                  \        P                  4      '       g   Q hV P                  '       g   Q hV P                  P                  '       g   Q hV P                  \        P                  ! 4       P                  8X  g   Q hV P                  P                  '       g   Q h\        ^
RR7      w  rV P                  \        P                  P                  8X  g   Q h\        V P                  \        P                  4      '       g   Q hV P                  \        P                  P                  8X  g   Q h\        V P                  \        P                  4      '       g   Q hV P                  '       d   Q hV P                  P                  '       d   Q hV P                  P                  '       d   Q hR# )rl   r   r   N)r   r)   r   r   r   	CUDA_HOSTr   r   Devicer   MemoryManagerr   default_cpu_memory_managerrI   r   r   )r0   _s     r   test_buffer_devicer   '  s   


r
"C??b55?????cjj")),,,,c(("*:*:;;;;::::::::668????? $$$$$R9FA??b55:::::cjj")),,,,::66=====c(("*:*:;;;;zzz>zz     !!((((((r   c                    a R  oRV3R llp R	Rr!V ! W4       V ! WV^,          4       S! ^d4      w  r4VP                  \        P                  ! ^d\        P                  R7      4       VP	                  ^2\        P                  ! ^\        P                  R7      4       VP                  \        P                  ! ^\        P                  R7      4       VP                  4        \        P                  ! VP                  4       \        P                  4      p\        P                  P                  VR,          \        P                  ! ^2\        P                  R7      4       \        P                  P                  VR,          \        P                  ! ^\        P                  R7      4       \        P                  P                  VR,          \        P                  ! ^\        P                  R7      4       R# )
c                 \    \         P                  V 4      p\        P                  V4      pW3# r   )r   r8   r   BufferWriter)r%   rg   writers   &  r   allocate#test_BufferWriter.<locals>.allocate>  s*    ((.""4(|r   c                 N  < S! V 4      w  r4\        V R R7      w  rVV^ 8  d   W$n        VP                  4       pV^ 8X  g   Q hVP                  VP	                  VR7      4       VP                  4       V8X  g   Q hVP                  ^ 4       VP                  4       pV^ 8X  g   Q hWp8  d>   \        WV,
          4      pVP                  VP	                  WxR7      4       Wx,          pKC  VP                  4        VP                  V 8X  g   Q hVP                  P                  4        VP                  4       p	VP                  P                  4        V	P                  V 8X  g   Q h\        P                  ! V	\        P                  R7      p
\        P                  P!                  WZ4       R# )r<   r   rP   rO   r'   N)rI   buffer_sizetellwriterV   seekminflushr%   r   synchronizerR   r*   r+   r,   r.   r/   )
total_size	chunksizer   rg   r   r1   r0   rC   bytes_to_writer   r3   r   s   &&&        r   test_writes&test_BufferWriter.<locals>.test_writesC  sC   
+%:fE?!,;;=1}}SYYiY01{{}	)))A;;=1}}# ,ABNLL(JK&HyyJ&&&  "  "  "yyJ&&&}}T2


*r     r'   :N2   N:r   K   N:r   NNN)r   i   )
r   r*   aranger,   writeatr   r+   rR   r.   r/   )r   r   
chunk_sizerg   r   r1   r   s         @r   test_BufferWriterr   =  s&   
+: %d

'

b(89C=LD
LL3bhh/0
NN2ryy28845
LL2RXX./
LLN
--))+RXX
6CJJCHbii"((&CDJJCJ		"BHH(EFJJCHbii"((&CDr   c                  .   R p \         P                  V 4      p\        P                  V4      p\	        V RR7      w  r4VP
                  ^ 8X  g   Q h^dVn        VP
                  ^d8X  g   Q hVP                  VP                  ^ R7      4       VP                  4       ^ 8X  g   Q hVP                  VP                  ^
R7      4       ^Vn        VP
                  ^8X  g   Q hVP                  ^ 8X  g   Q hVP                  VP                  ^
RR7      4       VP                  ^ 8X  g   Q hVP                  VP                  R^R7      4       VP                  ^ 8X  g   Q hVP                  VP                  RRR7      4       VP                  VP                  R	^dR7      4       VP                  4        VP                  4       pVP                  V 8X  g   Q h\        P                  ! V\        P                  R
7      p\        P                   P#                  W64       R# )r   r<   r   r   i,  rO   i6  i  i  i  r'   N)r   r8   r   r   rI   r   r   rV   r   num_bytes_bufferedr   rR   r%   r*   r+   r,   r.   r/   )r%   rg   r   r1   r0   r   r3   s          r   test_BufferWriter_edge_casesr   p  s   D$$T*Dt$F!tF;HC"""F$$$
LL!$%;;=A
LL"%&F$$$$$)))
LL"S12$$)))
LL#c23$$)))
LL#c23
LL#c23
LLND99==RXX.DJJC&r   c                  X   R p \        V RR7      w  r\        P                  V4      pVP                  R4       VP	                  4       R8X  g   Q hVP                  ^d4      p\        V4      ^28X  g   Q hVP	                  4       R 8X  g   Q hVP                  R4       \        P                  ! ^d\        P                  R7      pVP                  V4      pV^K8X  g   Q hVP	                  4       R 8X  g   Q h\        P                  P                  VR,          VR,          4       VP                  ^ 4       VP	                  4       ^ 8X  g   Q hVP                  4       p\        P                  ! VP                  4       \        P                  R7      p\        P                  P                  W4       R# )	r   r   r   i  i  r'   :i  NN:Nr   NN)rI   r   BufferReaderr   r   readlenr*   zerosr,   readintor.   r/   read_bufferr+   rR   )r%   r1   rg   readerdatar3   nr   s           r   test_BufferReaderr     s<   D"X>ICt$F
KK;;=C;;sDt9??;;=D   
KK88Crxx(DA7N7;;=D   JJCItCy1
KKN;;=AD==**,BHH=DJJC&r   c                     \        ^ RR7      w  r\        P                  V4      pVP                  ^ 4       VP	                  4       p\        V4      ^ 8X  g   Q hVP                  4       ^ 8X  g   Q hVP                  4       p\        P                  ! VP                  4       \        P                  R7      p\        P                  P                  W4       R# )r   r   r   r'   N)rI   r   r   r   r   r   r   r   r*   r+   rR   r,   r.   r/   )r1   rg   r   r   r   r3   s         r   test_BufferReader_zero_sizer     s    "(;ICt$F
KKN;;=Dt9>>;;=AD==**,BHH=DJJC&r   c           	         \         P                  ! \         P                  ! R \         P                  ! 4       4      \         P                  ! R\         P                  ! 4       4      .4      p\         P                  ! \
        P                  P                  ^ ^V \
        P                  R7      4      p\         P                  ! \
        P                  P                  ^ ^V \
        P                  R7      4      p\         P                  ! W#.VR7      pV# )f0f1)r%   r(   schema)	r   r   fieldint16re   r*   rF   rG   record_batch)rP   r   a0a1batchs   &    r   make_recordbatchr     s    YYrxxz2rxxz24 5F	"))##Asrxx#H	IB	"))##Asrxx#H	IBOORHV4ELr   c                     \        ^
4      p V P                  4       p\        P                  V \        4      p\        P                  W P                  4      p\        V\        P                  4      '       g   Q hV P                  VP                  8X  g   Q hV P                  VP                  8X  g   Q hV P                  VP                  8X  g   Q hVP                  4       pVP                  V4      '       g   Q h\        P                  P                  W@P                  4      pVP                  VP                  4       4      '       g   Q hV P                  VP                  8X  g   Q hV P                  VP                  8X  g   Q hV P                  ^ 4      P                  VP                  ^ 4      4      '       g   Q hV P                  V4      '       g   Q hR# rl   N)r   	serializer   serialize_record_batchr   read_record_batchr   r   r   RecordBatchnum_columnsnum_rowsrR   equalsipccolumn)r   rh   rg   cbatchr0   batch2s         r   test_batch_serializer     se   R E??D&&un=D ##D,,7Ffbnn----<<6==((( 2 2222>>V__,,, 


C;;sVV%%c<<8F;;v'')**** 2 2222>>V__,,,<<?!!&--"23333<<r   c            	         \         P                  ! . R
O\         P                  ! 4       R7      p \         P                  ! ^ ^.^.. R.\         P                  ! \         P                  ! 4       4      R7      p\         P                  ! . RO\         P
                  ! R\         P                  ! 4       3R\         P                  ! 4       3.4      R7      p\         P                  P                  . RO\         P                  ! RR.4      R7      p\         P                  P                  . ROVR7      p\         P                  P                  . ROVR7      pWW#WE.p\         P                  ! \        V4       UUu. uF  w  rxRV 2VP                  3NK  	  upp4      p	\         P                  ! WiR	7      p
\         P                  P                  V
.4      pV# u uppi )r   Ntypestrsboolsfoobar)indices
dictionaryfr   )r   r^   *   N))abT)cdeF)NNN)r   r^   r^   N)r_   r^   r_   N)r_   r^   r   N)r   re   r   list_int32structutf8bool_DictionaryArrayfrom_arraysr   	enumerater   r   Tablefrom_batches)r   r   a2a3a4a5arraysr{   r1   r   r   tables               r   
make_tabler    sw   	"	4B	Aq6A3D)0D	EB	Dyy62779"5#*BHHJ"7"9 :
;B
 
			'	'88UEN+ 
( 
-B 
			'	' 
( 
B 
			'	' 
( 
B bb%FYY''FA QC#((' F OOF2EHH!!5'*ELs   0G
c                  \   \        4       p \        P                  ! 4       p\        P                  P	                  WP
                  4      ;_uu_ 4       pVP                  V 4       R R R 4       \        P                  ! VP                  4       P                  4       4      p\        P                  \        V4      4      pVP                  V\        V4      R7       \        P                  P                  \        P!                  V4      4      P#                  4       pW0WE3#   + '       g   i     L; i)N)rD   )r  r   BufferOutputStreamr   
new_streamr   write_tablerd   getvaluerv   r   r8   r   rJ   open_streamr   r   read_all)htablesinkoutrh   rL   dtables         r   make_table_cudar$    s    \F  "D			4	/	/3 
0<<2245D $$SY/DSY/VV 1 1$ 78AACF%% 
0	/s   DD+	c                     \        4       w  rr#VP                  VP                  8X  g   Q hVP                  VP                  8X  g   Q hVP                  VP                  8X  g   Q hV P	                  VP                  4       4      '       g   Q hVP	                  \        P                  P                  VP                  4       4      P                  4       4      '       g   Q hR # r   )
r$  r   r   r   r   rR   r   r   r  r  )rh   r   rL   r#  s       r   test_table_deserializer&    s     "1!2D$==FMM)))??foo---!3!3333;;t((*++++==++hj   r   c                  (   \        4       w  rr#\        P                  P                  VP                  VP
                  4      pVP                  VP                  8X  g   Q hVP                  VP                  8X  g   Q hVP                  VP                  8X  g   Q hV P                  VP                  4       4      '       g   Q hVP                  \        P                  P                  VP                  4       4      P                  4       4      '       g   Q hR # r   )r$  r   r  r  columnscolumn_namesr   r   r   r   rR   r   r  r  )rh   r   rL   r#  dtable2s        r   %test_create_table_with_device_buffersr+    s     "1!2D$hh""6>>63F3FGG==GNN***??g.....!4!4444;;t((*++++==++hj   r   c                    \         P                  P                  ^ 4      p\         P                  P                  P	                  V 4      pVP                  V4      pVP                  P                  4        VP                  4       pVP                  VP                  8X  g'   Q \        VP                  VP                  34      4       h\        P                  ! WQP                  R7      p\        P                  P                  Wa4       R# )r   r'   N)r   r   r   IpcMemHandlefrom_bufferopen_ipc_bufferr   r   rR   r%   r   r*   r+   r(   r.   r/   )handle_bufferexpected_arrother_context
ipc_handleipc_bufr0   r1   s   &&     r   other_process_for_test_IPCr5  )  s    GGOOA&M%%11-@J++J7GOO!



 C88|(((M$,:K:K/L*MM(
--#5#5
6CJJC.r   c                 $   ^ RI pVP                  R4      p\        V RR7      w  r4VP                  4       pVP	                  4       pVP                  \        Wc3R7      pVP                  4        VP                  4        VP                  ^ 8X  g   Q hR# )r   Nspawnr   r   )rA   r   )
multiprocessingget_contextrI   export_for_ipcr   Processr5  startjoinexitcode)r%   r8  rf   r1   rg   r3  r0  ps   &       r   test_IPCr@  4  s     

%
%g
.C"X>IC$$&J((*M5'- 	 	/AGGIFFH::??r   c                  *   \        ^
RR7      w  rVP                  pW"P                  3 EF  p\        P                  ! . RO4      pVP                  V4      pVP                  4       ^,          P                  '       d   Q hVP                  4       ^,          P                  \        P                  P                  8X  g   Q hVP                  4       ^,          P                  VP                  8X  g   Q hVP                  \        P                  ! 4       4      pVP                  V4      '       g   Q h\        P                  ! RV/4      pVP                  V4      pVR,          P                  4       ^,          p	V	P                  '       d   Q hV	P                  \        P                  P                  8X  g   Q hV	P                  VP                  8X  g   Q hVP                  \        P                  ! 4       4      p
V
P                  V4      '       d   EK  Q h	  R# )rl   r   r   colN)r   r^   r_   )rI   r   r   r   re   copy_tobuffersr   r   r   r   r   r   r   )r   r0   mm_cudadestr1   arr_cudaarr_roundtripr   
batch_cudabuf_cudabatch_roundtrips              r   test_copy_torL  C  s   R9FA  G..)hhy!;;t$##%a(/////!!$00B4K4K4P4PPPP!!$++w~~=== (()F)F)HI##C((((-]]4(
e$,,.q1???""##r'>'>'C'CCCC'..000$,,R-J-J-LM%%e,,,,% *r   c                     \         P                  ! R 4      p V P                  pVP                  R4      p\	        VP                  RV4      4      pVP                  R4      p\	        VP                  RV4      4      p\        P                  ! \        P                  ! 4       4      p\        P                  ! ^.^^*..VR7      p\        ^
RR7      w  rV	P                  p
VP                  V
4      pVP                  V4       VP                  ^8X  g   Q hVP                  \         P"                  8X  g   Q hVP                  P$                  ^8X  g   Q h?\        P&                  P)                  WV4      pVP*                  \        P                  ! \        P                  ! 4       4      8X  g   Q hVP                  \        P,                  ! 4       4      pVP/                  V4      '       g   Q h?\         P0                  ! \2        RR7      ;_uu_ 4        \        P&                  P)                  WV4       R	R	R	4       VP                  V
4      pVP                  WS4       ?\        P&                  P)                  WS4      pVP*                  \        P                  ! \        P                  ! 4       4      8X  g   Q hVP                  \        P,                  ! 4       4      pVP/                  V4      '       g   Q h?\         P0                  ! \2        R
R7      ;_uu_ 4        \        P&                  P)                  WS4       R	R	R	4       R	#   + '       g   i     EL; i  + '       g   i     R	# ; i)pyarrow.cffistruct ArrowSchema*	uintptr_tstruct ArrowDeviceArray*r   r   r   !Cannot import released ArrowArrayr   N"Cannot import released ArrowSchema)r   importorskipffinewintcastr   r  r	  re   rI   r   rC  _export_to_c_devicer   r   r   r   rP   Array_import_from_c_devicer   r   r   r    r!   )cffirU  c_schema
ptr_schemac_array	ptr_arraytypr1   r   r0   rE  carrcarr_newarr_news                 r   test_device_interface_arrayre  \  su   ~.D
((Cww,-HSXXk845Jgg01GCHH['23I
((288:
C
((QC!R>
,C  R9FA  G;;wD 	Y' !### < <<<<==1$$$ 	xx--i=H==BHHRXXZ0000r<<>?G>>#	z)L	M	M
&&y6 
N ;;wDY3xx--iDH==BHHRXXZ0000r<<>?G>>#	z)M	N	N
&&y= 
O	N 
N	M	M 
O	N	Ns    L; M;M	M 	c                     \         P                  ! R 4      p V P                  pVP                  R4      p\	        VP                  RV4      4      pVP                  R4      p\	        VP                  RV4      4      p\        ^
4      pVP                  p\        P                  V\        4      p\        P                  W4      p	V	P                  V4       VP                  ^8X  g   Q hVP                  \        P                  8X  g   Q hVP                   P"                  ^
8X  g   Q h?	\$        P&                  P)                  WW4      p
V
P                  V8X  g   Q hV
P+                  \$        P,                  ! 4       4      pVP/                  V4      '       g   Q h?
\         P0                  ! \2        RR7      ;_uu_ 4        \$        P&                  P)                  WW4       RRR4       \        P                  W4      p	V	P                  WS4       ?	\$        P&                  P)                  WS4      p
V
P                  V8X  g   Q hV
P+                  \$        P,                  ! 4       4      pVP/                  V4      '       g   Q h?
\         P0                  ! \2        RR7      ;_uu_ 4        \$        P&                  P)                  WS4       RRR4       \$        P4                  ! 4       P7                  V4       \         P0                  ! \2        RR7      ;_uu_ 4        \$        P&                  P)                  WS4       RRR4       R#   + '       g   i     ELf; i  + '       g   i     L; i  + '       g   i     R# ; i)	rN  rO  rP  rQ  rR  r   NrS  z%ArrowSchema describes non-struct type)r   rT  rU  rV  rW  rX  r   r   r   r   r   r   rY  r   r   r   re   rP   r   r   r[  rC  r   r   r    r!   r	  _export_to_c)r\  rU  r]  r^  r_  r`  r   r   rg   r   
cbatch_new	batch_news               r   !test_device_interface_batch_arrayrj    s   ~.D
((Cww,-HSXXk845Jgg01GCHH['23IR E\\F&&un=D##D1F y) !### < <<<<==2%%% 	55iHJ&&&""2#@#@#BCIE""""	z)L	M	M
,,Y? 
N ##D1F
y555iLJ&&&""2#@#@#BCIE""""	z)M	N	N
,,YC 
O HHJJ'	zD
F 
F
,,YC
F 
F) 
N	M	M 
O	N

F 
F 
Fs$   8 L5 M	 M5M		M	M-	c                     \        ^
4      p \        P                  V \        4      p\        P	                  WP
                  4      pV R,          pVR,          p\        V4      \        V4      8X  g   Q h\        ^d4      p \        P                  V \        4      p\        P	                  WP
                  4      pV R,          pVR,          p\        V4      \        V4      8X  g   Q hR# )rl   r   Nr   r   r   r   r   r   str)r   rg   r   r1   rb  s        r   test_print_arrayrn    s    R E&&un=D##D,,7F
+C$<Dt9C   S!E&&un=D##D,,7F
+C$<Dt9C   r   c                    \         P                  V ^,          4      p\        P                  ! V\        P                  R7      p\        V 4      VR&   \        P                  ! \        V 4      \        P                  ! 4       4      p\        P                  P                  \        P                  ! 4       V RV.4      p\        V4      \        V4      8X  g   Q hR# )   r'   r?   N)r   r)   r*   r+   int64rw   r   re   rZ  from_buffersrm  )r%   r0   np_arrr1   rb  s   &    r   test_print_array_hostrt    s    


tAv
&C]]3bhh/FdF1I
((5;

+C88  TD#;?Dt9C   r   c                 n   . p. p\        V4       Fw  p\        V 4      p\        P                  V\        4      p\        P                  WeP                  4      pVP                  VR ,          4       VP                  VR ,          4       Ky  	  \        P                  ! V4      \        P                  ! V4      3# )r   )
rw   r   r   r   r   r   r   appendr   chunked_array)n_elements_per_chunkn_chunksarrscarrsr   r   rg   r   s   &&      r   make_chunked_arrayr|    s    DE8_ !56**5.A''ll;E$K VD\"  D!2#3#3E#:::r   c                      \        ^
^4      w  r\        V4      \        V 4      8X  g   Q h\        ^d^4      w  r\        V4      \        V 4      8X  g   Q hR# r   )r|  rm  )r1   rb  s     r   test_print_chunked_arrayr~    sJ    "2q)ICt9C   "3+ICt9C   r   c                     \        ^
4      p \        P                  V \        4      p\        P	                  WP
                  4      p\        V4      \        V 4      8X  g   Q h\        ^d4      p \        P                  V \        4      p\        P	                  WP
                  4      p\        V4      \        V 4      8X  g   Q hR# r   rl  )r   rg   r   s      r   test_print_record_batchr    s    R E&&un=D##D,,7Fv;#e*$$$S!E&&un=D##D,,7Fv;#e*$$$r   c                  V    \        4       w  rr\        V4      \        V4      8X  g   Q hR # r   )r$  rm  )r   r  ctables      r   test_print_tabler    s%    )+Aav;#e*$$$r   )r   r^   r   )r<   ):__doc__rm   	sysconfigr   pyarrowr   numpyr*   ImportErrormark
pytestmarkrT  r   get_platformplatformhas_ipc_supportskipifcuda_ipcr   r	   r   r   r$   parametrizer4   r:   rI   r\   rj   rt   r~   r   r   r   r   r   r   r   r   r   r   r   r   r  r$  r&  r+  r5  r@  rL  re  rj  rn  rt  r|  r~  r  r   r   r   <module>r     s  $
    #
 >*!!#n,;;4A  C N
5, . /=-. .|> /|>~ .4 /4>6 . /6 . /4 .' /'6 .<I /<I~ fi%89..2 / :.2b .(2 /(2V),0Ef!'H'4	' 08&  $/ 
.
 / 

-22>j5Dp!  "c+! ,!
;!	%%M  #""J#s   I1 1JJ