
    gg                        d dl 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mZ ej                  j                  edu d      Z ej"                  ed      Z ej"                  ed      Z ej"                  ed      Zd	 Ze j.                  d
        Z G d dej2                        Zd Zd Zd Zd Zd Zd Z d Z!ed        Z"ed        Z#d Z$ed        Z%ed        Z&dCdZ'ed        Z(ed        Z)ed        Z*d Z+ed        Z,ed        Z-ed         Z.d! Z/d" Z0d# Z1eej                  je                  d$e0e1g      d%               Z3ed&        Z4ed'        Z5ej                  je                  d( ejl                          ejn                  d) ejl                                ejp                  d) ejl                         i      gg d*+      d,        Z9ej                  je                  d- ejt                  g d.      d/  ejl                          ejv                         f ejx                   ejt                  g d.      gd0g1      d2  ejp                  d0 ejl                         i       ejp                  d0 ejv                         i      fgd3d4g+      d5        Z=ej                  je                  d- ejt                  g d.      d6  ejl                          ejv                         f ejx                   ejt                  g d.      gd0g1      d7  ejp                  d0 ejl                         i       ejp                  d0 ejv                         i      fgd3d4g+      d8        Z>ej                  je                  d9ej~                  j                  d: gd;d<g+      d=        ZAd> ZBd? ZCd@ ZDdA ZEedB        ZFy# e$ r dZY w xY w# e$ r dxZ
ZY w xY w)D    N)ffiz!test needs cffi package installed)reasonz"Cannot import released ArrowSchemamatchz!Cannot import released ArrowArrayz#Cannot import released Arrow Streamc                 n    t         j                  j                  t        j                  |       |      dk(  S N   )ctypes	pythonapiPyCapsule_IsValid	py_object)capsulenames     L/var/www/openai/venv/lib/python3.12/site-packages/pyarrow/tests/test_cffi.pyr   r   3   s,    --f.>.>w.GNRSSS    c              #      K   t        j                  |        	 d  t        j                  | j                         y # t        j                  | j                         w xY wwN)paregister_extension_typeunregister_extension_typeextension_name)ext_types    r   registered_extension_typer   7   sD     x(>
$$X%<%<=$$X%<%<=s   A!=  A!!AA!c                   D     e Zd Z fdZed        Zd Zed        Z xZ	S )ParamExtTypec                 Z    || _         t        | 	  t        j                  |      d       y )Nz$pyarrow.tests.test_cffi.ParamExtType)_widthsuper__init__r   binary)selfwidth	__class__s     r   r   zParamExtType.__init__B   s&    5)?	Ar   c                     | j                   S r   )r   r!   s    r   r"   zParamExtType.widthG   s    {{r   c                 H    t        | j                        j                         S r   )strr"   encoder%   s    r   __arrow_ext_serialize__z$ParamExtType.__arrow_ext_serialize__K   s    4::%%''r   c                 D    t        |j                               } | |      S r   )intdecode)clsstorage_type
serializedr"   s       r   __arrow_ext_deserialize__z&ParamExtType.__arrow_ext_deserialize__N   s    J%%'(5zr   )
__name__
__module____qualname__r   propertyr"   r)   classmethodr0   __classcell__)r#   s   @r   r   r   @   s6    A
  (  r   r   c                      t        j                  dt        j                  t        j                               fgddi      S )Nints   key1   value1metadata)r   schemalist_int32 r   r   make_schemarA   T   s4    99vrxx
