o
    h                     @   s  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zd dlZW n eyU   dZY nw d dlmZ d dlmZ d dlZdddZedd	 Zd
d Zdd Zej !ddej !dddd Z"dd Z#dd Z$dd Z%dd Z&dd Z'dd Z(d d! Z)d"d# Z*d$d% Z+d&d' Z,d(d) Z-d*d+ Z.d,d- Z/d.d/ Z0d0d1 Z1d2d3 Z2d4d5 Z3d6d7 Z4d8d9 Z5d:d; Z6ej !d<g d=d>d? Z7ej jd@dA Z8ej jdBdC Z9ej jdDdE Z:ej jdFdG Z;dHdI Z<dJdK Z=dLdM Z>dNdO Z?ej jdPdQ Z@ej jdRdS ZAdTdU ZBdVdW ZCej jdXdY ZDdZd[ ZEd\d] ZFej jej !d^ejGd_ej jHejIjJd`dadbdcdddedfgdgdh ZKej jej !d^ejGd_ej jHejIjJd`dadbdcdddedfgdidj ZLdkdl ZMdmdn ZNdodp ZOdqdr ZPdsdt ZQej jdudv ZRdwdx ZSejTdydz ZU	{dd|d}ZVd~d ZWdd ZXdd ZYdd ZZdd Z[dd Z\dd Z]dd Z^dd Z_dd Z`dd Zadd Zbdd Zcdd Zdej jHejedkdddd Zfdd Zgdd Zhdd Zidd Zjej jkdd Zldd Zmdd Zndd Zodd Zpej jdd Zqej jdd Zrdd Zsej jdd Ztdd Zuej jdd Zvdd Zwej jdd Zxej jdd ZyddĄ Zzej jddƄ Z{ddȄ Z|ddʄ Z}ej !ddde~dΡdcfe~dϡdefgddф Zddӄ Zej !d^d_dbdcdddeejGdfej jHejIjJd`dagddՄ Zej !d^g d֢dd؄ ZdZddۄ Zej !dg dݢdd߄ Zej !dddgdd Zej !dddgdd Zej !dddgdd Zej jdd Zdd Zdd Zej jdd Zdd Zej jdd Zej jdd Zej jdd Zdd Zdd Zd d Zdd Zej jdd Zdd Zej jdd	 Zd
d Zej jdd Zdd ZdS (      N)contextmanager)BytesIOStringIOTextIOWrapperBufferedIOBaseIOBase)guid)Codecc              	   C   sT  t jdv r
td ztjdd}t|d}|d |d |	d W d    n1 s0w   Y  |rN| | | W d    n1 sHw   Y  nF| |2}|
 dks[J |ddksdJ | dkslJ |d	dksuJ | dks}J W d    n1 sw   Y  W t| d S W t| d S W t| d S t| 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f r$   I/var/www/vscode/kcb/lib/python3.10/site-packages/pyarrow/tests/test_io.pycheck_large_seeks+   s4   





 r&   c                   c   s8    t t d V  W d    d S 1 sw   Y  d S N)r   raisesFileNotFoundErrorr$   r$   r$   r%   assert_file_not_foundB   s   "r*   c                  C   s   t  } t| }| dksJ d}d}|| | t|ks#J || || }|  }||ks6J |jr;J |  |jsDJ t	j
tdd tt  W d    d S 1 s]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resultr$   r$   r%   test_python_file_writeL   s"   




"r:   c                  C   s.  d} t | }tj|dd}| t| ksJ | dksJ |ddks(J | dks0J |d | dks=J |d | dksJJ |d}|d	ksUJ t|d
ks]J | t| ksgJ |jrlJ |	  |jsuJ t
jtdd tjt dd W d    d S 1 sw   Y  d S )N   some sample datarmoder         somer   2      sample data   r+   r,   )r   r.   r/   r   r0   r   r   r   r2   r3   r   r(   r4   r   )datar5   r#   vr$   r$   r%   test_python_file_readh   s*   




"rF   nbytes)r      r   d   file_offset)rH   r   r   rJ   c           	      C   sh  d}t jt|dd}| dk s|dk r8tjt jdd |j|| d W d    n1 s-w   Y  |  d S |j|| d}t|t	|}t||  t	|}t||| }|j
dd	|
dksdJ |j
d
d	|
d
ksqJ |
 |
 ks{J t	|d }|
||
|ksJ tjtdd |d W d    n1 sw   Y  |  |jsJ d S )Ns   data1data2data3data4data5r<   r=   r   zshould be a positive valuer,   )rK   rG   r?   )rG         seekable)r.   r/   r   r   r(   ArrowInvalid
get_streamr3   minr0   r   OSErrorr   r2   )	rG   rK   rD   r#   streamstartendr5   nr$   r$   r%   test_python_file_get_stream   s0   rW   c                  C   sr   d} t | }tj|dd}|jddd}|dksJ t|dks"J |jdd	d}|| ks/J t|d
ks7J d S )Nr;   r<   r=   r      )rG   offsets   e samrA   r      )r   r.   r/   read_atr0   )rD   r5   r#   rE   wr$   r$   r%   test_python_file_read_at   s   r]   c                  C   sP   d} t | }tj|dd}| | ksJ W d    d S 1 s!w   Y  d S )Nr;   r<   r=   )r   r.   r/   readall)rD   r5   r#   r$   r$   r%   test_python_file_readall   s
   "r_   c                  C   s   d} d}t | }t|}tj|dd(}||dksJ |d |  |d |  ks+J t|| ks3J W d    d S 1 s>w   Y  d S )N
   s   some sample data longer than 10r<   r=   )	bytearrayr   r.   r/   readintor0   )lengthrD   dst_bufsrc_bufr#   r$   r$   r%   test_python_file_readinto   s   "rf   c                     s   dd} t |  G  fddd}| }tj|dd6}|}t|ks*J t|  d  ks8J tdt|d<  d tdksJJ W d    d S 1 sUw   Y  d S )	Nr`   s
   0123456798c                       s.   e Zd Zdd Zedd Z fddZdS )z0test_python_file_read_buffer.<locals>.DuckReaderc                 S      d S r'   r$   selfr$   r$   r%   r3         z6test_python_file_read_buffer.<locals>.DuckReader.closec                 S      dS NFr$   rh   r$   r$   r%   r2         z7test_python_file_read_buffer.<locals>.DuckReader.closedc                    s   |ksJ t  d | S r'   )
memoryviewri   rG   rd   rc   r$   r%   read_buffer   s   z<test_python_file_read_buffer.<locals>.DuckReader.read_bufferN)__name__
__module____qualname__r3   propertyr2   rq   r$   rp   r$   r%   
DuckReader   s
    
