
    g                        d dl Z d dlmZ d dlmZmZmZmZmZ d dl	Z	d dl
Z
d dlZd dlZd dlZd dlZd dlZd dlZd dlZd dlZd dlZ	 d dlZd dlmZ d dlmZ d dlZddZed        Zd Zd	 Zej@                  jC                  d
d      ej@                  jC                  dd      d               Z"d Z#d Z$d Z%d Z&d Z'd Z(d Z)d Z*d Z+d Z,d Z-d Z.d Z/d Z0d Z1d Z2d Z3d  Z4d! Z5d" Z6ej@                  jC                  d#g d$      d%        Z7ej@                  j(                  d&        Z8ej@                  j(                  d'        Z9ej@                  j(                  d(        Z:ej@                  j(                  d)        Z;d* Z<d+ Z=d, Z>d- Z?ej@                  j(                  d.        Z@ej@                  j(                  d/        ZAd0 ZBd1 ZCej@                  j(                  d2        ZDd3 ZEd4 ZFej@                  j(                  ej@                  jC                  d5 ej                  d6ej@                  j                  ej                  j                  7      8      d9d:d;d<d=g      d>               ZKej@                  j(                  ej@                  jC                  d5 ej                  d6ej@                  j                  ej                  j                  7      8      d9d:d;d<d=g      d?               ZLd@ ZMdA ZNdB ZOdC ZPdD ZQej@                  j(                  dE        ZRdF ZSej                  dG        ZU	 ddHZVdI ZWdJ ZXdK ZYdL ZZdM Z[dN Z\dO Z]dP Z^dQ Z_dR Z`dS ZadT ZbdU ZcdV Zdej@                  j                  ej                  dWk(  dXY      dZ        Zfd[ Zgd\ Zhd] Zid^ Zjej@                  j                  d_        Zld` Zmda Zndb Zodc Zpej@                  j(                  dd        Zqej@                  j(                  de        Zrdf Zsej@                  j                  dg        Ztdh Zuej@                  j                  di        Zvdj Zwej@                  j                  dk        Zxej@                  j                  dl        Zydm Zzej@                  j                  dn        Z{do Z|dp Z}ej@                  jC                  dqdrds ej                  dt      d:f ej                  du      d<fg      dv        Zdw Zej@                  jC                  d5d6d9d:d;d< ej                  d=ej@                  j                  ej                  j                  7      8      g      dx        Zej@                  jC                  d5g dy      dz        Zd{Zd| Zej@                  jC                  d}g d~      d        Zej@                  jC                  d}ddg      d        Zej@                  jC                  d}ddg      d        Zej@                  jC                  d}ddg      d        Zej@                  j                  d        Zd Zd Zej@                  j                  d        Zd Zej@                  j                  d        Zej@                  j                  d        Zej@                  j                  d        Zd Zd Zd Zd Zej@                  j                  d        Zd Zej@                  j                  d        Zd Zej@                  j                  d        Zd Zy# e$ r dZY w xY w)    N)contextmanager)BytesIOStringIOTextIOWrapperBufferedIOBaseIOBase)guid)Codecc                    t         j                  dv rt        j                  d       	 t	        j
                  d      }t        |d      5 }|j                  d       |j                  d       |j                  d       d d d        |r|5   | |       d d d        n} | |      5 }|j                         dk(  sJ |j                  d      dk(  sJ |j                         dk(  sJ |j                  d	      dk(  sJ |j                         dk(  sJ 	 d d d        t        j                  |       y # 1 sw Y   xY w# 1 sw Y   +xY w# 1 sw Y   7xY w# t        j                         w xY w)
N)win32darwin
emscriptenzneed sparse file supporttest_io)prefixwbl   
    l       s   mark
   )sysplatformpytestskiptempfilemktempopentruncateseekwritesizetellreadosunlink)file_factoryexpected_errorfilenamefs       J/var/www/openai/venv/lib/python3.12/site-packages/pyarrow/tests/test_io.pycheck_large_seeksr'   +   s,   
||88./??)4(D!QJJ|$FF;GGI " X&   h'1vvx<///vvk*k999vvx;...vvayI---vvx</// ( 			( "!
   (' 			(sT   "E 4D0?E 	D<E %A,EE 0D95E <EE EE E+c               #   p   K   t        j                  t              5  d  d d d        y # 1 sw Y   y xY wwN)r   raisesFileNotFoundError     r&   assert_file_not_foundr.   B   s!     	(	) 
*	)	)s   6*	636c                     t               } t        j                  |       }|j                         dk(  sJ d}d}|j	                  |       |j                         t        |      k(  sJ |j	                  |       ||z   }| j                         }||k(  sJ |j                  rJ |j                          |j                  sJ t        j                  t        d      5  t        j                  t                      d d d        y # 1 sw Y   y xY w)Nr   s	   engañados   foobarbinary file expectedmatch)r   pa
PythonFiler   r   lengetvalueclosedcloser   r*   	TypeErrorr   )bufr%   s1s2expectedresults         r&   test_python_file_writer?   L   s    
)C
cA668q==	B	BGGBK668s2wGGBKBwH\\^FXxx<GGI88O8	y(>	?
hj! 
@	?	?s   DDc                  "   d} t        |       }t        j                  |d      }|j                         t	        |       k(  sJ |j                         dk(  sJ |j                  d      dk(  sJ |j                         dk(  sJ |j                  d       |j                         dk(  sJ |j                  d       |j                         dk(  sJ |j                  d      }|d	k(  sJ t	        |      d
k(  sJ |j                         t	        |       k(  sJ |j                  rJ |j                          |j                  sJ t        j                  t        d      5  t        j                  t               d       d d d        y # 1 sw Y   y xY w)N   some sample datarmoder         somer   2      sample data   r0   r1   )r   r3   r4   r   r5   r   r   r   r7   r8   r   r*   r9   r   )datar:   r%   vs       r&   test_python_file_readrL   h   s;   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??!=?LL[L@? 	
	+fE
 SY'E
kF"CI
.C
$uS/
"C ;;a; CHHQK///;;a; CHHQK/// ;;=CHHJ&&& 	D	AA;;q>SXXa[((( 
wj	1A 
2 LLN===?? ?6 
2	1s   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      s@    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      sB    	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      s[    D
 $-C4=D	s	%!!TlND(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   -  s'    	y	!
*+ 
"	!	!s	   9Ac                      dd l } d } |       } | j                          |j                         dk(  sJ |j                  J y )Nr   c                  z    ddz  } t        j                  |       }|j                  d       |j                  d      S )NrA     r   rS   )r3   r   r   r}   )rJ   readers     r&   
get_bufferz>test_bytes_reader_retains_parent_reference.<locals>.get_buffer6  s6    "T)&A!!!$$r-   s   sample)gccollect
to_pybytesparent)r   r   r:   s      r&   *test_bytes_reader_retains_parent_referencer   2  sC    % ,CBJJL>>y(((::!!!r-   c                 J   t         j                  j                  t        |       d      }t	        |d      5 }t        j                  |      }|j                         sJ |j                         rJ |j                         rJ |j                  d       d d d        t	        |d      5 }t        j                  |      }|j                         sJ |j                         rJ |j                         sJ |j                         dk(  sJ 	 d d d        t               }t        j                  |      }|j                         sJ |j                         rJ |j                         rJ |j                  d       |j                         dk(  sJ y # 1 sw Y   xY w# 1 sw Y   xY w)Nfoo.txtr   s   foobar
r   )r    pathjoinstrr   r3   r4   writablereadablerU   r   r   r   r6   )tmpdirr   r%   pfbios        r&   test_python_file_implicit_moder   B  sF   77<<FY/D	dD	Q]]1{{}};;=  ;;=  	 
 