345&	24 4r   c                  L    t        j                  dt        d      fgddi      S Next   r9   r:   r;   )r   r=   r   r@   r   r   make_extension_schemarF   Y   s)    99ul1o./&	24 4r   c                  `    t        j                  dt        d      j                  fgddi      S rC   )r   r=   r   r.   r@   r   r   make_extension_storage_schemarH   ^   s/    99ul1o::;<&	24 4r   c                  J    t        j                  dgddgggt                     S )Nr	      *   )r   record_batchrA   r@   r   r   
make_batchrM   d   s"    ??aS1b'N+[];;r   c                      t               } | d   j                  j                  t        j                  ddgt        j
                  d                  }t        j                  |g|       S )Nr   s   foos   barrE   type)rF   rP   
wrap_arrayr   arrayr    rL   )r=   ext_cols     r   make_extension_batchrT   h   sT    "$FQinn''&&1A68iil)D EG??G9f--r   c                      t               } t        j                  dgddggg|       t        j                  d g ddggg|       gS )Nr	   rJ   rK         )rA   r   rL   r=   s    r   make_batchesrY   o   sJ    ]F
1#2w(&1
$QF+,f5 r   c                    t        j                         5 }t         j                  j                  ||       5 }|D ]  }|j	                  |        	 d d d        |j                         cd d d        S # 1 sw Y   "xY w# 1 sw Y   y xY wr   )r   BufferOutputStreamipc
new_streamwritegetvalue)r=   batchessinkoutbatchs        r   make_serializedrd   w   sd    				 DVVtV, 		%  ! - }}	 
!	 ,, 
!	 s"   !A=A1A=1A:	6A==Bc                  `   t        j                  d      } t        t        j                  d|             }t	        j
                          t        j                         }t        j                  t        j                               }|j                  |       t        j                         |kD  sJ ~t        j                         |kD  sJ t        j                  j                  |      }|t        j                  t        j                               k(  sJ t        j                         |k(  sJ t        5  t        j                  j                  |       d d d        t        j                         j                  |       t        j                  dd      }|| _        t        j                   t"        d      5  t        j                  j                  |       d d d        t        5  t        j                  j                  |       d d d        y # 1 sw Y   xY w# 1 sw Y   DxY w# 1 sw Y   y xY w)Nstruct ArrowSchema*	uintptr_tzchar[]s   zzzz$Invalid or unsupported format stringr   )r   newr+   castgccollectr   total_allocated_bytesr>   r?   _export_to_cDataType_import_from_cassert_schema_releasedformatpytestraises
ValueError)c_schema
ptr_schemaold_allocatedtyptyp_new
bad_formats         r   test_export_import_typer{      s   ww,-HSXXk845JJJL,,.M
((288:
CZ ##%555##%555kk((4Gbhhrxxz****##%666	
"":. 
  HHJJ'6*J HO	zC
E
"":.
E 
 
"":. 
 	 
 	
E 
E 
 	s$   2 H5 H# H$HH!$H-c                  &   t        j                  d      } t        t        j                  d|             }t	        j
                          t        j                         }t        j                  dt        j                  t        j                               d      }|j                  |       t        j                         |kD  sJ ~t        j                         |kD  sJ t        j                  j                  |      }|t        j                  dt        j                  t        j                               d      k(  sJ t        j                         |k(  sJ t        5  t        j                  j                  |       d d d        y # 1 sw Y   y xY w)Nrf   rg   testT)nullable)r   rh   r+   ri   rj   rk   r   rl   fieldr>   r?   rm   Fieldro   rp   )ru   rv   rw   r   	field_news        r   test_export_import_fieldr      s   ww,-HSXXk845JJJL,,.MHHVRXXbhhj1DAE	z"##%555##%555''
3I"((*)=MMMM##%666 
 

+ 
 		s    FFc                    t        j                  d      }t        t        j                  d|            }t        j                  d|  d      }t        t        j                  d|            }t	        j
                          t        j                         }t        j                  t        j                               }t        j                  dgddgg|      }	|	j                         }
 ||	|       t        j                         |kD  sJ ~	 |||      }|j                         |
k(  sJ |j                  t        j                  t        j                               k(  sJ t        j                         |kD  sJ ~~t        j                         |k(  sJ t        5   ||t        j                  t        j                                      d d d        t        j                  dgddggt        j                  t        j                                     }	|	j                         }
 ||	||       ~	 |||      }|j                         |
