Uname:Linux ip-10-0-5-176 6.8.0-1057-aws #60~22.04.1-Ubuntu SMP Wed May 27 08:16:59 UTC 2026 x86_64

403WebShell
403Webshell
Server IP : 3.111.61.48  /  Your IP : 216.73.216.67
Web Server : Apache
System : Linux ip-10-0-5-176 6.8.0-1057-aws #60~22.04.1-Ubuntu SMP Wed May 27 08:16:59 UTC 2026 x86_64
User : ubuntu ( 1000)
PHP Version : 8.2.31
Disable Function : exec,passthru,shell_exec,system
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : OFF  |  Sudo : ON  |  Pkexec : ON
Directory :  /usr/lib/python3.10/test/__pycache__/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /usr/lib/python3.10/test/__pycache__/test_io.cpython-310.pyc
o

�9j���@s�dZddlZddlZddlZddlZddlZddlZddlZddlZddl	Z	ddl
Z
ddlZddlZddl
Z
ddlZddlZddlmZmZddlmZmZddlmZddlmZmZmZddlmZddlmZdd	lmZdd
lm Z ddlm!Z!ddl"m#Z#ddl$Z$ddl%Z%ddl&Z'zddl(Z(Wn
e)y�d
d�Z*Ynwdd�Z*Gdd�de(j+�Z,e-e	d�p�e	j.j/Z0dd�Z1Gdd�d�Z2Gdd�de2e%j3�Z4Gdd�de2e'j3�Z5Gdd�de2�Z6Gdd�de6e%j3�Z7Gdd �d e6e'j3�Z8Gd!d"�d"e6�Z9Gd#d$�d$e9e%j3�Z:Gd%d&�d&e9e'j3�Z;Gd'd(�d(e6�Z<Gd)d*�d*e<e%j3�Z=Gd+d,�d,e<e'j3�Z>Gd-d.�d.e6�Z?Gd/d0�d0e?e%j3�Z@Gd1d2�d2e?e'j3�ZAGd3d4�d4�ZBGd5d6�d6eBe%jC�ZDGd7d8�d8eBe'jC�ZEGd9d:�d:�ZFGd;d<�d<eFe%jC�ZGGd=d>�d>eFe'jC�ZHGd?d@�d@�ZIGdAdB�dBeIe%j3�ZJGdCdD�dDeIe'j3�ZKGdEdF�dFe
jL�ZMGdGdH�dHeM�ZNGdIdJ�dJeM�ZOejPGdKdL�dLe
jL��ZQGdMdN�dN�ZRGdOdP�dP�ZSGdQdR�dRe
jLeR�ZTGdSdT�dTeTeS�ZUGdUdV�dVeT�ZVGdWdX�dXe
jLeR�ZWGdYdZ�dZeWeS�ZXGd[d\�d\eW�ZYGd]d^�d^e
jL�ZZGd_d`�d`eZ�Z[Gdadb�dbeZ�Z\Gdcdd�ddeTeW�Z]Gdedf�dfe]eS�Z^Gdgdh�dhe]�Z_Gdidj�dje$j`�Zadkdl�ZbGdmdn�dne
jL�ZcGdodp�dpe
jL�ZdGdqdr�dre%jC�Zedsdt�ZfGdudv�dved�ZgGdwdx�dxed�ZhGdydz�dze
jL�ZiGd{d|�d|ei�ZjGd}d~�d~ei�ZkGdd��d�e
jL�ZlGd�d��d�el�ZmGd�d��d�el�Zne
�oejpd�kd��Gd�d��d�e
jL��ZqGd�d��d�eq�ZrGd�d��d�eq�Zsd�d��Zteud�k�r�e
�v�dSdS)�zUnit tests for the io module.�N)�deque�UserList)�cycle�count)�support)�assert_python_ok�assert_python_failure�run_python_until_end)�
import_helper)�	os_helper)�threading_helper)�warnings_helper)�skip_if_sanitizer)�FakePathcOst�dt|i|���S)N�b)�array�bytes)�pos�kw�r�#/usr/lib/python3.10/test/test_io.py�	byteslike8�rcOs>t|i|��}t�}t�|t|��|t|��d�dd�<|S)z?Create a bytes-like object having no string or sequence methods�BN)r�EmptyStruct�ctypes�resize�len�
memoryview�cast)rr�data�objrrrr;s
c@�eZdZdS)rN��__name__�
__module__�__qualname__rrrrrB�r�gettotalrefcountcCs8ttddd��}|jWd�S1swYdS)z(Get the default TextIOWrapper chunk size�r�latin-1��encodingN)�open�__file__�_CHUNK_SIZE��frrr�_default_chunk_sizeJs$�r2c@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)�self�
read_stackrrr�__init__Ts

zMockRawIOWithoutRead.__init__cCs|j�t|��t|�S�N)r7�appendrr�r:rrrr�writeZszMockRawIOWithoutRead.writecC�dS�NTr�r:rrr�writable^�zMockRawIOWithoutRead.writablecCrA�N�*rrCrrr�filenoarEzMockRawIOWithoutRead.filenocCrArBrrCrrr�readabledrEzMockRawIOWithoutRead.readablecCrArBrrCrrr�seekablegrEzMockRawIOWithoutRead.seekablecCrAr4r�r:r�whencerrr�seekjrEzMockRawIOWithoutRead.seekcCrAr4rrCrrr�tellmrEzMockRawIOWithoutRead.tellcCs�|jd7_t|�}z|jd}Wnty#|jd7_YdSw|dur.|jd=dSt|�}t|�|krD|jd=||d|�<|S|d|�|dd�<||d�|jd<|S�N�r)r8rr6�
IndexErrorr9)r:�buf�max_lenr �nrrr�readintops&�zMockRawIOWithoutRead.readintoNcCs|Sr=r)r:rrrr�truncate�rEzMockRawIOWithoutRead.truncate)rr=)r$r%r&�__doc__r<r@rDrHrIrJrMrNrUrVrrrrr3Ps
r3c@r")�CMockRawIOWithoutReadNr#rrrrrX�r'rXc@r")�PyMockRawIOWithoutReadNr#rrrrrY�r'rYc@seZdZddd�ZdS)�	MockRawIONcCs8|jd7_z|j�d�WS|jd7_YdS)NrPr�)r8r6�popr9�r:rTrrr�read�szMockRawIO.readr=�r$r%r&r^rrrrrZ�srZc@r")�
CMockRawIONr#rrrrr`�r'r`c@r")�PyMockRawIONr#rrrrra�r'racsFeZdZ�fdd�Zd�fdd�	Zdd�Zdd	�Z�fd
d�Z�ZS)
�MisbehavedRawIOc�t��|�dS�N�)�superr@r?��	__class__rrr@��zMisbehavedRawIO.writeNcrcrd)rfr^r]rgrrr^�rizMisbehavedRawIO.readcCrA)Ni����rrKrrrrM�rEzMisbehavedRawIO.seekcCrA)Ni8���rrCrrrrN�rEzMisbehavedRawIO.tellcst��|�t|�dS)N�)rfrUr)r:rRrgrrrU�szMisbehavedRawIO.readintor=)	r$r%r&r@r^rMrNrU�
__classcell__rrrgrrb�srbc@r")�CMisbehavedRawIONr#rrrrrl�r'rlc@r")�PyMisbehavedRawIONr#rrrrrm�r'rmcs$eZdZ�fdd�Zdd�Z�ZS)�SlowFlushRawIOcst���t��|_dSr=)rfr<�	threading�Event�in_flushrCrgrrr<��
zSlowFlushRawIO.__init__cCs|j��t�d�dS)Ng�?)rq�set�time�sleeprCrrr�flush�rrzSlowFlushRawIO.flush)r$r%r&r<rvrkrrrgrrn�srnc@r")�CSlowFlushRawIONr#rrrrrw�r'rwc@r")�PySlowFlushRawIONr#rrrrrx�r'rxc@seZdZdZdd�ZdS)�CloseFailureIOrcCs|jsd|_t�dS�NrP��closed�OSErrorrCrrr�close�s�zCloseFailureIO.closeN)r$r%r&r|r~rrrrry�sryc@r")�CCloseFailureIONr#rrrrr�r'rc@r")�PyCloseFailureIONr#rrrrr��r'r�cs6eZdZ�fdd�Zd�fdd�	Z�fdd�Z�ZS)	�
MockFileIOcsg|_t��|�dSr=)�read_historyrfr<�r:r rgrrr<�szMockFileIO.__init__Ncs2t��|�}|j�|durd�|St|��|Sr=)rfr^r�r>r)r:rT�resrgrrr^�s