rv   r<   r=      xr   )ra   r.   r/   rq   r0   rn   tobytesord)rD   rv   duck_readerr#   r5   r$   rp   r%   test_python_file_read_buffer   s   
"r{   c                  C   sT   t jtddd} t| tsJ t| tsJ W d    d S 1 s#w   Y  d S )N    r<   r=   )r.   r/   r   
isinstancer   r   r#   r$   r$   r%   test_python_file_correct_abc   s   "r   c                  C   sh   d} t | }t | }tj|dd}t||D ]
\}}||ks!J qW d    d S 1 s-w   Y  d S )Ns   line1
    line2
    line3
    r<   r=   )r   r.   r/   zip)rD   r5   buf2r#   r   r8   r$   r$   r%   test_python_file_iterable   s   "r   c                  C   s   dd } t |  d S )Nc                 S   s   t t| dS Nrb)r.   r/   r   )r"   r$   r$   r%   factory     z-test_python_file_large_seeks.<locals>.factory)r&   )r   r$   r$   r%   test_python_file_large_seeks  s   r   c                  C   s   d} t | }| dksJ | t| ksJ |ddks"J | dks*J |d | dks7J |dd | t| ksGJ |d | dksTJ |ddks]J |jrbJ |  |jskJ d S )	Nr;   r   r?   r@   rM   r   rA   rB   )	r.   BufferReaderr   r   r0   r   r   r2   r3   )rD   r#   r$   r$   r%   test_bytes_reader  s    



r   c                   C   s:   t t td W d    d S 1 sw   Y  d S )Nzsome sample data)r   r(   r4   r.   r   r$   r$   r$   r%   test_bytes_reader_non_bytes-  s   "r   c                  C   s@   dd l } dd }| }|   | dksJ |jd usJ d S )Nr   c                  S   s&   dd } t | }|d |dS )Nr;     r   rL   )r.   r   r   rq   )rD   readerr$   r$   r%   
get_buffer6  s   


z>test_bytes_reader_retains_parent_reference.<locals>.get_buffers   sample)gccollect
to_pybytesparent)r   r   r5   r$   r$   r%   *test_bytes_reader_retains_parent_reference2  s   r   c                 C   s.  t jt| d}t|d$}t|}| sJ | r J |	 r&J |
d W d    n1 s5w   Y  t|d'}t|}| sKJ | rQJ |	 sWJ | dks_J W d    n1 siw   Y  t }t|}| s|J | rJ |	 rJ |
d | dksJ d S )Nfoo.txtr   s   foobar
r   )r   pathjoinstrr   r.   r/   writablereadablerN   r   r   r   r1   )tmpdirr   r#   pfbior$   r$   r%   test_python_file_implicit_modeB  s,   



r   c              	   C   s   ddg}t jt| d}t|d&}ztj|dd}| s!J || W |	  n|	  w W d    n1 s;w   Y  t|d-}ztj|dd}|
 sTJ | d	|ks_J W |	  n|	  w W d    d S 1 suw   Y  d S )
Ns   line1
s   line2
line3r   r   r\   r=   r   r<   r|   )r   r   r   r   r   r.   r/   r   
writelinesr3   r   r   )r   linesr   r#   r$   r$   r%   test_python_file_writelines[  s    "r   c                  C   sT   t  } t| }t|}~| d u sJ | jrJ t| }|  | js(J d S r'   )r   r.   r/   weakrefrefr2   r3   )r   r   wrr$   r$   r%   test_python_file_closingo  s   



r   c                 C   sz   t d|jd D ]2}||j| |d}t|t| ksJ t|t| ks(J | |  ks2J |j| jks:J qd S )Nr   rI   protocol)rangeHIGHEST_PROTOCOLloadsdumpsr0   rn   r   
is_mutable)r5   picklerr   r9   r$   r$   r%   check_buffer_pickling  s   r   c                 C   sT   d}t |}t|t jsJ |jrJ |jsJ | }||ks#J t||  d S N	   some data)r.   	py_bufferr}   Bufferr   is_cpur   r   pickle_modulevalr5   r9   r$   r$   r%   test_buffer_bytes     


r   c                 C   sf   t jddd}| dksJ |jdksJ t|}| dks"J t |jdks,J t||  d S )Nr   )addressr   r|   )r.   foreign_bufferr   r   rn   rx   r   r   )r   	null_buffmr$   r$   r%   test_buffer_null_data  s   r   c                 C   sT   d}t |}t|t jsJ |jrJ |jsJ t|}||ks#J t||  d S r   )r.   r   r}   r   r   r   rn   r   r   r$   r$   r%   test_buffer_memoryview  r   r   c                 C   sX   t d}t|}t|tjsJ |jsJ |jsJ t |}||ks%J t||  d S r   )ra   r.   r   r}   r   r   r   r   r   r$   r$   r%   test_buffer_bytearray  s   


r   c                   C   s>   t jtdd td  W d    d S 1 sw   Y  d S )Nz$(bytes-like object|buffer interface)r,   )r   r(   r4   r.   r   r$   r$   r$   r%   test_buffer_invalid  s
   "r   c                  C   s6   t d} t| }| d usJ ~ | d u sJ d S r   )r.   r   r   r   )r5   r   r$   r$   r%   test_buffer_weakref  s
   

r   zval, expected_hex_buffer))s   checks
   636865636B)s   0s   0730)r|   r|   c                 C   s   t | }| |ksJ d S r'   )r.   r   hex)r   expected_hex_bufferr5   r$   r$   r%   test_buffer_hex  s   
r   c                  C   sr   t d} d| d< t| }tj|dd}|d | d ksJ | d  d7  < |d | d ks0J |j|ks7J d S )N   *   r   uint8dtyperI   )ra   r.   r   np
frombufferbase)
byte_arrayr5   arrayr$   r$   r%   test_buffer_to_numpy  s   
r   c                  C   s   t jdt jdd} t| }|jsJ |jsJ | | 	 ks$J t| j
}|js/J |js4J | | 	 ks>J tjtdd t| j
d d d }W d    d S 1 s\w   Y  d S )N   r   )rX   r?   znot contiguousr,   rM   )r   arangeint8reshaper.   r   r   r   r   rx   Tr   r(   
ValueError)arrr5   r$   r$   r%   test_buffer_from_numpy  s   




"r   c            	      C   s   d} t | }t | }t| }t| }t|}t|}|jdks%J |j|jks-J |j|jks5J |j|jks=J td}t|}|j|jjksPJ d S )N
   some data!r   r   )ra   r.   r   r   r   r   ctypesrD   )	b1b2b3buf1r   buf3buf4r   r5   r$   r$   r%   test_buffer_address  s   





r   c            
      C   s   dd } dd }d}t |}t |}d|d< t|}t|}t|}t|}ttj|tjd}	| || | || | || ||| | ||	 d S )	Nc                 S   s*   |  |sJ | |ksJ | |krJ d S r'   equalsabr$   r$   r%   eq     ztest_buffer_equals.<locals>.eqc                 S   s*   |  |rJ | |krJ | |ksJ d S r'   r   r   r$   r$   r%   ne  r   ztest_buffer_equals.<locals>.ner   r   r   r   )ra   r.   r   r   r   int16)
r   r   r   r   r   r   r   r   r   buf5r$   r$   r%   test_buffer_equals  s    







