Sindbad~EG File Manager

Current Path : /usr/local/lib/python3.9/test/__pycache__/
Upload File :
Current File : //usr/local/lib/python3.9/test/__pycache__/test_io.cpython-39.opt-1.pyc

a

��g���@svdZddlZddlZddlZddlZddlZddlZddlZddlZddl	Z	ddl
Z
ddlZddlZddl
Z
ddlZddlZddlmZmZddlmZmZddlmZddlmZmZmZddlmZmZddlZddl Z ddl!Z"zddl#Z#Wne$�ydd	�Z%Yn0d
d	�Z%Gdd�de#j&�Z'e(e	d
��p:e	j)j*Z+dd�Z,Gdd�d�Z-Gdd�de-e j.�Z/Gdd�de-e"j.�Z0Gdd�de-�Z1Gdd�de1e j.�Z2Gdd�de1e"j.�Z3Gdd�de1�Z4Gdd�de4e j.�Z5Gd d!�d!e4e"j.�Z6Gd"d#�d#e1�Z7Gd$d%�d%e7e j.�Z8Gd&d'�d'e7e"j.�Z9Gd(d)�d)e1�Z:Gd*d+�d+e:e j.�Z;Gd,d-�d-e:e"j.�Z<Gd.d/�d/�Z=Gd0d1�d1e=e j>�Z?Gd2d3�d3e=e"j>�Z@Gd4d5�d5�ZAGd6d7�d7eAe j>�ZBGd8d9�d9eAe"j>�ZCGd:d;�d;�ZDGd<d=�d=eDe j.�ZEGd>d?�d?eDe"j.�ZFGd@dA�dAe
jG�ZHGdBdC�dCeH�ZIGdDdE�dEeH�ZJejKGdFdG�dGe
jG��ZLGdHdI�dI�ZMGdJdK�dK�ZNGdLdM�dMe
jGeM�ZOGdNdO�dOeOeN�ZPGdPdQ�dQeO�ZQGdRdS�dSe
jGeM�ZRGdTdU�dUeReN�ZSGdVdW�dWeR�ZTGdXdY�dYe
jG�ZUGdZd[�d[eU�ZVGd\d]�d]eU�ZWGd^d_�d_eOeR�ZXGd`da�daeXeN�ZYGdbdc�dceX�ZZGddde�deej[�Z\e�]e\j^�Gdfdg�dge
jG�Z_Gdhdi�die
jG�Z`Gdjdk�dke j>�Zadldm�ZbGdndo�doe`�ZcGdpdq�dqe`�ZdGdrds�dse
jG�ZeGdtdu�duee�ZfGdvdw�dwee�ZgGdxdy�dye
jG�ZhGdzd{�d{eh�ZiGd|d}�d}eh�Zje
�kejld~kd�Gd�d��d�e
jG��ZmGd�d��d�em�ZnGd�d��d�em�Zod�d��Zpeqd�k�rre
�r�dS)�zUnit tests for the io module.�N)�deque�UserList)�cycle�count)�support)�assert_python_ok�assert_python_failure�run_python_until_end)�FakePath�skip_if_sanitizercOst�dt|i|���S)N�b)�array�bytes)�pos�kw�r�(/usr/local/lib/python3.9/test/test_io.py�	byteslike3srcOs>t|i|��}t�}t�|t|��|t|��d�dd�<|S)z?Create a bytes-like object having no string or sequence methods�BN)r�EmptyStruct�ctypesZresize�len�
memoryview�cast)rr�data�objrrrr6s
c@seZdZdS)rN��__name__�
__module__�__qualname__rrrrr=srZgettotalrefcountcCs8ttddd��}|jWd�S1s*0YdS)z(Get the default TextIOWrapper chunk size�r�latin-1��encodingN)�open�__file__�_CHUNK_SIZE��frrr�_default_chunk_sizeEsr)c@sdeZdZdZddd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�Zdd�Zddd�Z
dS)�MockRawIOWithoutReadzmA RawIO implementation without read(), so as to exercise the default
    RawIO.read() which calls readinto().rcCs t|�|_g|_d|_d|_dS�Nr)�list�_read_stack�_write_stack�_reads�_extraneous_reads)�selfZ
read_stackrrr�__init__Os
zMockRawIOWithoutRead.__init__cCs|j�t|��t|�S�N)r.�appendrr�r1rrrr�writeUszMockRawIOWithoutRead.writecCsdS�NTr�r1rrr�writableYszMockRawIOWithoutRead.writablecCsdS�N�*rr8rrr�fileno\szMockRawIOWithoutRead.filenocCsdSr7rr8rrr�readable_szMockRawIOWithoutRead.readablecCsdSr7rr8rrr�seekablebszMockRawIOWithoutRead.seekablecCsdSr+r�r1r�whencerrr�seekeszMockRawIOWithoutRead.seekcCsdSr+rr8rrr�tellhszMockRawIOWithoutRead.tellcCs�|jd7_t|�}z|jd}Wn"tyF|jd7_YdS0|dur\|jd=dSt|�}t|�|kr�|jd=||d|�<|S|d|�|dd�<||d�|jd<|SdS�N�r)r/rr-�
IndexErrorr0)r1�bufZmax_lenr�nrrr�readintoks$zMockRawIOWithoutRead.readintoNcCs|Sr3r)r1rrrr�truncate�szMockRawIOWithoutRead.truncate)r)N)rrr�__doc__r2r6r9r<r=r>rArBrHrIrrrrr*Ks
r*c@seZdZdS)�CMockRawIOWithoutReadNrrrrrrK�srKc@seZdZdS)�PyMockRawIOWithoutReadNrrrrrrL�srLc@seZdZddd�ZdS)�	MockRawIONcCs>|jd7_z|j�d�WS|jd7_YdS0dS)NrDr�)r/r-�popr0�r1rGrrr�read�szMockRawIO.read)N�rrrrQrrrrrM�srMc@seZdZdS)�
CMockRawIONrrrrrrS�srSc@seZdZdS)�PyMockRawIONrrrrrrT�srTcsFeZdZ�fdd�Zd�fdd�	Zdd�Zdd	�Z�fd
d�Z�ZS)
�MisbehavedRawIOcst��|�dS�N�)�superr6r5��	__class__rrr6�szMisbehavedRawIO.writeNcst��|�dSrV)rXrQrPrYrrrQ�szMisbehavedRawIO.readcCsdS)Ni����rr?rrrrA�szMisbehavedRawIO.seekcCsdS)Ni8���rr8rrrrB�szMisbehavedRawIO.tellcst��|�t|�dS)N�)rXrHr)r1rFrYrrrH�szMisbehavedRawIO.readinto)N)	rrrr6rQrArBrH�
__classcell__rrrYrrU�s
rUc@seZdZdS)�CMisbehavedRawIONrrrrrr]�sr]c@seZdZdS)�PyMisbehavedRawIONrrrrrr^�sr^cs$eZdZ�fdd�Zdd�Z�ZS)�SlowFlushRawIOcst���t��|_dSr3)rXr2�	threading�Event�in_flushr8rYrrr2�s
zSlowFlushRawIO.__init__cCs|j��t�d�dS)Ng�?)rb�set�time�sleepr8rrr�flush�s
zSlowFlushRawIO.flush)rrrr2rfr\rrrYrr_�sr_c@seZdZdS)�CSlowFlushRawIONrrrrrrg�srgc@seZdZdS)�PySlowFlushRawIONrrrrrrh�srhc@seZdZdZdd�ZdS)�CloseFailureIOrcCs|jsd|_t�dS�NrD��closed�OSErrorr8rrr�close�szCloseFailureIO.closeN)rrrrlrnrrrrri�sric@seZdZdS)�CCloseFailureIONrrrrrro�sroc@seZdZdS)�PyCloseFailureIONrrrrrrp�srpcs6eZdZ�fdd�Zd�fdd�	Z�fdd�Z�ZS)	�
MockFileIOcsg|_t��|�dSr3)�read_historyrXr2�r1rrYrrr2�szMockFileIO.__init__Ncs,t��|�}|j�|durdnt|��|Sr3)rXrQrrr4r)r1rG�resrYrrrQ�szMockFileIO.readcst��|�}|j�|�|Sr3)rXrHrrr4)r1rrtrYrrrH�szMockFileIO.readinto)N)rrrr2rQrHr\rrrYrrq�srqc@seZdZdS)�CMockFileIONrrrrrru�sruc@seZdZdS)�PyMockFileIONrrrrrrv�srvc@s,eZdZdd�Zdd�Zdd�Zdd�Zd	S)
�MockUnseekableIOcCsdS�NFrr8rrrr>�szMockUnseekableIO.seekablecGs|�d��dS�Nznot seekable��UnsupportedOperation�r1�argsrrrrA�szMockUnseekableIO.seekcGs|�d��dSryrzr|rrrrB�szMockUnseekableIO.tellcGs|�d��dSryrzr|rrrrI�szMockUnseekableIO.truncateN)rrrr>rArBrIrrrrrw�srwc@seZdZejZdS)�CMockUnseekableION)rrr�ior{rrrrr~�sr~c@seZdZejZdS)�PyMockUnseekableION)rrr�pyior{rrrrr��sr�c@sNeZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zddd
�Zdd�Z	dd�Z
dS)�MockNonBlockWriterIOcCsg|_d|_dSr3)r.�
_blocker_charr8rrrr2�szMockNonBlockWriterIO.__init__cCsd�|j�}g|jdd�<|S)NrN)�joinr.)r1�srrr�pop_writtensz MockNonBlockWriterIO.pop_writtencCs
||_dS)z'Block when a given char is encountered.N)r�)r1�charrrr�block_onszMockNonBlockWriterIO.block_oncCsdSr7rr8rrrr=szMockNonBlockWriterIO.readablecCsdSr7rr8rrrr>szMockNonBlockWriterIO.seekablercCsdSr+rr?rrrrAszMockNonBlockWriterIO.seekcCsdSr7rr8rrrr9szMockNonBlockWriterIO.writablecCstt|�}d}|jr`z|�|j�}Wnty4Yn,0|dkrV|j�|d|��|Sd|_dS|j�|�t|�S)N���r)rr��index�
ValueErrorr.r4r)r1rrGrrrr6szMockNonBlockWriterIO.writeN)r)rrrr2r�r�r=r>rAr9r6rrrrr��s
r�c@seZdZejZdS)�CMockNonBlockWriterION)rrrr�BlockingIOErrorrrrrr�-sr�c@seZdZejZdS)�PyMockNonBlockWriterION)rrrr�r�rrrrr�0sr�c@s�eZdZdd�Zdd�Zdd�Zdbdd	�Zd
Zdd�Zd
d�Z	dd�Z
dd�Zdd�Zdd�Z
dd�Zdd�Zdd�Zdd�Zdd �Zd!d"�Zd#d$�Zd%d&�Zd'd(�Zd)d*�Zd+d,�Zd-d.�Zd/d0�Zd1d2�Zd3d4�Zd5d6�Zd7d8�Zd9d:�Zd;d<�Z d=d>�Z!d?d@�Z"dAdB�Z#dCdD�Z$dEdF�Z%dGdH�Z&dIdJ�Z'dKdL�Z(dMdN�Z)dOdP�Z*dQdR�Z+dSdT�Z,dUdV�Z-dWdX�Z.dYdZ�Z/d[d\�Z0d]d^�Z1d_d`�Z2daS)c�IOTestcCst�tj�dSr3�r�unlink�TESTFNr8rrr�setUp6szIOTest.setUpcCst�tj�dSr3r�r8rrr�tearDown9szIOTest.tearDowncCsD|�|�d�d�|�d�|�|��d�|�d�|�|�d�d�|�|�d�d�|�|�d�d�|�|��d�|�|�dd�d�|�|��d�td�}|�|�|�d	�d
|dd�<|�|�d�d�|�|�d�d�|�|�dd�d
�|�|��d
�|�|�d�d�|�|��d
�|�t|jd�dS)Nsblah.r[rsHello.�r�rDs	 world


�	s	*********�hrW�
��)�assertEqualr6rIrBrA�	bytearray�assertRaises�	TypeError)r1r(�bufferrrr�	write_ops<s(

zIOTest.write_opsFcCs�|�d�}|�|d�t|�}|�|�|�d�|�t|�d�td�}|�|�|�d�|�t|�d�|�|dd�d�|�|�d�d�|�|�d�d�|�|�d	�d
�|�|�td��d�|�|�dd�d
�|�|�d�d�|�|�d�d
�|�|�t��d�|�|�dd	�d�|�|�d�d�|�|��d�|�	t
|jd�|�r�|�d�|�|��d�|�d
�|�|��d�|�|��d
�|�d�td�}|�|�|�d�|�t|�d�dS)Nr[shellos worlrW�d
r��hello world
rDrN�xi����r�sworld�
r�sworld
)rQr�rrHrr�rrArBr�r��	readinto1)r1r(Zbufferedrrrr�read_opsTs>



zIOTest.read_opslc	CsPz|�|�|j�|j�Wn ttfy:|�d�Yn0|�|��|j�|�|�d�d�|�|��|jd�|�|�dd�|jd�|�|��|jd�|�|��|jd�|�|�dd�|jd�|�|�|jd�|jd�|�|��|jd�|�|�dd�|jd�|�|�dd�|j�|�|�	d�d�dS)	Nzno largefile support�xxx�r�rDrWrr�)
r�rA�LARGE�
OverflowErrorr��skipTestrBr6rIrQ�r1r(rrr�large_file_opsws zIOTest.large_file_opsc	Cs�|j}dD]N}|�tj|��,}|�||j�|�||j�Wd�q
1sN0Yq
|jtjddd��,}|�||j�|�||j�Wd�n1s�0Y|jtjddd��2}|�||jd�|�||jdg�Wd�n1s�0Y|�tjd��2}|�||jd�|�||jdg�Wd�n1�sD0Y|�tjd��Z}|�||jd	�|�||jd
g�|�||j	d|j
�|�||j	d|j�Wd�n1�s�0YdS)
N)�w�wbr�r��	buffering�rbsblahsblah
r Zblahzblah
rDr�)r{r$rr�r�rQ�readliner6�
writelinesrA�SEEK_CUR�SEEK_END)r1�exc�mode�fprrr�test_invalid_operations�s&.,02zIOTest.test_invalid_operationscs��fdd�}�fdd�}�fdd�}�fdd�}�fd	d
�}�fdd�}�fd
d�}�fdd�}|df|df|df|df|df|df|df|df�jdf�jdff
}	|	D�]\}
}��|
����|
����}d|v}
��|��|
�d|v}��|��|�t|�j��rd}n$t|�j�j	f��r(d}n
��
d�d|v�rF|��n��t
|j�|
�rn|�d�|��n��t
|jd���t
|j�|�r�|�|�n��t
|j|�tj�d��r�|
||fv�r�Wd�Wd�q�d|v}��|��|�|�r|��|�d�n��t
|j���t
|jd�|�rT|�rT|��|�d�n��t
|j���t
|jd�Wd�n1�s�0YWd�q�1�s�0Yq�dS)Ncs"t��\}}t�|���|d�S)Nr )�os�pipern�FileIO)r r�r8rr�pipe_reader�s
z3IOTest.test_optional_abilities.<locals>.pipe_readercsNt��\}}��tj|�tjtj|dfd�}|����|j���	|d�S)N�d��targetr}r�)
r�r��
addCleanuprnr`�ThreadrQ�startr�r�)r r��threadr8rr�pipe_writer�sz3IOTest.test_optional_abilities.<locals>.pipe_writercs������Sr3)�BufferedReaderrwrr8rr�buffered_reader�sz7IOTest.test_optional_abilities.<locals>.buffered_readercs������Sr3)�BufferedWriterrwrr8rr�buffered_writer�sz7IOTest.test_optional_abilities.<locals>.buffered_writercs������Sr3)�BufferedRandom�BytesIOrr8rr�buffered_random�sz7IOTest.test_optional_abilities.<locals>.buffered_randomcs���������Sr3)�BufferedRWPairrwrr8rr�buffered_rw_pair�s
�z8IOTest.test_optional_abilities.<locals>.buffered_rw_paircs$G�fdd�d�j�}��|�d�S)NcseZdZ�jjZ�jjZdS)zMIOTest.test_optional_abilities.<locals>.text_reader.<locals>.UnseekableReaderN)rrr�BufferedIOBaser9r6rr8rr�UnseekableReader�sr��ascii�rw�
TextIOWrapper)r�r8rr�text_reader�sz3IOTest.test_optional_abilities.<locals>.text_readercs$G�fdd�d�j�}��|�d�S)NcseZdZ�jjZ�jjZdS)zMIOTest.test_optional_abilities.<locals>.text_writer.<locals>.UnseekableWriterN)rrrr�r=rQrr8rr�UnseekableWriter�sr�r�r�)r�r8rr�text_writer�sz3IOTest.test_optional_abilities.<locals>.text_writer�fr�fwr r�Zrws�rw�3�3zUnknown base classr(rD�winr�r)r��StringIO�subTestr�r=r9�
isinstance�
TextIOBaser��	RawIOBase�failr<r�rmrQr6�sys�platform�
startswithr>rBrArI)r1r�r�r�r�r�r�r�r��tests�testZ	abilitiesrr=r9rr>rr8r�test_optional_abilities�sh	�




�zIOTest.test_optional_abilitiescCsjd}|�t|j|d�t|d�}t���.t�dt�|�t|j|d�Wd�n1s\0YdS)Nzfoobarr�r��ignore)r�r�r$r�warnings�catch_warnings�simplefilter�DeprecationWarning)r1Zfn_with_NULZbytes_fnrrr�test_open_handles_NUL_chars
s

z"IOTest.test_open_handles_NUL_charscCs�|jtjddd��J}|�|��d�|�|��d�|�|��d�|�|�Wd�n1sb0Y|jtjddd��J}|�|��d�|�|��d�|�|��d�|�|�Wd�n1s�0YdS)Nr�rr�FTr��	r$rr�r�r=r9r>r�r�r�rrr�test_raw_file_ios(zIOTest.test_raw_file_iocCs�|�tjd��J}|�|��d�|�|��d�|�|��d�|�|�Wd�n1s^0Y|�tjd��L}|�|��d�|�|��d�|�|��d�|�|d�Wd�n1s�0YdS)Nr�FTr�r�r�rrr�test_buffered_file_ios(zIOTest.test_buffered_file_iocCs"|�tjd��}|�d�Wd�n1s.0Y|�tjd���}|�|��d�|�|�d�d�|�|�d�d�|�|�d	�d
�|�|��d�|�|�d�d�|�t|jd
�Wd�n1s�0Y|�tjd�� }|�t|jd
�Wd�n1�s0YdS)Nr�s"abc
def
xyzzy
foobar
another liner��abc
r��def
rW�xy�szzy
sfoobar
sanother lineg333333@r )r$rr�r6r�r�r�r�r�rrr�
test_readline+s(.zIOTest.test_readlinecCs*Gdd�d|j�}|�ttft|��dS)Nc@seZdZdd�ZdS)z+IOTest.test_readline_nonsizeable.<locals>.RcSsdSr3rr8rrrr�=sz4IOTest.test_readline_nonsizeable.<locals>.R.readlineN)rrrr�rrrr�R<sr�)�IOBaser�r��
StopIteration�next�r1r�rrr�test_readline_nonsizeable9sz IOTest.test_readline_nonsizeablecCs(Gdd�d|j�}|�t|�jd�dS)Nc@seZdZdd�ZdS)z'IOTest.test_next_nonsizeable.<locals>.RcSsdSr3rr8rrr�__next__Esz0IOTest.test_next_nonsizeable.<locals>.R.__next__N)rrrr�rrrrr�Dsr�rD)r�r�r��	readlinesr�rrr�test_next_nonsizeableAszIOTest.test_next_nonsizeablecCs@|��}|�|�|��}|�|d�|�|�}|�|d�dS)Nr�T)r�r��getvaluer�r�)r1r(rrrr�test_raw_bytes_ioIs

zIOTest.test_raw_bytes_iocCs�tjdd�dkstjdkr.t�dd|j�|�tjdd��}|�|�Wd�n1s^0Y|�tjd��}|�|�Wd�n1s�0YdS)Nr�r��darwinZ	largefilez-test requires %s bytes and a long time to run�w+br)r�r�rZrequiresr�r$r�r�r�rrr�test_large_file_opsQs�(zIOTest.test_large_file_opsc	Cs�dD]�}d}|�tjd|��}|�d�Wd�n1s<0Y|�|jd�d}z<|�tjd|��}ddWd�n1s�0YWn ty�|�|jd�Yq0|�d�qdS)N)rr�r�r�TrDrz1/0 didn't raise an exception)r$rr�r6r�rl�ZeroDivisionErrorr�)r1�bufsizer(rrr�test_with_open^s(*zIOTest.test_with_opencCs�|�tjd��}|�d�Wd�n1s.0Y|jtjddd�� }|�|��d�Wd�n1sp0Y|�tjd�� }|�|��d�Wd�n1s�0Y|�tjd�� }|�|��d�Wd�n1s�0YdS)Nr�r��abrr�r��a)r$rr�r6r�rB�
assertGreaterr�rrr�test_append_mode_tellns(..zIOTest.test_append_mode_tellc	s�g�G�fdd�d|j�}t�dtf��~|tjd�}|�d�~t��|��gd��|�tjd�� }|�|�	�d�Wd�n1s�0YWd�n1s�0YdS)Ncs:eZdZ��fdd�Z��fdd�Z��fdd�Z�ZS)z(IOTest.test_destructor.<locals>.MyFileIOcs4��d�zt�j}Wnty(Yn0|�dSrj�r4rX�__del__�AttributeErrorr��rZ�recordrrr{s
z0IOTest.test_destructor.<locals>.MyFileIO.__del__cs��d�t���dSrV�r4rXrnr8rrrrn�s
z.IOTest.test_destructor.<locals>.MyFileIO.closecs��d�t���dS�Nr��r4rXrfr8rrrrf�s
z.IOTest.test_destructor.<locals>.MyFileIO.flush�rrrrrnrfr\r�rrYr�MyFileIOzsr�r�r��rDrWr�r�)
r�r�check_warnings�ResourceWarningr�r6�
gc_collectr�r$rQ)r1rr(rrr�test_destructorxs
zIOTest.test_destructorcs<g�G�fdd�d|�}|�}~t��|��gd��dS)NcsBeZdZdd�Z��fdd�Z��fdd�Z��fdd�Z�ZS)	z+IOTest._check_base_destructor.<locals>.MyIOcSsd|_d|_d|_dS)NrDrWr�)�on_del�on_close�on_flushr8rrrr2�sz4IOTest._check_base_destructor.<locals>.MyIO.__init__cs6��|j�zt�j}Wnty*Yn0|�dSr3)r4rrXrrr�rrrr�sz3IOTest._check_base_destructor.<locals>.MyIO.__del__cs��|j�t���dSr3)r4r rXrnr8rrrrn�sz1IOTest._check_base_destructor.<locals>.MyIO.closecs��|j�t���dSr3)r4r!rXrfr8rrrrf�sz1IOTest._check_base_destructor.<locals>.MyIO.flush)rrrr2rrnrfr\rrrYr�MyIO�sr"r)rrr�)r1�baser"r(rrr�_check_base_destructor�szIOTest._check_base_destructorcCs|�|j�dSr3)r$r�r8rrr�test_IOBase_destructor�szIOTest.test_IOBase_destructorcCs|�|j�dSr3)r$r�r8rrr�test_RawIOBase_destructor�sz IOTest.test_RawIOBase_destructorcCs|�|j�dSr3)r$r�r8rrr�test_BufferedIOBase_destructor�sz%IOTest.test_BufferedIOBase_destructorcCs|�|j�dSr3)r$r�r8rrr�test_TextIOBase_destructor�sz!IOTest.test_TextIOBase_destructorcCsz|�tjd��}|�d�Wd�n1s.0Y|�tjd�� }|�|��d�Wd�n1sl0YdS)Nr�r�r��r$rr�r6r�rQr�rrr�test_close_flushes�s(zIOTest.test_close_flushescs�t�dtd���t��������fdd�}|����|��tjd��|����	���|��
��	���|����	���	���dS)N�ir�csF|�.��|�����|��f�Wd�n1s80YdSr3)r�r6r�r'�rrGr1rr�check�sz'IOTest.test_array_writes.<locals>.checkr�)r
�ranger�tobytesr�r�rr�r�rMr�r�)r1r-rr,r�test_array_writes�szIOTest.test_array_writescCs|jt|jtjddd�dS)Nr�F��closefd�r�r�r$rr�r8rrr�test_closefd�s�zIOTest.test_closefdcCs&|�tjd��}|�d�Wd�n1s.0Y|�tjd��T}|j|��ddd�}|�|��d�|�d�|��|�	t
|j�Wd�n1s�0Y|�tjd��X}|j|��ddd�}|�|��dd�d	�|��|�	t
|jtd
��Wd�n1�s0YdS)Nr��egg
r Fr1rr�r�seggrD)
r$rr�r6r<r�rQrArnr�r�rHr��r1r(�filerrr�test_read_closed�s(
,zIOTest.test_read_closedcCs|jt|jtjddd�dS)Nr Fr1r3r8rrr�test_no_closefd_with_filename�sz$IOTest.test_no_closefd_with_filenamecCs�|�tjd��}|�d�Wd�n1s.0Y|�tjd��H}|�|jjjd�|j|��ddd�}|�|jjjd�Wd�n1s�0YdS)Nr�segg
r TFr1)	r$rr�r6r�r��rawr2r<r6rrr�test_closefd_attr�s(zIOTest.test_closefd_attrcCs�t�dtf��B|�tjd�}|�d�||_t�|�}~t�	�Wd�n1sV0Y|�
|�|�|�tjd�� }|�|�
�d�Wd�n1s�0YdS)Nrr�sabcxxxr�)rrrr�r�r6r(�weakref�refr�assertIsNoner$r�rQ)r1r(�wrrrr�test_garbage_collection�s

&zIOTest.test_garbage_collectioncCsd}tj�|�s |�d�|��tjdkr4|�d�tjtj	krJ|�d�|j
|ddd��}|�t|j
�Wd�n1s~0Y|�
|d��}|�t|j
�Wd�n1s�0Y|�
|d	��}|�t|j
�Wd�n1s�0YdS)
Nz	/dev/zeroz{0} does not exist��z+test can only run in a 32-bit address spacez&test requires at least 2 GiB of memoryr�rr�r )r��path�existsr��formatr��maxsizerZreal_max_memuseZ_2Gr$r�r�rQ)r1Zzeror(rrr�test_unbounded_file�s


,,zIOTest.test_unbounded_filecsh|j|i|���g���fdd�}|�_|�t�j�|��j�|���|��d�dd��_dS)Ncs�jg�dd�<t��dSr3rkr�rlr(rr�	bad_flushsz4IOTest.check_flush_error_on_close.<locals>.bad_flushrcSsdSr3rrrrr�<lambda>rNz3IOTest.check_flush_error_on_close.<locals>.<lambda>)r$rfr�rmrn�
assertTruerl�assertFalse)r1r}�kwargsrHrrGr�check_flush_error_on_closes
z!IOTest.check_flush_error_on_closecCs.|jtjddd�t�tjtjtjB�}|j|ddd�t�tjtjtjB�}|j|dddd�t�|�|�tjd�t�tjtjtjB�}|�|d�t�tjtjtjB�}|j|ddd�t�|�|�tjd�t�tjtjtjB�}|�|d�t�tjtjtjB�}|j|ddd�t�|�dS)Nr�rr�F)r�r2r1r�)rMrr�r�r$�O_WRONLY�O_CREATrn)r1�fdrrr�test_flush_error_on_closes$

z IOTest.test_flush_error_on_closecCs<|jtjddd�}|��|��|��|�t|j�dS)Nr�rr�)r$rr�rnr�r�rfr�rrr�test_multi_close3s
zIOTest.test_multi_closecCs�|�d�}|�|�d�d�|�|�d�d�|�|�d�d�|�|�d�d�|�|�d�d�|�|�d�d�|�|�d�d�|�|�d�d�dS)	N)�abc�dN�efgNrW�ab�crT�ef�grN)r*r�rQ�r1�rawiorrr�test_RawIOBase_read:s
zIOTest.test_RawIOBase_readcCs@|��|��|��|��|��f}|D]}|�t|d��q&dS)N�__dict__)r�r�r�r�r�rJ�hasattr)r1r�rrrr�test_types_have_dictGs�zIOTest.test_types_have_dictcs�|�tjd��}|�d�Wd�n1s.0Yt�tjtj���fdd�}|jdd|d�� }|�|��d�Wd�n1s�0YdS)Nr�r5cs�Sr3r)rB�flags�rPrr�openerVsz"IOTest.test_opener.<locals>.opener�non-existentr �rb)r$rr�r6r��O_RDONLYr�rQ)r1r(rbrrar�test_openerRs(zIOTest.test_openercCsVdd�}|�t��}tdd|d�Wd�n1s60Y|�t|j�d�dS)NcSsdS)Nr�r�Zfnamer`rrr�	badopener]sz4IOTest.test_bad_opener_negative_1.<locals>.badopenerrcr rdzopener returned -1�r�r�r$r��str�	exception�r1rh�cmrrr�test_bad_opener_negative_1[s,z!IOTest.test_bad_opener_negative_1cCsVdd�}|�t��}tdd|d�Wd�n1s60Y|�t|j�d�dS)NcSsdS)N���rrgrrrrhesz8IOTest.test_bad_opener_other_negative.<locals>.badopenerrcr rdzopener returned -2rirlrrr�test_bad_opener_other_negativecs,z%IOTest.test_bad_opener_other_negativec	Cs�|�td��x}|�td��L}|j|��dd�}|j|��dd�|��|��|��Wd�n1sl0YWd�n1s�0YdS)Nr�Fr1)r$r%r�r<r2r�rn)r1�f1�f2Zfileiorrr�test_fileio_closefdks
�zIOTest.test_fileio_closefdc	Csjt�|��L|�t��"|jtjddd�Wd�n1s>0YWd�n1s\0YdS)Nr�rr��r�check_no_resource_warningr�r�r$r�r8rrr�test_nonbuffered_textiowszIOTest.test_nonbuffered_textioc	Csjt�|��L|�t��"|jtjddd�Wd�n1s>0YWd�n1s\0YdS)Nr��invalid��newlinertr8rrr�test_invalid_newline|szIOTest.test_invalid_newlinec	Cs~Gdd�d|j�}|�}dD]\}|�|��>td�}|�t||�|�d�|�t|�d�Wd�q1sn0YqdS)Nc@seZdZdd�ZeZdS)z3IOTest.test_buffered_readinto_mixin.<locals>.StreamcSsdS)N�12345r�r1�sizerrrrQ�sz8IOTest.test_buffered_readinto_mixin.<locals>.Stream.readN)rrrrQ�read1rrrr�Stream�sr�rHr�r[r{)r�r�rr��getattrr)r1r�stream�methodr�rrr�test_buffered_readinto_mixin�sz#IOTest.test_buffered_readinto_mixinc	s`�fdd�}|ttj��|tt�tj�����tjd��R}t|���}��t����|d�Wd�n1sv0YWd�n1s�0Ytd�}��t����|d�Wd�n1s�0Ytt	�}��t	����|d�Wd�n1�s0Y��
td��"��ttj�d�Wd�n1�sR0YdS)Ncsv��|d��}|�d�Wd�n1s,0Y��|d�� }��|��d�Wd�n1sh0YdS)Nr�r5r )r$r6r�rQ)rBr(r8rr�check_path_succeeds�s(z7IOTest.test_fspath_support.<locals>.check_path_succeedsr�zread/write/append modeZrwxa)r
rr�r��fsencoder$r<r�r��FloatingPointError�assertRaisesRegexr�)r1r�r(Zbad_pathrr8r�test_fspath_support�sH*,zIOTest.test_fspath_supportcCs8|�d�}|�|��d�|�d�}|�|��d�dS�N�rSrTrU�abcdefg)r*r�rQ�readallrZrrr�test_RawIOBase_readall�s

