
    <>iZ"                     l   S SK r S SKr S SKr/ SQr\ R                  " S5      r
\ R                  " S5      rS SKJr  SrSS/rS rS r\ R                  R%                  S\" \" \5      5      \S	9S
 5       rSS jr\ R                  R%                  S\" \" \5      5      \S	9\ R                  R%                  S\\S	9\ R                  R%                  S/ SQ5      S 5       5       5       r\ R                  R%                  S\" \" \5      5      \S	9\ R                  R%                  S\\S	9S 5       5       r\ R                  R%                  S\" \" \5      5      \S	9\ R                  R%                  S\\S	9S 5       5       r\ R                  R%                  S\" \" \5      5      \S	9\ R                  R%                  S\\S	9S 5       5       r\ R                  R%                  S\" \" \5      5      \S	9\ R                  R%                  S\\S	9S 5       5       rg! \ a    \ R                  R                  r GN$f = f)    N)uint8int16float32zpyarrow.cudaz
numba.cuda)DeviceNDArrayc                    [         R                  R                  S5        [        R	                  5       nUR                  5       n[        R                  5       n[        R                  R                  U5      nX4XC4/U l	        g )Ni  )
nprandomseedcudaContextto_numbanb_cudacurrent_context
from_numbacontext_choices)modulectx1nb_ctx1nb_ctx2ctx2s        d/var/www/html/land-tabula/venv/lib/python3.13/site-packages/pyarrow/tests/test_cuda_numba_interop.pysetup_moduler   $   s[    IINN4<<>DmmoG%%'G<<""7+D#o?F    c                     U ? g N)r   )r   s    r   teardown_moduler   -   s    r   c)idsc                    [         U    u  pUR                  UR                  R                  :X  d   eUR                  UR                  5       R                  R                  :X  d   e[        R
                  R                  U5      nUR                  UR                  :X  d   eSnUR                  U5      nUR                  UR                  R                  :X  d   eg )N
   )	r   handlevaluer   r   r   r   
new_buffercontext)r   ctxnb_ctxr   sizebufs         r   test_contextr)   1   s     "!$KC::,,,,,::..44444<<""6*D::$$$D
..
C::+++++r   c                    [         R                  " U5      nUS:X  ar  U S:  d   e[        R                  " XR                  -  5      n[         R
                  " XBS9n[         R                  R                  SSU [         R                  S9USS& XT4$ US:X  aH  [        U SUS9u  pTUR                  XR                  -  5      nUR                  USUR                  S	9  XV4$ [        S
5      e)z5Return a host or device buffer with random data.
    hostr   dtype   )lowhighr'   r-   Ndevice)targetr-   )positionnbyteszinvalid target value)r   r-   paallocate_bufferitemsize
