
    j                     0   d dl Z d dlmZ d dl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jB                  jE                  d
d      ejB                  jE                  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 Z0d Z1d Z2d Z3d Z4d  Z5d! Z6d" Z7ejB                  jE                  d#g d$      d%        Z8ejB                  j*                  d&        Z9ejB                  j*                  d'        Z:ejB                  j*                  d(        Z;ejB                  j*                  d)        Z<d* Z=d+ Z>d, Z?d- Z@ejB                  j*                  d.        ZAejB                  j*                  d/        ZBd0 ZCd1 ZDejB                  j*                  d2        ZEd3 ZFd4 ZGejB                  j*                  ejB                  jE                  d5 ej                  d6ejB                  j                  ej                  j                  7      8      d9d:d;d<d=g      d>               ZLejB                  j*                  ejB                  jE                  d5 ej                  d6ejB                  j                  ej                  j                  7      8      d9d:d;d<d=g      d?               ZMd@ ZNdA ZOdB ZPdC ZQdD ZRejB                  j*                  dE        ZSdF ZTej                  dG        ZV	 ddHZWdI ZXdJ ZYdK ZZdL Z[dM Z\dN Z]dO Z^dP Z_dQ Z`dR ZadS ZbdT ZcdU ZddV ZedW ZfejB                  j                  ej                  dXk(  dYZ      d[        Zhd\ Zid] Zjd^ Zkd_ ZlejB                  j                  d`        Znda Zodb Zpdc Zqdd ZrejB                  j*                  de        ZsejB                  j*                  df        Ztdg ZuejB                  j                  dh        Zvdi ZwejB                  j                  dj        Zxdk ZyejB                  j                  dl        ZzejB                  j                  dm        Z{dn Z|ejB                  j                  do        Z}dp Z~dq ZejB                  jE                  drdsdt ej                   du      d:f ej                   dv      d<fg      dw        Zdx ZejB                  jE                  d5d6d9d:d;d< ej                  d=ejB                  j                  ej                  j                  7      8      g      dy        ZejB                  jE                  d5g dz      d{        Zd|Zd} ZejB                  jE                  d~g d      d        ZejB                  jE                  d~ddg      d        ZejB                  jE                  d~ddg      d        ZejB                  jE                  d~ddg      d        ZejB                  j                  d        Zd Zd ZejB                  j                  d        Zd ZejB                  j                  d        ZejB                  j                  d        ZejB                  j                  d        Zd Zd Zd Zd ZejB                  j                  d        Zd ZejB                  j                  d        Zd ZejB                  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       </tmp/pip-target-jj7clzyk/lib/python/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.   C   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?   M   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   i   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_buffer7  s6    "T)&A!!!$$r-   s   sample)gccollect
to_pybytesparent)r   r   r:   s      r&   *test_bytes_reader_retains_parent_referencer   3  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   C  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   p  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  4  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  C  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  v  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                 b	   t        j                  dt              }|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        j0                  |             d d d        d}t	        j
                  d
g      }|j                  |      }t        j,                  t2        |      5  |	j+                  |       d d d        t        j                  j                  t        j                  d      dd |g      }|j                         d   }t        j,                  t2        |      5  |	j+                  |       d d d        t        j,                  t2        |      5  |j5                          d d d        t        j,                  t2        |      5  |j5                          d d d        t        j,                  t2        |      5  |d    d d d        t        j,                  t2        |      5  |j)                          d d d        t        j,                  t2        |      5  | j7                  |d       d d d        t        j,                  t2        |      5  | j7                  |d       d d d        t        j,                  t2        |      5  t9        |       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.cuda)exc_typer   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ImportError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_bufferrT    s   ~DD
,,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   %P38Q 6Q+QQ'Q4<R0R'RR%3P= Q
QQ$'Q14Q>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       )rW  range_size_limitr   )rW  rZ  prefetch_limitF)rW  rZ  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_metricsrW  rZ  r\  r[  )opts1opts2opts3opts4opts5opts6s         r&   test_cache_optionsrj    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 )NrX  rY  Tr   )rW  rZ  r\  r[  )r3   rb  r   r   )r   optionsoptions      r&   test_cache_options_picklingrn  "  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)r|  asbytes)r
   is_availabler   r   r   randomrandintastyper   r   r3   r   compressr   bytes