r   c                  C   sj   t d} | dksJ | tdksJ | dksJ tt | dk W d    d S 1 s.w   Y  d S )Nr   s	   some dat1z	some data)r.   r   ra   r   r(   r4   r5   r$   r$   r%   test_buffer_eq_bytes)  s   

"r   c                  C   s   t d} t| }t| }t| |d D ]}|| | | ks!J qtt ||  W d    n1 s6w   Y  tt || d   W d    d S 1 sSw   Y  d S )Nr   rI   )ra   r.   r   r0   r   r   r(   
IndexError)rD   r5   rV   ixr$   r$   r%   test_buffer_getitem3  s   

"r   c            	      C   s  d} t | }|d}t d}||sJ |dd}t d}||s*J |d|s4J t|t|dksAJ tt |d W d    n1 sVw   Y  tt |t|d  W d    n1 stw   Y  |d	d   d
ksJ tt |dt| W d    n1 sw   Y  |dd	  | dd  ksJ tt |dd W d    n1 sw   Y  |dd  |dsJ |dd |ddsJ |dd  |t|d sJ |dd |t|d dsJ tt |d d d  W d    n	1 s*w   Y  tt |d d d  W d    n	1 sGw   Y  t|}t	| d |d D ]$}t	| d |d D ]}|||  | || ks{J qfqZd S )Nr   rM   s   me data!r?   s   me dr   rH   rI   rC   r|   r   rX   )
r.   r   slicer   r0   r   r(   r   r   r   )	rD   r5   slicedr8   sliced2	expected2rV   rT   stopr$   r$   r%   test_buffer_slicingB  sP   



$$(*r   c                   C   sB   t jtdd ttd W d    d S 1 sw   Y  d S )N
unhashabler,   s   123)r   r(   r4   hashr.   r   r$   r$   r$   r%   test_buffer_hashingu  s   "r   c                  C   s.   d} t | }tj|tjd}|jjrJ d S )Ns   12345r   )r.   r   r   r   r   flags	writeable)r   	arrow_ref	numpy_refr$   r$   r%   *test_buffer_protocol_respects_immutability{  s   
r   c                  C   s   t jddgt jd} | jd d }| j}t||| }t| }~ t j	|t jd
 ddgks1J | d us8J ~| d u s@J d S )NrI   rM   r   rD   r   )r   r   int32__array_interface__rG   r.   r   r   r   r   tolist)objaddrr   r5   r   r$   r$   r%   test_foreign_buffer  s   
 r  c                  C   sd   t d} | jdksJ | jsJ | jd u sJ d}t | }|| |  d d |ks0J d S )NrJ   s   abcder   )r.   allocate_bufferr   r   r   FixedSizeBufferWriterr   r   )r5   bitwriterr$   r$   r%   test_allocate_buffer  s   



r	  c                  C   s:   t jddd} t| t jsJ | d | jdksJ d S )NrJ   T)	resizable   )r.   r  r}   ResizableBufferresizer   r   r$   r$   r%   test_allocate_buffer_resizable  s   
r  c                 C   s  t d}|d}tdg}||}tjt	ddd |g}|
 d }|j|jks0J |j|jks8J |j|jks@J |jsEJ d}d}|t|v sQJ |t|v sYJ |d}	|j|	}
|
 d	kslJ |dd
 }	|j|	}
|
 dksJ |	|dd
 sJ d}t jt|d |t| W d    n1 sw   Y  d}td	g}||}t jt|d |	| W d    n1 sw   Y  tjt	ddd |g}|
 d }t jt|d |	| W d    n1 sw   Y  t jt|d |  W d    n	1 sw   Y  t jt|d |  W d    n	1 s7w   Y  t jt|d |d  W d    n	1 sSw   Y  t jt|d |  W d    n	1 sow   Y  t jt|d | j|d
d W d    n	1 sw   Y  t jt|d | j|d
d W d    n	1 sw   Y  t jt|d t| W d    d S 1 sw   Y  d S )Nzpyarrow.cudar   s   testing   rI   z<pyarrow.Buffer address=z$size=7 is_cpu=False is_mutable=True>rM   s   stingr?   s   stz8Device on which the data resides differs between buffersr,   z'Implemented only for data on CPU devicer   r   )r   importorskipContextr   r   buffer_from_datar.   FixedSizeBinaryArrayfrom_buffersbinarybuffersr   r   r   r   reprr   
CudaBufferfrom_bufferr   r   r(   r   r   NotImplementedErrorr   r   rn   )r   cudactxrD   cuda_bufr   
buf_on_gpurepr1repr2buf_on_gpu_slicedcuda_sliced
msg_devicemsg	arr_shortcuda_buf_shortbuf_on_gpu_shortr$   r$   r%   test_non_cpu_buffer  sv   










$r(  c                  C   s  t  } t jdd}t jddd}t jdddd}t jdddd	}t jjd
dddd}| jdks2J | jdks9J | jdu s@J | jdksGJ |jdksNJ |jdksUJ |jdu s\J |jdkscJ |jdksjJ |jdksqJ |jdu sxJ |jdksJ |jdksJ |jdksJ |jdu sJ |jdksJ |jdksJ |jdksJ |jdu sJ |jdksJ |jdu sJ | | ksJ | |ksJ ||ksJ ||ksJ ||ksJ || ksJ d S )N   )hole_size_limit       )r*  range_size_limitr   )r*  r-  prefetch_limitF)r*  r-  lazyrJ   r  g?@   )time_to_first_byte_millistransfer_bandwidth_mib_per_sec ideal_bandwidth_utilization_fracmax_ideal_request_size_mibi   Tr   )r.   CacheOptionsfrom_network_metricsr*  r-  r/  r.  )opts1opts2opts3opts4opts5opts6r$   r$   r%   test_cache_options  sR   r=  c                 C   s@   t  t jdddddg}|D ]}| | ||ksJ qd S )Nr+  r,  Tr   )r*  r-  r/  r.  )r.   r5  r   r   )r   optionsoptionr$   r$   r%   test_cache_options_pickling!  s   r@  compressionbz2)r(   )marksbrotligziplz4zstdsnappyc                 C   s   t | std|  d}tjjdd|dtj	
 }t|}tj|| d}tj|| dd}t|ts9J tj||| d}tj||| dd}t|tsQJ ||sXJ ||ks^J tt tj|| d W d    d S 1 svw   Y  d S )	N{} support is not built'  r      r   )codecT)rM  asbytes)r	   is_availabler   r   formatr   randomrandintastyper   rx   r.   r   compressr}   bytes
decompressr   r(   r   )rA  
INPUT_SIZE	test_datatest_bufcompressed_bufcompressed_bytesdecompressed_bufdecompressed_bytesr$   r$   r%   test_compress_decompress,  s2   