�zMockFileIO.readcst��|�}|j�|�|Sr=)rfrUr�r>)r:rr�rgrrrU�szMockFileIO.readintor=)r$r%r&r<r^rUrkrrrgrr��sr�c@r")�CMockFileIONr#rrrrr��r'r�c@r")�PyMockFileIONr#rrrrr��r'r�c@s,eZdZdd�Zdd�Zdd�Zdd�Zd	S)
�MockUnseekableIOcCrA�NFrrCrrrrJ�rEzMockUnseekableIO.seekablecG�
|�d���Nznot seekable��UnsupportedOperation�r:�argsrrrrM��
zMockUnseekableIO.seekcGr�r�r�r�rrrrN�r�zMockUnseekableIO.tellcGr�r�r�r�rrrrV�r�zMockUnseekableIO.truncateN)r$r%r&rJrMrNrVrrrrr��s
r�c@�eZdZejZdS)�CMockUnseekableION)r$r%r&�ior�rrrrr���
r�c@r�)�PyMockUnseekableION)r$r%r&�pyior�rrrrr��r�r�c@sNeZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zddd
�Zdd�Z	dd�Z
dS)�MockNonBlockWriterIOcCsg|_d|_dSr=)r7�
_blocker_charrCrrrr<s
zMockNonBlockWriterIO.__init__cCsd�|j�}g|jdd�<|S�Nr[)�joinr7)r:�srrr�pop_writtensz MockNonBlockWriterIO.pop_writtencCs
||_dS)z'Block when a given char is encountered.N)r�)r:�charrrr�block_on
s
zMockNonBlockWriterIO.block_oncCrArBrrCrrrrIrEzMockNonBlockWriterIO.readablecCrArBrrCrrrrJrEzMockNonBlockWriterIO.seekablercCrAr4rrKrrrrMszMockNonBlockWriterIO.seekcCrArBrrCrrrrDrEzMockNonBlockWriterIO.writablecCstt|�}d}|jr0z|�|j�}Wn	tyYnw|dkr+|j�|d|��|Sd|_dS|j�|�t|�S)N���r)rr��index�
ValueErrorr7r>r)r:rrTrrrr@s�zMockNonBlockWriterIO.writeN�r)r$r%r&r<r�r�rIrJrMrDr@rrrrr�s
r�c@r�)�CMockNonBlockWriterION)r$r%r&r��BlockingIOErrorrrrrr�2r�r�c@r�)�PyMockNonBlockWriterION)r$r%r&r�r�rrrrr�5r�r�c@s�eZdZdd�Zdd�Zdd�Zdddd	�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`�Z2dadb�Z3dcS)e�IOTestcC�t�tj�dSr=�r�unlink�TESTFNrCrrr�setUp;rizIOTest.setUpcCr�r=r�rCrrr�tearDown>rizIOTest.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.rjrsHello.�r�rPs	 world


�	s	*********�hre�
��)�assertEqualr@rVrNrM�	bytearray�assertRaises�	TypeError)r:r1�bufferrrr�	write_opsAs(

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�dSdS)Nrjshellos worlre�d
r��hello world
rPr[�xi����r�sworld�
r�sworld
)r^r�rrUrr�rrMrNr�r��	readinto1)r:r1�bufferedr rrr�read_opsYs@



�zIOTest.read_opslc	Csh|��sJ�|��sJ�z
|�|�|j�|j�Wnttfy)|�d�Ynw|�|��|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�rPrerr�)rIrDr�rM�LARGE�
OverflowErrorr��skipTestrNr@rVr^�r:r1rrr�large_file_ops|s&�zIOTest.large_file_opscCs|j}|jtjddd��}|�||j�|�||j�Wd�n1s%wY|�tjd��}|�||j�|�||j�Wd�n1sJwY|jtjddd��}|�||j�|�||j�Wd�n1sqwY|jtjddd��}|�||jd�|�||jd	g�Wd�n1s�wY|�tjd��}|�||jd�|�||jd	g�Wd�n1s�wY|jtjd
dd��.}|�||jd�|�||jdg�|�||j	d
|j
�|�||j	d|j�Wd�dS1�swYdS)N�w�utf-8r+�wbr��	buffering�rbsblahsblah
r)�blahzblah
rPr�)r�r-rr�r�r^�readliner@�
writelinesrM�SEEK_CUR�SEEK_END)r:�exc�fprrr�test_invalid_operations�s6�����$�zIOTest.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�r�d}nt|�j�j	f�r�d}n��
d�d|vr�|��n��t
|j�|
r�|�d�|��n��t
|jd���t
|j�|r�|�|�n��t
|j|�tj�d�r�|
||fvr�	Wd�Wd�qTd|v}��|��|�|�r|��|�d�n��t
|j���t
|jd�|�r!|�r!|��|�d�n��t
|j���t
|jd�Wd�n	1�s;wYWd�n	1�sKwYqTdS)Ncs"t��\}}t�|���|d�S)Nr))�os�piper~�FileIO)r)r�rCrr�pipe_reader�s
z3IOTest.test_optional_abilities.<locals>.pipe_readercsNt��\}}��tj|�tjtj|dfd�}|����|j���	|d�S)N�d��targetr�r�)
r�r��
addCleanupr~ro�Threadr^�startr�r�)r)r��threadrCrr�pipe_writer�sz3IOTest.test_optional_abilities.<locals>.pipe_writerc�������Sr=)�BufferedReaderr�rrCrr�buffered_reader��z7IOTest.test_optional_abilities.<locals>.buffered_readercr�r=)�BufferedWriterr�rrCrr�buffered_writer�r�z7IOTest.test_optional_abilities.<locals>.buffered_writercr�r=)�BufferedRandom�BytesIOrrCrr�buffered_random�r�z7IOTest.test_optional_abilities.<locals>.buffered_randomcs���������Sr=)�BufferedRWPairr�rrCrr�buffered_rw_pair�s
�z8IOTest.test_optional_abilities.<locals>.buffered_rw_pairc�$G�fdd�d�j�}��|�d�S)Nc�eZdZ�jjZ�jjZdS)zMIOTest.test_optional_abilities.<locals>.text_reader.<locals>.UnseekableReaderN)r$r%r&�BufferedIOBaserDr@rrCrr�UnseekableReader��r��ascii�r��
TextIOWrapper)r�rCrr�text_reader��z3IOTest.test_optional_abilities.<locals>.text_readercr�)Ncr�)zMIOTest.test_optional_abilities.<locals>.text_writer.<locals>.UnseekableWriterN)r$r%r&r�rIr^rrCrr�UnseekableWriter�r�r�r�r�)r�rCrr�text_writer�r�z3IOTest.test_optional_abilities.<locals>.text_writer�fr�fwr)r��rws�rw�3�3zUnknown base classr1rP�winr�r)r��StringIO�subTestr�rIrD�
isinstance�
TextIOBaser��	RawIOBase�failrHr�r}r^r@�sys�platform�
startswithrJrNrMrV)r:r�r�r�r�r�r�r�r��tests�test�	abilitiesr!rIrDr rJrrCr�test_optional_abilities�sv	�



��"�����zIOTest.test_optional_abilitiescCstd}|jt|j|ddd�t|d�}t���t�dt�|jt|j|ddd�Wd�dS1s3wYdS)Nzfoobarr�r�r+r��ignore)r�r�r-r�warnings�catch_warnings�simplefilter�DeprecationWarning)r:�fn_with_NUL�bytes_fnrrr�test_open_handles_NUL_charss

"�z"IOTest.test_open_handles_NUL_charscCs�|jtjddd��%}|�|��d�|�|��d�|�|��d�|�|�Wd�n1s1wY|jtjddd��&}|�|��d�|�|��d�|�|��d�|�|�Wd�dS1shwYdS)Nr�rr�FTr��	r-rr�r�rIrDrJr�r�r�rrr�test_raw_file_ios�"�zIOTest.test_raw_file_iocCs�|�tjd��%}|�|��d�|�|��d�|�|��d�|�|�Wd�n1s/wY|�tjd��'}|�|��d�|�|��d�|�|��d�|�|d�Wd�dS1sewYdS)Nr�FTr�rr�rrr�test_buffered_file_io&s�"�zIOTest.test_buffered_file_iocCs&|�tjd��
}|�d�Wd�n1swY|�tjd��D}|�|��d�|�|�d�d�|�|�d�d�|�|�d	�d
�|�|��d�|�|�d�d�|�t|jd
�Wd�n1sjwY|jtjddd��}|�t|jd
�Wd�dS1s�wYdS)Nr�s"abc
def
xyzzy
foobar
another liner��abc
r��def
re�xy�szzy
sfoobar
sanother lineg333333@r)r�r+)r-rr�r@r�r�r�r�r�rrr�
test_readline2s��"�zIOTest.test_readlinecCs*Gdd�d|j�}|�ttft|��dS)Nc@�eZdZdd�ZdS)z+IOTest.test_readline_nonsizeable.<locals>.RcS�dSr=rrCrrrr�DrEz4IOTest.test_readline_nonsizeable.<locals>.R.readlineN)r$r%r&r�rrrr�RC�r)�IOBaser�r��
StopIteration�next�r:rrrr�test_readline_nonsizeable@sz IOTest.test_readline_nonsizeablecCs(Gdd�d|j�}|�t|�jd�dS)Nc@r)z'IOTest.test_next_nonsizeable.<locals>.RcSrr=rrCrrr�__next__LrEz0IOTest.test_next_nonsizeable.<locals>.R.__next__N)r$r%r&r%rrrrrKrrrP)r r�r��	readlinesr#rrr�test_next_nonsizeableHszIOTest.test_next_nonsizeablecCs@|��}|�|�|��}|�|d�|�|�}|�|d�dS)Nr�T)r�r��getvaluer�r�)r:r1r rrr�test_raw_bytes_ioPs

zIOTest.test_raw_bytes_iocCs�tjdd�dkstjdkrt�dd|j�|�tjdd��
}|�|�Wd�n1s/wY|�tjd��}|�|�Wd�dS1sLwYdS)Nr�r��darwin�	largefilez-test requires %s bytes and a long time to run�w+br)	rrr�requiresr�r-rr�r�r�rrr�test_large_file_opsXs��"�zIOTest.test_large_file_opsc	Cs�dD]^}d}|�tjd|��
}|�d�Wd�n1swY|�|jd�d}z|�tjd|��}ddWd�n1sDwYWntyZ|�|jd�Yqw|�d�qdS)N)rr�r�r�TrPrz1/0 didn't raise an exception)r-rr�r@r�r|�ZeroDivisionErrorr)r:�bufsizer1rrr�test_with_openes"�
����zIOTest.test_with_opencCs|�tjd��
}|�d�Wd�n1swY|jtjddd��}|�|��d�Wd�n1s8wY|�tjd��}|�|��d�Wd�n1sWwY|jtjddd	��}|�|��d�Wd�dS1sywYdS)
Nr�r��abrr�r��ar�r+)r-rr�r@r�rN�
assertGreaterr�rrr�test_append_mode_tellus���"�zIOTest.test_append_mode_tellc	s�g�G�fdd�d|j�}t�dtf��H|tjd�}|�d�~t��|�	�gd��|�
tjd��}|�	|��d�Wd�n1sGwYWd�dSWd�dS1s_wYdS)Nc�:eZdZ��fdd�Z��fdd�Z��fdd�Z�ZS)z(IOTest.test_destructor.<locals>.MyFileIOc�6��d�zt�j}Wn
tyYdSw|�dSrz�r>rf�__del__�AttributeErrorr��rh�recordrrr9��
�
z0IOTest.test_destructor.<locals>.MyFileIO.__del__c���d�t���dSrd�r>rfr~rCr;rrr~�rrz.IOTest.test_destructor.<locals>.MyFileIO.closecr>�Nr��r>rfrvrCr;rrrv�rrz.IOTest.test_destructor.<locals>.MyFileIO.flush�r$r%r&r9r~rvrkr�r<rgr�MyFileIO��rD�r�r��rPrer�r�)r�r
�check_warnings�ResourceWarningrr�r@r�
gc_collectr�r-r^)r:rDr1rrCr�test_destructors
��"�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)NrPrer�)�on_del�on_close�on_flushrCrrrr<�s
z4IOTest._check_base_destructor.<locals>.MyIO.__init__cs8��|j�zt�j}Wn
tyYdSw|�dSr=)r>rLrfr9r:r�r;rrr9�s�
z3IOTest._check_base_destructor.<locals>.MyIO.__del__c���|j�t���dSr=)r>rMrfr~rCr;rrr~��z1IOTest._check_base_destructor.<locals>.MyIO.closecrOr=)r>rNrfrvrCr;rrrv�rPz1IOTest._check_base_destructor.<locals>.MyIO.flush)r$r%r&r<r9r~rvrkrrCrgr�MyIO�s
rQrG)rrJr�)r:�baserQr1rrCr�_check_base_destructor�szIOTest._check_base_destructorcC�|�|j�dSr=)rSr rCrrr�test_IOBase_destructor�rizIOTest.test_IOBase_destructorcCrTr=)rSrrCrrr�test_RawIOBase_destructor�riz IOTest.test_RawIOBase_destructorcCrTr=)rSr�rCrrr�test_BufferedIOBase_destructor�riz%IOTest.test_BufferedIOBase_destructorcCrTr=)rSrrCrrr�test_TextIOBase_destructor�riz!IOTest.test_TextIOBase_destructorcCs||�tjd��
}|�d�Wd�n1swY|�tjd��}|�|��d�Wd�dS1s7wYdS)Nr�r�r��r-rr�r@r�r^r�rrr�test_close_flushes�s�"�zIOTest.test_close_flushescs�t�dtd���t��������fdd�}|����|��tjd��|����	���|��
��	���|����	���	���dS)N�ir�csH|���|�����|��f�Wd�dS1swYdSr=)r�r@r�r0�r3rTr:rr�check�s"�z'IOTest.test_array_writes.<locals>.checkr�)r�ranger�tobytesr�r�rr�r�rZr�r�)r:r]rr\r�test_array_writes�szIOTest.test_array_writescC�|jt|jtjdddd�dS)Nr�r�F�r,�closefd�r�r�r-rr�rCrrr�test_closefd�s
�zIOTest.test_closefdcCs0|jtjddd��
}|�d�Wd�n1swY|jtjddd��+}|j|��dddd�}|�|��d�|�d�|��|�	t
|j�Wd�n1sUwY|�tjd	��-}|j|��d	dd
�}|�|��dd�d�|��|�	t
|jtd
��Wd�dS1s�wYdS)Nr�r�r+�egg
r)Frbrr��rcr�seggrP)
r-rr�r@rHr�r^rMr~r�r�rUr��r:r1�filerrr�test_read_closed�s �
�"�zIOTest.test_read_closedcCra)Nr)r�FrbrdrCrrr�test_no_closefd_with_filename�s
�z$IOTest.test_no_closefd_with_filenamecCs�|�tjd��
}|�d�Wd�n1swY|jtjddd��&}|�|jjjd�|j|��dddd�}|�|jjjd�Wd�dS1sNwYdS)	Nr�segg
r)r�r+TFrb)	r-rr�r@r�r��rawrcrHrhrrr�test_closefd_attr�s�"�zIOTest.test_closefd_attrcCs�t�dtf��!|�tjd�}|�d�||_t�	|�}~t
��Wd�n1s+wY|�|�|�|�
tjd��}|�|��d�Wd�dS1sRwYdS)NrFr�sabcxxxr�)r
rHrIr�rr�r@r1�weakref�refrrJ�assertIsNoner-r�r^)r:r1�wrrrr�test_garbage_collection�s


�"�zIOTest.test_garbage_collectioncCsd}tj�|�s|�d�|��tjdkr|�d�tjtj	kr%|�d�|j
|ddd��}|�t|j
�Wd�n1s?wY|�
|d��}|�t|j
�Wd�n1s\wY|�
|d	��}|�t|j
�Wd�dS1szwYdS)
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�maxsizer�real_max_memuse�_2Gr-r�r�r^)r:�zeror1rrr�test_unbounded_files 


��"�zIOTest.test_unbounded_filecsh|j|i|���g���fdd�}|�_|�t�j�|��j�|���|��d�dd��_dS)Ncs�jg�dd�<t��r=r{r�r|r1rr�	bad_flushsz4IOTest.check_flush_error_on_close.<locals>.bad_flushrcSrr=rrrrr�<lambda>!�z3IOTest.check_flush_error_on_close.<locals>.<lambda>)r-rvr�r}r~�
assertTruer|�assertFalse)r:r��kwargsr}rr|r�check_flush_error_on_closes
z!IOTest.check_flush_error_on_closecCs8|jtjddd�t�tjtjtjB�}|j|ddd�t�tjtjtjB�}|j|dddd�t�|�|�tjd�t�tjtjtjB�}|�|d�t�tjtjtjB�}|j|ddd�t�|�|jtjddd	�t�tjtjtjB�}|j|ddd	�t�tjtjtjB�}|j|dddd
�t�|�dS)Nr�rr�F)r�rcrgr�r�r+rb)r�rr�r�r-�O_WRONLY�O_CREATr~)r:�fdrrr�test_flush_error_on_close#s$

z IOTest.test_flush_error_on_closecCs<|jtjddd�}|��|��|��|�t|j�dS)Nr�rr�)r-rr�r~r�r�rvr�rrr�test_multi_close;s
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�efgNre�ab�cr��ef�gr[)r3r�r^�r:�rawiorrr�test_RawIOBase_readBs
zIOTest.test_RawIOBase_readcCs@|��|��|��|��|��f}|D]
}|�t|d��qdS)N�__dict__)r rrr�r�r��hasattr)r:r	r!rrr�test_types_have_dictOs��zIOTest.test_types_have_dictcs�|jtjddd��
}|�d�Wd�n1swYt�tjtj���fdd�}|jddd|d	��}|�|��d�Wd�dS1sIwYdS)
Nr�r�r+rfc��Sr=r)rt�flags�r�rr�opener^rEz"IOTest.test_opener.<locals>.opener�non-existentr))r,r�)r-rr�r@r��O_RDONLYr�r^)r:r1r�rr�r�test_openerZs�"�zIOTest.test_openercC�Vdd�}|�t��}tdd|d�Wd�n1swY|�t|j�d�dS)NcSrA�Nr�r��fnamer�rrr�	badopenererEz4IOTest.test_bad_opener_negative_1.<locals>.badopenerr�r)�r�zopener returned -1�r�r�r-r��str�	exception�r:r��cmrrr�test_bad_opener_negative_1c�
�z!IOTest.test_bad_opener_negative_1cCr�)NcSrA)N���rr�rrrr�mrEz8IOTest.test_bad_opener_other_negative.<locals>.badopenerr�r)r�zopener returned -2r�r�rrr�test_bad_opener_other_negativekr�z%IOTest.test_bad_opener_other_negativecs^t���|�t��}|jd�fdd�d�Wd�n1swY|�|jjtj�dS)N�foocr�r=r)�namer�r�rrr~xrz/IOTest.test_opener_invalid_fd.<locals>.<lambda>r�)	r�make_bad_fdr�r}r-r�r��errno�EBADF)r:r�rr�r�test_opener_invalid_fdss
�zIOTest.test_opener_invalid_fdc	Cs�|�td��E}|�td��&}|j|��dd�}|j|��dd�|��|��|��Wd�n1s6wYWd�dSWd�dS1sNwYdS)Nr�Frg)r-r.r�rHr<r�r~)r:�f1�f2�fileiorrr�test_fileio_closefd{s
�
P�zIOTest.test_fileio_closefdc	C�~t�|��0|�t��|jtjdddd�Wd�n1s wYWd�dSWd�dS1s8wYdS)Nr�r�r�r,r��r
�check_no_resource_warningr�r�r-rr�rCrrr�test_nonbuffered_textio����"�zIOTest.test_nonbuffered_textioc	Cr�)Nr�r��invalid�r,�newliner�rCrrr�test_invalid_newline�r�zIOTest.test_invalid_newlinec	Cs~Gdd�d|j�}|�}dD].}|�|��td�}|�t||�|�d�|�t|�d�Wd�n1s7wYqdS)Nc@seZdZdd�ZeZdS)z3IOTest.test_buffered_readinto_mixin.<locals>.StreamcSrA)N�12345r�r:�sizerrrr^�rEz8IOTest.test_buffered_readinto_mixin.<locals>.Stream.readN)r$r%r&r^�read1rrrr�Stream�sr��rUr�rjr�)r�rrr��getattrr)r:r��stream�methodr�rrr�test_buffered_readinto_mixin�s���z#IOTest.test_buffered_readinto_mixinc	sr�fdd�}|ttj��|tt�tj����jtjddd��+}t|���}��t���j|ddd�Wd�n1s?wYWd�n1sNwYtd�}��t���j|ddd�Wd�n1sowYtt	�}��t	���j|ddd�Wd�n1s�wY��
td���jttj�ddd�Wd�dS1s�wYdS)Ncs��j|ddd��
}|�d�Wd�n1swY�j|ddd��}��|��d�Wd�dS1s9wYdS)Nr�r�r+rfr))r-r@r�r^)rtr1rCrr�check_path_succeeds�s�"�z7IOTest.test_fspath_support.<locals>.check_path_succeedsr�r�r+zread/write/append mode�rwxa)rrr�r��fsencoder-rHr�r��FloatingPointError�assertRaisesRegexr�)r:r�r1�bad_pathrrCr�test_fspath_support�s*�����"�zIOTest.test_fspath_supportcCs8|�d�}|�|��d�|�d�}|�|��d�dS�N�r�r�r��abcdefg)r3r�r^�readallr�rrr�test_RawIOBase_readall�s

zIOTest.test_RawIOBase_readallc	Cs�Gdd�d|j�}d}d}|D]i}|�|��Z|\}}}}|tt|���}	t|f|�}
t|	|�}|�||
�|�|�t|
�|�|�|
d|�t|��|f||}|�|
|d�|�|�t|	j	�||�Wd�n1sswYqdS)Nc@�$eZdZdd�Zdd�Zdd�ZdS)z3IOTest.test_BufferedIOBase_readinto.<locals>.ReadercSs
||_dSr=��avail)r:r�rrrr<�r�z<IOTest.test_BufferedIOBase_readinto.<locals>.Reader.__init__cSs"|jd|�}|j|d�|_|Sr=r�)r:r��resultrrrr^�sz8IOTest.test_BufferedIOBase_readinto.<locals>.Reader.readcSs|�t|d��S)z$Returns no more than 5 bytes at oncerj)r^�minr�rrrr��sz9IOTest.test_BufferedIOBase_readinto.<locals>.Reader.read1N)r$r%r&r<r^r�rrrr�Reader�sr�)
)rUr�rjrj)rUr�r�r�)rUrjr�rj)rUr��r�)rUr�rr)r�r�rjrj)r�r�r�rj)r�rjr�rj)r�r�r�rj)r�r�rr�)
r�rrr^r�r�r�r�assertSequenceEqualr�)r:r�r�UNUSED_BYTEr	r�r��requestr��readerr��unusedrrr�test_BufferedIOBase_readinto�s$

���z#IOTest.test_BufferedIOBase_readintocCs4Gdd�d|j�}|�}|�t|j�dd�|_dS)Nc@�eZdZdd�Zdd�ZdS)z#IOTest.test_close_assert.<locals>.RcSrr=r)r:r��valuerrr�__setattr__�rEz/IOTest.test_close_assert.<locals>.R.__setattr__cS�t��r=�r}rCrrrrv��z)IOTest.test_close_assert.<locals>.R.flushN)r$r%r&r�rvrrrrr�srcSrr=rrCrrrr~�rz*IOTest.test_close_assert.<locals>.<lambda>)r r�r}r~rv)r:rr1rrr�test_close_assert�szIOTest.test_close_assertN�F)4r$r%r&r�r�r�r�r�r�r�rrrrrr$r'r)r.r1r5rKrSrUrVrWrXrZr`rerjrkrmrrr{r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rrrrr�9sd
!h	



	
)r�c@r)�CIOTestcCsLGdd�d|j�}|�|�}||_t�|�}~~t��|�|�|�dS)Nc@r)z*CIOTest.test_IOBase_finalize.<locals>.MyIOcSrr=rrCrrrr~rEz0CIOTest.test_IOBase_finalize.<locals>.MyIO.closeN�r$r%r&r~rrrrrQ�rrQ)r r!rnrorrJrp)r:rQr!rqrrr�test_IOBase_finalize�s
zCIOTest.test_IOBase_finalizeN)r$r%r&r�rrrrr��sr�c@r")�PyIOTestNr#rrrrr�
r'r�c@r�)�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�rr�r�rs�r:�mismatchrrr�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�r�rr�r�rsr�rrr�test_RawIOBase_pyio_in_io_matchsz/APIMismatchTest.test_RawIOBase_pyio_in_io_matchN)r$r%r&r�r�rrrrr�sr�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|�dSr=)rZ�tp�assertIs�detachr�r��repr�r:rlrRrrr�test_detach#s