dD	Q]]1{{}};;=  {{}}wwyK''' 
 )C	s	B;;=={{}{{}HH[<<>[((() 
	 
	s   AF'A!FFF"c                    ddg}t         j                  j                  t        |       d      }t	        |d      5 }	 t        j                  |d      }|j                         sJ |j                  |       |j                          	 d d d        t	        |d      5 }	 t        j                  |d      }|j                         sJ |j                         d	j                  |      k(  sJ 	 |j                          	 d d d        y # |j                          w xY w# 1 sw Y   xY w# |j                          w xY w# 1 sw Y   y xY w)
Ns   line1
s   line2
line3r   r   rd   rC   r   rB   r-   )r    r   r   r   r   r3   r4   r   
writelinesr8   r   r   )r   linesr   r%   s       r&   test_python_file_writelinesr   [  s    ,-E77<<FY/D	dD	Q	ac*A::<<LLGGI 
 
dD	Q	ac*A::<<668sxx...GGI 
	 GGI 
	 GGI 
	sG   D:D6DD;AD&+D;DDD#&D88D;;Ec                     t               } t        j                  |       }t        j                  |      }~ |       J | j
                  rJ t        j                  |       }|j                          | j
                  sJ y r)   )r   r3   r4   weakrefrefr7   r8   )r   r   wrs      r&   test_python_file_closingr   o  sb    
)C	s	B	RB
4<<zz>	s	BHHJ:::r-   c                 d   t        d|j                  dz         D ]  }|j                  |j                  | |            }t	        |      t	        |       k(  sJ t        |      t        |       k(  sJ |j                         | j                         k(  sJ |j                  | j                  k(  rJ  y )Nr   rO   protocol)rangeHIGHEST_PROTOCOLloadsdumpsr5   r|   r   
is_mutable)r:   picklerr   r>   s       r&   check_buffer_picklingr     s    !W559:w}}S8}DE6{c#h&&&&!Z_444  "cnn&6666  CNN222 ;r-   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     s3    	yC
E
T
E 
E 
E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  )  s_    
,,|
$C,)L)))),	y	!{ 
"	!	!s   AA%c                  r   t        d      } t        j                  |       }t        |       }t	        | |dz
        D ]  }||   | |   k(  rJ  t        j                  t              5  ||    d d d        t        j                  t              5  || dz
      d d d        y # 1 sw Y   5xY w# 1 sw Y   y xY w)Nr   rO   )rk   r3   r   r5   r   r   r*   
IndexError)rJ   r:   r]   ixs       r&   test_buffer_getitemr  3  s    ]#D
,,t
CD	AQBA2w$r("""  
z	"A 
# 
z	"QBF 
#	" 
#	" 
#	"s   'B!
B-!B*-B6c                  X   d} t        j                  |       }|j                  d      }t        j                  d      }|j                  |      sJ |j                  dd      }t        j                  d      }|j                  |      sJ |j                  d      j                  |      sJ t	        |j                  t	        |                  dk(  sJ t        j                  t              5  |j                  d       d d d        t        j                  t              5  |j                  t	        |      dz          d d d        |d	d  j                         d
k(  sJ t        j                  t              5  |j                  dt	        |             d d d        |dd	 j                         |j                         dd  k(  sJ t        j                  t              5  |j                  dd       d d d        |dd  j                  |j                  d            sJ |dd j                  |j                  dd            sJ |dd  j                  |j                  t	        |      dz
              sJ |dd j                  |j                  t	        |      dz
  d            sJ t        j                  t              5  |d d d    d d d        t        j                  t              5  |d d d    d d d        t	        |      }t        | dz  |dz        D ]C  }t        | dz  |dz        D ]+  }||| j                         |j                         || k(  r+J  E y # 1 sw Y   bxY w# 1 sw Y   0xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w)Nr   rT   s   me data!rE   s   me dr   rN   rO   rI   r-   r   r`   )
r3   r   slicer  r5   r   r*   r  r   r   )	rJ   r:   slicedr=   sliced2	expected2r]   r[   stops	            r&   test_buffer_slicingr  B  s   D
,,t
CYYq\F||K(H=="""ii1oGW%I>>)$$$ 99Q<s### syyS"#q(((	z	"		" 
# 
z	"		#c(Q, 
#rs8 C''' 
z	"		!SX 
#q9!S^^%5ab%9999 
z	"		!R 
# qr7>>#))A,'''q8??399Q?+++rs8??399SX\2333r":SYYs3x!|Q7888	z	"DbD	 
#	z	"CaC 
# 	CArAvq1u%1"q&!a%(DuT?--/3>>3CE$3OOOO ) &9 
#	" 
#	"
 
