
    z-Ph                        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n# e$ r dZY nw xY w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         !                    d
d          ej         !                    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         !                    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         !                    d5 ejG        d6ej         H                    ejI        jJ        7          8          d9d:d;d<d=g          d>                         ZKej         j        ej         !                    d5 ejG        d6ej         H                    ejI        jJ        7          8          d9d:d;d<d=g          d?                         ZLd@ ZMdA ZNdB ZOdC ZPdD ZQej         j        dE             ZRdF ZSejT        dG             ZU	 ddIZVdJ ZWdK ZXdL ZYdM ZZdN Z[dO Z\dP Z]dQ Z^dR Z_dS Z`dT ZadU ZbdV ZcdW Zdej         H                    eje        dXk    dYZ          d[             Zfd\ Zgd] Zhd^ Zid_ Zjej         jk        d`             Zlda Zmdb Zndc Zodd Zpej         j        de             Zqej         j        df             Zrdg Zsej         j        dh             Ztdi Zuej         j        dj             Zvdk Zwej         j        dl             Zxej         j        dm             Zydn Zzej         j        do             Z{dp Z|dq Z}ej         !                    drdsdt ej~        du          d:f ej~        dv          d<fg          dw             Zdx Zej         !                    d5d6d9d:d;d< ejG        d=ej         H                    ejI        jJ        7          8          g          dy             Zej         !                    d5g dz          d{             Zd|Zd} Zej         !                    d~g d          d             Zej         !                    d~ddg          d             Zej         !                    d~ddg          d             Zej         !                    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 ZdS )    N)contextmanager)BytesIOStringIOTextIOWrapperBufferedIOBaseIOBase)guid)Codecc                 >   t           j        dv rt          j        d           	 t	          j        d          }t          |d          5 }|                    d           |                    d           |	                    d           d d d            n# 1 swxY w Y   |r&|5   | |           d d d            n# 1 swxY w Y   n | |          5 }|
                                dk    sJ |                    d          dk    sJ |                                dk    sJ |                    d	          dk    sJ |                                dk    sJ 	 d d d            n# 1 swxY w Y   t          j        |           d S # 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       U/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/pyarrow/tests/test_io.pycheck_large_seeksr'   +   s^   
|888.///?)444(D!! 	QJJ|$$$FF;GGI	 	 	 	 	 	 	 	 	 	 	 	 	 	 	  		0 ' 'X&&&' ' ' ' ' ' ' ' ' ' ' ' ' ' ' h'' 01vvxx<////vvk**k9999vvxx;....vvayyI----vvxx</////0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 		(	(sy   %F 	A B	F BF BF $B<0F <C  F C F BE%F %E))F ,E)-F Fc               #   v   K   t          j        t                    5  d V  d d d            d S # 1 swxY w Y   d S N)r   raisesFileNotFoundError     r&   assert_file_not_foundr.   B   s      	(	)	)                   s   .22c                  ^   t                      } t          j        |           }|                                dk    sJ d}d}|                    |           |                                t          |          k    sJ |                    |           ||z   }|                                 }||k    sJ |j        rJ |                                 |j        sJ t          j
        t          d          5  t          j        t                                 d d d            d S # 1 swxY w Y   d S )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   sQ   
))C
cA6688q====	B	BGGBKKK6688s2wwGGBKKKBwH\\^^FXxGGIII8OOO	y(>	?	?	? " "
hjj!!!" " " " " " " " " " " " " " " " " "s   4!D""D&)D&c                     d} t          |           }t          j        |d          }|                                t	          |           k    sJ |                                dk    sJ |                    d          dk    sJ |                                dk    sJ |                    d           |                                dk    sJ |                    d           |                                dk    sJ |                    d          }|d	k    sJ t	          |          d
k    sJ |                                t	          |           k    sJ |j        rJ |	                                 |j        sJ t          j        t          d          5  t          j        t                      d           d d d            d S # 1 swxY w Y   d S )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6688s4yy    6688q====66!996688q====FF1III6688q====FF1III6688q====	r

Aq66R<<<<6688s4yy    xGGIII8OOO	y(>	?	?	? , ,
hjjs++++, , , , , , , , , , , , , , , , , ,s   #GG
G
nbytes)r      r   d   file_offset)rN   r   r   rP   c                 f   d}t          j        t          |          d          }| dk     s|dk     ret          j        t           j        d          5  |                    ||            d d d            n# 1 swxY w Y   |                                 d S |                    ||           }t          |t          |                    }t          || z   t          |                    }t          |||                   }|
                    d	          |
                    d          k    sJ |
                    d
	          |
                    d
          k    sJ |
                                |
                                k    sJ t          |          dz  }|
                    |          |
                    |          k    sJ t          j        t          d          5  |                    d           d d d            n# 1 swxY w Y   |                                 |j        sJ d S )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
gdmm#...A zz[1__]2?!=? ? ? 	A 	ALL[L@@@	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	
			+fEE
 SYY''E
kF"CII
.
.C
$uSy/
"
"C ;;a;  CHHQKK////;;a;  CHHQKK//// ;;==CHHJJ&&&& 	D		AA;;q>>SXXa[[(((( 
wj	1	1	1  A               LLNNN=s$   A66A:=A:'H		HHc                  $   d} t          |           }t          j        |d          }|                    dd          }|dk    sJ t	          |          dk    sJ |                    dd	          }|| k    sJ t	          |          d
k    sJ d S )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====q66Q;;;; 	
		A	&&A9999q66R<<<<<<r-   c                      d} t          |           }t          j        |d          5 }|                                | k    sJ 	 d d d            d S # 1 swxY w Y   d S )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Ac                  :   d} d}t          |           }t          |          }t          j        |d          5 }|                    |          dk    sJ |d |          |d |          k    sJ t          |          | k    sJ 	 d d d            d S # 1 swxY w Y   d S )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dmmG	wS	)	)	) &Qzz'""b((((ww4=00007||v%%%%%	& & & & & & & & & & & & & & & & & &s   A	BBBc                     dd} t          |            G fdd          } |            }t          j        |d          5 }|                              }t	          |          k    sJ t          |                                          d          k    sJ t          d          t          |          d<   d         t          d          k    sJ 	 d d d            d S # 1 swxY w Y   d S )	Nrj   s
   0123456798c                   8    e Zd Zd Zed             Z fdZdS )0test_python_file_read_buffer.<locals>.DuckReaderc                     d S r)   r,   selfs    r&   r8   z6test_python_file_read_buffer.<locals>.DuckReader.close       Dr-   c                     dS NFr,   ru   s    r&   r7   z7test_python_file_read_buffer.<locals>.DuckReader.closed       5r-   c                 B    |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w//r-   N)__name__
__module____qualname__r8   propertyr7   r}   )rn   rm   s   r&   
DuckReaderrs      s]        	 	 	 
	 	 
		0 	0 	0 	0 	0 	0 	0 	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ooG
0 
0 
0 
0 
0 
0 
0 
0 
0 
0 
0 *,,K	{	-	-	- 'mmF##3xx6!!!!#&&((GGVG,<<<<< YY
3qzSYY&&&&&' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' 's   BC((C,/C,c                      t          j        t          d          d          5 } t          | t                    sJ t          | t
                    sJ 	 d d d            d S # 1 swxY w Y   d S )Nr-   rB   rC   )r3   r4   r   
isinstancer   r   r%   s    r&   test_python_file_correct_abcr      s    	ws||#	.	.	. %!!^,,,,,!V$$$$$$% % % % % % % % % % % % % % % % % %s   /A!!A%(A%c                      d} t          |           }t          |           }t          j        |d          5 }t          ||          D ]\  }}||k    sJ 	 d d d            d S # 1 swxY w Y   d S )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	%	%	% $!!Tll 	$ 	$ND(8#####	$$ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $s   A$$A(+A(c                  *    d } t          |            d S )Nc                 F    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1222r-   )r'   )r   s    r&   test_python_file_large_seeksr     s'    3 3 3 gr-   c                     d} t          j        |           }|                                dk    sJ |                                t	          |           k    sJ |                    d          dk    sJ |                                dk    sJ |                    d           |                                dk    sJ |                    dd           |                                t	          |           k    sJ |                    d           |                                dk    sJ |                    d          dk    sJ |j        rJ |                                 |j        sJ d S )	NrA   r   rE   rF   rT   r   rG   rH   )	r3   BufferReaderr   r   r5   r   r   r7   r8   )rJ   r%   s     r&   test_bytes_readerr     s7   D
A6688q====6688s4yy    66!996688q====FF1III6688q====FF1aLLL6688s4yy    FF1III6688q====66"::''''xGGIII8OOOOOr-   c                      t          j        t                    5  t          j        d           d d d            d S # 1 swxY w Y   d S )Nzsome sample data)r   r*   r9   r3   r   r,   r-   r&   test_bytes_reader_non_bytesr   -  s    	y	!	! , ,
*+++, , , , , , , , , , , , , , , , , ,s   <A A c                      dd l } d } |            } | j                     |                                dk    sJ |j        J d S )Nr   c                      ddz  } t          j        |           }|                    d           |                    d          S )NrA     r   rS   )r3   r   r   r}   )rJ   readers     r&   
get_bufferz>test_bytes_reader_retains_parent_reference.<locals>.get_buffer6  s>    "T)&&A!!!$$$r-   s   sample)gccollect
to_pybytesparent)r   r   r:   s      r&   *test_bytes_reader_retains_parent_referencer   2  sc    III% % % *,,CBJLLL>>y((((:!!!!!r-   c                    t           j                            t          |           d          }t	          |d          5 }t          j        |          }|                                sJ |                                rJ |	                                rJ |
                    d           d d d            n# 1 swxY w Y   t	          |d          5 }t          j        |          }|                                sJ |                                rJ |	                                sJ |                                dk    sJ 	 d d d            n# 1 swxY w Y   t                      }t          j        |          }|                                sJ |                                rJ |	                                rJ |
                    d           |                                dk    sJ d S )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  s.   7<<FY//D	dD		 Q]1{{}};;==   ;;==   	               