zIOTest.test_RawIOBase_readallc	Cs�Gdd�d|j�}d}d}|D]�}|�|���|\}}}}|tt|���}	t|f|�}
t|	|�}|�||
�|�|�t|
�|�|�|
d|�t|��|f||}|�|
|d�|�|�t|	j	�||�Wd�q1s�0YqdS)Nc@s$eZdZdd�Zdd�Zdd�ZdS)z3IOTest.test_BufferedIOBase_readinto.<locals>.ReadercSs
||_dSr3��avail)r1r�rrrr2�sz<IOTest.test_BufferedIOBase_readinto.<locals>.Reader.__init__cSs"|jd|�}|j|d�|_|Sr3r�)r1r}�resultrrrrQ�sz8IOTest.test_BufferedIOBase_readinto.<locals>.Reader.readcSs|�t|d��S)z$Returns no more than 5 bytes at oncer[)rQ�minr|rrrr~�sz9IOTest.test_BufferedIOBase_readinto.<locals>.Reader.read1N)rrrr2rQr~rrrr�Reader�sr�)
)rHr�r[r[)rHr�r�r�)rHr[r�r[)rHr��r�)rHr�rr)r�r�r[r[)r�r�r�r[)r�r[r�r[)r�r�r�r[)r�r�rr�)
r�r�rr.r�r�r�rZassertSequenceEqualr�)r1r�r�ZUNUSED_BYTEr�r�r�Zrequestr��readerr�Zunusedrrr�test_BufferedIOBase_readinto�s

z#IOTest.test_BufferedIOBase_readintocCs4Gdd�d|j�}|�}|�t|j�dd�|_dS)Nc@seZdZdd�Zdd�ZdS)z#IOTest.test_close_assert.<locals>.RcSsdSr3r)r1�name�valuerrr�__setattr__�sz/IOTest.test_close_assert.<locals>.R.__setattr__cSs
t��dSr3�rmr8rrrrf�sz)IOTest.test_close_assert.<locals>.R.flushN)rrrr�rfrrrrr��sr�cSsdSr3rr8rrrrI�rNz*IOTest.test_close_assert.<locals>.<lambda>)r�r�rmrnrf)r1r�r(rrr�test_close_assert�szIOTest.test_close_assertN)F)3rrrr�r�r�r�r�r�r�r�r�r�r�r�r�rrrr	r
rr$r%r&r'r(r*r0r4r8r9r;r@rFrMrQrRr\r_rfrnrprsrvrzr�r�r�r�r�rrrrr�4s`
!h	



	
)r�c@seZdZdd�ZdS)�CIOTestcCsLGdd�d|j�}|�|�}||_t�|�}~~t��|�|�|�dS)Nc@seZdZdd�ZdS)z*CIOTest.test_IOBase_finalize.<locals>.MyIOcSsdSr3rr8rrrrn�sz0CIOTest.test_IOBase_finalize.<locals>.MyIO.closeN�rrrrnrrrrr"�sr")r�rr<r=rrr>)r1r"rr?rrr�test_IOBase_finalize�s
zCIOTest.test_IOBase_finalizeN)rrrr�rrrrr��sr�c@seZdZdS)�PyIOTestNrrrrrr��sr�c@seZdZdd�Zdd�ZdS)�APIMismatchTestcCs*tjtjtjdd�}|j|t�dd�dS)z:Test that pyio RawIOBase class has all c RawIOBase methods)�__weakref__)r�z6Python RawIOBase does not have all C RawIOBase methods��msgN)r�detect_api_mismatchr�r�rr�rc�r1Zmismatchrrr�test_RawIOBase_io_in_pyio_matchs�z/APIMismatchTest.test_RawIOBase_io_in_pyio_matchcCs&t�tjtj�}|j|t�dd�dS)z:Test that c RawIOBase class has all pyio RawIOBase methodsz6C RawIOBase does not have all Python RawIOBase methodsr�N)rr�rr�r�r�rcr�rrr�test_RawIOBase_pyio_in_io_match
sz/APIMismatchTest.test_RawIOBase_pyio_in_io_matchN)rrrr�r�rrrrr�sr�c@s|eZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�Zdd�Zdd�Z
dd�Zdd�Zdd�ZdS)�CommonBufferedTestscCs<|��}|�|�}|�|��|�|�t|j�t|�dSr3)rM�tp�assertIs�detachr�r��repr�r1r:rFrrr�test_detachs

