
    z-Phg                        d dl Z d dlZd dlZd dlZ	 d dlmZ n# e$ r dZY nw xY wd dlZ	 d dl	Z
d dlmZ n# e$ r dxZ
ZY nw xY we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j                  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        2                    d$e0e1g          d%                         Z3ed&             Z4ed'             Z5ej        2                    d( ej6                     ej7        d) ej6                               ej8        d) ej6                    i          gg d*+          d,             Z9ej        2                    d- ej:        g d.          d/  ej6                     ej;                    f ej<         ej:        g d.          gd0g1          d2  ej8        d0 ej6                    i           ej8        d0 ej;                    i          fgd3d4g+          d5             Z=ej        2                    d- ej:        g d.          d6  ej6                     ej;                    f ej<         ej:        g d.          gd0g1          d7  ej8        d0 ej6                    i           ej8        d0 ej;                    i          fgd3d4g+          d8             Z>ej        2                    d9ej?        j@        d: gd;d<g+          d=             ZAd> ZBd? ZCd@ ZDdA ZEedB             ZFdS )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                            t          j        |           |          dk    S N   )ctypes	pythonapiPyCapsule_IsValid	py_object)capsulenames     W/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/pyarrow/tests/test_cffi.pyr   r   3   s,    --f.>w.G.GNNRSSS    c              #      K   t          j        |            	 d V  t          j        | j                   d S # t          j        | j                   w xY wN)paregister_extension_typeunregister_extension_typeextension_name)ext_types    r   registered_extension_typer   7   sY      x(((>
$X%<=====$X%<====s	   7 Ac                   P     e Zd Z fdZed             Zd Zed             Z xZ	S )ParamExtTypec                 ~    || _         t                                          t          j        |          d           d S )Nz$pyarrow.tests.test_cffi.ParamExtType)_widthsuper__init__r   binary)selfwidth	__class__s     r   r   zParamExtType.__init__B   sD    5))?	A 	A 	A 	A 	Ar   c                     | j         S r   )r   r!   s    r   r"   zParamExtType.widthG   s
    {r   c                 N    t          | j                                                  S r   )strr"   encoder%   s    r   __arrow_ext_serialize__z$ParamExtType.__arrow_ext_serialize__K   s    4:%%'''r   c                 Z    t          |                                          } | |          S r   )intdecode)clsstorage_type
serializedr"   s       r   __arrow_ext_deserialize__z&ParamExtType.__arrow_ext_deserialize__N   s)    J%%''((s5zzr   )
__name__
__module____qualname__r   propertyr"   r)   classmethodr0   __classcell__)r#   s   @r   r   r   @   s        A A A A A
   X( ( (   [    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   s=    9vrx

3345&	24 4 4 4r   c                  R    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   s3    9ul1oo./&	24 4 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   ^   s6    9ul1oo:;<&	24 4 4 4r   c                  P    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                            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   sf    "$$FQin''&&1A68ill)D )D )D E 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   sN    ]]F
1#2w(&11
$QF+,f55 r   c                 *   t          j                    5 }t           j                            ||           5 }|D ]}|                    |           	 d d d            n# 1 swxY w Y   |                                cd d d            S # 1 swxY w Y   d S r   )r   BufferOutputStreamipc
new_streamwritegetvalue)r=   batchessinkoutbatchs        r   make_serializedrd   w   s   			 	  DVtV,, 	!  ! !		%    !	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! }}	                 s4   !BABA!	!B$A!	%BBBc                     t          j        d          } t          t          j        d|                     }t	          j                     t          j                    }t          j        t          j	                              }|
                    |           t          j                    |k    sJ ~t          j                    |k    sJ t          j                            |          }|t          j        t          j	                              k    sJ t          j                    |k    sJ t          5  t          j                            |           d d d            n# 1 swxY w Y   t          j	                    
                    |           t          j        dd          }|| _        t          j        t"          d          5  t          j                            |           d d d            n# 1 swxY w Y   t          5  t          j                            |           d d d            d S # 1 swxY w Y   d S )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   w,--HSXk84455JJLLL,..M