zCommonBufferedTests.test_detachcCs&|��}|�|�}|�d|���dSrF)rZr�r�rH�r:r��bufiorrr�test_fileno+s
zCommonBufferedTests.test_filenocCs:|��}|�|�}|�t|jdd�|�t|jdd�dS)Nrr�r�)rZr�r�r�rMrrrr�test_invalid_args1s
z%CommonBufferedTests.test_invalid_argscsL|j}g�G�fdd�d|�}|��}||�}~t��|��gd��dS)Ncr6)zBCommonBufferedTests.test_override_destructor.<locals>.MyBufferedIOcr7rzr8r�r;rrr9<r=zJCommonBufferedTests.test_override_destructor.<locals>.MyBufferedIO.__del__cr>rdr?rCr;rrr~DrrzHCommonBufferedTests.test_override_destructor.<locals>.MyBufferedIO.closecr>r@rArCr;rrrvGrrzHCommonBufferedTests.test_override_destructor.<locals>.MyBufferedIO.flushrBrrCrgr�MyBufferedIO;rErrG)r�rZrrJr�)r:r�rr�rrrCr�test_override_destructor8sz,CommonBufferedTests.test_override_destructorcs4|��}|�|���fdd�}|�|�t|�dS)Ncs*��	Wd�dS1swYdSr=rr�rrr�_withTs"�z7CommonBufferedTests.test_context_manager.<locals>._with)rZr�r�r�)r:r�rrrr�test_context_managerPs

z(CommonBufferedTests.test_context_managerc	Cs�|��}t���J}|�t��|�|�jWd�n1swYts-|�|j	�n|j	durB|�
|j	jt�Wd�dSWd�dSWd�dS1sUwYdSr=)
ryr�catch_unraisable_exceptionr�r:r��xyzzy�IOBASE_EMITS_UNRAISABLErp�
unraisabler��exc_typer}�r:r�r�rrr�test_error_through_destructor\s
�
��"�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'>)rZr�r%r&�assertRegexr�r�)r:rlr�clsnamerrr�	test_repris
zCommonBufferedTests.test_reprc	Csv|��}|�|�}t�|d|��!zt|�Wn	ty Yn	wWd�dSWd�dS1s4wYdS)Nr�)rZr�r�	swap_attrr��RuntimeError�r:rlrrrr�test_recursive_reprss
���"�z'CommonBufferedTests.test_recursive_reprcs�|���g����fdd�}|�_|����|�t�j�|��j�|��j�|���|��d�|��d�dd��_dS)Ncs�j�jg�dd�<t��r=r{r�rr|rlrrr}�sz@CommonBufferedTests.test_flush_error_on_close.<locals>.bad_flushrrPcSrr=rrrrrr~�rz?CommonBufferedTests.test_flush_error_on_close.<locals>.<lambda>)	rZrvr�r�r}r~r�r|r��r:r}rrrr�}s

z-CommonBufferedTests.test_flush_error_on_closecCs�|��}dd�}dd�}||_|�|�}||_|�t��}|��Wd�n1s+wY|�|jjd�|�	|jj
t�|�|jj
jd�|�|j�dd�|_d	d�|_dS)
NcS�td���Nrvr�rrrrr}��z@CommonBufferedTests.test_close_error_on_close.<locals>.bad_flushcSr�Nr~r�rrrr�	bad_close�rz@CommonBufferedTests.test_close_error_on_close.<locals>.bad_close�r~�rvcSrr=rrrrrr~�rz?CommonBufferedTests.test_close_error_on_close.<locals>.<lambda>cSrr=rrrrrr~�r)
rZr~r�rvr�r}r�r�r��assertIsInstance�__context__r�r|�r:rlr}rr�errrrr�test_close_error_on_close�s

�
z-CommonBufferedTests.test_close_error_on_closecCs�|��}dd�}dd�}||_|�|�}||_|�t��}|��Wd�n1s+wY|�dt|j��|�	|jj
t�|�dt|jj
��|�|j�dd�|_d	d�|_dS)
NcS�t�r=��non_existing_flushrrrrr}�rEzNCommonBufferedTests.test_nonnormalized_close_error_on_close.<locals>.bad_flushcSr'r=��non_existing_closerrrrr�rEzNCommonBufferedTests.test_nonnormalized_close_error_on_close.<locals>.bad_closer+r)cSrr=rrrrrr~�rzMCommonBufferedTests.test_nonnormalized_close_error_on_close.<locals>.<lambda>cSrr=rrrrrr~�r)
rZr~r�rvr��	NameError�assertInr�r�r"r#r�r|r$rrr�'test_nonnormalized_close_error_on_close�s

�
z;CommonBufferedTests.test_nonnormalized_close_error_on_closecCs<|��}|�|�}|��|��|��|�t|j�dSr=)rZr�r~r�r�rvrrrrr��s
z$CommonBufferedTests.test_multi_closecCs6|�|�d��}|�|j|j�|�|j|jd�dS)N�
AAAAAAAAAAr)r�r�r�r�rNrM�r:rrrr�test_unseekable�sz#CommonBufferedTests.test_unseekablecCsP|��}|�|�}|��}|�t��||_Wd�dS1s!wYdSr=)rZr�r�r:rl)r:rlrR�xrrr�test_readonly_attributes�s
"�z,CommonBufferedTests.test_readonly_attributesN)r$r%r&r�rrrrrrrr�r&r.r�r1r3rrrrr� s


r�c@s(eZdZejdd��Zejdd��ZdS)�
SizeofTestcCs\d}d}|��}|j||d�}t�|�|}|��}|j||d�}|�t�|�||�dS)N�� ��buffer_size)rZr�r�	getsizeofr�)r:�bufsize1�bufsize2r�rr�rrr�test_sizeof�szSizeofTest.test_sizeofcCsFd}|��}|j||d�}t�|�|}|��|�t�|�|�dS)Nr5r7)rZr�rr9r~r�)r:r0r�rr�rrr�test_buffer_freeing�szSizeofTest.test_buffer_freeingN)r$r%r&r�cpython_onlyr<r=rrrrr4�s


r4c@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)Nr��r7�r��r�)rZr�r<r�r^r�r�rrrr�test_constructor�s


