
    g                     8   d dl mZ d dlZd dlZd dlZd dlZd dlZd dlZd dlZd dl	Z		 d dl
Zd dlZd dlmZmZ 	 d dlmZ d dlZ G d d      Z G d de      Z G d	 d
e      Z G d de      Zej4                  d        Zej4                  d        Zej4                  d        Z ej4                   ej<                  dd       ej<                  dd      g      d        Zd Z d Z!d Z"ejF                  jI                  dd d g      d        Z%d Z&ejF                  j(                  d        Z'd  Z(d! Z)ejF                  j(                  ejF                  jT                  d"               Z+ejF                  j(                  d#        Z,d$ Z-ejF                  jI                  d%ej\                  j_                         ej\                  j_                  d&'      g      d(        Z0d) Z1ejF                  jI                  d%ej\                  j_                         ej\                  j_                  d&'      g      d*        Z2d+ Z3ejF                  j(                  d,        Z4ejF                  j(                  d-        Z5ejF                  jI                  d.d&d/g      d0        Z6ejF                  jn                  d1        Z8d2 Z9d3 Z:ejF                  jI                  d%ej\                  jw                         ej\                  jw                  d/4      ej\                  jw                  d/5      ej\                  jw                  ej\                  jx                  jz                  6      ej\                  jw                  d/ej\                  jx                  jz                  7      g      d8        Z>d9 Z?d: Z@d; ZAd< ZBd= ZCejF                  j(                  d>        ZDej4                  d?        ZEd@ ZFdA ZGdB ZHejF                  j                  dC        ZJdD ZKdE ZLdF ZM G dG dHej                        ZO G dI dJe      ZPej4                  dK        ZQejF                  j                  dL        ZSejF                  j                  dM        ZTejF                  j(                  dN        ZUejF                  j(                  dO        ZVejF                  j(                  ejF                  jI                  dPdQdRg      dS               ZWdT ZXejF                  j(                  dU        ZYejF                  j(                  dfdV       ZZejF                  j(                  dW        Z[ejF                  j(                  dX        Z\ejF                  j(                  dY        Z]ejF                  j(                  dZ        Z^ejF                  j(                  d[        Z_ejF                  j(                  d\        Z`ejF                  j(                  d]        Zad^ Zbd_ Zcd` Zdda Zedb Zfdc Zgdd Zhde Ziy# e$ r dZY w xY w# e$ r Y w xY w)g    )UserListN)changed_environinvoke_script)assert_frame_equalc                   0    e Zd ZdZd fdZd Zd ZddZy)
IpcFixtureNc                  *    t        j                         S NioBytesIO     K/var/www/openai/venv/lib/python3.12/site-packages/pyarrow/tests/test_ipc.py<lambda>zIpcFixture.<lambda>/   s
    BJJLr   c                 <    || _         | j                         | _        y r
   )_sink_factoryget_sinksink)selfsink_factorys     r   __init__zIpcFixture.__init__/   s    )MMO	r   c                 "    | j                         S r
   )r   r   s    r   r   zIpcFixture.get_sink3   s    !!##r   c                 6    | j                   j                         S r
   )r   getvaluer   s    r   
get_sourcezIpcFixture.get_source6   s    yy!!##r   c                 p   d}t        j                  dt        j                         fdt        j                         fg      }| j	                  | j
                  |      }g }t        |      D ]W  }t        j                  t        |      D cg c]  }t        j                          c}g dg|      }	|j                  |	       Y |r1t         j                  j                  |      }
|j                  |
       n|D ]  }	|j                  |	        |j                  | _        |j!                          |S c c}w )N   onetwo)fooNbarbazbazquxschema)par'   float64utf8_get_writerr   rangerecord_batchrandomappendTablefrom_batcheswrite_tablewrite_batchstatswrite_statsclose)r   num_batchesas_tablenrowsr'   writerbatchesi_batchtables              r   write_batcheszIpcFixture.write_batches9   s    UBJJL1E27793EFG!!$))V4{#AOO+0<8<a&--/<868E NN5! $ HH))'2Eu% ""5) ! "<< 9s   
D3
)r   F)__name__
__module____qualname__r5   r   r   r   r@   r   r   r   r   r   ,   s    K$8 $$$r   r   c                   "    e Zd ZdZdZd ZddZy)FileFormatFixtureTNc                 Z    t         j                  j                  ||| j                        S )Noptions)r(   ipcnew_filerH   r   r   r'   s      r   r+   zFileFormatFixture._get_writerX   s    vvtVT\\BBr   c                    | j                  |      }t        j                  | j                               }t        j                  j                  |      }|j                  t        |      k(  sJ t        |      D ]V  \  }}|j                  |      }||   j                  |      sJ |j                  j                  |d   j                        rVJ  t        |j                  t        j                  j                        sJ t        | j                  t        j                  j                         sJ t#        |j                        t#        | j                        k(  sJ y )Nr8   r   )r@   r(   BufferReaderr   rI   	open_filenum_record_batcheslen	enumerate	get_batchequalsr'   
isinstancer4   	ReadStatsr5   
WriteStatstuple)r   r8   r;   file_contentsreaderr<   r>   s          r   _check_roundtripz"FileFormatFixture._check_roundtrip[   s   $$h$7(9:!!-0((CL888!'*HAu$$Q'E1:$$U+++==''
(9(9:::	 + &,,(8(8999$**BFF,=,=>>>V\\"eD,<,<&====r   F)rA   rB   rC   is_filerH   r+   r[   r   r   r   rE   rE   S   s    GGC>r   rE   c                       e Zd ZdZdZdZd Zy)StreamFormatFixtureFNc                 p    t         j                  j                  ||| j                  | j                        S )N)use_legacy_formatrH   )r(   rI   
new_streamuse_legacy_ipc_formatrH   rK   s      r   r+   zStreamFormatFixture._get_writerv   s4    vv  "88LL	 ! 
 	
r   )rA   rB   rC   rc   rH   r]   r+   r   r   r   r_   r_   n   s     "GG
r   r_   c                       e Zd Zd Zy)MessageFixturec                 .    t        j                  ||      S r
   r(   RecordBatchStreamWriterrK   s      r   r+   zMessageFixture._get_writer       ))$77r   N)rA   rB   rC   r+   r   r   r   re   re      s    8r   re   c                      t               S r
   )r   r   r   r   ipc_fixturerk      s
    <r   c                      t               S r
   )rE   r   r   r   file_fixturerm      s    r   c                      t               S r
   )r_   r   r   r   stream_fixturero            r   rm   zFile Format)idro   zStream Format)paramsc                 8    | j                  | j                        S r
   )getfixturevalueparam)requests    r   format_fixturerw      s     ""7==11r   c                      d} t        j                  t        j                        5  t        j                  j                  t        j                  |              d d d        y # 1 sw Y   y xY wNr   )pytestraisesr(   ArrowInvalidrI   rO   rN   bufs    r   test_empty_filer      s>    
