a
    xd                     @   s  d dl Z d dlZd dlZd dlmZ d dlmZ d dlZd dlmZ d dl	m
Z
mZmZ ejdd Zejdd	 Zej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' Zd(d) Zd*d+ Z dS ),    N)mock)sentinel)_core)AsyncIOWrapper_FILE_SYNC_ATTRS_FILE_ASYNC_METHODSc                 C   s   t | dS )Ntest)osfspathjoin)Ztmpdir r   O/var/www/html/Ranjet/env/lib/python3.9/site-packages/trio/tests/test_file_io.pypath   s    r   c                   C   s   t jtjdS )N)Zspec_set)r   ZMockioStringIOr   r   r   r   wrapped   s    r   c                 C   s
   t | S N)trio	wrap_filer   r   r   r   
async_file   s    r   c                   C   s:   t t tt  W d    n1 s,0    Y  d S r   )pytestraises	TypeErrorr   r   strr   r   r   r   test_wrap_invalid   s    r   c                  C   sz   G dd d} |  }t |tjr$J t|}t |ts<J | `tt	 t|   W d    n1 sl0    Y  d S )Nc                   @   s   e Zd Zdd Zdd ZdS )z&test_wrap_non_iobase.<locals>.FakeFilec                 S   s   d S r   r   selfr   r   r   close#   s    z,test_wrap_non_iobase.<locals>.FakeFile.closec                 S   s   d S r   r   r   r   r   r   write&   s    z,test_wrap_non_iobase.<locals>.FakeFile.writeN)__name__
__module____qualname__r   r   r   r   r   r   FakeFile"   s   r#   )

isinstancer   IOBaser   r   r   r   r   r   r   )r#   r   r   r   r   r   test_wrap_non_iobase!   s    
r&   c                 C   s   | j |u sJ d S r   r   r   r   r   r   r   test_wrapped_property5   s    r(   c                    sF   t t}t fdd|D s&J t fdd|D rBJ d S )Nc                 3   s&   | ]}|t v r|t  v V  qd S r   dir.0attrr'   r   r   	<genexpr>=       z+test_dir_matches_wrapped.<locals>.<genexpr>c                 3   s&   | ]}|t vr|t  v V  qd S r   r)   r+   r'   r   r   r.   ?   s   )r   unionr   allany)r   r   attrsr   r'   r   test_dir_matches_wrapped9   s
    
r4   c                  C   sf   G dd dt j} t|  }t|jds.J tt t	|d W d    n1 sX0    Y  d S )Nc                   @   s   e Zd Zdd ZdS )z0test_unsupported_not_forwarded.<locals>.FakeFilec                 S   s   d S r   r   r   r   r   r   unsupported_attrF   s    zAtest_unsupported_not_forwarded.<locals>.FakeFile.unsupported_attrN)r    r!   r"   r5   r   r   r   r   r#   E   s   r#   r5   )
r   	RawIOBaser   r   hasattrr   r   r   AttributeErrorgetattr)r#   r   r   r   r   test_unsupported_not_forwardedD   s
    r:   c                 C   s4   t D ]*}|t| vrqt| |t||u sJ qd S r   )r   r*   r9   r   r   	attr_namer   r   r   test_sync_attrs_forwardedQ   s    r=   c              	   C   s   t D ]z}|t| v rqtt t| | W d    n1 s@0    Y  tt t|| W d    q1 st0    Y  qd S r   )r   r*   r   r   r8   r9   r;   r   r   r   test_sync_attrs_match_wrapperY   s    (r>   c                 C   s4   t D ]*}|t| vrqt| |t| |u sJ qd S r   )r   r*   r9   )r   	meth_namer   r   r   !test_async_methods_generated_oncee   s    r@   c                 C   s4   | j jdksJ | j jdks J d| j jv s0J d S )NreadzAsyncIOWrapper.readzio.StringIO.read)rA   r    r"   __doc__)r   r   r   r   test_async_methods_signaturem   s    rC   c                    sn   t D ]d}|t| vrqt| |}t||}|tjtjdI d H }|jtjtjd || ks`J |  qd S )N)keyword)r   r*   r9   r   argumentrD   Zassert_called_once_withZ
reset_mock)r   r   r?   methZwrapped_methvaluer   r   r   test_async_methods_wrapu   s    

rH   c              	      s   t D ]z}|t| v rqtt t| | W d    n1 s@0    Y  tt t|| W d    q1 st0    Y  qd S r   )r   r*   r   r   r8   r9   )r   r   r?   r   r   r    test_async_methods_match_wrapper   s    (rI   c                    s2   t | dI d H }t|ts J | I d H  d S Nw)r   	open_filer$   r   acloser   fr   r   r   	test_open   s    rP   c              	      sl   t | dI d H 4 I d H .}t|ts*J |jr4J W d   I d H  q^1 I d H sT0    Y  |jshJ d S rJ   )r   rL   r$   r   closedrN   r   r   r   test_open_context_manager   s    4rR   c                     sX   t td} t| j}g }| jd | 2 z3 d H W }|| q.6 ||ksTJ d S )Nztest
foo
barr   )r   r   r   r   listr   seekappend)r   expectedresultliner   r   r   test_async_iter   s    
rY   c              	      s   t  }t| dI d H }|  tt j  |dI d H  W d    n1 sV0    Y  tt j |	 I d H  W d    n1 s0    Y  W d    n1 s0    Y  |j
sJ d S )NrK   a)r   ZCancelScoper   rL   cancelr   r   Z	Cancelledr   rM   rQ   )r   ZcscoperO   r   r   r   test_aclose_cancelled   s    
.Jr\   c                     sJ   t  } t | }t|}| I d H }t|ts8J |j| u sFJ d S r   )	r   BytesIOBufferedReaderr   r   detachr$   r   r   )rawZbufferedr   Zdetachedr   r   r   test_detach_rewraps_asynciobase   s    

ra   )!r   r	   r   Zunittestr   Zunittest.mockr   r   r   Ztrio._file_ior   r   r   Zfixturer   r   r   r   r&   r(   r4   r:   r=   r>   r@   rC   rH   rI   rP   rR   rY   r\   ra   r   r   r   r   <module>   s:   