z#BufferedReaderTest.test_constructorcC�X|j�|j�}~|j�|j�}|�ttfd|jd�|�|���|�|�d�d�dS�N�uninitialized|has no attributerr[)	r��__new__r�r�r:r^r<rZr�r0rrr�test_uninitialized��
�z%BufferedReaderTest.test_uninitializedcCsDdD]}|�d�}|�|�}|�d|�|��q|�t|jd�dS)N)Nr�r�r�r�)rZr�r�r^r�r�)r:�argr�rrrr�	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��arP�br[rr�r�r�rer�r�r�rZr�r�r^r�r8rrrr�
test_read1s

zBufferedReaderTest.test_read1cCs�|�d�}|�|�}|�d|�d��|�d|���|�d|���|�d|�d��|�|jd�|�d	|���|�|jd
�dS)Nr�rLrPsbcr�r�r�r�r[rrNrrrr�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�rer��cdr�rPsgfr)r�Nscb)rZr�r�r�rU)r:r�rrrrr�
test_readinto!s&



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�)r��de�fghsjklr7rer�r�rPr�r�rSrTr�sfghjklr)rZr�r�r��peekr8r�)r:r8r�rrrrr�test_readinto16s*
z!BufferedReaderTest.test_readinto1cC�d}d}|�|f�}|j||d�}t�dd�}t|�dksJ�|�|�}|�|t|��t|��d�}|�|t|��|�	|d|�|d|��|�	||d�dt||d���dS�	N�<saaaaaaaaaaaaaaaaaaaaaaaaaar7r[s xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxrArr�)
rZr�rrrUr4rr�
assertLessr��r:r8r r�rrrT�bmrrr�test_readinto_arrayM�
(z&BufferedReaderTest.test_readinto_arraycCrWrX)
rZr�rrr�r4rrrZr�r[rrr�test_readinto1_arraybr^z'BufferedReaderTest.test_readinto1_arraycsV�fdd�}��|���gd����|��d�ddg���|��d�gd��dS)Ncs��d�}��|�S)N�rr�r�)rZr�)r�rCrrrx�

z0BufferedReaderTest.test_readlines.<locals>.bufior`rjrr��r�r&r0rrCr�test_readlineswsz!BufferedReaderTest.test_readlinesc	Cs�d}t|�}dgd�|dggdgd�|ggdgd�gd�gg}|D]2\}}}|�|�}|j||d	�}d}	|D]}
|�|�|
�||	|	|
��|	|
7}	q6|�|j|�q!dS)
N�	abcdefghir�)r�rPr�r)r�r�r�r)rPrerre)rrrPr7)rr�r�r�r^r�)r:r �dlenrr0�buf_read_sizes�raw_read_sizesr�rr�nbytesrrr�test_bufferings�

�z!BufferedReaderTest.test_bufferingcCs�|�d�}|�|�}|�d|�d��|�d|�d��|�d|���|�d|�d��|�|���|�d|���|�d�}|�d	|���|�|���dS)
N)r�r�Nr�NNN�abcdr��erPsfgr[)rLNNrL)rZr�r�r^rUrpr�rrrr�test_read_non_blocking�s


z)BufferedReaderTest.test_read_non_blockingcCs*|�d�}|�|�}|�d|�d��dS)Nr�r�i(#�rZr�r�r^rrrr�test_read_past_eof�s

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

z BufferedReaderTest.test_read_all�cpuc	s�z�d}ttd��|}t�|�tt|��}|�tjd��
���	|�Wd�n1s-wY|jtj|j
dd��c}|�|d��g�g����fdd���fd	d
�td�D�}t�
|��
t�d�Wd�n1sowY|��d
��d���}td�D]}tt|g��}|�|�|�|�q�Wd�n1s�wYWt�tj�dSWt�tj�dSt�tj�w)N���r�rr�rec
s^ztddg�D]}��|�}|sWdS��|�qWdSty.}z��|��d}~ww)NrP�)rr^r>�	Exception)rTr��e)r�errors�resultsrrr1�s
�
��z*BufferedReaderTest.test_threads.<locals>.fc�g|]}tj�d��qS��r��ror���.0r2r0rr�
<listcomp>��z3BufferedReaderTest.test_threads.<locals>.<listcomp>r��{�G�z�?�(the following exceptions were caught: %rr[)r5r^�random�shufflerr�r-rr�r@�	read_moder�r�
start_threadsrtrur�r�r�rr�)r:�N�lr�rl�threadsr[�cr)rrwr1rxr�test_threads�s:
���
���zBufferedReaderTest.test_threadscCsb|�|�d��}|�|j|j�|�|j|jd�|�d�|�|j|jd�|�|j|j�dS)Nr/rrP)r�r�r�r�rNrMr^r0rrrr1�s
z"BufferedReaderTest.test_unseekablecCs@|�d�}|�|�}|�t|jd�|�t|j�dd�|_dS)Nr�rcSrr=rrrrrr~�rz7BufferedReaderTest.test_misbehaved_io.<locals>.<lambda>)rbr�r�r}rMrNr~rrrr�test_misbehaved_io�s


z%BufferedReaderTest.test_misbehaved_ioc	Cs�d}d|d||d|dfD]Q}|�d|g�}|�||�}|�|�|�d|�|�|jdd�||j��|�d|ddg�}|�||�}|�|�|�d|�|�|jdd�||j��qdS)NrArerPr�rzfailed for {}: {} != 0)rZr�r�r^r9rv)r:r0rTr�rrrr�test_no_extraneous_read�s
�
��z*BufferedReaderTest.test_no_extraneous_readcCsDt�t�d��}|�d�|��|�t|j�|�t|jd�dS)N�12rP)	r�r�r�r^r~r�r�rUr�r?rrr�test_read_on_closed�s

z&BufferedReaderTest.test_read_on_closedcCsH|�d�}|�|�}|�|���|�|j|j�|�|j|jd�dS)Nr�r)r�r�r�rDr�r�rVrrrr�test_truncate_on_read_onlys


z-BufferedReaderTest.test_truncate_on_read_onlyN)r$r%r&r�rCrHrKrOrPrRrVr]r_rcrjrmrorpr�requires_resourcer�r1r�r�r�r�rrrrr?�s.

'	r?c@sXeZdZejZedddd�dd��Zdd�Zdd	�Z	d
d�Z
dd
�Zdd�Zdd�Z
dS)�CBufferedReaderTestT�Lsanitizer defaults to crashing instead of returning NULL for malloc failure.��memory�address�reasoncC�Ht�|�tjdkr"|��}|�|�}|�ttt	f|j
|tj�dSdS�Nrs)r?rCrrwrZr�r�r��MemoryErrorr�r<rrrrrC�



��z$CBufferedReaderTest.test_constructorcCs�|�dg�}|�|�}|jt|j|dd�|�t|j�|jt|j|dd�|�t|j�|jt|j|dd�|�t|j�dS)Nr�rr7rBr�)rZr�r�r�r<r^rrrr�test_initializations
z'CBufferedReaderTest.test_initializationcCs(|�d�}|�|�}|�t|jd�dS)Nr�r�)rbr�r�r}r^rrrr�test_misbehaved_io_read$s

z+CBufferedReaderTest.test_misbehaved_io_readcCs�|�tjtj�t�dtf��!|�tjd�}|�|�}||_	t
�|�}~t�
�Wd�n1s3wY|�|�|�dS)NrFr,)r�rr�r�r
rHrIr�r�r1rnrorrJrp�r:r�r1rqrrrrr+s


�z+CBufferedReaderTest.test_garbage_collectioncC�F|�td��|�t��ddd�Wd�dS1swYdS)Nr�r@�r�r�r�r�r�rCrrr�test_args_error8�"�z#CBufferedReaderTest.test_args_errorcCsht�t�d��}dd�|_|�|�}|�t��}|��Wd�n1s&wY|�|j	j
�dS)Nr�cSrAr�r�rRrrrr~?rz=CBufferedReaderTest.test_bad_readinto_value.<locals>.<lambda>)r�r�r�rUr�r�r}r�rpr��	__cause__�r:r�rr�rrr�test_bad_readinto_value=s


�z+CBufferedReaderTest.test_bad_readinto_valuecCsjt�t�d��}dd�|_|�|�}|�t��}|��Wd�n1s&wY|�|j	j
t�dS)Nr�cSrAr�rr�rrrr~Grz<CBufferedReaderTest.test_bad_readinto_type.<locals>.<lambda>)r�r�r�rUr�r�r}r�r"r�r�r�r�rrr�test_bad_readinto_typeEs


�z*CBufferedReaderTest.test_bad_readinto_typeN)r$r%r&r�r�r�rrCr�r�rrr�r�r�rrrrr�s



r�c@�eZdZejZdS)�PyBufferedReaderTestN)r$r%r&r�r�r�rrrrr�Nr�r�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@r7rAr�r�rrBr��ghir[sabcghi)
rZr�r<r�r@rvr�r�r�r7rrrrrCUs


z#BufferedWriterTest.test_constructorcCrD)NrFr[r)	r�rGr�r�r:r@r<rZr�r0rrrrHerIz%BufferedWriterTest.test_uninitializedcCsD|��}|�|�}|�d�|�|j�|��|�|jdg�dS)Nshowdy!)rZr�r@r�r7r�r�r�rrr�test_detach_flushos

z$BufferedWriterTest.test_detach_flushcCsh|��}|�|d�}|�d�|�|j�td�}|�|�d|dd�<|��|�d�|j�d�dS)Nrer��def�***r[�abcdef)	rZr�r@r�r7r�rvr�r�)r:�writerrr�rrr�
test_writews

zBufferedWriterTest.test_writecCsn|��}|�|d�}d}tdt|�d�D]
}|�|||d��qd�|j�}|�|�|dd��|�dS)Nresabcdefghijklmnoprr�r[i����)	rZr�r^rr@r�r7r�r)r:r�r�contentsrT�flushedrrr�test_write_overflow�sz&BufferedWriterTest.test_write_overflowc	Cs�ttd��d}d}|��}|�|d�}dd�}|�}|t|�krItt|�t|�|�}|�|�||||��|�||�||7}|t|�ks!|�	�|�|d�
|j��dS)Nrsrrrr�css(�td�D]}td�D]}|VqqdS)NrP�)rr^)r�r[rrr�	gen_sizes�s���z2BufferedWriterTest.check_writes.<locals>.gen_sizesr[)rr^rZr�rr�r"r�r@rvr�r7)	r:�intermediate_funcr�rTr�rr��sizesr�rrr�check_writes�s�zBufferedWriterTest.check_writescC�|�dd��dS)NcSrr=rrrrrr~�rz0BufferedWriterTest.test_writes.<locals>.<lambda>�r�rCrrr�test_writes��zBufferedWriterTest.test_writescCr�)NcSs|��Sr=r!rrrrr~�sz<BufferedWriterTest.test_writes_and_flushes.<locals>.<lambda>r�rCrrr�test_writes_and_flushes�r�z*BufferedWriterTest.test_writes_and_flushescCs(dd�}|�|�dd�}|�|�dS)NcSs8|��}|�|dd�|�|dd�|�|d�dSrO)rNrM�rrrrr�_seekabs�sz:BufferedWriterTest.test_writes_and_seeks.<locals>._seekabscSs4|�dd�}|�dd�|�dd�|�|d�dS)NrrPr�)rMr�rrr�_seekrel�sz:BufferedWriterTest.test_writes_and_seeks.<locals>._seekrelr�)r:r�r�rrr�test_writes_and_seeks�s
z(BufferedWriterTest.test_writes_and_seekscCr�)NcSs|�|���Sr=)rVrNrrrrr~�sz>BufferedWriterTest.test_writes_and_truncates.<locals>.<lambda>r�rCrrr�test_writes_and_truncates�r�z,BufferedWriterTest.test_writes_and_truncatesc
Cs�|��}|�|d�}|�|�d�d�|�|�d�d�|�d�|�|�d�d�|�d�z|�d	�Wn|jyL}z	|j}WYd}~n
d}~ww|�d
�|�|d�|�|��d�|�|�d
�d�|��}|�	|�
d�|�dS)Nrerkrsefghirj�ksjklmn�0sopqrwxyz0123456789z'BlockingIOError should have been raisedrAsabcdefghijklmnopqrwxyzs	ABCDEFGHIr�s	01234567A)r�r�r�r@r�r��characters_writtenrr�r�r)r:rlrrv�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)
Nrr�r�rsXYresXYcdefs123456sXYcdef123456)	r�r�r�r�r@rNrMr(rv�r:rlrrrr�test_write_and_rewind�sz(BufferedWriterTest.test_write_and_rewindcCs<|��}|�|d�}|�d�|��|�d|jd�dS�Nrer�r)rZr�r@rvr�r7�r:r�rrrr�
test_flush�s

zBufferedWriterTest.test_flushcCsFgd�}|��}|�|d�}|�|�|��|�d�|j�d�dS�N)r�rQr�rer[r�)rZr�r�rvr�r�r7�r:r�r�rrrr�test_writelines�s
z"BufferedWriterTest.test_writelinescCsJtgd��}|��}|�|d�}|�|�|��|�d�|j�d�dSr�)rrZr�r�rvr�r�r7r�rrr�test_writelines_userlist�s
z+BufferedWriterTest.test_writelines_userlistcCsL|��}|�|d�}|�t|jgd��|�t|jd�|�t|jd�dS)NrerG�abc)rZr�r�r�r�r�rrr�test_writelines_error�s
z(BufferedWriterTest.test_writelines_errorcCs>|��}|�|d�}|�d�~t��|�d|jd�dSr�)rZr�r@rrJr�r7r�rrrrK�s
z"BufferedWriterTest.test_destructorcCs�|�tjtj�|jtj|jdd��$}|�|d�}|�d�|�|�	d�d�|�|�
�d�Wd�n1s9wY|jtjddd��}|�|��d�Wd�dS1s[wYdS)	Nrr�rer�r�r�r�r�)r�rr�r�r-�
write_moder�r@r�rVrNr^)r:rlrr1rrr�
test_truncates
�"�z BufferedWriterTest.test_truncatec	Cs�|�tjtj�|�tjd��}|�dd�Wd�n1s!wYgd�}|D]7}|jtjd|d��$}|�d|d�|�d�|��|�|�	�|d�Wd�n1s^wYq,dS)	Nr��i')r6r5��zr+br�rPre)
r�rr�r�r-r@r^rVr�rN)r:r1�buffer_sizesr8rrr�test_truncate_after_writes�
���z,BufferedWriterTest.test_truncate_after_writerqc
	s�z�d}ttd��|}tddg�}d}t��|t|�kr5t|�}��||||��||7}|t|�ks~|jtj	|j
dd��I}|�|d��g����fdd	���fd
d�td�D�}t�
|��
t�d
�Wd�n1sqwY|��d�����Wd�n1s�wY|�tj	d������}Wd�n1s�wYtd�D]}	|�|�t|	g��|�q�Wt�tj	�dSt�tj	�w)NrrrsrPrtrr�rec
sXz	z���}WntyYWdSw��|�qty+}z��|��d}~wwr=)�popleftrQr@rur>)r�rv)rrw�queuerrr1;s�
�
��z*BufferedWriterTest.test_threads.<locals>.fcryrzr|r}r0rrrFr�z3BufferedWriterTest.test_threads.<locals>.<listcomp>r�r�r�r�)rr^rrrr"r>r-rr�r�r�rr�rtrur�r~r^r�rr�)
r:r�r�r�rTr�rlr�r�r[r)rrwr1r�rr�$s@���
�
��zBufferedWriterTest.test_threadscCsP|��}|�|d�}|�t|jd�|�t|j�|�t|jd�dd�|_dS)Nrjrr�cSrr=rrrrrr~[rz7BufferedWriterTest.test_misbehaved_io.<locals>.<lambda>)rbr�r�r}rMrNr@r~rrrrr�Ssz%BufferedWriterTest.test_misbehaved_iocCsB|�t��|�|��dd�Wd�dS1swYdS�Nrer��r�r�r�rZrCrrr�test_max_buffer_size_removal]s"�z/BufferedWriterTest.test_max_buffer_size_removalcCsH|��}dd�}||_|�|�}|�d�|�t|j�|�|j�dS)NcSr�r=r�)rrrr�	bad_writecr�z?BufferedWriterTest.test_write_error_on_close.<locals>.bad_write�spam)rZr@r�r�r}r~r�r|)r:rlr�rrrr�test_write_error_on_closeas

z,BufferedWriterTest.test_write_error_on_closecCs\|��}|�|d�}tj|jd�}|��|j��|�t	|j
d�|�|j�|�
�dS)Nrer{r�)rnr�ror�r~r�rq�waitr�r�r@r�r|r�)r:r�r�trrr�test_slow_close_from_threadks
z.BufferedWriterTest.test_slow_close_from_threadN)r$r%r&r�rCrHr�r�r�r�r�r�r�r�r�r�r�r�r�r�rKr�r�rr�r�r�r�r�r�rrrrr�Rs6


.

r�c@s@eZdZejZedddd�dd��Zdd�Zdd	�Z	d
d�Z
dS)
�CBufferedWriterTestTr�r�cCr�r�)r�rCrrwrZr�r�r�r�r�r<rrrrrC{r�z$CBufferedWriterTest.test_constructorcCs�|��}|�|�}|jt|j|dd�|�t|jd�|jt|j|dd�|�t|jd�|jt|j|dd�|�t|jd�dS)Nrr7r�rBr�)rZr�r�r�r<r@rrrrr��s
z'CBufferedWriterTest.test_initializationcCs�|�tjtj�t�dtf��&|�tjd�}|�|�}|�	d�||_
t�|�}~t
��Wd�n1s8wY|�|�|�|�tjd��}|�|��d�Wd�dS1s_wYdS)NrFr,s123xxxr�)r�rr�r�r
rHrIr�r�r@r2rnrorrJrpr-r�r^r�rrrrr�s



�"�z+CBufferedWriterTest.test_garbage_collectioncCr�)Nr�r@r�rCrrrr��r�z#CBufferedWriterTest.test_args_errorN)r$r%r&r�r�r�rrCr�rrr�rrrrr�xs


r�c@r�)�PyBufferedWriterTestN)r$r%r&r�r�r�rrrrr��r�r�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"�Zd#d$�Zd%d&�Zd'd(�Zd)d*�Zd+S),�BufferedRWPairTestcCs$|�|��|���}|�|j�dSr=)r�rZr�r|�r:�pairrrrrC�sz#BufferedRWPairTest.test_constructorcCs�|j�|j�}~|j�|j�}|�ttfd|jd�|�ttfd|jd�|�|��|���|�	|�d�d�|�	|�d�d�dSrE)
r�rGr�r�r:r^r@r<rZr�r�rrrrH�s
�
�z%BufferedRWPairTest.test_uninitializedcCs(|�|��|���}|�|j|j�dSr=)r�rZr�r�r�r�rrrr��szBufferedRWPairTest.test_detachcCsH|�t��|�|��|��dd�Wd�dS1swYdSr�r�rCrrr�(test_constructor_max_buffer_size_removal�s"�z;BufferedRWPairTest.test_constructor_max_buffer_size_removalcCs,Gdd�dt�}|�t|j|�|���dS)Nc@r)zJBufferedRWPairTest.test_constructor_with_not_readable.<locals>.NotReadablecSrAr�rrCrrrrI�rEzSBufferedRWPairTest.test_constructor_with_not_readable.<locals>.NotReadable.readableN�r$r%r&rIrrrr�NotReadable�rr��rZr�r}r�)r:r�rrr�"test_constructor_with_not_readable��z5BufferedRWPairTest.test_constructor_with_not_readablecCs,Gdd�dt�}|�t|j|��|��dS)Nc@r)zLBufferedRWPairTest.test_constructor_with_not_writeable.<locals>.NotWriteablecSrAr�rrCrrrrD�rEzUBufferedRWPairTest.test_constructor_with_not_writeable.<locals>.NotWriteable.writableN)r$r%r&rDrrrr�NotWriteable�rr�r�)r:r�rrr�#test_constructor_with_not_writeable�r�z6BufferedRWPairTest.test_constructor_with_not_writeablecCsv|�|�d�|���}|�|�d�d�|�|�d�d�|�|��d�|�|�d�|���}|�|�d�d�dS)Nr�r�r�rPr�r�)r�r�rZr�r^r�rrrrK�szBufferedRWPairTest.test_readcsT�fdd�}��|���gd����|���gd����|��d�ddg�dS)Ncs����d�����S)Ns	abc
def
h)r�r�rZrrCrrr~��z3BufferedRWPairTest.test_readlines.<locals>.<lambda>)rrr�rjrrrbr�rrCrrc�sz!BufferedRWPairTest.test_readlinescCs<|�|�d�|���}|�|�d�d�|�|��d�dS)Nr�r�r�r�)r�r�rZr�r�r�rrrrO�szBufferedRWPairTest.test_read1c	Cs|dD]9}|�|��*|�|�d�|���}td�}|�t||�|�d�|�t|�d�Wd�n1s6wYqdS)Nr�r�srjsabcde)rr�r�rZrr�r�r)r:r�r�r rrrrR�s���z BufferedRWPairTest.test_readintocCsf|��}|�|��|�}|�d�|��td�}|�|�d|dd�<|��|�|jddg�dS)Nr�r�r�)rZr�r@rvr�r�r7)r:r�r�r�rrrr��s

zBufferedRWPairTest.test_writecCsB|�|�d�|���}|�|�d��d��|�|�d�d�dS)Nr�r�r�)r�r�rZr�rUrr�r^r�rrr�	test_peekszBufferedRWPairTest.test_peekcC�&|�|��|���}|�|���dSr=)r�rZr�rIr�rrr�
test_readable�z BufferedRWPairTest.test_readablecCr�r=)r�rZr�rDr�rrr�test_writeabler�z!BufferedRWPairTest.test_writeablecCr�r=)r�rZr�rJr�rrr�
test_seekablesz BufferedRWPairTest.test_seekablecCs8|�|��|���}|�|j�|��|�|j�dSr=)r�rZr�r|r~r�r�rrr�test_close_and_closedsz(BufferedRWPairTest.test_close_and_closedcCs�dd�}|��}||_|��}|�||�}|�t��}|��Wd�n1s)wY|�dt|j��|�|j	�|�
|j	�|�|j	�dd�|_dS)NcS�tdSr=��reader_non_existingrrrr�reader_closerzIBufferedRWPairTest.test_reader_close_error_on_close.<locals>.reader_closer�cSrr=rrrrrr~-rzEBufferedRWPairTest.test_reader_close_error_on_close.<locals>.<lambda>)rZr~r�r�r,r-r�r�r�r|r�)r:r�r�r�r�r%rrr� test_reader_close_error_on_closes
�z3BufferedRWPairTest.test_reader_close_error_on_closec	Cs
dd�}|��}|��}||_|�||�}|�t��}|��Wd�n1s)wY|�dt|j��|�|j	�|�
|j	�|�|j	�dd�|_d}t���'t���d}t�
�Wd�n1sjwYt�
�Wd�dS1s~wYdS)NcSr�r=��writer_non_existingrrrr�writer_close0rzIBufferedRWPairTest.test_writer_close_error_on_close.<locals>.writer_closercSrr=rrrrrr~>rzEBufferedRWPairTest.test_writer_close_error_on_close.<locals>.<lambda>)rZr~r�r�r,r-r�r�r�r|r�rr	rJ)r:rr�r�r�r%rrr� test_writer_close_error_on_close/s*
�



�
"�z3BufferedRWPairTest.test_writer_close_error_on_closecCs�dd�}dd�}|��}||_|��}||_|�||�}|�t��}|��Wd�n1s0wY|�dt|j��|�|jj	t�|�dt|jj	��|�
|j�|�
|j�|�
|j�dd�|_d	d�|_dS)
NcSr�r=r�rrrrr�JrzPBufferedRWPairTest.test_reader_writer_close_error_on_close.<locals>.reader_closecSr�r=r�rrrrrLrzPBufferedRWPairTest.test_reader_writer_close_error_on_close.<locals>.writer_closer�rcSrr=rrrrrr~]rzLBufferedRWPairTest.test_reader_writer_close_error_on_close.<locals>.<lambda>cSrr=rrrrrr~^r)rZr~r�r�r,r-r�r�r"r#r�r|)r:r�rr�r�r�r%rrr�'test_reader_writer_close_error_on_closeIs$
�
z:BufferedRWPairTest.test_reader_writer_close_error_on_closecCs�Gdd�dt�}|�|d�|d��}|�|���|�|d�|d��}|�|���|�|d�|d��}|�|���|�|d�|d��}|�|���dS)Nc@r�)z8BufferedRWPairTest.test_isatty.<locals>.SelectableIsAttycSst�|�||_dSr=)rZr<�_isatty)r:�isattyrrrr<brazABufferedRWPairTest.test_isatty.<locals>.SelectableIsAtty.__init__cSs|jSr=)rrCrrrrfr�z?BufferedRWPairTest.test_isatty.<locals>.SelectableIsAtty.isattyN)r$r%r&r<rrrrr�SelectableIsAttyasrFT)rZr�r�rr�)r:rr�rrr�test_isatty`szBufferedRWPairTest.test_isattycCs*|�|��|���}t�|�}d}d}dSr=)r�rZrnro)r:�brwrorrr�test_weakref_clearingus
z(BufferedRWPairTest.test_weakref_clearingN)r$r%r&rCrHr�r�r�r�rKrcrOrRr�r�r�r�r�r�r�rrrr	rrrrr��s,			r�c@r�)�CBufferedRWPairTestN)r$r%r&r�r�r�rrrrr
{r�r
c@r�)�PyBufferedRWPairTestN)r$r%r&r�r�r�rrrrr~r�rc@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+cC�t�|�t�|�dSr=)r?rCr�rCrrrrC�rrz#BufferedRandomTest.test_constructorcCrr=)r?rHr�rCrrrrH�rrz%BufferedRandomTest.test_uninitializedcCsn|�d�}|�|d�}|�d|�d��|�d�|�d�|�|j�|�d|���|�d|jd	�dS)
N)�asdf�ghjkre�asresdddseeersdddeeer)rZr�r�r^r@r�r7�r:rlr�rrr�test_read_and_write�s


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	asdfghjklrrerrrs123fs	asdf123flr����rjrPr�sfl�r�)r�r�r�r^rNrMr@rvr(r�r�rrrr�test_seek_and_tell�s$


z%BufferedRandomTest.test_seek_and_tellcCs�|�d�}|�|�}|�d||d��|�d�|�d||d��|�d|���|��|�d|���|�d||��|�dd�|�d	�|��|�dd�|�d	||d
��dS)Nrdr�rer�r�r�r�rsXYZr�)r�r�r�r@rNrvrM)r:�	read_funcrlrrrr�check_flush_and_read�s