C	r	'
-. 
(	'	's   3A""A+c                 (    | j                  d       y )NFrM   r[   rm   s    r   test_file_simple_roundtripr      s    !!5!1r   c                 (    | j                  d       y )NTrM   r   r   s    r   test_file_write_tabler      s    !!4!0r   r   c                  *    t        j                         S r
   r   r   r   r   r   r      s
    BJJLr   c                  *    t        j                         S r
   )r(   BufferOutputStreamr   r   r   r   r      s    B!!#r   c                 B   t        |       }|j                         }t        j                  |j	                               }t        j
                  j                  |      }|j                         }t        j                  j                  |      }|j                  |      sJ y r
   )rE   r@   r(   rN   r   rI   rO   read_allr0   r1   rT   )r   fixturer;   rY   rZ   resultexpecteds          r   test_file_read_allr      sy    
  -G##%GOOG$6$6$89MVVm,F__Fxx$$W-H=="""r   c                 \   | j                          | j                         }t        j                  j	                  |      }t        j                  j	                  t        j
                  |            }t        j                  |      }|j                         }|j                         }|j                         }|j                  |      sJ |j                  |      sJ |j                  }|j                  dk(  sJ |j                  dk(  sJ |j                  |k(  sJ |j                  |k(  sJ y N   r   )r@   r   r(   rI   rO   rN   RecordBatchFileReaderr   rT   r4   num_messagesrP   )	rm   sourcereader1reader2reader3result1result2result3st1s	            r   test_open_file_from_bufferr      s     $$&Fffv&Gffrv67G&&v.G G G G>>'""">>'"""
--Cq   !!Q&&&==C==Cr   c                 j   | j                         D cg c]  }|j                          }}t        j                  | j	                               }t        j
                  j                  |      }|j                         }t        j                  |      j                  d      }t        ||       y c c}w NT)drop)r@   	to_pandasr(   rN   r   rI   rO   read_pandaspdconcatreset_indexr   )rm   r>   framesrY   rZ   r   r   s          r   test_file_read_pandasr      s    -9-G-G-IJ-IEeoo-IFJOOL$;$;$=>MVVm,F!Fyy ,,$,7Hvx( Ks   B0c                    | j                          | j                         }|j                  d      j                  }t	        |d      5 }|j                  |       d d d        t        j                  j                  t        j                  |            j                         }t        j                  j                  t        j                  |            j                         }|j                  |      sJ y # 1 sw Y   xY w)N
file.arrowwb)r@   r   joinstrpathopenwriter(   rI   rO   pathlibPathr   OSFilerT   )rm   tmpdirr   pathft1t2s          r   test_file_pathlibr      s     $$&F;;|$,,D	dD	Q	 
 
		',,t,	-	6	6	8B			"))D/	*	3	3	5B99R== 
	s   C66C?c                      t        j                  d      } t        j                  t        j
                        5  t        j                  j                  |        d d d        y # 1 sw Y   y xY wry   )r   r   rz   r{   r(   r|   rI   open_streamr}   s    r   test_empty_streamr      s=    
**S/C	r	'
3 
(	'	's    A""A+c                    t        j                         }t        j                  t        j                  d|      g      }| j	                  d      j
                  }t        j                  |d      5 }t         j                  j                  ||      5 }t        j                  dg|      }t        j                  |g|      }|j                  |       ddd       ddd       t        d|       y# 1 sw Y   xY w# 1 sw Y   "xY w)zARROW-15783: Verify to_pandas works for interval types.

    Interval types require static structures to be enabled. This test verifies
    that they are when no other library functions are invoked.
    numsr   r            typeNzread_record_batch.py)r(   month_day_nano_intervalr'   fieldr   r   r   rI   rJ   arrayr-   r   r   )r   mdn_interval_typer'   r   r   r:   interval_arrayr>   s           r   "test_read_year_month_nano_intervalr      s     224YY):;<=F;;|$,,D	4	$VV__T6*fXXyk8IJNOO^$4f=ELL + 

 ($/	 +* 
	s%   0!C;AC/C;/C8	4C;;Dc           
      j   t        j                  t        j                  j	                  d      t        j
                  dt        j                  dddgddgd      d      }t        j                  j                  |      }| j                  | j                  |j                        5 }|j                  |       d d d        t        j                  j                  t        j                   | j#                                     j%                         }t'        |j)                         |       y # 1 sw Y   rxY w)Nr   r"   r#   T
categoriesorderedr    r!   )r   	DataFramenpr.   randnCategoricalnanr(   RecordBatchfrom_pandasr+   r   r'   r3   rI   r   rN   r   r   r   r   )ro   dfr>   wrr?   s        r   !test_stream_categorical_roundtripr     s    	yyq!~~ubffeUEB*/&*, 
B NN&&r*E		#	#N$7$7	F"
u 
G VV0I0I0K LMhj 
u("- 
G	Fs   &D))D2c                    | j                          | j                         }t        j                  j	                  |      }t        j                  j	                  t        j
                  |            }t        j                  |      }|j                         }|j                         }|j                         }|j                  |      sJ |j                  |      sJ |j                  }|j                  dk(  sJ |j                  dk(  sJ |j                  |k(  sJ |j                  |k(  sJ t        |      t        | j                        k(  sJ y r   )r@   r   r(   rI   r   rN   RecordBatchStreamReaderr   rT   r4   r   rP   rX   r5   )	ro   r   r   r   r   r   r   r   r   s	            r   test_open_stream_from_bufferr     s     "&&(Fff  (Gff  !89G((0G G G G>>'""">>'"""
--Cq   !!Q&&&==C==C:~99::::r   rH   Fuse_threadsc                 H   | j                          | j                         }t        j                  j	                  ||      }|j                          |j                  }|j                  dk(  sJ |j                  dk(  sJ t        |      t        | j                        k(  sJ y NrG   r   r   )r@   r   r(   rI   r   r   r4   r   rP   rX   r5   )ro   rH   r   rZ   sts        r   test_open_stream_optionsr   6  s    
   "&&(FVV8F
OO	B??a  A%%%9n889999r   c                     | j                          | j                         }t        j                  t              5  t
        j                  j                  |d       d d d        y # 1 sw Y   y xY wNTrG   )r@   r   rz   r{   	TypeErrorr(   rI   r   )ro   r   s     r   #test_open_stream_with_wrong_optionsr   H  sK      "&&(F	y	!
640 
"	!	!   "A%%A.c                    | j                          | j                         }t        j                  j	                  ||      }|j                          |j                  }|j                  dk(  sJ |j                  dk(  sJ y r   )	r@   r   r(   rI   rO   r   r4   r   rP   )rm   rH   r   rZ   r   s        r   test_open_file_optionsr   P  sp    
  $$&FVVfg6F
OO	B??a  A%%%r   c                     | j                          | j                         }t        j                  t              5  t
        j                  j                  |d       d d d        y # 1 sw Y   y xY wr   )r@   r   rz   r{   r   r(   rI   rO   )rm   r   s     r   !test_open_file_with_wrong_optionsr   a  sK     $$&F	y	!