(28::

CZ   #%%5555#%%5555k((44Gbhrxzz******#%%6666	 / /
"":.../ / / / / / / / / / / / / / / HJJJ'''6**J HO	zC
E 
E 
E / /
"":.../ / / / / / / / / / / / / / / 
  / /
"":.../ / / / / / / / / / / / / / / / / /s6   4 E  E$'E$ G44G8;G8 H33H7:H7c                  0   t          j        d          } t          t          j        d|                     }t	          j                     t          j                    }t          j        dt          j	        t          j
                              d          }|                    |           t          j                    |k    sJ ~t          j                    |k    sJ t          j                            |          }|t          j        dt          j	        t          j
                              d          k    sJ t          j                    |k    sJ t          5  t          j                            |           d d d            d S # 1 swxY w Y   d S )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   w,--HSXk84455JJLLL,..MHVRXbhjj11DAAAE	z"""#%%5555#%%5555''
33I"(**)=)=MMMMMMM#%%6666 
  , ,

+++, , , , , , , , , , , , , , , , , ,s    F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|          }	|	                                }
 ||	|           t          j                    |k    sJ ~	 |||          }|                                |
k    sJ |j        t          j        t          j	                              k    sJ t          j                    |k    sJ ~~t          j                    |k    sJ t          5   ||t          j        t          j	                                         d d d            n# 1 swxY w Y   t          j
        dgddggt          j        t          j	                                        }	|	                                }
 ||	||           ~	 |||          }|                                |
k    sJ |j        t          j        t          j	                              k    sJ t          j                    |k    sJ ~t          j                    |k    sJ t          5   |||           d d d            d S # 1 swxY w Y   d S )	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      sH   w,--HSXk84455Jg-
---..GCH['2233IJLLL,..M (28::

C
(QC!R>
,
,
,C}}HHS)#%%5555hy#&&G(****<28BHJJ//////#%%5555#%%6666	 2 2BHRXZZ001112 2 2 2 2 2 2 2 2 2 2 2 2 2 2 (QC!R>(<(<
=
=
=C}}HHS)Z(((hy*--G(****<28BHJJ//////#%%5555#%%6666	 ( (J'''( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (s$   "0GG"%G"K33K7:K7c                  d    t          dt          j        j        t          j        j                   d S N
ArrowArray)r   r   Arrayrm   ro   r@   r   r   test_export_import_arrayr      s1    

    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        dk    sJ | j        dk    sJ | j	        j        dk    sJ d S )	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    
$
&   g011GCH['2233I
(QC!R>(<(<
=
=
=CI&&&!####""""=1$$$$$$r   c                    || }t          j        d          }t          t          j        d|                    }t	          j                     t          j                    } |                                 |           t          j                    |k    sJ t          j	        
                    |          }| |            k    sJ t          j                    |k    sJ ~t          j                    |k    sJ t          5  t          j	        
                    |           d d d            n# 1 swxY w Y   t          j                                        |           t          j        t          d          5  t          j	        
                    |           d d d            n# 1 swxY w Y   t          5  t          j	        
                    |           d d d            d S # 1 swxY w Y   d S )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w,--HSXk84455JJLLL,..MN!!*---#%%5555))*55J00222222#%%6666#%%6666	 - -
	  ,,,- - - - - - - - - - - - - - - HJJJ'''	zD
F 
F 
F - -
	  ,,,- - - - - - - - - - - - - - - 
  - -
	  ,,,- - - - - - - - - - - - - - - - - -s6     D,,D03D08 F$$F(+F(6 G##G'*G'c                  .    t          t                     d S 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            d S # 1 swxY w Y   d S r   )r   rF   rH   r   r   r@   r   r   (test_export_import_schema_with_extensionr   %  s     4<> > > 
#<??	3	3 : :"#8999: : : : : : : : : : : : : : : : : :s   AA Ac                     t          j        d          } t          t          j        d|                     }d}t	          j        t          |          5  t                                          t          |                     d d d            n# 1 swxY w Y   t	          j        t          |          5  t          j                            t          |                    }d d d            n# 1 swxY w Y   |t                      k    sJ d S )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  so    w,--HSXk84455J:E	k	/	/	/ 6 6""5#4#45556 6 6 6 6 6 6 6 6 6 6 6 6 6 6	k	/	/	/ A AY--eJ.?.?@@
A A A A A A A A A A A A A A A&&&&&&s$   /BBB5-C..C25C2c                    t          j        d          }t          t          j        d|                    }t          j        d|  d          }t          t          j        d|                    }t	          j                     t          j                    } |            }	|	j        }
|		                                } ||	|           t          j                    |k    sJ ~	 |||
          }|	                                |k    sJ |j        |
k    sJ t          j                    |k    sJ ~~
t          j                    |k    sJ t          5   ||t                                 d d d            n# 1 swxY w Y    |            }	|		                                }|	                    ||           ~	 |||          }|	                                |k    sJ |j         |            j        k    sJ t          j                    |k    sJ ~t          j                    |k    sJ t          5   |||           d d d            n# 1 swxY w Y   t          j                                        |            |                                |           t          j        t"          d          5   |||           d d d            n# 1 swxY w Y   t          5   |||           d d d            d S # 1 swxY w Y   d S )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   ?  s   w,--HSXk84455Jg-
---..GCH['2233IJLLL,..M MOOE\F  HHUI#%%5555F++I  H,,,,v%%%%#%%55556#%%6666	 + +KMM***+ + + + + + + + + + + + + + + MOOE  H	y*---J//I  H,,,,}}55555#%%5555#%%6666	 ( (J'''( ( ( ( ( ( ( ( ( ( ( ( ( ( ( HJJJ'''MOO  +++	zD
F 
F 
F ( (J'''( ( ( ( ( ( ( ( ( ( ( ( ( ( ( 
  ( (J'''( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (sH   E55E9<E9/III1K

KKK66K:=K:c                  p    t          dt          j        j        t          j        j        t
                     d S r   )r   r   RecordBatchrm   ro   rM   r@   r   r   test_export_import_batchr   u  s4    
#
%	    r   c                      t          t          d                    5  t          dt          j        j        t          j        j        t                     d d d            d S # 1 swxY w Y   d S )Nr	   r   )r   r   r   r   r   rm   ro   rT   r@   r   r   'test_export_import_batch_with_extensionr     s    	"<??	3	3 
 
!N'N) 		
 	
 	

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
s   6A  A$'A$c                  z   t          dt          j        j        t          j        j        t
                     t          j        d          } t          t          j	        d|                     }t                      }|                    |           | j
        dk    sJ | j        dk    sJ | j        j        dk    sJ d S )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    
*
,	   g011GCH['2233ILLE	i(((!####""""=1$$$$$$r   c                    t                      }|d         j        } |||          }|                    |            ~~t          j                            |           }|j        |k    sJ t          |          }~|t                      k    sJ t          t                      }|d         j        }t          j        	                    |          
                                } |||          }|                    |            ~~t          j                            |           }|                                }~t          j        ||           d S d S )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     sA   nnGQZF^FG,,F

###%44Z@@J&&&&z""K,..(((( 
~.."h++G44>>@@00J'''G)88DD
''))
k622222 ~r   c                 \    t           j                            t          | |                    S r   )r   r\   open_streamrd   r=   r`   s     r   make_ipc_stream_readerr     s"    6ofg>>???r   c                 B    t           j                            | |          S r   )r   r   r   r   s     r   make_py_record_batch_readerr     s    ,,VW===r   r   c                    t          j        d          }t          t          j        d|                    }t	          j                     t          j                    }t          ||            t          j                    |k    sJ t          5  t          j
                            |           d d d            d S # 1 swxY w Y   d S )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    
 w122HSXk84455JJLLL,..M
N;;;#%%6666 
  8 8
++J7778 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8s    B::B>B>c                     t          j        d          } t          t          j        d|                     }t	          j                     t          j                    }d }t          j        	                    t                       |                      }|                    |           t          j                            |          }t          j        t                    5 }|                                 d d d            n# 1 swxY w Y   dt#          |j                  v sJ dt#          |j                  v sJ dt#          |j                  v sJ t          j                    |k    sJ d S )Nr   rg   c               3   l   K   	 	 t          d          # t           $ r} t          d          | d } ~ ww xY w)NTfoobar)rt   NotImplementedErrorrY   )es    r   genz0test_export_import_exception_reader.<locals>.gen  sM      	&8 ''' 8 8 8)%00a78s    
3.3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    w122HSXk84455JJLLL,..M& & & #00FFH*%%%!00<<F	*	+	+ !x   ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! HN 3 33333%X^)<)<<<<<&#hn*=*=====#%%666666s   !DD	D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	        
                    |d d                   }|                    |           ~t          j                            |          }|                                }||d         k    sJ t          j        t"          d	
          5  |                                 d d d            n# 1 swxY w Y   t          j	        
                    |d d                   }|                    |           ~t          j                            |          }t          j        t"          d	
          5  |                                 d d d            d S # 1 swxY w Y   d S )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     si   w122HSXk84455JY

+,--F			{6:::			{6:::<G
&'
*
*C VDSD	**F

###%44Z@@J&&((EGAJ	w7
8 
8 
8 % % 	""$$$% % % % % % % % % % % % % % % VDSD	**F

###%44Z@@J	w7
8 
8 
8   	                 s$   :EE"EG??HHobjr   )rP   r   r=   )idsc                    t          j                     t          j                    }|                                 }t          |d          dk    sJ t          j                    |k    sJ t          |                               |          }|| k    sJ t          j                    |k    sJ |                                 }t          j                    |k    sJ ~t          j                    |k    sJ d S )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     JLLL,..M$$&&GWo66!;;;;#%%55553ii..w77Gc>>>>#%%6666$$&&G#%%5555#%%666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        }|                                 \  }}t          |d          dk    sJ t          |d          dk    sJ  |||          }|                    |           sJ t          j                    |k    sJ ~t          j                    |k    sJ |                                 }t          j                    |k    sJ ~t          j                    |k    sJ t          j
        t          d          5  |                     |                                           d d d            n# 1 swxY w Y   |                     |                                          \  }}	 |||	          } ||          |k    sJ d S )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  s    JLLL,..M993L!3355NG^_==BBBBWn55::::l>733G>>##%%5555#%%6666##%%G#%%5555#%%6666	zM
O 
O 
O = =h99;;<<<= = = = = = = = = = = = = = = %($9$9$$&&%( %(!NMl>=99G?7##y000000   6(E**E.1E.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        }|                                 \  }}t          |d          dk    sJ t          |d          dk    sJ  |||          }|                    |           sJ t          j                    |k    sJ ~t          j                    |k    sJ | 	                                }t          j                    |k    sJ ~t          j                    |k    sJ t          j        t          d          5  |                     |                                           d d d            n# 1 swxY w Y   |                     |                                          \  }}	 |||	          } ||          |k    sJ d S )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  ^  s"    JLLL,..M99:L!::<<NG^_==BBBBW&;<<AAAAl>733G>>##%%5555#%%6666##%%G#%%5555#%%6666	zM
O 
O 
O D D$$X%@%@%B%BCCCD D D D D D D D D D D D D D D %($@$@$$&&%( %(!NMl>=99G?7##y000000r  constructorc                 B    t           j                            ||           S r   )r   r   r   r   s     r   r   r     s    BH11'6BB r   recordbatchreadertablec                    t                      }|d         j        }t          j                     t	          j                    } | ||          }|                                }t          |d          dk    sJ t          j        	                    |          }|j        |k    sJ t          |          }t          |          t          |          k    sJ t          ||          D ]\  }}	|                    |	          sJ ~~~~	~t	          j                    |k    sJ  | ||          }t	          j        dt	          j                    i          }
t          j        t          j        j        d          5  |                    |
                                           d d d            n# 1 swxY w Y   t	          j        dt	          j        t	          j                              i          }|                    |                                          }t          j        	                    |          }|j        |k    sJ t          ||          D ]\  }}	|                    |	          sJ d S )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    nnGQZFJLLL,..M
+fg
&
&C$$&&GW&;<<AAAA*AA'JJO!V++++O,,  CLL0000/99 & &x||H%%%%%%_eX/?#%%6666
+fg
&
&CFBHJJ/00J	rv,4L	M	M	M @ @z<<>>???@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ i"(**)=)= >??O$$_%G%G%I%IJJG*AA'JJO!_444488 & &x||H%%%%%%& &s   8(F,,F03F0c                  t   t                      } t          j        dt          j        t          j                              fg          }|                                }|                     |          }|                     |          }t          |d          dk    sJ t          j	        
                    |          }|j        |k    sJ |                                                    |          sJ t          j        t                    5  |                                 d d d            d S # 1 swxY w Y   d S )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`   LLEy628BHJJ+?+?"@!ABB(;;==$455&&'899GW&;<<AAAA*AA'JJO!%55555**,,334FGGGGG	}	%	% * *'')))* * * * * * * * * * * * * * * * * *s   D--D14D1c                     t                      } |                                 }t          |d          dk    sJ t          j                            |          }|j        | j        k    sJ |                                                    |           sJ t          j
        t                    5  |                                 d d d            d S # 1 swxY w Y   d S )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   LLE&&((GW&;<<AAAA*AA'JJO!U\1111**,,33E:::::	}	%	% * *'')))* * * * * * * * * * * * * * * * * *s   ,CCCc                     t          j        t          j        g d          g          } |                                 }t	          |d          dk    sJ t           j                            |          }|j        | j        k    sJ || k    sJ d S )Nr   r  r	   )r   chunked_arrayrR   r  r   ChunkedArrayr   rP   )chunkedr   imported_chunkeds      r   $test_roundtrip_chunked_array_capsuler3    s     9 9:;;G((**GW&;<<AAAA==gFF GL0000w&&&&&&r   c                     t          j        t          j        g d          g          } | j                                        }|                     |          }t           j                            |          }|| k    sJ t          j                    }|                                }|                     |          }t           j                            |          }|| 	                    t          j                              k    sJ t          j
                    }|                                }t          j        t          d          5  |                     |           d d d            d S # 1 swxY w Y   d S )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 9:;;G  7799(():;;G==gFFw&&&& Y[[N&99;;(():;;G==gFFw||BIKK888888XZZN&99;;	I
 
 
 6 6 	""#45556 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6s   E++E/2E/c                     	 dd l } t          j        d           n# t          $ r Y nw xY wt	          j        d          }t          t	          j        d|                    }t          j	        g dt          j
                              }|                    |           d|_        t          j        t          d	          5  t          j                            ||j                   d d d            d S # 1 swxY w Y   d S )
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<    sF   1 	/0000    
 g011GCH['2233I
(99928::
.
.
.CI&&& G	{*R	S	S	S < <
&&y#(;;;< < < < < < < < < < < < < < < < < <s    
((&C44C8;C8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  &      				              
CCC    NB [t'J   L L
 ':< < <  &9; ; ;  ';= = = T T T > > >    2#   (4 4 4
4 4 4
4 4 4< < <. . .     / / /@ , , ,.)( )( )(X    % % %$- - - -@ , , , : : : ' ' '3( 3( 3(l    
 
 
 % % %$3 3 3@@ @ @> > > )0578 88 88 8 8  7 7 7B   D XRXeXRXZZ-H-H!*E828::+>!?!?!A888  : :7 7: :7& ARXooo 0 0("(**ibikkJ///223C5AAA	3

#$$	3		$%%	D 	   " "1 1" "1B ARXooo 0 0("(**ibikkJ///223C5AAA	3

#$$	3		$%%	D 	   " "1 1" "1D %BB) 	W%	  ' '
"& "&' '
"&J* * *	* 	* 	*' ' '6 6 60 < < < < <s    ##
6 	AA