zCommonBufferedTests.test_detachcCs&|��}|�|�}|�d|���dSr:)rMr�r�r<�r1r[�bufiorrr�test_filenos
zCommonBufferedTests.test_filenocCs:|��}|�|�}|�t|jdd�|�t|jdd�dS)Nrr�r�)rMr�r�r�rAr�rrr�test_invalid_args!s
z%CommonBufferedTests.test_invalid_argscsL|j}g�G�fdd�d|�}|��}||�}~t��|��gd��dS)Ncs:eZdZ��fdd�Z��fdd�Z��fdd�Z�ZS)zBCommonBufferedTests.test_override_destructor.<locals>.MyBufferedIOcs4��d�zt�j}Wnty(Yn0|�dSrjrr�rrrr,s
zJCommonBufferedTests.test_override_destructor.<locals>.MyBufferedIO.__del__cs��d�t���dSrVrr8rrrrn4s
zHCommonBufferedTests.test_override_destructor.<locals>.MyBufferedIO.closecs��d�t���dSrrr8rrrrf7s
zHCommonBufferedTests.test_override_destructor.<locals>.MyBufferedIO.flushrrrrYr�MyBufferedIO+sr�r)r�rMrrr�)r1r�r�r[r�rrr�test_override_destructor(sz,CommonBufferedTests.test_override_destructorcs4|��}|�|���fdd�}|�|�t|�dS)Ncs(��Wd�n1s0YdSr3rr�r�rr�_withDsz7CommonBufferedTests.test_context_manager.<locals>._with)rMr�r�r�)r1r[r�rr�r�test_context_manager@s

z(CommonBufferedTests.test_context_managerc	Cs�|��}t���r}|�t��|�|�jWd�n1s>0YtsZ|�|j	�n|j	durt|�
|j	jt�Wd�n1s�0YdSr3)
rir�catch_unraisable_exceptionr�rr��xyzzy�IOBASE_EMITS_UNRAISABLEr>�
unraisabler��exc_typerm�r1r[rmrrr�test_error_through_destructorLs
*
z1CommonBufferedTests.test_error_through_destructorcCsr|��}|�|�}d|jj|jjf}|�t|�d|�d|_|�t|�d|�d|_|�t|�d|�dS)Nz	(%s\.)?%sz<%s>�dummyz<%s name='dummy'>�dummyz<%s name=b'dummy'>)rMr�rr�assertRegexr�r�)r1r:rZclsnamerrr�	test_reprYs
zCommonBufferedTests.test_reprc	Csd|��}|�|�}t�|d|��0zt|�Wnty@Yn0Wd�n1sV0YdS�Nr�)rMr�r�	swap_attrr��RuntimeError�r1r:rrrr�test_recursive_reprcs
z'CommonBufferedTests.test_recursive_reprcs�|���g����fdd�}|�_|����|�t�j�|��j�|��j�|���|��d�|��d�dd��_dS)Ncs�j�jg�dd�<t��dSr3rkr�rrlr:rrrHrsz@CommonBufferedTests.test_flush_error_on_close.<locals>.bad_flushrrDcSsdSr3rrrrrrI}rNz?CommonBufferedTests.test_flush_error_on_close.<locals>.<lambda>)	rMrfr�r�rmrnrJrlrK�r1rHrr�rrQms

z-CommonBufferedTests.test_flush_error_on_closecCs�|��}dd�}dd�}||_|�|�}||_|�t��}|��Wd�n1sV0Y|�|jjd�|�	|jj
t�|�|jj
jd�|�|j�dd�|_d	d�|_dS)
NcSstd��dS�Nrfr�rrrrrH�sz@CommonBufferedTests.test_close_error_on_close.<locals>.bad_flushcSstd��dS�Nrnr�rrrr�	bad_close�sz@CommonBufferedTests.test_close_error_on_close.<locals>.bad_close�rn�rfcSsdSr3rrrrrrI�rNz?CommonBufferedTests.test_close_error_on_close.<locals>.<lambda>cSsdSr3rrrrrrI�rN)
rMrnr�rfr�rmr�rkr}�assertIsInstance�__context__rKrl�r1r:rHr�r�errrrr�test_close_error_on_closes
&
z-CommonBufferedTests.test_close_error_on_closecCs�|��}dd�}dd�}||_|�|�}||_|�t��}|��Wd�n1sV0Y|�dt|j��|�	|jj
t�|�dt|jj
��|�|j�dd�|_d	d�|_dS)
NcSst�dSr3��non_existing_flushrrrrrH�szNCommonBufferedTests.test_nonnormalized_close_error_on_close.<locals>.bad_flushcSst�dSr3��non_existing_closerrrrr��szNCommonBufferedTests.test_nonnormalized_close_error_on_close.<locals>.bad_closer�r�cSsdSr3rrrrrrI�rNzMCommonBufferedTests.test_nonnormalized_close_error_on_close.<locals>.<lambda>cSsdSr3rrrrrrI�rN)
rMrnr�rfr��	NameError�assertInrjrkr�r�rKrlr�rrr�'test_nonnormalized_close_error_on_close�s
&
z;CommonBufferedTests.test_nonnormalized_close_error_on_closecCs<|��}|�|�}|��|��|��|�t|j�dSr3)rMr�rnr�r�rfr�rrrrR�s
z$CommonBufferedTests.test_multi_closecCs6|�|�d��}|�|j|j�|�|j|jd�dS)N�
AAAAAAAAAAr)r�rwr�r{rBrA�r1r�rrr�test_unseekable�sz#CommonBufferedTests.test_unseekablecCsN|��}|�|�}|��}|�t��||_Wd�n1s@0YdSr3)rMr�r�rr:)r1r:rF�xrrr�test_readonly_attributes�s

z,CommonBufferedTests.test_readonly_attributesN)rrrr�r�r�r�r�r�r�r�rQr�r�rRr�r�rrrrr�s


r�c@s(eZdZejdd��Zejdd��ZdS)�
SizeofTestcCs\d}d}|��}|j||d�}t�|�|}|��}|j||d�}|�t�|�||�dS)N�� ��buffer_size)rMr�r��	getsizeofr�)r1Zbufsize1Zbufsize2r[r�r}rrr�test_sizeof�szSizeofTest.test_sizeofcCsFd}|��}|j||d�}t�|�|}|��|�t�|�|�dS)Nr�r�)rMr�r�r�rnr�)r1rr[r�r}rrr�test_buffer_freeing�szSizeofTest.test_buffer_freeingN)rrrr�cpython_onlyr�r�rrrrr��s

r�c@s�eZdZdZdd�Zdd�Zdd�Zdd	�Zd
d�Zdd
�Z	dd�Z
dd�Zdd�Zdd�Z
dd�Zdd�Zdd�Zdd�Ze�d�dd ��Zd!d"�Zd#d$�Zd%d&�Zd'd(�Zd)d*�Zd+S),�BufferedReaderTestr�cCs�|�dg�}|�|�}|�|�|j|dd�|j|dd�|�d|���|jt|j|dd�|jt|j|dd�|jt|j|dd�|�dg�}|�|�|�d|���dS)NrS�r��r��r�)rMr�r2r�rQr�r�r�rrr�test_constructor�s


z#BufferedReaderTest.test_constructorcCsX|j�|j�}~|j�|j�}|�ttfd|jd�|�|���|�|�d�d�dS�N�uninitialized|has no attributerrN)	r��__new__r�r�rrQr2rMr�r�rrr�test_uninitialized�s
�z%BufferedReaderTest.test_uninitializedcCsDdD]*}|�d�}|�|�}|�d|�|��q|�t|jd�dS)N)Nr�r�r�ro)rMr�r�rQr�r�)r1�argr[r�rrr�	test_read�s


zBufferedReaderTest.test_readcCs�|�d�}|�|�}|�d|�d��|�d|�d��|�|jd�|�d|�d��|�d|�d��|�|jd�|�d	|�d��|�|jd
�|�d|�d��|�|jd�|�d|�d��|�|jd
�dS)Nr��arD�brNrrWr�rTrWrUr�r��rMr�r�rQr~r/r�rrr�
test_read1�s

zBufferedReaderTest.test_read1cCs�|�d�}|�|�}|�d|�d��|�d|���|�d|���|�d|�d��|�|jd�|�d	|���|�|jd
�dS)Nr�r�rDsbcrTrUr�r�rNr�r�r�rrr�test_read1_arbitrarys

z'BufferedReaderTest.test_read1_arbitrarycCs|�d�}|�|�}td�}|�|�|�d�|�|d�|�|�|�d�|�|d�|�|�|�d�|�|d�|�|�|�d�|�|d�|�|�|�d�|�|d�|�d	�}|�|�}|�|�|�d�|�|d�|�|�|�d�|�|d
�dS)Nr�rWrV�cdrXrDsgfr)rSNscb)rMr�r�r�rH)r1r[r�rrrr�
test_readintos&



z BufferedReaderTest.test_readintocCs4d}|�d�}|j||d�}td�}|�|�d�d�|�|jd�|�|�|�d�|�|d�|�|jd�|�|�|�d�|�|dd�d	�|�|jd�|�|�|�d�|�|d
�|�|jd�td|�}|�|�d�d�|�|jd�|�|�|�d�|�|dd�d
�|�|jd�dS)Nr�)rS�de�fghsjklr�rWr�rSrDrVrWr�r�r�sfghjklr�)rMr�r�r��peekr/r�)r1r�r[r�rrrr�test_readinto1&s*
z!BufferedReaderTest.test_readinto1cCs�d}d}|�|f�}|j||d�}t�dd�}|�|�}|�|t|��t|��d�}|�|t|��|�	|d|�|d|��|�	||d�dt||d���dS�N�<saaaaaaaaaaaaaaaaaaaaaaaaaar�r+s xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxrr�)
rMr�r
rHrrrr�
assertLessr��r1r�rr[r�rrGZbmrrr�test_readinto_array=s
z&BufferedReaderTest.test_readinto_arraycCs�d}d}|�|f�}|j||d�}t�dd�}|�|�}|�|t|��t|��d�}|�|t|��|�	|d|�|d|��|�	||d�dt||d���dSr)
rMr�r
r�rrrrrr�rrrr�test_readinto1_arrayRs
z'BufferedReaderTest.test_readinto1_arraycsV�fdd�}��|���gd����|��d�ddg���|��d�gd��dS)Ncs��d�}��|�S)N�r�r�rX)rMr�)r[r8rrr�hs
z0BufferedReaderTest.test_readlines.<locals>.bufiorr[r�r��r�rr�rr8r�test_readlinesgsz!BufferedReaderTest.test_readlinesc	Cs�d}t|�}dgd�|dggdgd�|ggdgd�gd�gg}|D]d\}}}|�|�}|j||d	�}d}	|D]*}
|�|�|
�||	|	|
��|	|
7}	ql|�|j|�qBdS)
N�	abcdefghir�)r�rDr��r)r�r�r�r�)rDrWr�rW)r�r�rDr�)rrqr�r�rQrr)r1rZdlenr�rZbuf_read_sizesZraw_read_sizesr[r�r�nbytesrrr�test_bufferingos�

z!BufferedReaderTest.test_bufferingcCs�|�d�}|�|�}|�d|�d��|�d|�d��|�d|���|�d|�d��|�|���|�d|���|�d�}|�d	|���|�|���dS)
N)rSrTNrUNNN�abcdr��erDsfgrN)r�NNr�)rMr�r�rQr�r>r�r�rrr�test_read_non_blocking�s


z)BufferedReaderTest.test_read_non_blockingcCs*|�d�}|�|�}|�d|�d��dS)Nr�r�i(#�rMr�r�rQr�rrr�test_read_past_eof�s

z%BufferedReaderTest.test_read_past_eofcCs(|�d�}|�|�}|�d|���dSr�rr�rrr�
test_read_all�s

z BufferedReaderTest.test_read_all�cpuc	sv�z`d}ttd��|}t�|�tt|��}|�tjd�����	|�Wd�n1s\0Y|jtj|j
dd���}|�|d��g�g����fdd���fd	d
�td�D�}t�|��t
�d�Wd�n1s�0Y|��d
��d���}td�D]&}tt|g��}|�|�|�|��qWd�n1�sJ0YWt�tj�nt�tj�0dS)N���r�rr�r
c
shz2tddg�D] }��|�}|s$q0��|�qWn0tyb}z��|��WYd}~n
d}~00dS)NrD�)rrQr4�	Exception)rGr��e)r��errors�resultsrrr(�s

z*BufferedReaderTest.test_threads.<locals>.fcsg|]}tj�d��qS��r��r`r���.0r�r'rr�
<listcomp>�rNz3BufferedReaderTest.test_threads.<locals>.<listcomp>r��{�G�z�?�(the following exceptions were caught: %rrN)r,r.�random�shufflerr�r$rr�r6�	read_moder��
start_threadsrdrerKr�r�rr�)r1�N�lr�r:�threadsr+�cr)r�rr(rr�test_threads�s.
((�
8zBufferedReaderTest.test_threadscCsb|�|�d��}|�|j|j�|�|j|jd�|�d�|�|j|jd�|�|j|j�dS)Nr�rrD)r�rwr�r{rBrArQr�rrrr��s
z"BufferedReaderTest.test_unseekablecCs@|�d�}|�|�}|�t|jd�|�t|j�dd�|_dS)Nr�rcSsdSr3rrrrrrI�rNz7BufferedReaderTest.test_misbehaved_io.<locals>.<lambda>)rUr�r�rmrArBrnr�rrr�test_misbehaved_io�s


z%BufferedReaderTest.test_misbehaved_ioc	Cs�d}d|d||d|dfD]�}|�d|g�}|�||�}|�|�|�d|�|�|jdd�||j��|�d|ddg�}|�||�}|�|�|�d|�|�|jdd�||j��qdS)Nr�rWrDr�rzfailed for {}: {} != 0)rMr�r�rQr0rD)r1rrGr[r�rrr�test_no_extraneous_read�s
�
�z*BufferedReaderTest.test_no_extraneous_readcCsDt�t�d��}|�d�|��|�t|j�|�t|jd�dS)N�12rD)	rr�r�rQrnr�r�r�r~r5rrr�test_read_on_closed�s

z&BufferedReaderTest.test_read_on_closedcCsH|�d�}|�|�}|�|���|�|j|j�|�|j|jd�dS)NrSr)rqr�rKr9r�r{rIr�rrr�test_truncate_on_read_only�s


z-BufferedReaderTest.test_truncate_on_read_onlyN)rrrr%r�r�r�r�r�r�r�rrrrrrrr�requires_resourcer+r�r,r-r/r0rrrrr��s,

'	r�c@sHeZdZejZedddd�dd��Zdd�Zdd	�Z	d
d�Z
dd
�ZdS)�CBufferedReaderTestT�Lsanitizer defaults to crashing instead of returning NULL for malloc failure.�Zmemory�address�reasoncCsDt�|�tjdkr@|��}|�|�}|�ttt	f|j
|tj�dS�NrA)r�r�r�rErMr�r�r��MemoryErrorr�r2r�rrrr��s



�z$CBufferedReaderTest.test_constructorcCs�|�dg�}|�|�}|jt|j|dd�|�t|j�|jt|j|dd�|�t|j�|jt|j|dd�|�t|j�dS)NrSrr�r�r�)rMr�r�r�r2rQr�rrr�test_initialization
s
z'CBufferedReaderTest.test_initializationcCs(|�d�}|�|�}|�t|jd�dS)Nr�r�)rUr�r�rmrQr�rrr�test_misbehaved_io_reads

z+CBufferedReaderTest.test_misbehaved_io_readcCs�|�tjtj�t�dtf��B|�tjd�}|�|�}||_t	�
|�}~t��Wd�n1sf0Y|�|�|�dS)Nrr)
r�rr�r�rrr�r�r(r<r=rr>�r1r[r(r?rrrr@s

&z+CBufferedReaderTest.test_garbage_collectioncCsD|�td��$|�t��ddd�Wd�n1s60YdS)Nr�r��r�r�r�rr�r8rrr�test_args_error(sz#CBufferedReaderTest.test_args_errorN)rrrrr�r�rr�r9r:r@r=rrrrr2�s



r2c@seZdZejZdS)�PyBufferedReaderTestN)rrrr�r�r�rrrrr>.sr>c@s�eZdZdZdd�Zdd�Zdd�Zdd	�Zd
d�Zdd
�Z	dd�Z
dd�Zdd�Zdd�Z
dd�Zdd�Zdd�Zdd�Zdd�Zd d!�Zd"d#�Zd$d%�Zd&d'�Ze�d(�d)d*��Zd+d,�Zd-d.�Zd/d0�Zd1d2�Zd3S)4�BufferedWriterTestr�cCs�|��}|�|�}|�|�|j|dd�|j|dd�|�d|�d��|��|jt|j|dd�|jt|j|dd�|jt|j|dd�|�|�|�d|�d	��|��|�d
�|j	�d�dS)Nr�r�r�r�rSrr�r��ghirNsabcghi)
rMr�r2r�r6rfr�r�r�r.r�rrrr�5s


z#BufferedWriterTest.test_constructorcCsX|j�|j�}~|j�|j�}|�ttfd|jd�|�|���|�|�d�d�dS)Nr�rNr)	r�r�r�r�rr6r2rMr�r�rrrr�Es
�z%BufferedWriterTest.test_uninitializedcCsD|��}|�|�}|�d�|�|j�|��|�|jdg�dS)Nshowdy!)rMr�r6rKr.r�r�r�rrr�test_detach_flushOs

z$BufferedWriterTest.test_detach_flushcCsh|��}|�|d�}|�d�|�|j�td�}|�|�d|dd�<|��|�d�|j�d�dS)Nr
rS�def�***rN�abcdef)	rMr�r6rKr.r�rfr�r�)r1�writerr�r�rrr�
test_writeWs