"r^  c              	   C   s  t | std|  t | }|jdkr|jd u sJ nt|jts&J dg}| |v rt 	| r4J t
t t | d W d    n1 sIw   Y  t
t t |  W d    n1 scw   Y  t
t t |  W d    n1 s}w   Y  t
t t |  W d    d S 1 sw   Y  d S d}tjjdd|dtj }t|}t | }t | }t | }||k sJ ||ksJ ||ksJ t||d D ]Z}	t | |	}||}
|j|dd	}t|tsJ ||
|}|j||dd	}t|tsJ ||sJ ||ksJ t
t || W d    n	1 s2w   Y  qttjd
sDtd tjjdd}|ddd}t|}|  d }t | |}||}t | |}||}t!|t!|ks|J d S )NrI  rH  r   rJ  rK  rL  rI   T)rN  default_rngzRequires newer version of numpyr   )seedrJ   r   )"r	   rO  r   r   rP  namecompression_levelr}   intsupports_compression_levelr(   r   minimum_compression_levelmaximum_compression_leveldefault_compression_levelr   rQ  rR  rS  r   rx   r.   r   r   rT  rU  rV  r   hasattrr_  integersr   r  r0   )rA  rM  no_levelrW  rX  rY  	min_level	max_leveldefault_levelrb  rZ  r[  r\  r]  rngvaluesr   hard_to_compress_buffer
weak_codecweakly_compressed_bufstrong_codecstrongly_compressed_bufr$   r$   r%   test_compression_levelU  s~   














ru  c                  C   s   d} t | }|jrJ t|t jsJ t|}|jsJ tt	}d|d< dt
|jv s0J W d    n1 s:w   Y  t|}tt	}d|d< dt
|jv sVJ W d    d S 1 saw   Y  d S )Nr      hr   zcannot modify read-only)r.   r   r   r}   r   rn   readonlyr   r(   r4   r   valuerU  )r   r5   r9   excr   r$   r$   r%   #test_buffer_memoryview_is_immutable  s   


"rz  c                   C   s8   t t t  W d    d S 1 sw   Y  d S r'   )r   r(   r4   r.   r   r$   r$   r$   r%   test_uninitialized_buffer  s   
"r{  c                  C   s`   d} t  }d}t|D ]}||  q| }t|t| | ks$J | | | ks.J d S )N
   dataabcdefr   )r.   BufferOutputStreamr   r   r1   r0   r   )r   r#   Kir5   r$   r$   r%   test_memory_output_stream  s   r  c                  C   sh   t  } | d | jrJ |   | jsJ tt | d W d    d S 1 s-w   Y  d S )N   oks   not ok)r.   r}  r   r2   r1   r   r(   r   r~   r$   r$   r%    test_inmemory_write_after_closed  s   


"r  c                  C   sf   dd } | d}t   |dksJ d}t|}tdD ]}| | qt   |t|ks1J d S )Nc                 S   s   t t| S r'   )ra   r.   r   )	bytes_objr$   r$   r%   make_buffer     z6test_buffer_protocol_ref_counting.<locals>.make_buffer   foor`   )r   r   r   getrefcountr   )r  r5   r   refcount_beforer  r$   r$   r%   !test_buffer_protocol_ref_counting  s   

r  c                  C   s   t  } d}tj|dd}| | | t| | t | tt	 | |
d W d    n1 s9w   Y  |  }| |d ksLJ d S )Nr  S1r   utf8rX   )r.   r}  r   r   r   ra   r   r   r(   r4   decoder1   r   )r#   rD   r   r5   r$   r$   r%    test_nativefile_write_memoryview  s   
r  c                  C   s   d} t  }t  }d}t|D ]}||  ||  q| t| ks)J t j	t 
g dgdg}t  }t  }t ||j}t ||j}|| || |  |  | t| kskJ d S )Nr|  r   )rI   rM   rX   r   )r.   MockOutputStreamr}  r   r   r   r0   r1   RecordBatchfrom_arraysr   RecordBatchStreamWriterschemawrite_batchr3   )r   f1f2r~  r  record_batchstream_writer1stream_writer2r$   r$   r%   test_mock_output_stream
  s$   


r  c                    s   d}dd t |D }t|d | }tjt|t  t d}|| W d    n1 s2w   Y   fdd}| 	|  |fS )Nr+  c                 S      g | ]}t d dqS r   rK  rQ  rR  .0_r$   r$   r%   
<listcomp>3      z$sample_disk_data.<locals>.<listcomp>r   c                      s   t   d S r'   )_try_deleter$   r   r$   r%   teardown;  s   z"sample_disk_data.<locals>.teardown)
r   rU  r   r   r   r   r   r   r   addfinalizer)requestr   SIZEr   rD   r#   r  r$   r  r%   sample_disk_data0  s   
r  Tc                 C   sD  |\}}| |dd}| d|d d ksJ | ddks J | dks(J |  |dd  ks4J | t|ks>J |d | dksKJ |rk|t|d  | t|d ksbJ | ddkskJ |ddkstJ |dtjd	ksJ | d	ksJ t|d
 }|dtj|ksJ | |ksJ d S )Nr<   r=   r`   r   r|   rI   r   rX   rL   rM   r   )r   r   r   r0   r   r   SEEK_CURSEEK_END)FACTORYsample_dataallow_read_out_of_boundsr   rD   r#   	ex_lengthr$   r$   r%   _check_native_file_readerB  s&   
r  c                 C   s   t tj| dd d S )NF)r  )r  r.   
memory_mapr  r$   r$   r%   test_memory_map_readerc  s   
r  c                 C   s   | \}}g }t |d2}||d|d d f ||d|dd f ||d|dd f W d    n1 sAw   Y  t  |D ]\}}| |ksXJ qLd S )Nr   rJ   r  i,  )r.   r  appendrq   r   r   r   )r  r   rD   casesr#   r5   r8   r$   r$   r%   'test_memory_map_retain_buffer_referenceh  s   r  c                 C   s   t tj|  d S r'   )r  r.   OSFiler  r$   r$   r%   test_os_file_readerx  r   r  c                   C   s   t tj d S r'   )r&   r.   r  r$   r$   r$   r%   test_os_file_large_seeks|  r  r  c                 C   s(   zt |  W d S  t jy   Y d S w r'   )r   removeerrorr  r$   r$   r%   r    s
   r  c           	      C   s  t jdkr
td d}dd t|D }t|d | }tjt	| t
 }t|d}|| W d    n1 s<w   Y  tj|dd}|d	 |d
 | dksZJ |d	 |dd
kshJ tj|dd}|d	 |d |d	 |d	 |ddksJ tj|dd}|d t|}| |ksJ W d    n1 sw   Y  tt |d W d    n1 sw   Y  |d |ddksJ d S )Nr   z:Multiple memory maps to same file don't work on emscriptenr+  c                 S   r  r  r  r  r$   r$   r%   r    r  z*test_memory_map_writer.<locals>.<listcomp>r   r+br=   r`   s   peekaboo      s   booapeakr\   r  r   r   rX   )r   r   r   xfailr   rU  r   r   r   r   r   r   r   r.   r  r   r   r   r   r(   IOError)	r   r  r   rD   r   r#   r  f3f4r$   r$   r%   test_memory_map_writer  s>   