. 
"	!	!r   c           
          t        j                  t        j                  j	                  d      t        j
                  dt        j                  dddgddgd      d      }t        j                  j                  |d      }t        j                  j                  |d      }| j                  | j                  |j                        5 }|j                  |       |j                  |       d d d        t        j                  j!                  t        j"                  | j%                                     j'                         }t)        |j+                         t        j,                  ||gd	             y # 1 sw Y   xY w)
Nr   r"   r#   Tr   r   Fpreserve_indexignore_index)r   r   r   r.   r   r   r   r(   r0   r   r   r+   r   r'   r   rI   r   rN   r   r   r   r   r   )ro   r   r?   r>   r   s        r   test_stream_write_dispatchr   i  s    
yyq!~~ubffeUEB*/&*, 
B HH  E :ENN&&r%&@E		#	#N$7$7	F"

 
G VV0I0I0K LMhj 
u(yy"b=? 
G	Fs   	#E44E=c           
      0   t        j                  dt        j                  j	                  d      i      }t
        j                  j                  |d d d      }t
        j                  j                  |d      }t
        j                  j                  |||g      }| j                  | j                  |j                        5 }|j                  |d       d d d        t        t
        j                  j!                  | j#                                     }t        t%        t&        |            g dk(  sJ t
        j                  j                  |      }t)        |j+                         t        j,                  |d d ||d d gd	
             y # 1 sw Y   xY w)Nr       
   Fr      )max_chunksize)r   r   r   r   Tr   )r   r   r   r.   r   r(   r   r   r0   r1   r+   r   r'   r2   listrI   r   r   maprQ   r   r   r   )ro   r   b1b2r?   r   r;   result_tables           r   test_stream_write_table_batchesr   ~  sB    
ryyr" 
B 
	#	#BsGE	#	BB		#	#Bu	#	=BHH!!2r2,/E		#	#N$7$7	F"
uB/ 
G 266%%n&?&?&ABCGC!"o55588((1L|--/yy"Sb'2r#2w!7.245 
G	Fs   FFrc   Tc                    || _         | j                         }t        j                  | j	                               }t        j
                  j                  |      }|j                  j                  |d   j                        sJ d}t        |      D ]   \  }}|j                  ||         sJ |dz  }" |t        |      k(  sJ t        j                  t              5  |j                          d d d        y # 1 sw Y   y xY wNr   r   )rc   r@   r(   rN   r   rI   r   r'   rT   rR   rQ   rz   r{   StopIterationread_next_batch)ro   rc   r;   rY   rZ   totalr<   
next_batchs           r   test_stream_simple_roundtripr     s    +@N(**,GOON$=$=$?@MVV.F==
 1 1222E"6*:  ,,,
 + CL   	}	%  
&	%	%s   C77D c                  (   t        j                         } t        d      D cg c]  }t        j                  dd       }}t
        j                  j                  |gdg      }t
        j                  j                  d      }t
        j                  j                  | |j                  |      5 }|j                  |       d d d        t        | j                               }t        j                         }t        j                  dd	
      }t
        j                  j                  |      }t
        j                  j                  ||j                  |      5 }|j                  |       d d d        t        |j                               }	|	|k7  sJ t
        j                  j!                  |       j#                         }
t
        j                  j!                  |      j#                         }|
|k(  sJ y c c}w # 1 sw Y   ;xY w# 1 sw Y   xY w)Ni'  r   r   valuesnameszstdcompressionrG   r   )compression_level)r   r   r,   r.   randintr(   r0   from_arraysrI   IpcWriteOptionsRecordBatchFileWriterr'   r2   rQ   r   CodecrO   r   )r   r=   r  r?   rH   r:   len1sink2codeclen2r   r   s               r   test_compression_roundtripr    s   ::<D,1%L9LqfnnQ"LF9HH  &( <Eff$$$8G		%	%%,, 
& 
14:5!
1 t}}DJJLEHHVq1Eff$$$7G		%	%5<< 
& 
25;5!
2 u~~ D
 4<<			$		(	(	*B			%	 	)	)	+B8O83 :
1 
1
2 
2s   G60G;H;HHc                     t         j                  j                         } | j                  du sJ | j                  du sJ | j
                  t         j                  j                  j                  k(  sJ d| _        | j                  du sJ d| _        | j                  du sJ t         j                  j                  j                  | _        | j
                  t         j                  j                  j                  k(  sJ dD ]1  }t        j                  t        t        f      5  || _        d d d        3 | j                  J dD ]`  }t         j                  j                  |      s#|| _        | j                  |k(  sJ |j!                         | _        | j                  |k(  r`J  d | _        | j                  J t        j                  t              5  d| _        d d d        | j"                  du sJ d| _        | j"                  du sJ t         j                  j                  d      rt         j                  j                  t         j                  j                  j                  dddd      } | j
                  t         j                  j                  j                  k(  sJ | j                  du sJ | j                  du sJ | j                  dk(  sJ | j"                  du sJ y y # 1 sw Y   xY w# 1 sw Y   xY w)NFT)V5*   )lz4r  r   r  )metadata_versionallow_64bitra   r  r   )r(   rI   r  r  ra   r  MetadataVersionr  V4rz   r{   r   
ValueErrorr  r  is_availableupperr   )rH   values     r   test_write_optionsr    s   ff$$&G%'''$$---##rvv'='='@'@@@@G$&&& $G$$,,,!vv5588G##rvv'='='@'@@@@]]Iz23',G$ 43  &&& 88  '"'G&&%///"'++-G&&%/// ! G&&&	y	! 
" $&&&G%'''	xxU#&&((VV3366" )  ''266+A+A+D+DDDD""d***((D000""e+++""e+++ $) 43 
"	!s    K%K2%K/	2K<c                     t        j                  t        d      5  d| _        t        j
                  j                         | _        | j                          d d d        y # 1 sw Y   y xY w)Nz4provide at most one of options and use_legacy_formatmatchT)	rz   r{   r  rc   r(   rI   r  rH   r@   )ro   s    r   #test_write_options_legacy_exclusiver#    sS    	H
J 04,!#!7!7!9$$&
J 
J 
Js   ;A  A))r  )ra   )r  )ra   r  c                    d | _         || _        | j                         }t        j                  | j                               }t        j                  j                  | j                               }|j                  |j                  k(  sJ t        j                  j                  |      }|j                  j                  |d   j                        sJ d}t        |      D ]   \  }}|j                  ||         sJ |dz  }" |t        |      k(  sJ t        j                  t               5  |j#                          d d d        y # 1 sw Y   y xY wr   )rc   rH   r@   r(   rN   r   rI   read_messager  r   r'   rT   rR   rQ   rz   r{   r   r   )	ro   rH   r;   rY   messagerZ   r   r<   r   s	            r   test_stream_options_roundtripr'    s    ,0N($N**,GOON$=$=$?@Mff!!.";";"=>G##w'?'????VV.F==
 1 1222E"6*:  ,,,
 + CL   	}	%  