zBufferedWriterTest.test_writecCsn|��}|�|d�}d}tdt|�d�D]}|�|||d��q(d�|j�}|�|�|dd��|�dS)Nr
sabcdefghijklmnoprr�rNi����)	rMr�r.rr6r�r.rJr�)r1rEr��contentsrGZflushedrrr�test_write_overflowcsz&BufferedWriterTest.test_write_overflowc	Cs�ttd��d}d}|��}|�|d�}dd�}|�}|t|�kr�tt|�t|�|�}|�|�||||��|�||�||7}q6|�	�|�|d�
|j��dS)Nrrrr�css&td�D]}td�D]
}|VqqdS)NrD�)rr.)r}r+rrr�	gen_sizesusz2BufferedWriterTest.check_writes.<locals>.gen_sizesrN)rr.rMr�rr�r�r�r6rfr�r.)	r1Zintermediate_funcrGrGrEr�rJ�sizesr}rrr�check_writesns
zBufferedWriterTest.check_writescCs|�dd��dS)NcSsdSr3rr�rrrrI�rNz0BufferedWriterTest.test_writes.<locals>.<lambda>�rLr8rrr�test_writes�szBufferedWriterTest.test_writescCs|�dd��dS)NcSs|��Sr3r�r�rrrrI�rNz<BufferedWriterTest.test_writes_and_flushes.<locals>.<lambda>rMr8rrr�test_writes_and_flushes�sz*BufferedWriterTest.test_writes_and_flushescCs(dd�}|�|�dd�}|�|�dS)NcSs8|��}|�|dd�|�|dd�|�|d�dSrC)rBrA�r�rrrr�_seekabs�sz:BufferedWriterTest.test_writes_and_seeks.<locals>._seekabscSs4|�dd�}|�dd�|�dd�|�|d�dS)NrrDr�)rArPrrr�_seekrel�sz:BufferedWriterTest.test_writes_and_seeks.<locals>._seekrelrM)r1rQrRrrr�test_writes_and_seeks�s
z(BufferedWriterTest.test_writes_and_seekscCs|�dd��dS)NcSs|�|���Sr3)rIrBr�rrrrI�rNz>BufferedWriterTest.test_writes_and_truncates.<locals>.<lambda>rMr8rrr�test_writes_and_truncates�sz,BufferedWriterTest.test_writes_and_truncatesc
Cs�|��}|�|d�}|�|�d�d�|�|�d�d�|�d�|�|�d�d�|�d�z|�d	�Wn,|jy�}z|j}WYd}~nd}~00|�d
�|�|d�|�|��d�|�|�d
�d�|��}|�	|�
d�|�dS)Nr
r
r�sefghir[�ksjklmn�0sopqrwxyz0123456789z'BlockingIOError should have been raisedr�sabcdefghijklmnopqrwxyzs	ABCDEFGHIr�s	01234567A)r�r�r�r6r�r��characters_writtenr�r�rJr�)r1r:r�r�writtenr�rrr�test_write_non_blocking�s&



�z*BufferedWriterTest.test_write_non_blockingcCs�t��}|�|d�}|�|�d�d�|�|��d�|�dd�|�|�d�d�|�dd�|�|��d�|�|�d�d�|��|�|��d	�dS)
Nr�rDr�rsXYrWsXYcdefs123456sXYcdef123456)	rr�r�r�r6rBrArrf�r1r:r�rrr�test_write_and_rewind�sz(BufferedWriterTest.test_write_and_rewindcCs<|��}|�|d�}|�d�|��|�d|jd�dS�Nr
rSr)rMr�r6rfr�r.�r1rEr�rrr�
test_flush�s

zBufferedWriterTest.test_flushcCsFgd�}|��}|�|d�}|�|�|��|�d�|j�d�dS�N)rVr�rXr
rNrD)rMr�r�rfr�r�r.�r1r(rEr�rrr�test_writelines�s
z"BufferedWriterTest.test_writelinescCsJtgd��}|��}|�|d�}|�|�|��|�d�|j�d�dSr_)rrMr�r�rfr�r�r.r`rrr�test_writelines_userlist�s
z+BufferedWriterTest.test_writelines_userlistcCsL|��}|�|d�}|�t|jgd��|�t|jd�|�t|jd�dS)Nr
r�abc)rMr�r�r�r�r]rrr�test_writelines_error�s
z(BufferedWriterTest.test_writelines_errorcCs>|��}|�|d�}|�d�~t��|�d|jd�dSr\)rMr�r6rrr�r.r]rrrr�s
z"BufferedWriterTest.test_destructorcCs�|�tjtj�|jtj|jdd��H}|�|d�}|�d�|�|�	d�d�|�|�
�d�Wd�n1sr0Y|jtjddd�� }|�|��d�Wd�n1s�0YdS)	Nrr�r
rDr�r�r�rS)r�rr�r�r$�
write_moder�r6r�rIrBrQ)r1r:r�r(rrr�
test_truncate�s
.z BufferedWriterTest.test_truncatec	Cs�|�tjtj�|�tjd��}|�dd�Wd�n1sB0Ygd�}|D]n}|jtjd|d��H}|�d|d�|�d�|��|�|�	�|d�Wd�qX1s�0YqXdS)	Nr��i')r�r���zr+br�rDrW)
r�rr�r�r$r6rQrIr�rB)r1r(Zbuffer_sizesr�rrr�test_truncate_after_write�s,
z,BufferedWriterTest.test_truncate_after_writerc
	s��z�d}ttd��|}tddg�}d}t��|t|�krbt|�}��||||��||7}q.~|jtj	|j
dd���}|�|d��g����fdd	���fd
d�td�D�}t�|��t
�d
�Wd�n1s�0Y|��d�����Wd�n1�s0Y|�tj	d������}Wd�n1�sJ0Ytd�D]}	|�|�t|	g��|��q\Wt�tj	�nt�tj	�0dS)NrrrDrrr�r
c
sjz4z���}Wnty$YWdS0��|�qWn0tyd}z��|��WYd}~n
d}~00dSr3)�popleftrEr6rr4)r�r)r�r�queuerrr(s

z*BufferedWriterTest.test_threads.<locals>.fcsg|]}tj�d��qSrrrr'rrr &rNz3BufferedWriterTest.test_threads.<locals>.<listcomp>r�r!r"r�)rr.rrrr�r4r$rr�rer�r&rdrerKrnrQr�rr�)
r1r'rGrKrGr}r:r)r�r+r)r�rr(rkrr+s6
(�((zBufferedWriterTest.test_threadscCsP|��}|�|d�}|�t|jd�|�t|j�|�t|jd�dd�|_dS)Nr[rrDcSsdSr3rrrrrrI;rNz7BufferedWriterTest.test_misbehaved_io.<locals>.<lambda>)rUr�r�rmrArBr6rnr�rrrr,3sz%BufferedWriterTest.test_misbehaved_iocCs@|�t��"|�|��dd�Wd�n1s20YdS�Nr
r��r�r�r�rMr8rrr�test_max_buffer_size_removal=sz/BufferedWriterTest.test_max_buffer_size_removalcCsH|��}dd�}||_|�|�}|�d�|�t|j�|�|j�dS)NcSs
t��dSr3r�)rrrr�	bad_writeCsz?BufferedWriterTest.test_write_error_on_close.<locals>.bad_write�spam)rMr6r�r�rmrnrJrl)r1r:rorrrr�test_write_error_on_closeAs

z,BufferedWriterTest.test_write_error_on_closecCs\|��}|�|d�}tj|jd�}|��|j��|�t	|j
d�|�|j�|�
�dS)Nr
rrp)r_r�r`r�rnr�rb�waitr�r�r6rJrlr�)r1r[r��trrr�test_slow_close_from_threadKs
z.BufferedWriterTest.test_slow_close_from_threadN)rrrrer�r�rArFrHrLrNrOrSrTrYr[r^rarbrdrrfrirr1r+r,rnrqrtrrrrr?2s4


.

r?c@s@eZdZejZedddd�dd��Zdd�Zdd	�Z	d
d�Z
dS)
�CBufferedWriterTestTr3r4cCsDt�|�tjdkr@|��}|�|�}|�ttt	f|j
|tj�dSr7)r?r�r�rErMr�r�r�r8r�r2r�rrrr�[s



�z$CBufferedWriterTest.test_constructorcCs�|��}|�|�}|jt|j|dd�|�t|jd�|jt|j|dd�|�t|jd�|jt|j|dd�|�t|jd�dS)Nrr�rBr�r�)rMr�r�r�r2r6r�rrrr9gs
z'CBufferedWriterTest.test_initializationcCs�|�tjtj�t�dtf��L|�tjd�}|�|�}|�d�||_	t
�|�}~t��Wd�n1sp0Y|�
|�|�|�tjd�� }|�|��d�Wd�n1s�0YdS)Nrrs123xxxr�)r�rr�r�rrr�r�r6r�r<r=rr>r$r�rQr;rrrr@qs


&z+CBufferedWriterTest.test_garbage_collectioncCsD|�td��$|�t��ddd�Wd�n1s60YdS)Nr�r�r<r8rrrr=�sz#CBufferedWriterTest.test_args_errorN)rrrrr�r�rr�r9r@r=rrrrruXs


ruc@seZdZejZdS)�PyBufferedWriterTestN)rrrr�r�r�rrrrrv�srvc@s�eZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�Zdd�Zdd�Z
dd�Zdd�Zdd�Zdd�Zdd �Zd!d"�Zd#d$�Zd%d&�Zd'd(�Zd)d*�Zd+S),�BufferedRWPairTestcCs$|�|��|���}|�|j�dSr3)r�rMrKrl�r1�pairrrrr��sz#BufferedRWPairTest.test_constructorcCs�|j�|j�}~|j�|j�}|�ttfd|jd�|�ttfd|jd�|�|��|���|�	|�d�d�|�	|�d�d�dSr�)
r�r�r�r�rrQr6r2rMr�rxrrrr��s
�
�z%BufferedRWPairTest.test_uninitializedcCs(|�|��|���}|�|j|j�dSr3)r�rMr�r{r�rxrrrr��szBufferedRWPairTest.test_detachcCsF|�t��(|�|��|��dd�Wd�n1s80YdSrlrmr8rrr�(test_constructor_max_buffer_size_removal�sz;BufferedRWPairTest.test_constructor_max_buffer_size_removalcCs,Gdd�dt�}|�t|j|�|���dS)Nc@seZdZdd�ZdS)zJBufferedRWPairTest.test_constructor_with_not_readable.<locals>.NotReadablecSsdSrxrr8rrrr=�szSBufferedRWPairTest.test_constructor_with_not_readable.<locals>.NotReadable.readableN�rrrr=rrrr�NotReadable�sr|�rMr�rmr�)r1r|rrr�"test_constructor_with_not_readable�sz5BufferedRWPairTest.test_constructor_with_not_readablecCs,Gdd�dt�}|�t|j|��|��dS)Nc@seZdZdd�ZdS)zLBufferedRWPairTest.test_constructor_with_not_writeable.<locals>.NotWriteablecSsdSrxrr8rrrr9�szUBufferedRWPairTest.test_constructor_with_not_writeable.<locals>.NotWriteable.writableN)rrrr9rrrr�NotWriteable�srr})r1rrrr�#test_constructor_with_not_writeable�sz6BufferedRWPairTest.test_constructor_with_not_writeablecCsv|�|�d�|���}|�|�d�d�|�|�d�d�|�|��d�|�|�d�|���}|�|�d�d�dS)NrDr�rSrDrTrX)r�r�rMr�rQrxrrrr��szBufferedRWPairTest.test_readcsT�fdd�}��|���gd����|���gd����|��d�ddg�dS)Ncs����d�����S)Ns	abc
def
h)r�r�rMrr8rrrI�rNz3BufferedRWPairTest.test_readlines.<locals>.<lambda>)r�r�r�r[r�r�rrxrr8rr�sz!BufferedRWPairTest.test_readlinescCs<|�|�d�|���}|�|�d�d�|�|��d�dS)NrDr�rSrB)r�r�rMr�r~rxrrrr��szBufferedRWPairTest.test_read1c	Cs|dD]r}|�|��T|�|�d�|���}td�}|�t||�|�d�|�t|�d�Wd�q1sl0YqdS)Nr�rDsr[sabcde)r�r�r�rMrr�r�r)r1r�ryrrrrr��sz BufferedRWPairTest.test_readintocCsf|��}|�|��|�}|�d�|��td�}|�|�d|dd�<|��|�|jddg�dS)NrSrBrC)rMr�r6rfr�r�r.)r1r�ryr�rrrrF�s

zBufferedRWPairTest.test_writecCsB|�|�d�|���}|�|�d��d��|�|�d�d�dS)NrDr�rS)r�r�rMrJr�r�r�rQrxrrr�	test_peek�szBufferedRWPairTest.test_peekcCs&|�|��|���}|�|���dSr3)r�rMrJr=rxrrr�
test_readable�sz BufferedRWPairTest.test_readablecCs&|�|��|���}|�|���dSr3)r�rMrJr9rxrrr�test_writeable�sz!BufferedRWPairTest.test_writeablecCs&|�|��|���}|�|���dSr3)r�rMrKr>rxrrr�
test_seekable�sz BufferedRWPairTest.test_seekablecCs8|�|��|���}|�|j�|��|�|j�dSr3)r�rMrKrlrnrJrxrrr�test_close_and_closed�sz(BufferedRWPairTest.test_close_and_closedcCs�dd�}|��}||_|��}|�||�}|�t��}|��Wd�n1sR0Y|�dt|j��|�|j	�|�
|j	�|�|j	�dd�|_dS)NcSstdSr3��reader_non_existingrrrr�reader_close�szIBufferedRWPairTest.test_reader_close_error_on_close.<locals>.reader_closer�cSsdSr3rrrrrrI
rNzEBufferedRWPairTest.test_reader_close_error_on_close.<locals>.<lambda>)rMrnr�r�r�r�rjrkrJrlrK)r1r�r�rEryr�rrr� test_reader_close_error_on_close�s&z3BufferedRWPairTest.test_reader_close_error_on_closec	Csdd�}|��}|��}||_|�||�}|�t��}|��Wd�n1sR0Y|�dt|j��|�|j	�|�
|j	�|�|j	�dd�|_d}t���Lt���d}t�
�Wd�n1s�0Yt�
�Wd�n1s�0YdS)NcSstdSr3��writer_non_existingrrrr�writer_closeszIBufferedRWPairTest.test_writer_close_error_on_close.<locals>.writer_closer�cSsdSr3rrrrrrIrNzEBufferedRWPairTest.test_writer_close_error_on_close.<locals>.<lambda>)rMrnr�r�r�r�rjrkrKrlrJrr�r)r1r�r�rEryr�rrr� test_writer_close_error_on_closes$&


&z3BufferedRWPairTest.test_writer_close_error_on_closecCs�dd�}dd�}|��}||_|��}||_|�||�}|�t��}|��Wd�n1s`0Y|�dt|j��|�|jj	t�|�dt|jj	��|�
|j�|�
|j�|�
|j�dd�|_d	d�|_dS)
NcSstdSr3r�rrrrr�*szPBufferedRWPairTest.test_reader_writer_close_error_on_close.<locals>.reader_closecSstdSr3r�rrrrr�,szPBufferedRWPairTest.test_reader_writer_close_error_on_close.<locals>.writer_closer�r�cSsdSr3rrrrrrI=rNzLBufferedRWPairTest.test_reader_writer_close_error_on_close.<locals>.<lambda>cSsdSr3rrrrrrI>rN)rMrnr�r�r�r�rjrkr�r�rKrl)r1r�r�r�rEryr�rrr�'test_reader_writer_close_error_on_close)s"&
z:BufferedRWPairTest.test_reader_writer_close_error_on_closecCs�Gdd�dt�}|�|d�|d��}|�|���|�|d�|d��}|�|���|�|d�|d��}|�|���|�|d�|d��}|�|���dS)Nc@seZdZdd�Zdd�ZdS)z8BufferedRWPairTest.test_isatty.<locals>.SelectableIsAttycSst�|�||_dSr3)rMr2�_isatty)r1�isattyrrrr2Bs
zABufferedRWPairTest.test_isatty.<locals>.SelectableIsAtty.__init__cSs|jSr3)r�r8rrrr�Fsz?BufferedRWPairTest.test_isatty.<locals>.SelectableIsAtty.isattyN)rrrr2r�rrrr�SelectableIsAttyAsr�FT)rMr�rKr�rJ)r1r�ryrrr�test_isatty@szBufferedRWPairTest.test_isattycCs*|�|��|���}t�|�}d}d}dSr3)r�rMr<r=)r1Zbrwr=rrr�test_weakref_clearingUs
z(BufferedRWPairTest.test_weakref_clearingN)rrrr�r�r�rzr~r�r�rr�r�rFr�r�r�r�r�r�r�r�r�r�rrrrrw�s*			rwc@seZdZejZdS)�CBufferedRWPairTestN)rrrrr�r�rrrrr�[sr�c@seZdZejZdS)�PyBufferedRWPairTestN)rrrr�r�r�rrrrr�^sr�c@s�eZdZdZdZdd�Zdd�Zdd�Zd	d
�Zdd�Z	d
d�Z
dd�Zdd�Zdd�Z
dd�Zdd�Zdd�Zdd�Zdd�Zdd �Zd!d"�Zd#d$�Zd%d&�Zd'd(�Zd)d*�Zd+Zd+Zd+S),�BufferedRandomTest�rb+zwb+cCst�|�t�|�dSr3)r�r�r?r8rrrr�fs
z#BufferedRandomTest.test_constructorcCst�|�t�|�dSr3)r�r�r?r8rrrr�js
z%BufferedRandomTest.test_uninitializedcCsn|�d�}|�|d�}|�d|�d��|�d�|�d�|�|j�|�d|���|�d|jd	�dS)
N)�asdf�ghjkr
�asrWsdddseeer�sdddeeer)rMr�r�rQr6rKr.�r1r:r�rrr�test_read_and_writens


z&BufferedRandomTest.test_read_and_writecCs|�d�}|�|�}|�d|�d��|�d|���|�dd�|�d|�d��|�d�|�dd�|�d|���|�d	|���|�d
d�|�d|���|�dd�|�d
|���|�d|�d��|��|�d|���|�	t
|jd�dS)Ns	asdfghjklr�rWrr�r�s123fs	asdf123flr����r[rDr�sfl�r�)r�r�r�rQrBrAr6rfrr�r�r�rrr�test_seek_and_tellys$