r  c                 C   s   d}dd t |D }t|d |d  }t||d d  }tjt| t }t||d }|	| |
| |	| |  t|d}| t|d | ksXJ W d    d S 1 scw   Y  d S )Nr+  c                 S   r  r  r  r  r$   r$   r%   r    r  z*test_memory_map_resize.<locals>.<listcomp>rM   r   )r   rU  r   r   r   r   r   r.   create_memory_mapr   r  r3   r   r   )r   r  r   data1data2r   mmapr#   r$   r$   r%   test_memory_map_resize  s   


"r  c                 C   sj   t jt| t }t|d}|  tj|dd}|	 dks#J W d    d S 1 s.w   Y  d S )Nr   r  r=   r   )
r   r   r   r   r   r   r3   r.   r  r   )r   r   r#   r  r$   r$   r%   test_memory_zero_length  s   
"r  c                  C   s2   t jdkrd } ntjtjdd} ttj| d d S )Nl        zARequested memory map length 4294967306 does not fit in a C size_tr,   r!   )r   maxsizer   r(   r.   ArrowCapacityErrorr&   r  r  r$   r$   r%   test_memory_map_large_seeks  s   
r  c                 C   s@   t jt| t }t|d}|  |jsJ t 	| d S Nr+  )
r   r   r   r   r   r.   r  r3   r2   r  )r   r   r  r$   r$   r%   test_memory_map_close_remove  s
   
r  c                 C   s.   t jt| t }t|d t | d S r  )r   r   r   r   r   r.   r  r  )r   r   r$   r$   r%   test_memory_map_deref_remove  s   r  c           
      C   st  d}dd t |D }t|d | }tjt| t }t|d}|| W d    n1 s2w   Y  t	j
|dd}|d t	
|}| dksQJ W d    n1 s[w   Y  tt |d	 W d    n1 suw   Y  |  t	j
|d
d}|d W d    n1 sw   Y  t	
|}	|	 dksJ W d    d S 1 sw   Y  d S )Nr+  c                 S   r  r  r  r  r$   r$   r%   r    r  z'test_os_file_writer.<locals>.<listcomp>r   r\   r=   r  rX   r   abs   barrL   )r   rU  r   r   r   r   r   r   r   r.   r  r   r   r(   r  r   r3   )
r   r  r   rD   r   r#   r  r  r  f5r$   r$   r%   test_os_file_writer  s,   
"r  c                  C   sB   t  } tt | d W d    d S 1 sw   Y  d S )Nfoo)r.   r}  r   r(   r4   r   )nfr$   r$   r%   %test_native_file_write_reject_unicode  s   "r  c                 C   s
  t jt| t }t|d}|d W d    n1 sw   Y  tj|dd!}|j	dks3J |
 s9J | r?J | sEJ W d    n1 sOw   Y  tj|dd!}|j	dkscJ |
 siJ | roJ | suJ W d    n1 sw   Y  tj|dd!}|j	dksJ |
 rJ | sJ | rJ W d    n1 sw   Y  tj|dd!}|j	dksJ |
 rJ | sJ | rJ W d    n1 sw   Y  tj|dd"}|j	dksJ |
 rJ | sJ | rJ W d    n	1 sw   Y  tj|dd%}|j	dks&J |
 r-J | s4J | r;J W d    n	1 sFw   Y  t|d}|d W d    n	1 saw   Y  t|d%}|j	dksuJ |
 s|J | rJ | sJ W d    n	1 sw   Y  t|d	%}|j	d
ksJ |
 sJ | sJ | sJ W d    n	1 sw   Y  t|d&}|j	d
ksJ |
 sJ | sJ | sJ W d    d S 1 sw   Y  d S )Nr      foooor<   r=   r   r\   r  r   zr+zrb+r  )r   r   r   r   r   r   r   r.   r  r>   r   r   rN   r  )r   r   r#   r$   r$   r%   test_native_file_modes
  sz   $r  r   z umask doesn't work on Emscripten)reasonc                 C   s   t d}t | t jt| t }tj|dd W d    n1 s&w   Y  t |j	d@ d| @ ks:J t jt| t }t
|d W d    n1 sUw   Y  t |j	d@ d| @ ksiJ d S )NrM   r\   r=   i  i  )r   umaskr   r   r   r   r.   r  statst_moder  )r   	cur_umaskr   r$   r$   r%   test_native_file_permissionsI  s   

"r  c           	   
   C   s0  t jt| t }t|d}|d W d    n1 sw   Y  tj|dd}|j	r1J W d    n1 s;w   Y  |j	sEJ tj
|dd}|j	rRJ W d    n1 s\w   Y  |j	sfJ ||g}g d}|D ]%}|D ] \}}tt t|||  W d    n1 sw   Y  qtqpd S )Nr   r  r   r=   ))r   r$   )r   )r   )r   r$   )flushr$   )r   r$   )r   r$   )rN   r$   )r   r   r   r   r   r   r   r.   r  r2   r  r   r(   r   getattr)	r   r   r#   os_file	mmap_filefilesmethodsmethodargsr$   r$   r%   .test_native_file_raises_ValueError_after_close\  s0   

r  c                 C   s  d}t jt| t }t|d}||d W d    n1 s$w   Y  tt	j
|dd}| s9J | }||ksCJ W d    n1 sMw   Y  |jsWJ tt	j
|dd}t|}d||ksnJ W d    n1 sxw   Y  t jt| t }tt	j
|dd}| sJ || W d    n1 sw   Y  tt	j
|dd}| }||ksJ W d    d S 1 sw   Y  d S )Nzfoooo
barrr
bazzz
r   utf-8r   r=    )r   r   r   r   r   r   r   encoder   r.   r  r   r   r2   listr   )r   rD   r   r#   filresr   path2r$   r$   r%   test_native_file_TextIOWrapperz  s0   
"r  c                 C   s   d}t | d }t|d}||d  W d    n1 sw   Y  tj|dd}t|;}| dks8J d}||}t|t	
d	| t| ksPJ ||   kr_|d	 ksbJ  J W d    d S 1 smw   Y  d S )
Ns	   foo
quux
largefile.txtr   i r   r=   r   i N  rM   )r   r   r   r.   r  r   r   	readlinesr0   mathceil)r   rD   r   r#   binary_filerG   r   r$   r$   r%   #test_native_file_TextIOWrapper_perf  s   

"&"r  c                 C   s   dd }t | d }t|d}|| W d    n1 sw   Y  g }tj|dd2}	 | }t|t|k s=J || |d}t|dksOJ || |sWnq/W d    n1 sbw   Y  d	||kspJ d S )
Ns   123
i@B r  r   r   r=   Ti0u  r|   )	r   r   r   r.   r  read1r0   r  r   )r   rD   r   r#   chunksr   r$   r$   r%   test_native_file_read1  s(   


