
    <>i                        S SK Jr  S SKrS SKrS SKrS SKrS SKrS SKrS SKrS SK	r	 S SK
rS SKrS SKJrJr   S SKJr  S SKr " S S5      r " S S\5      r " S	 S
\5      r " S S\5      r\R4                  S 5       r\R4                  S 5       r\R4                  S 5       r\R4                  " \R<                  " SSS9\R<                  " SSS9/S9S 5       rS r S r!S r"\RF                  RI                  SS S /5      S 5       r%S r&\RF                  R(                  S 5       r'S  r(S! r)\RF                  R(                  \RF                  RT                  S" 5       5       r+\RF                  R(                  S# 5       r,S$ r-\RF                  RI                  S%\R\                  R_                  5       \R\                  R_                  S&S'9/5      S( 5       r0S) r1\RF                  RI                  S%\R\                  R_                  5       \R\                  R_                  S&S'9/5      S* 5       r2S+ r3\RF                  R(                  S, 5       r4\RF                  R(                  S- 5       r5S. r6\RF                  Rn                  S/ 5       r8S0 r9\RF                  RI                  S%\R\                  Ru                  5       \R\                  Ru                  S1S29\R\                  Ru                  S1S39\R\                  Ru                  \R\                  Rv                  Rx                  S49\R\                  Ru                  S1\R\                  Rv                  Rx                  S59/5      S6 5       r=S7 r>S8 r?S9 r@S: rAS; rB\RF                  R(                  S< 5       rC\R4                  S= 5       rDS> rES? rFS@ rGSA rH\RF                  R                  SB 5       rJSC rKSD rLSE rM " SF SG\R                  5      rO " SH SI\5      rP\R4                  SJ 5       rQ\RF                  R                  SK 5       rS\RF                  R                  SL 5       rT\RF                  R(                  SM 5       rU\RF                  R(                  SN 5       rV\RF                  R(                  \RF                  RI                  SOSPSQ/5      SR 5       5       rWSS rX\RF                  R(                  ST 5       rY\RF                  R(                  SqSU j5       rZ\RF                  R(                  SV 5       r[\RF                  R(                  SW 5       r\\RF                  R(                  SX 5       r]\RF                  R(                  SY 5       r^\RF                  R(                  SZ 5       r_\RF                  R(                  S[ 5       r`\RF                  R(                  S\ 5       raS] rbS^ rcS_ rdS` reSa rfSb rgSc rhSd riSe rjSf rkSg rl\R4                  Sh 5       rm\RF                  Rn                  \RF                  RI                  SiSjSk/S1Sl9Sm 5       5       rn\R4                  Sn 5       ro\RF                  RI                  SoSjSk/S1Sl9Sp 5       rpg! \ a    Sr GN2f = f! \ a     GN(f = f)r    )UserListN)changed_environinvoke_script)assert_frame_equalc                   <    \ rS rSrSrS 4S jrS rS rS	S jrSr	g)

IpcFixture,   Nc                  ,    [         R                  " 5       $ NioBytesIO     U/var/www/html/land-tabula/venv/lib/python3.13/site-packages/pyarrow/tests/test_ipc.py<lambda>IpcFixture.<lambda>/   s
    BJJLr   c                 :    Xl         U R                  5       U l        g r   )_sink_factoryget_sinksink)selfsink_factorys     r   __init__IpcFixture.__init__/   s    )MMO	r   c                 "    U R                  5       $ r   )r   r   s    r   r   IpcFixture.get_sink3   s    !!##r   c                 6    U R                   R                  5       $ r   )r   getvaluer   s    r   