z%BufferedRandomTest.test_seek_and_tellcCs�|�d�}|�|�}|�d||d��|�d�|�d||d��|�d|���|��|�d|���|�d||��|�dd�|�d	�|��|�dd�|�d	||d
��dS)Nr	rVrWr.rXr�r@rsXYZr�)r�r�r�r6rBrfrA)r1Z	read_funcr:r�rrr�check_flush_and_read�s



z'BufferedRandomTest.check_flush_and_readcCs|�dd��dS)NcWs
|j|�Sr3)rQ)r�r}rrrrI�rNz8BufferedRandomTest.test_flush_and_read.<locals>.<lambda>�r�r8rrr�test_flush_and_read�sz&BufferedRandomTest.test_flush_and_readcCsddd�}|�|�dS)Nr�cSs.t|dkr|nd�}|�|�}t|d|��S)Nr�')r�rHr�r�rGrrrr�	_readinto�s
z=BufferedRandomTest.test_flush_and_readinto.<locals>._readinto)r�r�)r1r�rrr�test_flush_and_readinto�s
z*BufferedRandomTest.test_flush_and_readintocCsddd�}|�|�dS)Nr�cSs2|�|�}|dkr|d|�}|�t|�d�|S�Nr�rD)r�rArr�rrr�_peek�s

z5BufferedRandomTest.test_flush_and_peek.<locals>._peek)r�r��r1r�rrr�test_flush_and_peek�s
z&BufferedRandomTest.test_flush_and_peekcCsh|�d�}|�|�}|�d�|��|�d�|��|�dd�|�d|���|�d|���dS)Nr	�123s45rs	12345fghi)r�r�r6rfrAr�rrQrZrrr�test_flush_and_write�s



z'BufferedRandomTest.test_flush_and_writecCst�|�t�|�dSr3)r�r+r?r8rrrr+�s
zBufferedRandomTest.test_threadscCs(dd�}|�|�dd�}|�|�dS)NcSs|�d�dSrj)r�r�rrrr��sz6BufferedRandomTest.test_writes_and_peek.<locals>._peekcSs.|��}|�dd�|�d�|�|d�dS)Nr�rDr)rBrAr�rPrrrr��s
rMr�rrr�test_writes_and_peek�s
z'BufferedRandomTest.test_writes_and_peekcCsdd�}|�|�dS)NcSs|�dd�|�d�dSr�)rArQr�rrr�_read�sz7BufferedRandomTest.test_writes_and_reads.<locals>._readrM�r1r�rrr�test_writes_and_reads�sz(BufferedRandomTest.test_writes_and_readscCsdd�}|�|�dS)NcSs|�dd�|�d�dSr�)rAr~r�rrr�_read1�sz9BufferedRandomTest.test_writes_and_read1s.<locals>._read1rM)r1r�rrr�test_writes_and_read1s�sz)BufferedRandomTest.test_writes_and_read1scCsdd�}|�|�dS)NcSs|�dd�|�td��dSr�)rArHr�r�rrrr��sz;BufferedRandomTest.test_writes_and_readintos.<locals>._readrMr�rrr�test_writes_and_readintos�sz,BufferedRandomTest.test_writes_and_readintoscCs�dD]�}|�d�}|�|d�}|�|�d�d�|�|��d�|�d|�|�|��|d�|��|�|��|d�|��}|�|dd|dd|�qdS)N)rDr[r�r�rD�A�Br�)r�r�r�rQrBr6rfr)r1Zoverwrite_sizer:r�r�rrr�test_write_after_readahead�s
�z-BufferedRandomTest.test_write_after_readaheadc	Cs�dd�}d}tdt|��D]t}t|t|��D]`}|�|�}|�|d�}||||�|��t|�}d||<d||<|�|��|d||f�q,qdS)	NcSs:|�|�|�||�|�d�|�|�|�d�dS)N��)rArQr6)r�Zpos1Zpos2rrr�mutate�s



z:BufferedRandomTest.test_write_rewind_write.<locals>.mutates�����rr�rWrDzfailed result for i=%d, j=%d)r.rr�r�rfr�r�r)r1r�rr+�jr:r��expectedrrr�test_write_rewind_write�s

�z*BufferedRandomTest.test_write_rewind_writecCs^|�d�}|�|d�}|�|�d�d�|�|��d�|�|�d�d�|�|��d�dS)Nr�r�rWsAAsBBr�)r�r�r�rQrIr6rZrrr�!test_truncate_after_read_or_write	s
z4BufferedRandomTest.test_truncate_after_read_or_writecCst�|�t�|�dSr3)r�r,r?r8rrrr,	s
z%BufferedRandomTest.test_misbehaved_ioc	Cs�|�d���}|�|d���}|�d�|�|�d�d�|�d�|�|�d�d�|�d�td�}|�|�|�|d	�|�d
�|�|�d�d�|�	�|�|�
�d�Wd�n1s�0YWd�n1s�0Y|�d
���}|�|d��V}|�|�d�d�|�d�|�|�d�d�|�	�|�|�
�d�Wd�n1�s`0YWd�n1�s�0YdS)Nsabcdefghr��1rDr��2rTr��f�4r�s1b2d3f4hrSr�rWsa2c)r�r�r6r�rQr~r�rHr�rfr)r1r:r(rFrrr�test_interleaved_read_write	s*




L
z.BufferedRandomTest.test_interleaved_read_writec	Cs�|�d���}|�|��v}|�d�|�|��d�|�d�|�|��d�|�d�|�|��d�|��|�|��d�Wd�n1s�0YWd�n1s�0YdS)	Ns
ab
cdef
g
r�sb
r�r�r��
s
1b
2def
3
)r�r�r6r�r�rfr)r1r:r(rrr�test_interleaved_readline_write7	s


z2BufferedRandomTest.test_interleaved_readline_writeN)rrrr%rer�r�r�r�r�r�r�r�r�r+r�r�r�r�r�r�r�r,r�r�r�r0rrrrr�bs0
r�c@s8eZdZejZedddd�dd��Zdd�Zdd	�Z	d
S)�CBufferedRandomTestTr3r4cCsDt�|�tjdkr@|��}|�|�}|�ttt	f|j
|tj�dSr7)r�r�r�rErMr�r�r�r8r�r2r�rrrr�N	s



�z$CBufferedRandomTest.test_constructorcCst�|�t�|�dSr3)r2r@rur8rrrr@Z	s
z+CBufferedRandomTest.test_garbage_collectioncCsD|�td��$|�t��ddd�Wd�n1s60YdS)Nr�r�r<r8rrrr=^	sz#CBufferedRandomTest.test_args_errorN)
rrrrr�r�rr�r@r=rrrrr�K	s


r�c@seZdZejZdS)�PyBufferedRandomTestN)rrrr�r�r�rrrrr�d	sr�c@s\eZdZdZddd�Zdd�Zdd�Zd	d
�Zdd�Zddd�Z	dd�Z
d
Zedd��Z
dS)�StatefulIncrementalDecodera�
    For testing seek/tell behavior with a stateful, buffering decoder.

    Input is a sequence of words.  Words may be fixed-length (length set
    by input) or variable-length (period-terminated).  In variable-length
    mode, extra periods are ignored.  Possible words are:
      - 'i' followed by a number sets the input length, I (maximum 99).
        When I is set to 0, words are space-terminated.
      - 'o' followed by a number sets the output length, O (maximum 99).
      - Any other word is converted into a word followed by a period on
        the output.  The output word consists of the input word truncated
        or padded out with hyphens to make its length equal to O.  If O
        is 0, the word is output verbatim without truncating or padding.
    I and O are initially set to 1.  When I changes, any buffered input is
    re-scanned according to the new I.  EOF also terminates the last word.
    �strictcCstj�||�|��dSr3)�codecs�IncrementalDecoderr2�reset)r1rrrrr2�	sz#StatefulIncrementalDecoder.__init__cCsdt|�S)Nz<SID %x>)�idr8rrr�__repr__�	sz#StatefulIncrementalDecoder.__repr__cCsd|_d|_t�|_dSrj)r+�or�r�r8rrrr��	sz StatefulIncrementalDecoder.resetcCs,|jdA|jdA}}t|j�|d|fS)NrDr�)r+r�rr�)r1r+r�rrr�getstate�	sz#StatefulIncrementalDecoder.getstatecCs:|\}}t|�|_t|d�\}}|dA|dA|_|_dS)Nr�rD)r�r��divmodr+r�)r1�stater�rr+r�rrr�setstate�	s
z#StatefulIncrementalDecoder.setstateFcCs�d}|D]d}|jdkrD|td�kr6|jrB||��7}ql|j�|�q|j�|�t|j�|jkr||��7}q|r�|jr�||��7}|S)Nrr�.)r+�ordr��process_wordr4r)r1�input�final�outputrrrr�decode�	s

z!StatefulIncrementalDecoder.decodecCs�d}|jdtd�kr6tdt|jdd�p,d��|_nv|jdtd�krhtdt|jdd�p^d��|_nD|j�d�}t|�|jkr�|d|j7}|jr�|d|j�}|d	7}t�|_|S)
Nrrr+�crDr�r��-r�)	r�r�r��intr+r�r�rr�)r1r�rrrr��	s  z'StatefulIncrementalDecoder.process_wordc	Cs6|jr2|dkr2t�d�}tjd|jdddd|d�SdS)N�test_decoderr!)r��encoder��incrementalencoder�streamreader�streamwriter�incrementaldecoder)�codecEnabledr��lookup�	CodecInfor�)�clsr��latin1rrr�lookupTestDecoder�	s
�z,StatefulIncrementalDecoder.lookupTestDecoderN)r�)F)rrrrJr2r�r�r�r�r�r�r��classmethodr�rrrrr�s	s

r�c@s eZdZdZgd�Zdd�ZdS)�StatefulIncrementalDecoderTestzB
    Make sure the StatefulIncrementalDecoder actually works.
    ))r
Fza.b.c.d.)�oiabcdT�abcd.)soi...abcd...Tr�)si.o6.x.xyz.toolongtofit.Fzx-----.xyz---.toolon.)s
i.i2.o6xyzTzxy----.z-----.)si.o3.i6.abcdefghijklmnopTzabc.ghi.mno.)s;i.o29.a.b.cde.o15.abcdefghijabcdefghij.i3.a.b.c.d.ei00k.l.mTz�a----------------------------.b----------------------------.cde--------------------------.abcdefghijabcde.a.b------------..c.------------.d.e------------.k--------------.l--------------.m--------------.cCs\|jD]$\}}}t�}|�|�||�|�qt�}|�|�d�d�|�|�dd�d�dS)Nr�rrNrDr�)�
test_casesr�r�r�)r1r��eofr��drrrr��	sz+StatefulIncrementalDecoderTest.test_decoderN)rrrrJr�r�rrrrr��	sr�c@s�eZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�Zdd�Ze
�ejjd�dd��Zeje
�ejjd�dd���Zdd�Zdd�Zdd�Zd d!�Zd"d#�Zd$d%�Zd&d'�Zd(d)�Zd*d+�Zd,d-�Zd.d/�Z d0d1�Z!d2d3�Z"d4d5�Z#d6d7�Z$d8d9�Z%d:d;�Z&d<d=�Z'd>d?�Z(d@dA�Z)dBdC�Z*dDdE�Z+dFdG�Z,dHdI�Z-dJdK�Z.dLdM�Z/dNdO�Z0dPdQ�Z1dRdS�Z2dTdU�Z3dVdW�Z4dXdY�Z5dZd[�Z6d\d]�Z7d^d_�Z8ej9d`da��Z:dbdc�Z;ddde�Z<dfdg�Z=dhdi�Z>djdk�Z?dldm�Z@dndo�ZAdpdq�ZBdrds�ZCdtdu�ZDdvdw�ZEdxdy�ZFdzd{�ZGd|d}�ZHd~d�ZId�d��ZJd�d��ZKd�d��ZLd�d��ZMd�d��ZNd�d��ZOd�d��ZPd�d��ZQd�d��ZRd�d��ZSd�S)��TextIOWrapperTestcCs"d|_d�d�|_t�tj�dS)NsAAA
BBB
CCC
DDD
EEE
sAAA
BBB
CCC
DDD
EEE
r�)�testdatar��
normalizedrr�r�r8rrrr��	szTextIOWrapperTest.setUpcCst�tj�dSr3r�r8rrrr��	szTextIOWrapperTest.tearDowncCs�|�d�}|�|d�}|�|�}|j|ddd�|�|jd�|�|jd�|j|ddd	�|�|jd�|�|jd�|�d
|���|jt	|j|dd�|jt
|j|d
d�dS)N�é

rr!�
�r#ryF�utf-8T)r#�line_buffering�é
r;rxr�)r�r�r�r2r�r#r�r�r�r�r��r1r rrsrrrr�
s

z"TextIOWrapperTest.test_constructorcCsf|j�|j�}~|j�|j�}|�tt|�|�ttfd|jd�|�	|�
��|�|�d�d�dS)Nr�rr)r�r�r�rr�r�r�rrQr2rMr��r1rsrrrr�
s
�z$TextIOWrapperTest.test_uninitializedcCsP|��}|�|�}|�td��|j|dd�Wd�n1sB0YdS)Nzis not a text encoding�hexr")r�r�r��LookupErrorr�)r1r rrrr�*test_non_text_encoding_codecs_are_rejected
s
z<TextIOWrapperTest.test_non_text_encoding_codecs_are_rejectedcCs�|��}|�|�}|�|�}|�|��|�|j|dd�}|�d�|�|���|��|�|��d�|�	t
|j�t|�|�|jd�|�|j
d�|�|j�|�|j�dS)Nr�r"Zhowdyshowdyr�)r�r�r�r�r�r6rKrr�r�r�r�r#rr��
write_throughr�rrrr�$
s


zTextIOWrapperTest.test_detachcCs�|�d�d��}|�|�}|j|dd�}|jj}|�t|�d|�d|_|�t|�d|�d|_|�t|�d|�d	|_|�t|�d
|�|j	�
�t|�dS)NZhellor�r"z'<(%s\.)?TextIOWrapper encoding='utf-8'>r�z4<(%s\.)?TextIOWrapper name='dummy' encoding='utf-8'>r z=<(%s\.)?TextIOWrapper name='dummy' mode='r' encoding='utf-8'>r�z><(%s\.)?TextIOWrapper name=b'dummy' mode='r' encoding='utf-8'>)r�r�r�r�rr�r�r�r�r�r�)r1r:rrs�modnamerrrr�8
s*

�
�
�
�
zTextIOWrapperTest.test_reprc	Csd|��}|�|�}t�|d|��0zt|�Wnty@Yn0Wd�n1sV0YdSr�)r�r�rr�r�r��r1r:rsrrrr�L
s
z%TextIOWrapperTest.test_recursive_reprcCsv|��}|�|d�}|j|ddd�}|�d�|�|��d�|�d�|�|��d�|�d	�|�|��d
�dS)Nr�
T�ryr��XrNzY
ZsXY
ZzA
BsXY
ZA
B)r�r�r�r6r�rr�rrr�test_line_bufferingV
s


z%TextIOWrapperTest.test_line_bufferingcCs|��}|�|d�}|j|ddd�}|�d�|�|��d�|jdd�|�|��d	�|�d
�|�|��d�|�d�|�|��d�|jdd�|�|��d
�|�d�|�|��d
�|��|jdd�|�|jd�|jdd�|��|jdd�|�|jd�dS)NrrFrzAB
CrNT)r�sAB
CzDEF
Gs	AB
CDEF
G�Hs
AB
CDEF
GHZIJ)r�r�r�r6r�r�reconfigurer�r�rrr�test_reconfigure_line_bufferinga
s,



