
    /_i                        d dl Z d dlmZ d dlmZmZmZmZ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Z	 d dlZd dlmZ d dlmZ d dlZddZed        Zd Zd	 Zej@                  jC                  d
d      ej@                  jC                  dd      d               Z"d Z#d Z$d Z%d Z&d Z'd Z(d Z)d Z*d Z+d Z,d Z-d Z.d Z/d Z0d Z1d Z2d Z3d  Z4d! Z5d" Z6ej@                  jC                  d#g d$      d%        Z7ej@                  j(                  d&        Z8ej@                  j(                  d'        Z9ej@                  j(                  d(        Z:ej@                  j(                  d)        Z;d* Z<d+ Z=d, Z>d- Z?ej@                  j(                  d.        Z@ej@                  j(                  d/        ZAd0 ZBd1 ZCej@                  j(                  d2        ZDd3 ZEd4 ZFej@                  j(                  ej@                  jC                  d5 ej                  d6ej@                  j                  ej                  j                  7      8      d9d:d;d<d=g      d>               ZKej@                  j(                  ej@                  jC                  d5 ej                  d6ej@                  j                  ej                  j                  7      8      d9d:d;d<d=g      d?               ZLd@ ZMdA ZNdB ZOdC ZPdD ZQej@                  j(                  dE        ZRdF ZSej                  dG        ZU	 ddHZVdI ZWdJ ZXdK ZYdL ZZdM Z[dN Z\dO Z]dP Z^dQ Z_dR Z`dS ZadT ZbdU ZcdV Zdej@                  j                  ej                  dWk(  dXY      dZ        Zfd[ Zgd\ Zhd] Zid^ Zjej@                  j                  d_        Zld` Zmda Zndb Zodc Zpej@                  j(                  dd        Zqej@                  j(                  de        Zrdf Zsej@                  j                  dg        Ztdh Zuej@                  j                  di        Zvdj Zwej@                  j                  dk        Zxej@                  j                  dl        Zydm Zzej@                  j                  dn        Z{do Z|dp Z}ej@                  jC                  dqdrds ej                  dt      d:f ej                  du      d<fg      dv        Zdw Zej@                  jC                  d5d6d9d:d;d< ej                  d=ej@                  j                  ej                  j                  7      8      g      dx        Zej@                  jC                  d5g dy      dz        Zd{Zd| Zej@                  jC                  d}g d~      d        Zej@                  jC                  d}ddg      d        Zej@                  jC                  d}ddg      d        Zej@                  jC                  d}ddg      d        Zej@                  j                  d        Zd Zd Zej@                  j                  d        Zd Zej@                  j                  d        Zej@                  j                  d        Zej@                  j                  d        Zd Zd Zd Zd Zej@                  j                  d        Zd Zej@                  j                  d        Zd Zej@                  j                  d        Zd Zy# e$ r dZY w xY w)    N)contextmanager)BytesIOStringIOTextIOWrapperBufferedIOBaseIOBase)guid)Codecc                    t         j                  dv rt        j                  d       	 t	        j
                  d      }t        |d      5 }|j                  d       |j                  d       |j                  d       d d d        |r|5   | |       d d d        n} | |      5 }|j                         dk(  sJ |j                  d      dk(  sJ |j                         dk(  sJ |j                  d	      dk(  sJ |j                         dk(  sJ 	 d d d        t        j                  |       y # 1 sw Y   xY w# 1 sw Y   +xY w# 1 sw Y   7xY w# t        j                         w xY w)
N)win32darwin
emscriptenzneed sparse file supporttest_io)prefixwbl   
    l       s   mark
   )sysplatformpytestskiptempfilemktempopentruncateseekwritesizetellreadosunlink)file_factoryexpected_errorfilenamefs       T/var/www/html/land_sniper/venv/lib/python3.12/site-packages/pyarrow/tests/test_io.pycheck_large_seeksr'   +   sE   
||88./??)4(D! 	QJJ|$FF;GGI	  'X&' ' h' 01vvx<///vvk*k999vvx;...vvayI---vvx<///0 			(	 	
' '0 0 			(sT   "E 4D0?E 	D<E %A,EE 0D95E <EE EE E+c               #   p   K   t        j                  t              5  d  d d d        y # 1 sw Y   y xY wwN)r   raisesFileNotFoundError     r&   assert_file_not_foundr.   B   s*     	(	)   s   6*	636c                     t               } t        j                  |       }|j                         dk(  sJ d}d}|j	                  |       |j                         t        |      k(  sJ |j	                  |       ||z   }| j                         }||k(  sJ |j                  rJ |j                          |j                  sJ t        j                  t        d      5  t        j                  t                      d d d        y # 1 sw Y   y xY w)Nr   s	   engañados   foobarbinary file expectedmatch)r   pa
PythonFiler   r   lengetvalueclosedcloser   r*   	TypeErrorr   )bufr%   s1s2expectedresults         r&   test_python_file_writer?   L   s    
)C
cA668q==	B	BGGBK668s2wGGBKBwH\\^FXxx<GGI88O8	y(>	? "
hj!" " "s   DDc                  "   d} t        |       }t        j                  |d      }|j                         t	        |       k(  sJ |j                         dk(  sJ |j                  d      dk(  sJ |j                         dk(  sJ |j                  d       |j                         dk(  sJ |j                  d       |j                         dk(  sJ |j                  d      }|d	k(  sJ t	        |      d
k(  sJ |j                         t	        |       k(  sJ |j                  rJ |j                          |j                  sJ t        j                  t        d      5  t        j                  t               d       d d d        y # 1 sw Y   y xY w)N   some sample datarmoder         somer   2      sample data   r0   r1   )r   r3   r4   r   r5   r   r   r   r7   r8   r   r*   r9   r   )datar:   r%   vs       r&   test_python_file_readrL   h   sC   D
$-C
c$A668s4y   668q==66!9668q==FF1I668q==FF1I668q==	r
Aq6R<<668s4y   xx<GGI88O8	y(>	? ,
hjs+, , ,s    FFnbytes)r      r   d   file_offset)rN   r   r   rP   c                    d}t        j                  t        |      d      }| dk  s|dk  rRt        j                  t         j
                  d      5  |j                  ||        d d d        |j                          y |j                  ||       }t        |t        |            }t        || z   t        |            }t        |||       }|j                  d	      |j                  d      k(  sJ |j                  d
	      |j                  d
      k(  sJ |j                         |j                         k(  sJ t        |      dz  }|j                  |      |j                  |      k(  sJ t        j                  t        d      5  |j                  d       d d d        |j                          |j                  sJ y # 1 sw Y   _xY w# 1 sw Y   5xY w)Ns   data1data2data3data4data5rB   rC   r   zshould be a positive valuer1   )rQ   rM   rE   )rM         seekable)r3   r4   r   r   r*   ArrowInvalid
get_streamr8   minr5   r   OSErrorr   r7   )	rM   rQ   rJ   r%   streamstartendr:   ns	            r&   test_python_file_get_streamr^      s    (D
gdm#.A z[1_]]2??!=? 	ALL[L@	A 	
	+fE
 SY'E
kF"CI
.C
$uS/
"C ;;a; CHHQK///;;a; CHHQK/// ;;=CHHJ&&& 	D	AA;;q>SXXa[((( 
wj	1 A LLN===?	A 	A6 s   G
GGGc                      d} t        |       }t        j                  |d      }|j                  dd      }|dk(  sJ t	        |      dk(  sJ |j                  dd	      }|| k(  sJ t	        |      d
k(  sJ y )NrA   rB   rC   r      )rM   offsets   e samrG   r      )r   r3   r4   read_atr5   )rJ   r:   r%   rK   ws        r&   test_python_file_read_atre      s    D
$-C
c$A 	
		1	%A==q6Q;; 	
		A	&A99q6R<<r-   c                      d} t        |       }t        j                  |d      5 }|j                         | k(  sJ 	 d d d        y # 1 sw Y   y xY w)NrA   rB   rC   )r   r3   r4   readall)rJ   r:   r%   s      r&   test_python_file_readallrh      sI    D
$-C	s	% #yy{d"""# # #s   AAc                      d} d}t        |       }t        |      }t        j                  |d      5 }|j	                  |      dk(  sJ |d |  |d |  k(  sJ t        |      | k(  sJ 	 d d d        y # 1 sw Y   y xY w)N
   s   some sample data longer than 10rB   rC   )	bytearrayr   r3   r4   readintor5   )lengthrJ   dst_bufsrc_bufr%   s        r&   test_python_file_readintorp      s    F-DGdmG	wS	) &Qzz'"b(((w4=0007|v%%%	& & &s   4A00A9c                     dd} t        |        G fdd      } |       }t        j                  |d      5 }|j                        }t	        |      k(  sJ t        |      j                         d  k(  sJ t        d      t        |      d<   d   t        d      k(  sJ 	 d d d        y # 1 sw Y   y xY w)	Nrj   s
   0123456798c                   0    e Zd Zd Zed        Z fdZy)0test_python_file_read_buffer.<locals>.DuckReaderc                      y r)   r,   selfs    r&   r8   z6test_python_file_read_buffer.<locals>.DuckReader.close       r-   c                      yNFr,   ru   s    r&   r7   z7test_python_file_read_buffer.<locals>.DuckReader.closed       r-   c                 .    |k(  sJ t              d | S r)   )
memoryview)rv   rM   rn   rm   s     r&   read_bufferz<test_python_file_read_buffer.<locals>.DuckReader.read_buffer   s#    V###g&w//r-   N)__name__
__module____qualname__r8   propertyr7   r}   )rn   rm   s   r&   
DuckReaderrs      s!    	 
	 
		0r-   r   rB   rC      xr   )rk   r3   r4   r}   r5   r|   tobytesord)rJ   r   duck_readerr%   r:   rn   rm   s        @@r&   test_python_file_read_bufferr      s    FDoG