#	"
 
#	" 
#	"	"	"sH   .M !M-8M:N 	N*	N  M*-M7:NNN N)c                      t        j                  t        d      5  t        t	        j
                  d             d d d        y # 1 sw Y   y xY w)N
unhashabler1   s   123)r   r*   r9   hashr3   r   r,   r-   r&   test_buffer_hashingr  u  s-    	y	5R\\&!" 
6	5	5s   AAc                      d} t        j                  |       }t        j                  |t        j                        }|j
                  j                  rJ y )Ns   12345r   )r3   r   r   r   r   flags	writeable)r  	arrow_ref	numpy_refs      r&   *test_buffer_protocol_respects_immutabilityr$  {  s@     	AQIirxx8I(((((r-   c                     t        j                  ddgt         j                        } | j                  d   d   }| j                  }t        j                  |||       }t        j                  |       }~ t        j                  |t         j                        j                         ddgk(  sJ  |       J ~ |       J y )NrO   rT   r   rJ   r   )r   r   int32__array_interface__rM   r3   r   r   r   r   tolist)objaddrr   r:   r   s        r&   test_foreign_bufferr+    s    
((Aq6
*C""6*1-D::D


D$
,C	S	B==BHH-4461a&@@@44<<r-   c                     t        j                  d      } | j                  dk(  sJ | j                  sJ | j                  J d}t        j
                  |       }|j                  |       | j                         d d |k(  sJ y )NrP   s   abcder   )r3   allocate_bufferr   r   r   FixedSizeBufferWriterr   r   )r:   bitwriters      r&   test_allocate_bufferr1    s{    


S
!C88s??>>>::
C%%c*F
LL>>BQ3&&&r-   c                      t        j                  dd      } t        | t         j                        sJ | j	                  d       | j
                  dk(  sJ y )NrP   T)	resizable   )r3   r-  r   ResizableBufferresizer   r  s    r&   test_allocate_buffer_resizabler7    sE    


SD
1Cc2--...JJsO88s??r-   c                 V	   t        j                  d      }|j                  d      }t        j                  dg      }|j                  |      }t        j                  j                  t        j                  d      dd |g      }|j                         d   }|j                  |j                  k(  sJ |j                  |j                  k(  sJ |j                  |j                  k(  sJ |j                  sJ d}d}|t        |      v sJ |t        |      v sJ |j!                  d      }	|j"                  j%                  |	      }
|
j'                         d	k(  sJ |dd
 }	|j"                  j%                  |	      }
|
j'                         dk(  sJ |	j)                  |dd
       sJ d}t        j*                  t,        |      5  |j)                  t        j.                  |             d d d        d}t        j                  d	g      }|j                  |      }t        j*                  t0        |      5  |	j)                  |       d d d        t        j                  j                  t        j                  d      dd |g      }|j                         d   }t        j*                  t0        |      5  |	j)                  |       d d d        t        j*                  t0        |      5  |j3                          d d d        t        j*                  t0        |      5  |j3                          d d d        t        j*                  t0        |      5  |d    d d d        t        j*                  t0        |      5  |j'                          d d d        t        j*                  t0        |      5  | j5                  |d
       d d d        t        j*                  t0        |      5  | j5                  |d
       d d d        t        j*                  t0        |      5  t7        |       d d d        y # 1 sw Y   IxY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   `xY w# 1 sw Y   9xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   y xY w)Nzpyarrow.cudar   s   testing   rO   z<pyarrow.Buffer address=z$size=7 is_cpu=False is_mutable=True>rT   s   stingrE   s   stz8Device on which the data resides differs between buffersr1   z'Implemented only for data on CPU devicer   r   )r   importorskipContextr   r   buffer_from_datar3   FixedSizeBinaryArrayfrom_buffersbinarybuffersr   r   r   r   reprr  
CudaBufferfrom_bufferr   r  r*   r   r   NotImplementedErrorr   r   r|   )r   cudactxrJ   cuda_bufr   
buf_on_gpurepr1repr2buf_on_gpu_slicedcuda_sliced
msg_devicemsg	arr_shortcuda_buf_shortbuf_on_gpu_shorts                   r&   test_non_cpu_bufferrR    s   ~.D
,,q/C88ZL!D##D)H

