
    /_i                        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-        Z5d. Z6ejF                  jn                  d/        Z8d0 Z9ejF                  jI                  d%ej\                  ju                         ej\                  ju                  d12      ej\                  ju                  d13      ej\                  ju                  ej\                  jv                  jx                  4      ej\                  ju                  d1ej\                  jv                  jx                  5      g      d6        Z=d7 Z>d8 Z?d9 Z@d: ZAd; ZBejF                  j(                  d<        ZCej4                  d=        ZDd> ZEd? ZFd@ ZGejF                  j                  dA        ZIdB ZJdC ZKdD ZL G dE dFej                        ZN G dG dHe      ZOej4                  dI        ZPejF                  j                  dJ        ZRejF                  j                  dK        ZSejF                  j(                  dL        ZTejF                  j(                  dM        ZUejF                  j(                  ejF                  jI                  dNdOdPg      dQ               ZVdR ZWejF                  j(                  dS        ZXejF                  j(                  dpdT       ZYejF                  j(                  dU        ZZejF                  j(                  dV        Z[ejF                  j(                  dW        Z\ejF                  j(                  dX        Z]ejF                  j(                  dY        Z^ejF                  j(                  dZ        Z_ejF                  j(                  d[        Z`d\ Zad] Zbd^ Zcd_ Zdd` Zeda Zfdb Zgdc Zhdd Zide Zjdf Zkej4                  dg        ZlejF                  jn                  ejF                  jI                  dhdidjgd1k      dl               Zmej4                  dm        ZnejF                  jI                  dndidjgd1k      do        Zoy# e$ r dZY Nw xY w# e$ r Y Cw xY w)q    )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     U/var/www/html/land_sniper/venv/lib/python3.12/site-packages/pyarrow/tests/test_ipc.py<lambda>zIpcFixture.<lambda>/   s    BJJL r   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<8a&--/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_filerI   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   rJ   	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_filerI   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                 Z    t         j                  j                  ||| j                        S rG   )r(   rJ   
new_streamrI   rL   s      r   r+   zStreamFormatFixture._get_writerv   s+    vv  LL ! 
 	
r   )rA   rB   rC   use_legacy_ipc_formatrI   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(   RecordBatchStreamWriterrL   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_fixturerx      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(   ArrowInvalidrJ   rP   rO   bufs    r   test_empty_filer      sG    
C	r	' /
-./ / /s   3A""A+c                 (    | j                  d       y )NFrN   r\   rm   s    r   test_file_simple_roundtripr      s    !!5!1r   c                 (    | j                  d       y )NTrN   r   r   s    r   test_file_write_tabler      s    !!4!0r   r   c                  *    t        j                         S r
   r   r   r   r   r   r      s    BJJL r   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(   rO   r   rJ   rP   read_allr0   r1   rU   )r   fixturer;   rZ   r[   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(   rJ   rP   rO   RecordBatchFileReaderr   rU   r4   num_messagesrQ   )	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(   rO   r   rJ   rP   read_pandaspdconcatreset_indexr   )rm   r>   framesrZ   r[   r   r   s          r   test_file_read_pandasr      s    -9-G-G-IJEeooJF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(   rJ   rP   pathlibPathr   OSFilerU   )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rz   )r   r   r{   r|   r(   r}   rJ   open_streamr~   s    r   test_empty_streamr      sF    
**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   rJ   rK   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   rJ   r   rO   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 VV0I0I0K LMhj 
u("- s   &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(   rJ   r   rO   RecordBatchStreamReaderr   rU   r4   r   rQ   rY   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   rI   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 NrH   r   r   )r@   r   r(   rJ   r   r   r4   r   rQ   rY   r5   )ro   rI   r   r[   sts        r   test_open_stream_optionsr   5  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NTrH   )r@   r   r{   r|   	TypeErrorr(   rJ   r   )ro   r   s     r   #test_open_stream_with_wrong_optionsr   G  sT      "&&(F	y	! 1
6401 1 1   "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(   rJ   rP   r   r4   r   rQ   )rm   rI   r   r[   r   s        r   test_open_file_optionsr   O  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   r{   r|   r   r(   rJ   rP   )rm   r   s     r   !test_open_file_with_wrong_optionsr   `  sT     $$&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   rJ   r   rO   r   r   r   r   r   )ro   r   r?   r>   r   s        r   test_stream_write_dispatchr   h  s    
yyq!~~ubffeUEB*/&*, 
B HH  E :ENN&&r%&@E		#	#N$7$7	F "

 VV0I0I0K LMhj 
u(yy"b=? s   	#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   listrJ   r   r   maprR   r   r   r   )ro   r   b1b2r?   r   r;   result_tables           r   test_stream_write_table_batchesr   }  sG    
ryyr" 
B 
	#	#BsGE	#	BB		#	#Bu	#	=BHH!!2r2,/E		#	#N$7$7	F 0"
uB/0 266%%n&?&?&ABCGC!"o55588((1L|--/yy"Sb'2r#2w!7.2450 0s   FFc                    | 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   )r@   r(   rO   r   rJ   r   r'   rU   rS   rR   r{   r|   StopIterationread_next_batch)ro   r;   rZ   r[   totalr<   
next_batchs          r   test_stream_simple_roundtripr    s    **,GOON$=$=$?@MVV.F==
 1 1222E"6* :  ,,,
 CL   	}	% ! ! ! !s   C00C9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compressionrH   r   )compression_level)r   r   r,   r.   randintr(   r0   from_arraysrJ   IpcWriteOptionsRecordBatchFileWriterr'   r2   rR   r   CodecrP   r   )r   r=   r  r?   rI   r:   len1sink2codeclen2r   r   s               r   test_compression_roundtripr    s   ::<D,1%L9qfnnQ"9F9HH  &( <Eff$$$8G		%	%%,, 
& 
1 "4:5!" t}}DJJLEHHVq1Eff$$$7G		%	%5<< 
& 
2 "5;5!" u~~ D
 4<<			$		(	(	*B			%	 	)	)	+B8O83 :" "" "s   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_64bituse_legacy_formatr  r   )r(   rJ   r  r  r  r  MetadataVersionr  V4r{   r|   r   
ValueErrorr  r  is_availableupperr   )rI   values     r   test_write_optionsr!    s   ff$$&G%'''$$---##rvv'='='@'@@@@G$&&& $G$$,,,!vv5588G##rvv'='='@'@@@@ -]]Iz23 	-',G$	- 	-- &&&  088  '"'G&&%///"'++-G&&%///0 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+++ $)	- 	-   s    K%K2%K/	2K<T)r  )r  )r  )r  r  c                    || _         | 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   )rI   r@   r(   rO   r   rJ   read_messager  r   r'   rU   rS   rR   r{   r|   r   r   )	ro   rI   r;   rZ   messager[   r   r<   r   s	            r   test_stream_options_roundtripr%    s    %N**,GOON$=$=$?@Mff!!.";";"=>G##w'?'????VV.F==
 1 1222E"6* :  ,,,
 CL   	}	% ! ! ! !s   %D??Ec                     t         j                  j                         } | j                  du sJ | j                  du sJ | j
                  t         j                  j                  j                  k(  sJ | j                  g k(  sJ d| _        | j                  du sJ t         j                  j                  j                  | _        | j
                  t         j                  j                  j                  k(  sJ t         j                  j                  j                  | _        | j
                  t         j                  j                  j                  k(  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t         j                  j                  j                  dg      } | j                  du sJ | j                  du sJ | j
                  t         j                  j                  j                  k(  sJ | j                  dgk(  sJ y # 1 sw Y   xY w)NTFr   r   )r   ensure_native_endianensure_alignmentincluded_fields)r(   rJ   IpcReadOptionsr   r'  r(  	AlignmentAnyr)  DataTypeSpecificAt64Byter{   r|   r   rH   s    r   test_read_optionsr/    s   ff##%G$&&&''4///##rvv'7'7';';;;;""b(((#(G ''5000!vv//@@G##rvv'7'7'H'HHHH!vv//88G##rvv'7'7'@'@@@@G%''' !fG""q!f,,,	y	! '"&' ff##))::QC $ G %'''''5000##rvv'7'7'H'HHHH""qc)))' 's   II#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  rH   )rI   memory_poolr   )r(   rJ   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_fieldsr<  8  s   vv$$&Hvv$$aS$9HHH  "((+G"H!#,!7"9(+Sz ! 3E 
	#	#N$7$7	F "
u&&(Fff   :Gff  b.C.C.E ! GG  G G!###!###xx##RXXl%;$<SE#JHhe! s   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  r4  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>   rx   r'   s        r   r@   z,test_dictionary_delta.<locals>.write_batches_  s    ''(;(;(=(.0 	 39--g6""5)$ .E&&u-.<<	  	  	 s   ABBr   r   T)emit_dictionary_deltasr   r   )unify_dictionariesrN   r]   )r(   
dictionaryint8r*   r   r  r   r'   r^   r{   r|   r}   rQ   num_dictionary_batchesnum_replaced_dictionariesnum_dictionary_deltasrc   rJ   r  rI   )	rx   tydatavr;   batches_delta_onlyr@   r   r'   s	   `       @r   test_dictionary_deltarM  Q  sL   	rwwy"'')	,B !EN(FO	D  	""BHHQR$8#9'"KG  !!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   int32rJ   rb   r   _use_legacy_format_metadata_versionr  r  rK   r   r  )r'   r:   s     r   !test_envvar_set_legacy_ipc_formatrU    sF   YY
345FVVr446?F((((##rvv'='='@'@@@@VV__R224f=F((((##rvv'='='@'@@@@	4c	: E""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E 
93	? E""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E 
93	? I8#> 	IVV&&r'<'<'>GF,,,,++rvv/E/E/H/HHHHVV__R%:%:%<fEF,,,,++rvv/E/E/H/HHHH	II I!E EE E	I 	II I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(   rO   r   rJ   r   r   r0   r1   rU   )ro   r;   rZ   r[   r   r   s         r   test_stream_read_allrW    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(   rJ   r   r   r   r   r   r   )ro   r>   r   rZ   r[   r   r   s          r   test_stream_read_pandasrY    s    -;-I-I-KLEeooLF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(   rO   MessageReaderr   r   )ro   r;   rZ   
buf_readerr[   s        r   example_messagesr]    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
   )r{   r|   r   reprr(   Messager[  r   r   r   test_message_ctors_no_segfaultra    sj    	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)
rR   r   rV   metadatar(   Bufferbodyr  r  r  )r]  r=   messagesmsgs       r   test_message_readerrh    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 messagematchs   ab)	serializer(   rO   
to_pybytesrJ   r#  rU   r{   r|   r}   EOFError)
r]  r=   rf  rg  r   r[   restored	restored2	restored3	restored4s
             r   #test_message_serialize_read_messagers    sU   "KAx
1+C
--/C__S^^-12Fvv""3'H##F+I##CNN$45I##F+I::h::i   ::i   ::i   	r.A	B 4
BOOE234 
x	  $
F#$ $4 4$ $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   rJ   r#  input_streamrU   )r]  r=   rf  r$  raw_outcompressed_outcompressed_bufr   s           r   !test_message_read_from_compressedr|    s     #KAx 	&'')g6: 	1n  0	1 !))+$$R__^AG&I J}}W%%%	&	1 	1s   B**B3	c                     | \  }}t         j                  j                  |d         }|j                  |d   j                        sJ y r   )r(   rJ   read_schemarU   r'   )r]  r;   rf  r'   s       r   test_message_read_schemar    s@    (GXVV,F==**+++r   c                     | \  }}t        ||dd        D ]B  \  }}t        j                  j                  ||j                        }|j                  |      rBJ  y )Nr   )zipr(   rJ   read_record_batchr'   rU   )r]  r;   rf  r>   r$  
read_batchs         r   test_message_read_record_batchr  $  sZ    (GXgx|4 (wVV--gu||D
  '''(r   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 schemarj  )r(   r-   r   r*   r   rJ   rb   r'   r3   r   r{   r|   IOErrorr  )r>   streamr:   r   s       r   .test_read_record_batch_on_stream_error_messager  ,  s    OORXXvhRWWY?@#)(,E""$F			65<<	0 "F5!"
//
C	w?
A 4
  ell34 4" "4 4s    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.init?  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(   rJ   r   r'   r  r  r   r  rS   r  r/   r6   )r   
connectionclient_addressr   r[   r<   r>   s          r   runzStreamReaderServer.runJ  s    %)ZZ%6%6%8"
N	((d(3FVV''/F!==DL  $oo/ )& 1 0HAuMM((/0 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_resultY  s2    T->->dkk $ 	$]]$ 	$r   N)rA   rB   rC   r  r  r  r   r   r   r  r  =  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__`  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_servere  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_resultm  sa    		C+,		

||&&((r   c                 :    | j                   j                  d      S )Nr   r  )r  r  r   s    r   r   zSocketStreamFixture.get_sinku  s    zz"""--r   c                 .    t        j                  ||      S r
   rg   rL   s      r   r+   zSocketStreamFixture._get_writerx  ri   r   N)rA   rB   rC   r   r  r  r   r+   r   r   r   r  r  ^  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  rU   r'   rR   rS   )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   rU   )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   rJ   r   r   r   )r   r>   r   bufferr[   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   rO   	read_filer   r   )r   r>   r   r  r[   r;   rJ  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   rJ   rb   rK   r'   r,   r3   strr   r   r   !iter_batches_with_custom_metadatarP   rQ   get_batch_with_custom_metadatar>   num_rowsrV   r  KeyValueMetadata)r  r   r>   r   batch_countfile_factoryr:   r<   r  r[   batch_with_metass              r   +test_batches_with_custom_metadata_roundtripr    sR    
usen	%BNN&&r*E  "DK ff//FFOO--57L 
dELL	) "V{# 	LAuz3q66JK	L 	5!	" ]]_F8VV' 	P6#F$L$L$NO	P 	P VVf% 	K).v/H/H)I K$% !' E Ea H  K  K	K ; K"((11Q666Q//1D1DF 	F F"22z3q66JJJJ	K K(..771<<<K(88@@@1" "	P 	P K	K 	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)Nr3  r1  r5  r6  r  r   )r(   r0   r  r   r   rJ   rb   r'   r   r   r   rU   rR   )r?   r   r   r[   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   rJ   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  ,  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  2  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 )Nr5  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'   rl  rJ   r~  r  rU   )r9   r   r>   s_schemas_batchrecons_schemarecons_batchs          r   #test_schema_batch_serialize_methodsr	  H  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   schemar5  r6  rc  r   r   )
r(   r   rE  stringr'   rl  rJ   r~  rU   rc  )field_metadataschema_metadataf0f1r'   r  r  s          r   'test_schema_serialization_with_metadatar  X  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(   rJ   rK   r'   r3   )r>   r   r:   s      r   r  r  j  s=    	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(   rJ   rP   r,   rQ   rT   )r   r[   r<   s      r   r  r  o  s\    			&	! OV-263L3L-MN  #NO ONO O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   rJ   rK   r   r   rO   r   rR   rU   )r'   r   r   r[   r?   s        r   test_write_empty_ipc_filer  t  s     YY"((*-./F  "D	v	&  --/C		!	!"//#"6	7 "6!"u:??<<v&&& " "s   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&   r4  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   iterr{   r|   r   r  )r  r;   r   r[   r  s       @r   test_py_record_batch_readerr"    s   2  |~&G	W	B				*	*;=+2
4 7=tF||~---t|| 8LN+,G	W	B				*	*;=+2
4 7=tF||~---t|| nG	y	! %%22rxxz"#W.
 
y	! %%224A 5   
 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_schemar[   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   r5  r  r4  r   r   r   r&   Field 0 cannot be castrj  )r(   r-   r   r  r0   r1   r   from_streamr   r'   r   rR  castr{   r|   libArrowTypeErrorlist_r   )r*  rJ  wrapperr   r[   good_schemas         r   *test_record_batch_reader_from_arrow_streamr4    sk   ? ? 	)"((*=>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 	) 	

 
y	! 7
((a67 
y	! C
(($q'(BC C
 
7 7C C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)Nr5  r   r   r  r+  zTarget schema's field namesrj  r,  i  r      )r(   r'   r   r  r-   r   r0   r1   r   r.  r   rR  r{   r|   r  r/  r0  r1  date32datetimedate)
schema_srcrJ  	table_srcr[   
schema_dstarrs         r   test_record_batch_reader_castr>    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"# !!..z4@F	rvv,,4L	M FBIIrxxRXXbhhj-ABCDEF
 BHHS"))+678J
((HMM$2./biik
BCOOSE#/#se1TUD%%d+I!!..z4@F;;z"++-:::# #
F Fs   .%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)
Nr5  )r   r   Nr   r  r   F)nullablezCan't cast arrayrj  )r(   r'   r   r  r-   r   r0   r1   r   rR  r.  r   r{   r|   r/  r}   )r:  data_with_nullsdata_without_nullstable_with_nullstable_without_nullsr[   r<  casted_readers           r   #test_record_batch_reader_cast_nullsrF    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 ! ! ! !s   JJ$c                     t        j                  dg di      } ddd}t        j                         }t         j                  j	                  || j
                  |      5 }|j                  |        d d d        |j                         }t         j                  j                  |      5 }|j                  |k(  sJ 	 d d d        y # 1 sw Y   TxY w# 1 sw Y   y xY w)Nr5  r   s   tests   0.1.0)s   creators   versionr  
r(   r?   r   rJ   rK   r'   r2   r   rP   rc  )tblmetar   wr  rs         r   +test_record_batch_file_writer_with_metadatarM  $  s    
((C#
$CX6D  "D	szzD	9 Q	c ]]_F			&	! "QzzT!!!" "	 " "s   C(CCCc                     t        j                  dg di      } t        j                         }t         j                  j	                  || j
                        5 }|j                  |        d d d        |j                         }t         j                  j                  |      5 }|j                  J 	 d d d        y # 1 sw Y   QxY w# 1 sw Y   y xY w)Nr5  r   rH  )rI  r   rK  r  rL  s        r   1test_record_batch_file_writer_with_empty_metadatarO  2  s    
((C#
$C  "D	szz	* a	c ]]_F			&	! "Qzz!!!" "	 " "s   B:!C:CCc                 j    | di |}|j                         }|j                         D ]  \  }}|	t        |t              s|nd| d}|dk(  r*t        j
                  j                  |      j                  }n.|dk(  r)t        j
                  j                  |      j                  }| d| |v rJ  y )N"r(  r  =r   )	__repr__itemsrV   r  r(   rJ   r+  r  r  )options_objoptions_argsrI   r_  argvalr   s          r   check_ipc_options_reprrY  ?  s    )L)GD &&( (S;%c3/r#b\$$FF$$S)..E&&FF**3/44Eaw4'''(r   c                     | j                   dk(  r,ddt        j                  j                  j                  d ddddS | j                   dk(  r,ddt        j                  j                  j
                  dddddS i S )NdefaultFT)r  r  r  r  r   rB  rC  allr  )ru   r(   rJ   r  r  r  rv   s    r   write_options_argsr]  Q  s    }}	! !& " 6 6 9 9&+"'
 	
 
%	!% " 6 6 9 9! &*"&
 	
 	r   r]  r[  r\  )indirectc                 L    t        t        j                  j                  |        y r
   )rY  r(   rJ   r  )r]  s    r   test_write_options_reprr`  k  s    
 266113EFr   c                     | j                   dk(  r)dt        j                  j                  j                  dd dS | j                   dk(  r+dt        j                  j                  j
                  dg ddS i S )Nr[  T)r'  r(  r   r)  r\  Fr   )ru   r(   rJ   r+  r,  r-  rv   s    r   read_options_argsrb  s  so    }}	!$( " 0 0 4 4#	
 	
 
%	$) " 0 0 A A (	
 	
 	r   rb  c                 L    t        t        j                  j                  |        y r
   )rY  r(   rJ   r*  )rb  s    r   test_read_options_reprrd    s     266002CDr   r]   )pcollectionsr   r8  r   r   r{   r.   r  	threadingr  numpyr   ImportErrorpyarrowr(   pyarrow.tests.utilr   r   pandas.testingr   pandasr   r   rE   r`   re   r   rk   rm   ro   ru   rx   r   r   r   markparametrizer   r   r   r   r   	processesr   r   r   rJ   r*  r   r   r   r   r   r   r  r  r  r!  r  r  r  r%  r/  r<  rM  rU  rW  rY  r]  ra  rh  rs  ru  r|  r  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"  r4  r>  rF  rM  rO  rY  r]  r`  rb  rd  r   r   r   <module>rr     s+  $ !  	        =	1
$ $N>
 >6
* 
 8Z 8     ! ! FLL FLL	 	2	2/21 #* 
#	
# . ) )  0  0$ . . ;2 FFFFe,% :	:1 FFFFe,% 
&	
&/ ? ?( 5 5.!$  <.,b FFFFt,FFT2FFBFF,B,B,E,EFFFT,.FF,B,B,E,E  G% !!.*D2H-V!IH# ) ) ! !!= $0 & &,(
4"$)) $B8* 8< ! ! / / # #    "      h%78"A 9 "AJ$ @ @ # # + + = = + + + +
 # # 
# 
# & &7$"
O
' *Z.Cb";J!:"
"($  2 9e,t  =G= G
  & )U+d  <E<EW+  	B  		s"   Y0 
Y> 0Y;:Y;>ZZ