z1TextIOWrapperTest.test_reconfigure_line_bufferingzutf-8 mode is enabledc	Cs�ttj�}z`dD]}|tjvrtj|=qt�d�}|��}|�|�}|�|j|�Wtj�	�tj�
|�ntj�	�tj�
|�0dS)N)�LC_ALL�LANG�LC_CTYPEF)�dictr��environ�locale�getpreferredencodingr�r�r�r#�clear�update)r1Zold_environ�keyZcurrent_locale_encodingrrsrrr�test_default_encoding|
s





�
z'TextIOWrapperTest.test_default_encodingcsPddl�|��}�fdd�|_|�t|j|��fdd�|_|�t|j|�dS)Nrcs
�jdSrj)ZINT_MAXr��	_testcapirrrI�
rNz8TextIOWrapperTest.test_device_encoding.<locals>.<lambda>cs
�jdSrj)ZUINT_MAXrrrrrI�
rN)rr�r<r�r�r�r5rrr�test_device_encoding�
sz&TextIOWrapperTest.test_device_encodingcCsJ|��}|j|dd�}|�|jd�|�|�}|�|j�t�|j�dS)Nr�r")r�r�r�r#�assertIsNotNoner�r��r1rrsrrr�
test_encoding�
s
zTextIOWrapperTest.test_encodingcCs�|�d�}|j|dd�}|�t|j�|�d�}|j|ddd�}|�t|j�|�d�}|j|ddd�}|�|��d�|�d�}|j|ddd�}|�|��d	�dS)
Nsabc
�
r�r"r��r#rr�zabc

�replaceuabc
�
)r�r�r��UnicodeErrorrQr�rrrr�test_encoding_errors_reading�
s



z.TextIOWrapperTest.test_encoding_errors_readingcCs�|��}|j|dd�}|�t|jd�|��}|j|ddd�}|�t|jd�|��}|j|dddd�}|�d	�|��|�|��d
�|��}|j|dddd�}|�d	�|��|�|��d�dS)
Nr�r"�ÿr�rr�r)r#rryu	abcÿdef
sabcdef
rsabc?def
)r�r�r�rr6rfr�rrrrr�test_encoding_errors_writing�
s(
�

�
z.TextIOWrapperTest.test_encoding_errors_writingc	Cs(gd�}dgd�gd|gdgd�gdddggd	gd
�gg}d}|D]�}td�|��|��}dD]�}td
d�D]�}|D]�\}}	|�|�|�|�}
|j|
||d�}|r�g}|�d�}
|
dkr�q�|�t	|
�d�|�
|
|���q�nt|�}t
||	�D]\}}|�||�q�|�t	|�t	|	��qtqlq^qBdS)N)�unix
�	windows
zos9
�last
�nonl)rzwindows
zos9
r!r"rr)rr z	os9
last
r"r�zunix
windows
z
os9
last
nonl�
)z
unix
windows
z
os9
z	last
nonl)r�r!�utf-16�	utf-16-le�	utf-16-be�utf-32�	utf-32-le�	utf-32-be)FTrDr��ryr#rW)rr�r�r.r�r�r�rQr�rr4r�r,�zip)r1Zinput_linesr��	encodingsr#rZdo_readsrryZ	exp_linesr��textioZ	got_lines�c2Zgot_lineZexp_linerrr�
test_newlines�
s8



��
zTextIOWrapperTest.test_newlinescCs�d}|�dd��dd�}d|�d�jdd�fd|�d�jdd�fd	gd
�fdgd�fd
gd�ffD]R\}}|�|�}|j|d|d�}|�|��|�|�d�|�|��d�	|��qbdS)NsAAA
BBB
CCC
DDD
EEE
FFF
GGGs
r��
r�T)�keependsrr)zAAA
zBBB
z
CCC
DDD
EEE
�FFF
�GGGr�)zAAA
BBB
CCC
DDD
EEE
r2r3r#)z
AAA
BBB
CCC
zDDD
zEEE
z
FFF
z
GGGr�r)
rr��
splitlinesr�r�r�rrArQr�)r1r�r�ryr�rF�txtrrr�test_newlines_input�
s


�

z%TextIOWrapperTest.test_newlines_inputcCs�ddddd�}d|tjfgt|���}|D]d\}}|��}|j|d|d�}|�d�|�d�|�d	�|��|�|j	d
�|�|�
�|�q.dS)NsAAA
BBB
CCC
X
Y
ZsAAA
BBB
CCC
X
Y

ZsAAA
BBB
CCC
X
Y

Z)rrr#r�r�r�zAAA
BzBB
CCC
zX
Y
ZF)r��linesep�sorted�itemsr�r�r6rfr�rlr)r1Ztestdictr�ryr�rFr5rrr�test_newlines_outputs�


z&TextIOWrapperTest.test_newlines_outputcsZg�|j�G��fdd�d��}|�}|j|dd�}|�d�~t��|�dg��dS)NcseZdZ��fdd�ZdS)z4TextIOWrapperTest.test_destructor.<locals>.MyBytesIOcs��|�����|�dSr3)r4rrnr8�r#r(rrrnsz:TextIOWrapperTest.test_destructor.<locals>.MyBytesIO.closeNr�rr;rr�	MyBytesIOsr<r�r"rcrS)r�r�r6rrr�)r1r<rrsrr;rrs
z!TextIOWrapperTest.test_destructorcsLg�G�fdd�d|j�}|��}||dd�}~t��|��gd��dS)Ncs:eZdZ��fdd�Z��fdd�Z��fdd�Z�ZS)z<TextIOWrapperTest.test_override_destructor.<locals>.MyTextIOcs4��d�zt�j}Wnty(Yn0|�dSrjrr�rrrr*s
zDTextIOWrapperTest.test_override_destructor.<locals>.MyTextIO.__del__cs��d�t���dSrVrr8rrrrn2s
zBTextIOWrapperTest.test_override_destructor.<locals>.MyTextIO.closecs��d�t���dSrrr8rrrrf5s
zBTextIOWrapperTest.test_override_destructor.<locals>.MyTextIO.flushrrrrYr�MyTextIO)sr=r�r"r)r�r�rrr�)r1r=rrsrrrr�'sz*TextIOWrapperTest.test_override_destructorc	Cs�|��}t���r}|�t��|�|�jWd�n1s>0YtsZ|�|j	�n|j	durt|�
|j	jt�Wd�n1s�0YdSr3)
rirr�r�rr�r�r�r>r�r�r�rmr�rrrr�>s
*
z/TextIOWrapperTest.test_error_through_destructorcCs�dD�]�}dD�]t}|jtjd|d�}||_|�|�d�d�|��|jtjd|d�}||_|�|��d�|�|��d�|��}|�|�	d�d�|�|�d�d�|�	d�|�|�d	�d
�|�|�d�d�|�|�d�d
�|�|��d
�|�|��|�|�|�	d�d�|�|�	dd	�|�|�|�d�d�|�|�	|�|�|�|��d�|�
d��r||�||�|��qqdS)N)rDrWr�r�r[rIr���� �!�?�@�A)r�r!r��w+r"rcr��r+rrWr
rDr*r�def�utf)r$rr�r&r�r6rnrBrQrAr��multi_line_test)r1�	chunksize�encr(�cookierrr�
test_basic_ioMs6


zTextIOWrapperTest.test_basic_iocCs�|�d�|��d}g}dD]V}g}t|�D]}|�||t|��q.d�|�d}|�|��|f�|�|�q|�d�g}	|��}
|��}|s�q�|	�|
|f�q�|�	|	|�dS)Nru	sÿ࿿￿)rrDrWr�r�r[�r?r@rA�>rBrCrDrrr)
rArIr.r4rr�rBr6r�r�)r1r(rK�sampleZwlinesr}�charsr+�lineZrlinesrrrrrIjs&

z!TextIOWrapperTest.multi_line_testcCs�|jtjddd�}|��}|�d�|��}|�d�|��}|�d�|�|��|�|�|��d�|�|��|�|�|��d�|�|��|�|�d�|D]}|�|d�|�t	|j�q�|�|��|�|�
�dS)NrEr�r"uÿ
r)r$rr�rBr6rAr�r�r�rmrn)r1r(�p0�p1Zp2rRrrr�test_telling�s$



zTextIOWrapperTest.test_tellingc
Cst�}|d}d|}t|�d��}|�t|�t|��d}t|�d��}||}|�tjd��}|�|d�Wd�n1s�0Y|jtjddd��L}|�	|�}	|�|	t
|d��|�|��|�|�|��|�Wd�n1s�0YdS)	NrWrr��袈
r�r r"r�)
r)rr�r�rr$rr�r6rQrjrBr�)
r1�
chunk_sizeZprefix_sizeZu_prefix�prefixZu_suffix�suffixrRr(r�rrr�test_seeking�s,
zTextIOWrapperTest.test_seekingcCs�d}|�tjd��}|�|�Wd�n1s20Y|jtjddd��,}|jd|_|��|��Wd�n1s�0YdS)Ns࿿
r�r r�r"rW)r$rr�r6r&r�rB)r1rr(rrr�test_seeking_too�s(z"TextIOWrapperTest.test_seeking_toocs�d�d��fdd�	}dt_zdtjD]\}}}||�q"tjD]8\}}}�t|�d}d|}|d}||||�q<Wdt_ndt_0dS)	N�rc	s���tjd�}|�|�|���jtjdd�}�|_|��}|��t|t|�d�D]�}ddt|�|fD]~}�jtjdd�}��	|�|�|d|��|�
�}��	|�|�||||��|�|���	|��||d��|��qnqXdS)zTell/seek to various points within a data stream and ensure
            that the decoded data returned by read() is consistent.r�r�r"rDr[N)r$rr�r6rnr&rQr.rr�rBrA)r�min_posr(Zdecodedr+r�rL�Z
CHUNK_SIZEr1rr�test_seek_and_tell_with_data�s 

zJTextIOWrapperTest.test_seek_and_tell.<locals>.test_seek_and_tell_with_datarDrW�.)r)r�r�r�r�r)r1r_r��_�offsetrXr]rr^rr��s
z$TextIOWrapperTest.test_seek_and_tellcCs�|jtjddd�}|�d�|��|jtjddd�}|�|��d�|��}|�|��d�|��}|�|�|�|��d�|�|��|�|��dS)Nr��euc_jpr"u
AB
うえ
r zAB
uうえ
)	r$rr�r6rnr�r�rBrA)r1r(rSrTrrr�test_multibyte_seek_and_tell�s

z.TextIOWrapperTest.test_multibyte_seek_and_tellcCsx|jtjddd�}|�d�|��}|�d�|�|�|�d�|��|jtjddd�}|�|��d�|��dS)	Nr��euc_jis_2004r"uæ̀�æùr uæ̀̀)	r$rr�r6rBrArnr�r�)r1r(rSrrr�test_seek_with_encoder_state�s



z.TextIOWrapperTest.test_seek_with_encoder_statecCs�d}d}|D]�}|��}|j||d�}|�|�|�|�|�d�|�|��|d�|�d�|�|��|d�|�|��|d�|��qdS)NZ
1234567890)r$r%r&r'r(r)r"rrW)r�r�r6rAr�rQrr�)r1rr�r#rFr(rrr�test_encoded_writes�s



z%TextIOWrapperTest.test_encoded_writescCs0Gdd�d|j�}|�|��}|�t|j�dS)Nc@seZdZdd�ZdS)z5TextIOWrapperTest.test_unreadable.<locals>.UnReadablecSsdSrxrr8rrrr=sz>TextIOWrapperTest.test_unreadable.<locals>.UnReadable.readableNr{rrrr�
UnReadablesri)r�r�r�rmrQ)r1rir5rrr�test_unreadablesz!TextIOWrapperTest.test_unreadablecCs>|�|�d��}d}|�d�}|s$q.||7}q|�|d�dS)NsAA
BBrrDzAA
BB�r�r�rQr��r1r5�readsr*rrr�test_read_one_by_ones

z&TextIOWrapperTest.test_read_one_by_onecCsh|�|�d��}|�|��gd��|�d�|�|�d�gd��|�d�|�|�d�ddg�dS)NsAA
BB
CC)�AA
�BB
ZCCrr[rorp)r�r�r�rrA�r1r5rrrr s

z TextIOWrapperTest.test_readlinescCs>|�|�d��}d}|�d�}|s$q.||7}q|�|d�dS)Ns�AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
Brr\z�AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
Brkrlrrr�test_read_by_chunk)s

z$TextIOWrapperTest.test_read_by_chunkcCs@gd�}|��}|�|�}|�|�|��|�|��d�dS�N)r
ZcdZefrD)r�r�r�rfr�r�r1r(rFr5rrrra4s

z!TextIOWrapperTest.test_writelinescCsDtgd��}|��}|�|�}|�|�|��|�|��d�dSrs)rr�r�r�rfr�rrtrrrrb<s

z*TextIOWrapperTest.test_writelines_userlistcCsF|�|���}|�t|jgd��|�t|jd�|�t|jd�dS)NrrS)r�r�r�r�r�rqrrrrdDsz'TextIOWrapperTest.test_writelines_errorcCsF|j|�|j�dd�}d}|�d�}|s*q4||7}q|�||j�dS)Nr�r"rrD)r�r�r�rQr�r�rlrrr�test_issue1395_1Js

z"TextIOWrapperTest.test_issue1395_1cCsL|j|�|j�dd�}d|_d}|�d�}|s0q:||7}q |�||j�dS)Nr�r"r�r�r�r�r�r&rQr�r�rlrrr�test_issue1395_2Vs

z"TextIOWrapperTest.test_issue1395_2cCsj|j|�|j�dd�}d|_|�d�}||�d�7}||��7}||��7}||��7}|�||j�dS�Nr�r"r�)r�r�r�r&rQr�r�r��r1r5rmrrr�test_issue1395_3bs
z"TextIOWrapperTest.test_issue1395_3cCsD|j|�|j�dd�}d|_|�d�}||��7}|�||j�dSrxrvryrrr�test_issue1395_4ms

z"TextIOWrapperTest.test_issue1395_4cCsX|j|�|j�dd�}d|_|�d�}|��}|�d�|�|�|�|�d�d�dS)Nr�r"r�rzBBB
)r�r�r�r&rQrBrAr�)r1r5rmrrrr�test_issue1395_5us


z"TextIOWrapperTest.test_issue1395_5cCs2|�|j�}|j|dd�}|�|��|���dS�Nr�r")r�r�r�r�r>)r1r�r5rrr�test_issue2282sz TextIOWrapperTest.test_issue2282c	Cstj}dD�]}|j|d|d��"}|�d�|��}Wd�n1sH0Y|�|d��&}|�|��d�|��Wd�n1s�0Y|j|d|d��}|�d�Wd�n1s�0Y|�|d��&}|�|��d�|��Wd�q
1�s0Yq
dS)	N��	utf-8-sigr$r'r�r"�aaar�r�xxx�aaaxxx)rr�r$r6rBr�rQr��r1�filename�charsetr(rrrr�test_append_bom�s

&4(z!TextIOWrapperTest.test_append_bomc	Cs�tj}dD]�}|j|d|d��"}|�d�|��}Wd�n1sF0Y|j|d|d��8}|�|�|�d�|�d�|�d�Wd�n1s�0Y|�|d	��&}|�|��d
�|��Wd�q
1s�0Yq
dS)Nrr�r"r�rFZzzzr�bbbr�Zbbbzzz)	rr�r$r6rBrAr�rQr�r�rrr�
test_seek_bom�s
&


(zTextIOWrapperTest.test_seek_bomc	Cs�tj}dD]�}|j|d|d��}|�d�Wd�n1s>0Y|j|d|d��2}|�d�|�d|j�|�d�Wd�n1s�0Y|�|d��&}|�|��d	�|��Wd�q
1s�0Yq
dS)
Nrr�r"r�rrr�r�r�)	rr�r$r6rAr�r�rQr�)r1r�r�r(rrr�test_seek_append_bom�s(
(z&TextIOWrapperTest.test_seek_append_bomcCs�|�tjd��}|�|jd�Wd�n1s20Y|jtjddd��}|�|jd�Wd�n1sr0YdS)Nr�r�r�r)r$rr�r�rr�rrr�test_errors_property�s,z&TextIOWrapperTest.test_errors_propertyc	s�t���|jtjddd��l���fdd���fdd�td�D�}t�|�j��t�	d	�Wd�n1sn0YWd�n1s�0Y|�tj��<���
�}td�D]}|�|�d
|�d�q�Wd�n1s�0YdS)Nr�rDr�csd|}�����|�dS)N�Thread%03d
)rrr6)rG�text)�eventr(rr�run�sz1TextIOWrapperTest.test_threads_write.<locals>.runcsg|]}tj�|fd��qS)r�rr)r�rrr �s�z8TextIOWrapperTest.test_threads_write.<locals>.<listcomp>r�r!r�)
r`rar$rr�r.r&rcrdrerQr�r)r1r)ZcontentrGr)r�r(r�r�test_threads_write�s
�Fz$TextIOWrapperTest.test_threads_writecs�|j|�|j�dd��g���fdd�}|�_|�t�j�|��j�|��j	j�|���|�
�d�|�
�d�dd��_dS)	Nr�r"cs �j�jjg�dd�<t��dSr3)rlr�rmr�rlr5rrrH�sz>TextIOWrapperTest.test_flush_error_on_close.<locals>.bad_flushrrDcSsdSr3rrrrrrI�rNz=TextIOWrapperTest.test_flush_error_on_close.<locals>.<lambda>)r�r�r�rfr�rmrnrJrlr�rKr�rr�rrQ�s
z+TextIOWrapperTest.test_flush_error_on_closecCs�|�|j�}dd�}dd�}||_|j|dd�}||_|�t��}|��Wd�n1s^0Y|�|jj	d�|�
|jjt�|�|jjj	d�|�|j
�d	d
�|_dd
�|_dS)NcSstd��dSr�r�rrrrrH�sz>TextIOWrapperTest.test_close_error_on_close.<locals>.bad_flushcSstd��dSr�r�rrrrr��sz>TextIOWrapperTest.test_close_error_on_close.<locals>.bad_closer�r"r�r�cSsdSr3rrrrrrI�rNz=TextIOWrapperTest.test_close_error_on_close.<locals>.<lambda>cSsdSr3rrrrrrI�rN)r�r�rnr�rfr�rmr�rkr}r�r�rKrl�r1r�rHr�r5r�rrrr��s&
z+TextIOWrapperTest.test_close_error_on_closecCs�|�|j�}dd�}dd�}||_|j|dd�}||_|�t��}|��Wd�n1s^0Y|�dt|j	��|�
|j	jt�|�dt|j	j��|�|j
�d	d
�|_dd
�|_dS)NcSst�dSr3r�rrrrrH�szLTextIOWrapperTest.test_nonnormalized_close_error_on_close.<locals>.bad_flushcSst�dSr3r�rrrrr��szLTextIOWrapperTest.test_nonnormalized_close_error_on_close.<locals>.bad_closer�r"r�r�cSsdSr3rrrrrrI�rNzKTextIOWrapperTest.test_nonnormalized_close_error_on_close.<locals>.<lambda>cSsdSr3rrrrrrI
rN)r�r�rnr�rfr�r�r�rjrkr�r�rKrlr�rrrr��s&
z9TextIOWrapperTest.test_nonnormalized_close_error_on_closecCs@|j|�|j�dd�}|��|��|��|�t|j�dSr})r�r�r�rnr�r�rfrqrrrrR
s
z"TextIOWrapperTest.test_multi_closecCs8|�|�|j��}|�|j|j�|�|j|jd�dSr+)r�rwr�r�r{rBrArqrrrr�	
sz!TextIOWrapperTest.test_unseekablecCsV|j|�|j�dd�}|�|j�}|�t��||_Wd�n1sH0YdSr})r�r�r�r�rr�)r1r5rFrrrr�
sz*TextIOWrapperTest.test_readonly_attributescCsX|�gd��}|j|ddd�}|�|�d�d�|�|��d�|�t|�dd	g�dS)
N�rSrBsghi
jkl
opq
r�rr�r�Zabcdzefghi
zjkl
zopq
)rMr�r�rQr�r,�r1r:r5rrr�
test_rawio
s
zTextIOWrapperTest.test_rawiocCsV|�gd��}|j|dddd�}|�d�|�d�|�d�|�d	�|j�d
�dS)Nr�r�rT)r#ryr��1z23
4�5rNs123
45)rMr�r6r�r�r.r�rrr�test_rawio_write_through
s
�


z*TextIOWrapperTest.test_rawio_write_throughcs�gg��G��fdd�d|j�}|��}d}||t|�d�}|j|ddd�}|�d�}|�|�|���|���|�|�	�d�g�|�|d	�|���|�|�	�|d
�dS)Ncs,eZdZ��fdd�Z��fdd�Z�ZS)zBTextIOWrapperTest.test_bufio_write_through.<locals>.BufferedWritercs��d�t�j|i|��Sr7r�r1r}rL)rZ�flush_calledrrrf.
s
zHTextIOWrapperTest.test_bufio_write_through.<locals>.BufferedWriter.flushcs��d�t�j|i|��Sr7)r4rXr6r�)rZ�write_calledrrr61
s
zHTextIOWrapperTest.test_bufio_write_through.<locals>.BufferedWriter.write)rrrrfr6r\r�r�r�rYrr�-
sr�r�rWr�T)r#r�rNr�r�)
r�r�rr�r�r6rKrJr�r)r1r�r[rr�r-r�rr�r�test_bufio_write_through)
s"
�




z*TextIOWrapperTest.test_bufio_write_throughcCs|�g�}|j|ddd�}|�d�|jdd�|�|jd�|�d�|j�d�|�d	�|�d�|j�d
�|jdd�|�|jd�|�d�|��|�d�|j�d
�|��|jdd�|�|jd�|jdd�|��|jdd�|�|jd�dS)Nr�rr�r�T)r�rNr�Z23r�FZ45r{)	rMr�r6rr�r�r�r.rfrrrr�test_reconfigure_write_throughI
s(



z0TextIOWrapperTest.test_reconfigure_write_throughcCs`|�|�d��}|�t|jd�|�|�d��}|�t|j�|�|�d��}|�t|j�dS)NrrD)r�r�r�r�rQr�r�rrr�test_read_nonbytes`
sz$TextIOWrapperTest.test_read_nonbytescCs`t�d�}t�|dd��$tjt�d�dd�}Wd�n1sB0Y|�t|j	d�dS)N�rot13�_is_text_encodingT�foor"Zbar)
r�r�rr�rr�r�r�r�r6)r1r�rsrrr�test_illegal_encoderj
s
2z&TextIOWrapperTest.test_illegal_encodercs��fdd����}��t|jd���}��t|j���}��t|j��fdd�}|d�}��t|jd�|d�}��t|jd�|d�}��t|jd�dS)	Ncs>t�d�}d|_z �j��d�ddd�}Wd|_nd|_0|S)N�quopriTsaaaaaarr*F)r�r�r�r�r�)r�rsr8rr�_make_illegal_wrapperu
s
�zETextIOWrapperTest.test_illegal_decoder.<locals>._make_illegal_wrapperrDcs`G�fdd�d���fdd�}t�d�}t�|d|����Wd�S1sR0YdS)NcseZdZ�fdd�ZdS)z^TextIOWrapperTest.test_illegal_decoder.<locals>._make_very_illegal_wrapper.<locals>.BadDecodercs�Sr3rr8��getstate_ret_valrrr��
szgTextIOWrapperTest.test_illegal_decoder.<locals>._make_very_illegal_wrapper.<locals>.BadDecoder.getstateN)rrrr�rr�rr�
BadDecoder�
sr�cs��Sr3r)r�)r�rr�_get_bad_decoder�
szdTextIOWrapperTest.test_illegal_decoder.<locals>._make_very_illegal_wrapper.<locals>._get_bad_decoderr�r�)r�r�rr�)r�r�r�)r�)r�r�r�_make_very_illegal_wrapper�
s
�zJTextIOWrapperTest.test_illegal_decoder.<locals>._make_very_illegal_wrapperr;r)rDrW)r�r�rQr�)r1rsr�r)r�r1r�test_illegal_decoderr
s

z&TextIOWrapperTest.test_illegal_decodercKs |jj}dj||d�}td|�S)Na�if 1:
            import codecs
            import {iomod} as io

            # Avoid looking up codecs at shutdown
            codecs.lookup('utf-8')

            class C:
                def __init__(self):
                    self.buf = io.BytesIO()
                def __del__(self):
                    io.TextIOWrapper(self.buf, **{kwargs})
                    print("ok")
            c = C()
            )�iomodrL�-c)rrrDr)r1rLr��coderrr�_check_create_at_shutdown�
s
�z+TextIOWrapperTest._check_create_at_shutdowncCs>|��\}}}|r&|�|j|���n|�d|�����dS)N�ok)r�r��shutdown_errorr�r��strip�r1�rc�outr�rrr�(test_create_at_shutdown_without_encoding�
sz:TextIOWrapperTest.test_create_at_shutdown_without_encodingcCs6|jddd�\}}}|�|�|�d|�����dS)Nr�r�rr�)r�rKr�r�r�r�rrr�%test_create_at_shutdown_with_encoding�
s
�
z7TextIOWrapperTest.test_create_at_shutdown_with_encodingcCs@td�}|�|d�}t|�����}|�|�d�|�d��dS)NsJust some random string
r�rh)�MemviewBytesIOr��_to_memoryviewrr/r�rQr�)r1r rsZ	bytes_valrrr�test_read_byteslike�
sz%TextIOWrapperTest.test_read_byteslikec	CsdGdd�dt�}td�D],}z|j|�dd�WqtyBYq0qdd�|_|j|�dd�}dS)Nc@s$eZdZdd�Zdd�Zdd�ZdS)z,TextIOWrapperTest.test_issue22849.<locals>.FcSsdSr7rr8rrrr=�
rNz5TextIOWrapperTest.test_issue22849.<locals>.F.readablecSsdSr7rr8rrrr9�
rNz5TextIOWrapperTest.test_issue22849.<locals>.F.writablecSsdSr7rr8rrrr>�
rNz5TextIOWrapperTest.test_issue22849.<locals>.F.seekableN)rrrr=r9r>rrrr�F�
sr�r�r�r"cSsdSr+r�r�rrrrI�
rNz3TextIOWrapperTest.test_issue22849.<locals>.<lambda>)�objectr.r�rrB)r1r�r+rsrrr�test_issue22849�
s
z!TextIOWrapperTest.test_issue22849cCs�d�d�d�d�}|�|�}|j|ddd�}|�|��d�|�|j��|jdd�Wd�n1sl0Y|�|j��|jdd	�Wd�n1s�0YdS)
N�abcé
r��déf
�utf8rr�r�r"rx)r�r�r�r�r�r�r{r)r1rr:r5rrr�test_reconfigure_encoding_read�
s
*z0TextIOWrapperTest.test_reconfigure_encoding_readcCsT|��}|j|ddd�}|�d�|jdd�|�d�|��|�|��d�dS)	Nr�rr�zfoo
r�r"r�sfoo
é
)r�r�r6rrfr�rr�rrr� test_reconfigure_write_fromascii�
s

z2TextIOWrapperTest.test_reconfigure_write_fromasciicCs�|��}|j|ddd�}|�d�|jdd�|�|��d�|�d�|��|�|��d	�|��}|j|d
dd�}|�d�|jdd�|�d�|��|�|��d
�dS)Nr�rr�r�r�r"sabc�
r�s
abc�
déf
r��abc
r�s	abc
déf
)r�r�r6rr�rrfr�rrr�test_reconfigure_write�
s



z(TextIOWrapperTest.test_reconfigure_writecCsd|��}dd�|_d|_|j|ddd�}|�d�|jdd�|�d	�|��|�|��d
�dS)NcSsdSrxrrrrrrIrNzGTextIOWrapperTest.test_reconfigure_write_non_seekable.<locals>.<lambda>r�rr�r�r�r"r�sabc
déf
)	r�r>rAr�r6rrfr�rr�rrr�#test_reconfigure_write_non_seekables


z5TextIOWrapperTest.test_reconfigure_write_non_seekablecCs�|�|��ddd�}|jdd�|�|jd�|�|jd�|�d�|jdd�|�|jd�|�|jd�|jdd	�|�|jd�|�|jd�|�d
�|jddd�|�|jd
�|�d�|�|��d�|�|�	��
�d�dS)Nr�rrr"�LF
r�rxr�r��CRLF
r�r�r�rzLF
CRLF
s	LF
CRLF
)r�r�rr�r#rr6rArQr�rrqrrr�test_reconfigure_defaultss"


z+TextIOWrapperTest.test_reconfigure_defaultscCs�|�d�}|j|ddd�}|jdd�|�|��d�|�d�}|j|ddd�}|jdd�|�|��d�|�d�}|j|dd	d�}|jdd�|�|��d
�|�d�}|j|ddd�}|jd	d�|�|��d�|�d
�}|j|dd	d�}|jdd�|�|��d�|j|��dd	d�}|jdd�|�d�|jdd�|�d�|jdd�|�d�|jd	d�|�d�|jdd�|�d�dtjd}|�|���	��
d�|�dS)NsCR
EOFr�rrxzCR
rzCR
s	CR
LF
EOFr#zCR
LF
s	LF
CR
EOFzLF
CR
sCR
CRLF
EOFr�z	CR
CRLF
zlinesep
r�r�r7zLF
LF
CR
CRLF
)r�r�rr�r�r6r�r7r�rr�)r1r:r5r�rrr�test_reconfigure_newline)sB









z*TextIOWrapperTest.test_reconfigure_newlinecCsb|j|�d�dd�}|�d�|��|��|j|�d�dd�}|�d�|�d�|��dS)Nstestr�r"rDr�)r�r�rQrBr6r�rrr�test_issue25862Ms


z!TextIOWrapperTest.test_issue25862N)Trrrr�r�r�r�r�r�r�r�rr�unittest�skipIfr�r`�	utf8_moderrr�rrrrr/r6r:rr�r�rMrIrUrZr[r�rdrgrhrjrnrrrrarbrdrurwrzr{r|r~r�r�r�r��
no_tracingr�rQr�r�rRr�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rrrrr��	s�	

		*/

	



 
(	
$r�cs,eZdZdZ�fdd�Z�fdd�Z�ZS)r�zOA BytesIO object whose read method returns memoryviews
       rather than bytescstt��|��Sr3)r�rXr~�r1Zlen_rYrrr~]szMemviewBytesIO.read1cstt��|��Sr3)r�rXrQr�rYrrrQ`szMemviewBytesIO.read)rrrrJr~rQr\rrrYrr�Ysr�cCs:t�d�}t|�t|�|j}|�|d|��t|�S)z6Convert bytes-object *buf* to a non-trivial memoryviewr+N)r
r�itemsize�	frombytesr)rFZarr�idxrrrr�cs
r�c@s<eZdZeZdZdd�Zdd�Zdd�Zdd	�Zd
d�Z	dS)
�CTextIOWrapperTest�$LookupError: unknown encoding: asciicCsb|�d�}|�|d�}|�|�}|jt|j|dd�|�t|j�|j�|j�}|�tt	|�dS)Nr�rr�rx)
r�r�r�r�r�r2rQr�rr�r�rrrr9ps

z&CTextIOWrapperTest.test_initializationcCs�t�dtf��Zt�tjd�}|�|�}|j|dd�}|�d�||_	t
�|�}~t��Wd�n1sn0Y|�
|�|�|�tjd�� }|�|��d�Wd�n1s�0YdS)Nrr�r�r"Z456defr�s456def)rrrrr�r�r�r�r6r�r<r=rr>r$r�rQ)r1r[rrsr?r(rrrr@zs


&z*CTextIOWrapperTest.test_garbage_collectioncCsjtd�D]T}|�|��|���}|j|dd�}|�|��|���}|j|dd�}||_||_qt��dS)Nrr�r")r.r�rMr�Zbuddyrr)r1r+�b1�t1�b2�t2rrr�!test_rwpair_cleared_before_textio�sz4CTextIOWrapperTest.test_rwpair_cleared_before_textiocCsD|j|��dd�}|�t��|`Wd�n1s60YdSr})r�r�r�rr&r�rrr� test_del__CHUNK_SIZE_SystemError�sz3CTextIOWrapperTest.test_del__CHUNK_SIZE_SystemErrorcs�d�G�fdd�d|j�}|�}|j|dd�}|j�|�d�|�d�|�g|j�|�t��"|�d�d	�Wd�n1s�0Y|�d
g|j�|�d�|�d��|�d
dd
�g|j�dS)Nr�cseZdZ��fdd�Z�ZS)z<CTextIOWrapperTest.test_internal_buffer_size.<locals>.MockIOcst|��krt�t��|�Sr3)rr�rXr6rs)rZrWrrr6�szBCTextIOWrapperTest.test_internal_buffer_size.<locals>.MockIO.write)rrrr6r\r�rWrYr�MockIO�sr�r�r"rcrGr�rDrDZghir@r�)rMr�r&r6r�r.r�r�)r1r�rFrsrr�r�test_internal_buffer_size�s

0
z,CTextIOWrapperTest.test_internal_buffer_sizeN)
rrrrr�r9r@r�r�r�rrrrr�ls
r�c@seZdZeZdZdS)�PyTextIOWrapperTestr�N)rrrr�rr�rrrrr��sr�c@s4eZdZdd�Zdd�Zdd�Zdd�Zd	d
�ZdS)�IncrementalNewlineDecoderTestcs��fdd�}|dd�|dd�|dd�|dd�|dd�|dd�|dd�|dd��jt�jd	d
d����|dd
�|dd�|d	d
d
d�|dd
d
d�|dd�|dd�|dd�|dd�|dd
�|dd�|dd�|dd�|dd
�|dd�|dd
�dS)NcsJ���}���j|fi|��|���|����j|fi|��|�dSr3)r�r�r�r�)rr�rLr���decoderr1rr�
_check_decode�s
zPIncrementalNewlineDecoderTest.check_newline_decoding_utf8.<locals>._check_decodes袈u袈��r����rNT)r�r�rr0r�z
a�

z

s
as袈
rVs袈
)r��UnicodeDecodeErrorr�r�)r1r�r�rr�r�check_newline_decoding_utf8�s4



















z9IncrementalNewlineDecoderTest.check_newline_decoding_utf8csg�|dur*t�|������fdd�}nd���fdd�}|��jd�|d�|��jd�|d�|��jd�|d�|��jd�|d	�|��jd
�|d�|�d���d����d	}�dur�����|�}|���|�d	�|��jd�dS)
Ncs*��|�D]}����t|g���q
dSr3)r�r4r�r)r�r�r��encoderr�rr�_decode_bytewise�szNIncrementalNewlineDecoderTest.check_newline_decoding.<locals>._decode_bytewisecs|D]}����|��qdSr3)r4r�)r�r*)r�r�rrr��szabc

rz
abc)rr�zabc
rc)r#rr�rzabc