dD		 (Q]1{{}};;==   {{}}wwyyK'''''( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ))C	s		B;;=={{}}{{}}HH[<<>>[((((((s%   A,B66B:=B:A1EEEc                     ddg}t           j                            t          |           d          }t	          |d          5 }	 t          j        |d          }|                                sJ |                    |           |	                                 n# |	                                 w xY w	 d d d            n# 1 swxY w Y   t	          |d          5 }	 t          j        |d          }|
                                sJ |                                d	                    |          k    sJ 	 |	                                 n# |	                                 w xY w	 d d d            d S # 1 swxY w Y   d S )
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7<<FY//D	dD		 Q	ac***A::<<LLGGIIIIAGGIIIII               
dD		 Q	ac***A::<<6688sxx.....GGIIIIAGGIIIII                 sV   C ABC B00C  CCE3AE7E3E""E33E7:E7c                      t                      } t          j        |           }t          j        |          }~ |            J | j        rJ t          j        |           }|                                 | j        sJ d S r)   )r   r3   r4   weakrefrefr7   r8   )r   r   wrs      r&   test_python_file_closingr   o  sw    
))C	s		B	RB
244<<<z	s		BHHJJJ:r-   c                    t          d|j        dz             D ]}|                    |                    | |                    }t	          |          t	          |           k    sJ t          |          t          |           k    sJ |                                |                                 k    sJ |j        | j        k    sJ d S )Nr   rO   protocol)rangeHIGHEST_PROTOCOLloadsdumpsr5   r|   r   
is_mutable)r:   picklerr   r>   s       r&   check_buffer_picklingr     s    !W59:: 3 3w}}S8}DDEE6{{c#hh&&&&&!!Z__4444  ""cnn&6&66666 CN222223 3r-   c                     d}t          j        |          }t          |t           j                  sJ |j        rJ |j        sJ |                                }||k    sJ t          ||            d S N	   some data)r3   	py_bufferr   Bufferr   is_cpur   r   pickle_modulevalr:   r>   s       r&   test_buffer_bytesr     s|    
C
,s

Cc29%%%%%~:^^FS====#}-----r-   c                 0   t          j        dd          }|                                dk    sJ |j        dk    sJ t	          |          }|                                dk    sJ t          j        |          j        dk    sJ t          ||            d S )Nr   )addressr   r-   )r3   foreign_bufferr   r   r|   r   r   r   )r   	null_buffms      r&   test_buffer_null_datar     s    !!!444I!!S((((!!!! 	9A99;;#<??"a'''')]33333r-   c                     d}t          j        |          }t          |t           j                  sJ |j        rJ |j        sJ t          |          }||k    sJ t          ||            d S r   )r3   r   r   r   r   r   r|   r   r   s       r&   test_buffer_memoryviewr     sx    
C
,s

Cc29%%%%%~:__FS====#}-----r-   c                     t          d          }t          j        |          }t          |t          j                  sJ |j        sJ |j        sJ t          |          }||k    sJ t          ||            d S r   )rk   r3   r   r   r   r   r   r   r   s       r&   test_buffer_bytearrayr     s    
L
!
!C
,s

Cc29%%%%%>:s^^FS====#}-----r-   c                      t          j        t          d          5  t          j        d            d d d            d S # 1 swxY w Y   d S )Nz$(bytes-like object|buffer interface)r1   )r   r*   r9   r3   r   r,   r-   r&   test_buffer_invalidr     s    	yC
E 
E 
E  
T                 s   >AAc                      t          j        d          } t          j        |           } |            J ~  |            J d S r   )r3   r   r   r   )r:   r   s     r&   test_buffer_weakrefr     sH    
,|
$
$C	S		B244244<<<<<r-   zval, expected_hex_buffer))s   checks
   636865636B)s   0s   0730)r-   r-   c                 b    t          j        |           }|                                |k    sJ d S r)   )r3   r   hex)r   expected_hex_bufferr:   s      r&   test_buffer_hexr     s3    
 ,s

C7799+++++++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 d S )N   *   r   uint8dtyperO   )rk   r3   r   np
frombufferbase)
byte_arrayr:   arrays      r&   test_buffer_to_numpyr     s     2JJqM
,z
"
"CM#W---E8z!}$$$$qMMMQMMM8z!}$$$$:r-   c                  j   t          j        dt           j                                      d          } t	          j        |           }|j        sJ |j        sJ |                                | 	                                k    sJ t	          j        | j
                  }|j        sJ |j        sJ |                                | 	                                k    sJ t          j        t          d          5  t	          j        | j
        d d d                   }d d d            d S # 1 swxY w Y   d S )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[    )Bbg
&
&
&
.
.v
6
6C
,s

C:>>>s{{}},,,,
,su

C:>>>s{{}},,,,	z)9	:	:	: ' 'l351:&&' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' 's   8#D((D,/D,c                     d} t          |           }t          |           }t          j        |           }t          j        |           }t          j        |          }t          j        |          }|j        dk    sJ |j        |j        k    sJ |j        |j        k    sJ |j        |j        k    sJ t	          j        d          }t          j        |          }|j        |j        j        k    sJ d S )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                            }	 | ||            | ||            | ||            |||            | ||	           d S )Nc                 T    |                      |          sJ | |k    sJ | |k    rJ d S r)   equalsabs     r&   eqztest_buffer_equals.<locals>.eq  s6    xx{{AvvvvFFFFFFr-   c                 T    |                      |          rJ | |k    rJ | |k    sJ d S r)   r   r  s     r&   neztest_buffer_equals.<locals>.ne  s6    88A;;FFFFAvvvvvvr-   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99::DBtTNNNBtTNNNBtTNNNBtTNNNBtTNNNNNr-   c                      t          j        d          } | dk    sJ | t          d          k    sJ | dk    sJ t          j        t
                    5  | dk     d d d            d S # 1 swxY w Y   d S )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+.A+c                     t          d          } t          j        |           }t          |           }t	          | |dz
            D ]}||         | |         k    sJ t          j        t                    5  ||          d d d            n# 1 swxY w Y   t          j        t                    5  || dz
            d d d            d S # 1 swxY w Y   d S )Nr   rO   )rk   r3   r   r5   r   r   r*   
IndexError)rJ   r:   r]   ixs       r&   test_buffer_getitemr  3  sW   ]##D
,t

CD		AQBA # #2w$r("""""	z	"	"  A               
z	"	"  QBF                 s$   7	BBB0C

CCc                     d} t          j        |           }|                    d          }t          j        d          }|                    |          sJ |                    dd          }t          j        d          }|                    |          sJ |                    d                              |          sJ t	          |                    t	          |                              dk    sJ t          j        t                    5  |                    d           d d d            n# 1 swxY w Y   t          j        t                    5  |                    t	          |          dz              d d d            n# 1 swxY w Y   |d	d                                          d
k    sJ t          j        t                    5  |                    dt	          |                     d d d            n# 1 swxY w Y   |dd	                                         |                                dd          k    sJ t          j        t                    5  |                    dd           d d d            n# 1 swxY w Y   |dd                              |                    d                    sJ |dd                             |                    dd                    sJ |dd                              |                    t	          |          dz
                      sJ |dd                             |                    t	          |          dz
  d                    sJ t          j        t                    5  |d d d          d d d            n# 1 swxY w Y   t          j        t                    5  |d d d          d d d            n# 1 swxY w Y   t	          |          }t          | dz  |dz            D ]X}t          | dz  |dz            D ]>}|||                                         |                                ||         k    sJ ?Yd S )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1ooGW%%I>>)$$$$$ 99Q<<s##### syyS""##q((((	z	"	"  		"               
z	"	"    		#c((Q,                             rss8  C'''' 
z	"	"  		!SXX              qt9!!S^^%5%5abb%99999 
z	"	"  		!R               qrr7>>#))A,,'''''qs8??399Q??+++++rss8??399SXX\2233333r"u:SYYs3xx!|Q7788888	z	"	"  DDbD		              	z	"	"  CCaC               	CArAvq1u%% P P1"q&!a%(( 	P 	PDuTz?--//3>>3C3CE$J3OOOOOO	PP Psl   D22D69D6&FFF$G>>HHJJJN''N+.N+O##O'*O'c                      t          j        t          d          5  t          t	          j        d                     d d d            d S # 1 swxY w Y   d S )N
unhashabler1   s   123)r   r*   r9   hashr3   r   r,   r-   r&   test_buffer_hashingr  u  s    	y	5	5	5 # #R\&!!"""# # # # # # # # # # # # # # # # # #s   "AAAc                      d} t          j        |           }t          j        |t          j                  }|j        j        rJ d S )Ns   12345r   )r3   r   r   r   r   flags	writeable)r  	arrow_ref	numpy_refs      r&   *test_buffer_protocol_respects_immutabilityr$  {  sC     	AQIirx888I((((((r-   c                  z   t          j        ddgt           j                  } | j        d         d         }| j        }t          j        |||           }t          j        |           }~ t          j	        |t           j                  
                                ddgk    sJ  |            J ~ |            J d S )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=BH---44661a&@@@@244244<<<<<r-   c                     t          j        d          } | j        dk    sJ | j        sJ | j        J d}t          j        |           }|                    |           |                                 d d         |k    sJ d S )NrP   s   abcder   )r3   allocate_bufferr   r   r   FixedSizeBufferWriterr   r   )r:   bitwriters      r&   test_allocate_bufferr1    s    