r  c                 C   s   dd l }dd lm} dd }t| d }t|d}|| W d    n1 s)w   Y  tj|dd,}|j|dd	}|	d
gd dgd d}|
|| | dksYJ W d    d S 1 sdw   Y  d S )Nr   s   a,b
i r  r   r   r=   r`   )nrowsr   r   r   i   )pandaspandas.testingtestingr   r   r   r.   r  read_csv	DataFrameassert_frame_equalr   )r   pdtmrD   r   r#   dfr8   r$   r$   r%   #test_native_file_pandas_text_reader  s   "r  c                   C   sj   t   tdd W d    n1 sw   Y  t   tdd W d    d S 1 s.w   Y  d S )Nnon_existent_filer   )r*   r.   r  r  r$   r$   r$   r%   test_native_file_open_error  s   "r  c                  C   sZ   t d} t j| dd}|ddksJ |  dksJ |  |js&J | js+J d S )N	   123456789r?   buffer_sizerM      12)r.   r   BufferedInputStreamr   r   r3   r2   )rawr#   r$   r$   r%   test_buffered_input_stream  s   

r  c                  C   s   t jt ddd} | ddksJ |  }| jsJ |jr!J | s'J |ddks0J |d |ddks>J d S )Nr  r?   r  rM   r     5678s   3456)r.   r	  r   r   detachr2   rN   r   r#   r
  r$   r$   r%   *test_buffered_input_stream_detach_seekable  s   


r  c                  C   s   t jt jt ddddd} | ddksJ |  }| js!J |jr&J | r,J |ddks5J tt	 |
d W d    d S 1 sKw   Y  d S )Nr  r?   r  rM   r  r  )r.   r	  r   r   r  r2   rN   r   r(   EnvironmentErrorr   r  r$   r$   r%   .test_buffered_input_stream_detach_non_seekable  s   

"r  c                  C   s   t jdt jd} t| }t|}tj|dd}|d | d d  dks*J |	  | d d  dks:J |d |
  |jsHJ |jsMJ | d d	  d
ksYJ d S )NrJ   r   r?   r  r            12  s   3456789r`   s
   123456789 )r   zerosr   r.   r   r  BufferedOutputStreamr   rx   r  r3   r2   )np_bufr5   r
  r#   r$   r$   r%   test_buffered_output_stream  s   





r  c                  C   s   t jdt jd} t| }tjt|dd}|d | d d  dks(J |	 }|j
s1J |j
r6J | d d  dksBJ d S )NrJ   r   r?   r  r  r  r  )r   r  r   r.   r   r  r  r   rx   r  r2   )r  r5   r#   r
  r$   r$   r%   "test_buffered_output_stream_detach  s   



r  c                 C   s   t j|dd}t ||)}|jrJ | sJ | rJ | r%J | }|| ks/J W d    n1 s9w   Y  |jsCJ |jsHJ t j|dd}t ||}| }t	|t j
sbJ | | ksjJ W d    d S 1 suw   Y  d S Nr   r=   )r.   r  CompressedInputStreamr2   r   r   rN   r   rq   r}   r   r   )rD   fnrA  r
  
compressedgotr5   r$   r$   r%   check_compressed_input'  s"   


"r  c                 C   sV   d}t | d }t|d}|| W d    n1 s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   rE  )r   rE  r   r   r  r   rD   r  r#   r$   r$   r%   test_compressed_input_gzip;  s   r!  c              
   C   s   d}t | d }t|d}|| W d    n1 sw   Y  z	t||d W d S  tyF } ztt | W Y d }~d S d }~ww )Nr  zcompressed_input_test.bz2r\   rB  )r   rB  BZ2Filer   r  r  r   r   )r   rD   r  r#   er$   r$   r%   test_compressed_input_bz2D  s   r$  c                 C   sX  t ds
td d}t| d }t|d}|| W d    n1 s(w   Y  t	|d}|
 }| |ks@J W d    n1 sJw   Y  |jsTJ t	t|d}|
 }| |ksjJ W d    n1 stw   Y  |js~J t|d}t	|d}|
 }| |ksJ W d    n1 sw   Y  |jsJ d S )NrE  gzip support is not builtr  z!test_compressed_input_openfile.gzr   r   )r	   rO  r   r   r   rE  r   r   r.   r  rq   r   r2   pathlibPath)r   rD   r  r#   r  r5   r$   r$   r%   test_compressed_input_openfileO  s.   




r(  c                 C   sT   t j|dd}t ||}| }|| ksJ W d    d S 1 s#w   Y  d S r  )r.   r  r  r   )rD   r  rA  r
  r  r  r$   r$   r%   check_compressed_concatenatedj  s
   "r)  c                 C   s   d}t | d }t|d}||d d  W d    n1 s"w   Y  t|d}||dd   W d    n1 sAw   Y  t||d d S )Nr  zcompressed_input_test2.gzr   rA   r  rE  )r   rE  r   r   r)  r   r$   r$   r%   !test_compressed_concatenated_gzipq  s   r*  c               	   C   s   d} t | }tt t |d W d    n1 sw   Y  tt t |d  W d    n1 s8w   Y  t |d,}tjtdd |  W d    n1 sZw   Y  W d    d S W d    d S 1 srw   Y  d S )Ns   foofoofoofoofoofoofoofoofoofoounknown_compressionrE  zzlib inflate failedr,   )	r.   r   r   r(   r   r  r4   r  r   )rD   r
  r  r$   r$   r%   test_compressed_input_invalid|  s   

"r,  c                 C   s   t  }t ||$}|jrJ | rJ | sJ | r"J ||  W d    n1 s1w   Y  |js;J |js@J t|d}||	  W d    d S 1 sXw   Y  d S )Nr   )
r.   r}  CompressedOutputStreamr2   r   r   rN   r   r   r1   )rD   r  rA  r
  r  r#   r$   r$   r%   make_compressed_output  s   


"r.  c                 C   sb   d}t | d }t||d t|d}| }||ksJ W d    d S 1 s*w   Y  d S )Nr  zcompressed_output_test.gzrE  r   )r   r.  rE  r   r   )r   rD   r  r#   r  r$   r$   r%   test_compressed_output_gzip  s   "r/  c              
   C   s   d}t | d }zt||d W n ty) } ztt | W Y d }~nd }~ww t|d}| }||ks;J W d    d S 1 sFw   Y  d S )Nr  zcompressed_output_test.bz2rB  r<   )r   r.  r  r   r   rB  r"  r   )r   rD   r  r#  r#   r  r$   r$   r%   test_compressed_output_bz2  s   "r0  c              	   C   s   t ds
td t| d d}|d W d    n1 s"w   Y  | d d,}t|d}|d W d    n1 sEw   Y  W d    d S W d    d S 1 s]w   Y  d S )NrE  r%  zctor.gzs   testzctor2.gzr   )r	   rO  r   r   r.   r-  r   r   )r   rS   r#   r$   r$   r%   test_output_stream_constructor  s   