0 
0 ,K	{	- 'mmF#3x6!!!#&&(GGV,<<<< Y
3qzSY&&&' ' 's   A-B44B=c                      t        j                  t        d      d      5 } t        | t              sJ t        | t
              sJ 	 d d d        y # 1 sw Y   y xY w)Nr-   rB   rC   )r3   r4   r   
isinstancer   r   r%   s    r&   test_python_file_correct_abcr      sK    	ws|#	. %!!^,,,!V$$$% % %s   %AAc                      d} t        |       }t        |       }t        j                  |d      5 }t        ||      D ]  \  }}||k(  rJ  	 d d d        y # 1 sw Y   y xY w)Ns   line1
    line2
    line3
    rB   rC   )r   r3   r4   zip)rJ   r:   buf2r%   r   r=   s         r&   test_python_file_iterabler      si    D
 $-C4=D	s	% $!!Tl 	$ND(8###	$$ $ $s   A	AAc                       d } t        |        y )Nc                 @    t        j                  t        | d            S Nrb)r3   r4   r   )r$   s    r&   factoryz-test_python_file_large_seeks.<locals>.factory  s    }}T(D122r-   )r'   )r   s    r&   test_python_file_large_seeksr     s    3 gr-   c                  j   d} t        j                  |       }|j                         dk(  sJ |j                         t	        |       k(  sJ |j                  d      dk(  sJ |j                         dk(  sJ |j                  d       |j                         dk(  sJ |j                  dd       |j                         t	        |       k(  sJ |j                  d       |j                         dk(  sJ |j                  d      dk(  sJ |j                  rJ |j                          |j                  sJ y )	NrA   r   rE   rF   rT   r   rG   rH   )	r3   BufferReaderr   r   r5   r   r   r7   r8   )rJ   r%   s     r&   test_bytes_readerr     s    D
A668q==668s4y   66!9668q==FF1I668q==FF1aL668s4y   FF1I668q==66":'''xx<GGI88O8r-   c                      t        j                  t              5  t        j                  d       d d d        y # 1 sw Y   y xY w)Nzsome sample data)r   r*   r9   r3   r   r,   r-   r&   test_bytes_reader_non_bytesr   -  s0    	y	! ,
*+, , ,s	   9Ac                      dd l } d } |       } | j                          |j                         dk(  sJ |j                  J y )Nr   c                  z    ddz  } t        j                  |       }|j                  d       |j                  d      S )NrA     r   rS   )r3   r   r   r}   )rJ   readers     r&   
get_bufferz>test_bytes_reader_retains_parent_reference.<locals>.get_buffer6  s6    "T)&A!!!$$r-   s   sample)gccollect
to_pybytesparent)r   r   r:   s      r&   *test_bytes_reader_retains_parent_referencer   2  sC    % ,CBJJL>>y(((::!!!r-   c                 J   t         j                  j                  t        |       d      }t	        |d      5 }t        j                  |      }|j                         sJ |j                         rJ |j                         rJ |j                  d       d d d        t	        |d      5 }t        j                  |      }|j                         sJ |j                         rJ |j                         sJ |j                         dk(  sJ 	 d d d        t               }t        j                  |      }|j                         sJ |j                         rJ |j                         rJ |j                  d       |j                         dk(  sJ y # 1 sw Y   xY w# 1 sw Y   xY w)Nfoo.txtr   s   foobar
r   )r    pathjoinstrr   r3   r4   writablereadablerU   r   r   r   r6   )tmpdirr   r%   pfbios        r&   test_python_file_implicit_moder   B  sT   77<<FY/D	dD	 Q]]1{{}};;=  ;;=  	 
dD	 (Q]]1{{}};;=  {{}}wwyK'''( )C	s	B;;=={{}{{}HH[<<>[((() ( (s   AF'A!FFF"c                    ddg}t         j                  j                  t        |       d      }t	        |d      5 }	 t        j                  |d      }|j                         sJ |j                  |       |j                          	 d d d        t	        |d      5 }	 t        j                  |d      }|j                         sJ |j                         d	j                  |      k(  sJ 	 |j                          	 d d d        y # |j                          w xY w# 1 sw Y   xY w# |j                          w xY w# 1 sw Y   y xY w)
Ns   line1
s   line2
line3r   r   rd   rC   r   rB   r-   )r    r   r   r   r   r3   r4   r   
writelinesr8   r   r   )r   linesr   r%   s       r&   test_python_file_writelinesr   [  s   ,-E77<<FY/D	dD	 Q	ac*A::<<LLGGI 
dD	 Q	ac*A::<<668sxx...GGI  GGI  GGI sG   D:D6DD;AD&+D;DDD#&D88D;;Ec                     t               } t        j                  |       }t        j                  |      }~ |       J | j
                  rJ t        j                  |       }|j                          | j
                  sJ y r)   )r   r3   r4   weakrefrefr7   r8   )r   r   wrs      r&   test_python_file_closingr   o  sb    
)C	s	B	RB
4<<zz>	s	BHHJ:::r-   c                 d   t        d|j                  dz         D ]  }|j                  |j                  | |            }t	        |      t	        |       k(  sJ t        |      t        |       k(  sJ |j                         | j                         k(  sJ |j                  | j                  k(  rJ  y )Nr   rO   protocol)rangeHIGHEST_PROTOCOLloadsdumpsr5   r|   r   
is_mutable)r:   picklerr   r>   s       r&   check_buffer_picklingr     s    !W559: 3w}}S8}DE6{c#h&&&&!Z_444  "cnn&6666  CNN2223r-   c                     d}t        j                  |      }t        |t         j                        sJ |j                  rJ |j
                  sJ |j                         }||k(  sJ t        ||        y N	   some data)r3   	py_bufferr   Bufferr   is_cpur   r   pickle_modulevalr:   r>   s       r&   test_buffer_bytesr     sd    
C
,,s
Cc299%%%~~:::^^FS==#}-r-   c                    t        j                  dd      }|j                         dk(  sJ |j                  dk(  sJ t	        |      }|j                         dk(  sJ t        j                  |      j                  dk7  sJ t        ||        y )Nr   )addressr   r-   )r3   foreign_bufferr   r   r|   r   r   r   )r   	null_buffms      r&   test_buffer_null_datar     s    !!!!4I!S(((!!! 	9A99;#<<?""a''')]3r-   c                     d}t        j                  |      }t        |t         j                        sJ |j                  rJ |j
                  sJ t        |      }||k(  sJ t        ||        y r   )r3   r   r   r   r   r   r|   r   r   s       r&   test_buffer_memoryviewr     sa    
C
,,s
Cc299%%%~~:::_FS==#}-r-   c                     t        d      }t        j                  |      }t        |t        j                        sJ |j
                  sJ |j                  sJ t        |      }||k(  sJ t        ||        y r   )rk   r3   r   r   r   r   r   r   r   s       r&   test_buffer_bytearrayr     se    
L
!C
,,s
Cc299%%%>>>:::s^FS==#}-r-   c                      t        j                  t        d      5  t        j                  d        d d d        y # 1 sw Y   y xY w)Nz$(bytes-like object|buffer interface)r1   )r   r*   r9   r3   r   r,   r-   r&   test_buffer_invalidr     s5    	yC
E 
T  s	   ;Ac                  ~    t        j                  d      } t        j                  |       } |       J ~  |       J y r   )r3   r   r   r   )r:   r   s     r&   test_buffer_weakrefr     s;    
,,|
$C	S	B44<<r-   zval, expected_hex_buffer))s   checks
   636865636B)s   0s   0730)r-   r-   c                 X    t        j                  |       }|j                         |k(  sJ y r)   )r3   r   hex)r   expected_hex_bufferr:   s      r&   test_buffer_hexr     s'    
 ,,s
C779++++r-   c                      t        d      } d| d<   t        j                  |       }t        j                  |d      }|d   | d   k(  sJ | dxx   dz  cc<   |d   | d   k(  sJ |j
                  |k(  sJ y )N   *   r   uint8dtyperO   )rk   r3   r   np
frombufferbase)
byte_arrayr:   arrays      r&   test_buffer_to_numpyr     s     2JJqM
,,z
"CMM#W-E8z!}$$$qMQM8z!}$$$::r-   c                  z   t        j                  dt         j                        j                  d      } t	        j
                  |       }|j                  sJ |j                  sJ |j                         | j                         k(  sJ t	        j
                  | j                        }|j                  sJ |j                  sJ |j                         | j                         k(  sJ t        j                  t        d      5  t	        j
                  | j                  d d d         }d d d        y # 1 sw Y   y xY w)N   r   )r`   rE   znot contiguousr1   rT   )r   arangeint8reshaper3   r   r   r   r   r   Tr   r*   
ValueError)arrr:   s     r&   test_buffer_from_numpyr     s     ))Bbgg
&
.
.v
6C
,,s
C:::>>>>>s{{},,,
,,suu
C:::>>>>>s{{},,,	z)9	: 'll3551:&' ' 's   &D11D:c                  >   d} t        |       }t        |       }t        j                  |       }t        j                  |       }t        j                  |      }t        j                  |      }|j                  dkD  sJ |j                  |j                  k(  sJ |j                  |j                  k7  sJ |j                  |j                  k7  sJ t	        j
                  d      }t        j                  |      }|j                  |j                  j                  k(  sJ y )N
   some data!r   r   )rk   r3   r   r   r   r   ctypesrJ   )	b1b2b3buf1r   buf3buf4r   r:   s	            r&   test_buffer_addressr     s    	B	2B	2B<<D<<D<<D<<D<<!<<4<<'''<<4<<'''<<4<<'''
))A,C
,,s
C;;#**//)))r-   c                     d } d }d}t        |      }t        |      }d|d<   t        j                  |      }t        j                  |      }t        j                  |      }t        j                  |      }t        j                  t        j                  |t        j
                              }	 | ||        | ||        | ||        |||        | ||	       y )Nc                 F    | j                  |      sJ | |k(  sJ | |k7  rJ y r)   equalsabs     r&   eqztest_buffer_equals.<locals>.eq  s+    xx{{AvvF|Fr-   c                 F    | j                  |      rJ | |k(  rJ | |k7  sJ y r)   r   r  s     r&   neztest_buffer_equals.<locals>.ne  s)    88A;F|Avvr-   r   r   r   r   )rk   r3   r   r   r   int16)
r  r  r   r   r   r   r   r   r   buf5s
             r&   test_buffer_equalsr
    s    

 
B	2B	2BBqE<<D<<D<<D<<D<<b9:DtTNtTNtTNtTNtTNr-   c                      t        j                  d      } | dk(  sJ | t        d      k(  sJ | dk7  sJ t        j                  t
              5  | dk(   d d d        y # 1 sw Y   y xY w)Nr   s	   some dat1z	some data)r3   r   rk   r   r*   r9   r:   s    r&   test_buffer_eq_bytesr  )  sh    
,,|
$C,)L)))),	y	! {  s   AA%c                  r   t        d      } t        j                  |       }t        |       }t	        | |dz
        D ]  }||   | |   k(  rJ  t        j                  t              5  ||    d d d        t        j                  t              5  || dz
      d d d        y # 1 sw Y   5xY w# 1 sw Y   y xY w)Nr   rO   )rk   r3   r   r5   r   r   r*   
IndexError)rJ   r:   r]   ixs       r&   test_buffer_getitemr  3  s    ]#D
,,t
CD	AQBA #2w$r("""# 
z	" A 
z	" QBF   s   'B!
B-!B*-B6c                  X   d} t        j                  |       }|j                  d      }t        j                  d      }|j                  |      sJ |j                  dd      }t        j                  d      }|j                  |      sJ |j                  d      j                  |      sJ t	        |j                  t	        |                  dk(  sJ t        j                  t              5  |j                  d       d d d        t        j                  t              5  |j                  t	        |      dz          d d d        |d	d  j                         d
k(  sJ t        j                  t              5  |j                  dt	        |             d d d        |dd	 j                         |j                         dd  k(  sJ t        j                  t              5  |j                  dd       d d d        |dd  j                  |j                  d            sJ |dd j                  |j                  dd            sJ |dd  j                  |j                  t	        |      dz
              sJ |dd j                  |j                  t	        |      dz
  d            sJ t        j                  t              5  |d d d    d d d        t        j                  t              5  |d d d    d d d        t	        |      }t        | dz  |dz        D ]C  }t        | dz  |dz        D ]+  }||| j                         |j                         || k(  r+J  E y # 1 sw Y   bxY w# 1 sw Y   0xY w# 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   xY w)Nr   rT   s   me data!rE   s   me dr   rN   rO   rI   r-   r   r`   )
r3   r   slicer  r5   r   r*   r  r   r   )	rJ   r:   slicedr=   sliced2	expected2r]   r[   stops	            r&   test_buffer_slicingr  B  s.   D
,,t
CYYq\F||K(H=="""ii1oGW%I>>)$$$ 99Q<s### syyS"#q(((	z	" 		" 
z	"  		#c(Q, rs8 C''' 
z	" 		!SXq9!S^^%5ab%9999 
z	" 		!R qr7>>#))A,'''q8??399Q?+++rs8??399SX\2333r":SYYs3x!|Q7888	z	" DbD		z	" CaC 	CArAvq1u% P1"q&!a%( 	PDuT?--/3>>3CE$3OOOO	PP9    
 
   sH   .M !M-8M:N 	N*	N  M*-M7:NNN N)c                      t        j                  t        d      5  t        t	        j
                  d             d d d        y # 1 sw Y   y xY w)N