&	%	%s   ,EEc                  J   t         j                  j                         } | j                  du sJ | j                  du sJ | j
                  g k(  sJ d| _        | j                  du sJ d| _        | j                  du sJ ddg| _        | j
                  ddgk(  sJ t        j                  t              5  d | _        d d d        t         j                  j                  dddg      } | j                  du sJ | j                  du sJ | j
                  dgk(  sJ y # 1 sw Y   _xY w)NTFr   r   )r   ensure_native_endianincluded_fields)	r(   rI   IpcReadOptionsr   r)  r*  rz   r{   r   rG   s    r   test_read_optionsr,  #  s3   ff##%G$&&&''4///""b(((#(G ''5000G%''' !fG""q!f,,,	y	!"& 
" ff## $ G %'''''5000""qc))) 
"	!s   3DD"c                    t         j                  j                         }t         j                  j                  dg      }t         j                  j	                  t        j
                  g d      t        j
                  g d      gddg      }| j                  | j                  |j                        5 }|j                  |       d d d        | j                         }t         j                  j                  ||      }t         j                  j                  ||t        j                         	      }|j                         }|j                         }	|j                  d
k(  sJ |	j                  dk(  sJ t         j                  j	                  t        j
                  g d      gdg      }
|	|
k(  sJ ||k(  sJ y # 1 sw Y   xY w)Nr   )r*  r"   r#   bazr%   r   r   r      abr  rG   )rH   memory_poolr   )r(   rI   r+  r0   r
  r   r+   r   r'   r2   r   r   system_memory_poolr   num_columns)ro   options1options2r?   r   r   r   r   r   r   r   s              r   !test_read_options_included_fieldsr9  >  s~   vv$$&Hvv$$aS$9HHH  "((+G"H!#,!7"9(+Sz ! 3E 
	#	#N$7$7	F"
u 
G&&(Fff   :Gff  b.C.C.E ! GG  G G!###!###xx##RXXl%;$<SE#JHhe! 
G	Fs   5F==Gc           	          t        j                  t        j                         t        j                               }g dg dddgg dddgg}|D cg c]:  }t         j                  j                  t        j                  ||      gdg	      < }}|d d
 }|d   j                  d fd	} j                  rit        j                  t         j                        5   ||       d d d        t        j                  t         j                        5   ||       d d d        nL ||      }|j                  dk(  sJ |j                  d
k(  sJ |j                  dk(  sJ |j                  dk(  sJ d  _        t         j"                  j%                  d       _         j                  r5t        j                  t         j                        5   ||       d d d        nL ||      }|j                  dk(  sJ |j                  d
k(  sJ |j                  dk(  sJ |j                  dk(  sJ  ||      }|j                  d
k(  sJ |j                  dk(  sJ |j                  dk(  sJ |j                  dk(  sJ t         j"                  j%                  d       _         ||d      }|j                  dk(  sJ  j                  r4|j                  dk(  sJ |j                  dk(  sJ |j                  dk(  sJ y |j                  d
k(  sJ |j                  dk(  sJ |j                  dk(  sJ y c c}w # 1 sw Y   IxY w# 1 sw Y   xY w# 1 sw Y   )xY w)N)r"   r"   N)r"   r#   r"   r"   r#   )r"   Nr#   quuxr;  r   dictsr  r1  r   c                 &   j                  t        j                               5 }|r1t        j                  j	                  |       }|j                  |       n| D ]  }|j                  |        |j                  cd d d        S # 1 sw Y   y xY wr
   )r+   r(   MockOutputStreamr0   r1   r2   r3   r4   )r;   r8   r:   r?   r>   rw   r'   s        r   r@   z,test_dictionary_delta.<locals>.write_batchese  sv    ''(;(;(=(.039--g6""5)$E&&u- %<<0 0 0s   ABBr   r   T)emit_dictionary_deltasr   r   )unify_dictionariesrM   r\   )r(   
dictionaryint8r*   r   r
  r   r'   r]   rz   r{   r|   rP   num_dictionary_batchesnum_replaced_dictionariesnum_dictionary_deltasrc   rI   r  rH   )	rw   tydatavr;   batches_delta_onlyr@   r   r'   s	   `       @r   test_dictionary_deltarJ  W  s6   	rwwy"'')	,B !EN(FO	D A 	""BHHQR$8#9'"K   !!QZF	  ]]2??+'" , ]]2??+,- ,+ 7#$$)))((A---++q000''1,,,+/N(VV33# 4 %N]]2??+'" ,+ 7#$$)))((A---++q000''1,,,	)	*B  A%%%$$)))''1,,,##q(((VV33 4 N 
w	.B  A%%%((A---++q000''1,,,((A---++q000''1,,,A& ,+ ,+ ,+s*   ?L(	L-	L:
	M-L7:MMc                     t        j                  t        j                  dt        j                               g      } t         j                  j                  t        j                         |       }|j                  rJ |j                  t         j                  j                  j                  k(  sJ t         j                  j                  t        j                         |       }|j                  rJ |j                  t         j                  j                  j                  k(  sJ t        dd      5  t         j                  j                  t        j                         |       }|j                  sJ |j                  t         j                  j                  j                  k(  sJ t         j                  j                  t        j                         |       }|j                  sJ |j                  t         j                  j                  j                  k(  sJ 	 d d d        t        dd      5  t         j                  j                  t        j                         |       }|j                  rJ |j                  t         j                  j                  j                  k(  sJ t         j                  j                  t        j                         |       }|j                  rJ |j                  t         j                  j                  j                  k(  sJ 	 d d d        t        dd      5  t        dd      5  t         j                  j                  t        j                         |       }|j                  sJ |j                  t         j                  j                  j                  k(  sJ t         j                  j                  t        j                         |       }|j                  sJ |j                  t         j                  j                  j                  k(  sJ 	 d d d        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)Nr"   ARROW_PRE_0_15_IPC_FORMAT1ARROW_PRE_1_0_METADATA_VERSION)r(   r'   r   int32rI   rb   r   _use_legacy_format_metadata_versionr  r  rJ   r   r  )r'   r:   s     r   !test_envvar_set_legacy_ipc_formatrR    s   YY
345FVVr446?F((((##rvv'='='@'@@@@VV__R224f=F((((##rvv'='='@'@@@@	4c	:""2#8#8#:FC((((''266+A+A+D+DDDD!6!6!8&A((((''266+A+A+D+DDDD 
; 
93	?""2#8#8#:FC,,,,''266+A+A+D+DDDD!6!6!8&A,,,,''266+A+A+D+DDDD 
@ 
93	?8#>VV&&r'<'<'>GF,,,,++rvv/E/E/H/HHHHVV__R%:%:%<fEF,,,,++rvv/E/E/H/HHHH ? 
@	?! 
;	: 
@	? ?> 
@	?s?   /C'P-+C'P:'Q4C'QQ-P7:QQ	QQc                 ,   | j                         }t        j                  | j                               }t        j                  j                  |      }|j                         }t        j                  j                  |      }|j                  |      sJ y r
   )
r@   r(   rN   r   rI   r   r   r0   r1   rT   )ro   r;   rY   rZ   r   r   s         r   test_stream_read_allrT    sm    **,GOON$=$=$?@MVV.F__Fxx$$W-H=="""r   c                 D   | j                         D cg c]  }|j                          }}| j                         }t        j                  j                  |      }|j                         }t        j                  |      j                  d      }t        ||       y c c}w r   )r@   r   r   r(   rI   r   r   r   r   r   r   )ro   r>   r   rY   rZ   r   r   s          r   test_stream_read_pandasrV    s    -;-I-I-KL-KEeoo-KFL"--/MVV.F!Fyy ,,$,7Hvx( Ms   Bc                     | j                         }| j                         }t        j                  |      }t        j                  j                  |      }|t        |      fS r
   )r@   r   r(   rN   MessageReaderr   r   )ro   r;   rY   
buf_readerrZ   s        r   example_messagesrZ    sQ    **,G"--/M/J))*5FDL  r   c                  0   t        j                  t              5  t        t	        j
                                d d d        t        j                  t              5  t        t	        j                                d d d        y # 1 sw Y   IxY w# 1 sw Y   y xY wr
   )rz   r{   r   reprr(   MessagerX  r   r   r   test_message_ctors_no_segfaultr^    sZ    	y	!RZZ\ 
" 
y	!R  
"	! 
"	! 
"	!s   B B B	Bc                 r   | \  }}t        |      dk(  sJ |d   j                  dk(  sJ t        |d   j                  t        j
                        sJ t        |d   j                  t        j
                        sJ |d   j                  t        j                  j                  k(  sJ |dd  D ]  }|j                  dk(  sJ t        |j                  t        j
                        sJ t        |j                  t        j
                        sJ |j                  t        j                  j                  k(  rJ  y )Nr   r   r'   r   zrecord batch)
rQ   r   rU   metadatar(   Bufferbodyr  r  r  )rZ  r=   messagesmsgs       r   test_message_readerre    s   "KAxx=AA;x'''hqk**BII666hqk&&		222A;''2+=+=+@+@@@@|xx>)))#,,		222#((BII...##r'9'9'<'<<<<	 r   c                    | \  }}|d   }|j                         }t        j                  |j                         dz        }t        j                  j                  |      }t        j                  j                  |      }t        j                  j                  |j                               }t        j                  j                  |      }	|j                  |      sJ |j                  |      sJ |j                  |      sJ |j                  |	      sJ t        j                  t        j                  d      5  t        j                  j                  t        j                  d             d d d        t        j                  t              5  t        j                  j                  |       d d d        y # 1 sw Y   KxY w# 1 sw Y   y xY w)Nr   r   zCorrupted messager!  s   ab)	serializer(   rN   
to_pybytesrI   r%  rT   rz   r{   r|   EOFError)
rZ  r=   rc  rd  r~   rZ   restored	restored2	restored3	restored4s
             r   #test_message_serialize_read_messagern    sG   "KAx
1+C
--/C__S^^-12Fvv""3'H##F+I##CNN$45I##F+I::h::i   ::i   ::i   	r.A	B
BOOE23 
C 
x	 
F# 
!	  
C	B 
!	 s   <3F9 G9GGc                 l   | \  }}|D ]  }t        j                         }t        j                  |d      5 }|j                  |       d d d        |j	                         }t         j
                  j                  t        j                  |d            }|j                  |      rJ  y # 1 sw Y   cxY w)Ngzipr  )	r(   r   output_streamserialize_tor   rI   r%  input_streamrT   )rZ  r=   rc  r&  raw_outcompressed_outcompressed_bufr   s           r   !test_message_read_from_compressedrw    s     #KAx'')g6:n  0 ; !))+$$R__^AG&I J}}W%%% ::s   B**B3	c                     | \  }}t         j                  j                  |d         }|j                  |d   j                        sJ y r   )r(   rI   read_schemarT   r'   )rZ  r;   rc  r'   s       r   test_message_read_schemarz  $  s@    (GXVV,F==**+++r   c                     | \  }}t        ||dd        D ]B  \  }}t        j                  j                  ||j                        }|j                  |      rBJ  y )Nr   )zipr(   rI   read_record_batchr'   rT   )rZ  r;   rc  r>   r&  
read_batchs         r   test_message_read_record_batchr  *  sU    (GXgx|4wVV--gu||D
  ''' 5r   c                  "   t        j                  t        j                  dgt        j                               gdg      } t        j                         }t         j
                  j                  || j                        5 }|j                  |        d d d        |j                         }t        j                  t        d      5  t         j
                  j                  || j                         d d d        y # 1 sw Y   hxY w# 1 sw Y   y xY w)N   foor   strsr  z type record batch but got schemar!  )r(   r-   r   r*   r   rI   rb   r'   r3   r   rz   r{   IOErrorr}  )r>   streamr:   r~   s       r   .test_read_record_batch_on_stream_error_messager  2  s    OORXXvhRWWY?@#)(,E""$F			65<<	0F5! 
1
//
C	w?
A
  ell3
A 
A 
1	0
A 
As    C9+D9DDc                       e Zd Zd Zd Zd Zy)StreamReaderServerc                 R   t        j                   t         j                  t         j                        | _        | j                  j	                  d       | j                  j                  d       | j                  j                         \  }}|| _        d | _        g | _	        d | _
        |S )N)	127.0.0.1r   r   )socketAF_INETSOCK_STREAM_sockbindlistengetsockname_do_read_all_schema_batches_table)r   do_read_allhostports       r   initzStreamReaderServer.initE  sy    ]]6>>63E3EF


()

!ZZ++-
d'r   c                    | j                   j                         \  }}	 |j                  d      }t        j                  j                  |      }|j                  | _        | j                  r|j                         | _
        n.t        |      D ]   \  }}| j                  j                  |       " |j                          | j                   j                          y # |j                          | j                   j                          w xY w)Nrbmode)r  acceptmakefiler(   rI   r   r'   r  r  r   r  rR   r  r/   r6   )r   
connectionclient_addressr   rZ   r<   r>   s          r   runzStreamReaderServer.runP  s    %)ZZ%6%6%8"
N	((d(3FVV''/F!==DL  $oo/ )& 1HAuMM((/ !2 JJ JJs   BC ,Dc                 d    | j                   | j                  r| j                  fS | j                  fS r
   )r  r  r  r  r   s    r   
get_resultzStreamReaderServer.get_result_  s2    T->->dkk $ 	$]]$ 	$r   N)rA   rB   rC   r  r  r  r   r   r   r  r  C  s    	$r   r  c                   *    e Zd Zd Zd Zd Zd Zd Zy)SocketStreamFixturec                      y r
   r   r   s    r   r   zSocketStreamFixture.__init__f  s     	r   c                 ^   t               | _        | j                  j                  |      }| j                  j                          t	        j                  t        j
                  t        j                        | _        | j                  j                  d|f       | j                         | _
        y )Nr  )r  _serverr  startr  r  r  r  connectr   r   )r   r  r  s      r   start_serverz SocketStreamFixture.start_serverk  sp    )+||  -]]6>>63E3EF


K./MMO	r   c                 0   dd l }| j                  j                  |j                  dd             | j                  j	                          | j
                  j                          | j                  j                          | j                  j                         S )Nr   Q)
structr   r   packflushr  r6   r  r   r  )r   r  s     r   stop_and_get_resultz'SocketStreamFixture.stop_and_get_results  sa    		C+,		

||&&((r   c                 :    | j                   j                  d      S )Nr   r  )r  r  r   s    r   r   zSocketStreamFixture.get_sink{  s    zz"""--r   c                 .    t        j                  ||      S r
   rg   rK   s      r   r+   zSocketStreamFixture._get_writer~  ri   r   N)rA   rB   rC   r   r  r  r   r+   r   r   r   r  r  d  s    
$).8r   r  c                      t               S r
   )r  r   r   r   socket_fixturer    rp   r   c                 2   | j                  d       | j                         }| j                         \  }}|j                  |d   j                        sJ t        |      t        |      k(  sJ t        |      D ]  \  }}||   j                  |      rJ  y )NFr  r   )r  r@   r  rT   r'   rQ   rR   )r  writer_batchesreader_schemareader_batchesr<   r>   s         r   test_socket_simple_roundtripr    s    E2#113N$2$F$F$H!M>q 1 8 8999~#n"5555n-5a ''... .r   c                     | j                  d       | j                         }| j                         \  }}t        j                  j                  |      }|j                  |      sJ y )NTr  )r  r@   r  r(   r0   r1   rT   )r  r  r=   r   r   s        r   test_socket_read_allr    sY    D1#113N224IAvxx$$^4H=="""r   c                  N   t        j                  ddgi      } t        j                  j	                  |       }t        j
                         }t        ||       |j                         }t        j                  j                  |dd        }|j                         }t        | |       y )Nr"         ?   )r   r   r(   r   r   r   
write_filer   rI   r   r   r   )r   r>   r   bufferrZ   rdfs         r   test_ipc_file_stream_has_eosr    s     
usen	%BNN&&r*E  "Dud]]_F VVqr
+F 


Cr3r   c                  z   t        j                  ddgi      } t        j                  j	                  |       }t        j
                         }t        ||       |j                         }t        j                  |      }t        |      }|d   j                         }t        j                  |      }t        | |       y )Nr"   r  r   )r   r   r(   r   r   r   r  r   rN   	read_filer   r   )r   r>   r   r  rZ   r;   rG  r  s           r   test_ipc_zero_copy_numpyr    s    	usen	%BNN&&r*E  "Dud]]_F__V$FG1:!D
,,t
Cr3r   ipc_typer  filec           	         t        j                  ddgi      }t        j                  j	                  |      }t        j
                         }d}t        j                  j                  t        j                  j                  d|    } |||j                        5 }t        |      D ]   }|j                  |dt        |      i       " |j                  |       d d d        |j                         }| dk(  rBt        j                  j                  |      5 }	t        |	j!                               }
d d d        nYt        j                  j#                  |      5 }	t        |	j$                        D cg c]  }|	j'                  |       }
}d d d        t        |      D ]h  }
|   j(                  j*                  dk(  sJ t-        |
|   j.                  t        j0                        sJ |
|   j.                  dt        |      ik(  rhJ  
|   j(                  j*                  dk(  sJ |
|   j.                  J y # 1 sw Y   `xY w# 1 sw Y   xY wc c}w # 1 sw Y   xY w)	Nr"   r  r   )r  r  batch_id)custom_metadatar  r   )r   r   r(   r   r   r   rI   rb   rJ   r'   r,   r3   strr   r   r   !iter_batches_with_custom_metadatarO   rP   get_batch_with_custom_metadatar>   num_rowsrU   r  KeyValueMetadata)r  r   r>   r   batch_countfile_factoryr:   r<   r  rZ   batch_with_metass              r   +test_batches_with_custom_metadata_roundtripr    s%    
usen	%BNN&&r*E  "DK ff//FFOO--57L 
dELL	)V{#Auz3q66JK $ 	5!	 
* ]]_F8VV'6#F$L$L$NO (' VVf%).v/H/H)I K)IA !' E Ea H)I   K & ;"((11Q666Q//1D1DF 	F F"22z3q66JJJJ	   K(..771<<<K(88@@@1 
*	) (' K &%s7   A H7II/II7IIIIc                  `   t         j                  j                  t        j                  g d      t        j                  g d      gddg      } t        j                         }t         j
                  j                  || j                        5  	 d d d        |j                         }t         j
                  j                  |      5 }|j                         }d d d        j                  j                  | j                        sJ t        |      dk(  sJ y # 1 sw Y   xY w# 1 sw Y   MxY w)Nr0  r.  r2  r3  r  r   )r(   r0   r
  r   r   rI   rb   r'   r   r   r   rT   rQ   )r?   r   r   rZ   r   s        r   test_ipc_stream_no_batchesr    s    HH  "((<"8"$((+G"H"J(+Sz ! 3E   "D			4	. 
/ ]]_F			F	#v" 
$ ==---v;! 
/	. 
$	#s   DD$D!$D-c                      d} d}t        j                  dt        j                  j	                  |       i      }t
        j                  j                  |      }t
        j                  j                  |      | |z  kD  sJ y )Nr   r  r"   )