k(  sJ |j                  t        j                  t        j                               k(  sJ t        j                         |kD  sJ ~t        j                         |k(  sJ t        5   |||       d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)	Nrf   rg   struct *r	   rJ   rK   rO   )r   rh   r+   ri   rj   rk   r   rl   r>   r?   rR   	to_pylistrP   assert_array_releasedrp   )
array_typeexporterimporterru   rv   c_array	ptr_arrayrw   rx   arrpy_valuearr_news               r   check_export_import_arrayr      sA   ww,-HSXXk845Jgg
|1-.GCHH['23IJJL,,.M ((288:
C
((QC!R>
,C}}HS)##%555y#&G(***<<288BHHJ////##%555##%666	BHHRXXZ01 
 ((QC!R>(<
=C}}HS)Z(y*-G(***<<288BHHJ////##%555##%666	J' 
 	! 
	  
 	s   /K9
KKK"c                  ~    t        dt        j                  j                  t        j                  j                         y N
ArrowArray)r   r   Arrayrm   ro   r@   r   r   test_export_import_arrayr      s'    

r   c                     t        dt        j                  j                  t        j                  j                         t        j                  d      } t        t        j                  d|             }t        j                  dgddggt        j                  t        j                                     }|j                  |       | j                  dk(  sJ | j                  dk(  sJ | j                  j                  dk(  sJ y )	NArrowDeviceArraystruct ArrowDeviceArray*rg   r	   rJ   rK   rO   )r   r   r   _export_to_c_device_import_from_c_devicer   rh   r+   ri   rR   r>   r?   device_type	device_idlength)r   r   r   s      r   test_export_import_device_arrayr      s    
$$
&& gg01GCHH['23I
((QC!R>(<
=CI&!###"""==1$$$r   c                    || }t        j                  d      }t        t        j                  d|            }t	        j
                          t        j                         } |        j                  |       t        j                         |kD  sJ t        j                  j                  |      }| |       k(  sJ t        j                         |k(  sJ ~t        j                         |k(  sJ t        5  t        j                  j                  |       d d d        t        j                         j                  |       t        j                  t        d      5  t        j                  j                  |       d d d        t        5  t        j                  j                  |       d d d        y # 1 sw Y   xY w# 1 sw Y   DxY w# 1 sw Y   y xY w)Nrf   rg   %ArrowSchema describes non-struct typer   )r   rh   r+   ri   rj   rk   r   rl   rm   Schemaro   rp   r?   rr   rs   rt   )schema_factoryexpected_schema_factoryru   rv   rw   
schema_news         r   check_export_import_schemar      s`   &"0ww,-HSXXk845JJJL,,.M!!*-##%555))*5J02222##%666##%666	
		  , 
  HHJJ'	zD
F
		  ,
F 
 
		  , 
 	 
 	

F 
F 
 	s$   4 F1 F= G	1F:=G	Gc                  "    t        t               y r   )r   rA   r@   r   r   test_export_import_schemar      s
    {+r   c                      t        t        t               t        t	        d            5  t        t               d d d        y # 1 sw Y   y xY wr   )r   rF   rH   r   r   r@   r   r   (test_export_import_schema_with_extensionr   %  s5     4<> 
#<?	3"#89 
4	3	3s   AAc                     t        j                  d      } t        t        j                  d|             }d}t	        j
                  t        |      5  t               j                  t        |             d d d        t	        j
                  t        |      5  t        j                  j                  t        |            }d d d        t               k(  sJ y # 1 sw Y   exY w# 1 sw Y   %xY w)Nrf   rg   z,Passing a pointer value as a float is unsafer   )r   rh   r+   ri   rr   warnsUserWarningrA   rm   floatr   r   ro   )ru   rv   r   r   s       r   'test_export_import_schema_float_pointerr   0  s     ww,-HSXXk845J:E	k	/""5#45 
0	k	/YY--eJ.?@
 
0&&&	 
0	/	/	/s   #C)C%C"%C.c                    t        j                  d      }t        t        j                  d|            }t        j                  d|  d      }t        t        j                  d|            }t	        j
                          t        j                         } |       }	|	j                  }
|	j                         } ||	|       t        j                         |kD  sJ ~	 |||
      }|j                         |k(  sJ |j                  |
k(  sJ t        j                         |kD  sJ ~~
t        j                         |k(  sJ t        5   ||t                      d d d         |       }	|	j                         }|	j                  ||       ~	 |||      }|j                         |k(  sJ |j                   |       j                  k(  sJ t        j                         |kD  sJ ~t        j                         |k(  sJ t        5   |||       d d d        t        j                         j                  |        |       j                  |       t        j                   t"        d      5   |||       d d d        t        5   |||       d d d        y # 1 sw Y   <xY w# 1 sw Y   xY w# 1 sw Y   ;xY w# 1 sw Y   y xY w)Nrf   rg   r   r   r   r   )r   rh   r+   ri   rj   rk   r   rl   r=   	to_pydictr   rA   rm   rp   r?   rr   rs   rt   )r   r   r   batch_factoryru   rv   r   r   rw   rc   r=   r   	batch_news                r   check_export_import_batchr   ?  sZ   ww,-HSXXk845Jgg
|1-.GCHH['23IJJL,,.M OE\\F HUI##%555F+I H,,,v%%%##%5556##%666	KM* 
 OE H	y*-J/I H,,,}55555##%555##%666	J' 
  HHJJ'O  +	zD
FJ'
F 
 J' 
 	5 
	  
 	
F 
F 
 	s0   J?
J%
J)=
J5JJ&)J25J>c                      t        dt        j                  j                  t        j                  j                  t
               y r   )r   r   RecordBatchrm   ro   rM   r@   r   r   test_export_import_batchr   u  s*    
##
%%	r   c                      t        t        d            5  t        dt        j                  j
                  t        j                  j                  t               d d d        y # 1 sw Y   y xY w)Nr	   r   )r   r   r   r   r   rm   ro   rT   r@   r   r   'test_export_import_batch_with_extensionr     sB    	"<?	3!NN''NN)) 		
 
4	3	3s   AA!!A*c                     t        dt        j                  j                  t        j                  j                  t
               t        j                  d      } t        t        j                  d|             }t               }|j                  |       | j                  dk(  sJ | j                  dk(  sJ | j                  j                  dk(  sJ y )Nr   r   rg   r	   r   rJ   )r   r   r   r   r   rM   r   rh   r+   ri   r   r   rR   r   )r   r   rc   s      r   test_export_import_device_batchr     s    
**
,,	 gg01GCHH['23ILE	i(!###"""==1$$$r   c                 b   t               }|d   j                  } |||      }|j                  |        ~~t        j                  j                  |       }|j                  |k(  sJ t        |      }~|t               k(  sJ t        t               }|d   j                  }t        j                  j                  |      j                         } |||      }|j                  |        ~~t        j                  j                  |       }|j                         }~t        j                  ||       y y )Nr   )rY   r=   rm   r   RecordBatchReaderro   listpdTablefrom_batches	to_pandasread_pandastmassert_frame_equal)	
ptr_streamreader_factoryr`   r=   reader
reader_newgot_batchesexpected_dfgot_dfs	            r   _export_import_batch_readerr     s   nGQZFFG,F

#%%44Z@J&&&z"K,.((( 
~.""hh++G4>>@0J'G))88D
'')
k62 r   c                 T    t         j                  j                  t        | |            S r   )r   r\   open_streamrd   r=   r`   s     r   make_ipc_stream_readerr     s    66ofg>??r   c                 B    t         j                  j                  | |      S r   )r   r   r   r   s     r   make_py_record_batch_readerr     s    ,,VW==r   r   c                 z   t        j                  d      }t        t        j                  d|            }t	        j
                          t        j                         }t        ||        t        j                         |k(  sJ t        5  t        j                  j                  |       d d d        y # 1 sw Y   y xY w)Nstruct ArrowArrayStream*rg   )r   rh   r+   ri   rj   rk   r   rl   r   assert_stream_releasedr   ro   )r   c_streamr   rw   s       r   test_export_import_batch_readerr     s    
 ww12HSXXk845JJJL,,.M
N;##%666 
 
++J7 
 		s    B11B:c                     t        j                  d      } t        t        j                  d|             }t	        j
                          t        j                         }d }t        j                  j                  t                |             }|j                  |       t        j                  j                  |      }t        j                  t              5 }|j!                          d d d        dt#        j$                        v sJ dt#        |j$                        v sJ dt#        |j$                        v sJ t        j                         |k(  sJ y # 1 sw Y   nxY w)Nr   rg   c               3   ^   K   	 	 t        d      # t         $ r} t        d      | d } ~ ww xY ww)Nfoobar)rt   NotImplementedErrorrY   )es    r   genz0test_export_import_exception_reader.<locals>.gen  s5     8 '' 8)%0a78s   - 	*%*-zValueError: foozNotImplementedError: barzraise ValueError('foo'))r   rh   r+   ri   rj   rk   r   rl   r   r   rA   rm   ro   rr   rs   r   read_next_batchr'   value)r   r   rw   r   originalr   exc_infos          r   #test_export_import_exception_readerr     s    ww12HSXXk845JJJL,,.M& ##00FH*%!!00<F	*	+x  
, HNN 3333%X^^)<<<<&#hnn*====##%666 
,	+s   EEc                     t        j                  d      } t        t        j                  d|             }t	        j
                  dt	        j                         fg      }t	        j                  g dg|      t	        j                  g dg|      g}t        ||      }t        j                  j                  |d d       }|j                  |       ~t        j                  j                  |      }|j                         }||d   k(  sJ t        j                   t"        d	
      5  |j                          d d d        t        j                  j                  |d d       }|j                  |       ~t        j                  j                  |      }t        j                   t"        d	
      5  |j%                          d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)Nr   rg   r   r	   rJ   rE   rX   )   rV   rW   ir   z<Expected to be able to read 16 bytes for message body, got 8r   )r   rh   r+   ri   r   r=   r?   rL   rd   r\   r   rm   r   ro   r   rr   rs   OSErrorread_all)r   r   r=   r`   bufr   r   rc   s           r    test_imported_batch_reader_errorr     s   ww12HSXXk845JYY
+,-F	{6:	{6:<G
&'
*C VVDS	*F

#%%44Z@J&&(EGAJ	w7
8 	""$
8 VVDS	*F

#%%44Z@J	w7
8 	
8 
8
8 
8
8 
8s   'G.GGGobjr   )rP   r   r=   )idsc                    t        j                          t        j                         }| j	                         }t        |d      dk(  sJ t        j                         |kD  sJ t        |       j                  |      }|| k(  sJ t        j                         |k(  sJ | j	                         }t        j                         |kD  sJ ~t        j                         |k(  sJ y )N   arrow_schemar	   )rj   rk   r   rl   __arrow_c_schema__r   rP   _import_from_c_capsule)r   rw   r   obj_outs       r   test_roundtrip_schema_capsuler     s     JJL,,.M$$&GWo6!;;;##%5553i..w7Gc>>##%666$$&G##%555##%666r   z&arr,schema_accessor,bad_type,good_typeabcc                     | j                   S r   rO   xs    r   <lambda>r   5      !&&r   r   )namesc                     | j                   S r   rX   r   s    r   r   r   8      !((r   rR   rL   c                    t        j                          t        j                         }t	        |       j
                  }| j                         \  }}t        |d      dk(  sJ t        |d      dk(  sJ  |||      }|j                  |       sJ t        j                         |kD  sJ ~t        j                         |k(  sJ | j                         }t        j                         |kD  sJ ~t        j                         |k(  sJ t        j                  t        d      5  | j                  |j                                d d d        | j                  |j                               \  }}	 |||	      } ||      |k(  sJ y # 1 sw Y   BxY w)Nr   r	   s   arrow_array-Could not cast.* string to requested .* int32r   )rj   rk   r   rl   rP   r   __arrow_c_array__r   equalsrr   rs   rt   r   
r   schema_accessorbad_type	good_typerw   import_arrayschema_capsuler   arr_outarray_capsules
             r   test_roundtrip_array_capsuler  4  ss    JJL,,.M933L!335NG^_=BBBWn5:::>73G>>###%555##%666##%G##%555##%666	zM
Oh99;<
O %($9$9$$&%(!NM>=9G7#y000
O 
O     FF
c                     | j                   S r   rO   r   s    r   r   r   _  r   r   c                     | j                   S r   rX   r   s    r   r   r   b  r   r   c                    t        j                          t        j                         }t	        |       j
                  }| j                         \  }}t        |d      dk(  sJ t        |d      dk(  sJ  |||      }|j                  |       sJ t        j                         |kD  sJ ~t        j                         |k(  sJ | j                         }t        j                         |kD  sJ ~t        j                         |k(  sJ t        j                  t        d      5  | j                  |j                                d d d        | j                  |j                               \  }}	 |||	      } ||      |k(  sJ y # 1 sw Y   BxY w)Nr   r	   s   arrow_device_arrayr  r   )rj   rk   r   rl   rP   _import_from_c_device_capsule__arrow_c_device_array__r   r  r  rr   rs   rt   r   r  s
             r   #test_roundtrip_device_array_capsuler  ^  st    JJL,,.M9::L!::<NG^_=BBBW&;<AAA>73G>>###%555##%666##%G##%555##%666	zM
O$$X%@%@%BC
O %($@$@$$&%(!NM>=9G7#y000
O 
Or  constructorc                 B    t         j                  j                  ||       S r   )r   r   r   r   s     r   r   r     s    BHH11'6Br   recordbatchreadertablec                    t               }|d   j                  }t        j                          t	        j
                         } | ||      }|j                         }t        |d      dk(  sJ t        j                  j                  |      }|j                  |k(  sJ t        |      }t        |      t        |      k(  sJ t        ||      D ]  \  }}	|j                  |	      rJ  ~~~~	~t	        j
                         |k(  sJ  | ||      }t	        j                  dt	        j                         i      }