z'BufferedRandomTest.check_flush_and_readcCr�)NcWs
|j|�Sr=)r^)rr�rrrr~��
z8BufferedRandomTest.test_flush_and_read.<locals>.<lambda>�rrCrrr�test_flush_and_read�r�z&BufferedRandomTest.test_flush_and_readcC�ddd�}|�|�dS)Nr�cSs.t|dkr|nd�}|�|�}t|d|��S)Nr�')r�rUr�rrTrrrr�	_readinto�s
z=BufferedRandomTest.test_flush_and_readinto.<locals>._readinto�r�r)r:rrrr�test_flush_and_readinto�s
z*BufferedRandomTest.test_flush_and_readintocCr)Nr�cSs2|�|�}|dkr|d|�}|�t|�d�|S�Nr�rP)rUrMrrrrr�_peek�s

z5BufferedRandomTest.test_flush_and_peek.<locals>._peekr r�r:r#rrr�test_flush_and_peek�s
z&BufferedRandomTest.test_flush_and_peekcCsh|�d�}|�|�}|�d�|��|�d�|��|�dd�|�d|���|�d|���dS)Nrd�123s45rs	12345fghi)r�r�r@rvrMr�r(r^r�rrr�test_flush_and_write�s



z'BufferedRandomTest.test_flush_and_writecCrr=)r?r�r�rCrrrr��rrzBufferedRandomTest.test_threadscCs(dd�}|�|�dd�}|�|�dS)NcS�|�d�dSrz)rUrrrrr#�r�z6BufferedRandomTest.test_writes_and_peek.<locals>._peekcSs.|��}|�dd�|�d�|�|d�dS)Nr�rPr)rNrMrUr�rrrr#�s
r�r$rrr�test_writes_and_peek�s
z'BufferedRandomTest.test_writes_and_peekcC�dd�}|�|�dS)NcS�|�dd�|�d�dSr")rMr^rrrr�_read�rPz7BufferedRandomTest.test_writes_and_reads.<locals>._readr��r:r,rrr�test_writes_and_reads��z(BufferedRandomTest.test_writes_and_readscCr*)NcSr+r")rMr�rrrr�_read1�rPz9BufferedRandomTest.test_writes_and_read1s.<locals>._read1r�)r:r0rrr�test_writes_and_read1s�r/z)BufferedRandomTest.test_writes_and_read1scCr*)NcSs|�dd�|�td��dSr")rMrUr�rrrrr,�sz;BufferedRandomTest.test_writes_and_readintos.<locals>._readr�r-rrr�test_writes_and_readintos�r/z,BufferedRandomTest.test_writes_and_readintoscCs�dD]Q}|�d�}|�|d�}|�|�d�d�|�|��d�|�d|�|�|��|d�|��|�|��|d�|��}|�|dd|dd|�qdS)N)rPrjr/rrP�A�Br�)r�r�r�r^rNr@rvr()r:�overwrite_sizerlrr�rrr�test_write_after_readahead	s
��z-BufferedRandomTest.test_write_after_readaheadc	Cs�dd�}d}tdt|��D]:}t|t|��D]0}|�|�}|�|d�}||||�|��t|�}d||<d||<|�|��|d||f�qq
dS)	NcSsF||ksJ�|�|�|�||�|�d�|�|�|�d�dS)N��)rMr^r@)r�pos1�pos2rrr�mutate	s


z:BufferedRandomTest.test_write_rewind_write.<locals>.mutates�����rr�rerPzfailed result for i=%d, j=%d)r^rr�r�rvr�r�r()r:r;rr[�jrlr�expectedrrr�test_write_rewind_write	s 

���z*BufferedRandomTest.test_write_rewind_writecCs^|�d�}|�|d�}|�|�d�d�|�|��d�|�|�d�d�|�|��d�dS)Nr/r�resAAsBBr)r�r�r�r^rVr@r�rrr�!test_truncate_after_read_or_write2	s
z4BufferedRandomTest.test_truncate_after_read_or_writecCrr=)r?r�r�rCrrrr�:	rrz%BufferedRandomTest.test_misbehaved_ioc	Cs�|�d��h}|�|d��R}|�d�|�|�d�d�|�d�|�|�d�d�|�d�td�}|�|�|�|d	�|�d
�|�|�d�d�|�	�|�|�
�d�Wd�n1sawYWd�n1spwY|�d
��J}|�|d��+}|�|�d�d�|�d�|�|�d�d�|�	�|�|�
�d�Wd�n1s�wYWd�dSWd�dS1s�wYdS)Nsabcdefghr��1rPrM�2r�r��f�4r�s1b2d3f4hr�rLr�sa2c)r�r�r@r�r^r�r�rUrUrvr()r:rlr1rRrrr�test_interleaved_read_write>	s8




���
��"�z.BufferedRandomTest.test_interleaved_read_writec	Cs�|�d��Y}|�|��;}|�d�|�|��d�|�d�|�|��d�|�d�|�|��d�|��|�|��d�Wd�n1sIwYWd�dSWd�dS1sawYdS)	Ns
ab
cdef
g
r@sb
rArr��
s
1b
2def
3
)r�r�r@r�r�rvr()r:rlr1rrr�test_interleaved_readline_writeW	s


��"�z2BufferedRandomTest.test_interleaved_readline_writeN)r$r%r&r�r�rCrHrrrrr!r%r'r�r)r.r1r2r6r>r?r�rDrFr1r�rrrrr�s2
rc@s8eZdZejZedddd�dd��Zdd�Zdd	�Z	d
S)�CBufferedRandomTestTr�r�cCr�r�)rrCrrwrZr�r�r�r�r�r<rrrrrCn	r�z$CBufferedRandomTest.test_constructorcCrr=)r�rrr�rCrrrrrz	rrz+CBufferedRandomTest.test_garbage_collectioncCr�)Nr�r@r�rCrrrr�~	r�z#CBufferedRandomTest.test_args_errorN)
r$r%r&r�r�r�rrCrrr�rrrrrGk	s

rGc@r�)�PyBufferedRandomTestN)r$r%r&r�r�r�rrrrrH�	r�rHc@sPeZdZdZddd�Zdd�Zdd�Zd	d
�Zdd�Zddd�Z	dd�Z
d
ZdS)�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�||�|��dSr=)�codecs�IncrementalDecoderr<�reset)r:rwrrrr<�	sz#StatefulIncrementalDecoder.__init__cCsdt|�S)Nz<SID %x>)�idrCrrr�__repr__�	�z#StatefulIncrementalDecoder.__repr__cCsd|_d|_t�|_dSrz)r[�or�r�rCrrrrM�	sz StatefulIncrementalDecoder.resetcCs,|jdA|jdA}}t|j�|d|fS)NrPr�)r[rQrr�)r:r[rQrrr�getstate�	sz#StatefulIncrementalDecoder.getstatecCs:|\}}t|�|_t|d�\}}|dA|dA|_|_dS)Nr�rP)r�r��divmodr[rQ)r:�stater�r�r[rQrrr�setstate�	s
z#StatefulIncrementalDecoder.setstateFcCs�d}|D]2}|jdkr"|td�kr|jr||��7}q|j�|�q|j�|�t|j�|jkr6||��7}q|rB|jrB||��7}|S)NrFr�.)r[�ordr��process_wordr>r)r:�input�final�outputrrrr�decode�	s
��
z!StatefulIncrementalDecoder.decodecCs�d}|jdtd�krtdt|jdd�pd��|_n;|jdtd�kr4tdt|jdd�p/d��|_n"|j�d�}t|�|jkrH|d|j7}|jrR|d|j�}|d	7}t�|_|S)
NrFrr[�crPrQr��-rV)	r�rWr��intr[rQr\rr�)r:r[rrrrX�	s  z'StatefulIncrementalDecoder.process_wordN)rJr�)r$r%r&rWr<rOrMrRrUr\rX�codecEnabledrrrrrI�	s

rIc	Cs:tjr|dkrt�d�}tjd|jddddtd�SdSdS)N�test_decoderr*)r��encoder\�incrementalencoder�streamreader�streamwriter�incrementaldecoder)rIr`rK�lookup�	CodecInforb)r��latin1rrr�lookupTestDecoder�	s
��rjc@s eZdZdZgd�Zdd�ZdS)�StatefulIncrementalDecoderTestzB
    Make sure the StatefulIncrementalDecoder actually works.
    ))rkFza.b.c.d.)�oiabcdT�abcd.)soi...abcd...Trm)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)NrlrFr[rPrm)�
test_casesrIr�r\)r:rY�eofr[�drrrra
sz+StatefulIncrementalDecoderTest.test_decoderN)r$r%r&rWrnrarrrrrk�	srkc@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�t�t�|�	tj
t�dS)NsAAA
BBB
CCC
DDD
EEE
sAAA
BBB
CCC
DDD
EEE
r�)�testdatar\�
normalizedrr�r�rK�registerrjr��
unregisterrCrrrr�
s

zTextIOWrapperTest.setUpcCr�r=r�rCrrrr�
rizTextIOWrapperTest.tearDowncCs�|�d�}|�|d�}|j|dd�}|j|ddd�|�|jd�|�|jd�|j|dd	d
�|�|jd�|�|jd	�|�d|���|jt	|j|ddd�|jt
|j|dd
d�dS)N�é

rrr�r+r*�
r�FT)r,�line_buffering�é
rGr
)r�r�r�r<r�r,rxr�r�r�r��r:r)rr�rrrrC"
s
z"TextIOWrapperTest.test_constructorcCsj|j�|j�}~|j�|j�}|�tt|�|�ttfd|jd�|j	|�
�dd�|�|�d�d�dS)NrFrr�r+rF)r�rGr�rur�r�r�r:r^r<rZr��r:r�rrrrH0
s
�z$TextIOWrapperTest.test_uninitializedcCsR|��}|�|�}|�td��|j|dd�Wd�dS1s"wYdS)Nzis not a text encoding�hexr+)r�r�r��LookupErrorr�)r:r)rrrr�*test_non_text_encoding_codecs_are_rejected;
s

"�z<TextIOWrapperTest.test_non_text_encoding_codecs_are_rejectedcCs�|��}|�|�}|j|dd�}|�|��|�|j|dd�}|�d�|�|���|��|�|��d�|�	t
|j�t|�|�|jd�|�|j
d�|�|j�|�|j�dS)Nr�r+�howdyshowdyrJ)r�r�r�r�r�r@r�r(r�r�r�r�r,rwrx�
write_throughrzrrrr�D
s

zTextIOWrapperTest.test_detachcCs�|�d�d��}|�|�}|j|dd�}|jj}|�t|�d|�d|_|�t|�d|�d|_|�t|�d|�d	|_|�t|�d
|�|j	�
�t|�dS)N�hellor�r+z'<(%s\.)?TextIOWrapper encoding='utf-8'>rz4<(%s\.)?TextIOWrapper name='dummy' encoding='utf-8'>r)z=<(%s\.)?TextIOWrapper name='dummy' mode='r' encoding='utf-8'>rz><(%s\.)?TextIOWrapper name=b'dummy' mode='r' encoding='utf-8'>)r�rbr�r�r%rr�r��moder�r�)r:rlrr��modnamerrrrX
s*

�
�
�
�
zTextIOWrapperTest.test_reprc	Csz|��}|j|dd�}t�|d|��!zt|�Wn	ty"Yn	wWd�dSWd�dS1s6wYdS)Nr�r+r�)r�r�rrr�r�r:rlr�rrrrl
s���"�z%TextIOWrapperTest.test_recursive_reprcCsx|��}|�|d�}|j|dddd�}|�d�|�|��d�|�d�|�|��d	�|�d
�|�|��d�dS)Nrrr��
T�r,r�rx�Xr[zY
ZsXY
ZzA
BsXY
ZA
B)r�r�r�r@r�r(rzrrr�test_line_bufferingv
s


z%TextIOWrapperTest.test_line_bufferingcCs|��}|�|d�}|j|dddd�}|�d�|�|��d�|jdd	�|�|��d
�|�d�|�|��d�|�d
�|�|��d�|jdd	�|�|��d�|�d�|�|��d�|��|jdd	�|�|jd�|jdd	�|��|jdd	�|�|jd�dS)Nrrr�r�Fr�zAB
Cr[T)rxsAB
CzDEF
Gs	AB
CDEF
G�Hs
AB
CDEF
GH�IJ)r�r�r�r@r�r(�reconfigurerxrzrrr�test_reconfigure_line_buffering�
s,



z1TextIOWrapperTest.test_reconfigure_line_bufferingzutf-8 mode is enabledc	Cs�ttj�}zKdD]}|tjvrtj|=qt�d�}|��}t���t�dt	�|�
|�}Wd�n1s7wY|�|j|�Wtj�
�tj�|�dStj�
�tj�|�w)N)�LC_ALL�LANG�LC_CTYPEFr)�dictr��environ�locale�getpreferredencodingr�r
rr�EncodingWarningr�r�r,�clear�update)r:�old_environ�key�current_locale_encodingrr�rrr�test_default_encoding�
s"

�

�

�z'TextIOWrapperTest.test_default_encodingcsXddl�|��}�fdd�|_|jt|j|dd��fdd�|_|jt|j|dd�dS)Nrc�
�jdSrz)�INT_MAXr��	_testcapirrr~�
rz8TextIOWrapperTest.test_device_encoding.<locals>.<lambda>r�r+cr�rz)�UINT_MAXrr�rrr~�
r)r�r�rHr�r�r�r?rr�r�test_device_encoding�
sz&TextIOWrapperTest.test_device_encodingcCs~|��}|j|dd�}|�|jd�t���t�dt�|�|�}Wd�n1s,wY|�|j�t	�
|j�dS)Nr�r+r)r�r�r�r,r
rrr��assertIsNotNonerKrg�r:rr�rrr�
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+rJ�r,rwrzabc

�replaceuabc
�
)r�r�r��UnicodeErrorr^r�r�rrr�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+�ÿrJr�rr�)r,rwr�u	abcÿdef
sabcdef
r�sabc?def
)r�r�r�r�r@rvr�r(r�rrr�test_encoding_errors_writing�
s(
�

�
z.TextIOWrapperTest.test_encoding_errors_writingc	Cs*gd�}dgd�gd|gdgd�gdddggd	gd
�gg}d}|D]q}td�|��|��}dD]b}td
d�D]Z}|D]U\}}	|�|�|�|�}
|j|
||d�}|rqg}	|�d�}
|
dkr^n|�t	|
�d�|�
|
|���qTnt|�}t
||	�D]
\}}|�||�qz|�t	|�t	|	��q:q6q/q!dS)N)�unix
�	windows
zos9
�last
�nonl)r�zwindows
zos9
r�r�rFr�)r�r�z	os9
last
r�rwzunix
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)FTrPr��r�r,Tre)rr�rbr^r�r�r�r^r�rr>r�r5�zip)r:�input_linesr�	encodingsr,r �do_readsr0r��	exp_linesr�textio�	got_lines�c2�got_line�exp_linerrr�
test_newlines�
sF



��
�����zTextIOWrapperTest.test_newlinescCs�d}|�dd��dd�}d|�d�jdd�fd|�d�jdd�fd	gd
�fdgd�fd
gd�ffD])\}}|�|�}|j|d|d�}|�|��|�|�d�|�|��d�	|��q1dS)NsAAA
BBB
CCC
DDD
EEE
FFF
GGGs
rE�
r�T)�keependsrFr�)zAAA
zBBB
z
CCC
DDD
EEE
�FFF
�GGGrw)zAAA
BBB
CCC
DDD
EEE
r�r�r�)z
AAA
BBB
CCC
zDDD
zEEE
z
FFF
z
GGGr�r)
r�r\�
splitlinesr�r�r�r&rMr^r�)r:rrrsr�r=rR�txtrrr�test_newlines_inputs


�

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

ZsAAA
BBB
CCC
X
Y

Z)rFr�r�rwr�r�zAAA
BzBB
CCC
zX
Y
ZF)r��linesep�sorted�itemsr�r�r@rvr�r|r()r:�testdictrr�r=rRr�rrr�test_newlines_output+s �


�z&TextIOWrapperTest.test_newlines_outputcsZg�|j�G��fdd�d��}|�}|j|dd�}|�d�~t��|�dg��dS)NcseZdZ��fdd�ZdS)z4TextIOWrapperTest.test_destructor.<locals>.MyBytesIOcs��|�����|�dSr=)r>r(r~rC�rRr�rrr~A�z:TextIOWrapperTest.test_destructor.<locals>.MyBytesIO.closeNr�rr�rr�	MyBytesIO@sr�r�r+r�r�)r�r�r@rrJr�)r:r�rr�rr�rrK=s
z!TextIOWrapperTest.test_destructorcsLg�G�fdd�d|j�}|��}||dd�}~t��|��gd��dS)Ncr6)z<TextIOWrapperTest.test_override_destructor.<locals>.MyTextIOcr7rzr8r�r;rrr9Nr=zDTextIOWrapperTest.test_override_destructor.<locals>.MyTextIO.__del__cr>rdr?rCr;rrr~VrrzBTextIOWrapperTest.test_override_destructor.<locals>.MyTextIO.closecr>r@rArCr;rrrvYrrzBTextIOWrapperTest.test_override_destructor.<locals>.MyTextIO.flushrBrrCrgr�MyTextIOMrEr�r�r+rG)r�r�rrJr�)r:r�rr�rrCrrKsz*TextIOWrapperTest.test_override_destructorc	Cs�|��}t���L}|�t��|j|dd�jWd�n1s!wYts/|�|j	�n|j	durD|�
|j	jt�Wd�dSWd�dSWd�dS1sWwYdS)Nr�r+)
ryrr	r�r:r�r
rrprr�r
r}rrrrrbs
�
��"�z/TextIOWrapperTest.test_error_through_destructorcCs�dD]�}dD]�}|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)rPrer�rrjr�rA��� �!�?�@�A)r�r*r��w+r+r�r��r+rrer2rPr�rF�def�utf)r-rr�r/r�r@r~rNr^rMr�multi_line_test)r:�	chunksize�encr1�cookierrr�
test_basic_ioqs:


��zTextIOWrapperTest.test_basic_iocCs�|�d�|��d}g}dD]+}g}t|�D]
}|�||t|��qd�|�d}|�|��|f�|�|�q|�d�g}		|��}
|��}|sNn|	�|
|f�qC|�	|	|�dS)Nru	sÿ࿿￿)rrPrer�rrj�r�r�r��>r�r�r�rrrFr�)
rMrVr^r>rr�rNr@r�r�)r:r1r��sample�wlinesr��charsr[�line�rlinesrrrrr��s*

�z!TextIOWrapperTest.multi_line_testcCs�|jtjddd�}|��}|�d�|��}|�d�|��}|�d�|�|��|�|�|��d�|�|��|�|�|��d�|�|��|�|�d�|D]}|�|d�|�t	|j�qS|�|��|�|�
�dS)Nr�r�r+uÿ
r)r-rr�rNr@rMr�r�r�r}r~)r:r1�p0�p1�p2r�rrr�test_telling�s$



zTextIOWrapperTest.test_tellingc
Cst�}|d}d|}t|�d��}|�t|�t|��d}t|�d��}||}|�tjd��}|�|d�Wd�n1sBwY|jtjddd��'}|�	|�}	|�|	t
|d��|�|��|�|�|��|�Wd�dS1szwYdS)	Nrer3r��袈
r�r)r+r�)
r2rrbr�rr-rr�r@r^r�rNr�)
r:�
chunk_size�prefix_size�u_prefix�prefix�u_suffix�suffixr�r1r�rrr�test_seeking�s"�
"�zTextIOWrapperTest.test_seekingcCs�d}|�tjd��
}|�|�Wd�n1swY|jtjddd��}|jd|_|��|��Wd�dS1sAwYdS)Ns࿿
r�r)r�r+re)r-rr�r@r/r�rN)r:r r1rrr�test_seeking_too�s�
"�z"TextIOWrapperTest.test_seeking_toocs�d�d��fdd�	}dt_z3tjD]	\}}}||�qtjD]\}}}�t|�d}d|}|d}||||�qWdt_dSdt_w)	N�rc	s���tjd�}|�|�|���jtjdd�}�|_|��}|��t|t|�d�D]K}ddt|�|fD]?}�jtjdd�}��	|�|�|d|��|�
�}��	|�|�||||��|�|���	|��||d��|��q7q,dS)zTell/seek to various points within a data stream and ensure
            that the decoded data returned by read() is consistent.r�rar+rPrjN)r-rr�r@r~r/r^r^rr�rNrM)r �min_posr1�decodedr[r<r���
CHUNK_SIZEr:rr�test_seek_and_tell_with_data�s$


��zJTextIOWrapperTest.test_seek_and_tell.<locals>.test_seek_and_tell_with_datarPre�.r�)rIr`rkrnr)r:r�rY�_�offsetr�r�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�r@r~r�r�rNrM)r:r1r�r�rrr�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�r@rNrMr~r�r�)r:r1r�rrr�test_seek_with_encoder_states