!
!
.
.ryy|Qx@P
QCq!J??hmm+++!1!1111///    &E2ED$$$$D$$$$"((+//--.?@K!!#x///"1Q//--.?@K!!#u,,, ##HQqM222 LJ	z	4",,t,- 
5 4C($I)))4N	*#	6  0 
7''44
		!a$/I !((*1-	*#	6  !12 
7 
*#	6 
7 
*#	6 
7 
*#	61 
7 
*#	6 
7 
*#	6J3 
7 
*#	6Hq1 
7 
*#	6: 
7	6E 
5	4 
7	6 
7	6 
7	6 
7	6 
7	6 
7	6 
7	6 
7	6 
7	6sx   %P-2P:0Q%QQ!Q.6Q;*R!RR-P7:QQQ!Q+.Q8;RRRR(c                  >   t        j                         } t        j                  d      }t        j                  dd      }t        j                  ddd      }t        j                  ddd	      }t         j                  j                  d
ddd      }| j                  dk(  sJ | j                  dk(  sJ | j
                  du sJ | j                  dk(  sJ |j                  dk(  sJ |j                  dk(  sJ |j
                  du sJ |j                  dk(  sJ |j                  dk(  sJ |j                  dk(  sJ |j
                  du sJ |j                  dk(  sJ |j                  dk(  sJ |j                  dk(  sJ |j
                  du sJ |j                  dk(  sJ |j                  dk(  sJ |j                  dk(  sJ |j
                  du sJ |j                  dk(  sJ |j
                  du sJ | | k(  sJ | |k7  sJ ||k7  sJ ||k7  sJ ||k7  sJ || k7  sJ y )N   )hole_size_limit       )rU  range_size_limitr   )rU  rX  prefetch_limitF)rU  rX  lazyrP   r4  g?@   )time_to_first_byte_millistransfer_bandwidth_mib_per_sec ideal_bandwidth_utilization_fracmax_ideal_request_size_mibi   Tr   )r3   CacheOptionsfrom_network_metricsrU  rX  rZ  rY  )opts1opts2opts3opts4opts5opts6s         r&   test_cache_optionsrh    s`   OOEOOD1EOOD4HEOOD-1!EEOOD-1?EOO003PSRULN 1 PE
   D(((!!%5555::1$$$  D(((!!%5555::1$$$  D(((!!T)))::1$$$  D(((!!T)))::1$$$  D(((!!T)))::1$$$::E>>E>>E>>E>>E>>E>>r-   c                     t        j                         t        j                  dddd      g}|D ]'  }| j                  | j                  |            |k(  r'J  y )NrV  rW  Tr   )rU  rX  rZ  rY  )r3   r`  r   r   )r   optionsoptions      r&   test_cache_options_picklingrl  !  sX    

t!!	5G ""=#6#6v#>?6III r-   compressionbz2)r*   )marksbrotligziplz4zstdsnappyc                    t        j                  |       s$t        j                  dj	                  |              d}t
        j                  j                  dd|      j                  t
        j                        j                         }t        j                  |      }t        j                  ||       }t        j                  || d      }t        |t              sJ t        j                   |||       }t        j                   ||| d      }t        |t              sJ |j#                  |      sJ ||k(  sJ t        j$                  t&              5  t        j                   ||        d d d        y # 1 sw Y   y xY w)	N{} support is not built'  r      r   )codecT)rz  asbytes)r
   is_availabler   r   formatr   randomrandintastyper   r   r3   r   compressr   bytes
decompressr  r*   r   )rm  
INPUT_SIZE	test_datatest_bufcompressed_bufcompressed_bytesdecompressed_bufdecompressed_bytess           r&   test_compress_decompressr  ,  s7    k*-44[ABJ""1c
";&"')  ||I&H[[=N{{9K+/1 &...}}^Z+68'7-8$H (%000""8,,,***	z	"
&k: 
#	"	"s   E66E?c                 B   t        j                  |       s$t        j                  dj	                  |              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        | |	      }|j1                  |      }
|j1                  |d	      }t        |t2              sJ |j5                  |
|      }|j5                  ||d	      }t        |t2              sJ |j7                  |      sJ ||k(  sJ t        j                  t              5  |j5                  |       d d d         t9        t        j                   d
      st        j                  d       t        j                   j;                  d      }|j=                  ddd      }t+        j>                  |      }|jA                         d   }t        | |      }|j1                  |      }t        | |      }|j1                  |      }tC        |      tC        |      kD  sJ y # 1 sw Y   !xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   y xY w# 1 sw Y   xY w)Nrv  rt  r   rw  rx  ry  rO   T)r{  default_rngzRequires newer version of numpyr   )seedrP   r   )"r
   r|  r   r   r}  namecompression_levelr   intsupports_compression_levelr*   r   minimum_compression_levelmaximum_compression_leveldefault_compression_levelr   r~  r  r  r   r   r3   r   r   r  r  r  r  hasattrr  integersr   r@  r5   )rm  rz  no_levelr  r  r  	min_level	max_leveldefault_levelr  r  r  r  r  rngvaluesr   hard_to_compress_buffer
weak_codecweakly_compressed_bufstrong_codecstrongly_compressed_bufs                         r&   test_compression_levelr  U  sk    k*-44[AB+EzzX&&...%113777 zHh33K@@@]]:&+q! ']]:&++K8 ']]:&++K8 ']]:&++K8 '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} '&&&&&&< '&s<   5O!#O.O;P'P!O+.O8;P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    ss    
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    s_    
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    ss    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  
  s4   
 C				B				 BA1X

  779BKKM**** >>--rxx	/B.CcUKL				B				 B//L4G4GHN//L4G4GHN|,|,779BKKM****r-   c                    d}t        |      D cg c]  }t        j                  dd       }}t        |d |       }t        j
                  j                  t        |      t                     t        d      5 }|j                  |       d d d        fd}| j                  |       |fS c c}w # 1 sw Y   (xY w)NrV  r   rx  r   c                      t                y r)   )_try_deleter   s   r&   teardownz"sample_disk_data.<locals>.teardown;  s    Dr-   )r   r~  r  r  r    r   r   r   r	   r   r   addfinalizer)	requestr   SIZE_r   rJ   r%   r  r   s	           @r&   sample_disk_datar  0  s    D+0;