t        j                   t        j"                  j$                  d      5  |j                  |
j'                                d d d        t	        j                  dt	        j(                  t	        j                               i      }|j                  |j'                               }t        j                  j                  |      }|j                  |k(  sJ t        ||      D ]  \  }}	|j                  |	      rJ  y # 1 sw Y   xY w)Nr      arrow_array_streamr	   r8   zField 0 cannot be castr   )rY   r=   rj   rk   r   rl   __arrow_c_stream__r   r   r   r   lenzipr  r?   rr   rs   libArrowTypeErrorr   r>   )r  r`   r=   rw   r   r   imported_readerimported_batchesrc   expected
bad_schemamatching_schemas               r   test_roundtrip_reader_capsuler$    s    nGQZFJJL,,.M
fg
&C$$&GW&;<AAA**AA'JO!!V+++O, CL000/9x||H%%% : 	_eX/?##%666
fg
&CFBHHJ/0J	rvv,,4L	Mz<<>? 
N ii"((*)= >?O$$_%G%G%IJG**AA'JO!!_4448x||H%%% 9 
N	Ms   & II
c                  6   t               } t        j                  dt        j                  t        j                               fg      }|j                         }| j                  |      }| j                  |      }t        |d      dk(  sJ t        j                  j                  |      }|j                  |k(  sJ |j                         j                  |      sJ t        j                  t              5  |j                          d d d        y # 1 sw Y   y xY w)Nr8   r  r	   )rM   r   r=   r>   int64r   ri   r  r   r   r   r   r  rr   rs   StopIteration)rc   requested_schemarequested_capsulebatch_as_requestedr   r  s         r   4test_roundtrip_batch_reader_capsule_requested_schemar+    s    LEyy6288BHHJ+?"@!AB(;;=$45&&'89GW&;<AAA**AA'JO!!%5555**,334FGGG	}	%'') 
&	%	%s   5DDc                     t               } | j                         }t        |d      dk(  sJ t        j                  j                  |      }|j                  | j                  k(  sJ |j                         j                  |       sJ t        j                  t              5  |j                          d d d        y # 1 sw Y   y xY w)Nr  r	   )rM   r  r   r   r   r   r=   r   r  rr   rs   r'  )rc   r   r  s      r   #test_roundtrip_batch_reader_capsuler-    s    LE&&(GW&;<AAA**AA'JO!!U\\111**,33E:::	}	%'') 
&	%	%s    B::Cc                     t        j                  t        j                  g d      g      } | j                         }t	        |d      dk(  sJ t         j
                  j                  |      }|j                  | j                  k(  sJ || k(  sJ y )Nr   r  r	   )r   chunked_arrayrR   r  r   ChunkedArrayr   rP   )chunkedr   imported_chunkeds      r   $test_roundtrip_chunked_array_capsuler3    s}     9:;G((*GW&;<AAA==gF  GLL000w&&&r   c                     t        j                  t        j                  g d      g      } | j                  j	                         }| j                  |      }t         j                  j                  |      }|| k(  sJ t        j                         }|j	                         }| j                  |      }t         j                  j                  |      }|| j                  t        j                               k(  sJ t        j                         }|j	                         }t        j                  t        d      5  | j                  |       d d d        y # 1 sw Y   y xY w)Nr   z-Could not cast string to requested type int64r   )r   r/  rR   rP   r   r  r0  r   r    ri   r&  rr   rs   rt   )r1  r)  r   r2  requested_types        r   5test_roundtrip_chunked_array_capsule_requested_schemar6    s    9:;G  779(():;G==gFw&&& YY[N&99;(():;G==gFw||BIIK8888XXZN&99;	I
 	""#45
 
 