z.TextIOWrapperTest.test_seek_with_encoder_statecCs�d}d}|D]B}|��}|j||d�}|�|�|�|�|�d�|�|��|d�|�d�|�|��|d�|�|��|d�|��qdS)N�
1234567890)r�r�r�r�r�r�r+rre)r�r�r@rMr�r^r(rb)r:r rr,rRr1rrr�test_encoded_writess



�z%TextIOWrapperTest.test_encoded_writescCs4Gdd�d|j�}|j|�dd�}|�t|j�dS)Nc@r)z5TextIOWrapperTest.test_unreadable.<locals>.UnReadablecSrAr�rrCrrrrI5rEz>TextIOWrapperTest.test_unreadable.<locals>.UnReadable.readableNr�rrrr�
UnReadable4rrr�r+)r�r�r�r}r^)r:rr�rrr�test_unreadable3sz!TextIOWrapperTest.test_unreadablecC�D|j|�d�dd�}d}	|�d�}|sn||7}q
|�|d�dS)NsAA
BBr�r+rFTrPzAA
BB�r�r�r^r��r:r��readsr�rrr�test_read_one_by_one:s
�z&TextIOWrapperTest.test_read_one_by_onecCsl|j|�d�dd�}|�|��gd��|�d�|�|�d�gd��|�d�|�|�d�ddg�dS)	NsAA
BB
CCr�r+)�AA
�BB
�CCrrjrr
)r�r�r�r&rM�r:r�rrrrcDs

z TextIOWrapperTest.test_readlinescCr)Ns�AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
Br�r+rFTr�z�AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
Brr	rrr�test_read_by_chunkMs
�z$TextIOWrapperTest.test_read_by_chunkcCsDgd�}|��}|j|dd�}|�|�|��|�|��d�dS�N)r2�cd�efr�r+r�)r�r�r�rvr�r(�r:r�rRr�rrrr�Xs
z!TextIOWrapperTest.test_writelinescCsHtgd��}|��}|j|dd�}|�|�|��|�|��d�dSr)rr�r�r�rvr�r(rrrrr�`s
z*TextIOWrapperTest.test_writelines_userlistcCsJ|j|��dd�}|�t|jgd��|�t|jd�|�t|jd�dS)Nr�r+rGr�)r�r�r�r�r�rrrrr�hsz'TextIOWrapperTest.test_writelines_errorcCsH|j|�|j�dd�}d}	|�d�}|sn||7}q|�||j�dS)Nr�r+rFTrP)r�r�rrr^r�rsr	rrr�test_issue1395_1ns
�z"TextIOWrapperTest.test_issue1395_1cCsN|j|�|j�dd�}d|_d}	|�d�}|sn||7}q|�||j�dS)Nr�r+rrF�r�r�rrr/r^r�rsr	rrr�test_issue1395_2zs
�z"TextIOWrapperTest.test_issue1395_2cCsj|j|�|j�dd�}d|_|�d�}||�d�7}||��7}||��7}||��7}|�||j�dS�Nr�r+r)r�r�rrr/r^r�r�rs�r:r�r
rrr�test_issue1395_3�s
z"TextIOWrapperTest.test_issue1395_3cCsD|j|�|j�dd�}d|_|�d�}||��7}|�||j�dSrrrrrr�test_issue1395_4�s

z"TextIOWrapperTest.test_issue1395_4cCsX|j|�|j�dd�}d|_|�d�}|��}|�d�|�|�|�|�d�d�dS)Nr�r+rrzBBB
)r�r�rrr/r^rNrMr�)r:r�r
rrrr�test_issue1395_5�s


z"TextIOWrapperTest.test_issue1395_5cCs2|�|j�}|j|dd�}|�|��|���dS�Nr�r+)r�rrr�r�rJ)r:r�r�rrr�test_issue2282�sz TextIOWrapperTest.test_issue2282c	Cstj}dD]�}|j|d|d��}|�d�|��}Wd�n1s#wY|�|d��}|�|��d�|��Wd�n1sDwY|j|d|d��
}|�d�Wd�n1sawY|�|d��}|�|��d�|��Wd�n1s�wYqdS)	N��	utf-8-sigr�r�r�r+�aaar�r3�xxx�aaaxxx)rr�r-r@rNr�r^rb�r:�filename�charsetr1rrrr�test_append_bom�s"

������z!TextIOWrapperTest.test_append_bomc	Cs�tj}dD]p}|j|d|d��}|�d�|��}Wd�n1s#wY|j|d|d��}|�|�|�d�|�d�|�d�Wd�n1sOwY|�|d	��}|�|��d
�|��Wd�n1spwYqdS)Nrr�r+r!r��zzzr�bbbr��bbbzzz)	rr�r-r@rNrMr�r^rbr$rrr�
test_seek_bom�s"

�


����zTextIOWrapperTest.test_seek_bomc	Cs�tj}dD]i}|j|d|d��
}|�d�Wd�n1swY|j|d|d��}|�d�|�d|j�|�d�Wd�n1sHwY|�|d��}|�|��d	�|��Wd�n1siwYqdS)
Nrr�r+r!r3rr"r�r#)	rr�r-r@rMr�r�r^rb)r:r%r&r1rrr�test_seek_append_bom�s�
����z&TextIOWrapperTest.test_seek_append_bomcCs�|jtjddd��}|�|jd�Wd�n1swY|jtjdddd��}|�|jd�Wd�dS1s=wYdS)Nr�r�r+rJr�r�)r-rr�r�rwr�rrr�test_errors_property�s�"�z&TextIOWrapperTest.test_errors_propertyc	s�t���|jtjdddd��6���fdd���fdd�td	�D�}t�|�j��
t	�
d
�Wd�n1s8wYWd�n1sGwY|jtjdd������}td	�D]
}|�|�
d|�d�q]Wd�dS1svwYdS)
Nr�r�rPr�csd|}�����|�dS)N�Thread%03d
)r�r@)rT�text)�eventr1rr�run�sz1TextIOWrapperTest.test_threads_write.<locals>.runcsg|]
}tj�|fd��qS)r�r|r})r1rrr�s�z8TextIOWrapperTest.test_threads_write.<locals>.<listcomp>r�r�r+r.)rorpr-rr�r^rr�rsrtrur^r�r)r:r��contentrTr)r0r1r1r�test_threads_write�s"
����	�"�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��r=)r|r�r}r�r|r�rrr}�sz>TextIOWrapperTest.test_flush_error_on_close.<locals>.bad_flushrrPcSrr=rrrrrr~�rz=TextIOWrapperTest.test_flush_error_on_close.<locals>.<lambda>)r�r�rrrvr�r}r~r�r|r�r�rrr4rr��s
z+TextIOWrapperTest.test_flush_error_on_closecCs�|�|j�}dd�}dd�}||_|j|dd�}||_|�t��}|��Wd�n1s/wY|�|jj	d�|�
|jjt�|�|jjj	d�|�|j
�d	d
�|_dd
�|_dS)NcSrrr�rrrrr}�rz>TextIOWrapperTest.test_close_error_on_close.<locals>.bad_flushcSrrr�rrrrr
rz>TextIOWrapperTest.test_close_error_on_close.<locals>.bad_closer�r+r r!cSrr=rrrrrr~
rz=TextIOWrapperTest.test_close_error_on_close.<locals>.<lambda>cSrr=rrrrrr~
r)r�rrr~r�rvr�r}r�r�r�r"r#r�r|�r:r�r}rr�r%rrrr&�s
�
z+TextIOWrapperTest.test_close_error_on_closecCs�|�|j�}dd�}dd�}||_|j|dd�}||_|�t��}|��Wd�n1s/wY|�dt|j	��|�
|j	jt�|�dt|j	j��|�|j
�d	d
�|_dd
�|_dS)NcSr'r=r(rrrrr}
rEzLTextIOWrapperTest.test_nonnormalized_close_error_on_close.<locals>.bad_flushcSr'r=r*rrrrr
rEzLTextIOWrapperTest.test_nonnormalized_close_error_on_close.<locals>.bad_closer�r+r+r)cSrr=rrrrrr~#
rzKTextIOWrapperTest.test_nonnormalized_close_error_on_close.<locals>.<lambda>cSrr=rrrrrr~$
r)r�rrr~r�rvr�r,r-r�r�r"r#r�r|r5rrrr.
s
�
z9TextIOWrapperTest.test_nonnormalized_close_error_on_closecCs@|j|�|j�dd�}|��|��|��|�t|j�dSr)r�r�rrr~r�r�rvrrrrr�&
s
z"TextIOWrapperTest.test_multi_closecCs<|j|�|j�dd�}|�|j|j�|�|j|jd�dS)Nr�r+r)r�r�rrr�r�rNrMrrrrr1-
sz!TextIOWrapperTest.test_unseekablecCsX|j|�|j�dd�}|�|j�}|�t��||_Wd�dS1s%wYdSr)r�r�rrr�r:r�)r:r�rRrrrr32
s
"�z*TextIOWrapperTest.test_readonly_attributescCsX|�gd��}|j|ddd�}|�|�d�d�|�|��d�|�t|�dd	g�dS)
N�r�r�sghi
jkl
opq
r�r�r�r�abcdzefghi
zjkl
zopq
)rZr�r�r^r�r5�r:rlr�rrr�
test_rawio8
s
zTextIOWrapperTest.test_rawiocCsV|�gd��}|j|dddd�}|�d�|�d�|�d�|�d	�|j�d
�dS)Nr6r�r�T)r,r�r��1z23
4�5r[s123
45)rZr�r@r�r�r7r8rrr�test_rawio_write_throughC
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>.BufferedWriterc���d�t�j|i|��SrBrA�r:r�r�)rh�flush_calledrrrvR
�
zHTextIOWrapperTest.test_bufio_write_through.<locals>.BufferedWriter.flushcr=rB)r>rfr@r>)rh�write_calledrrr@U
r@zHTextIOWrapperTest.test_bufio_write_through.<locals>.BufferedWriter.write)r$r%r&rvr@rkr�r?rArgrr�Q
sr�rLrer�T)r,r�r[r�r)
r�r�rr�r\r@r�r�r�r()r:r�r�r rr�r/rrBr�test_bufio_write_throughM
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�r�r�r:T)r�r[r@�23r&F�45r�)	rZr�r@r�r�r�r�r7rvr�rrr�test_reconfigure_write_throughm
s(



z0TextIOWrapperTest.test_reconfigure_write_throughcCsl|j|�d�dd�}|�t|jd�|j|�d�dd�}|�t|j�|j|�d�dd�}|�t|j�dS)Nr3r�r+rP)r�r�r�r�r^r�r{rrr�test_read_nonbytes�
sz$TextIOWrapperTest.test_read_nonbytescCs`t�d�}t�|dd��tjt�d�dd�}Wd�n1s!wY|�t|j	d�dS)N�rot13�_is_text_encodingT�foor+�bar)
rKrgrrr�r�r�r�r�r@)r:rHr�rrr�test_illegal_encoder�
s