unhashabler1   s   123)r   r*   r9   hashr3   r   r,   r-   r&   test_buffer_hashingr  u  s6    	y	5 #R\\&!"# # #s   AAc                      d} t        j                  |       }t        j                  |t        j                        }|j
                  j                  rJ y )Ns   12345r   )r3   r   r   r   r   flags	writeable)r  	arrow_ref	numpy_refs      r&   *test_buffer_protocol_respects_immutabilityr$  {  s@     	AQIirxx8I(((((r-   c                     t        j                  ddgt         j                        } | j                  d   d   }| j                  }t        j                  |||       }t        j                  |       }~ t        j                  |t         j                        j                         ddgk(  sJ  |       J ~ |       J y )NrO   rT   r   rJ   r   )r   r   int32__array_interface__rM   r3   r   r   r   r   tolist)objaddrr   r:   r   s        r&   test_foreign_bufferr+    s    
((Aq6
*C""6*1-D::D


D$
,C	S	B==BHH-4461a&@@@44<<r-   c                     t        j                  d      } | j                  dk(  sJ | j                  sJ | j                  J d}t        j
                  |       }|j                  |       | j                         d d |k(  sJ y )NrP   s   abcder   )r3   allocate_bufferr   r   r   FixedSizeBufferWriterr   r   )r:   bitwriters      r&   test_allocate_bufferr1    s{    


S
!C88s??>>>::
C%%c*F
LL>>BQ3&&&r-   c                      t        j                  dd      } t        | t         j                        sJ | j	                  d       | j
                  dk(  sJ y )NrP   T)	resizable   )r3   r-  r   ResizableBufferresizer   r  s    r&   test_allocate_buffer_resizabler7    sE    


SD
1Cc2--...JJsO88s??r-   c                 V	   t        j                  d      }|j                  d      }t        j                  dg      }|j                  |      }t        j                  j                  t        j                  d      dd |g      }|j                         d   }|j                  |j                  k(  sJ |j                  |j                  k(  sJ |j                  |j                  k(  sJ |j                  sJ d}d}|t        |      v sJ |t        |      v sJ |j!                  d      }	|j"                  j%                  |	      }
|
j'                         d	k(  sJ |dd
 }	|j"                  j%                  |	      }
|
j'                         dk(  sJ |	j)                  |dd
       sJ d}t        j*                  t,        |      5  |j)                  t        j.                  |             d d d        d}t        j                  d	g      }|j                  |      }t        j*                  t0        |      5  |	j)                  |       d d d        t        j                  j                  t        j                  d      dd |g      }|j                         d   }t        j*                  t0        |      5  |	j)                  |       d d d        t        j*                  t0        |      5  |j3                          d d d        t        j*                  t0        |      5  |j3                          d d d        t        j*                  t0        |      5  |d    d d d        t        j*                  t0        |      5  |j'                          d d d        t        j*                  t0        |      5  | j5                  |d
       d d d        t        j*                  t0        |      5  | j5                  |d
       d d d        t        j*                  t0        |      5  t7        |       d d d        y # 1 sw Y   IxY w# 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   9xY w# 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   xY w# 1 sw Y   y xY w)Nzpyarrow.cudar   s   testing   rO   z<pyarrow.Buffer address=z$size=7 is_cpu=False is_mutable=True>rT   s   stingrE   s   stz8Device on which the data resides differs between buffersr1   z'Implemented only for data on CPU devicer   r   )r   importorskipContextr   r   buffer_from_datar3   FixedSizeBinaryArrayfrom_buffersbinarybuffersr   r   r   r   reprr  
CudaBufferfrom_bufferr   r  r*   r   r   NotImplementedErrorr   r   r|   )r   cudactxrJ   cuda_bufr   
buf_on_gpurepr1repr2buf_on_gpu_slicedcuda_sliced
msg_devicemsg	arr_shortcuda_buf_shortbuf_on_gpu_shorts                   r&   test_non_cpu_bufferrR    s    ~.D
,,q/C88ZL!D##D)H

!
!
.
.ryy|Qx@P
QCq!J??hmm+++!1!1111///    &E2ED$$$$D$$$$"((+//--.?@K!!#x///"1Q//--.?@K!!#u,,, ##HQqM222 LJ	z	4 .",,t,-. 4C($I)))4N	*#	6 1  01''44
		!a$/I !((*1-	*#	6 3  !123 
*#	6  
*#	6  
*#	6 1 
*#	6    
*#	6 4J34 
*#	6 2Hq12 
*#	6 : E. .1 13 3      4 42 2 sx   %P-2P:0Q%QQ!Q.6Q;*R!RR-P7:QQQ!Q+.Q8;RRRR(c                  >   t        j                         } t        j                  d      }t        j                  dd      }t        j                  ddd      }t        j                  ddd	      }t         j                  j                  d
ddd      }| j                  dk(  sJ | j                  dk(  sJ | j
                  du sJ | j                  dk(  sJ |j                  dk(  sJ |j                  dk(  sJ |j
                  du sJ |j                  dk(  sJ |j                  dk(  sJ |j                  dk(  sJ |j
                  du sJ |j                  dk(  sJ |j                  dk(  sJ |j                  dk(  sJ |j
                  du sJ |j                  dk(  sJ |j                  dk(  sJ |j                  dk(  sJ |j
                  du sJ |j                  dk(  sJ |j
                  du sJ | | k(  sJ | |k7  sJ ||k7  sJ ||k7  sJ ||k7  sJ || k7  sJ y )N   )hole_size_limit       )rU  range_size_limitr   )rU  rX  prefetch_limitF)rU  rX  lazyrP   r4  g?@   )time_to_first_byte_millistransfer_bandwidth_mib_per_sec ideal_bandwidth_utilization_fracmax_ideal_request_size_mibi   Tr   )r3   CacheOptionsfrom_network_metricsrU  rX  rZ  rY  )opts1opts2opts3opts4opts5opts6s         r&   test_cache_optionsrh    s`   OOEOOD1EOOD4HEOOD-1!EEOOD-1?EOO003PSRULN 1 PE
   D(((!!%5555::1$$$  D(((!!%5555::1$$$  D(((!!T)))::1$$$  D(((!!T)))::1$$$  D(((!!T)))::1$$$::E>>E>>E>>E>>E>>E>>r-   c                     t        j                         t        j                  dddd      g}|D ]'  }| j                  | j                  |            |k(  r'J  y )NrV  rW  Tr   )rU  rX  rZ  rY  )r3   r`  r   r   )r   optionsoptions      r&   test_cache_options_picklingrl  !  s_    

t!!	5G  J""=#6#6v#>?6IIIJr-   compressionbz2)r*   )marksbrotligziplz4zstdsnappyc                    t        j                  |       st        j                  |  d       d}t        j
                  j                  dd|      j                  t        j                        j                         }t        j                  |      }t        j                  ||       }t        j                  || d      }t        |t              sJ t        j                  |||       }t        j                  ||| d      }t        |t              sJ |j!                  |      sJ ||k(  sJ t        j"                  t$              5  t        j                  ||        d d d        y # 1 sw Y   y xY w)	N support is not built'  r      r   )codecT)rz  asbytes)r
   is_availabler   r   r   randomrandintastyper   r   r3   r   compressr   bytes
decompressr  r*   r   )rm  
INPUT_SIZE	test_datatest_bufcompressed_bufcompressed_bytesdecompressed_bufdecompressed_bytess           r&   test_compress_decompressr  ,  s<    k*{m#89:J""1c
";&"')  ||I&H[[=N{{9K+/1 &...}}^Z+68'7-8$H (%000""8,,,***	z	" ;
&k:; ; ;s   	E**E3c                 *   t        j                  |       st        j                  |  d       t        |       }|j                  dk(  r|j
                  J t        |j
                  t              sJ dg}| |v rt        j                  |       rJ t        j                  t              5  t        | d       d d d        t        j                  t              5  t        j                  |        d d d        t        j                  t              5  t        j                  |        d d d        t        j                  t              5  t        j                  |        d d d        y d}t        j                  j!                  dd|      j#                  t        j$                        j'                         }t)        j*                  |      }t        j                  |       }t        j                  |       }t        j                  |       }||k  sJ ||k\  sJ ||k  sJ t-        ||dz         D ]  }	t        | |	      }|j/                  |      }
|j/                  |d	      }t        |t0              sJ |j3                  |
|      }|j3                  ||d	      }t        |t0              sJ |j5                  |      sJ ||k(  sJ t        j                  t              5  |j3                  |       d d d         t7        t        j                  d
      st        j                  d       t        j                  j9                  d      }|j;                  ddd      }t)        j<                  |      }|j?                         d   }t        | |      }|j/                  |      }t        | |      }|j/                  |      }tA        |      tA        |      kD  sJ 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# 1 sw Y   xY w)Nrv  rt  r   rw  rx  ry  rO   T)r{  default_rngzRequires newer version of numpyr   )seedrP   r   )!r
   r|  r   r   namecompression_levelr   intsupports_compression_levelr*   r   minimum_compression_levelmaximum_compression_leveldefault_compression_levelr   r}  r~  r  r   r   r3   r   r   r  r  r  r  hasattrr  integersr   r@  r5   )rm  rz  no_levelr  r  r  	min_level	max_leveldefault_levelr  r  r  r  r  rngvaluesr   hard_to_compress_buffer