r   r   r   r.   r   r(   r   r   rI   get_record_batch_size)Nitemsizer   r>   s       r   test_get_record_batch_sizer    sa    
AH	ubiiooa01	2BNN&&r*E66''.!h,???r   c                     t        j                  | |rdnd      }t        j                  ||      }t        ||        y )Nr   r   )nthreadsr   )r(   serialize_pandasdeserialize_pandasr   )r   r   r~   r   s       r   "_check_serialize_pandas_round_tripr    s4    


b1
CC""3K@Fvr"r   c                      t        j                  g dd      } ddg}t        j                  g dt        d      d| |	      }t	        |       y )
Nr   my_indexnamer"   r#   r  g?g333333?abcr"   r#   indexcolumnsr   Indexr   r   r  r  r  r   s      r    test_pandas_serialize_round_tripr    sD    HHYZ0EenG	U4W
B 'r*r   c                      t        j                  g dd      } ddg}t        j                  g dt        d      d| |	      }t	        |d
       y )Nr   r  r  r"   r#   r  r  r  r  Tr   r  r  s      r   )test_pandas_serialize_round_trip_nthreadsr    sF    HHYZ0EenG	U4W
B 'rt<r   c                  "   t        j                  g dd      } t        j                  t        d      d       }t         j                  j	                  | |g      }ddg}t        j
                  g dt        d      d	||
      }t        |       y )Nr   level_1r  defr"   r#   r  r  r  r  )r   r  r   