�z&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|_|Sd|_w)N�quopriTsaaaaaar�r�F)rKrgrIr�r�)rMr�rCrr�_make_illegal_wrapper�
s
��zETextIOWrapperTest.test_illegal_decoder.<locals>._make_illegal_wrapperrPcs`G�fdd�d���fdd�}t�d�}t�|d|����Wd�S1s)wYdS)NcseZdZ�fdd�ZdS)z^TextIOWrapperTest.test_illegal_decoder.<locals>._make_very_illegal_wrapper.<locals>.BadDecodercr�r=rrC��getstate_ret_valrrrR�
rEzgTextIOWrapperTest.test_illegal_decoder.<locals>._make_very_illegal_wrapper.<locals>.BadDecoder.getstateN)r$r%r&rRrrOrr�
BadDecoder�
srQcs��Sr=r)r)rQrr�_get_bad_decoder�
r�zdTextIOWrapperTest.test_illegal_decoder.<locals>._make_very_illegal_wrapper.<locals>._get_bad_decoderrMrf)rKrgrr)rPrRrM)rN)rQrPr�_make_very_illegal_wrapper�
s
�$�zJTextIOWrapperTest.test_illegal_decoder.<locals>._make_very_illegal_wrapperrGr)rPre)r�r�r^r�)r:r�rSr)rNr:r�test_illegal_decoder�
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()
            )�iomodr��-c)r�r$rvr)r:r�rU�coderrr�_check_create_at_shutdown�
s
�
z+TextIOWrapperTest._check_create_at_shutdowncCs@|��\}}}|r|�|j|���dS|�d|�����dS)N�ok)rXr-�shutdown_errorr\r��strip�r:�rc�outr%rrr�(test_create_at_shutdown_without_encoding�
sz:TextIOWrapperTest.test_create_at_shutdown_without_encodingcCs6|jddd�\}}}|�|�|�d|�����dS)Nr�rJr�rY)rXr�r�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�r�)�MemviewBytesIOr��_to_memoryviewr(r_r�r^r\)r:r)r��	bytes_valrrr�test_read_byteslike�
sz%TextIOWrapperTest.test_read_byteslikec	CsbGdd�dt�}td�D]}z
|j|�dd�Wqty!Yqwdd�|_|j|�dd�}dS)Nc@r�)z,TextIOWrapperTest.test_issue22849.<locals>.FcSrArBrrCrrrrI�
rz5TextIOWrapperTest.test_issue22849.<locals>.F.readablecSrArBrrCrrrrD�
rz5TextIOWrapperTest.test_issue22849.<locals>.F.writablecSrArBrrCrrrrJ�
rz5TextIOWrapperTest.test_issue22849.<locals>.F.seekableN)r$r%r&rIrDrJrrrr�F�
srer�r�r+cSrAr4r�r2rrrr~�
rz3TextIOWrapperTest.test_issue22849.<locals>.<lambda>)�objectr^r�rurN)r:rer[r�rrr�test_issue22849�
s�
z!TextIOWrapperTest.test_issue22849cCs�d�d�d�d�}|�|�}|j|ddd�}|�|��d�|�|j��|jdd�Wd�n1s6wY|�|j��|jdd	�Wd�dS1sSwYdS)
N�abcé
ri�déf
�utf8r�r�r�r+�r�)rbr�r�r�r�r�r�r�)r:r rlr�rrr�test_reconfigure_encoding_read�
s
�"�z0TextIOWrapperTest.test_reconfigure_encoding_readcCsT|��}|j|ddd�}|�d�|jdd�|�d�|��|�|��d�dS)	Nr�r�r�zfoo
r r+rysfoo
é
)r�r�r@r�rvr�r(r8rrr� test_reconfigure_write_fromasciis

z2TextIOWrapperTest.test_reconfigure_write_fromasciicCs�|��}|j|ddd�}|�d�|jdd�|�|��d�|�d�|��|�|��d	�|��}|j|d
dd�}|�d�|jdd�|�d�|��|�|��d
�dS)Nrir�r�rir�r+sabc�
rjs
abc�
déf
r��abc
r s	abc
déf
)r�r�r@r�r�r(rvr8rrr�test_reconfigure_writes



z(TextIOWrapperTest.test_reconfigure_writecCsd|��}dd�|_d|_|j|ddd�}|�d�|jdd�|�d	�|��|�|��d
�dS)NcSrAr�rrrrrr~+rzGTextIOWrapperTest.test_reconfigure_write_non_seekable.<locals>.<lambda>r�r�r�ror r+rjsabc
déf
)	r�rJrMr�r@r�rvr�r(r8rrr�#test_reconfigure_write_non_seekable)s


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�r�r�r+�LF
rwrlr)rw�CRLF
r�r�rJrzLF
CRLF
s	LF
CRLF
)r�r�r�r�r,rwr@rMr^r�r(rrrr�test_reconfigure_defaults6s"


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�r�rlzCR
rFzCR
s	CR
LF
EOFr�zCR
LF
s	LF
CR
EOFzLF
CR
sCR
CRLF
EOFrwz	CR
CRLF
zlinesep
rrrsr�zLF
LF
CR
CRLF
)r�r�r�r�r�r@r�r�r�r(r\)r:rlr�r=rrr�test_reconfigure_newlineMsB









z*TextIOWrapperTest.test_reconfigure_newlinecCsb|j|�d�dd�}|�d�|��|��|j|�d�dd�}|�d�|�d�|��dS)Nstestr�r+rPr2)r�r�r^rNr@r{rrr�test_issue25862qs


z!TextIOWrapperTest.test_issue25862N)Tr$r%r&r�r�rCrHr~r�rrr�r��unittest�skipIfrr��	utf8_moder�rr>r�r�r�r�r�r�r�rKrrr�r�r�r�r�rr�rrrrrcrr�r�r�rrrrrrr'r+r,r-�
no_tracingr3r�r&r.r�r1r3r9r<rCrFrGrLrTrXr_r`rdrhrmrnrprqrtrurvrrrrrq
s�	

	*/

	



 
(	
$rqcs,eZdZdZ�fdd�Z�fdd�Z�ZS)razOA BytesIO object whose read method returns memoryviews
       rather than bytesc�tt��|��Sr=)rbrfr��r:�len_rgrrr��rizMemviewBytesIO.read1cr{r=)rbrfr^r|rgrrr^�rizMemviewBytesIO.read)r$r%r&rWr�r^rkrrrgrra}sracCs:t�d�}t|�t|�|j}|�|d|��t|�S)z6Convert bytes-object *buf* to a non-trivial memoryviewr[N)rr�itemsize�	frombytesr)rR�arr�idxrrrrb�s
rbc@s<eZdZeZdZdd�Zdd�Zdd�Zdd	�Zd
d�Z	dS)
�CTextIOWrapperTest�$LookupError: unknown encoding: asciicCsh|�d�}|�|d�}|j|dd�}|jt|j|ddd�|�t|j�|j�|j�}|�tt	|�dS)Nrvrrr�r+r
r�)
r�r�r�r�r�r<r^rGrur�rzrrrr��s
z&CTextIOWrapperTest.test_initializationcCs�t�dtf��-t�tjd�}|�|�}|j|dd�}|�	d�||_
t�|�}~t
��Wd�n1s7wY|�|�|�|�tjd��}|�|��d�Wd�dS1s^wYdS)NrFr�r�r+�456defr�s456def)r
rHrIr�r�rr�r�r�r@r2rnrorrJrpr-r�r^)r:r�rr�rqr1rrrrr�s



�	"�z*CTextIOWrapperTest.test_garbage_collectioncCsjtd�D]*}|�|��|���}|j|dd�}|�|��|���}|j|dd�}||_||_qt��dS)Nrrr�r+)r^r�rZr��buddyrrJ)r:r[�b1�t1�b2�t2rrr�!test_rwpair_cleared_before_textio�sz4CTextIOWrapperTest.test_rwpair_cleared_before_textiocCsF|j|��dd�}|�t��|`Wd�dS1swYdSr)r�r�r�r:r/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�n1sDwY|�d
g|j�|�d�|�d��|�d
dd
�g|j�dS)Nr6cseZdZ��fdd�Z�ZS)z<CTextIOWrapperTest.test_internal_buffer_size.<locals>.MockIOcst|��krt�t��|�Sr=)rrrfr@r�)rhr�rrr@�szBCTextIOWrapperTest.test_internal_buffer_size.<locals>.MockIO.write)r$r%r&r@rkr�r�rgr�MockIO�sr�r�r+r�r�r2rPr��ghir�r�)rZr�r/r@r�r7r�r)r:r�rRr�rr�r�test_internal_buffer_size�s

�
z,CTextIOWrapperTest.test_internal_buffer_sizeN)
r$r%r&r�rZr�rrr�r�r�rrrrr��s
r�c@seZdZeZdZdS)�PyTextIOWrapperTestr�N)r$r%r&r�r�rZrrrrr��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|��|�dSr=)rRr�r\rU)rr�r�rT��decoderr:rr�
_check_decode�s
zPIncrementalNewlineDecoderTest.check_newline_decoding_utf8.<locals>._check_decodes袈u袈��rF����r[T)rZrEr�r�rLz
a�

z

s
as袈
r�s袈
)r��UnicodeDecodeErrorr\rM)r:r�r�rr�r�check_newline_decoding_utf8�s4



















z9IncrementalNewlineDecoderTest.check_newline_decoding_utf8csg�|durt�|������fdd�}n	d���fdd�}|��jd�|d�|��jd�|d�|��jd�|d�|��jd�|d	�|��jd
�|d�|�d���d����d	}�durq�����|�}|���|�d	�|��jd�dS)
Ncs*��|�D]
}����t|g���qdSr=)rbr>r\r)r�r�r��encoderr�rr�_decode_bytewises�zNIncrementalNewlineDecoderTest.check_newline_decoding.<locals>._decode_bytewisecs|D]
}����|��qdSr=)r>r\)r�r�)r�r�rrr�s�zabc

r�z
abc)r�rwzabc
r�)r�r�rwrFzabc

abcabc
abcabc)rK�getincrementalencoderr��newlinesr�rMrbr\)r:r�r,r�rYrr�r�check_newline_decodings0
z4IncrementalNewlineDecoderTest.check_newline_decodingcCspd}|D]}|o
t�|��}|j|dd�}|�||�qt�d��}|j|dd�}|�|�|�t|jd�dS)N)	Nr�r*r�r�r�r�r�r�T��	translater�rG)rK�getincrementaldecoder�IncrementalNewlineDecoderr�r�r�r�rU)r:r�r�r�rrr�test_newline_decoder0s
z2IncrementalNewlineDecoderTest.test_newline_decodercs<�fdd�}�jddd�}||��jddd�}||�dS)NcsR��|jd���|�d�d���|jd���|�d�d���|jd�dS)Nuഀu਀)r�r�r\)�decrCrr�_checkCs
z@IncrementalNewlineDecoderTest.test_newline_bytes.<locals>._checkFr�T)r�)r:r�r�rrCr�test_newline_bytesAs
z0IncrementalNewlineDecoderTest.test_newline_bytescCs\dD]}t�d��}|�||�}|�|�qt�d��}|j|dd�}|�|�d�d�dS)N)r�r�rPrer�rr�r�z

)rKr�r�r�r�r\)r:r�r�rrr�test_translateNsz,IncrementalNewlineDecoderTest.test_translateN)r$r%r&r�r�r�r�r�rrrrr��s*!
r�c@seZdZejdd��ZdS)�CIncrementalNewlineDecoderTestcCsN|j�|j�}|�t|jd�|�t|j�|�t|jd�|�t|j�dS)N�bar)rJr)r�rGr�r�r\rRrUrM)r:�
uninitializedrrrrHYs�z1CIncrementalNewlineDecoderTest.test_uninitializedN)r$r%r&rr>rHrrrrr�Xsr�c@r")�PyIncrementalNewlineDecoderTestNr#rrrrr�cr'r�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/d0�Zeje j!e"d1�d2d3���Z#d4S)5�
MiscIOTestcCr�r=r�rCrrrr�krizMiscIOTest.tearDowncCsz|jjD]6}t|j|d�}|�||�|dvrqd|��vs"|dkr,|�t|t�|�q|�d�s:|�t||j	��qdS)N)r-�	open_code�errorr��SEEK_)
r��__all__r�r��lowerr��
issubclassrurr )r:r�r!rrr�test___all__ns
��zMiscIOTest.test___all__cCs�|jtjddd�}|�|jd�|��t�dtf��|jtjddd�}Wd�n1s/wY|�|j	tj�|�|j
j	tj�|�|j
jj	tj�|�|jd�|�|j
jd�|�|j
jjd�|��|jtjd	dd�}|�|jd	�|�|j
jd
�|�|j
jjd
�|j|��ddd�}|�|jd�|�|jjd�|�|j	|���|�|jj	|���|��|��dS)
Nr�rr�rF�Ur�r+r�r�r
Frg)
r-rr�r�r�r~r
rHrr�r�rlrH)r:r1�grrr�test_attributesys0�zMiscIOTest.test_attributescCsVt��\}}|�tj|�|j|ddd�}|�|j�tjdkr)|�|���dSdS)Nr3r�r+�win32)	r�r�r�r~r-rrr�rJ)r:r)r�r1rrr�test_open_pipe_with_append�s
�z%MiscIOTest.test_open_pipe_with_appendcCsddiddiddd�ddd�ddd�ddidd	iddd�ddd�d	dd�dd
iddid
dd�d
dd�ddd�fD]�}d|dvrDd
|d<|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�r�|�t|j�t
|d�r�|�t|jtd��t
|d�r�|�t|jtd��|�t|j�|�t|j�|�t|jd�|�t|jd�|�t|j�|�t|j�|�t|jd|dvr�dnd�|�t|jg�|�tt|�q8dS)Nr�r�r�rP�r�r�rerr)r�r�r,rr�r,rUr�r@r�rUr�r[rF)r-rr�r~r�r�rvrHr�__iter__r�rUr^r�r�rUr�r�r�r&rMrNrVr@r�r")r:r�r1rrr�test_io_after_close�s`�





��zMiscIOTest.test_io_after_closecCsXGdd�dt�}|d�}|�d|�}||_||_t�|�}~~t��|�|�|�dS)Nc@r")z*MiscIOTest.test_blockingioerror.<locals>.CNr#rrrr�C�r'r�rFrP)	r�r�rr�rnrorrJrp)r:r�r�rrqrrr�test_blockingioerror�s
zMiscIOTest.test_blockingioerrorcCsD|�|jtj�|�|jtj�|�|jtj�|�|jtj�dSr=)r"r r��ABCMetarr�rrCrrr�	test_abcs�szMiscIOTest.test_abcscCs@|jtjddd��$}|�||j�|�||j�|�||j�|�||j�Wd�n1s0wY|�tjd��$}|�||j�|�||j�|�||j�|�||j�Wd�n1scwY|jtjddd��%}|�||j�|�||j�|�||j�|�||j�Wd�dS1s�wYdS�Nr�rr�r�r�r+)	r-rr�r"r r�assertNotIsInstancer�r)r:�	abcmoduler1rrr�_check_abc_inheritance�s$��"�z!MiscIOTest._check_abc_inheritancecCs|�|�dSr=)r�rCrrr�test_abc_inheritance�szMiscIOTest.test_abc_inheritancecCs|�t�dSr=)r�r�rCrrr�test_abc_inheritance_official�sz(MiscIOTest.test_abc_inheritance_officialcOsht|i|��}t|�}|�t��}d}t��Wd�n1s!wY|�|t|jj	d��dSr4)
r-r��assertWarnsrIrrJr-r��warningr�)r:r�r�r1r)r�rrr�_check_warn_on_dealloc�s
�z!MiscIOTest._check_warn_on_dealloccCs6|jtjddd�|�tjd�|jtjddd�dSr�)r�rr�rCrrr�test_warn_on_deallocszMiscIOTest.test_warn_on_dealloccs�g��fdd�}|�|�t��\}}�||f7�|j|g|�Ri|��t��\}}�||f7�t�|��t|g|�Rddi|��Wd�dS1sOwYdS)NcsN�D]"}zt�|�Wqty$}z
|jtjkr�WYd}~qd}~wwdSr=)r�r~r}r�r�)r�rv��fdsrr�cleanup_fdss����z9MiscIOTest._check_warn_on_dealloc_fd.<locals>.cleanup_fdsrcF)r�r�r�r�r
r�r-)r:r�r�r�r)r�rr�r�_check_warn_on_dealloc_fds
"�z$MiscIOTest._check_warn_on_dealloc_fdcCs*|jddd�|�d�|jddd�dS)Nr�rr�r)r�r+)r�rCrrr�test_warn_on_dealloc_fds
z"MiscIOTest.test_warn_on_dealloc_fdcCs�ddiddiddd�ddiddiddd�ddidd	id	dd�f	D]9}d
|dvr,d|d<ttjd
�D]%}|jtjfi|���}|�ttj||�Wd�n1sSwYq3q dS)Nr�r�r�rr�r)r�r�r,rr�r,rP)	r^�pickle�HIGHEST_PROTOCOLr-rr�r�r��dumps)r:r��protocolr1rrr�
test_pickling%s&�����zMiscIOTest.test_picklingcCr()Ni@��_test_nonblock_pipe_writerCrrr�test_nonblock_pipe_write_bigbuf8r�z*MiscIOTest.test_nonblock_pipe_write_bigbufcCr()Nr@r�rCrrr�!test_nonblock_pipe_write_smallbuf;r�z,MiscIOTest.test_nonblock_pipe_write_smallbuf�set_blockingz(os.set_blocking() required for this testc
Cs0g}g}t��\}}t�|d�t�|d�|j|dd|d�}|j|dd|d�}|��|��dD]d}zd}		t|	dd	g�|}
|�|
�|�|
�|	d
7}	q6|jy�}z8|�|j	dt
j�|�|j	d|j�|dd|j�|d<|�|�
��d
}
|�|
�|�|
�WYd}~q0d}~ww	z|��Wn6|jy�}z(|�|j	dt
j�|�|j	d|j�|�|jd�|�|�
��WYd}~nd}~wwq�|t|j
d�7}Wd�n1s�wYWd�n1s�wYd�|�d�|�}}|�||�|�|j�|�|j�dS)NFr�T)r�rcr�r�)r�Ii�r��arPrer�sBLOCKEDr[)r�r�r�r-rr>r@r�r�r�r��EAGAINr�r^rv�iterr�r�r|)r:r0�sent�receivedr)r��rf�wfr�r[r�rvrrrr�>s^

�
��	���
��z$MiscIOTest._test_nonblock_pipe_writecCsN|jtjddd��Wd�n1swY|jt|jtjddd�dS)Nr�r�r+r2)r-rr�r��FileExistsErrorrCrrr�test_create_failrs�zMiscIOTest.test_create_failcCs||�tjd��
}|�d�Wd�n1swY|�tjd��}|�d|���Wd�dS1s7wYdS)N�xbr�r�rYr�rrr�test_create_writesxs�"�zMiscIOTest.test_create_writescCs|jt|jtjddd�dS)Nzrwax+r�r+rdrCrrr�test_open_allargsszMiscIOTest.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)
        �-X�devrVr�)r�r$r.�textwrap�dedentrr�r])r:�modr%r�rW�procrrr�test_check_encoding_errors�s,�������
�$z%MiscIOTest.test_check_encoding_errorsc	Cs~|jj}t}t�d|�d|�d|�d��}tddd|�}|j��}|�t	|�d�|�
|d	�d
��|�
|d�d��dS)
Nz(            import sys
            from zN import open, TextIOWrapper
            import pathlib

            with open(zJ) as f:           # line 5
                pass

            pathlib.Path(z ).read_text()  # line 8
        r��warn_default_encodingrVrers<string>:5: EncodingWarning: rPs<string>:8: EncodingWarning: )r�r$r.r�r�rr%r�r�rr�r)r:r�r%rWr�r
rrr�test_check_encoding_warning�s$��
�

��z&MiscIOTest.test_check_encoding_warning)�categorycCs|�|jj|jj�dSr=)r�r��OpenWrapperr-rCrrr�test_openwrapper�szMiscIOTest.test_openwrapperN)$r$r%r&r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rw�
skipUnlessr�r�r�r�r�r�r�r�rr>r
�ignore_warningsrr�rrrrr�is<1
�
2-
r�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@Brr]rrrr^�rzACMiscIOTest.test_readinto_buffer_overflow.<locals>.BadReader.readNr r_rrrr�	BadReader�sr�re)r�r�r�r�r�rU)r:r�rrrrr�test_readinto_buffer_overflow�sz)CMiscIOTest.test_readinto_buffer_overflowcCs^d�t��}td|�\}}|j��}|jdkr%d�t��}|�||�dS|�|�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()
            rVrz�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]rr�r[)r:�stream_namerWr�r�r%�patternrrr�&check_daemon_threads_shutdown_deadlock�s�

�z2CMiscIOTest.check_daemon_threads_shutdown_deadlockcCr()N�stdout�r�rCrrr�,test_daemon_threads_shutdown_stdout_deadlockr�z8CMiscIOTest.test_daemon_threads_shutdown_stdout_deadlockcCr()N�stderrrrCrrr�,test_daemon_threads_shutdown_stderr_deadlockr�z8CMiscIOTest.test_daemon_threads_shutdown_stderr_deadlockN)r$r%r&r�r�r�rrrrrrr��s	)r�c@seZdZeZdS)�PyMiscIOTestN)r$r%r&r�r�rrrrr�r�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�|_dSr=)�signal�SIGALRM�alarm_interrupt�oldalrmrCrrrr�rzSignalsTest.setUpcCst�tj|j�dSr=)rr	rrCrrrr��zSignalsTest.tearDowncCsdddSrOr)r:�sig�framerrrr
rPzSignalsTest.alarm_interruptc
s�t��g���fdd�}tj|d�}d|_t��\�}d|d<|tjt|�d}z�|j	j
|fi|��}ttd�rRt�
tjtjg�|��t�
tjtjg�n|��t�d�z|�t|j|�Wt�d	�|��n
t�d	�|��w��t��d��|��|d	d�|dd
�g�Wt�|�t���z|��WdSty�}	z|	jtjkr��WYd}	~	dSd}	~	wwt�|�t���z|��Wwty�}	z
|	jtjkrނWYd}	~	wd}	~	ww)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�}��|�dSrz)r�r^r>)r��r)�read_resultsrrr,:rPz2SignalsTest.check_interrupted_write.<locals>._readr{TFrcrP�pthread_sigmaskrreN)rrJror��daemonr�r��
PIPE_MAX_SIZErr�r-r�rr�	SIG_BLOCKr	r��SIG_UNBLOCK�alarmr�r/r@r�r>r^r�r~r}r�r�)
r:�itemr�
fdopen_kwargsr,r�r��
large_data�wiorvrrr�check_interrupted_writesX




�
"

���
�
���z#SignalsTest.check_interrupted_writecCs|jddddd�dS)Nrr�rr��rrCrrr�!test_interrupted_write_unbufferedirz-SignalsTest.test_interrupted_write_unbufferedcCs|jdddd�dS�Nrr��r�rrCrrr�test_interrupted_write_bufferedlrz+SignalsTest.test_interrupted_write_bufferedcCs|jddddd�dS)N�xyrr�r��r�r,rrCrrr�test_interrupted_write_textorz'SignalsTest.test_interrupted_write_textc		s,��fdd�}t�tj|�t��\}}|jj|fi|���zht�d�|�tt	f��}	t
d�D]}�������q1t�
|t��d�q-1sKwY|j}t|t	�rv|�t|��d�t|��Wt�d����t�|�dSWt�d����t�|�dSt�d����t�|�w)Ncs����dddSrO)r@)r��r rrr�on_alarmts
z3SignalsTest.check_reentrant_write.<locals>.on_alarmrPr�zreentrant callr)rr	r�r�r�r-rr�r/rr^r@rvr^rr�rr�r�rr~)	r:r rr%r)r�r�r[r�rr$r�check_reentrant_writers6


��

�

�z!SignalsTest.check_reentrant_writecC�|jddd�dSr�r&rCrrr�test_reentrant_write_buffered�r�z)SignalsTest.test_reentrant_write_bufferedcC�|jdddd�dS)Nr!r�r�r"r(rCrrr�test_reentrant_write_text�rz%SignalsTest.test_reentrant_write_textc	s�t��\}�d|d<�fdd�}t�tj|�z6|jj|fi|��}t��d�t�d�|�||�	d��d�Wt�d	�|�
�t�
��t�
|�d
St�d	�|�
�t�
��t�
|�w)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.Frccst��d�dS)Nr�)r�r@�r
r�r�rr�
alarm_handler�riz?SignalsTest.check_interrupted_read_retry.<locals>.alarm_handlerrJrPr��foobarrN)r�r�rr	r�r-r@rr�r^r~)r:r\rr)r.�riorr-r�check_interrupted_read_retry�s"



�
z(SignalsTest.check_interrupted_read_retrycCs|jdd�dd�dS)NcSs
|�d�S)Nri)r\rfrrrr~�rzBSignalsTest.test_interrupted_read_retry_buffered.<locals>.<lambda>r�r�r1rCrrr�$test_interrupted_read_retry_buffered�s

�z0SignalsTest.test_interrupted_read_retry_bufferedcCs|jdd�ddd�dS)NcSs|Sr=rrfrrrr~�rz>SignalsTest.test_interrupted_read_retry_text.<locals>.<lambda>r)rir"r2rCrrr� test_interrupted_read_retry_text�s

�z,SignalsTest.test_interrupted_read_retry_textcs�t�d��tj}t��\�}d|d<g�d�d������fdd�}tj|d��d�_�fd	d
�}�fdd��||}t	�	t	j
|�zj|jj|fi|��}t	�
d
�|�|�}	|�||	�|��d����|���|�|tdd��D���Wt	�
d�d�t�|�t���z|��WdSty�}
z|
jtjkr��WYd}
~
dSd}
~
wwt	�
d�d�t�|�t���z|��Wwty�}
z
|
jtjkrӂWYd}
~
wd}
~
ww)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.�selectFrcNc
s�z/�s-����gggd�dvr(t��d�}��|�����gggd�dvs�rWdSWdStyD}z	|�WYd}~dSd}~ww)Ng�?rr@)r5r�r^r>�
BaseException)r�r�)r�r)rr5�write_finishedrrr,�s
����z8SignalsTest.check_interrupted_write_retry.<locals>._readr{Tcst�tj��t�d�dSrz)rr	rr,)�alarm2rr�alarm1�r�z9SignalsTest.check_interrupted_write_retry.<locals>.alarm1cs���dSr=)r�r,)r�rrr8�rPz9SignalsTest.check_interrupted_write_retry.<locals>.alarm2rPcss�|]}t|�VqdSr=)rr}rrr�	<genexpr>�s�z<SignalsTest.check_interrupted_write_retry.<locals>.<genexpr>r)r
�
import_modulerrr�r�ror�rrr	r�r-rr@r�rvr�rp�sumr~r}r�r�)r:rrr�r�r,r9rrr�rvr)r8r�r)rr5r�r7r�check_interrupted_write_retry�s`
	





���
�

���z)SignalsTest.check_interrupted_write_retrycCr')Nr�r�r�r=rCrrr�%test_interrupted_write_retry_buffered�r�z1SignalsTest.test_interrupted_write_retry_bufferedcCr*)Nr2r�rir"r>rCrrr�!test_interrupted_write_retry_text�rz-SignalsTest.test_interrupted_write_retry_textN)r$r%r&r�r�r
rrr r#rrzr&r)r+r1r3r4r=r?r@rrrrrs$M
Drc@seZdZeZdS)�CSignalsTestN)r$r%r&r�rrrrrA�rrAc@seZdZeZdZdZdS)�
PySignalsTestN)r$r%r&r�r�r)r+rrrrrBsrBc
stttttttttt	t
ttt
ttttttf}ttttttttf}tjdg}dd�|D�}dd�|D�}t��|��fdd�|D��|��fdd�|D��|D]-}|j �!d�ri|�"�D]
\}}t#|||�q]qQ|j �!d	�r~|�"�D]
\}}t#|||�qsqQt$�%d
d�|D��}	|	S)Nr�cS�i|]}|tt|��qSr)r�r��r~r�rrr�
<dictcomp>r�zload_tests.<locals>.<dictcomp>cSrCr)r�r�rDrrrrEr�c3�$�|]
}|j�d|jfVqdS)r�N�r$r}��globsrrr:!��"zload_tests.<locals>.<genexpr>c3rF)�PyNrGr}rHrrr:"rJr�rKcSsg|]}t�|��qSr)rw�	makeSuite)r~r	rrrr+r�zload_tests.<locals>.<listcomp>)&r�r�r�r�r�r�r�r
rrGrHrkr�r�r�r�r�rrArBrZrbr�ryr�r�r3rnr�r��globalsr�r$rr��setattrrw�	TestSuite)
r�r�mocks�all_members�c_io_ns�py_io_nsr	r�r!�suiterrHr�
load_testss@����rU�__main__)wrWr�rr�r�r�r�r�rrr�rortrwr
rn�collectionsrr�	itertoolsrrr	r�test.support.script_helperrrr	�test.supportr
rrr
r�test.support.os_helperrrKr��_pyior�r�ImportErrorr�	Structurerr�r��dev_moderr2r3rrXrYrZr`rarbrlrmrnrwrxryrr�r�r�r�r�r�r�r�r�r�r��TestCaser�r�r�r>r�r�r4r?r�r�r�r�r�r�r
rrrGrHrLrIrjrkrqrarbr�r�r�r�r�r�r�rrxr�rrArBrUr$�mainrrrr�<module>s��8
	
0E.*C(0QjN
+o
	Nui<o	
#�

Youez - 2016 - github.com/yon3zu
LinuXploit