S
!
!C8s????>:
C%c**F
LL>>BQB3&&&&&&r-   c                      t          j        dd          } t          | t           j                  sJ |                     d           | j        dk    sJ d S )NrP   T)	resizable   )r3   r-  r   ResizableBufferresizer   r  s    r&   test_allocate_buffer_resizabler7    sR    

SD
1
1
1Cc2-.....JJsOOO8s??????r-   c                 
   t          j        d          }|                    d          }t          j        dg          }|                    |          }t          j                            t          j	        d          dd |g          }|
                                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 |                    d          }	|j                            |	          }
|
                                d	k    sJ |dd
         }	|j                            |	          }
|
                                dk    sJ |	                    |dd
                   sJ d}t          j        t,          |          5  |                    t          j        |                     d d d            n# 1 swxY w Y   d}t          j        d	g          }|                    |          }t          j        t0          |          5  |	                    |           d d d            n# 1 swxY w Y   t          j                            t          j	        d          dd |g          }|
                                d         }t          j        t0          |          5  |	                    |           d d d            n# 1 swxY w Y   t          j        t0          |          5  |                                 d d d            n# 1 swxY w Y   t          j        t0          |          5  |                                 d d d            n# 1 swxY w Y   t          j        t0          |          5  |d          d d d            n# 1 swxY w Y   t          j        t0          |          5  |                                 d d d            n# 1 swxY w Y   t          j        t0          |          5  |                     |d
           d d d            n# 1 swxY w Y   t          j        t0          |          5  |                     |d
           d d d            n# 1 swxY w Y   t          j        t0          |          5  t7          |           d d d            d S # 1 swxY w Y   d S )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    s8   ~..D
,,q//C8ZL!!D##D))H