MultiIndexr
  r   r  )index1index2r  r  r   s        r   ,test_pandas_serialize_round_trip_multi_indexr  #  sr    XXii0FXXd5k-FMM%%vv&67EenG	U4
B
 'r*r   c                  B    t        j                         } t        |        y r
   )r   r   r  )r   s    r   %test_serialize_pandas_empty_dataframer  2  s    	B&r*r   c                      t        j                  t        t        g dd                  } t	        j
                  |       }t	        j                  |      }t        ||        y )Nr  r  )r   r   r   r|  r(   r  r  r   )r   r~   r   s      r   3test_pandas_serialize_round_trip_not_string_columnsr  8  sF    	d367	8B


b
!C""3'Fvr"r   c                  P   t        j                  dg dig d      } t        j                  dg di      }t        j                  | d      }t        j                  |      }t        ||       t        j                  | d      }t        j                  |      }t        ||        y )Nr2  r   )r  Fr   T)r   r   r(   r  r  r   )r   r   r~   r   s       r   'test_serialize_pandas_no_preserve_indexr  @  s    	sI&i	8B||S),-H


b
7C""3'Fvx(


b
6C""3'Fvr"r   c                     d} t        j                  t        j                  j	                  |       dt        j
                  dddgd      }t        j                  j                  |      }|j                  j                         }|j                         }t        j                  j                  |      }t        j                  j                  ||      }|j                  |      sJ y )Nr   r"   r#   r$   r%   r   )r   r   r   r.   r   r   r(   r   r   r'   rg  rI   ry  r}  rT   )r9   r   r>   s_schemas_batchrecons_schemarecons_batchs          r   #test_schema_batch_serialize_methodsr  N  s    E	yyu%rvvuh68 