7;a6>>!S!;C
7UdD77<<FTV,D	dD	Q	 
 ": 8
 
	s   B/;B44B=c                 >   |\  }} | |d      }|j                  d      |d d k(  sJ |j                  d      dk(  sJ |j                         dk(  sJ |j                         |dd  k(  sJ |j                         t        |      k(  sJ |j	                  d       |j                         dk(  sJ |rT|j	                  t        |      dz          |j                         t        |      dz   k(  sJ |j                  d      dk(  sJ |j	                  d      dk(  sJ |j	                  dt
        j                        d	k(  sJ |j                         d	k(  sJ t        |      d
z
  }|j	                  dt
        j                        |k(  sJ |j                         |k(  sJ y )NrB   rC   rj   r   r-   rO   r   r`   rS   rT   r  )r   r   r   r5   r   r    SEEK_CURSEEK_END)FACTORYsample_dataallow_read_out_of_boundsr   rJ   r%   	ex_lengths          r&   _check_native_file_readerr  B  sx   JD$3A66":cr"""66!9668r>>668tBCy   668s4y   FF1I668q==  	s4y1}vvx3t9q=(((vvayC 66!9>>66!R[[!Q&&&668q==D	AI66"bkk"i///668y   r-   c                 <    t        t        j                  | d       y )NF)r  )r  r3   
memory_mapr  s    r&   test_memory_map_readerr  c  s    bmm-=7<>r-   c                    | \  }}g }t        j                  |d      5 }|j                  |j                  d      |d d f       |j                  |j                  d      |dd f       |j                  |j                  d      |dd f       d d d        t	        j
                          |D ]  \  }}|j                         |k(  rJ  y # 1 sw Y   =xY w)Nr   rP   r4  i,  )r3   r  appendr}   r   r   r   )r  r   rJ   casesr%   r:   r=   s          r&   'test_memory_map_retain_buffer_referencer  h  s    !JD$E	tT	"aammC($t*56ammC($s3-89ammC($s3-89 
# JJLX~~8+++  
#	"s   A0C

Cc                 8    t        t        j                  |        y r)   )r  r3   OSFiler  s    r&   test_os_file_readerr  x  s    bii)9:r-   c                  6    t        t        j                         y r)   )r'   r3   r  r,   r-   r&   test_os_file_large_seeksr  |  s    bii r-   c                 b    	 t        j                  |        y # t         j                  $ r Y y w xY wr)   )r    removeerrorr  s    r&   r  r    s(    
		$88 s    ..c                    t         j                  dk(  rt        j                  d       d}t	        |      D cg c]  }t        j                  dd       }}t        |d |       }t        j                  j                  t        |       t                     }t        |d      5 }|j                  |       d d d        t        j                   |d      }|j#                  d	       |j                  d
       |j%                         dk(  sJ |j#                  d	       |j'                  d      d
k(  sJ t        j                   |d      }|j#                  d	       |j                  d       |j#                  d	       |j#                  d	       |j'                  d      dk(  sJ t        j                   |d      }|j                  d       t        j                   |      5 }	|	j)                         |k(  sJ 	 d d d        t        j*                  t,              5  |j'                  d       d d d        |j#                  d       |j'                  d      dk(  sJ y c c}w # 1 sw Y   xY w# 1 sw Y   vxY w# 1 sw Y   OxY w)Nr   z:Multiple memory maps to same file don't work on emscriptenrV  r   rx  r   r+brC   rj   s   peekaboo      s   booapeakrd   r  r   r`   )r   r   r   xfailr   r~  r  r  r    r   r   r   r	   r   r   r3   r  r   r   r   r   r*   IOError)
r   r  r  r   rJ   r   r%   r  f3f4s
             r&   test_memory_map_writerr    s   
|||#QRD+0;
7;a6>>!S!;C
7UdD77<<FTV,D	dD	Q	 
 	d'AFF2JGGK668r>>FF2J66!9###	t%	(BGGBKHH[GGBKFF2J66!9### 
t#	&BHHV	t	wwyD    
 
w	

 
  FF1I66!9I 8 
	2 
	 
 	s)   I"II+I7I(+I47J c                 N   d}t        |      D cg c]  }t        j                  dd       }}t        |d |dz         }t        ||dz  d        }t        j
                  j                  t        |       t                     }t        j                  ||dz        }|j                  |       |j                  |       |j                  |       |j                          t        |d      5 }|j                         t        |d |       k(  sJ 	 d d d        y c c}w # 1 sw Y   y xY w)NrV  r   rx  rT   r   )r   r~  r  r  r    r   r   r   r	   r3   create_memory_mapr   r6  r8   r   r   )	r   r  r  r   data1data2r   mmapr%   s	            r&   test_memory_map_resizer    s    D+0;
7;a6>>!S!;C
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    sb    77<<FTV,DT4AGGI	t%	(J A%%% 
)	(	(s   %BBc                      t         j                  dk\  rd } n%t        j                  t        j
                  d      } t        t        j                  |        y )Nl        zARequested memory map length 4294967306 does not fit in a C size_tr1   r#   )r   maxsizer   r*   r3   ArrowCapacityErrorr'   r  r  s    r&   test_memory_map_large_seeksr    s?    
{{e!!/0 bmmNCr-   c                     t         j                  j                  t        |       t	                     }t        j                  |d      }|j                          |j                  sJ t        j                  |       y NrV  )
r    r   r   r   r	   r3   r  r8   r7   r  )r   r   r  s      r&   test_memory_map_close_remover	    sN    77<<FTV,Dd+DJJL;;;IIdOr-   c                     t         j                  j                  t        |       t	                     }t        j                  |d       t        j                  |       y r  )r    r   r   r   r	   r3   r  r  )r   r   s     r&   test_memory_map_deref_remover    s7    77<<FTV,Dt$IIdOr-   c                    d}t        |      D cg c]  }t        j                  dd       }}t        |d |       }t        j
                  j                  t        |       t                     }t        |d      5 }|j                  |       d d d        t        j                  |d      }|j                  d       t        j                  |      5 }|j                         dk(  sJ 	 d d d        t        j                  t               5  |j#                  d	       d d d        |j%                          t        j                  |d
      5 }	|	j                  d       d d d        t        j                  |      5 }