weak_codecweakly_compressed_bufstrong_codecstrongly_compressed_bufs                         r&   test_compression_levelr  U  s    k*{m#89:+EzzX&&...%113777 zHh33K@@@]]:& 	"+q!	"]]:& 	9++K8	9]]:& 	9++K8	9]]:& 	9++K8	9J""1c
";&"')  ||I&H//<I//<I33K@My   I%%%I%%%"9ik: /k#451 >>)T>B*E222 ++NJG"--.>
6: . < ,e444&&x000!Y...]]:& 	/-.	/ 	//2 299m,56
))

R

(C\\!S$'F
((6
C!kkmA.{I.J&//0GHi0L*334KL$%,C(DDDD}	" 	"	9 	9	9 	9	9<	/ 	/s<   )OO"O/O<PO"O,/O9<PP	c                     d} t        j                  |       }|j                  rJ t        |t         j                        sJ t        |      }|j                  sJ t        j                  t              5 }d|d<   dt        |j                        v sJ 	 d d d        t        |      }t        j                  t              5 }d|d<   dt        |j                        v sJ 	 d d d        y # 1 sw Y   VxY w# 1 sw Y   y xY w)Nr      hr   zcannot modify read-only)r3   r   r   r   r   r|   readonlyr   r*   r9   r   valuer  )r   r:   r>   excr  s        r&   #test_buffer_memoryview_is_immutabler    s    
C
,,s
C~~c299%%%_F???	y	! ;Sq	(C		N:::; 	c
A	y	! ;S!(C		N:::; ;; ;
; ;s   4C) C5)C25C>c                      t        j                  t              5  t        j                          d d d        y # 1 sw Y   y xY wr)   )r   r*   r9   r3   r   r,   r-   r&   test_uninitialized_bufferr    s.     
y	! 
		  s	   8Ac                      d} t        j                         }d}t        |      D ]  }|j                  |         |j	                         }t        |      t        |       |z  k(  sJ |j                         | |z  k(  sJ y )N
   dataabcdefr   )r3   BufferOutputStreamr   r   r6   r5   r   )r   r%   Kir:   s        r&   test_memory_output_streamr    sx    
C
AA1X 	 **,Cs8s3x!|###>>sQw&&&r-   c                  $   t        j                         } | j                  d       | j                  rJ | j	                          | j                  sJ t        j                  t              5  | j                  d       d d d        y # 1 sw Y   y xY w)N   oks   not ok)r3   r  r   r7   r6   r   r*   r   r   s    r&    test_inmemory_write_after_closedr    sh    
AGGENxx<JJL88O8	z	" 		  s   +BBc                  
   d }  | d      }t        j                          |dk(  sJ d}t        j                  |      }t	        d      D ]
  } | |        t        j                          |t        j                  |      k(  sJ y )Nc                 >    t        t        j                  |             S r)   )rk   r3   r   )	bytes_objs    r&   make_bufferz6test_buffer_protocol_ref_counting.<locals>.make_buffer  s    i011r-      foorj   )r   r   r   getrefcountr   )r  r:   r   refcount_beforer  s        r&   !test_buffer_protocol_ref_countingr    sx    2 f
CJJL&== Cooc*O2Y CJJLcooc2222r-   c                     t        j                         } d}t        j                  |d      }| j	                  |       | j	                  t        |             | j	                  t        j                  |             t        j                  t              5  | j	                  |j                  d             d d d        | j                         }|j                         |dz  k(  sJ y # 1 sw Y   2xY w)Nr  S1r   utf8r`   )r3   r  r   r   r   rk   r   r   r*   r9   decoder6   r   )r%   rJ   r   r:   s       r&    test_nativefile_write_memoryviewr    s    
AD
--D
)CGGCLGGIdOGGBLL	y	! %	F#$% **,C>>tax'''% %s   !C((C1c                  2   d} t        j                         }t        j                         }d}t        |      D ]$  }|j	                  |        |j	                  |        & |j                         t        |j                               k(  sJ t         j                  j                  t        j                  g d      gdg      }t        j                         }t        j                         }t        j                  ||j                        }t        j                  ||j                        }|j                  |       |j                  |       |j                          |j                          |j                         t        |j                               k(  sJ y )Nr  r   )rO   rT   r`   r  )r3   MockOutputStreamr  r   r   r   r5   r6   RecordBatchfrom_arraysr   RecordBatchStreamWriterschemawrite_batchr8   )r   f1f2r  r  record_batchstream_writer1stream_writer2s           r&   test_mock_output_streamr  
  s9   
 C				B				 BA1X 

 779BKKM**** >>--rxx	/B.CcUKL				B				 B//L4G4GHN//L4G4GHN|,|,779BKKM****r-   c                    d}t        |      D cg c]  }t        j                  dd       }}t        |d |       }t        j
                  j                  t        |      t                     t        d      5 }|j                  |       d d d        fd}| j                  |       |fS c c}w # 1 sw Y   (xY w)NrV  r   rx  r   c                      t                y r)   )_try_deleter   s   r&   teardownz"sample_disk_data.<locals>.teardown;  s    Dr-   )r   r}  r~  r  r    r   r   r   r	   r   r   addfinalizer)	requestr   SIZE_r   rJ   r%   r  r   s	           @r&   sample_disk_datar  0  s    D+0;
7a6>>!S!
7C
7UdD77<<FTV,D	dD	 Q	 ": 8
 s   B/;B44B=c                 >   |\  }} | |d      }|j                  d      |d d k(  sJ |j                  d      dk(  sJ |j                         dk(  sJ |j                         |dd  k(  sJ |j                         t        |      k(  sJ |j	                  d       |j                         dk(  sJ |rT|j	                  t        |      dz          |j                         t        |      dz   k(  sJ |j                  d      dk(  sJ |j	                  d      dk(  sJ |j	                  dt
        j                        d	k(  sJ |j                         d	k(  sJ t        |      d
z
  }|j	                  dt
        j                        |k(  sJ |j                         |k(  sJ y )NrB   rC   rj   r   r-   rO   r   r`   rS   rT   r  )r   r   r   r5   r   r    SEEK_CURSEEK_END)FACTORYsample_dataallow_read_out_of_boundsr   rJ   r%   	ex_lengths          r&   _check_native_file_readerr  B  sx   JD$3A66":cr"""66!9668r>>668tBCy   668s4y   FF1I668q==  	s4y1}vvx3t9q=(((vvayC 66!9>>66!R[[!Q&&&668q==D	AI66"bkk"i///668y   r-   c                 <    t        t        j                  | d       y )NF)r  )r  r3   
memory_mapr  s    r&   test_memory_map_readerr  c  s    bmm-=7<>r-   c                    | \  }}g }t        j                  |d      5 }|j                  |j                  d      |d d f       |j                  |j                  d      |dd f       |j                  |j                  d      |dd f       d d d        t	        j
                          |D ]  \  }}|j                         |k(  rJ  y # 1 sw Y   =xY w)Nr   rP   r4  i,  )r3   r  appendr}   r   r   r   )r  r   rJ   casesr%   r:   r=   s          r&   'test_memory_map_retain_buffer_referencer  h  s    !JD$E	tT	" :aammC($t*56ammC($s3-89ammC($s3-89: JJL ,X~~8+++,: :s   A0C

Cc                 8    t        t        j                  |        y r)   )r  r3   OSFiler  s    r&   test_os_file_readerr  x  s    bii)9:r-   c                  6    t        t        j                         y r)   )r'   r3   r  r,   r-   r&   test_os_file_large_seeksr  |  s    bii r-   c                 b    	 t        j                  |        y # t         j                  $ r Y y w xY wr)   )r    removeerrorr  s    r&   r  r    s(    
		$88 s    ..c                    t         j                  dk(  rt        j                  d       d}t	        |      D cg c]  }t        j                  dd       }}t        |d |       }t        j                  j                  t        |       t                     }t        |d      5 }|j                  |       d d d        t        j                   |d      }|j#                  d	       |j                  d
       |j%                         dk(  sJ |j#                  d	       |j'                  d      d
k(  sJ t        j                   |d      }|j#                  d	       |j                  d       |j#                  d	       |j#                  d	       |j'                  d      dk(  sJ t        j                   |d      }|j                  d       t        j                   |      5 }	|	j)                         |k(  sJ 	 d d d        t        j*                  t,              5  |j'                  d       d d d        |j#                  d       |j'                  d      dk(  sJ y c c}w # 1 sw Y   xY w# 1 sw Y   vxY w# 1 sw Y   OxY w)Nr   z:Multiple memory maps to same file don't work on emscriptenrV  r   rx  r   r+brC   rj   s   peekaboo      s   booapeakrd   r  r   r`   )r   r   r   xfailr   r}  r~  r  r    r   r   r   r	   r   r   r3   r  r   r   r   r   r*   IOError)
r   r  r  r   rJ   r   r%   r  f3f4s
             r&   test_memory_map_writerr    s   
|||#QRD+0;
7a6>>!S!
7C
7UdD77<<FTV,D	dD	 Q	 	d'AFF2JGGK668r>>FF2J66!9###	t%	(BGGBKHH[GGBKFF2J66!9### 
t#	&BHHV	t	 !wwyD   ! 
w	 

 FF1I66!9I 8 2! ! s)   I"II+I7I(+I47J c                 N   d}t        |      D cg c]  }t        j                  dd       }}t        |d |dz         }t        ||dz  d        }t        j
                  j                  t        |       t                     }t        j                  ||dz        }|j                  |       |j                  |       |j                  |       |j                          t        |d      5 }|j                         t        |d |       k(  sJ 	 d d d        y c c}w # 1 sw Y   y xY w)NrV  r   rx  rT   r   )r   r}  r~  r  r    r   r   r   r	   r3   create_memory_mapr   r6  r8   r   r   )	r   r  r  r   data1data2r   mmapr%   s	            r&   test_memory_map_resizer    s    D+0;
7a6>>!S!
7C
7#l	#$E#tqyl#$E77<<FTV,DdQh/DJJuKKJJuJJL	dD	 -Qvvx5Ud,,,,- - 8- -s   D*"DD$c                 "   t         j                  j                  t        |       t	                     }t        |d      }|j                          t        j                  |d      5 }|j                         dk(  sJ 	 d d d        y # 1 sw Y   y xY w)Nr   r  rC   r   )
r    r   r   r   r	   r   r8   r3   r  r   )r   r   r%   r  s       r&   test_memory_zero_lengthr     sk    77<<FTV,DT4AGGI	t%	( &J A%%%& & &s   %BBc                      t         j                  dk\  rd } n%t        j                  t        j
                  d      } t        t        j                  |        y )Nl        zARequested memory map length 4294967306 does not fit in a C size_tr1   r#   )r   maxsizer   r*   r3   ArrowCapacityErrorr'   r  r  s    r&   test_memory_map_large_seeksr    s?    
{{e!!/0 bmmNCr-   c                     t         j                  j                  t        |       t	                     }t        j                  |d      }|j                          |j                  sJ t        j                  |       y NrV  )
r    r   r   r   r	   r3   r  r8   r7   r  )r   r   r  s      r&   test_memory_map_close_remover    sN    77<<FTV,Dd+DJJL;;;IIdOr-   c                     t         j                  j                  t        |       t	                     }t        j                  |d       t        j                  |       y r  )r    r   r   r   r	   r3   r  r  )r   r   s     r&   test_memory_map_deref_remover
    s7    77<<FTV,Dt$IIdOr-   c                    d}t        |      D cg c]  }t        j                  dd       }}t        |d |       }t        j
                  j                  t        |       t                     }t        |d      5 }|j                  |       d d d        t        j                  |d      }|j                  d       t        j                  |      5 }|j                         dk(  sJ 	 d d d        t        j                  t               5  |j#                  d	       d d d        |j%                          t        j                  |d
      5 }	|	j                  d       d d d        t        j                  |      5 }