9B NN&&r*E||%%'HooGFF&&x0M66++G]CLu%%%r   c                     ddd} ddd}t        j                  dt        j                               }t        j                  dt        j                         |       }t        j                  ||g|      }|j                         }t         j                  j                  |      }|j                  |      sJ |j                  |k(  sJ |d   j                  J |d	   j                  | k(  sJ y )
Ns   bars   field)r  s   kinds   schemar2  r3  )r`  r   r   )
r(   r   rB  stringr'   rg  rI   ry  rT   r`  )field_metadataschema_metadataf0f1r'   r   r  s          r   'test_schema_serialization_with_metadatar  ^  s    $x8N%	:O	#rwwy	!B	#ryy{^	<BYYBx/:F!HFF&&x0M'''!!_444$$,,,$$666r   c                     t         j                  j                  || j                        5 }|j	                  |        d d d        y # 1 sw Y   y xY wr
   )r(   rI   rJ   r'   r3   )r>   r   r:   s      r   r  r  p  s4    	u||	,5! 
-	,	,s   AAc                     t         j                  j                  |       5 }t        |j                        D cg c]  }|j                  |       c}cd d d        S c c}w # 1 sw Y   y xY wr
   )r(   rI   rO   r,   rP   rS   )r   rZ   r<   s      r   r  r  u  sT    			&	!V-263L3L-MN-M  #-MN 
"	!N 
"	!s   A!AA!A!!A*c                      t        j                  dt        j                         fg      } t        j                         }t         j                  j                  ||       5  	 d d d        |j                         }t        j                  t        j                  |            5 }|j                         }d d d        t              dk(  sJ |j                  j                  |       sJ y # 1 sw Y   xY w# 1 sw Y   CxY w)Nr   r   )r(   r'   int64r   rI   rJ   r   r   rN   r   rQ   rT   )r'   r   r~   rZ   r?   s        r   test_write_empty_ipc_filer  z  s     YY"((*-./F  "D	v	& 
' --/C		!	!"//#"6	76! 
8u:??<<v&&& 
'	& 
8	7s   C(!C4(C14C=c                     d fd} t         |              }t        j                  |      }t        j                  j                          |      5 }d } |       J t        |       |        k(  sJ  |       J 	 d d d        t        t         |                    }t        j                  |      }t        j                  j                          |      5 }d } |       J t        |       |        k(  sJ  |       J 	 d d d         |        }t        j                  t              5  t        j                  j                  dt        j                         fg|      }	 d d d        t        j                  t              5  t        j                  j                  d |      }	 d d d        y # 1 sw Y   3xY w# 1 sw Y   xY w# 1 sw Y   fxY w# 1 sw Y   y xY w)Nc                  V    t        j                  dt        j                         fg      S )Nr   )r(   r'   r  r   r   r   make_schemaz0test_py_record_batch_reader.<locals>.make_schema  s    yy7BHHJ/011r   c                              } t        j                  g dg|       }t        j                  ddgg|       }||gS )Nr   r&   r1  r   )r(   r-   )r'   batch1batch2r  s      r   make_batchesz1test_py_record_batch_reader.<locals>.make_batches  s=    )V<1a&&9r   r   )r   weakrefrefr(   RecordBatchReaderr1   r   iterrz   r{   r   r  )r  r;   r   rZ   r  s       @r   test_py_record_batch_readerr    s   2  |~&G	W	B				*	*;=+2
47=tF||~---t||
4 8LN+,G	W	B				*	*;=+2
47=tF||~---t||
4 nG	y	!%%22rxxz"#W. 
"
 
y	!%%224A 
"	!5
4 
4
4 
4 
"	!
 