|
j                         dk(  sJ 	 d d d        y c c}w # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   hxY w# 1 sw Y   y xY w)NrV  r   rx  r   rd   rC   r  r`   r   abs   barrS   )r   r~  r  r  r    r   r   r   r	   r   r   r3   r  r   r   r*   r  r   r8   )r   r  r  r   rJ   r   r%   r  r  r  f5s              r&   test_os_file_writerr    sP   D+0;
7;a6>>!S!;C
7UdD77<<FTV,D	dD	Q	 
 
4c	"BHHV	4BwwyA~~ 
 
w	

 
 HHJ 
4d	#r
 
$	4BwwyA~~ 
+ 8 
	 
 
 	
 
$	#	sA   F:FF+	F7
G9GF(+F47G GGc                      t        j                         } t        j                  t              5  | j                  d       d d d        y # 1 sw Y   y xY w)Nfoo)r3   r  r   r*   r9   r   )nfs    r&   %test_native_file_write_reject_unicoder    s3    				 B	y	!
 
"	!	!s   A		Ac                 b	   t         j                  j                  t        |       t	                     }t        |d      5 }|j                  d       d d d        t        j                  |d      5 }|j                  dk(  sJ |j                         sJ |j                         rJ |j                         sJ 	 d d d        t        j                  |d      5 }|j                  dk(  sJ |j                         sJ |j                         rJ |j                         sJ 	 d d d        t        j                  |d      5 }|j                  dk(  sJ |j                         rJ |j                         sJ |j                         rJ 	 d d d        t        j                  |d      5 }|j                  dk(  sJ |j                         rJ |j                         sJ |j                         rJ 	 d d d        t        j                  |d      5 }|j                  dk(  sJ |j                         rJ |j                         sJ |j                         rJ 	 d d d        t        j                  |d      5 }|j                  dk(  sJ |j                         rJ |j                         sJ |j                         rJ 	 d d d        t        |d      5 }|j                  d       d d d        t        j                  |d      5 }|j                  dk(  sJ |j                         sJ |j                         rJ |j                         sJ 	 d d d        t        j                  |d	      5 }|j                  d
k(  sJ |j                         sJ |j                         sJ |j                         sJ 	 d d d        t        j                  |d      5 }|j                  d
k(  sJ |j                         sJ |j                         sJ |j                         sJ 	 d d d        y # 1 sw Y   xY w# 1 sw Y   {xY w# 1 sw Y    xY w# 1 sw Y   xY w# 1 sw Y   jxY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   AxY w# 1 sw Y   xY w# 1 sw Y   y xY w)Nr      foooorB   rC   r   rd   r  r  zr+zrb+r  )r    r   r   r   r	   r   r   r3   r  rD   r   r   rU   r  )r   r   r%   s      r&   test_native_file_modesr  
  s   77<<FTV,D	dD	Q	 
 
4c	"avv~~zz||::<zz||	 
# 
4d	#qvv~~zz||::<zz||	 
$ 
4c	"avv~~::<zz||::<<	 
# 
4d	#qvv~~::<zz||::<<	 
$ 
4d	#qvv~~::<zz||::<<	 
$ 
4c	"avv~~::<zz||::<<	 
# 
dD	Q	 
 
tS	!Qvv~~zz||::<zz||	 
" 
tT	"avvzz||zz||zz||	 
# 
tU	#qvvzz||zz||zz||	 
$	#m 
	 
#	" 
$	# 
#	" 
$	# 
$	# 
#	" 
	 
"	! 
#	" 
$	#s   P$/AP1AP>?AQ'AQAQ%7AQ2Q?AR+ARAR%$P.1P;>QQQ"%Q/2Q<?R	RR"%R.r   z umask doesn't work on Emscripten)reasonc                 z   t        j                  d      }t        j                  |       t         j                  j                  t	        |       t                     }t        j                  |d      5  	 d d d        t        j                  |      j                  dz  d| z  k(  sJ t         j                  j                  t	        |       t                     }t        j                  |d      5  	 d d d        t        j                  |      j                  dz  d| z  k(  sJ y # 1 sw Y   xY w# 1 sw Y   AxY w)NrT   rd   rC   i  i  )r    umaskr   r   r   r	   r3   r  statst_moder  )r   	cur_umaskr   s      r&   test_native_file_permissionsr  I  s    
 IHHY77<<FTV,D	4c	" 
#774=  5(EYJ,>>>>77<<FTV,D	tS	! 
"774=  5(EYJ,>>>> 
#	"
 
"	!s   3D%/D1%D.1D:c                    t         j                  j                  t        |       t	                     }t        |d      5 }|j                  d       d d d        t        j                  |d      5 }|j                  rJ 	 d d d        j                  sJ t        j                  |d      5 }|j                  rJ 	 d d d        j                  sJ ||g}g d}|D ]=  }|D ]6  \  }}t        j                  t              5   t        ||      |  d d d        8 ? y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   zxY w# 1 sw Y   ixY w)Nr   r  r   rC   ))r   r,   )r   )r   )r   r,   )flushr,   )r   r,   )r   r,   )rU   r,   )r    r   r   r   r	   r   r   r3   r  r7   r  r   r*   r   getattr)	r   r   r%   os_file	mmap_filefilesmethodsmethodargss	            r&   .test_native_file_raises_ValueError_after_closer'  \  s   77<<FTV,D	dD	Q	 
 
4d	#w>>!!> 
$>>>	t$	'9##### 
(E!G #LFDz*"6"D) +* $ - 
	 
$	# 
(	'" +*s/   D/D),D5 ED&)D25D>E
c                 $   d}t         j                  j                  t        |       t	                     }t        |d      5 }|j                  |j                  d             d d d        t        t        j                  |d            5 }|j                         sJ |j                         }||k(  sJ 	 d d d        j                  sJ t        t        j                  |d            5 }t        |      }dj                  |      |k(  sJ 	 d d d        t         j                  j                  t        |       t	                     }t        t        j                  |d            5 }|j                         sJ |j                  |       d d d        t        t        j                  |d            5 }|j                         }||k(  sJ 	 d d d        y # 1 sw Y   uxY w# 1 sw Y   /xY w# 1 sw Y   xY w# 1 sw Y   qxY w# 1 sw Y   y xY w)Nzfoooo
barrr
bazzz
r   utf-8r   rC    )r    r   r   r   r	   r   r   encoder   r3   r  r   r   r7   listr   )r   rJ   r   r%   filresr   path2s           r&   test_native_file_TextIOWrapperr0  z  s   D 77<<FTV,D	dD	Q	G$% 
 