|
j                         dk(  sJ 	 d d d        y c c}w # 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   hxY w# 1 sw Y   y xY w)NrV  r   rx  r   rd   rC   r  r`   r   abs   barrS   )r   r}  r~  r  r    r   r   r   r	   r   r   r3   r  r   r   r*   r  r   r8   )r   r  r  r   rJ   r   r%   r  r  r  f5s              r&   test_os_file_writerr    sy   D+0;
7a6>>!S!
7C
7UdD77<<FTV,D	dD	 Q	 
4c	"BHHV	4 BwwyA~~ 
w	 

HHJ 
4d	# r
	4 BwwyA~~ + 8   
  sA   F:FF+	F7
G9GF(+F47G GGc                      t        j                         } t        j                  t              5  | j                  d       d d d        y # 1 sw Y   y xY w)Nfoo)r3   r  r   r*   r9   r   )nfs    r&   %test_native_file_write_reject_unicoder    s<    				 B	y	! 
  s   A		Ac                 b	   t         j                  j                  t        |       t	                     }t        |d      5 }|j                  d       d d d        t        j                  |d      5 }|j                  dk(  sJ |j                         sJ |j                         rJ |j                         sJ 	 d d d        t        j                  |d      5 }|j                  dk(  sJ |j                         sJ |j                         rJ |j                         sJ 	 d d d        t        j                  |d      5 }|j                  dk(  sJ |j                         rJ |j                         sJ |j                         rJ 	 d d d        t        j                  |d      5 }|j                  dk(  sJ |j                         rJ |j                         sJ |j                         rJ 	 d d d        t        j                  |d      5 }|j                  dk(  sJ |j                         rJ |j                         sJ |j                         rJ 	 d d d        t        j                  |d      5 }|j                  dk(  sJ |j                         rJ |j                         sJ |j                         rJ 	 d d d        t        |d      5 }|j                  d       d d d        t        j                  |d      5 }|j                  dk(  sJ |j                         sJ |j                         rJ |j                         sJ 	 d d d        t        j                  |d	      5 }|j                  d
k(  sJ |j                         sJ |j                         sJ |j                         sJ 	 d d d        t        j                  |d      5 }|j                  d
k(  sJ |j                         sJ |j                         sJ |j                         sJ 	 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   xY w# 1 sw Y   jxY w# 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   AxY w# 1 sw Y   xY w# 1 sw Y   y xY w)Nr      foooorB   rC   r   rd   r  r  zr+zrb+r  )r    r   r   r   r	   r   r   r3   r  rD   r   r   rU   r  )r   r   r%   s      r&   test_native_file_modesr  
  s   77<<FTV,D	dD	 Q	 
4c	" avv~~zz||::<zz||	 
4d	# qvv~~zz||::<zz||	 
4c	"  avv~~::<zz||::<<	  
4d	#  qvv~~::<zz||::<<	  
4d	#  qvv~~::<zz||::<<	  
4c	"  avv~~::<zz||::<<	  
dD	 Q	 
tS	! Qvv~~zz||::<zz||	 
tT	" avvzz||zz||zz||	 
tU	# qvvzz||zz||zz||	 m                   s   P$/AP1AP>?AQ'AQAQ%7AQ2Q?AR+ARAR%$P.1P;>QQQ"%Q/2Q<?R	RR"%R.r   z umask doesn't work on Emscripten)reasonc                 z   t        j                  d      }t        j                  |       t         j                  j                  t	        |       t                     }t        j                  |d      5  	 d d d        t        j                  |      j                  dz  d| z  k(  sJ t         j                  j                  t	        |       t                     }t        j                  |d      5  	 d d d        t        j                  |      j                  dz  d| z  k(  sJ y # 1 sw Y   xY w# 1 sw Y   AxY w)NrT   rd   rC   i  i  )r    umaskr   r   r   r	   r3   r  statst_moder  )r   	cur_umaskr   s      r&   test_native_file_permissionsr  I  s    
 IHHY77<<FTV,D	4c	" 774=  5(EYJ,>>>>77<<FTV,D	tS	! 774=  5(EYJ,>>>> 
 s   3D%/D1%D.1D:c                    t         j                  j                  t        |       t	                     }t        |d      5 }|j                  d       d d d        t        j                  |d      5 }|j                  rJ 	 d d d        j                  sJ t        j                  |d      5 }|j                  rJ 	 d d d        j                  sJ ||g}g d}|D ]=  }|D ]6  \  }}t        j                  t              5   t        ||      |  d d d        8 ? y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   zxY w# 1 sw Y   ixY w)Nr   r  r   rC   ))r   r,   )r   )r   )r   r,   )flushr,   )r   r,   )r   r,   )rU   r,   )r    r   r   r   r	   r   r   r3   r  r7   r  r   r*   r   getattr)	r   r   r%   os_file	mmap_filefilesmethodsmethodargss	            r&   .test_native_file_raises_ValueError_after_closer&  \  s@   77<<FTV,D	dD	 Q	 
4d	# "w>>!!>">>>	t$	' $9#####$E!G  *# 	*LFDz* *"6"D)* *	**- " "$ $"* *s/   D/D),D5 ED&)D25D>E
c                 $   d}t         j                  j                  t        |       t	                     }t        |d      5 }|j                  |j                  d             d d d        t        t        j                  |d            5 }|j                         sJ |j                         }||k(  sJ 	 d d d        j                  sJ t        t        j                  |d            5 }t        |      }dj                  |      |k(  sJ 	 d d d        t         j                  j                  t        |       t	                     }t        t        j                  |d            5 }|j                         sJ |j                  |       d d d        t        t        j                  |d            5 }|j                         }||k(  sJ 	 d d d        y # 1 sw Y   uxY w# 1 sw Y   /xY w# 1 sw Y   xY w# 1 sw Y   qxY w# 1 sw Y   y xY w)Nzfoooo
barrr
bazzz
r   utf-8r   rC    )r    r   r   r   r	   r   r   encoder   r3   r  r   r   r7   listr   )r   rJ   r   r%   filresr   path2s           r&   test_native_file_TextIOWrapperr/  z  s   D 77<<FTV,D	dD	 &Q	G$%& 
ryyD1	2 c||~~hhjd{{ :::	ryyD1	2 &cS	wwu~%%%& GGLLVdf-E	ryyT2	3 s||~~		$ 
ryyT2	3 shhjd{{ )& & & &  s<    !G	*G!*"G.&$G:2HG!G+.G7:HHc                    d}t        | dz        }t        |d      5 }|j                  |dz         d d d        t        j                  |d      }t        |      5 }|j                         dk(  sJ d}|j                  |      }t        |      t        j                  d	|z  t        |      z        k(  sJ ||j                         cxk  r	|d	z  k  sJ  J 	 d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)
Ns	   foo
quux
largefile.txtr   i r   rC   r   i N  rT   )r   r   r   r3   r  r   r   	readlinesr5   mathceil)r   rJ   r   r%   binary_filerM   r   s          r&   #test_native_file_TextIOWrapper_perfr6    s     Dv'(D	dD	  Q	w  ))Dt,K	{	# :q!Q&&&F#5zTYYq6zCI'=>>>>))+9vz99999: :	   : :s   C"A<C."C+.C7c                    ddz  }t        | dz        }t        |d      5 }|j                  |       d d d        g }t        j                  |d      5 }	 |j                         }t        |      t        |      k  sJ |j                  |       |j                  d      }t        |      dk  sJ |j                  |       |snp	 d d d        dj                  |      |k(  sJ y # 1 sw Y   xY w# 1 sw Y   ,xY w)	Ns   123
i@B r1  r   r   rC   i0u  r-   )	r   r   r   r3   r  read1r5   r  r   )r   rJ   r   r%   chunksr  s         r&   test_native_file_read1r:    s     iDv'(D	dD	 Q	 F	4d	# 	q	Aq6CI%%%MM!Aq6V###MM!  	 88Ft### 	 	s   C%A2C1%C.1C:c                    dd l }dd lm} ddz  }t        | dz        }t	        |d      5 }|j                  |       d d d        t        j                  |d      5 }|j                  |d	      }|j                  d
gdz  dgdz  d      }|j                  ||       |j                         dk  sJ 	 d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)Nr   s   a,b
i r1  r   r   rC   rj   )nrowsr  r  r  i   )pandaspandas.testingtestingr   r   r   r3   r  read_csv	DataFrameassert_frame_equalr   )r   pdtmrJ   r   r%   dfr=   s           r&   #test_native_file_pandas_text_readerrF    s     j Dv'(D	dD	 Q	 
4d	# &q[["[%<<sebjurz BC
b(+vvx:%%%& & & &s   B<AC<CCc                      t               5  t        j                  dd       d d d        t               5  t        j                  dd       d d d        y # 1 sw Y   3xY w# 1 sw Y   y xY w)Nnon_existent_filer   )r.   r3   r  r  r,   r-   r&   test_native_file_open_errorrI    s[    		  -
		%t,-		  1
)401 1- -1 1s   AA A A)c                  
   t        j                  d      } t        j                  | d      }|j                  d      dk(  sJ | j	                         dk(  sJ |j                          |j                  sJ | j                  sJ y )N	   123456789rE   buffer_sizerT      12)r3   r   BufferedInputStreamr   r   r8   r7   )rawr%   s     r&   test_buffered_input_streamrQ    sj    