"	!s0   *F0*F=-6G	!G0F:=G	GGc                  t    G d d      } t        j                  t        j                  g dt        j                               gdg      t        j                  t        j                  g dt        j                               gdg      g} | |      }t         j                  j                  |      }t         j                  j                  |      }|j                         |k(  sJ t         j                  j                  |      }|j                         |k(  sJ t         j                  j                  ||d   j                  	      }|j                         |k(  sJ t        j                  t        j                  dt        j                               g      }t         j                  j                  ||	      }|j                         |j                  |      k(  sJ t        j                  t         j                  j                   d
      5  t         j                  j                  |t        j                  t        j                  dt        j"                  t        j                                     g      	       d d d        t        j                  t$              5  t         j                  j                  |d   d          d d d        t        j                  t$              5  t         j                  j                  ||d   	       d d d        y # 1 sw Y   xY w# 1 sw Y   \xY w# 1 sw Y   y xY w)Nc                       e Zd Zd ZddZy)Atest_record_batch_reader_from_arrow_stream.<locals>.StreamWrapperc                     || _         y r
   )r;   )r   r;   s     r   r   zJtest_record_batch_reader_from_arrow_stream.<locals>.StreamWrapper.__init__  s	    "DLr   Nc                     t         j                  j                  | j                  d   j                  | j                        }|j                  |      S )Nr   )r(   r  r1   r;   r'   __arrow_c_stream__)r   requested_schemarZ   s      r   r"  zTtest_record_batch_reader_from_arrow_stream.<locals>.StreamWrapper.__arrow_c_stream__  sA    ))66Q&&6F,,-=>>r   r
   )rA   rB   rC   r   r"  r   r   r   StreamWrapperr    s    	#	?r   r$  r   r   r2  r  r1  r   r   r   r&   Field 0 cannot be castr!  )r(   r-   r   r  r0   r1   r  from_streamr   r'   r   rO  castrz   r{   libArrowTypeErrorlist_r   )r$  rG  wrapperr   rZ   good_schemas         r   *test_record_batch_reader_from_arrow_streamr.    sQ   ? ? 	)"((*=>seL
)"((*=>seLD D!G xx$$T*H!!--h7F??((( !!--g6F??((( !!--gd1gnn-MF??((( ))RXXc288:678K!!--gk-JF??k :::: 
rvv,,4L	M
((BIIrxxRXXbhhj5I'J&KL 	) 	
 
N 
y	!
((a6 
" 
y	!
(($q'(B 
"	! 
N	M 
"	! 
"	!s%   A/L!&L"(%L.L"L+.L7c                     t        j                  t        j                  dt        j                               g      } t        j                  t        j
                  g dt        j                               gdg      t        j                  t        j
                  g dt        j                               gdg      g}t         j                  j                  |      }t         j                  j                  | |      }|j                  |       j                         |k(  sJ t        j                  t        j                  dt        j                               g      }t         j                  j                  | |      }|j                  |      j                         |j                  |      k(  sJ t         j                  j                  | |      }t        j                  t        d      5  |j                  t        j                  g              d d d        t         j                  j                  | |      }t        j                  t         j                  j                   d      5  |j                  t        j                  t        j                  dt        j"                  t        j                                     g             d d d        t        j                  t        j                  dt        j$                               g      } t        j
                  t'        j(                  d	d
d      gt        j$                               }t        j                  |gdg      t        j                  |gdg      g}t         j                  j                  |      }t         j                  j                  | |      }|j                  |       j                         |k(  sJ y # 1 sw Y   xY w# 1 sw Y   (xY w)Nr2  r   r   r  r%  zTarget schema's field namesr!  r&  i  r      )r(   r'   r   r  r-   r   r0   r1   r  r(  r   rO  rz   r{   r  r)  r*  r+  date32datetimedate)
schema_srcrG  	table_srcrZ   
schema_dstarrs         r   test_record_batch_reader_castr8    s   BHHS"((*567J
)"((*=>seL
)"((*=>seLD %%d+I !!..z4@F;;z"++-::: BHHS"((*567J!!..z4@F;;z"++-
1KKKK !!..z4@F	z)F	GBIIbM" 
H !!..z4@F	rvv,,4L	MBIIrxxRXXbhhj-ABCDE 
N
 BHHS"))+678J
((HMM$2./biik
BCOOSE#/#se1TUD%%d+I!!..z4@F;;z"++-::: 
H	G
 
N	Ms   .%O"*AO/"O,/O9c                  N   t        j                  t        j                  dt        j                               g      } t        j                  t        j
                  g dt        j                               gdg      g}t        j                  t        j
                  g dt        j                               gdg      g}t         j                  j                  |      }t         j                  j                  |      }t         j                  j                  | |      }t        j                  t        j                  dt        j                               g      }|j                  |      j                         |j                  |      k(  sJ t         j                  j                  | |      }t        j                  t        j                  dt        j                         d      g      }|j                  |      j                         |j                  |      k(  sJ t         j                  j                  | |      }|j                  |      }t        j                  t         j                  j                  d	      5  |j                          d d d        y # 1 sw Y   y xY w)
Nr2  )r   r   Nr   r  r   F)nullablezCan't cast arrayr!  )r(   r'   r   r  r-   r   r0   r1   r  rO  r(  r   rz   r{   r)  r|   )r4  data_with_nullsdata_without_nullstable_with_nullstable_without_nullsrZ   r6  casted_readers           r   #test_record_batch_reader_cast_nullsr@    s   BHHS"((*567J
,RXXZ@A#OO 	)"((*=>seL xx,,_=((//0BC !!..z?KFBHHS"((*567J;;z"++-1A1F1Fz1RRRR !!..z;MNFBHHS"((*uEFGJ;;z"++-1D1I1I*1UUUU !!..z?KFKK
+M	rvv**2D	E  
F	E	Es   JJ$r\   )jcollectionsr   r2  r   r   rz   r.   r  	threadingr  numpyr   ImportErrorpyarrowr(   pyarrow.tests.utilr   r   pandas.testingr   pandasr   r   rE   r_   re   r   rk   rm   ro   ru   rw   r   r   r   markparametrizer   r   r   r   r   	processesr   r   r   rI   r+  r   r   r   r   r   r   r   r  r  r  r#  r  r  r  r'  r,  r9  rJ  rR  rT  rV  rZ  r^  re  rn  rp  rw  rz  r  r  Threadr  r  r  socketsr  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r.  r8  r@  r   r   r   <module>rN     s  $ !  	        =	1
$ $N>
 >6
* 
"8Z 8     ! ! FLL FLL	 	2	2/21 #* 
#	
# . ) )  0  0$ . . ;2 FFFFe,% :	:1 FFFFe,% 
&	
&/ ? ?( 5 5. 05$-@! A!&  <.,b' FFFFt,FFT2FFBFF,B,B,E,EFFFT,.FF,B,B,E,E  G% !!0*62H-V!IH# ) ) ! !!= $0 & &,(
4"$)) $B8* 8< ! ! / / # #    "      h%78"A 9 "AJ$ @ @ # # + + = = + + + +
 # # 
# 
# & &7$"
O
' *Z.Cb";J!_'  	B  		s"   X 
X XXXX