"r1  )r   expected_compression)zfile.bz2rB  )zfile.lz4rF  zfile.gzzpath/to/file.zstc                 C   sr   t |s$ttjj t |  W d    d S 1 sw   Y  d S t | }t|t s0J |j	|ks7J d S r'   )
r	   rO  r   r(   r.   libArrowNotImplementedErrordetectr}   ra  )r   r2  rM  r$   r$   r%   test_compression_detection  s   
"
r6  c                   C   s   t t td W d    n1 sw   Y  t t td  W d    n1 s.w   Y  t t td W d    d S 1 sHw   Y  d S )Nunknown)r   r(   r   r	   rO  r4   r$   r$   r$   r%   test_unknown_compression_raises  s   

"r8  c                 C   s   t | std|  d}t }t|| }|| W d    n1 s)w   Y  |	 }t
|t
|k s<J t|}t|| }| }||ksRJ W d    d S 1 s]w   Y  d S )NrI  r  )r	   rO  r   r   rP  r.   r}  r-  r   r1   r0   r   r  r   )rA  rD   r
  r  cdatar  r$   r$   r%   test_compressed_roundtrip  s   

"r:  )rB  rD  rE  rF  rG  c                 C   s   t | std|  tjtg dgdg}t	 }t
|| }t||j}|j|dd |  |  | }tt|| }t| }||ksUJ d S )NrI  )rI   rM   rX   r?   r   r   rX   )max_chunksize)r	   rO  r   r   rP  r.   Tabler  r   r}  r-  r  r  write_tabler3   r1   r  r   RecordBatchStreamReaderread_all)rA  tabler
  rS   r  r5   	got_tabler$   r$   r%   "test_compressed_recordbatch_stream  s   
rB  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                 C   sh   t |}tt| |||}g }	 |t|}|| |s#nqd|}|	|| ks2J d S )NTr|   )
iterr.   transcoding_input_streamr   r  r   nextr  r   r  )rD   src_encodingdest_encodingchunk_sizesrS   outr5   r$   r$   r%   check_transcoding  s   

rJ  zsrc_encoding, dest_encoding)r  utf-16rL  r  )r  z	utf-32-le)r  z	utf-32-bec                 C   s.   t t| |ddg t t| |tg d d S )Nr   r   )rI   rM   rX   r   )rJ  unicode_transcoding_example	itertoolscycle)rF  rG  r$   r$   r%   test_transcoding_input_stream  s   
rQ  )r  r  )r  UTF8c                 C   s$   t d}t || ||u sJ d S )Ns   abc123)r.   r   rD  rF  rG  rS   r$   r$   r%   test_transcoding_no_ops+  s   
rT  )r  ascii)r  zlatin-1c                 C   sT   t t d| | |}tt |d W d    d S 1 s#w   Y  d S )Nu   ĀrI   )r.   rD  r   r  r   r(   UnicodeEncodeErrorr   rS  r$   r$   r%   test_transcoding_encoding_error5  s   "rW  rK  rM  c                 C   sN   t t d| |}tt |d W d    d S 1 s w   Y  d S )Ns   rI   )r.   rD  r   r   r(   UnicodeErrorr   rS  r$   r$   r%   test_transcoding_decoding_errorC  s   "rY  c                  C   s   d} t | t| fD ]}t |}| | ksJ qt| }t t|}| |ks/J t jt|dd}| | ks@J d S Nr  rE  rA  )r.   r   rn   input_streamr   rE  rT  )rD   argrS   gz_datar$   r$   r%   test_input_stream_bufferT  s   

r_  c                  C   s0   G dd d} t |  }|ddksJ d S )Nc                   @   s*   e Zd Zdd Zedd ZdddZdS )	z1test_input_stream_duck_typing.<locals>.DuckReaderc                 S   rg   r'   r$   rh   r$   r$   r%   r3   f  rj   z7test_input_stream_duck_typing.<locals>.DuckReader.closec                 S   rk   rl   r$   rh   r$   r$   r%   r2   i  rm   z8test_input_stream_duck_typing.<locals>.DuckReader.closedNc                 S   rk   )N   hellor$   ro   r$   r$   r%   r   m  rj   z6test_input_stream_duck_typing.<locals>.DuckReader.readr'   )rr   rs   rt   r3   ru   r2   r   r$   r$   r$   r%   rv   d  s
    
rv   r   r`  )r.   r\  r   )rv   rS   r$   r$   r%   test_input_stream_duck_typingb  s   ra  c                 C   s   d}| d }t t|d}|| W d    n1 sw   Y  t|}| |ks/J tt|}| |ks>J ttt|}| |ksPJ d S )Nr  r\  r   )r   r   r   r.   r\  r   r&  r'  )r   rD   	file_pathr#   rS   r$   r$   r%   test_input_stream_file_patht  s   
rc  c                 C   s   d}t |}| d }tt|d}|| W d    n1 s"w   Y  t|}| |ks4J tt|}| |ksCJ tt	t|}| |ksUJ tj|dd}| |ksdJ tj|d d}| |kssJ d S )Nr  zinput_stream.gzr   rE  r[  
rE  rT  r   r   r   r.   r\  r   r&  r'  r   rD   r^  rb  r#   rS   r$   r$   r%   &test_input_stream_file_path_compressed  s    

rf  c                 C   sx  d}| d }t t|d}|| W d    n1 sw   Y  tj|dd}t|tjs1J | |ks9J tjt|dd}t|tjsJJ | |ksRJ tjt	t|dd}t|tjsfJ | |ksnJ tj|dd}t|tj
s}J d	}tjt|d
 tj|dd W d    n1 sw   Y  tt tj|dd W d    d S 1 sw   Y  d S )Nr  zinput_stream.bufferedr       r  r0  r)  r   $Buffer size must be larger than zeror,   rH   million)r   r   r   r.   r\  r}   r	  r   r&  r'  r  r   r(   r   r4   )r   rD   rb  r#   rS   unbuffered_streamr$  r$   r$   r%   $test_input_stream_file_path_buffered  s.   "rk  c                 C   s   d}t |}| d }tt|d}|| W d    n1 s"w   Y  tj|ddd}| |ks7J tjt|dd}| |ksHJ tjt	t|d	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   rg  rE  r  rA  r0  r  r)  rd  re  r$   r$   r%   3test_input_stream_file_path_compressed_and_buffered  s   
rn  c                 C   s  d}t |}t|}| |ksJ t|}t |}t|}| |ks)J |d tj|dd}| |ks=J | d }tt|d}|	| W d    n1 sXw   Y  tt|d}t|}| |ksrJ W d    d S 1 s}w   Y  d S )Nr  r   rE  r[  r\  r   r   )
r   r.   r\  r   rE  rT  r   r   r   r   )r   rD   r   rS   r^  rb  r#   r$   r$   r%   test_input_stream_python_file  s&   




"ro  c                  C   sZ   d} t | }t|}t|}||u sJ t|}tj|dd}| | ks+J d S rZ  )rE  rT  r.   r   r\  r   )rD   r^  r   rS   r$   r$   r%   test_input_stream_native_file  s   



rp  c              	   C   s6  t d}tt tj|dd W d    n1 sw   Y  t t fD ]}tt t| W d    n1 s=w   Y  q&t	  td W d    n1 sVw   Y  t
t| d d-}tjtdd t| W d    n1 s|w   Y  W d    d S W d    d S 1 sw   Y  d S )	Nr|   r  r[  r  new_filer   zreadable file expectedr,   )rn   r   r(   r   r.   r\  ra   r   r4   r*   r   r   )r   r5   r]  r#   r$   r$   r%   test_input_stream_errors  s&   "rr  c                  C   sj   d} t t| }tt|}||  || ksJ t t| }tt|}||  || ks3J d S )Nr  )ra   r0   r.   output_streamr   r   rn   )rD   r5   rS   r$   r$   r%   test_output_stream_buffer  s   

rt  c                  C   sF   G dd d} |  }t |}|dsJ |j  dks!J d S )Nc                   @   s0   e Zd Zdd Zdd Zedd Zdd Zd	S )
z2test_output_stream_duck_typing.<locals>.DuckWriterc                 S   s   t  | _d S r'   )r.   r}  r5   rh   r$   r$   r%   __init__  r  z;test_output_stream_duck_typing.<locals>.DuckWriter.__init__c                 S   rg   r'   r$   rh   r$   r$   r%   r3   	  rj   z8test_output_stream_duck_typing.<locals>.DuckWriter.closec                 S   rk   rl   r$   rh   r$   r$   r%   r2     rm   z9test_output_stream_duck_typing.<locals>.DuckWriter.closedc                 S   s   | j | d S r'   )r5   r   )ri   rD   r$   r$   r%   r     r   z8test_output_stream_duck_typing.<locals>.DuckWriter.writeN)rr   rs   rt   ru  r3   ru   r2   r   r$   r$   r$   r%   
DuckWriter  s    
rv  r`  )r.   rs  r   r5   r1   r   )rv  duck_writerrS   r$   r$   r%   test_output_stream_duck_typing  s
   