!
.
.ry||Qx@P
Q
QCq!J?hm++++!11111////    &E2ED$$$$$$D$$$$$$"((++/--.?@@K!!##x////"1Q3/--.?@@K!!##u,,,, ##HQqSM22222 LJ	z	4	4	4 . .",t,,---. . . . . . . . . . . . . . . 4C($$I)))44N	*#	6	6	6 1 1  0001 1 1 1 1 1 1 1 1 1 1 1 1 1 1'44
	!a$/ I !((**1-	*#	6	6	6 3 3  !12223 3 3 3 3 3 3 3 3 3 3 3 3 3 3 
*#	6	6	6                 
*#	6	6	6                 
*#	6	6	6  1               
*#	6	6	6                                  
*#	6	6	6 4 4J3334 4 4 4 4 4 4 4 4 4 4 4 4 4 4 
*#	6	6	6 2 2Hq1112 2 2 2 2 2 2 2 2 2 2 2 2 2 2 
*#	6	6	6  :                 s   (HH
HI77I;>I;,LLL4MMM;NN #N 	OOO=PP"%P"Q((Q,/Q,R22R69R6S55S9<S9c                     t          j                    } t          j        d          }t          j        dd          }t          j        ddd          }t          j        ddd	          }t           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 | |k    sJ ||k    sJ ||k    sJ ||k    sJ || k    sJ d S )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   OEOD111EOD4HHHEOD-1!E E EEOD-1? ? ?EO003PSRULN 1 P PE
  D((((!%55555:1$$$$ D((((!%5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 ]0}|                     |                     |                    |k    sJ 1d S )NrV  rW  Tr   )rU  rX  rZ  rY  )r3   r`  r   r   )r   optionsoptions      r&   test_cache_options_picklingrl  !  s    

t!!	5 	5 	5G  J J""=#6#6v#>#>??6IIIIIJ Jr-   compressionbz2)r*   )marksbrotligziplz4zstdsnappyc                 ,   t          j        |           s't          j        d                    |                      d}t
          j                            dd|                              t
          j	                  
                                }t          j        |          }t          j        ||           }t          j        || d          }t          |t                    sJ t          j        |||           }t          j        ||| d          }t          |t                    sJ |                    |          sJ ||k    sJ t          j        t&                    5  t          j        ||            d d d            d S # 1 swxY w Y   d S )	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  ,  s    k** C-44[AABBBJ""1c
";;&""'))  |I&&H[===N{9K+/1 1 1 &.....}^Z+68 8 8'7-8$H H H (%00000""8,,,,,****	z	"	" ; ;
&k::::; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ;s   %F		FFc                    t          j        |           s't          j        d                    |                      t          |           }|j        dk    r
|j        J nt          |j        t                    sJ dg}| |v r(t          j	        |           rJ t          j
        t                    5  t          | d           d d d            n# 1 swxY w Y   t          j
        t                    5  t          j        |            d d d            n# 1 swxY w Y   t          j
        t                    5  t          j        |            d d d            n# 1 swxY w Y   t          j
        t                    5  t          j        |            d d d            n# 1 swxY w Y   d S d}t          j                            dd|                              t          j                                                  }t+          j        |          }t          j        |           }t          j        |           }t          j        |           }||k     sJ ||k    sJ ||k    sJ t/          ||dz             D ] }	t          | |	          }|                    |          }
|                    |d	          }t          |t2                    sJ |                    |
|          }|                    ||d	          }t          |t2                    sJ |                    |          sJ ||k    sJ t          j
        t                    5  |                    |           d d d            n# 1 swxY w Y   t9          t          j        d
          st          j        d           t          j                            d          }|                    ddd          }t+          j        |          }|                                 d         }t          | |          }|                    |          }t          | |          }|                    |          }tC          |          tC          |          k    sJ d S )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  s~    k** C-44[AABBB+EzX&....%1377777 zHh3K@@@@@]:&& 	" 	"+q!!!	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	"]:&& 	9 	9+K888	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9]:&& 	9 	9+K888	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9]:&& 	9 	9+K888	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9J""1c
";;&""'))  |I&&H/<<I/<<I3K@@My    I%%%%I%%%%"9ik:: / /k#45511 >>)T>BB*E22222 ++NJGG"--.>
6: . < < ,e44444&&x00000!Y....]:&& 	/ 	/-...	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 29m,, 75666
)

R

(
(C\\!S$''F
(6

C!kkmmA.{I..J&//0GHHi00L*334KLL$%%,C(D(DDDDDDDsZ   3CCC4DDD9EE!E>FF#&F#M//M3	6M3	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            n# 1 swxY w Y   t          |          }t          j        t                    5 }d|d<   dt          |j                  v sJ 	 d d d            d S # 1 swxY w Y   d S )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~c29%%%%%__F?	y	!	! ;Sq	(C	NN:::::; ; ; ; ; ; ; ; ; ; ; ; ; ; ; 	c

A	y	!	! ;S!(C	NN:::::; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ;s$   -BBBC77C;>C;c                      t          j        t                    5  t          j                     d d d            d S # 1 swxY w Y   d S r)   )r   r*   r9   r3   r   r,   r-   r&   test_uninitialized_bufferr    s     
y	!	!  
	                 s   ;??c                  .   d} t          j                    }d}t          |          D ]}|                    |            |                                }t          |          t          |           |z  k    sJ |                                | |z  k    sJ d S )N
   dataabcdefr   )r3   BufferOutputStreamr   r   r6   r5   r   )r   r%   Kir:   s        r&   test_memory_output_streamr    s    
C
AA1XX  	
**,,Cs88s3xx!|####>>sQw&&&&&&r-   c                  0   t          j                    } |                     d           | j        rJ |                                  | j        sJ t          j        t                    5  |                     d           d d d            d S # 1 swxY w Y   d S )N   oks   not ok)r3   r  r   r7   r6   r   r*   r   r   s    r&    test_inmemory_write_after_closedr    s    
AGGENNNxJJLLL8OOO	z	"	"  		                 s   (BBBc                     d }  | d          }t          j                     |dk    sJ d}t          j        |          }t	          d          D ]} | |           t          j                     |t          j        |          k    sJ d S )Nc                 D    t          t          j        |                     S r)   )rk   r3   r   )	bytes_objs    r&   make_bufferz6test_buffer_protocol_ref_counting.<locals>.make_buffer  s    i00111r-      foorj   )r   r   r   getrefcountr   )r  r:   r   refcount_beforer  s        r&   !test_buffer_protocol_ref_countingr    s    2 2 2 +f

CJLLL&==== Coc**O2YY  CJLLLcoc22222222r-   c                  ,   t          j                    } d}t          j        |d          }|                     |           |                     t          |                     |                     t          j        |                     t          j        t                    5  |                     |
                    d                     d d d            n# 1 swxY w Y   |                                 }|                                |dz  k    sJ d S )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GGCLLLGGIdOOGGBL	y	!	! % %	F##$$$% % % % % % % % % % % % % % % **,,C>>tax''''''s   #)CCCc                  z   d} t          j                    }t          j                    }d}t          |          D ],}|                    |            |                    |            -|                                t          |                                          k    sJ t           j        	                    t          j
        g d          gdg          }t          j                    }t          j                    }t          j        ||j                  }t          j        ||j                  }|                    |           |                    |           |                                 |                                 |                                t          |                                          k    sJ d S )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  
  su   
 C				B			 	 BA1XX  

7799BKKMM****** >--rx			/B/B.CcUKKL				B			 	 B/L4GHHN/L4GHHN|,,,|,,,7799BKKMM********r-   c                    d}d t          |          D             }t          |d |                   }t          j                            t          |          t                                t          d          5 }|                    |           d d d            n# 1 swxY w Y   fd}| 	                    |           |fS )NrV  c                 8    g | ]}t          j        d d          S r   rx  r~  r  .0_s     r&   
<listcomp>z$sample_disk_data.<locals>.<listcomp>3  $    
7
7
7a6>!S!!
7
7
7r-   r   c                  &    t                      d S r)   )_try_deleter   s   r&   teardownz"sample_disk_data.<locals>.teardown;  s    Dr-   )
r   r  r    r   r   r   r	   r   r   addfinalizer)requestr   SIZEr   rJ   r%   r  r   s          @r&   sample_disk_datar  0  s    D
7
75;;
7
7
7CUdUD7<<FTVV,,D	dD		 Q	                   """:s   =BB#&B#Tc                    |\  }} | |d          }|                     d          |d d         k    sJ |                     d          dk    sJ |                                dk    sJ |                                 |dd          k    sJ |                                t          |          k    sJ |                    d           |                                dk    sJ |rj|                    t          |          dz              |                                t          |          dz   k    sJ |                     d          dk    sJ |                    d          dk    sJ |                    dt
          j                  d	k    sJ |                                d	k    sJ t          |          d
z
  }|                    dt
          j                  |k    sJ |                                |k    sJ d S )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  s   JD$3A66"::crc""""66!996688r>>>>6688tBCCy    6688s4yy    FF1III6688q====    	s4yy1}vvxx3t99q=((((vvayyC 66!99>>>>66!R[!!Q&&&&6688q====D		AI66"bk""i////6688y      r-   c                 >    t          t          j        | d           d S )NF)r  )r  r3   
memory_mapr  s    r&   test_memory_map_readerr  c  s-    bm-=7<> > > > > >r-   c                    | \  }}g }t          j        |d          5 }|                    |                    d          |d d         f           |                    |                    d          |dd         f           |                    |                    d          |dd         f           d d d            n# 1 swxY w Y   t	          j                     |D ]\  }}|                                |k    sJ  d S )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t*5666ammC(($s3w-8999ammC(($s3w-8999: : : : : : : : : : : : : : : JLLL , ,X~~8+++++, ,s   BC  CCc                 :    t          t          j        |            d S r)   )r  r3   OSFiler  s    r&   test_os_file_readerr  x  s    bi)9:::::r-   c                  8    t          t          j                   d S r)   )r'   r3   r  r,   r-   r&   test_os_file_large_seeksr  |  s    bi     r-   c                 \    	 t          j        |            d S # t           j        $ r Y d S w xY wr)   )r    removeerrorr  s    r&   r  r    s<    
	$8   s    ++c                    t           j        dk    rt          j        d           d}d t	          |          D             }t          |d |                   }t          j                            t          |           t                                }t          |d          5 }|                    |           d d d            n# 1 swxY w Y   t          j        |d          }|                    d           |                    d	           |                                d
k    sJ |                    d           |                    d          d	k    sJ t          j        |d          }|                    d           |                    d           |                    d           |                    d           |                    d          dk    sJ t          j        |d          }|                    d           t          j        |          5 }|                                |k    sJ 	 d d d            n# 1 swxY w Y   t          j        t(                    5  |                    d           d d d            n# 1 swxY w Y   |                    d           |                    d          dk    sJ d S )Nr   z:Multiple memory maps to same file don't work on emscriptenrV  c                 8    g | ]}t          j        d d          S r  r  r  s     r&   r  z*test_memory_map_writer.<locals>.<listcomp>  r  r-   r   r+brC   rj   s   peekaboo      s   booapeakrd   r  r   r   r`   )r   r   r   xfailr   r  r    r   r   r   r	   r   r   r3   r  r   r   r   r   r*   IOError)	r   r  r   rJ   r   r%   r  f3f4s	            r&   test_memory_map_writerr    s   
||##QRRRD
7
75;;
7
7
7CUdUD7<<FTVV,,D	dD		 Q	               	d'''AFF2JJJGGK6688r>>>>FF2JJJ66!99####	t%	(	(	(BGGBKKKHH[GGBKKKFF2JJJ66!99#### 
t#	&	&	&BHHV	t		 !wwyyD     ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! 
w		  



               FF1III66!99s6    CC	CII
I'J		JJc                    d}d t          |          D             }t          |d |dz                     }t          ||dz  d                    }t          j                            t          |           t                                }t          j        ||dz            }|	                    |           |
                    |           |	                    |           |                                 t          |d          5 }|                                t          |d |                   k    sJ 	 d d d            d S # 1 swxY w Y   d S )NrV  c                 8    g | ]}t          j        d d          S r  r  r  s     r&   r  z*test_memory_map_resize.<locals>.<listcomp>  r  r-   rT   r   )r   r  r    r   r   r   r	   r3   create_memory_mapr   r6  r8   r   r   )r   r  r   data1data2r   mmapr%   s           r&   test_memory_map_resizer    si   D
7
75;;
7
7
7C#l	l#$$E#tqyll#$$E7<<FTVV,,DdQh//DJJuKKJJuJJLLL	dD		 -Qvvxx5UdU,,,,,,,- - - - - - - - - - - - - - - - - -s   0EE	Ec                 T   t           j                            t          |           t	                                }t          |d          }|                                 t          j        |d          5 }|	                                dk    sJ 	 d d d            d S # 1 swxY w Y   d S )Nr   r  rC   r   )
r    r   r   r   r	   r   r8   r3   r  r   )r   r   r%   r  s       r&   test_memory_zero_lengthr
    s    7<<FTVV,,DT4AGGIII	t%	(	(	( &J  A%%%%%& & & & & & & & & & & & & & & & & &s   4BB!$B!c                      t           j        dk    rd } n t          j        t          j        d          } t          t          j        |            d S )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    sT    
{e!/0 0 0 bmNCCCCCCr-   c                    t           j                            t          |           t	                                }t          j        |d          }|                                 |j        sJ t          j	        |           d S NrV  )
r    r   r   r   r	   r3   r  r8   r7   r  )r   r   r  s      r&   test_memory_map_close_remover    s_    7<<FTVV,,Dd++DJJLLL;IdOOOOOr-   c                     t           j                            t          |           t	                                }t          j        |d           t          j        |           d S r  )r    r   r   r   r	   r3   r  r  )r   r   s     r&   test_memory_map_deref_remover    sE    7<<FTVV,,Dt$$$IdOOOOOr-   c                    d}d t          |          D             }t          |d |                   }t          j                            t          |           t                                }t          |d          5 }|                    |           d d d            n# 1 swxY w Y   t          j
        |d          }|                    d           t          j
        |          5 }|                                dk    sJ 	 d d d            n# 1 swxY w Y   t          j        t                    5  |                    d           d d d            n# 1 swxY w Y   |                                 t          j
        |d	          5 }|                    d
           d d d            n# 1 swxY w Y   t          j
        |          5 }	|	                                dk    sJ 	 d d d            d S # 1 swxY w Y   d S )NrV  c                 8    g | ]}t          j        d d          S r  r  r  s     r&   r  z'test_os_file_writer.<locals>.<listcomp>  r  r-   r   rd   rC   r  r`   r   abs   barrS   )r   r  r    r   r   r   r	   r   r   r3   r  r   r   r*   r  r   r8   )
r   r  r   rJ   r   r%   r  r  r   f5s
             r&   test_os_file_writerr    s   D
7
75;;
7
7
7CUdUD7<<FTVV,,D	dD		 Q	               
4c	"	"	"BHHV	4 BwwyyA~~~~~               
w		  



              HHJJJ 
4d	#	#	# r
              	4 BwwyyA~~~~~                 sZ   <BB"%B"(DDD4EEEF--F14F1G55G9<G9c                      t          j                    } t          j        t                    5  |                     d           d d d            d S # 1 swxY w Y   d S )Nfoo)r3   r  r   r*   r9   r   )nfs    r&   %test_native_file_write_reject_unicoder    s    			 	 B	y	!	!  
                 s   AAAc                 D
   t           j                            t          |           t	                                }t          |d          5 }|                    d           d d d            n# 1 swxY w Y   t          j        |d          5 }|j	        dk    sJ |
                                sJ |                                rJ |                                sJ 	 d d d            n# 1 swxY w Y   t          j        |d          5 }|j	        dk    sJ |
                                sJ |                                rJ |                                sJ 	 d d d            n# 1 swxY w Y   t          j        |d          5 }|j	        dk    sJ |
                                rJ |                                sJ |                                rJ 	 d d d            n# 1 swxY w Y   t          j        |d          5 }|j	        dk    sJ |
                                rJ |                                sJ |                                rJ 	 d d d            n# 1 swxY w Y   t          j        |d          5 }|j	        dk    sJ |
                                rJ |                                sJ |                                rJ 	 d d d            n# 1 swxY w Y   t          j        |d          5 }|j	        dk    sJ |
                                rJ |                                sJ |                                rJ 	 d d d            n# 1 swxY w Y   t          |d          5 }|                    d           d d d            n# 1 swxY w Y   t          j        |d          5 }|j	        dk    sJ |
                                sJ |                                rJ |                                sJ 	 d d d            n# 1 swxY w Y   t          j        |d	          5 }|j	        d
k    sJ |
                                sJ |                                sJ |                                sJ 	 d d d            n# 1 swxY w Y   t          j        |d          5 }|j	        d
k    sJ |
                                sJ |                                sJ |                                sJ 	 d d d            d S # 1 swxY w Y   d S )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   7<<FTVV,,D	dD		 Q	               
4c	"	"	" av~~~~zz||::<<zz||	               
4d	#	#	# qv~~~~zz||::<<zz||	               
4c	"	"	"  av~~~~::<<zz||::<<	                              
4d	#	#	#  qv~~~~::<<zz||::<<	                              
4d	#	#	#  qv~~~~::<<zz||::<<	                              
4c	"	"	"  av~~~~::<<zz||::<<	                              
dD		 Q	               
tS	!	! Qv~~~~zz||::<<zz||	               
tT	"	" avzz||zz||zz||	               
tU	#	# qvzz||zz||zz||	                 s   
A,,A03A0AC**C.1C.AE((E,/E,	AG&&G*-G*AI$$I(+I(AK""K&)K&AM  M$'M$;NN!$N!=APP!P:ARRR7ATTTr   z umask doesn't work on Emscripten)reasonc                    t          j        d          }t          j        |           t           j                            t	          |           t                                }t          j        |d          5  	 d d d            n# 1 swxY w Y   t          j        |          j	        dz  d| z  k    sJ t           j                            t	          |           t                                }t          j
        |d          5  	 d d d            n# 1 swxY w Y   t          j        |          j	        dz  d| z  k    sJ d S )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HY7<<FTVV,,D	4c	"	"	"                74== 5(EYJ,>>>>>7<<FTVV,,D	tS	!	!                74== 5(EYJ,>>>>>>>s$   8BB
B
DDDc                    t           j                            t          |           t	                                }t          |d          5 }|                    d           d d d            n# 1 swxY w Y   t          j        |d          5 }|j	        rJ 	 d d d            n# 1 swxY w Y   |j	        sJ t          j
        |d          5 }|j	        rJ 	 d d d            n# 1 swxY w Y   |j	        sJ ||g}g d}|D ]N}|D ]I\  }}t          j        t                    5   t          ||          |  d d d            n# 1 swxY w Y   JOd S )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_closer1  \  ss   7<<FTVV,,D	dD		 Q	               
4d	#	#	# "w>!!!!" " " " " " " " " " " " " " ">	t$	'	'	' $9#####$ $ $ $ $ $ $ $ $ $ $ $ $ $ $E! ! !G  * *# 	* 	*LFDz** * *"6""D))* * * * * * * * * * * * * * *	** *sH   
A,,A03A0
B$$B(+B(
C%%C),C)%EE	E	c                    d}t           j                            t          |           t	                                }t          |d          5 }|                    |                    d                     d d d            n# 1 swxY w Y   t          t          j
        |d                    5 }|                                sJ |                                }||k    sJ 	 d d d            n# 1 swxY w Y   |j        sJ t          t          j
        |d                    5 }t          |          }d                    |          |k    sJ 	 d d d            n# 1 swxY w Y   t           j                            t          |           t	                                }t          t          j
        |d                    5 }|                                sJ |                    |           d d d            n# 1 swxY w Y   t          t          j
        |d                    5 }|                                }||k    sJ 	 d d d            d S # 1 swxY w Y   d S )Nzfoooo
barrr
bazzz
r   utf-8r   rC    )r    r   r   r   r	   r   r   encoder   r3   r  r   r   r7   listr   )r   rJ   r   r%   filresr   path2s           r&   test_native_file_TextIOWrapperr:  z  sB   D 7<<FTVV,,D	dD		 &Q	G$$%%%& & & & & & & & & & & & & & & 
ryD111	2	2 c||~~hhjjd{{{{{               :	ryD111	2	2 &cS		wwu~~%%%%%& & & & & & & & & & & & & & & GLLVdff--E	ryT222	3	3 s||~~		$               
ryT222	3	3 shhjjd{{{{{                 sZ   )BBB/3C//C36C3&+EE"%E",G==HH+IIIc                 N   d}t          | dz            }t          |d          5 }|                    |dz             d d d            n# 1 swxY w Y   t          j        |d          }t          |          5 }|                                dk    sJ d}|                    |          }t          |          t          j
        d	|z  t          |          z            k    sJ ||                                cxk    r	|d	z  k    sn J 	 d d d            d S # 1 swxY w Y   d S )
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_perfrA    s    Dv'((D	dD		  Q	w                              )Dt,,,K	{	#	# :q!!Q&&&&F##5zzTYq6zCII'=>>>>>>))++9999vz9999999: : : : : : : : : : : : : : : : : :s$   A

AA:BDD!Dc                 d   ddz  }t          | dz            }t          |d          5 }|                    |           d d d            n# 1 swxY w Y   g }t          j        |d          5 }	 |                                }t          |          t          |          k     sJ |                    |           |                    d          }t          |          dk    sJ |                    |           |sn	 d d d            n# 1 swxY w Y   d	                    |          |k    sJ d S )
Ns   123
i@B r<  r   r   rC   Ti0u  r-   )	r   r   r   r3   r  read1r5   r  r   )r   rJ   r   r%   chunksr  s         r&   test_native_file_read1rE    s    iDv'((D	dD		 Q	               F	4d	#	#	# 	q			Aq66CII%%%%MM!Aq66V####MM! 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 88Ft######s$   A

AA-BD

DDc                    dd l }dd lm} ddz  }t          | dz            }t	          |d          5 }|                    |           d d d            n# 1 swxY w Y   t          j        |d          5 }|                    |d	          }|	                    d
gdz  dgdz  d          }|
                    ||           |                                dk    sJ 	 d d d            d S # 1 swxY w Y   d S )Nr   s   a,b
i r<  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_readerrQ    s    j Dv'((D	dD		 Q	               
4d	#	#	# &q[["[%%<<sebjurz B BCC
b(+++vvxx:%%%%%& & & & & & & & & & & & & & & & & &s$   AAA5A(C++C/2C/c                      t                      5  t          j        dd           d d d            n# 1 swxY w Y   t                      5  t          j        dd           d d d            d S # 1 swxY w Y   d S )Nnon_existent_filer   )r.   r3   r  r  r,   r-   r&   test_native_file_open_errorrT    s    		 	  - -
	%t,,,- - - - - - - - - - - - - - -		 	  1 1
)40001 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1s   155
A--A14A1c                     t          j        d          } t          j        | d          }|                    d          dk    sJ |                                 dk    sJ |                                 |j        sJ | j        sJ d S )N	   123456789rE   buffer_sizerT      12)r3   r   BufferedInputStreamr   r   r8   r7   )rawr%   s     r&   test_buffered_input_streamr\    s    
/,
'
'C
s222A66!9988::????GGIII8OOO:r-   c                     t          j        t          j        d          d          } |                     d          dk    sJ |                                 }| j        sJ |j        rJ |                                sJ |                    d          dk    sJ |                    d           |                    d          dk    sJ d S )NrV  rE   rW  rT   rY     5678s   3456)r3   rZ  r   r   detachr7   rU   r   r%   r[  s     r&   *test_buffered_input_stream_detach_seekablera    s    
r|<<!LLLA66!99
((**C8OOOz<<>>88A;;'!!!!HHQKKK88A;;'!!!!!!r-   c                     t          j        t          j        t          j        d          d          d          } |                     d          dk    sJ |                                 }| j        sJ |j        rJ |                                rJ |                    d          dk    sJ t          j        t                    5  |
                    d           d d d            d S # 1 swxY w Y   d S )NrV  rE   rW  rT   rY  r^  )r3   rZ  r   r   r_  r7   rU   r   r*   EnvironmentErrorr   r`  s     r&   .test_buffered_input_stream_detach_non_seekablerd    s/   

r|<<!LLL	 	 	A 66!99
((**C8OOOz||~~88A;;'!!!!	'	(	(                   s   C++C/2C/c                  V   t          j        dt           j                  } t          j        |           }t          j        |          }t          j        |d          }|                    d           | d d                                         dk    sJ |	                                 | d d                                         dk    sJ |                    d           |
                                 |j        sJ |j        sJ | d d	                                         d
k    sJ d S )NrP   r   rE   rW  rY            12  s   3456789rj   s
   123456789 )r   zerosr   r3   r   r.  BufferedOutputStreamr   r   r)  r8   r7   )np_bufr:   r[  r%   s       r&   test_buffered_output_streamrk    s   Xc)))F
,v

C

"3
'
'C
333AGGENNN"1":;....GGIII"1":9,,,,GGJGGIII8OOO:#2#;  N222222r-   c                     t          j        dt           j                  } t          j        |           }t          j        t          j        |          d          }|                    d           | d d                                         dk    sJ |	                                }|j
        sJ |j
        rJ | d d                                         dk    sJ d S )NrP   r   rE   rW  rY  rf  rg  )r   rh  r   r3   r   ri  r.  r   r   r_  r7   )rj  r:   r%   r[  s       r&   "test_buffered_output_stream_detachrm    s    Xc)))F
,v

C
 8 = =1MMMAGGENNN"1":;....
((**C8OOOz"1":9,,,,,,r-   c                    t          j        |d          }t          j        ||          5 }|j        rJ |                                sJ |                                rJ |                                rJ |                                }|| k    sJ 	 d d d            n# 1 swxY w Y   |j        sJ |j        sJ t          j        |d          }t          j        ||          5 }|                                }t          |t           j
                  sJ |                                | k    sJ 	 d d d            d S # 1 swxY w Y   d S Nr   rC   )r3   r  CompressedInputStreamr7   r   r   rU   r   r}   r   r   r   )rJ   fnrm  r[  
compressedgotr:   s          r&   check_compressed_inputrt  '  s   
)BT
"
"
"C		!#{	3	3 z$$$$""$$$$$&&(((((&&(((((ood{{{{{               : )BT
"
"
"C		!#{	3	3 (z$$&&#ry)))))~~4'''''( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (s%   A(B!!B%(B%)AEE	Ec                     d}t          | dz            }t          j        |d          5 }|                    |           d d d            n# 1 swxY w Y   t	          ||d           d S )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   rt  r   rJ   rq  r%   s       r&   test_compressed_input_gziprx  ;  s    .D	V00	1	1B	2t		 	              4V,,,,,s   AAAc                 H   d}t          | dz            }t          j        |d          5 }|                    |           d d d            n# 1 swxY w Y   	 t	          ||d           d S # t
          $ r,}t          j        t          |                     Y d }~d S d }~ww xY w)Nrv  zcompressed_input_test.bz2rd   rn  )r   rn  BZ2Filer   rt  rD  r   r   )r   rJ   rq  r%   es        r&   test_compressed_input_bz2r|  D  s    .D	V11	2	2B	R		 	              tR/////   CFFs)   AAAA+ +