get_sourceIpcFixture.get_source6   s    yy!!##r   c                    Sn[         R                  " S[         R                  " 5       4S[         R                  " 5       4/5      nU R	                  U R
                  U5      n/ n[        U5       HZ  n[         R                  " [        U5       Vs/ s H  n[        R                  " 5       PM     sn/ SQ/US9n	UR                  U	5        M\     U(       a1  [         R                  R                  U5      n
UR                  U
5        OU H  n	UR                  U	5        M     UR                  U l        UR!                  5         U$ s  snf )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_batches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   E
)r   r   r:   )r$   F)
__name__
__module____qualname____firstlineno__r:   r   r   r!   rE   __static_attributes__r   r   r   r   r   ,   s    K$8 $$$r   r   c                   ,    \ rS rSrSrSrS rSS jrSrg)FileFormatFixtureS   TNc                 R    [         R                  R                  XU R                  S9$ Noptions)r-   ipcnew_filerR   r   r   r,   s      r   r0   FileFormatFixture._get_writerX   s    vvtT\\BBr   c                    U R                  US9n[        R                  " U R                  5       5      n[        R                  R                  U5      nUR                  [        U5      :X  d   e[        U5       H_  u  pVUR                  U5      nX%   R                  U5      (       d   eUR                  R                  US   R                  5      (       a  M_   e   [        UR                  [        R                  R                  5      (       d   e[        U R                  [        R                  R                   5      (       d   e[#        UR                  5      [#        U R                  5      :X  d   eg )Nr=   r   )rE   r-   BufferReaderr!   rS   	open_filenum_record_batcheslen	enumerate	get_batchequalsr,   
isinstancer9   	ReadStatsr:   
WriteStatstuple)r   r=   r@   file_contentsreaderrA   rC   s          r   _check_roundtrip"FileFormatFixture._check_roundtrip[   s   $$h$7(9:!!-0((CL888!'*HA$$Q'E:$$U++++==''
(9(9::::	 + &,,(8(89999$**BFF,=,=>>>>V\\"eD,<,<&====r   r   F)	rG   rH   rI   rJ   is_filerR   r0   rf   rK   r   r   r   rM   rM   S   s    GGC>r   rM   c                   &    \ rS rSrSrSrSrS rSrg)StreamFormatFixturen   FNc                 T    [         R                  R                  UUU R                  S9$ rP   )r-   rS   
new_streamrR   rU   s      r   r0   StreamFormatFixture._get_writerv   s+    vv  LL ! 
 	
r   r   )	rG   rH   rI   rJ   use_legacy_ipc_formatrR   ri   r0   rK   r   r   r   rk   rk   n   s     "GG
r   rk   c                       \ rS rSrS rSrg)MessageFixture~   c                 .    [         R                  " X5      $ r   r-   RecordBatchStreamWriterrU   s      r   r0   MessageFixture._get_writer       ))$77r   r   N)rG   rH   rI   rJ   r0   rK   r   r   r   rr   rr   ~   s    8r   rr   c                      [        5       $ r   )r   r   r   r   ipc_fixturerz      s
    <r   c                      [        5       $ r   )rM   r   r   r   file_fixturer|      s    r   c                      [        5       $ r   )rk   r   r   r   stream_fixturer~            r   r|   zFile Format)idr~   zStream Format)paramsc                 8    U R                  U R                  5      $ r   )getfixturevalueparamrequests    r   format_fixturer      s     ""7==11r   c                      Sn [         R                  " [        R                  5         [        R                  R                  [        R                  " U 5      5        S S S 5        g ! , (       d  f       g = fNr   )pytestraisesr-   ArrowInvalidrS   rZ   rY   bufs    r   test_empty_filer      s>    
C	r	'
-. 
(	'	's   4A$$
A2c                 "    U R                  SS9  g )NFrX   rf   r|   s    r   test_file_simple_roundtripr      s    !!5!1r   c                 "    U R                  SS9  g )NTrX   r   r   s    r   test_file_write_tabler      s    !!4!0r   r   c                  ,    [         R                  " 5       $ r   r   r   r   r   r   r      s
    BJJLr   c                  ,    [         R                  " 5       $ r   )r-   BufferOutputStreamr   r   r   r   r      s    B!!#r   c                 N   [        U 5      nUR                  5       n[        R                  " UR	                  5       5      n[        R
                  R                  U5      nUR                  5       n[        R                  R                  U5      nUR                  U5      (       d   eg r   )rM   rE   r-   rY   r!   rS   rZ   read_allr5   r6   r_   )r   fixturer@   rd   re   resultexpecteds          r   test_file_read_allr      s|    
  -G##%GOOG$6$6$89MVVm,F__Fxx$$W-H==""""r   c                 |   U R                  5         U R                  5       n[        R                  R	                  U5      n[        R                  R	                  [        R
                  " U5      5      n[        R                  " U5      nUR                  5       nUR                  5       nUR                  5       nUR                  U5      (       d   eUR                  U5      (       d   eUR                  nUR                  S:X  d   eUR                  S:X  d   eUR                  U:X  d   eUR                  U:X  d   eg N   r$   )rE   r!   r-   rS   rZ   rY   RecordBatchFileReaderr   r_   r9   num_messagesr[   )	r|   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   U R                  5        Vs/ s H  oR                  5       PM     nn[        R                  " U R	                  5       5      n[        R
                  R                  U5      nUR                  5       n[        R                  " U5      R                  SS9n[        XV5        g s  snf NT)drop)rE   	to_pandasr-   rY   r!   rS   rZ   read_pandaspdconcatreset_indexr   )r|   rC   framesrd   re   r   r   s          r   test_file_read_pandasr      s    -9-G-G-IJ-IEoo-IFJOOL$;$;$=>MVVm,F!Fyy ,,$,7Hv( Ks   B0c                    U R                  5         U R                  5       nUR                  S5      R                  n[	        US5       nUR                  U5        S S S 5        [        R                  R                  [        R                  " U5      5      R                  5       n[        R                  R                  [        R                  " U5      5      R                  5       nUR                  U5      (       d   eg ! , (       d  f       N= f)N
file.arrowwb)rE   r!   joinstrpathopenwriter-   rS   rZ   pathlibPathr   OSFiler_   )r|   tmpdirr   pathft1t2s          r   test_file_pathlibr      s     $$&F;;|$,,D	dD	Q	 
 
		',,t,	-	6	6	8B			"))D/	*	3	3	5B99R=== 
	s   C==
Dc                      [         R                  " S5      n [        R                  " [        R
                  5         [        R                  R                  U 5        S S S 5        g ! , (       d  f       g = fr   )r   r   r   r   r-   r   rS   open_streamr   s    r   test_empty_streamr      s=    
**S/C	r	'
3 
(	'	's    A$$
A2c                 &   [         R                  " 5       n[         R                  " [         R                  " SU5      /5      nU R	                  S5      R
                  n[         R                  " US5       n[         R                  R                  XB5       n[         R                  " S/US9n[         R                  " U/U5      nUR                  U5        SSS5        SSS5        [        SU5        g! , (       d  f       N#= f! , (       d  f       N,= f)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   rS   rT   arrayr2   r   r   )r   mdn_interval_typer,   r   r   r?   interval_arrayrC   s           r   "test_read_year_month_nano_intervalr      s     224YY):;<=F;;|$,,D	4	$VV__T*fXXyk8IJNOO^$4f=ELL + 

 ($/	 +* 
	s%   4 DA C1D1
C?	;D
Dc           
      t   [         R                  " [        R                  R	                  S5      [         R
                  " S[        R                  SSS/SS/SS9S.5      n[        R                  R                  U5      nU R                  U R                  UR                  5       nUR                  U5        S S S 5        [        R                  R                  [        R                   " U R#                  5       5      5      R%                  5       n['        UR)                  5       U5        g ! , (       d  f       Nx= f)Nr$   r'   r(   T
categoriesorderedr%   r&   )r   	DataFramenpr3   randnCategoricalnanr-   RecordBatchfrom_pandasr0   r   r,   r8   rS   r   rY   r!   r   r   r   )r~   dfrC   wrrD   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))
D7c                    U R                  5         U R                  5       n[        R                  R	                  U5      n[        R                  R	                  [        R
                  " U5      5      n[        R                  " U5      nUR                  5       nUR                  5       nUR                  5       nUR                  U5      (       d   eUR                  U5      (       d   eUR                  nUR                  S:X  d   eUR                  S:X  d   eUR                  U:X  d   eUR                  U:X  d   e[        U5      [        U R                  5      :X  d   eg r   )rE   r!   r-   rS   r   rY   RecordBatchStreamReaderr   r_   r9   r   r[   rc   r:   )	r~   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   rR   Fuse_threadsc                 F   U R                  5         U R                  5       n[        R                  R	                  X!S9nUR                  5         UR                  nUR                  S:X  d   eUR                  S:X  d   e[        U5      [        U R                  5      :X  d   eg NrQ   r   r$   )rE   r!   r-   rS   r   r   r9   r   r[   rc   r:   )r~   rR   r   re   sts        r   test_open_stream_optionsr   5  s    
   "&&(FVV8F
OO	B??a  A%%%9n889999r   c                     U R                  5         U R                  5       n[        R                  " [        5         [
        R                  R                  USS9  S S S 5        g ! , (       d  f       g = fNTrQ   )rE   r!   r   r   	TypeErrorr-   rS   r   )r~   r   s     r   #test_open_stream_with_wrong_optionsr   G  sK      "&&(F	y	!
640 
"	!	!   A##
A1c                     U R                  5         U R                  5       n[        R                  R	                  X!S9nUR                  5         UR                  nUR                  S:X  d   eUR                  S:X  d   eg r   )	rE   r!   r-   rS   rZ   r   r9   r   r[   )r|   rR   r   re   r   s        r   test_open_file_optionsr   O  sn    
  $$&FVVf6F
OO	B??a  A%%%r   c                     U R                  5         U R                  5       n[        R                  " [        5         [
        R                  R                  USS9  S S S 5        g ! , (       d  f       g = fr   )rE   r!   r   r   r   r-   rS   rZ   )r|   r   s     r   !test_open_file_with_wrong_optionsr   `  sK     $$&F	y	!
. 
"	!	!r   c           
         [         R                  " [        R                  R	                  S5      [         R
                  " S[        R                  SSS/SS/SS9S.5      n[        R                  R                  USS9n[        R                  R                  USS9nU R                  U R                  UR                  5       nUR                  U5        UR                  U5        S S S 5        [        R                  R!                  [        R"                  " U R%                  5       5      5      R'                  5       n[)        UR+                  5       [         R,                  " X/SS	95        g ! , (       d  f       N= f)
Nr$   r'   r(   Tr   r   Fpreserve_indexignore_index)r   r   r   r3   r   r   r   r-   r5   r   r   r0   r   r,   r   rS   r   rY   r!   r   r   r   r   )r~   r   rD   rC   r   s        r   test_stream_write_dispatchr   h  s    
yyq!~~ubffeUEB*/&*, 
B HH  E :ENN&&r%&@E		#	#N$7$7	F"

 
G VV0I0I0K LMhj 
u(yy"=? 
G	Fs   #E++
E9c           
      $   [         R                  " S[        R                  R	                  S5      05      n[
        R                  R                  US S SS9n[
        R                  R                  USS9n[
        R                  R                  X#U/5      nU R                  U R                  UR                  5       nUR                  USS9  S S S 5        [        [
        R                  R!                  U R#                  5       5      5      n[        [%        [&        U5      5      / SQ:X  d   e[
        R                  R                  U5      n[)        UR+                  5       [         R,                  " US S XS S /S	S
95        g ! , (       d  f       N= f)Nr%      
   Fr      )max_chunksize)r  r  r$   r  Tr   )r   r   r   r3   r   r-   r   r   r5   r6   r0   r   r,   r7   listrS   r   r!   mapr\   r   r   r   )r~   r   b1b2rD   r   r@   result_tables           r   test_stream_write_table_batchesr	  }  s>    
ryyr" 
B 
	#	#BsGE	#	BB		#	#Bu	#	=BHH!!22,/E		#	#N$7$7	F"
uB/ 
G 266%%n&?&?&ABCGC!"o55588((1L|--/yy"Sb'2#2w!7.245 
G	Fs   <F
Fc                    U R                  5       n[        R                  " U R                  5       5      n[        R                  R                  U5      nUR                  R                  US   R                  5      (       d   eSn[        U5       H$  u  pVUR                  X   5      (       d   eUS-  nM&     U[        U5      :X  d   e[        R                  " [        5         UR                  5         S S S 5        g ! , (       d  f       g = fNr   r   )rE   r-   rY   r!   rS   r   r,   r_   r]   r\   r   r   StopIterationread_next_batch)r~   r@   rd   re   totalrA   
next_batchs          r   test_stream_simple_roundtripr    s    **,GOON$=$=$?@MVV.F==
 1 12222E"6*  ,,,,
 + CL   	}	%  
&	%	%s   #C==
Dc                  "   [         R                  " 5       n [        S5       Vs/ s H  n[        R                  " SS5      PM     nn[
        R                  R                  U/S/S9n[
        R                  R                  SS9n[
        R                  R                  XR                  US9 nUR                  U5        S S S 5        [        U R                  5       5      n[         R                  " 5       n[
        R                  " SS	S
9n[
        R                  R                  US9n[
        R                  R                  XsR                  US9 nUR                  U5        S S S 5        [        UR                  5       5      n	X:w  d   e[
        R                  R!                  U 5      R#                  5       n
[
        R                  R!                  U5      R#                  5       nX:X  d   eg s  snf ! , (       d  f       GN8= f! , (       d  f       N= f)Ni'  r   r   valuesnameszstdcompressionrQ   r$   )compression_level)r   r   r1   r3   randintr-   r5   from_arraysrS   IpcWriteOptionsRecordBatchFileWriterr,   r7   r\   r    CodecrZ   r   )r   rB   r  rD   rR   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		%	%<< 
& 
25;5!
2 u~~ D
 <<			$		(	(	*B			%	 	)	)	+B8O83 :
1 
1
2 
2s   !G)+G.H .
G= 
Hc                  N   [         R                  R                  5       n U R                  SL d   eU R                  SL d   eU R
                  [         R                  R                  R                  :X  d   eSU l        U R                  SL d   eSU l        U R                  SL d   e[         R                  R                  R                  U l        U R
                  [         R                  R                  R                  :X  d   eS H2  n[        R                  " [        [        45         Xl        S S S 5        M4     U R                  b   eS Hh  n[         R                  R                  U5      (       d  M)  Xl        U R                  U:X  d   eUR!                  5       U l        U R                  U:X  a  Mh   e   S U l        U R                  b   e[        R                  " [        5         SU l        S S S 5        U R"                  SL d   eSU l        U R"                  SL d   e[         R                  R                  S5      (       a  [         R                  R                  [         R                  R                  R                  SSSSS9n U R
                  [         R                  R                  R                  :X  d   eU R                  SL d   eU R                  SL d   eU R                  S:X  d   eU R"                  SL d   eg g ! , (       d  f       GM  = f! , (       d  f       GN-= f)NFT)V5*   )lz4r  r   r&  )metadata_versionallow_64bituse_legacy_formatr  r   )r-   rS   r  r(  r)  r'  MetadataVersionr$  V4r   r   r   
ValueErrorr  r  is_availableupperr   )rR   values     r   test_write_optionsr0    s   ff$$&G%'''$$---##rvv'='='@'@@@@G$&&& $G$$,,,!vv5588G##rvv'='='@'@@@@]]Iz23',$ 43  &&& 88  ''"'&&%///"'++-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   'L'L
L	
L$T)r(  )r)  )r'  )r)  r'  c                    Xl         U R                  5       n[        R                  " U R	                  5       5      n[        R
                  R                  U R	                  5       5      nUR                  UR                  :X  d   e[        R
                  R                  U5      nUR                  R                  US   R                  5      (       d   eSn[        U5       H$  u  pxUR                  X'   5      (       d   eUS-  nM&     U[        U5      :X  d   e[        R                  " [        5         UR!                  5         S S S 5        g ! , (       d  f       g = fr  )rR   rE   r-   rY   r!   rS   read_messager'  r   r,   r_   r]   r\   r   r   r  r  )	r~   rR   r@   rd   messagere   r  rA   r  s	            r   test_stream_options_roundtripr4    s    %**,GOON$=$=$?@Mff!!.";";"=>G##w'?'????VV.F==
 1 12222E"6*  ,,,,
 + CL   	}	%  
&	%	%s   2E
Ec                     [         R                  R                  5       n U R                  SL d   eU R                  SL d   eU R
                  [         R                  R                  R                  :X  d   eU R                  / :X  d   eSU l        U R                  SL d   e[         R                  R                  R                  U l        U R
                  [         R                  R                  R                  :X  d   e[         R                  R                  R                  U l        U R
                  [         R                  R                  R                  :X  d   eSU l        U R                  SL d   eSS/U l        U R                  SS/:X  d   e[        R                  " [        5         S U l        S S S 5        [         R                  R                  SS[         R                  R                  R                  S/S9n U R                  SL d   eU R                  SL d   eU R
                  [         R                  R                  R                  :X  d   eU R                  S/:X  d   eg ! , (       d  f       N= f)NTFr   r   )r   ensure_native_endianensure_alignmentincluded_fields)r-   rS   IpcReadOptionsr   r6  r7  	AlignmentAnyr8  DataTypeSpecificAt64Byter   r   r   rQ   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%%
I3c                    [         R                  R                  5       n[         R                  R                  S/S9n[         R                  R	                  [         R
                  " / SQ5      [         R
                  " / SQ5      /SS/S9nU R                  U R                  UR                  5       nUR                  U5        S S S 5        U R                  5       n[         R                  R                  XQS9n[         R                  R                  XR[         R                  " 5       S	9nUR                  5       nUR                  5       n	UR                  S
:X  d   eU	R                  S:X  d   e[         R                  R	                  [         R
                  " / SQ5      /S/S9n
X:X  d   eX:X  d   eg ! , (       d  f       N= f)Nr   )r8  r'   r(   bazr*   r   r   r      abr  rQ   )rR   memory_poolr   )r-   rS   r9  r5   r  r   r0   r   r,   r7   r!   r   system_memory_poolr   num_columns)r~   options1options2rD   r   r   r   r   r   r   r   s              r   !test_read_options_included_fieldsrK  8  sv   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! 
G	Fs   1F22
G c           
        ^ ^ [         R                  " [         R                  " 5       [         R                  " 5       5      n/ SQ/ SQSS// SQSS//nU Vs/ s H5  n[         R                  R                  [         R                  " X1S9/S/S	9PM7     nnUS S
 nUS   R                  mSU U4S jjnT R                  (       ak  [        R                  " [         R                  5         U" U5        S S S 5        [        R                  " [         R                  5         U" U5        S S S 5        OPU" U5      nUR                  S:X  d   eUR                  S
:X  d   eUR                  S:X  d   eUR                  S:X  d   eS T l        [         R"                  R%                  SS9T l        T R                  (       a6  [        R                  " [         R                  5         U" U5        S S S 5        OPU" U5      nUR                  S:X  d   eUR                  S
:X  d   eUR                  S:X  d   eUR                  S:X  d   eU" U5      nUR                  S
:X  d   eUR                  S:X  d   eUR                  S:X  d   eUR                  S:X  d   e[         R"                  R%                  SS9T l        U" USS9nUR                  S:X  d   eT R                  (       a7  UR                  S:X  d   eUR                  S:X  d   eUR                  S:X  d   eg UR                  S
:X  d   eUR                  S:X  d   eUR                  S:X  d   eg s  snf ! , (       d  f       GNd= f! , (       d  f       GN= f! , (       d  f       GNB= f)N)r'   r'   N)r'   r(   r'   r'   r(   )r'   Nr(   quuxrM  r   dictsr  rC  r   c                 @  > TR                  [        R                  " 5       T5       nU(       a1  [        R                  R	                  U 5      nUR                  U5        OU  H  nUR                  U5        M     UR                  sS S S 5        $ ! , (       d  f       g = fr   )r0   r-   MockOutputStreamr5   r6   r7   r8   r9   )r@   r=   r?   rD   rC   r   r,   s        r   rE   ,test_dictionary_delta.<locals>.write_batches_  sv    ''(;(;(=(.039--g6""5)$E&&u- %<<0 0 0s   AB
Br$   r   T)emit_dictionary_deltasr   r   )unify_dictionariesrX   rh   )r-   
dictionaryint8r/   r   r  r   r,   ri   r   r   r   r[   num_dictionary_batchesnum_replaced_dictionariesnum_dictionary_deltasrp   rS   r  rR   )	r   tydatavr@   batches_delta_onlyrE   r   r,   s	   `       @r   test_dictionary_deltar]  Q  s9   	rwwy"'')	,B !EN(FO	D A 	""BHHQ$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*   <M%	M	M	M/
M
M,/
M>c                  \	   [         R                  " [         R                  " S[         R                  " 5       5      /5      n [         R                  R                  [         R                  " 5       U 5      nUR                  (       a   eUR                  [         R                  R                  R                  :X  d   e[         R                  R                  [         R                  " 5       U 5      nUR                  (       a   eUR                  [         R                  R                  R                  :X  d   e[        SS5         [         R                  R                  [         R                  " 5       U 5      nUR                  (       d   eUR                  [         R                  R                  R                  :X  d   e[         R                  R                  [         R                  " 5       U 5      nUR                  (       d   eUR                  [         R                  R                  R                  :X  d   e S S S 5        [        SS5         [         R                  R                  [         R                  " 5       U 5      nUR                  (       a   eUR                  [         R                  R                  R                  :X  d   e[         R                  R                  [         R                  " 5       U 5      nUR                  (       a   eUR                  [         R                  R                  R                  :X  d   e S S S 5        [        SS5         [        SS5         [         R                  R                  [         R                  " 5       U 5      nUR                  (       d   eUR                  [         R                  R                  R                  :X  d   e[         R                  R                  [         R                  " 5       U 5      nUR                  (       d   eUR                  [         R                  R                  R                  :X  d   e S S S 5        S S S 5        g ! , (       d  f       GN9= f! , (       d  f       GNA= f! , (       d  f       N;= f! , (       d  f       g = f)Nr'   ARROW_PRE_0_15_IPC_FORMAT1ARROW_PRE_1_0_METADATA_VERSION)r-   r,   r   int32rS   rn   r   _use_legacy_format_metadata_versionr*  r$  rT   r   r+  )r,   r?   s     r   !test_envvar_set_legacy_ipc_formatre    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?    C5Q(
C5Q:R!C5RR(
Q7:
R	
R	R
R+c                 8   U R                  5       n[        R                  " U R                  5       5      n[        R                  R                  U5      nUR                  5       n[        R                  R                  U5      nUR                  U5      (       d   eg r   )
rE   r-   rY   r!   rS   r   r   r5   r6   r_   )r~   r@   rd   re   r   r   s         r   test_stream_read_allrg    sp    **,GOON$=$=$?@MVV.F__Fxx$$W-H==""""r   c                 B   U R                  5        Vs/ s H  oR                  5       PM     nnU R                  5       n[        R                  R                  U5      nUR                  5       n[        R                  " U5      R                  SS9n[        XV5        g s  snf r   )rE   r   r!   r-   rS   r   r   r   r   r   r   )r~   rC   r   rd   re   r   r   s          r   test_stream_read_pandasri    s    -;-I-I-KL-KEoo-KFL"--/MVV.F!Fyy ,,$,7Hv( Ms   Bc                     U R                  5       nU R                  5       n[        R                  " U5      n[        R                  R                  U5      nU[        U5      4$ r   )rE   r!   r-   rY   MessageReaderr   r  )r~   r@   rd   
buf_readerre   s        r   example_messagesrm    sQ    **,G"--/M/J))*5FDL  r   c                  L   [         R                  " [        5         [        [        R
                  " 5       5        S S S 5        [         R                  " [        5         [        [        R                  " 5       5        S S S 5        g ! , (       d  f       NP= f! , (       d  f       g = fr   )r   r   r   reprr-   Messagerk  r   r   r   test_message_ctors_no_segfaultrq    sZ    	y	!RZZ\ 
" 
y	!R  
"	! 
"	! 
"	!s   BB
B
B#c                    U u  p[        U5      S:X  d   eUS   R                  S:X  d   e[        US   R                  [        R
                  5      (       d   e[        US   R                  [        R
                  5      (       d   eUS   R                  [        R                  R                  :X  d   eUSS   H  nUR                  S:X  d   e[        UR                  [        R
                  5      (       d   e[        UR                  [        R
                  5      (       d   eUR                  [        R                  R                  :X  a  M   e   g )Nr   r   r,   r   zrecord batch)
r\   r   r`   metadatar-   Bufferbodyr'  r*  r$  )rm  rB   messagesmsgs       r   test_message_readerrx    s   "KAx=AA;x'''hqk**BII6666hqk&&		2222A;''2+=+=+@+@@@@|xx>)))#,,		2222#((BII....##r'9'9'<'<<<<	 r   c                    U u  pUS   nUR                  5       n[        R                  " UR                  5       S-  5      n[        R                  R                  U5      n[        R                  R                  U5      n[        R                  R                  UR                  5       5      n[        R                  R                  U5      n	UR                  U5      (       d   eUR                  U5      (       d   eUR                  U5      (       d   eUR                  U	5      (       d   e[        R                  " [        R                  SS9   [        R                  R                  [        R                  " S5      5        S S S 5        [        R                  " [        5         [        R                  R                  U5        S S S 5        g ! , (       d  f       NQ= f! , (       d  f       g = f)Nr   r   zCorrupted messagematchs   ab)	serializer-   rY   
to_pybytesrS   r2  r_   r   r   r   EOFError)
rm  rB   rv  rw  r   re   restored	restored2	restored3	restored4s
             r   #test_message_serialize_read_messager    sQ   "KA
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   4G$ G
G
G,c                     U u  pU H;  n[        U5      nSU;  d   eSU;  d   eSU;  d   eSUR                   3U;   a  M;   e   g )Nz{self.type}z{metadata_len}z
{body_len}ztype: )strr   )rm  rB   rv  rw  ss        r   %test_message_repr_shows_actual_valuesr    s_    "KAHA%%%q(((1$$$z"a''' r   c                 |   U u  pU H  n[         R                  " 5       n[         R                  " USS9 nUR                  U5        S S S 5        UR	                  5       n[         R
                  R                  [         R                  " USS95      nUR                  U5      (       a  M   e   g ! , (       d  f       Nm= f)Ngzipr  )	r-   r   output_streamserialize_tor    rS   r2  input_streamr_   )rm  rB   rv  r3  raw_outcompressed_outcompressed_bufr   s           r   !test_message_read_from_compressedr    s     #KA'')g6:n  0 ; !))+$$R__^AG&I J}}W%%%% ::s   B--
B;	c                     U u  p[         R                  R                  US   5      nUR                  US   R                  5      (       d   eg r  )r-   rS   read_schemar_   r,   )rm  r@   rv  r,   s       r   test_message_read_schemar  *  sA    (GVV,F==**++++r   c                     U u  p[        XSS  5       HF  u  p4[        R                  R                  XCR                  5      nUR                  U5      (       a  MF   e   g )Nr   )zipr-   rS   read_record_batchr,   r_   )rm  r@   rv  rC   r3  
read_batchs         r   test_message_read_record_batchr  0  sP    (Gg|4VV--g||D
  '''' 5r   c                  *   [         R                  " [         R                  " S/[         R                  " 5       S9/S/S9n [         R                  " 5       n[         R
                  R                  XR                  5       nUR                  U 5        S S S 5        UR                  5       n[        R                  " [        SS9   [         R
                  R                  X0R                  5        S S S 5        g ! , (       d  f       Nj= f! , (       d  f       g = f)N   foor   strsr  z type record batch but got schemarz  )r-   r2   r   r/   r   rS   rn   r,   r8   r    r   r   IOErrorr  )rC   streamr?   r   s       r   .test_read_record_batch_on_stream_error_messager  8  s    OORXXvhRWWY?@#)(,E""$F			6<<	0F5! 
1
//
C	w?
A
  ll3
A 
A 
1	0
A 
As   =C3 *D3
D
Dc                   &    \ rS rSrS rS rS rSrg)StreamReaderServeriI  c                 P   [         R                   " [         R                  [         R                  5      U l        U R                  R	                  S5        U R                  R                  S5        U R                  R                  5       u  p#Xl        S U l        / U l	        S U l
        U$ )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   initStreamReaderServer.initK  su    ]]6>>63E3EF


()

!ZZ++-
'r   c                    U R                   R                  5       u  p UR                  SS9n[        R                  R                  U5      nUR                  U l        U R                  (       a  UR                  5       U l
        O/[        U5       H   u  pVU R                  R                  U5        M"     UR                  5         U R                   R                  5         g ! UR                  5         U R                   R                  5         f = f)Nrbmode)r  acceptmakefiler-   rS   r   r,   r  r  r   r  r]   r  r4   r;   )r   
connectionclient_addressr   re   rA   rC   s          r   runStreamReaderServer.runV  s    %)ZZ%6%6%8"
	((d(3FVV''/F!==DL  $oo/ )& 1HAMM((/ !2 JJ JJs   BC ,D
c                 n    U R                   U R                  (       a  U R                  4$ U R                  4$ r   )r  r  r  r  r   s    r   
get_resultStreamReaderServer.get_resulte  s2    T->->dkk $ 	$]]$ 	$r   )r  r  r  r  r  N)rG   rH   rI   rJ   r  r  r  rK   r   r   r   r  r  I  s    	$r   r  c                   2    \ rS rSrS rS rS rS rS rSr	g)	SocketStreamFixtureij  c                     g r   r   r   s    r   r   SocketStreamFixture.__init__l  s     	r   c                 `   [        5       U l        U R                  R                  U5      nU R                  R                  5         [        R                  " [        R
                  [        R                  5      U l        U R                  R                  SU45        U R                  5       U l
        g )Nr  )r  _serverr  startr  r  r  r  connectr   r   )r   r  r  s      r   start_server SocketStreamFixture.start_serverq  sp    )+||  -]]6>>63E3EF


K./MMO	r   c                 0   SS K nU R                  R                  UR                  SS5      5        U R                  R	                  5         U R
                  R                  5         U R                  R                  5         U R                  R                  5       $ )Nr   Q)
structr   r   packflushr  r;   r  r   r  )r   r  s     r   stop_and_get_result'SocketStreamFixture.stop_and_get_resulty  sa    		C+,		

||&&((r   c                 4    U R                   R                  SS9$ )Nr   r  )r  r  r   s    r   r   SocketStreamFixture.get_sink  s    zz"""--r   c                 .    [         R                  " X5      $ r   ru   rU   s      r   r0   SocketStreamFixture._get_writer  rx   r   )r  r  r   N)
rG   rH   rI   rJ   r   r  r  r   r0   rK   r   r   r   r  r  j  s    
$).8r   r  c                      [        5       $ r   )r  r   r   r   socket_fixturer    r   r   c                 @   U R                  SS9  U R                  5       nU R                  5       u  p#UR                  US   R                  5      (       d   e[        U5      [        U5      :X  d   e[        U5       H  u  pEX4   R                  U5      (       a  M   e   g )NFr  r   )r  rE   r  r_   r,   r\   r]   )r  writer_batchesreader_schemareader_batchesrA   rC   s         r   test_socket_simple_roundtripr    s    E2#113N$2$F$F$H!Mq 1 8 89999~#n"5555n- ''.... .r   c                     U R                  SS9  U R                  5       nU R                  5       u  p#[        R                  R                  U5      nUR                  U5      (       d   eg )NTr  )r  rE   r  r-   r5   r6   r_   )r  r  rB   r   r   s        r   test_socket_read_allr    sZ    D1#113N224IAxx$$^4H==""""r   c                  N   [         R                  " SS/05      n [        R                  R	                  U 5      n[        R
                  " 5       n[        X5        UR                  5       n[        R                  R                  USS  5      nUR                  5       n[        X5        g )Nr'         ?   )r   r   r-   r   r   r   
write_filer    rS   r   r   r   )r   rC   r   bufferre   rdfs         r   test_ipc_file_stream_has_eosr    s     
usen	%BNN&&r*E  "Du]]_F VVqr
+F 


Crr   c                  ~   [         R                  " SS/05      n [        R                  R	                  U 5      n[        R
                  " 5       n[        X5        UR                  5       n[        R                  " U5      n[        U5      nUS   R                  5       n[         R                  " U5      n[        X5        g )Nr'   r  r   )r   r   r-   r   r   r   r  r    rY   	read_filer   r   )r   rC   r   r  re   r@   rZ  r  s           r   test_ipc_zero_copy_numpyr    s    	usen	%BNN&&r*E  "Du]]_F__V$FG1:!D
,,t
Crr   ipc_typer  filec           	         [         R                  " SS/05      n[        R                  R	                  U5      n[        R
                  " 5       nSn[        R                  R                  [        R                  R                  S.U    nU" X2R                  5       n[        U5       H  nUR                  US[        U5      0S9  M      UR                  U5        S S S 5        UR                  5       nU S:X  aB  [        R                  R                  U5       n	[        U	R!                  5       5      n
S S S 5        O\[        R                  R#                  U5       n	[        U	R$                  5       Vs/ s H  nU	R'                  U5      PM     n
nS S S 5        [        U5       Hn  nW
U   R(                  R*                  S:X  d   e[-        X   R.                  [        R0                  5      (       d   eX   R.                  S[        U5      0:X  a  Mn   e   W
U   R(                  R*                  S:X  d   eX   R.                  b   eg ! , (       d  f       GNq= f! , (       d  f       N= fs  snf ! , (       d  f       N= f)	Nr'   r  r   )r  r  batch_id)custom_metadatar  r   )r   r   r-   r   r   r   rS   rn   rT   r,   r1   r8   r  r    r   r  !iter_batches_with_custom_metadatarZ   r[   get_batch_with_custom_metadatarC   num_rowsr`   r  KeyValueMetadata)r  r   rC   r   batch_countfile_factoryr?   rA   r  re   batch_with_metass              r   +test_batches_with_custom_metadata_roundtripr    s#    
usen	%BNN&&r*E  "DK ff//FFOO--57L 
dLL	)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//1D1DF F 	F F"22z3q66JJJJ	   K(..771<<<(88@@@1 
*	) (' K &%s6   ?III+0I&I+
I
I#&I++
I9c                  ~   [         R                  R                  [         R                  " / SQ5      [         R                  " / SQ5      /SS/S9n [         R                  " 5       n[         R
                  R                  XR                  5          S S S 5        UR                  5       n[         R
                  R                  U5       nUR                  5       nS S S 5        WR                  R                  U R                  5      (       d   e[        U5      S:X  d   eg ! , (       d  f       N= f! , (       d  f       N]= f)NrB  r@  rD  rE  r  r   )r-   r5   r  r   r   rS   rn   r,   r    r   r   r_   r\   )rD   r   r   re   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                     Sn Sn[         R                  " S[        R                  R	                  U 5      05      n[
        R                  R                  U5      n[
        R                  R                  U5      X-  :  d   eg )Nr  r  r'   )
r   r   r   r3   r   r-   r   r   rS   get_record_batch_size)Nitemsizer   rC   s       r   test_get_record_batch_sizer    s_    
AH	ubiiooa01	2BNN&&r*E66''.!,???r   c                 |    [         R                  " X(       a  SOSS9n[         R                  " X!S9n[        X05        g )Nr   r   )nthreadsr   )r-   serialize_pandasdeserialize_pandasr   )r   r   r   r   s       r   "_check_serialize_pandas_round_tripr    s0    


b1
CC""3@Fv"r   c                      [         R                  " / SQSS9n SS/n[         R                  " / SQ[        S5      S.XS	9n[	        U5        g )
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    sB    HHYZ0EenG	U4
B 'r*r   c                      [         R                  " / SQSS9n SS/n[         R                  " / SQ[        S5      S.XS	9n[	        US
S9  g )Nr   r  r  r'   r(   r  r  r  r	  Tr   r  r  s      r   )test_pandas_serialize_round_trip_nthreadsr    sD    HHYZ0EenG	U4
B 'rt<r   c                     [         R                  " / SQSS9n [         R                  " [        S5      S S9n[         R                  R	                  X/5      nSS/n[         R
                  " / SQ[        S5      S	.UUS
9n[        U5        g )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  )  sp    XXii0FXXd5k-FMM%%v&67EenG	U4
B
 'r*r   c                  D    [         R                  " 5       n [        U 5        g r   )r   r   r  )r   s    r   %test_serialize_pandas_empty_dataframer  8  s    	B&r*r   c                      [         R                  " [        [        / SQS5      5      5      n [        R
                  " U 5      n[        R                  " U5      n[        X 5        g )Nr  r  )r   r   r  r  r-   r  r   r   )r   r   r   s      r   3test_pandas_serialize_round_trip_not_string_columnsr  >  sD    	d367	8B


b
!C""3'Fv"r   c                  F   [         R                  " S/ SQ0/ SQS9n [         R                  " S/ SQ05      n[        R                  " U SS9n[        R                  " U5      n[        X15        [        R                  " U SS9n[        R                  " U5      n[        X05        g )NrD  r   )r
  Fr   T)r   r   r-   r  r   r   )r   r   r   r   s       r   'test_serialize_pandas_no_preserve_indexr  F  s~    	sI&i	8B||S),-H


b
7C""3'Fv(


b
6C""3'Fv"r   c                     Sn [         R                  " [        R                  R	                  U 5      S[        R
                  SSS/S.5      n[        R                  R                  U5      nUR                  R                  5       nUR                  5       n[        R                  R                  U5      n[        R                  R                  XE5      nUR                  U5      (       d   eg )Nr$   r'   r(   r)   r*   r   )r   r   r   r3   r   r   r-   r   r   r,   r|  rS   r  r  r_   )r>   r   rC   s_schemas_batchrecons_schemarecons_batchs          r   #test_schema_batch_serialize_methodsr$  T  s    E	yyu%rvvuh68 
9B NN&&r*E||%%'HooGFF&&x0M66++GCLu%%%%r   c                     SSS.n SSS.n[         R                  " S[         R                  " 5       5      n[         R                  " S[         R                  " 5       U S9n[         R                  " X#/US9nUR                  5       n[         R                  R                  U5      nUR                  U5      (       d   eUR                  U:X  d   eUS   R                  b   eUS	   R                  U :X  d   eg )
Ns   bars   field)r  s   kinds   schemarD  rE  rs  r   r   )
r-   r   rU  stringr,   r|  rS   r  r_   rs  )field_metadataschema_metadataf0f1r,   r   r"  s          r   'test_schema_serialization_with_metadatar,  d  s    $x8N%	:O	#rwwy	!B	#ryy{^	<BYYx/:F!HFF&&x0M''''!!_444$$,,,$$666r   c                     [         R                  R                  XR                  5       nUR	                  U 5        S S S 5        g ! , (       d  f       g = fr   )r-   rS   rT   r,   r8   )rC   r   r?   s      r   r  r  v  s2    	||	,5! 
-	,	,s   A
Ac                     [         R                  R                  U 5       n[        UR                  5       Vs/ s H  o!R                  U5      PM     snsS S S 5        $ s  snf ! , (       d  f       g = fr   )r-   rS   rZ   r1   r[   r^   )r   re   rA   s      r   r  r  {  sR    			&	!V-263L3L-MN-M  #-MN 
"	!N 
"	!s   A#AA#A##
A1c                  (   [         R                  " S[         R                  " 5       4/5      n [         R                  " 5       n[         R                  R                  X5          S S S 5        UR                  5       n[         R                  " [         R                  " U5      5       nUR                  5       nS S S 5        [        W5      S:X  d   eUR                  R                  U 5      (       d   eg ! , (       d  f       N= f! , (       d  f       NS= f)Nr   r   )r-   r,   int64r   rS   rT   r    r   rY   r   r\   r_   )r,   r   r   re   rD   s        r   test_write_empty_ipc_filer1    s     YY"((*-./F  "D		& 
' --/C		!	!"//#"6	76! 
8u:??<<v&&&& 
'	& 
8	7s   !C2%D2
D 
Dc                    ^ S mU4S jn [        U " 5       5      n[        R                  " U5      n[        R                  R                  T" 5       U5       nS nU" 5       c   e[        U5      U " 5       :X  d   eU" 5       b   e S S S 5        [        [        U " 5       5      5      n[        R                  " U5      n[        R                  R                  T" 5       U5       nS nU" 5       c   e[        U5      U " 5       :X  d   eU" 5       b   e S S S 5        U " 5       n[        R                  " [        5         [        R                  R                  S[        R                  " 5       4/U5      n S S S 5        [        R                  " [        5         [        R                  R                  S U5      n S S S 5        g ! , (       d  f       GN?= f! , (       d  f       N= f! , (       d  f       Nv= f! , (       d  f       g = f)Nc                  Z    [         R                  " S[         R                  " 5       4/5      $ )Nr   )r-   r,   r0  r   r   r   make_schema0test_py_record_batch_reader.<locals>.make_schema  s    yy7BHHJ/011r   c                  x   > T" 5       n [         R                  " / SQ/U S9n[         R                  " SS//U S9nX/$ )Nr   r+   rC  r$   )r-   r2   )r,   batch1batch2r4  s      r   make_batches1test_py_record_batch_reader.<locals>.make_batches  s;    )V<1a&&9r   r   )r   weakrefrefr-   RecordBatchReaderr6   r  iterr   r   r   r0  )r9  r@   r   re   r4  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   -F< -G77G!G0<
G
G
G-0
G>c                  ~    " S S5      n [         R                  " [         R                  " / SQ[         R                  " 5       S9/S/S9[         R                  " [         R                  " / SQ[         R                  " 5       S9/S/S9/nU " U5      n[         R                  R                  U5      n[         R                  R                  U5      nUR                  5       U:X  d   e[         R                  R                  U5      nUR                  5       U:X  d   e[         R                  R                  X!S   R                  S	9nUR                  5       U:X  d   e[         R                  " [         R                  " S[         R                  " 5       5      /5      n[         R                  R                  X%S	9nUR                  5       UR                  U5      :X  d   e[        R                  " [         R                  R                   S
S9   [         R                  R                  U[         R                  " [         R                  " S[         R"                  " [         R                  " 5       5      5      /5      S	9  S S S 5        [        R                  " [$        5         [         R                  R                  US   S   5        S S S 5        [        R                  " [$        5         [         R                  R                  X1S   S	9  S S S 5        g ! , (       d  f       N= f! , (       d  f       Nc= f! , (       d  f       g = f)Nc                   $    \ rS rSrS rSS jrSrg)Atest_record_batch_reader_from_arrow_stream.<locals>.StreamWrapperi  c                     Xl         g r   r@   )r   r@   s     r   r   Jtest_record_batch_reader_from_arrow_stream.<locals>.StreamWrapper.__init__  s    "Lr   Nc                     [         R                  R                  U R                  S   R                  U R                  5      nUR                  U5      $ )Nr   )r-   r=  r6   r@   r,   __arrow_c_stream__)r   requested_schemare   s      r   rG  Ttest_record_batch_reader_from_arrow_stream.<locals>.StreamWrapper.__arrow_c_stream__  sA    ))66Q&&6F,,-=>>r   rD  r   )rG   rH   rI   rJ   r   rG  rK   r   r   r   StreamWrapperrB    s    	#	?r   rJ  r   r   rD  r  rC  r$   r   r   r+   Field 0 cannot be castrz  )r-   r2   r   r0  r5   r6   r=  from_streamr   r,   r   rb  castr   r   libArrowTypeErrorlist_r   )rJ  rZ  wrapperr   re   good_schemas         r   *test_record_batch_reader_from_arrow_streamrT    sK   ? ? 	)"((*=>seL
)"((*=>seLD D!G xx$$T*H!!--h7F??((( !!--g6F??((( !!--g1gnn-MF??((( ))RXXc288:678K!!--g-JF??k :::: 
rvv,,4L	M
((BIIrxxRXXbhhj5I'J&KL 	) 	
 
N 
y	!
((a6 
" 
y	!
((q'(B 
"	! 
N	M 
"	! 
"	!s%   A0L&L"!L.
L
L+.
L<c                     [         R                  " [         R                  " S[         R                  " 5       5      /5      n [         R                  " [         R
                  " / SQ[         R                  " 5       S9/S/S9[         R                  " [         R
                  " / SQ[         R                  " 5       S9/S/S9/n[         R                  R                  U5      n[         R                  R                  X5      nUR                  U 5      R                  5       U:X  d   e[         R                  " [         R                  " S[         R                  " 5       5      /5      n[         R                  R                  X5      nUR                  U5      R                  5       UR                  U5      :X  d   e[         R                  R                  X5      n[        R                  " [        SS9   UR                  [         R                  " / 5      5        S S S 5        [         R                  R                  X5      n[        R                  " [         R                  R                   SS9   UR                  [         R                  " [         R                  " S[         R"                  " [         R                  " 5       5      5      /5      5        S S S 5        [         R                  " [         R                  " S[         R$                  " 5       5      /5      n [         R
                  " [&        R(                  " S	S
S5      /[         R$                  " 5       S9n[         R                  " U/S/S9[         R                  " U/S/S9/n[         R                  R                  U5      n[         R                  R                  X5      nUR                  U 5      R                  5       U:X  d   eg ! , (       d  f       GN= f! , (       d  f       GN1= f)NrD  r   r   r  rK  zTarget schema's field namesrz  rL  i  r      )r-   r,   r   r0  r2   r   r5   r6   r=  rN  r   rb  r   r   r,  rO  rP  rQ  date32datetimedate)
schema_srcrZ  	table_srcre   
schema_dstarrs         r   test_record_batch_reader_castr^    s   BHHS"((*567J
)"((*=>seL
)"((*=>seLD %%d+I !!..z@F;;z"++-::: BHHS"((*567J!!..z@F;;z"++-
1KKKK !!..z@F	z)F	GBIIbM" 
H !!..z@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!!..z@F;;z"++-::: 
H	G
 
N	Ms   +&O %A#O2 
O/2
Pc                  R   [         R                  " [         R                  " S[         R                  " 5       5      /5      n [         R                  " [         R
                  " / SQ[         R                  " 5       S9/S/S9/n[         R                  " [         R
                  " / SQ[         R                  " 5       S9/S/S9/n[         R                  R                  U5      n[         R                  R                  U5      n[         R                  R                  X5      n[         R                  " [         R                  " S[         R                  " 5       5      /5      nUR                  U5      R                  5       UR                  U5      :X  d   e[         R                  R                  X5      n[         R                  " [         R                  " S[         R                  " 5       SS9/5      nUR                  U5      R                  5       UR                  U5      :X  d   e[         R                  R                  X5      nUR                  U5      n[        R                  " [         R                  R                  SS	9   UR                  5         S S S 5        g ! , (       d  f       g = f)
NrD  )r   r   Nr   r  r   F)nullablezCan't cast arrayrz  )r-   r,   r   r0  r2   r   r5   r6   r=  rb  rN  r   r   r   rO  r   )rZ  data_with_nullsdata_without_nullstable_with_nullstable_without_nullsre   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NFBHHS"((*uEFGJ;;z"++-1D1I1I*1UUUU !!..zKFKK
+M	rvv**2D	E  
F	E	Es   >J
J&c                     [         R                  " S/ SQ05      n SSS.n[         R                  " 5       n[         R                  R	                  X R
                  US9 nUR                  U 5        S S S 5        UR                  5       n[         R                  R                  U5       nUR                  U:X  d   e S S S 5        g ! , (       d  f       NZ= f! , (       d  f       g = f)NrD  r   s   tests   0.1.0)s   creators   versionr&  
r-   rD   r   rS   rT   r,   r7   r    rZ   rs  )tblmetar   wr  rs         r   +test_record_batch_file_writer_with_metadatarm  0  s    
((C#
$CX6D  "D	zzD	9Q	c 
: ]]_F			&	!QzzT!!! 
"	!	 
:	9 
"	!s   C&C
C
C"c                     [         R                  " S/ SQ05      n [         R                  " 5       n[         R                  R	                  XR
                  5       nUR                  U 5        S S S 5        UR                  5       n[         R                  R                  U5       nUR                  b   e S S S 5        g ! , (       d  f       NW= f! , (       d  f       g = f)NrD  r   rh  )ri  r   rk  r  rl  s        r   1test_record_batch_file_writer_with_empty_metadataro  >  s    
((C#
$C  "D	zz	*a	c 
+ ]]_F			&	!Qzz!!! 
"	!	 
+	* 
"	!s   B<"C<
C

Cc                    U " S0 UD6nUR                  5       nUR                  5        H  u  pEUc  M
  [        U[        5      (       d  UOSU S3nUS:X  a*  [        R
                  R                  U5      R                  nO/US:X  a)  [        R
                  R                  U5      R                  nU SU 3U;   a  M   e   g )N"r7  r'  =r   )	__repr__itemsr`   r  r-   rS   r:  r  r*  )options_objoptions_argsrR   ro  argvalr/  s          r   check_ipc_options_reprry  K  s    )L)GD &&(;%c3//r#b\$$FF$$S)..E&&FF**3/44Eaw4''' )r   c                     U R                   S:X  a,  SS[        R                  R                  R                  S SSSS.$ U R                   S:X  a,  SS[        R                  R                  R
                  SSSSS.$ 0 $ )NdefaultFT)r(  r)  r'  r  r   rR  rS  allr  )r   r-   rS   r*  r$  r+  r   s    r   write_options_argsr}  ]  s    }}	! !& " 6 6 9 9&+"'
 	
 
%	!% " 6 6 9 9! &*"&
 	
 	r   r}  r{  r|  )indirectc                 L    [        [        R                  R                  U 5        g r   )ry  r-   rS   r  )r}  s    r   test_write_options_reprr  w  s    
 266113EFr   c                     U R                   S:X  a)  S[        R                  R                  R                  SS S.$ U R                   S:X  a+  S[        R                  R                  R
                  S/ SQS.$ 0 $ )Nr{  T)r6  r7  r   r8  r|  Fr   )r   r-   rS   r:  r;  r<  r   s    r   read_options_argsr    so    }}	!$( " 0 0 4 4#	
 	
 
%	$) " 0 0 A A (	
 	
 	r   r  c                 L    [        [        R                  R                  U 5        g r   )ry  r-   rS   r9  )r  s    r   test_read_options_reprr    s     266002CDr   rh   )qcollectionsr   rX  r   r   r   r3   r  	threadingr;  numpyr   ImportErrorpyarrowr-   pyarrow.tests.utilr   r   pandas.testingr   pandasr   r   rM   rk   rr   r   rz   r|   r~   r   r   r   r   r   markparametrizer   r   r   r   r   	processesr   r   r   rS   r9  r   r   r   r   r   r	  r  r  r"  r0  r  r*  r+  r4  r>  rK  r]  re  rg  ri  rm  rq  rx  r  r  r  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  r1  r?  rT  r^  rf  rm  ro  ry  r}  r  r  r  r   r   r   <module>r     s*  $ !  	        =	1
$ $N>
 >6
* 
 8Z 8     ! ! 
LL LL	 	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o+  	B  		s"   Y 
Y" YY"Y,+Y,