s   8EEc                     	 dd l } t        j                  d       t	        j
                  d      }t        t	        j                  d|            }t        j                  g dt        j                               }|j                  |       d|_        t        j                  t        d	      5  t        j                  j                  ||j                          d d d        y # t        $ r Y w xY w# 1 sw Y   y xY w)
Nr   zpyarrow.cuda is availabler   rg   r   rO   rJ   z&Trying to import data on a CUDA devicer   )pyarrow.cudarr   skipImportErrorr   rh   r+   ri   r   rR   r&  r   r   rs   r   r   rP   )pyarrowr   r   r   s       r   test_import_device_no_cudar<    s    1 	/0gg01GCHH['23I
((9288:
.CI& G	{*R	S
&&y#((; 
T	S   
T	Ss   C! -+C0!	C-,C-0C9r   )G
contextlibr
   rj   r;  r   pyarrow.cffir   r:  rr   pandasr   pandas.testingtestingr   markskipif
needs_cffirs   rt   rp   r   r   r   contextmanagerr   ExtensionTyper   rA   rF   rH   rM   rT   rY   rd   r{   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   parametrizer   r   r   r?   r   r=   r   rR   stringrL   r  r  r   r   r$  r+  r-  r3  r6  r<  r@   r   r   <module>rI     s  &   	   
 [[t'J   L
 ':<  &9;  ';= T > >2## (4
4
4<. / /@ , ,.)(X   % %$-@ , , : : ' '3(l   
 
 % %$3@@> )057888 8  7 7B  D XRXXeXRXXZ-H!*E8288:+>!?!A8  :7:7& ARXXo 0("((*ibiikJ/23C5A		3
#$		3			$%	D 	   "1"1B ARXXo 0("((*ibiikJ/23C5A		3
#$		3			$%	D 	   "1"1D %%B) 	W%	  '
"&'
"&J*	*'60 < <o  
C  NBs"   N< 
O
 <OO
	OO