B!5!BB!c                    t          j        d          st          j        d           d}t	          | dz            }t          j        |d          5 }|                    |           d d d            n# 1 swxY w Y   t          j	        |d          5 }|
                                }|                                |k    sJ 	 d d d            n# 1 swxY w Y   |j        sJ t          j	        t          j        |          d          5 }|
                                }|                                |k    sJ 	 d d d            n# 1 swxY w Y   |j        sJ t          |d          }t          j	        |d          5 }|
                                }|                                |k    sJ 	 d d d            n# 1 swxY w Y   |j        sJ d S )Nrq  gzip support is not builtrv  z!test_compressed_input_openfile.gzr   r   )r
   r|  r   r   r   rq  r   r   r3   rp  r}   r   r7   pathlibPath)r   rJ   rq  r%   rr  r:   s         r&   test_compressed_input_openfiler  O  s   f%% 1/000.D	V99	:	:B	2t		 	               
	!"f	-	- ($$&&~~4'''''( ( ( ( ( ( ( ( ( ( ( ( ( ( ( 		!',r"2"2F	;	; (z$$&&~~4'''''( ( ( ( ( ( ( ( ( ( ( ( ( ( ( RA		!!V	,	, (
$$&&~~4'''''( ( ( ( ( ( ( ( ( ( ( ( ( ( ( 8OOOOOsH   A44A8;A8/CCC/EEE /F<<G G c                     t          j        |d          }t          j        ||          5 }|                                }|| k    sJ 	 d d d            d S # 1 swxY w Y   d S ro  )r3   r  rp  r   )rJ   rq  rm  r[  rr  rs  s         r&   check_compressed_concatenatedr  j  s    
)BT
"
"
"C		!#{	3	3 zood{{{{{                 s   AAAc                 x   d}t          | dz            }t          j        |d          5 }|                    |d d                    d d d            n# 1 swxY w Y   t          j        |d          5 }|                    |dd                     d d d            n# 1 swxY w Y   t	          ||d           d S )Nrv  zcompressed_input_test2.gzr   rG   r  rq  )r   rq  r   r   r  rw  s       r&   !test_compressed_concatenated_gzipr  q  s.   .D	V11	2	2B	2t		 	SbS	              	2t		 	RSS	              !$F33333s#   AAA4BB"%B"c                  4   d} t          j        |           }t          j        t                    5  t          j        |d           d d d            n# 1 swxY w Y   t          j        t                    5  t          j        |d            d d d            n# 1 swxY w Y   t          j        |d          5 }t          j        t          d          5  |                                 d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )Ns   foofoofoofoofoofoofoofoofoofoounknown_compressionrq  zzlib inflate failedr1   )	r3   r   r   r*   r   rp  r9   r  r   )rJ   r[  rr  s      r&   test_compressed_input_invalidr  |  s   D
/$

C	z	"	" = =
 &;<<<= = = = = = = = = = = = = = =	y	!	! , ,
 d+++, , , , , , , , , , , , , , , 
	!#v	.	. *]7*?@@@ 	 	OO	 	 	 	 	 	 	 	 	 	 	 	 	 	 	                 sY   AAA6BBB8DC5)D5C9	9D<C9	=DDDc                 
   t          j                    }t          j        ||          5 }|j        rJ |                                rJ |                                sJ |                                rJ |                    |            d d d            n# 1 swxY w Y   |j        sJ |j        sJ t          |d          5 }|                    |	                                           d d d            d S # 1 swxY w Y   d S )Nr   )
r3   r  CompressedOutputStreamr7   r   r   rU   r   r   r6   )rJ   rq  rm  r[  rr  r%   s         r&   make_compressed_outputr    s   


!
!C		"3	4	4 
$$$$&&(((((""$$$$$&&(((((               :	b$  1	                                   s$   A!BBB(C88C<?C<c                     d}t          | dz            }t          ||d           t          j        |d          5 }|                                }||k    sJ 	 d d d            d S # 1 swxY w Y   d S )Nrv  zcompressed_output_test.gzrq  r   )r   r  rq  r   r   )r   rJ   rq  r%   rs  s        r&   test_compressed_output_gzipr    s    .D	V11	2	2B4V,,,	2t		 ffhhd{{{{{                 s   A&&A*-A*c                 Z   d}t          | dz            }	 t          ||d           n8# t          $ r+}t          j        t          |                     Y d }~nd }~ww xY wt          j        |d          5 }|                                }||k    sJ 	 d d d            d S # 1 swxY w Y   d S )Nrv  zcompressed_output_test.bz2rn  rB   )r   r  rD  r   r   rn  rz  r   )r   rJ   rq  r{  r%   rs  s         r&   test_compressed_output_bz2r    s   .D	V22	3	3BtR////   CFF	R		 ffhhd{{{{{                 s&   ( 
A!AA5B  B$'B$c                    t          j        d          st          j        d           t	          j        | dz  d          5 }|                    d           d d d            n# 1 swxY w Y   | dz                      d          5 }t	          j        |d          5 }|                    d           d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )Nrq  r~  zctor.gzs   testzctor2.gzr   )r
   r|  r   r   r3   r  r   r   )r   rZ   r%   s      r&   test_output_stream_constructorr    s   f%% 1/000		"6I#5v	>	> &W              
:
	#	#D	)	) "Q&q&11 	"VLL!!!	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	"" " " " " " " " " " " " " " " " " "sH   A##A'*A'CB>2C>C	CC	CCC)r   expected_compression)zfile.bz2rn  )zfile.lz4rr  zfile.gzzpath/to/file.zstc                 B   t          j        |          sRt          j        t          j        j                  5  t          j        |            d d d            d S # 1 swxY w Y   d S t          j        |           }t          |t                     sJ |j	        |k    sJ d S r)   )
r
   r|  r   r*   r3   libArrowNotImplementedErrordetectr   r  )r   r  rz  s      r&   test_compression_detectionr    s     233 2]26:;; 	 	L	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 T""%'''''z1111111s   AA!Ac                     t          j        t                    5  t          j        d           d d d            n# 1 swxY w Y   t          j        t
                    5  t          d            d d d            n# 1 swxY w Y   t          j        t                    5  t          d           d d d            d S # 1 swxY w Y   d S )Nunknown)r   r*   r   r
   r|  r9   r,   r-   r&   test_unknown_compression_raisesr    sj   	z	"	" & &9%%%& & & & & & & & & & & & & & &	y	!	!  d              	z	"	"  i                 s1   ;??A;;A?A?B<<C C c                 T   t          j        |           s't          j        d                    |                      d}t          j                    }t          j        ||           5 }|                    |           d d d            n# 1 swxY w Y   |	                                }t          |          t          |          k     sJ t          j        |          }t          j        ||           5 }|                                }||k    sJ 	 d d d            d S # 1 swxY w Y   d S )Nrv  rv  )r
   r|  r   r   r}  r3   r  r  r   r6   r5   r   rp  r   )rm  rJ   r[  rr  cdatars  s         r&   test_compressed_roundtripr    s    k** C-44[AABBB.D


!
!C		"3	4	4 
               LLNNEu::D		!!!!
/%
 
 C		!#{	3	3 zood{{{{{                 s$   &BBB2DD!$D!)rn  rp  rq  rr  rs  c                    t          j        |           s't          j        d                    |                      t
          j                            t          j        g d          gdg          }t          j	                    }t          j
        ||           }t          j        ||j                  }|                    |d           |                                 |                                 |                                }t          j        t          j        |          |           }t          j        |                                          }||k    sJ d S )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   rp  r   RecordBatchStreamReaderread_all)rm  tabler[  rZ   r0  r:   	got_tables          r&   "test_compressed_recordbatch_streamr    s&   
 k** C-44[AABBB H  "(???";";!<seDDE


!
!C&sK88F'==F
uA...
LLNNN
LLNNN
,,..C%boc&:&:KHHF*62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                 v   t          |          }t          j        t          j        |                     |                    ||          }g }	 |                    t          |                    }|                    |           |sn;d                    |          }|	                    |          | k    sJ d S )NTr-   )
iterr3   transcoding_input_streamr   r5  r   nextr  r   r  )rJ   src_encodingdest_encodingchunk_sizesrZ   outr:   s          r&   check_transcodingr    s    {##K(
L1122m% %F Ckk${++,,

3 		
 ((3--C::m$$,,,,,,r-   zsrc_encoding, dest_encoding)r3  utf-16r  r3  )r3  z	utf-32-le)r3  z	utf-32-bec           	          t          t          | |ddg           t          t          | |t          j        g d                     d S )Nr   r   )rO   rT   r`   r   )r  unicode_transcoding_example	itertoolscycle)r  r  s     r&   test_transcoding_input_streamr    s[     1"MD!9> > > 1"Molll335 5 5 5 5r-   )r3  r3  )r3  UTF8c                 b    t          j        d          }t          j        || |          |u sJ d S )Ns   abc123)r3   r   r  r  r  rZ   s      r&   test_transcoding_no_opsr  +  sK    
 _Y''F&m- -067 7 7 7 7 7r-   )r3  ascii)r3  zlatin-1c                 
   t          j        t          j        d                    |                     | |          }t	          j        t                    5  |                    d           d d d            d S # 1 swxY w Y   d S )Nu   ĀrO   )r3   r  r   r5  r   r*   UnicodeEncodeErrorr   r  s      r&   test_transcoding_encoding_errorr  5  s     (
5566 F 
)	*	*  A                 s   A88A<?A<r  r  c                     t          j        t          j        d          | |          }t          j        t
                    5  |                    d           d d d            d S # 1 swxY w Y   d S )Ns   rO   )r3   r  r   r   r*   UnicodeErrorr   r  s      r&   test_transcoding_decoding_errorr  C  s     (
+,, F 
|	$	$  A                 s   A%%A),A)c                     d} t          j        |           t          |           fD ]0}t          j        |          }|                                | k    sJ 1t          j        |           }t          j        t          |                    }|                                |k    sJ t          j        t          |          d          }|                                | k    sJ d S Nrv  rq  rm  )r3   r   r|   input_streamr   rq  r  )rJ   argrZ   gz_datas       r&   test_input_stream_bufferr  T  s    .DT""Jt$4$45 % %%%{{}}$$$$$mD!!G_Z0011F;;==G####_Z00fEEEF;;==D      r-   c                       G d d          } t          j         |                       }|                    d          dk    sJ d S )Nc                   2    e Zd Zd Zed             ZddZdS )1test_input_stream_duck_typing.<locals>.DuckReaderc                     d S r)   r,   ru   s    r&   r8   z7test_input_stream_duck_typing.<locals>.DuckReader.closef  rw   r-   c                     dS ry   r,   ru   s    r&   r7   z8test_input_stream_duck_typing.<locals>.DuckReader.closedi  rz   r-   Nc                     dS )N   hellor,   )rv   rM   s     r&   r   z6test_input_stream_duck_typing.<locals>.DuckReader.readm  s    8r-   r)   )r~   r   r   r8   r   r7   r   r,   r-   r&   r   r  d  sR        	 	 	 
	 	 
		 	 	 	 	 	r-   r   r   r  )r3   r  r   )r   rZ   s     r&   test_input_stream_duck_typingr  b  sb    
 
 
 
 
 
 
 
 _ZZ\\**F;;q>>X%%%%%%r-   c                    d}| dz  }t          t          |          d          5 }|                    |           d d d            n# 1 swxY w Y   t          j        |          }|                                |k    sJ t          j        t          |                    }|                                |k    sJ t          j        t          j        t          |                              }|                                |k    sJ d S )Nrv  r  r   )r   r   r   r3   r  r   r  r  )r   rJ   	file_pathr%   rZ   s        r&   test_input_stream_file_pathr  t  s   .D'I	c)nnd	#	# q	               _Y''F;;==D    _S^^,,F;;==D    _W\#i..99::F;;==D      s   AAAc                    d}t          j        |          }| dz  }t          t          |          d          5 }|                    |           d d d            n# 1 swxY w Y   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 t          j        |d           }|                                |k    sJ d S )Nrv  zinput_stream.gzr   rq  r  
rq  r  r   r   r   r3   r  r   r  r  r   rJ   r  r  r%   rZ   s         r&   &test_input_stream_file_path_compressedr    s   .DmD!!G**I	c)nnd	#	# q	               _Y''F;;==D    _S^^,,F;;==D    _W\#i..99::F;;==D    _YF;;;F;;==D    _YD999F;;==G######   AA"Ac                 R   d}| dz  }t          t          |          d          5 }|                    |           d d d            n# 1 swxY w Y   t          j        |d          }t          |t          j                  sJ |                                |k    sJ t          j        t          |          d          }t          |t          j                  sJ |                                |k    sJ t          j        t          j	        t          |                    d          }t          |t          j                  sJ |                                |k    sJ t          j        |d          }t          |t          j
                  sJ d	}t          j        t          |
          5  t          j        |d           d d d            n# 1 swxY w Y   t          j        t                    5  t          j        |d           d d d            d S # 1 swxY w Y   d S )Nrv  zinput_stream.bufferedr       rW  r[  rT  r   $Buffer size must be larger than zeror1   rN   million)r   r   r   r3   r  r   rZ  r   r  r  r  r   r*   r   r9   )r   rJ   r  r%   rZ   unbuffered_streamrN  s          r&   $test_input_stream_file_path_bufferedr    s   .D00I	c)nnd	#	# q	               _YB777Ffb455555;;==D    _S^^<<<Ffb455555;;==D    _W\#i..99tLLLFfb455555;;==D    	qAAA'33333
0C	z	-	-	- 3 3
	r22223 3 3 3 3 3 3 3 3 3 3 3 3 3 3	y	!	! : :
	y9999: : : : : : : : : : : : : : : : : :s5   AAA1GGG8HH #H c                 J   d}t          j        |          }| dz  }t          t          |          d          5 }|                    |           d d d            n# 1 swxY w Y   t          j        |dd          }|                                |k    sJ t          j        t          |          d          }|                                |k    sJ t          j        t          j	        t          |                    d	          }|                                |k    sJ d S )
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  rX  rm  r[  rW  rT  r  r  s         r&   3test_input_stream_file_path_compressed_and_bufferedr    sB   /DmD!!GBBI	c)nnd	#	# q	               _YBFKKKF;;==D    _S^^<<<F;;==D    _W\#i..99tLLLF;;==D      r  c                    d}t          |          }t          j        |          }|                                |k    sJ t	          j        |          }t          |          }t          j        |          }|                                |k    sJ |                    d           t          j        |d          }|                                |k    sJ | dz  }t          t          |          d          5 }|	                    |           d d d            n# 1 swxY w Y   t          t          |          d          5 }t          j        |          }|                                |k    sJ 	 d d d            d S # 1 swxY w Y   d S )Nrv  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    mD!!G
'

C_S!!F;;==G####HHQKKK_Sf555F;;==D    'I	c)nnd	#	# q	              	c)nnd	#	# %q##{{}}$$$$$% % % % % % % % % % % % % % % % % %s$   8DD!D/E??FFc                     d} t          j        |           }t          j        |          }t          j        |          }||u sJ t          j        |          }t          j        |d          }|                                | k    sJ d S r  )rq  r  r3   r   r  r   )rJ   r  r   rZ   s       r&   test_input_stream_native_filer    s    .DmD!!G_W%%F_V$$FV_W%%F_V888F;;==D      r-   c                    t          d          }t          j        t                    5  t	          j        |d           d d d            n# 1 swxY w Y   t                      t                      fD ]G}t          j        t                    5  t	          j        |           d d d            n# 1 swxY w Y   Ht                      5  t	          j        d           d d d            n# 1 swxY w Y   t          t          | dz            d          5 }t          j        t          d          5  t	          j        |           d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )	Nr-   r  r  rS  new_filer   zreadable file expectedr1   )r|   r   r*   r   r3   r  rk   r   r9   r.   r   r   )r   r:   r  r%   s       r&   test_input_stream_errorsr    s   
S//C	z	"	" 0 0
////0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 XZZ( ! !]9%% 	! 	!OC   	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 
	 	  - -
+,,,- - - - - - - - - - - - - - - 
c&:%&&	-	- ]9,DEEE 	 	OA	 	 	 	 	 	 	 	 	 	 	 	 	 	 	                 sk   AAAB//B3	6B3		C**C.1C.E*1EE*E	E*E	E**E.1E.c                  |   d} t          t          |                     }t          j        t          j        |                    }|                    |            || k    sJ t          t          |                     }t          j        t          |                    }|                    |            || k    sJ d S )Nrv  )rk   r5   r3   output_streamr   r   r|   )rJ   r:   rZ   s      r&   test_output_stream_bufferr    s    .D
CII

Cbl3//00F
LL$;;;;
CII

Cjoo..F
LL$;;;;;;r-   c                       G d d          }  |             }t          j        |          }|                    d          sJ |j                                                                        dk    sJ d S )Nc                   6    e Zd Zd Zd Zed             Zd ZdS )2test_output_stream_duck_typing.<locals>.DuckWriterc                 6    t          j                    | _        d S r)   )r3   r  r:   ru   s    r&   __init__z;test_output_stream_duck_typing.<locals>.DuckWriter.__init__  s    ,..DHHHr-   c                     d S r)   r,   ru   s    r&   r8   z8test_output_stream_duck_typing.<locals>.DuckWriter.close	  rw   r-   c                     dS ry   r,   ru   s    r&   r7   z9test_output_stream_duck_typing.<locals>.DuckWriter.closed  rz   r-   c                 :    | j                             |           d S r)   )r:   r   )rv   rJ   s     r&   r   z8test_output_stream_duck_typing.<locals>.DuckWriter.write  s    HNN4     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22h>>>>>>r-   c                     d}| dz  }d } |||            |t          |          |            |t          j        t          |                    |           d S )Nrv  r  c                 *   t          j        |           5 }|                    |           d d d            n# 1 swxY w Y   t          t	          |           d          5 }|                                |k    sJ 	 d d d            d S # 1 swxY w Y   d S 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6688t#####	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$s   7;;BBB)r   r  r  r   rJ   r  r  s       r&   test_output_stream_file_pathr    st    .D(I$ $ $ Jy$Js9~~t$$$Jw|C	NN++T22222r-   c           	      P   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            d S # 1 swxY w Y   d S )	Nrv  zoutput_stream.gzc                    t          j        | fi |5 }|                    |           d d d            n# 1 swxY w Y   t          t	          |           d          5 }|                                cd d d            S # 1 swxY w Y   d S r   r  r  rJ   kwargsrZ   r%   s        r&   r  z;test_output_stream_file_path_compressed.<locals>.check_data-     i22622 	fLL	 	 	 	 	 	 	 	 	 	 	 	 	 	 	#i..$'' 	16688	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	   599A>>BBrq  r  zInvalid value for compressionr1   rabbit)rq  r  r   r  r  r   r*   r   r  s       r&   'test_output_stream_file_path_compressedr  (  s   .D++I   ?::i66774?????::c)nnd;;<<DDDD?
7<I//668 8;?@ @ @ @ ?
9d7779 9<@A A A A:i4888D@@@@	z)H	I	I	I I Iz)Tx@@@DHHHHHI I I I I I I I I I I I I I I I I Is   8DD"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            n# 1 swxY w Y    |||d	          |k    sJ  |||d
          |k    sJ  |t          |          |d	          |k    sJ  |t          j	        t          |                    |d	          }||k    sJ d S )Nrv  output_stream.bufferedc                    t          j        | fi |5 }|                    dd          dk    rt          |t           j                  sJ |                    |           d d d            n# 1 swxY w Y   t          t          |           d          5 }|                                cd d d            S # 1 swxY w Y   d S )NrX  r   r   )	r3   r  getr   ri  r   r   r   r   r  s        r&   r  z9test_output_stream_file_path_buffered.<locals>.check_dataD  s5   i22622 	fzz-++a//!&"*ABBBBBLL	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 #i..$'' 	16688	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s$   AA++A/2A/B44B8;B8r   rW  r  r1   ir  rT  )
r3   r  r   r  r   r*   r   r   r  r  )r   rJ   r  r  r  rN  r>   s          r&   %test_output_stream_file_path_bufferedr  @  s   .D11I   (BBB'33333
0C	z	-	-	- E Ez)Tt<<<DDDDDE E E E E E E E E E E E E E E :i2666$>>>>:i4888D@@@@:c)nnd;;;tCCCCZS^^44dKKKFT>>>>>>s   A<<B B c                    d}| dz  }d } |||d          }t          j        |          |k    sJ  |||d          }t          j        |          |k    sJ  |||dd          }t          j        |          |k    sJ d S )	Nr  z(output_stream_compressed_and_buffered.gzc                    t          j        | fi |5 }|                    |           d d d            n# 1 swxY w Y   t          t	          |           d          5 }|                                cd d d            S # 1 swxY w Y   d S r   r  r  s        r&   r  zHtest_output_stream_file_path_compressed_and_buffered.<locals>.check_data`  r  r  r  rW  rT  rq  r  rq  r  )r   rJ   r  r  r>   s        r&   4test_output_stream_file_path_compressed_and_bufferedr  [  s    /DCCI   Z	4R888F?6""d****Z	4T:::F?6""d****Z	4TvNNNF?6""d******r-   c                 j    d}| dz  }d } |||d          |k    sJ  |||d          |k    sJ d S )Ns   some test data
r  c                    t          j        | fi |}|                    |           ~t          j                     t          t          |           d          5 }|                                cd d d            S # 1 swxY w Y   d S r   )r3   r  r   r   r   r   r   r   r  s        r&   r  z1test_output_stream_destructor.<locals>.check_dataw  s    !)66v66T