decompressr  r*   r   )ro  
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)Nrx  rv  r   ry  rz  r{  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   rB  r5   )ro  r|  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  V  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)NrX  r   rz  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  1  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  C  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  d  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  i  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  y  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 emscriptenrX  r   rz  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)NrX  r   rz  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 NrX  )
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)NrX  r   rz  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                 p   t         j                  j                  t        |       t	                     }t        t         dd      }t        j                  |t         j                  t         j                  z  t         j                  z  |z  d      }t        j                  |d      5 }|j                         |k(  sJ |j                  d       d d d        t        j                  t               5 }t        j"                  |       d d d        j$                  j&                  t&        j(                  k(  sJ t        j                  |t         j*                  |z        }t        j                  |d      5 }|j                         |k(  sJ |j-                         dk(  sJ 	 d d d        t        j                  t               5 }t        j"                  |       d d d        |j$                  j&                  t&        j(                  k(  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   YxY w)NO_BINARYr     r   rC   r  r   )r    r   r   r   r	   getattrr   O_CREATO_WRONLYO_TRUNCr3   r  filenor   r   r*   rY   fstatr  errnoEBADFO_RDONLYr   )r   r   binary_flagfdr%   r  s         r&   test_os_file_raw_fdr    s   77<<FTV,D"j!,K	rzzBKK/"**<{J
B	2D	! QxxzR	 
w	 3
99??ekk)))	r{{[0	1B	2D	! "QxxzRvvx6!!!" 
w	 3
99??ekk)))  
" " s0   $'H,H1+H >H,HH H),H5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  r  )r    umaskr   r   r   r	   r3   r  statst_moder  )r   	cur_umaskr   s      r&   test_native_file_permissionsr-  b  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   r  )	r   r   r%   os_file	mmap_filefilesmethodsmethodargss	            r&   .test_native_file_raises_ValueError_after_closer6  u  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?    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_perfrF    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 rA  r   r   rC   i0u  r-   )	r   r   r   r3   r  read1r5   r  r   )r   rJ   r   r%   chunksr  s         r&   test_native_file_read1rJ    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 rA  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_readerrV    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_errorrY    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_streamra    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 )Nr[  rE   r\  rT   r^     5678s   3456)r3   r_  r   r   detachr7   rU   r   r%   r`  s     r&   *test_buffered_input_stream_detach_seekablerf    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)Nr[  rE   r\  rT   r^  rc  )r3   r_  r   r   rd  r7   rU   r   r*   EnvironmentErrorr   re  s     r&   .test_buffered_input_stream_detach_non_seekableri    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   r\  r^            12  s   3456789rj   s
   123456789 )r   zerosr   r3   r   r.  BufferedOutputStreamr   r   r/  r8   r7   )np_bufr:   r`  r%   s       r&   test_buffered_output_streamrp    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   r\  r^  rk  rl  )r   rm  r   r3   r   rn  r.  r   r   rd  r7   )ro  r:   r%   r`  s       r&   "test_buffered_output_stream_detachrr  /  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   fnro  r`  