//,
'C
s2A66!988:??GGI88O8:::r-   c                  z   t        j                  t        j                  d      d      } | j                  d      dk(  sJ | j	                         }| j
                  sJ |j
                  rJ |j                         sJ |j                  d      dk(  sJ |j                  d       |j                  d      dk(  sJ y )NrK  rE   rL  rT   rN     5678s   3456)r3   rO  r   r   detachr7   rU   r   r%   rP  s     r&   *test_buffered_input_stream_detach_seekablerV    s    
r|<!LA66!9
((*C88O8zz><<>>88A;'!!!HHQK88A;'!!!r-   c                     t        j                  t        j                  t        j                  d      d      d      } | j                  d      dk(  sJ | j	                         }| j
                  sJ |j
                  rJ |j                         rJ |j                  d      dk(  sJ t        j                  t              5  |j                  d       d d d        y # 1 sw Y   y xY w)NrK  rE   rL  rT   rN  rS  )r3   rO  r   r   rT  r7   rU   r   r*   EnvironmentErrorr   rU  s     r&   .test_buffered_input_stream_detach_non_seekablerY    s    

r|<!L	A 66!9
((*C88O8zz>||~88A;'!!!	'	(   s   CC'c                     t        j                  dt         j                        } t        j                  |       }t        j
                  |      }t        j                  |d      }|j                  d       | d d j                         dk(  sJ |j                          | d d j                         dk(  sJ |j                  d       |j                          |j                  sJ |j                  sJ | d d	 j                         d
k(  sJ y )NrP   r   rE   rL  rN            12  s   3456789rj   s
   123456789 )r   zerosr   r3   r   r.  BufferedOutputStreamr   r   r  r8   r7   )np_bufr:   rP  r%   s       r&   test_buffered_output_streamr`    s    XXc)F
,,v
C

"
"3
'C
3AGGEN"1:;...GGI"1:9,,,GGJGGI88O8:::#2; N222r-   c                     t        j                  dt         j                        } t        j                  |       }t        j
                  t        j                  |      d      }|j                  d       | d d j                         dk(  sJ |j                         }|j                  sJ |j                  rJ | d d j                         dk(  sJ y )NrP   r   rE   rL  rN  r[  r\  )r   r]  r   r3   r   r^  r.  r   r   rT  r7   )r_  r:   r%   rP  s       r&   "test_buffered_output_stream_detachrb    s    XXc)F
,,v
C
 8 8 =1MAGGEN"1:;...
((*C88O8zz>"1:9,,,r-   c                    t        j                  |d      }t        j                  ||      5 }|j                  rJ |j	                         sJ |j                         rJ |j                         rJ |j                         }|| k(  sJ 	 d d d        j                  sJ |j                  sJ t        j                  |d      }t        j                  ||      5 }|j                         }t        |t         j                        sJ |j                         | k(  sJ 	 d d d        y # 1 sw Y   xY w# 1 sw Y   y xY wNr   rC   )r3   r  CompressedInputStreamr7   r   r   rU   r   r}   r   r   r   )rJ   fnrm  rP  
compressedgotr:   s          r&   check_compressed_inputri  '  s(   
))BT
"C		!	!#{	3 z$$$$""$$$&&(((&&(((ood{{ ::: ))BT
"C		!	!#{	3 (z$$&#ryy)))~~4'''( ( ( (s   AD(AD4(D14D=c                     d}t        | dz        }t        j                  |d      5 }|j                  |       d d d        t	        ||d       y # 1 sw Y   xY w)N   some test data
some test data
some test data
some test data
some test data
some test data
some test data
some test data
some test data
some test data
eof
zcompressed_input_test.gzr   rq  )r   rq  r   r   ri  r   rJ   rf  r%   s       r&   test_compressed_input_gziprm  ;  sS    .D	V00	1B	2t	 	4V, s   AAc                     d}t        | dz        }t        j                  |d      5 }|j                  |       d d d        	 t	        ||d       y # 1 sw Y   xY w# t
        $ r(}t        j                  t        |             Y d }~y d }~ww xY w)Nrk  zcompressed_input_test.bz2rd   rn  )r   rn  BZ2Filer   ri  rD  r   r   )r   rJ   rf  r%   es        r&   test_compressed_input_bz2rq  D  s|    .D	V11	2B	R	 	tR/   CFs#   AA A	B%BBc                 j   t        j                  d      st        j                  d       d}t	        | dz        }t        j                  |d      5 }|j                  |       d d d        t        j                  |d      5 }|j                         }|j                         |k(  sJ 	 d d d        j                  sJ t        j                  t        j                  |      d      5 }|j                         }|j                         |k(  sJ 	 d d d        |j                  sJ t        |d      }t        j                  |d      5 }|j                         }|j                         |k(  sJ 	 d d d        |j                  sJ 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   =xY w)Nrq  gzip support is not builtrk  z!test_compressed_input_openfile.gzr   r   )r
   r|  r   r   r   rq  r   r   r3   re  r}   r   r7   pathlibPath)r   rJ   rf  r%   rg  r:   s         r&   test_compressed_input_openfilerv  O  s   f%/0.D	V99	:B	2t	 	 
	!	!"f	- ($$&~~4'''( 		!	!',,r"2F	; (z$$&~~4'''( RA		!	!!V	, (
$$&~~4'''( 88O8# ( (
( (( (s0   F&F'&F&F)FFF&)F2c                     t        j                  |d      }t        j                  ||      5 }|j                         }|| k(  sJ 	 d d d        y # 1 sw Y   y xY wrd  )r3   r  re  r   )rJ   rf  rm  rP  rg  rh  s         r&   check_compressed_concatenatedrx  j  sQ    
))BT
"C		!	!#{	3 zood{{  s   AAc                 :   d}t        | dz        }t        j                  |d      5 }|j                  |d d        d d d        t        j                  |d      5 }|j                  |dd         d d d        t	        ||d       y # 1 sw Y   JxY w# 1 sw Y   #xY w)Nrk  zcompressed_input_test2.gzr   rG   r  rq  )r   rq  r   r   rx  rl  s       r&   !test_compressed_concatenated_gziprz  q  s    .D	V11	2B	2t	 	Sb		2t	 	RS	!$F3	  s   BBBBc                     d} t        j                  |       }t        j                  t              5  t        j
                  |d       d d d        t        j                  t              5  t        j
                  |d        d d d        t        j
                  |d      5 }t        j                  t        d      5  |j                          d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   ixY w# 1 sw Y   *xY w# 1 sw Y   y xY w)Ns   foofoofoofoofoofoofoofoofoofoounknown_compressionrq  zzlib inflate failedr1   )	r3   r   r   r*   r   re  r9   r  r   )rJ   rP  rg  s      r&   test_compressed_input_invalidr}  |  s    D
//$
C	z	" =
  &;<=	y	! ,
  d+, 
	!	!#v	. *]]7*?@ 	OO	 = =, ,	 	 s;   C)C(D :C4D C%(C14C=	9D  D	c                    t        j                         }t        j                  ||      5 }|j                  rJ |j	                         rJ |j                         sJ |j                         rJ |j                  |        d d d        j                  sJ |j                  sJ t        |d      5 }|j                  |j                                d d d        y # 1 sw Y   ZxY w# 1 sw Y   y xY w)Nr   )
r3   r  CompressedOutputStreamr7   r   r   rU   r   r   r6   )rJ   rf  rm  rP  rg  r%   s         r&   make_compressed_outputr    s    



!C		"	"3	4 
$$$$&&(((""$$$&&((( :::	b$  1	       s   AC1 C&C#&C/c                     d}t        | dz        }t        ||d       t        j                  |d      5 }|j	                         }||k(  sJ 	 d d d        y # 1 sw Y   y xY w)Nrk  zcompressed_output_test.gzrq  r   )r   r  rq  r   r   )r   rJ   rf  r%   rh  s        r&   test_compressed_output_gzipr    s_    .D	V11	2B4V,	2t	 ffhd{{  s   AAc                 .   d}t        | dz        }	 t        ||d       t        j                  |d      5 }|j                         }||k(  sJ 	 d d d        y # t        $ r(}t        j                  t        |             Y d }~dd }~ww xY w# 1 sw Y   y xY w)Nrk  zcompressed_output_test.bz2rn  rB   )r   r  rD  r   r   rn  ro  r   )r   rJ   rf  rp  r%   rh  s         r&   test_compressed_output_bz2r    s    .D	V22	3BtR/ 
R	 ffhd{{   CF s"   A B	B BBBc                    t        j                  d      st        j                  d       t	        j
                  | dz  d      5 }|j                  d       d d d        | dz  j                  d      5 }t	        j
                  |d      5 }|j                  d       d d d        d d d        y # 1 sw Y   WxY w# 1 sw Y   xY w# 1 sw Y   y xY w)Nrq  rs  zctor.gzs   testzctor2.gzr   )r
   r|  r   r   r3   r  r   r   )r   rZ   r%   s      r&   test_output_stream_constructorr    s    f%/0		"	"6I#5v	> &W
:
	#	#D	) "Q&&q&1 	"VLL!	"" " 	" 	"" "s0   B,2C	B8C,B58C	=CC)r   expected_compression)zfile.bz2rn  )zfile.lz4rr  zfile.gzzpath/to/file.zstc                 N   t        j                  |      sLt        j                  t        j
                  j                        5  t        j                  |        d d d        y t        j                  |       }t        |t               sJ |j                  |k(  sJ y # 1 sw Y   y xY wr)   )
r
   r|  r   r*   r3   libArrowNotImplementedErrordetectr   r  )r   r  rz  s      r&   test_compression_detectionr    s     23]]266::; 	LL	 	 T"%'''zz1111	 	s   BB$c                  n   t        j                  t              5  t        j                  d       d d d        t        j                  t
              5  t        d        d d d        t        j                  t              5  t        d       d d d        y # 1 sw Y   dxY w# 1 sw Y   CxY w# 1 sw Y   y xY w)Nunknown)r   r*   r   r
   r|  r9   r,   r-   r&   test_unknown_compression_raisesr    s    	z	" &9%&	y	! d	z	" i 	& &  s#   BB>B+BB(+B4c                    t        j                  |       st        j                  |  d       d}t	        j
                         }t	        j                  ||       5 }|j                  |       d d d        |j                         }t        |      t        |      k  sJ t	        j                  |      }t	        j                  ||       5 }|j                         }||k(  sJ 	 d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)Nrv  rk  )r
   r|  r   r   r3   r  r  r   r6   r5   r   re  r   )rm  rJ   rP  rg  cdatarh  s         r&   test_compressed_roundtripr    s     k*{m#89:.D



!C		"	"3	4 
 LLNEu:D	!!!
//%
 C		!	!#{	3 zood{{   s   C*C6*C36C?)rn  rp  rq  rr  rs  c                    t        j                  |       st        j                  |  d       t        j
                  j                  t	        j                  g d      gdg      }t	        j                         }t	        j                  ||       }t	        j                  ||j                        }|j                  |d       |j                          |j                          |j                         }t	        j                  t	        j                   |      |       }t	        j"                  |      j%                         }||k(  sJ y )Nrv  )rO   rT   r`   rE   r   r  r`   )max_chunksize)r
   r|  r   r   r3   Tabler  r   r  r  r  r  write_tabler8   r6   re  r   RecordBatchStreamReaderread_all)rm  tablerP  rZ   r0  r:   	got_tables          r&   "test_compressed_recordbatch_streamr    s    
 k*{m#89: HH  "((?";!<seDE



!C&&sK8F''=F
uA.
LLN
LLN
,,.C%%booc&:KHF**62;;=Ir-   u   Dès Noël où un zéphyr haï me vêt de glaçons würmiens je dîne d’exquis rôtis de bœuf au kir à l’aÿ d’âge mûr & cætera !c                 >   t        |      }t        j                  t        j                  | j	                  |            ||      }g }	 |j                  t        |            }|j                  |       |sn/dj                  |      }|j                  |      | k(  sJ y )Nr-   )
iterr3   transcoding_input_streamr   r*  r   nextr  r   r  )rJ   src_encodingdest_encodingchunk_sizesrZ   outr:   s          r&   check_transcodingr    s    {#K((
L12m%F C
kk${+,

3	 
 ((3-C::m$,,,r-   zsrc_encoding, dest_encoding)r(  utf-16r  r(  )r(  z	utf-32-le)r(  z	utf-32-bec           	      z    t        t        | |ddg       t        t        | |t        j                  g d             y )Nr   r   )rO   rT   r`   r   )r  unicode_transcoding_example	itertoolscycle)r  r  s     r&   test_transcoding_input_streamr    s8     1"MD!9> 1"Mool35r-   )r(  r(  )r(  UTF8c                 d    t        j                  d      }t        j                  || |      |u sJ y )Ns   abc123)r3   r   r  r  r  rZ   s      r&   test_transcoding_no_opsr  +  s9    
 __Y'F&&m-067 7 7r-   )r(  ascii)r(  zlatin-1c                     t        j                  t        j                  dj                  |             | |      }t	        j
                  t              5  |j                  d       d d d        y # 1 sw Y   y xY w)Nu   ĀrO   )r3   r  r   r*  r   r*   UnicodeEncodeErrorr   r  s      r&   test_transcoding_encoding_errorr  5  s^     ((