#i..$'' 	16688	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   A::A>A>r   rW  rT  r,   r  s       r&   test_output_stream_destructorr  p  so     D11I   :i1555====:i4888D@@@@@@r-   c                      d} fd} ||          |k    sJ t          j         ||d                    |k    sJ d S )Nrv  c                 r   t          dz            }t          |d          5 }t          j        |fi |5 }|                    |            d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   t          |d          5 }|                                cd d d            S # 1 swxY w Y   d S )Noutput_stream_filer   r   )r   r   r3   r  r   r   )rJ   r  rq  r%   rZ   r   s        r&   r  z2test_output_stream_python_file.<locals>.check_data  sq    ..//"d^^ 	#q!!..v.. #&T"""# # # # # # # # # # # # # # #	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# "d^^ 	q6688	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	sF   A0AA0A	A0 A	!A00A47A4B,,B03B0rq  r  r  )r   rJ   r  s   `  r&   test_output_stream_python_filer    sn    .D	 	 	 	 	 :dt####?::d???@@DHHHHHHr-   c                    t          t                                }t          j        t                    5  t          j        |d           d d d            n# 1 swxY w Y   t                      t                      fD ]G}t          j        t                    5  t          j        |           d d d            n# 1 swxY w Y   Ht          | dz            }t          |d          5 }	 d d d            n# 1 swxY w Y   t          |d          5 }t          j        t          d          5  t          j        |           d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )Nr  r  r  r   r   zwritable file expectedr1   )r|   rk   r   r*   r   r3   r  r   r9   r   r   )r   r:   r  rq  r%   s        r&   test_output_stream_errorsr    s   
Y[[
!
!C	z	"	" 1 1
%00001 1 1 1 1 1 1 1 1 1 1 1 1 1 1 XZZ( " "]9%% 	" 	"S!!!	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 
Vj 	!	!B	b$ 1              	b$  1]9,DEEE 	  	 Q	  	  	  	  	  	  	  	  	  	  	  	  	  	  	                                    sk   AAAB;;B?	B?	)C77C;>C;E'.EE'E	E'E	E''E+.E+r)   )T)rn  
contextlibr   ior   r   r   r   r   r  r   rq  r>  r    r  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'  r1  r:  rA  rE  rH  rQ  rT  r\  ra  rd  rk  rm  rt  rx  r|  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r,   r-   r&   <module>r#     sF  $ 


 % % % % % % I I I I I I I I I I I I I I     				   				    



     	BBB                   .   " " "8, , ,B #56688' ' 98 76'T  "# # #