frombufferr	   randintr   make_random_bufferr#   copy_from_hostr'   
ValueError)r'   r2   r-   r%   r(   arrdbufs          r   r:   r:   >   s     HHUOEqyy  nn!45mmC-""qs)+ # 3Ax	8	%d6G~~d^^34C!CHH=y
+
,,r   r-   r'   )r         i  c                    [         U    u  p4[        USXS9u  pV[        R                  U5      nUR	                  U5      nUR
                  UR
                  :X  d   e[        R                  " UR                  5       US9n	[        R                  R                  XY5        US:  Ga}  [        US-  S S 5      [        US-  US-  * S 5      4 H[  n
UR	                  Xz   5      n[        R                  " UR                  5       US9n	[        R                  R                  XZ   U	5        M]      [        R                  " [        SS9   UR	                  US S S2   5        S S S 5        US-  nX,-  nX-  U:X  d   eUR	                  UR                  X5      5      nUR
                  UR
                  :X  d   e[        R                  " UR                  5       US9n	[        R                  R                  XY5        [        R                  " [        SS9   UR	                  UR                  X5      S S 2S S S24   5        S S S 5        SnUS-  nX,U-  -  nX-  U-  U:X  d   eUR	                  UR                  XU5      5      nUR
                  UR
                  :X  d   e[        R                  " UR                  5       US9n	[        R                  R                  XY5        [        R                  " [        SS9   UR	                  UR                  XU5      S S S2   5        S S S 5         " S	 S
5      nUR	                  U" U5      5      nUR
                  UR
                  :X  d   e[        R                  " UR                  5       US9n	[        R                  R                  XY5        g ! , (       d  f       GNO= f! , (       d  f       GN= f! , (       d  f       N= f)Nr1   r2   r-   r%   r,   r@      zarray data is non-contiguous)match   c                   *    \ rS rSrS r\S 5       rSrg)test_from_object.<locals>.MyObj   c                     Xl         g r   darr)selfrK   s     r   __init__(test_from_object.<locals>.MyObj.__init__   s    Ir   c                 .    U R                   R                  $ r   )rK   __cuda_array_interface__)rL   s    r   rP   8test_from_object.<locals>.MyObj.__cuda_array_interface__   s    99555r   rJ   N)__name__
__module____qualname____firstlineno__rM   propertyrP   __static_attributes__ r   r   MyObjrG      s    	 
	6 
	6r   rY   )r   r:   r   	to_devicebuffer_from_objectr'   r   r8   copy_to_hosttestingassert_equalslicepytestraisesr<   reshape)r   r-   r'   r%   r&   r=   cbufrK   cbuf2arr2srdarrs1s2s3rY   s                   r   test_from_objectrk   Q   s8   
 "!$KC"4OIC S!D""4(E::"""==++-U;DJJC& qyat,a47T24A**473E==!3!3!5UCDJJ##CFD1	4  ]]:"@C""4!9-C
 1WXw$&&t||B';<zzTYY&&&}}U//1?


*]]:"@C""4<<#73Q3#?@C
 1WrE]w|t###&&t||BB'?@zzTYY&&&}}U//1?


*]]:"@C""4<<#;CaC#@AC6 6 ""5;/E::"""==++-U;DJJC&YC CC CC Cs$   N!+N31(O!
N03
O
Oc                 h   [         U    u  p#[        R                  " U5      nSnUR                  XAR                  -  5      n[        U4UR                  4XS9nSUS S& SUSS & [        R                  R                  UR                  5       S S S5        [        R                  R                  UR                  5       SS  S5        [        R                  R                  U5      n[        R                  " UR                  5       US9n[        R                  R                  XR                  5       5        g )Nr    gpu_datac      X   r,   )r   r   r-   memallocr7   r   r]   r^   r\   r   
CudaBufferr   r8   )	r   r-   r%   r&   r'   memrK   rc   re   s	            r   test_numba_memallocru      s     "!$KCHHUOE D
//$/
0C$5>>"3UIDD!HDHJJD--/3R8JJD--/3R8 ??%%c*D==**,E:DJJD"3"3"56r   c                    [         U    u  p#Sn[        USXS9u  pVUR                  5       n[        UR                  UR
                  UR                  US9n[        R                  R                  UR                  5       U5        g )Nr    r1   rB   rm   )r   r:   r   r   shapestridesr-   r   r]   r^   r\   )	r   r-   r%   r&   r'   r=   rc   rt   rK   s	            r   test_pyarrow_memallocry      sk     "!$KCD"4OIC --/CCKKSIDJJD--/5r   c                 ^   [         U    u  p#Sn[        R                  S      [        USXS9u  pVUR                  R
                  UR
                  R                  :X  d   eUR                  5       n[        UR                  UR                  UR                  US9n[        R                  R                  UR                  5       U5        SUS'   UR                  R!                  5         [        R"                  " UR                  5       US9n	U	S   S:X  d   e S S S 5        g ! , (       d  f       g = f)Nr    r   r1   rB   rm   ro   r,   )r   r   gpusr:   r$   r!   r"   r   r   rw   rx   r-   r   r]   r^   r\   synchronizer8   )
r   r-   r%   r&   r'   r=   rc   rt   rK   re   s
             r   test_numba_contextr}      s     "!$KCD	a&tH-2=	||""fmm&9&9999mmoSYYSYYM


 1 1 3S9Q  "}}T..0>Aw"}} 
s   C3D
D,c                    [         U    u  p#[        R                  S 5       nSn[        USXS9u  pgSnUR                  US-
  -   U-  n	UR                  5       n
[        UR                  UR                  UR                  U
S9nXIU4   " U5        UR                  R                  5         [        R                  " UR                  5       UR                  S9n[        R                  R!                  XS-   5        g )	Nc                 f    [         R                  S5      nXR                  :  a  X==   S-  ss'   g g )Nr?   )r   gridr'   )an_arrayposs     r   increment_by_one*test_pyarrow_jit.<locals>.increment_by_one   s*    ll1oMQM r   r    r1   rB       r?   rm   r,   )r   r   jitr:   r'   r   r   rw   rx   r-   r$   r|   r   r8   r\   r]   r^   )r   r-   r%   r&   r   r'   r=   rc   threadsperblockblockspergridrt   rK   arr1s                r   test_pyarrow_jitr      s     "!$KC[[  D"4OICOXX1!45/IM
--/CCKKSIDO34T:LL==**,CII>DJJD'*r   )r+   r   N)r`   pyarrowr5   numpyr   ImportErrormark
pytestmarkdtypesimportorskipr   r   numba.cuda.cudadrv.devicearrayr   r   context_choice_idsr   r   parametrizerangelenr)   r:   rk   ru   ry   r}   r   rX   r   r   <module>r      s  $  # 
'>*


l
+ 8 $l3 @ eC(:$;</  1,1,-& eC(:$;</  1&f51H' 2 61H'V eC(:$;</  1&f57 617( eC(:$;</  1&f56 616 eC(:$;</  1&f5 61  eC(:$;</  1&f5+ 61+K  #""J#s   H H32H3