compressedgotr:   s          r&   check_compressed_inputry  @  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   rs  )r   rs  r   r   ry  r   rJ   rv  r%   s       r&   test_compressed_input_gzipr}  T  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)Nr{  zcompressed_input_test.bz2rd   rp  )r   rp  BZ2Filer   ry  rF  r   r   )r   rJ   rv  r%   es        r&   test_compressed_input_bz2r  ]  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)Nrs  gzip support is not builtr{  z!test_compressed_input_openfile.gzr   r   )r
   r~  r   r   r   rs  r   r   r3   ru  r}   r   r7   pathlibPath)r   rJ   rv  r%   rw  r:   s         r&   test_compressed_input_openfiler  h  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rt  )r3   r  ru  r   )rJ   rv  ro  r`  rw  rx  s         r&   check_compressed_concatenatedr    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)Nr{  zcompressed_input_test2.gzr   rG   r  rs  )r   rs  r   r   r  r|  s       r&   !test_compressed_concatenated_gzipr    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_compressionrs  zzlib inflate failedr1   )	r3   r   r   r*   r   ru  r9   r  r   )rJ   r`  rw  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   rv  ro  r`  rw  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)Nr{  zcompressed_output_test.gzrs  r   )r   r  rs  r   r   )r   rJ   rv  r%   rx  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)Nr{  zcompressed_output_test.bz2rp  rB   )r   r  rF  r   r   rp  r  r   )r   rJ   rv  r  r%   rx  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)Nrs  r  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.bz2rp  )zfile.lz4rt  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  r|  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)Nrx  r{  )r
   r~  r   r   r3   r  r  r   r6   r5   r   ru  r   )ro  rJ   r`  rw  cdatarx  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?)rp  rr  rs  rt  ru  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 )Nrx  )rO   rT   r`   rE   r   r  r`   )max_chunksize)r
   r~  r   r   r3   Tabler  r   r  r  r  r  write_tabler8   r6   ru  r   RecordBatchStreamReaderread_all)ro  tabler`  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)r8  utf-16r  r8  )r8  z	utf-32-le)r8  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  4  s8     1"MD!9> 1"Mool35r-   )r8  r8  )r8  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  D  s9    
 __Y'F&&m-067 7 7r-   )r8  ascii)r8  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  N  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  \  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 Nr{  rs  ro  )r3   r   r|   input_streamr   rs  r  )rJ   argrZ   gz_datas       r&   test_input_stream_bufferr  m  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.close  rw   r-   c                      yry   r,   ru   s    r&   r7   z8test_input_stream_duck_typing.<locals>.DuckReader.closed  rz   r-   Nc                      y)N   hellor,   )rv   rM   s     r&   r   z6test_input_stream_duck_typing.<locals>.DuckReader.read  s    r-   r)   )r~   r   r   r8   r   r7   r   r,   r-   r&   r   r  }  s     	 
	 
		r-   r   r   r  )r3   r  r   )r   rZ   s     r&   test_input_stream_duck_typingr  {  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)Nr{  r  r   )r   r   r   r3   r  r   r  r  )r   rJ   	file_pathr%   rZ   s        r&   test_input_stream_file_pathr    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)Nr{  zinput_stream.gzr   rs  r  
rs  r  r   r   r   r3   r  r   r  r  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)Nr{  zinput_stream.bufferedr       r\  r]  rV  r   $Buffer size must be larger than zeror1   rN   million)r   r   r   r3   r  r   r_  r   r  r  r  r   r*   r   r9   )r   rJ   r  r%   rZ   unbuffered_streamrP  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  rs  r]  ro  r]  r\  rV  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)Nr{  r   rs  r  r  r   r   )
r   r3   r  r   rs  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  )rs  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  rX  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 )Nr{  )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 )Nr{  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_data6  sq    i( 	FLL	#i.$' 	$1668t###	$ 	$	 		$ 	$s   A%A1%A.1A:)r   r  r  r   rJ   r  r   s       r&   test_output_stream_file_pathr  2  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)	Nr{  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_dataF  k    i262 	fLL	#i.$' 	1668	 		 		 	   A A, A),A5rs  r  zInvalid value for compressionr1   rabbit)rs  r  r   r  r  r   r*   r   r  s       r&   'test_output_stream_file_path_compressedr
  A  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)Nr{  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)Nr]  r   r   )	r3   r  getr   rn  r   r   r   r   r  s        r&   r   z9test_output_stream_file_path_buffered.<locals>.check_data]  s    i262 	fzz-+a/!&"*A*ABBBLL	 #i.$' 	1668	 			 		 	s   AB7BBB&r   r\  r  r1   ir  rV  )
r3   r  r   r  r   r*   r   r   r  r  )r   rJ   r  r   r  rP  r>   s          r&   %test_output_stream_file_path_bufferedr  Y  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_datay  r  r  r  r\  rV  rs  r  rs  r  )r   rJ   r  r   r>   s        r&   4test_output_stream_file_path_compressed_and_bufferedr  t  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_data  s]    !!)6v6T


#i.$' 	1668	 	 	s   A,,A5r   r\  rV  r,   r  s       r&   test_output_stream_destructorr    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 )Nr{  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  rv  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rs  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  rv  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)rp  
contextlibr   r  ior   r   r   r   r   r  r   rs  rC  r    r  r   r  r   r   r   numpyr   r<  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  rT  rj  rn  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-  r6  r?  rF  rJ  rM  rV  rY  ra  rf  ri  rp  rr  ry  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  r  r  r
  r  r  r  r  r  r,   r-   r&   <module>r&     sR  $  %  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*0<~ 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$ WD  	Bs   
\
 
\\