& 
& 
&' ' '8% % %$ $ $    6, , ,
" " " ) ) )2  (	 	 	 3 3 3. . .
4 
4 
4. . .. . .     3& & &' ', ,	' ',
 	 	 	 ' ' '" * * *(   :    0P 0P 0Pf# # # ) ) ) 
 
 

' 
' 
'   C C CL- - -`J J J FLV[&&bf.M&NN   
	
	) 	 	; ;	 	 ;< FLV[&&bf.M&NN   
	
	) 	 	LE LE	 	 LE^; ; ;(  ' ' '  3 3 3" ( ( (*+ + +L   $ 8<! ! ! !B> > >
, , , ; ; ;! ! !  ( ( (V- - -(& & &D D D      6  < < <~ LL )K   ? ? ? * * *<  >: : :"$ $ $. & & &$1 1 1  
" 
" 
"   3 3 3" 
- 
- 
- ( ( (( - - -     4   4 4 4 
 
 
        	 	 	" " " 9W\)f%W\$%%v.	<  2 2 2   	
	
FLkrv'FGG  
) 
 
 
 
" ,,,  	 ,V - - - 6   5 5 5 6,+-. .7 7. .7 6,.  	  6--  	  
! 
! 
!& & &$! ! ! $ $ $(: : :4 ! ! ! % % %. ! ! !  "
 
 
? ? ?,3 3 3 I I I.  6 + + +(A A A& I I I$         s   A AA