ryyD1	2c||~~hhjd{{ 
3 :::	ryyD1	2cS	wwu~%%% 
3 GGLLVdf-E	ryyT2	3s||~~		$ 
4 
ryyT2	3shhjd{{ 
4	3) 
	 
3	2 
3	2 
4	3 
4	3s<    !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_perfr7    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 r2  r   r   rC   i0u  r-   )	r   r   r   r3   r  read1r5   r  r   )r   rJ   r   r%   chunksr  s         r&   test_native_file_read1r;    s     iDv'(D	dD	Q	 
 F	4d	#q	Aq6CI%%%MM!Aq6V###MM!   
$ 88Ft### 
	 
$	#s   C%A2C1%C.1C:c                    dd l }dd lm} ddz  }t        | dz        }t	        |d      5 }|j                  |       d d d        t        j                  |d      5 }|j                  |d	      }|j                  d
gdz  dgdz  d      }|j                  ||       |j                         dk  sJ 	 d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)Nr   s   a,b
i r2  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_readerrG    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_errorrJ    sI    		 
		%t, 
!		 
)40 
!	  
!	 	 	 s   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_streamrR    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 )NrL  rE   rM  rT   rO     5678s   3456)r3   rP  r   r   detachr7   rU   r   r%   rQ  s     r&   *test_buffered_input_stream_detach_seekablerW    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)NrL  rE   rM  rT   rO  rT  )r3   rP  r   r   rU  r7   rU   r   r*   EnvironmentErrorr   rV  s     r&   .test_buffered_input_stream_detach_non_seekablerZ    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   rM  rO            12  s   3456789rj   s
   123456789 )r   zerosr   r3   r   r.  BufferedOutputStreamr   r   r  r8   r7   )np_bufr:   rQ  r%   s       r&   test_buffered_output_streamra    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   rM  rO  r\  r]  )r   r^  r   r3   r   r_  r.  r   r   rU  r7   )r`  r:   r%   rQ  s       r&   "test_buffered_output_stream_detachrc    s    XXc)F
,,v
C
 8 8 =1MAGGEN"1:;...
((*C88O8zz>"1:9,,,r-   c                    t        j                  |d      }t        j                  ||      5 }|j                  rJ |j	                         sJ |j                         rJ |j                         rJ |j                         }|| k(  sJ 	 d d d        j                  sJ |j                  sJ t        j                  |d      }t        j                  ||      5 }|j                         }t        |t         j                        sJ |j                         | k(  sJ 	 d d d        y # 1 sw Y   xY w# 1 sw Y   y xY wNr   rC   )r3   r  CompressedInputStreamr7   r   r   rU   r   r}   r   r   r   )rJ   fnrm  rQ  
compressedgotr:   s          r&   check_compressed_inputrj  '  s   
))BT
"C		!	!#{	3z$$$$""$$$&&(((&&(((ood{{ 
4 ::: ))BT
"C		!	!#{	3z$$&#ryy)))~~4''' 
4	3 
4	3 
4	3s   AD(AD4(D14D=c                     d}t        | dz        }t        j                  |d      5 }|j                  |       d d d        t	        ||d       y # 1 sw Y   xY w)N   some test data
some test data
some test data
some test data
some test data
some test data
some test data
some test data
some test data
some test data
eof
zcompressed_input_test.gzr   rq  )r   rq  r   r   rj  r   rJ   rg  r%   s       r&   test_compressed_input_gziprn  ;  sL    .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)Nrl  zcompressed_input_test.bz2rd   rn  )r   rn  BZ2Filer   rj  rD  r   r   )r   rJ   rg  r%   es        r&   test_compressed_input_bz2rr  D  su    .D	V11	2B	R		 
tR/ 
	  CFs#   AA A	B%BBc                 j   t        j                  d      st        j                  d       d}t	        | dz        }t        j                  |d      5 }|j                  |       d d d        t        j                  |d      5 }|j                         }|j                         |k(  sJ 	 d d d        j                  sJ t        j                  t        j                  |      d      5 }|j                         }|j                         |k(  sJ 	 d d d        |j                  sJ t        |d      }t        j                  |d      5 }|j                         }|j                         |k(  sJ 	 d d d        |j                  sJ y # 1 sw Y   #xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   =xY w)Nrq  gzip support is not builtrl  z!test_compressed_input_openfile.gzr   r   )r
   r|  r   r   r   rq  r   r   r3   rf  r}   r   r7   pathlibPath)r   rJ   rg  r%   rh  r:   s         r&   test_compressed_input_openfilerw  O  si   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re  )r3   r  rf  r   )rJ   rg  rm  rQ  rh  ri  s         r&   check_compressed_concatenatedry  j  sH    
))BT
"C		!	!#{	3zood{{ 
4	3	3s   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)Nrl  zcompressed_input_test2.gzr   rG   r  rq  )r   rq  r   r   ry  rm  s       r&   !test_compressed_concatenated_gzipr{  q  s    .D	V11	2B	2t		Sb	 
	2t		RS	 
!$F3	 
			s   BBBBc                     d} t        j                  |       }t        j                  t              5  t        j
                  |d       d d d        t        j                  t              5  t        j
                  |d        d d d        t        j
                  |d      5 }t        j                  t        d      5  |j                          d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   ixY w# 1 sw Y   *xY w# 1 sw Y   y xY w)Ns   foofoofoofoofoofoofoofoofoofoounknown_compressionrq  zzlib inflate failedr1   )	r3   r   r   r*   r   rf  r9   r  r   )rJ   rQ  rh  s      r&   test_compressed_input_invalidr~  |  s    D
//$
C	z	"
  &;< 
#	y	!
  d+ 
" 
	!	!#v	.*]]7*?@OO A 
/	. 
#	"	!	! A@ 
/	.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   rg  rm  rQ  rh  r%   s         r&   make_compressed_outputr    s    



!C		"	"3	4
$$$$&&(((""$$$&&((( 
5 :::	b$1	 
 
5	4 
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)Nrl  zcompressed_output_test.gzrq  r   )r   r  rq  r   r   )r   rJ   rg  r%   ri  s        r&   test_compressed_output_gzipr    sV    .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)Nrl  zcompressed_output_test.bz2rn  rB   )r   r  rD  r   r   rn  rp  r   )r   rJ   rg  rq  r%   ri  s         r&   test_compressed_output_bz2r    s    .D	V22	3BtR/ 
R	ffhd{{ 
	  CF		s"   A B	B BBBc                    t        j                  d      st        j                  d       t	        j
                  | dz  d      5 }|j                  d       d d d        | dz  j                  d      5 }t	        j
                  |d      5 }|j                  d       d d d        d d d        y # 1 sw Y   WxY w# 1 sw Y   xY w# 1 sw Y   y xY w)Nrq  rt  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&1VLL! 2 
*	) 
?	> 21 
*	)s0   B,2C	B8C,B58C	=CC)r   expected_compression)zfile.bz2rn  )zfile.lz4rr  zfile.gzzpath/to/file.zstc                 N   t        j                  |      sLt        j                  t        j
                  j                        5  t        j                  |        d d d        y t        j                  |       }t        |t               sJ |j                  |k(  sJ y # 1 sw Y   y xY wr)   )
r
   r|  r   r*   r3   libArrowNotImplementedErrordetectr   r  )r   r  rz  s      r&   test_compression_detectionr    sy     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    sl    	z	"9% 
#	y	!d 
"	z	"i 
#	"	 
#	"	!	!	"	"s#   BB>B+BB(+B4c                    t        j                  |       s$t        j                  dj	                  |              d}t        j                         }t        j                  ||       5 }|j                  |       d d d        |j                         }t        |      t        |      k  sJ t        j                  |      }t        j                  ||       5 }|j                         }||k(  sJ 	 d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)Nrv  rl  )r
   r|  r   r   r}  r3   r  r  r   r6   r5   r   rf  r   )rm  rJ   rQ  rh  cdatari  s         r&   test_compressed_roundtripr    s     k*-44[AB.D



!C		"	"3	4
 
5 LLNEu:D	!!!
//%
 C		!	!#{	3zood{{ 
4	3 
5	4 
4	3s   &C6D6C?D)rn  rp  rq  rr  rs  c                    t        j                  |       s$t        j                  dj	                  |              t
        j                  j                  t        j                  g d      gdg      }t        j                         }t        j                  ||       }t        j                  ||j                        }|j                  |d       |j                          |j                          |j                         }t        j                   t        j"                  |      |       }t        j$                  |      j'                         }||k(  sJ y )Nrv  )rO   rT   r`   rE   r   r  r`   )max_chunksize)r
   r|  r   r   r}  r3   Tabler  r   r  r  r  r  write_tabler8   r6   rf  r   RecordBatchStreamReaderread_all)rm  tablerQ  rZ   r0  r:   	got_tables          r&   "test_compressed_recordbatch_streamr    s    
 k*-44[AB HH  "((?";!<seDE



!C&&sK8F''=F
uA.
LLN
LLN
,,.C%%booc&:KHF**62;;=Ir-   u   Dès Noël où un zéphyr haï me vêt de glaçons würmiens je dîne d’exquis rôtis de bœuf au kir à l’aÿ d’âge mûr & cætera !c                 >   t        |      }t        j                  t        j                  | j	                  |            ||      }g }	 |j                  t        |            }|j                  |       |sn/dj                  |      }|j                  |      | k(  sJ y )Nr-   )
iterr3   transcoding_input_streamr   r+  r   nextr  r   r  )rJ   src_encodingdest_encodingchunk_sizesrZ   outr:   s          r&   check_transcodingr    s    {#K((
L12m%F C
kk${+,

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


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