56F 
)	* A  s   A..A7r  r  c                     t        j                  t        j                  d      | |      }t        j                  t
              5  |j                  d       d d d        y # 1 sw Y   y xY w)Ns   rO   )r3   r  r   r   r*   UnicodeErrorr   r  s      r&   test_transcoding_decoding_errorr  C  sU     ((
+,F 
|	$ A  s   AA(c                     d} t        j                  |       t        |       fD ],  }t        j                  |      }|j	                         | k(  r,J  t        j                  |       }t        j                  t        |            }|j	                         |k(  sJ t        j                  t        |      d      }|j	                         | k(  sJ y Nrk  rq  rm  )r3   r   r|   input_streamr   rq  r  )rJ   argrZ   gz_datas       r&   test_input_stream_bufferr  T  s    .DT"Jt$45 %%{{}$$$% mmD!G__Z01F;;=G###__Z0fEF;;=D   r-   c                  x     G d d      } t        j                   |              }|j                  d      dk(  sJ y )Nc                   *    e Zd Zd Zed        ZddZy)1test_input_stream_duck_typing.<locals>.DuckReaderc                      y r)   r,   ru   s    r&   r8   z7test_input_stream_duck_typing.<locals>.DuckReader.closef  rw   r-   c                      yry   r,   ru   s    r&   r7   z8test_input_stream_duck_typing.<locals>.DuckReader.closedi  rz   r-   Nc                      y)N   hellor,   )rv   rM   s     r&   r   z6test_input_stream_duck_typing.<locals>.DuckReader.readm  s    r-   r)   )r~   r   r   r8   r   r7   r   r,   r-   r&   r   r  d  s     	 
	 
		r-   r   r   r  )r3   r  r   )r   rZ   s     r&   test_input_stream_duck_typingr  b  s4    
 
 __Z\*F;;q>X%%%r-   c                    d}| dz  }t        t        |      d      5 }|j                  |       d d d        t        j                  |      }|j                         |k(  sJ t        j                  t        |            }|j                         |k(  sJ t        j                  t        j                  t        |                  }|j                         |k(  sJ y # 1 sw Y   xY w)Nrk  r  r   )r   r   r   r3   r  r   rt  ru  )r   rJ   	file_pathr%   rZ   s        r&   test_input_stream_file_pathr  t  s    .D'I	c)nd	# q	 __Y'F;;=D   __S^,F;;=D   __W\\#i.9:F;;=D    s   CC$c                    d}t        j                  |      }| dz  }t        t        |      d      5 }|j	                  |       d d d        t        j                  |      }|j                         |k(  sJ t        j                  t        |            }|j                         |k(  sJ t        j                  t        j                  t        |                  }|j                         |k(  sJ t        j                  |d      }|j                         |k(  sJ t        j                  |d       }|j                         |k(  sJ y # 1 sw Y   xY w)Nrk  zinput_stream.gzr   rq  r  
rq  r  r   r   r   r3   r  r   rt  ru  r   rJ   r  r  r%   rZ   s         r&   &test_input_stream_file_path_compressedr    s   .DmmD!G**I	c)nd	# q	 __Y'F;;=D   __S^,F;;=D   __W\\#i.9:F;;=D   __YF;F;;=D   __YD9F;;=G### s   EEc                    d}| dz  }t        t        |      d      5 }|j                  |       d d d        t        j                  |d      }t        |t        j                        sJ |j                         |k(  sJ t        j                  t        |      d      }t        |t        j                        sJ |j                         |k(  sJ t        j                  t        j                  t        |            d      }t        |t        j                        sJ |j                         |k(  sJ t        j                  |d      }t        |t        j                        sJ d	}t        j                  t        |
      5  t        j                  |d       d d d        t        j                  t              5  t        j                  |d       d d d        y # 1 sw Y   xY w# 1 sw Y   PxY w# 1 sw Y   y xY w)Nrk  zinput_stream.bufferedr       rL  r[  rT  r   $Buffer size must be larger than zeror1   rN   million)r   r   r   r3   r  r   rO  r   rt  ru  r  r   r*   r   r9   )r   rJ   r  r%   rZ   unbuffered_streamrN  s          r&   $test_input_stream_file_path_bufferedr    s   .D00I	c)nd	# q	 __YB7Ffb44555;;=D   __S^<Ffb44555;;=D   __W\\#i.9tLFfb44555;;=D   	qA'333
0C	z	- 3
	r23	y	! :
	y9: :' "3 3: :s#   GG+=G7G(+G47H c                    d}t        j                  |      }| dz  }t        t        |      d      5 }|j	                  |       d d d        t        j                  |dd      }|j                         |k(  sJ t        j                  t        |      d      }|j                         |k(  sJ t        j                  t        j                  t        |            d	      }|j                         |k(  sJ y # 1 sw Y   xY w)
N  some test data
some test data
some test data
some test data
some test data
some test data
some test data
some test data
some test data
some test data
some test data
some test data
some test data
some test data
some test data
some test data
some test data
some test data
some test data
some test data
some test data
some test data
some test data
some test data
some test data
some test data
some test data
some test data
some test data
some test data
some test data
some test data
some test data
some test data
some test data
some test data
some test data
some test data
some test data
some test data
some test data
some test data
some test data
some test data
some test data
some test data
some test data
some test data
some test data
some test data
some test data
some test data
some test data
some test data
some test data
some test data
some test data
some test data
some test data
some test data
some test data
some test data
some test data
some test data
some test data
some test data
some test data
some test data
some test data
some test data
some test data
some test data
some test data
some test data
some test data
some test data
some test data
some test data
some test data
some test data
some test data
some test data
some test data
some test data
some test data
some test data
some test data
some test data
some test data
some test data
some test data
some test data
some test data
some test data
some test data
some test data
some test data
some test data
some test data
some test data
eof
z'input_stream_compressed_and_buffered.gzr   r  rq  rM  rm  r[  rL  rT  r  r  s         r&   3test_input_stream_file_path_compressed_and_bufferedr    s    /DmmD!GBBI	c)nd	# q	 __YBFKF;;=D   __S^<F;;=D   __W\\#i.9tLF;;=D    s   C77D c                    d}t        |      }t        j                  |      }|j                         |k(  sJ t	        j
                  |      }t        |      }t        j                  |      }|j                         |k(  sJ |j                  d       t        j                  |d      }|j                         |k(  sJ | dz  }t        t        |      d      5 }|j                  |       d d d        t        t        |      d      5 }t        j                  |      }|j                         |k(  sJ 	 d d d        y # 1 sw Y   SxY w# 1 sw Y   y xY w)Nrk  r   rq  r  r  r   r   )
r   r3   r  r   rq  r  r   r   r   r   )r   rJ   r   rZ   r  r  r%   s          r&   test_input_stream_python_filer    s!   .D
$-C__S!F;;=D   mmD!G
'
C__S!F;;=G###HHQK__Sf5F;;=D   'I	c)nd	# q		c)nd	# %q#{{}$$$% % % %s   D=+E	=E	Ec                     d} t        j                  |       }t        j                  |      }t        j                  |      }||u sJ t        j                  |      }t        j                  |d      }|j                         | k(  sJ y r  )rq  r  r3   r   r  r   )rJ   r  r   rZ   s       r&   test_input_stream_native_filer    sq    .DmmD!G__W%F__V$FV__W%F__V8F;;=D   r-   c                    t        d      }t        j                  t              5  t	        j
                  |d       d d d        t               t               fD ]9  }t        j                  t              5  t	        j
                  |       d d d        ; t               5  t	        j
                  d       d d d        t        t        | dz        d      5 }t        j                  t        d      5  t	        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   6xY w# 1 sw Y   y xY w)	Nr-   r  r  rH  new_filer   zreadable file expectedr1   )r|   r   r*   r   r3   r  rk   r   r9   r.   r   r   )r   r:   r  r%   s       r&   test_input_stream_errorsr    s   