rx  c                 C   sD   d}| d }dd }||| |t || |tt || d S )Nr  rs  c                 S   sx   t | }|| W d    n1 sw   Y  tt| d}| |ks*J W d    d S 1 s5w   Y  d S r   r.   rs  r   r   r   r   )rb  rD   rS   r#   r$   r$   r%   
check_data  s   "z0test_output_stream_file_path.<locals>.check_data)r   r&  r'  r   rD   rb  rz  r$   r$   r%   test_output_stream_file_path  s   
r|  c                 C   s   d}| d }dd }t ||||ksJ t |t|||ks$J t |tt|||ks5J t |||dd|ksCJ |||d d|ksNJ tjtdd |||d	d|ksaJ W d    d S 1 slw   Y  d S )
Nr  zoutput_stream.gzc                 [   v   t j| fi |}|| W d    n1 sw   Y  tt| d}| W  d    S 1 s4w   Y  d S r   ry  rb  rD   kwargsrS   r#   r$   r$   r%   rz  -     $z;test_output_stream_file_path_compressed.<locals>.check_datarE  r[  zInvalid value for compressionr,   rabbit)rE  rV  r   r&  r'  r   r(   r   r{  r$   r$   r%   'test_output_stream_file_path_compressed(  s&   "r  c                 C   s   d}| d }dd }t j|dd}t|t jsJ d}tjt|d |||d	d|ks.J W d    n1 s8w   Y  |||d
d|ksHJ |||dd|ksSJ |t||d
d|ks`J |t	t||d
d}||ksrJ d S )Nr  output_stream.bufferedc                 [   s   t j| fi |}|dddkrt|t jsJ || W d    n1 s)w   Y  tt| d}| W  d    S 1 sDw   Y  d S )Nr  r   r   )	r.   rs  getr}   r  r   r   r   r   r~  r$   r$   r%   rz  D  s   $z9test_output_stream_file_path_buffered.<locals>.check_datar   r  rh  r,   irg  r)  )
r.   rs  r}   r  r   r(   r   r   r&  r'  )r   rD   rb  rz  rj  r$  r9   r$   r$   r%   %test_output_stream_file_path_buffered@  s   r  c                 C   sz   d}| d }dd }|||dd}t ||ksJ |||dd}t ||ks*J |||ddd	}t ||ks;J d S )
Nrl  z(output_stream_compressed_and_buffered.gzc                 [   r}  r   ry  r~  r$   r$   r%   rz  `  r  zHtest_output_stream_file_path_compressed_and_buffered.<locals>.check_datarg  r  r)  rE  rm  rE  rV  )r   rD   rb  rz  r9   r$   r$   r%   4test_output_stream_file_path_compressed_and_buffered[  s   r  c                 C   sD   d}| d }dd }|||dd|ksJ |||dd|ks J d S )Ns   some test data
r  c                 [   s`   t j| fi |}|| ~t  tt| d}| W  d    S 1 s)w   Y  d S r   )r.   rs  r   r   r   r   r   r   r~  r$   r$   r%   rz  w  s   
$z1test_output_stream_destructor.<locals>.check_datar   r  r)  r$   r{  r$   r$   r%   test_output_stream_destructorp  s
   r  c                    s>   d} fdd}|||ksJ t ||dd|ksJ d S )Nr  c              	      s   t  d }t|d&}tj|fi |}||  W d    n1 s%w   Y  W d    n1 s4w   Y  t|d}| W  d    S 1 sMw   Y  d S )Noutput_stream_filer   r   )r   r   r.   rs  r   r   )rD   r  r  r#   rS   r   r$   r%   rz    s   $z2test_output_stream_python_file.<locals>.check_datarE  r[  r  )r   rD   rz  r$   r  r%   test_output_stream_python_file  s   r  c              	   C   s6  t t }tt tj|dd W d    n1 sw   Y  t t fD ]}tt t| W d    n1 s>w   Y  q't	| d }t
|d}W d    n1 sZw   Y  t
|d-}tjtdd t| W d    n1 s|w   Y  W d    d S W d    d S 1 sw   Y  d S )Nr  r[  rq  r   r   zwritable file expectedr,   )rn   ra   r   r(   r   r.   rs  r   r4   r   r   )r   r5   r]  r  r#   r$   r$   r%   test_output_stream_errors  s(   
"r  r'   )T)rB  
contextlibr   ior   r   r   r   r   rO  r   rE  r  r   r&  r   rQ  r   r   r   numpyr   ImportErrorpyarrow.utilr   pyarrowr	   r.   r&   r*   r:   rF   markparametrizerW   r]   r_   rf   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@  paramr  r3  r4  r^  ru  rz  r{  r  r  r  r  r  fixturer  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r!  r$  r(  r)  r*  r,  r.  r/  r0  r1  r'  r6  r8  r:  rB  rN  rJ  rQ  rT  rW  rY  r_  ra  rc  rf  rk  rn  ro  rp  rr  rt  rx  r|  r  r  r  r  r  r  r$   r$   r$   r%   <module>   s  
	!*






3


F0

O
&
!+	?












	


	