abcabc
abcabc)r��getincrementalencoderr��newlinesr�r�r�r�)r1r�r#r�r�rr�r�check_newline_decoding�s0
z4IncrementalNewlineDecoderTest.check_newline_decodingcCspd}|D].}|ot�|��}|j|dd�}|�||�qt�d��}|j|dd�}|�|�|�t|jd�dS)N)	Nr�r!r$r%r&r'r(r)T��	translater�r;)r��getincrementaldecoder�IncrementalNewlineDecoderr�r�r�r�r�)r1r,rKr�rrr�test_newline_decoders
z2IncrementalNewlineDecoderTest.test_newline_decodercs<�fdd�}�jddd�}||��jddd�}||�dS)NcsR��|jd���|�d�d���|jd���|�d�d���|jd�dS)Nuഀu਀)r�r�r�)�decr8rr�_checks
z@IncrementalNewlineDecoderTest.test_newline_bytes.<locals>._checkFr�T)r�)r1r�r�rr8r�test_newline_bytess
z0IncrementalNewlineDecoderTest.test_newline_bytescCs\dD]&}t�d��}|�||�}|�|�qt�d��}|j|dd�}|�|�d�d�dS)N)ror�rDrWr�rr�r�z

)r�r�r�r�r�r�)r1r�r�rrr�test_translate*sz,IncrementalNewlineDecoderTest.test_translateN)rrrr�r�r�r�r�rrrrr��s
*!
r�c@seZdZdS)�CIncrementalNewlineDecoderTestNrrrrrr�4sr�c@seZdZdS)�PyIncrementalNewlineDecoderTestNrrrrrr�7sr�c@s�eZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�Zdd�Zdd�Z
dd�Zdd�Zdd�Zdd�Zdd �Zd!d"�Ze�eed#�d$�d%d&��Zd'd(�Zd)d*�Zd+d,�Zd-d.�Zd/S)0�
MiscIOTestcCst�tj�dSr3r�r8rrrr�?szMiscIOTest.tearDowncCs||jjD]n}t|j|d�}|�||�|dvr2qqd|��vsF|dkrZ|�t|t�|�q|�d�s|�t||j	��qdS)N)r$�	open_code�errorr{ZSEEK_)
r�__all__r�r�lowerrJ�
issubclassrr�r�)r1r�rrrr�test___all__Bs
zMiscIOTest.test___all__cCs||jtjddd�}|�|jd�|��t�dtf��|�tjd�}Wd�n1sZ0Y|�|jtj�|�|j	jtj�|�|j	j
jtj�|�|jd�|�|j	jd�|�|j	j
jd�|��|�tjd�}|�|jd�|�|j	jd�|�|j	j
jd�|j|��dd	d
�}|�|jd�|�|j
jd�|�|j|���|�|j
j|���|��|��dS)Nr�rr�r�Ur�rEr�Fr1)r$rr�r�r�rnrr�r�r�r:r<)r1r(�grrr�test_attributesMs.,zMiscIOTest.test_attributescCsNt��\}}|�tj|�|�|d�}|�|j�tjdkrJ|�|���dS)Nr�win32)	r�r�r�rnr$r�r�rKr>)r1r r�r(rrr�test_open_pipe_with_appendis
z%MiscIOTest.test_open_pipe_with_appendcCsddiddiddd�ddd�ddd�ddidd	iddd�ddd�d	dd�dd
iddid
dd�d
dd�ddd�fD�]�}|jtjfi|��}|��|�t|j�|�t|j�|�t|j�|�t|j	�t
|d�r�|�t|jd�|�t|j�t
|d
��r|�t|j
d�|�t|j
�t
|d��r6|�t|j�t
|d��rV|�t|jtd��t
|d��rv|�t|jtd��|�t|j�|�t|j�|�t|jd�|�t|jd�|�t|j�|�t|j�|�t|jd|dv�r�dnd�|�t|jg�|�tt|�qpdS)Nr�r�r�rD�r�r�rWrr r�rErr�r~r�r�rHr�rrNr)r$rr�rnr�r�rfr<r��__iter__r^r�rQr~r�rHr�r�r�rrArBrIr6r�r�)r1rLr(rrr�test_io_after_closetsZ�


�zMiscIOTest.test_io_after_closecCsXGdd�dt�}|d�}|�d|�}||_||_t�|�}~~t��|�|�|�dS)Nc@seZdZdS)z*MiscIOTest.test_blockingioerror.<locals>.CNrrrrr�C�srrrD)	rjr�rr*r<r=rrr>)r1rr*rr?rrr�test_blockingioerror�s
zMiscIOTest.test_blockingioerrorcCsD|�|jtj�|�|jtj�|�|jtj�|�|jtj�dSr3)r�r�rc�ABCMetar�r�r�r8rrr�	test_abcs�szMiscIOTest.test_abcscCs<|jtjddd��H}|�||j�|�||j�|�||j�|�||j�Wd�n1s`0Y|�tjd��H}|�||j�|�||j�|�||j�|�||j�Wd�n1s�0Y|�tjd��H}|�||j�|�||j�|�||j�|�||j�Wd�n1�s.0YdS�Nr�rr�r�)	r$rr�r�r�r�ZassertNotIsInstancer�r�)r1Z	abcmoduler(rrr�_check_abc_inheritance�s,,z!MiscIOTest._check_abc_inheritancecCs|�|�dSr3)rr8rrr�test_abc_inheritance�szMiscIOTest.test_abc_inheritancecCs|�t�dSr3)rrr8rrr�test_abc_inheritance_official�sz(MiscIOTest.test_abc_inheritance_officialcOsht|i|��}t|�}|�t��}d}t��Wd�n1sB0Y|�|t|jj	d��dSr+)
r$r�ZassertWarnsrrrr�rj�warningr})r1r}rLr(r rmrrr�_check_warn_on_dealloc�s&z!MiscIOTest._check_warn_on_dealloccCs2|jtjddd�|�tjd�|�tjd�dSr)rrr�r8rrr�test_warn_on_dealloc�szMiscIOTest.test_warn_on_dealloccs�g��fdd�}|�|�t��\}}�||f7�|j|g|�Ri|��t��\}}�||f7�t�|��*t|g|�Rddi|��Wd�n1s�0YdS)NcsP�D]F}zt�|�WqtyH}z|jtjkr4�WYd}~qd}~00qdSr3)r�rnrm�errno�EBADF)rPr��fdsrr�cleanup_fds�sz9MiscIOTest._check_warn_on_dealloc_fd.<locals>.cleanup_fdsr2F)r�r�r�rrrur$)r1r}rLrr r�rrr�_check_warn_on_dealloc_fd�s
z$MiscIOTest._check_warn_on_dealloc_fdcCs&|jddd�|�d�|�d�dS)Nr�rr�r )rr8rrr�test_warn_on_dealloc_fd�s
z"MiscIOTest.test_warn_on_dealloc_fdcCs�ddiddiddd�ddiddiddd�ddidd	id	dd�f	D]^}ttjd
�D]J}|jtjfi|���"}|�ttj||�Wd�qR1s�0YqRq@dS)Nr�r�r�rrr r�rErrD)	r.�pickle�HIGHEST_PROTOCOLr$rr�r�r��dumps)r1rL�protocolr(rrr�
test_pickling�s�zMiscIOTest.test_picklingcCs|�d�dS)Ni@��_test_nonblock_pipe_writer8rrr�test_nonblock_pipe_write_bigbufsz*MiscIOTest.test_nonblock_pipe_write_bigbufcCs|�d�dS)Nr�r"r8rrr�!test_nonblock_pipe_write_smallbufsz,MiscIOTest.test_nonblock_pipe_write_smallbuf�set_blockingz(os.set_blocking() required for this testc
CsFg}g}t��\}}t�|d�t�|d�|j|dd|d�}|j|dd|d�}|���|��xdD]�}z<d}	t|	dd	g�|}
|�|
�|�|
�|	d
7}	qnWqd|j�y0}zp|�|j	dt
j�|�|j	d|j�|dd|j�|d<|�|�
��d
}
|�|
�|�|
�WYd}~qdd}~00qdz|��W�q�Wnl|j�y�}zP|�|j	dt
j�|�|j	d|j�|�|jd�|�|�
��WYd}~n
d}~00�q4|t|j
d�7}Wd�n1�s�0YWd�n1�s�0Yd�|�d�|�}}|�||�|�|j�|�|j�dS)NFr�T)r�r2r�r�)r��Ii�r��arDrWr�sBLOCKEDrN)r�r�r&r$rr4r6r�r�r}r�EAGAINrWrQrf�iterr�rJrl)r1r�sentZreceivedr r�ZrfZwfr'r+r�rrrrr#sH


"
(Pz$MiscIOTest._test_nonblock_pipe_writecCsF|�tjd��Wd�n1s$0Y|�t|jtjd�dS)Nr�r�)r$rr�r��FileExistsErrorr8rrr�test_create_failBszMiscIOTest.test_create_failcCsz|�tjd��}|�d�Wd�n1s.0Y|�tjd�� }|�d|���Wd�n1sl0YdS)N�xbrpr�r)r�rrr�test_create_writesHs(zMiscIOTest.test_create_writescCs|�t|jtjd�dS)Nzrwax+r3r8rrr�test_open_allargsOszMiscIOTest.test_open_allargscCsn|jj}t}d}t�d|�d|�d|�d|�d|�d|�d|�d	|�d
��}tddd
|�}|�|jd|�dS)NzBoom, Shaka Laka, Boom!z)
            import sys
            from zC import open, TextIOWrapper

            try:
                open(z, encoding=z�)
            except LookupError:
                pass
            else:
                sys.exit(21)

            try:
                open(z	, errors=z})
            except LookupError:
                pass
            else:
                sys.exit(22)

            fp = open(za, "rb")
            with fp:
                try:
                    TextIOWrapper(fp, encoding=z�)
                except LookupError:
                    pass
                else:
                    sys.exit(23)

                try:
                    TextIOWrapper(fp, errors=z�)
                except LookupError:
                    pass
                else:
                    sys.exit(24)

            sys.exit(10)
        z-X�devr�r�)rrr%�textwrap�dedentrr�r�)r1�modr�rwr��procrrr�test_check_encoding_errorsSs,��������
$z%MiscIOTest.test_check_encoding_errorsN)rrrr�rrrr
rrrrrrrrrr!r$r%r�Z
skipUnlessr^r�r#r.r0r1r7rrrrr�=s2/
�
2r�c@s0eZdZeZdd�Zdd�Zdd�Zdd�Zd	S)
�CMiscIOTestcCs6Gdd�d|jj�}|�}td�}|�t|j|�dS)Nc@seZdZddd�ZdS)z<CMiscIOTest.test_readinto_buffer_overflow.<locals>.BadReaderr�cSsddS)Nr�i@BrrPrrrrQ�szACMiscIOTest.test_readinto_buffer_overflow.<locals>.BadReader.readN)r�rRrrrr�	BadReader�sr9rW)rr�r�r�r�rH)r1r9r�rrrr�test_readinto_buffer_overflow�sz)CMiscIOTest.test_readinto_buffer_overflowcCs\d�t��}td|�\}}|j��}|jdkrHd�t��}|�||�n|�|�d��dS)Na�if 1:
            import sys
            import time
            import threading
            from test.support import SuppressCrashReport

            file = sys.{stream_name}

            def run():
                while True:
                    file.write('.')
                    file.flush()

            crash = SuppressCrashReport()
            crash.__enter__()
            # don't call __exit__(): the crash occurs at Python shutdown

            thread = threading.Thread(target=run)
            thread.daemon = True
            thread.start()

            time.sleep(0.5)
            file.write('!')
            file.flush()
            r�rz�Fatal Python error: _enter_buffered_busy: could not acquire lock for <(_io\.)?BufferedWriter name='<{stream_name}>'> at interpreter shutdown, possibly due to daemon threadsz.!)	�
format_map�localsr	r�r�r�r�rKr�)r1Zstream_namer�rtrar��patternrrr�&check_daemon_threads_shutdown_deadlock�s�

�z2CMiscIOTest.check_daemon_threads_shutdown_deadlockcCs|�d�dS)N�stdout�r>r8rrr�,test_daemon_threads_shutdown_stdout_deadlock�sz8CMiscIOTest.test_daemon_threads_shutdown_stdout_deadlockcCs|�d�dS)N�stderrr@r8rrr�,test_daemon_threads_shutdown_stderr_deadlock�sz8CMiscIOTest.test_daemon_threads_shutdown_stderr_deadlockN)rrrrr:r>rArCrrrrr8�s
	)r8c@seZdZeZdS)�PyMiscIOTestN)rrrr�rrrrrrD�srD�ntz%POSIX signals required for this test.c@s�eZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	e
jdd��Zdd�Z
dd�Zdd�Zdd�Zdd�Zdd�Zdd�Zdd �Zd!S)"�SignalsTestcCst�tj|j�|_dSr3)�signal�SIGALRM�alarm_interrupt�oldalrmr8rrrr��szSignalsTest.setUpcCst�tj|j�dSr3)rGrHrJr8rrrr��szSignalsTest.tearDowncCsdddSrCr)r1�sig�framerrrrI�szSignalsTest.alarm_interruptc
s�t��g���fdd�}tj|d�}d|_t��\�}d|d<|tjt|�d}�z(|j	j
|fi|��}ttd�r�t�
tjtjg�|��t�
tjtjg�n|��t�d�z&|�t|j|�Wt�d	�|��nt�d	�|��0��t��d��|��|d	d�|dd
�g�Wt�|�t���z|��Wn6t�y~}	z|	jtjk�rj�WYd}	~	n
d}	~	00nZt�|�t���z|��Wn6t�y�}	z|	jtjk�rĂWYd}	~	n
d}	~	000dS)z�Check that a partial write, when it gets interrupted, properly
        invokes the signal handler, and bubbles up the exception raised
        in the latter.cst��d�}��|�dSrj)r�rQr4)r��r �read_resultsrrr��sz2SignalsTest.check_interrupted_write.<locals>._readrTFr2rD�pthread_sigmaskrrWN)rrr`r��daemonr�r��
PIPE_MAX_SIZErrr$r^rGrO�	SIG_BLOCKrHr��SIG_UNBLOCK�alarmr�rr6r�r4rQr�rnrmrr)
r1�itemr�
fdopen_kwargsr�rsr��
large_data�wiorrrMr�check_interrupted_write�sL



�

"

�

z#SignalsTest.check_interrupted_writecCs|jddddd�dS)Nr�r�rr�rYr8rrr�!test_interrupted_write_unbufferedsz-SignalsTest.test_interrupted_write_unbufferedcCs|jdddd�dS�Nr�r��r�rZr8rrr�test_interrupted_write_bufferedsz+SignalsTest.test_interrupted_write_bufferedcCs|jddddd�dS)N�xyr�r�r��r�r#rZr8rrr�test_interrupted_write_text sz'SignalsTest.test_interrupted_write_textc		s��fdd�}t�tj|�t��\}}|jj|fi|���z�t�d�|�tt	f��F}t
d�D]}�������q`t�
|t��d�qXWd�n1s�0Y|j}t|t	�r�|�t|��d�t|��Wt�d����t�|�nt�d����t�|�0dS)Ncs����dddSrC)r6)r}�rrXrr�on_alarm%s
z3SignalsTest.check_reentrant_write.<locals>.on_alarmrDr�zreentrant callr)rGrHr�r�rr$rTr�rr�r.r6rfrQrrkr�rJrjr�rn)	r1rrVrcr r�rmr+r�rrbr�check_reentrant_write#s(


4

�
z!SignalsTest.check_reentrant_writecCs|jddd�dSr\�rdr8rrr�test_reentrant_write_buffered?sz)SignalsTest.test_reentrant_write_bufferedcCs|jdddd�dS)Nr_r�r�r`rer8rrr�test_reentrant_write_textBsz%SignalsTest.test_reentrant_write_textc	s�t��\}�d|d<�fdd�}t�tj|�zj|jj|fi|��}t��d�t�d�|�||�	d��d�Wt�d	�|�
�t�
��t�
|�n(t�d	�|�
�t�
��t�
|�0d
S)z�Check that a buffered read, when it gets interrupted (either
        returning a partial result or EINTR), properly invokes the signal
        handler and retries if the latter returned successfully.Fr2cst��d�dS)Nsbar)r�r6�rKrL�r�rr�
alarm_handlerKsz?SignalsTest.check_interrupted_read_retry.<locals>.alarm_handlerr�rDr�ZfoobarrN)r�r�rGrHrr$r6rTr�rQrn)r1r�rVr rjZriorrir�check_interrupted_read_retryEs"


�

z(SignalsTest.check_interrupted_read_retrycCs|jdd�dd�dS)NcSs
|�d�S)Nr�)r�r�rrrrI^rNzBSignalsTest.test_interrupted_read_retry_buffered.<locals>.<lambda>r�r]�rkr8rrr�$test_interrupted_read_retry_buffered]s
�z0SignalsTest.test_interrupted_read_retry_bufferedcCs|jdd�dd�dS)NcSs|Sr3rr�rrrrIbrNz>SignalsTest.test_interrupted_read_retry_text.<locals>.<lambda>r r]rlr8rrr� test_interrupted_read_retry_textas
�z,SignalsTest.test_interrupted_read_retry_textcs�t�d��tj}t��\�}d|d<g�d�d������fdd�}tj|d��d�_�fd	d
�}�fdd��||}t�tj	|�z�|j
j|fi|��}t�d
�|�
|�}	|�||	�|��d����|���|�|tdd��D���Wt�d�d�t�|�t���z|��Wn6t�yX}
z|
jtjk�rD�WYd}
~
n
d}
~
00nht�d�d�t�|�t���z|��Wn6t�y�}
z|
jtjk�r��WYd}
~
n
d}
~
000dS)z�Check that a buffered write, when it gets interrupted (either
        returning a partial result or EINTR), properly invokes the signal
        handler and retries if the latter returned successfully.�selectFr2Nc
sjz<�s:����gggd�dvrt��d�}��|�qqWn(tyd}z|�WYd}~n
d}~00dS)Ng�?rr�)ror�rQr4�
BaseException)r�r�)r�r rNro�write_finishedrrr�wsz8SignalsTest.check_interrupted_write_retry.<locals>._readrTcst�tj��t�d�dSrj)rGrHrTrh)�alarm2rr�alarm1�sz9SignalsTest.check_interrupted_write_retry.<locals>.alarm1cs���dSr3)r�rh)rsrrrr�sz9SignalsTest.check_interrupted_write_retry.<locals>.alarm2rDcss|]}t|�VqdSr3)rrrrr�	<genexpr>�rNz<SignalsTest.check_interrupted_write_retry.<locals>.<genexpr>r)r�
import_modulerQr�r�r`r�rPrGrHrr$rTr6r�rfr�r>�sumrnrmrr)r1rUrVr'r�r�rsrWrXrXrr)rrr�r rNrorsrqr�check_interrupted_write_retryesT
	





�


z)SignalsTest.check_interrupted_write_retrycCs|jddd�dS)Nr�r�r]�rwr8rrr�%test_interrupted_write_retry_buffered�sz1SignalsTest.test_interrupted_write_retry_bufferedcCs|jdddd�dS)Nr�r�r�r`rxr8rrr�!test_interrupted_write_retry_text�sz-SignalsTest.test_interrupted_write_retry_textN)rrrr�r�rIrYr[r^rarr�rdrfrgrkrmrnrwryrzrrrrrF�s"M
DrFc@seZdZeZdS)�CSignalsTestN)rrrrrrrrr{�sr{c@seZdZeZdZdZdS)�
PySignalsTestN)rrrr�rrfrgrrrrr|�sr|c
s tttttttttt	t
ttt
ttttttf}ttttttttf}tjdg}dd�|D�}dd�|D�}t��|��fdd�|D��|��fdd�|D��t j!|d<|D]Z}|j"�#d	�r�|�$�D]\}}t%|||�q�q�|j"�#d
�r�|�$�D]\}}t%|||�q�q�t&�'dd�|D��}	|	S)
Nr�cSsi|]}|tt|��qSr)r�r�rr�rrr�
<dictcomp>�rNzload_tests.<locals>.<dictcomp>cSsi|]}|tt|��qSr)r�r�r}rrrr~�rNc3s"|]}|j�d|jfVqdS)rN�rr�Zglobsrrrt�rNzload_tests.<locals>.<genexpr>c3s"|]}|j�d|jfVqdS)�PyNrrr�rrrt�rNr$rr�cSsg|]}t�|��qSr)r�Z	makeSuite)rr�rrrr �rNzload_tests.<locals>.<listcomp>)(r�r�r�r2r>rurvr�r�r�r�r�r�r�r�r�r8rDr{r|rMrUrqrir�rwr*r_rr��globalsrr��OpenWrapperrr�r9�setattrr�Z	TestSuite)
r}r�ZmocksZall_membersZc_io_nsZpy_io_nsr�r�rZsuiterr�r�
load_tests�s>��
r��__main__)srJrcr
rr
r�rr#rGr�r3r`rdr�r�r<�collectionsrr�	itertoolsrrr�rZtest.support.script_helperrrr	Ztest.supportr
rr�rZ_pyior�r�ImportErrorrZ	Structurerr^r`�dev_moder�r)r*r�rKrLrMrSrTrUr]r^r_rgrhrirorprqr�rurvrwr~r�r�r�r�ZTestCaser�r�r�r�r�r�r�r�r2r>r?rurvrwr�r�r�r�r�r�r��registerr�r�r�r�r�r�r�r�r�r�r�r8rDr�r�rFr{r|r�r�mainrrrr�<module>s�8
	
0:.*3(0QjW+i
	NuF<o	%


Sindbad File Manager Version 1.0, Coded By Sindbad EG ~ The Terrorists