S/C	z	" 0
/0 XZ( !]]9% 	!OOC 	! 	!! 
	  -
+,- 
c&:%&	- ]]9,DE 	OOA	 0 0	! 	!- -	 	 sG   D5D$D0E1D<ED!$D-	0D9<E	EEc                  D   d} t        t        |             }t        j                  t        j                  |            }|j                  |        || k(  sJ t        t        |             }t        j                  t        |            }|j                  |        || k(  sJ y )Nrk  )rk   r5   r3   output_streamr   r   r|   )rJ   r:   rZ   s      r&   test_output_stream_bufferr    s    .D
CI
Cbll3/0F
LL$;;
CI
Cjo.F
LL$;;r-   c                       G d d      }  |        }t        j                  |      }|j                  d      sJ |j                  j	                         j                         dk(  sJ y )Nc                   .    e Zd Zd Zd Zed        Zd Zy)2test_output_stream_duck_typing.<locals>.DuckWriterc                 6    t        j                         | _        y r)   )r3   r  r:   ru   s    r&   __init__z;test_output_stream_duck_typing.<locals>.DuckWriter.__init__  s    ,,.DHr-   c                      y r)   r,   ru   s    r&   r8   z8test_output_stream_duck_typing.<locals>.DuckWriter.close	  rw   r-   c                      yry   r,   ru   s    r&   r7   z9test_output_stream_duck_typing.<locals>.DuckWriter.closed  rz   r-   c                 :    | j                   j                  |       y r)   )r:   r   )rv   rJ   s     r&   r   z8test_output_stream_duck_typing.<locals>.DuckWriter.write  s    HHNN4 r-   N)r~   r   r   r  r8   r   r7   r   r,   r-   r&   
DuckWriterr    s%    	/	 
	 
		!r-   r  r  )r3   r  r   r:   r6   r   )r  duck_writerrZ   s      r&   test_output_stream_duck_typingr    s[    ! ! ,Kk*F<<!!!??##%002h>>>r-   c                     d}| dz  }d } |||        |t        |      |        |t        j                  t        |            |       y )Nrk  r  c                     t        j                  |       5 }|j                  |       d d d        t        t	        |       d      5 }|j                         |k(  sJ 	 d d d        y # 1 sw Y   >xY w# 1 sw Y   y xY wr   r3   r  r   r   r   r   )r  rJ   rZ   r%   s       r&   
check_dataz0test_output_stream_file_path.<locals>.check_data  sq    i( 	FLL	#i.$' 	$1668t###	$ 	$	 		$ 	$s   A%A1%A.1A:)r   rt  ru  r   rJ   r  r  s       r&   test_output_stream_file_pathr    sG    .D(I$ y$s9~t$w||C	N+T2r-   c           	         d}| dz  }d }t        j                   |||            |k(  sJ t        j                   |t        |      |            |k(  sJ t        j                   |t        j                  t        |            |            |k(  sJ t        j                   |||d            |k(  sJ  |||d       |k(  sJ t        j                  t        d      5   |||d      |k(  sJ 	 d d d        y # 1 sw Y   y xY w)	Nrk  zoutput_stream.gzc                     t        j                  | fi |5 }|j                  |       d d d        t        t	        |       d      5 }|j                         cd d d        S # 1 sw Y   8xY w# 1 sw Y   y xY wr   r  r  rJ   kwargsrZ   r%   s        r&   r  z;test_output_stream_file_path_compressed.<locals>.check_data-  k    i262 	fLL	#i.$' 	1668	 		 		 	   A A, A),A5rq  r  zInvalid value for compressionr1   rabbit)rq  r  r   rt  ru  r   r*   r   r  s       r&   'test_output_stream_file_path_compressedr  (  s   .D++I ??:i674?????:c)nd;<DDD??7<<I/68;?@ @ @ ??9d79<@A A Ai48D@@@	z)H	I I)Tx@DHHHI I Is   !C<<Dc                    d}| dz  }d }t        j                  |d      }t        |t         j                        sJ d}t	        j
                  t        |      5   |||d      |k(  sJ 	 d d d         |||d	      |k(  sJ  |||d
      |k(  sJ  |t        |      |d	      |k(  sJ  |t        j                  t        |            |d	      }||k(  sJ y # 1 sw Y   qxY w)Nrk  output_stream.bufferedc                 R   t        j                  | fi |5 }|j                  dd      dkD  rt        |t         j                        sJ |j                  |       d d d        t        t        |       d      5 }|j                         cd d d        S # 1 sw Y   8xY w# 1 sw Y   y xY w)NrM  r   r   )	r3   r  getr   r^  r   r   r   r   r  s        r&   r  z9test_output_stream_file_path_buffered.<locals>.check_dataD  s    i262 	fzz-+a/!&"*A*ABBBLL	 #i.$' 	1668	 			 		 	s   AB7BBB&r   rL  r  r1   ir  rT  )
r3   r  r   r  r   r*   r   r   rt  ru  )r   rJ   r  r  r  rN  r>   s          r&   %test_output_stream_file_path_bufferedr  @  s    .D11I ((B'333
0C	z	- E)Tt<DDDE i26$>>>i48D@@@c)nd;tCCCS^4dKFT>>E Es   CC&c                     d}| dz  }d } |||d      }t        j                  |      |k(  sJ  |||d      }t        j                  |      |k(  sJ  |||dd      }t        j                  |      |k(  sJ y )	Nr  z(output_stream_compressed_and_buffered.gzc                     t        j                  | fi |5 }|j                  |       d d d        t        t	        |       d      5 }|j                         cd d d        S # 1 sw Y   8xY w# 1 sw Y   y xY wr   r  r  s        r&   r  zHtest_output_stream_file_path_compressed_and_buffered.<locals>.check_data`  r  r  r  rL  rT  rq  r  rq  r  )r   rJ   r  r  r>   s        r&   4test_output_stream_file_path_compressed_and_bufferedr  [  s    /DCCI 	4R8F??6"d***	4T:F??6"d***	4TvNF??6"d***r-   c                 X    d}| dz  }d } |||d      |k(  sJ  |||d      |k(  sJ y )Ns   some test data
r  c                     t        j                  | fi |}|j                  |       ~t        j                          t        t        |       d      5 }|j                         cd d d        S # 1 sw Y   y xY wr   )r3   r  r   r   r   r   r   r   r  s        r&   r  z1test_output_stream_destructor.<locals>.check_dataw  s]    !!)6v6T


#i.$' 	1668	 	 	s   A,,A5r   rL  rT  r,   r  s       r&   test_output_stream_destructorr  p  sI     D11I i15===i48D@@@r-   c                 r     d} fd} ||      |k(  sJ t        j                   ||d            |k(  sJ y )Nrk  c                 >   t        dz        }t        |d      5 }t        j                  |fi |5 }|j	                  |        d d d        d d d        t        |d      5 }|j                         cd d d        S # 1 sw Y   7xY w# 1 sw Y   ;xY w# 1 sw Y   y xY w)Noutput_stream_filer   r   )r   r   r3   r  r   r   )rJ   r  rf  r%   rZ   r   s        r&   r  z2test_output_stream_python_file.<locals>.check_data  s     ../"d^ 	#q!!!.v. #&T"#	# "d^ 	q668	 	# #	# 	#	 	s.   BA;B!B;B	 BBBrq  r  r  )r   rJ   r  s   `  r&   test_output_stream_python_filer
    s@    .D	 dt###??:d?@DHHHr-   c                    t        t                     }t        j                  t              5  t        j                  |d       d d d        t               t               fD ]9  }t        j                  t              5  t        j                  |       d d d        ; t        | dz        }t        |d      5 }	 d d d        t        |d      5 }t        j                  t        d      5  t        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   pxY w# 1 sw Y   6xY w# 1 sw Y   y xY w)Nr  r  r  r   r   zwritable file expectedr1   )r|   rk   r   r*   r   r3   r  r   r9   r   r   )r   r:   r  rf  r%   s        r&   test_output_stream_errorsr    s   
Y[
!C	z	" 1
%01 XZ( "]]9% 	"S!	" 	"" 
Vj 	!B	b$ 1	b$  1]]9,DE 	 Q	    1 1	" 	" 	  	    sG   D=D7D(E )D4?E DD%	(D14D=	9E  E	r)   )T)rn  
contextlibr   ior   r   r   r   r   r  r   rq  r3  r    rt  r   r}  r   r   r   numpyr   ImportErrorpyarrow.utilr	   pyarrowr
   r3   r'   r.   r?   rL   markparametrizer^   re   rh   rp   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r
  r  r  r  r  r$  r+  r1  r7  rR  rh  rl  paramr  r  r  r  r  r  r  r  r  r  r  r  fixturer  r  r  r  r  r  r  r  r  r   r  r  r
  r  r  r  r   r  r&  r/  r6  r:  r=  rF  rI  rQ  rV  rY  r`  rb  ri  rm  rq  rv  rx  rz  r}  r  r  r  r  ru  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r
  r  r,   r-   r&   <module>r     sJ  $  % I I  	   	    
     .  "8,B #568' 9 7'T"#
&'8%$6,
" )2(	 3.
4.. 3&',	',
 	 	 ' '" * *(  :0Pf# ) ) 
 

' C CL-`J FLLV[[&&bff.M.M&N 
	
	) 	;	 ;< FLLV[[&&bff.M.M&N 
	
	) 	LE	 LE^;('3" ( (*+L  $ 8<!B>
, ;!(V-(&D6<~ LLL )K  ?? *<>:"$. & &$1
" 3 3" 
- 
- (( - -  4 4 4 
 
   	" 9W\\)f%W\\$%v.	< 22 	
	
FLLkkrvv'F'FG
) 

" ,	,V - 655 6,+-.7.7 6,.	 6--	 
! 
!&$! $ $(:4 ! ! % %. ! !"
?,3 I I.6 + +(A& I I$ gC  	Bs   \ \\