Uname: Linux web3.us.cloudlogin.co 5.10.226-xeon-hst #2 SMP Fri Sep 13 12:28:44 UTC 2024 x86_64
Software: Apache
PHP version: 8.1.31 [ PHP INFO ] PHP os: Linux
Server Ip: 162.210.96.117
Your Ip: 18.218.149.167
User: edustar (269686) | Group: tty (888)
Safe Mode: OFF
Disable Function:
NONE

name : test_io.cpython-310.pyc
o

ab���@s�dZddlZddlZddlZddlZddlZddlZddlZddlZddl	Z	ddl
Z
ddlZddlZddl
Z
ddlZddlZddlZddlmZmZddlmZmZddlmZddlmZmZmZddlmZddlmZdd	lm Z dd
lm!Z!ddl"m#Z#ddl$Z$ddl%Z%ddl&Z'zddl(Z(Wn
e)y�dd
�Z*Ynwdd
�Z*Gdd�de(j+�Z,e
�-d�p�dZ.e
�-d�p�dZ/de.vp�de/vZ0de.vZ1e2e	d�p�e	j3j4Z5dd�Z6Gdd�d�Z7Gdd�de7e%j8�Z9Gdd�de7e'j8�Z:Gd d!�d!e7�Z;Gd"d#�d#e;e%j8�Z<Gd$d%�d%e;e'j8�Z=Gd&d'�d'e;�Z>Gd(d)�d)e>e%j8�Z?Gd*d+�d+e>e'j8�Z@Gd,d-�d-e;�ZAGd.d/�d/eAe%j8�ZBGd0d1�d1eAe'j8�ZCGd2d3�d3e;�ZDGd4d5�d5eDe%j8�ZEGd6d7�d7eDe'j8�ZFGd8d9�d9�ZGGd:d;�d;eGe%jH�ZIGd<d=�d=eGe'jH�ZJGd>d?�d?�ZKGd@dA�dAeKe%jH�ZLGdBdC�dCeKe'jH�ZMGdDdE�dE�ZNGdFdG�dGeNe%j8�ZOGdHdI�dIeNe'j8�ZPGdJdK�dKejQ�ZRGdLdM�dMeR�ZSGdNdO�dOeR�ZTejUGdPdQ�dQejQ��ZVGdRdS�dS�ZWGdTdU�dU�ZXGdVdW�dWejQeW�ZYGdXdY�dYeYeX�ZZGdZd[�d[eY�Z[Gd\d]�d]ejQeW�Z\Gd^d_�d_e\eX�Z]Gd`da�dae\�Z^Gdbdc�dcejQ�Z_Gddde�dee_�Z`Gdfdg�dge_�ZaGdhdi�dieYe\�ZbGdjdk�dkebeX�ZcGdldm�dmeb�ZdGdndo�doe$je�Zfdpdq�ZgGdrds�dsejQ�ZhGdtdu�duejQ�ZiGdvdw�dwe%jH�Zjdxdy�ZkGdzd{�d{ei�ZlGd|d}�d}ei�ZmGd~d�dejQ�ZnGd�d��d�en�ZoGd�d��d�en�ZpGd�d��d�ejQ�ZqGd�d��d�eq�ZrGd�d��d�eq�Zse�tejud�kd��Gd�d��d�ejQ��ZvGd�d��d�ev�ZwGd�d��d�ev�Zxd�d��Zyezd�k�r�e�{�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)�FakePathcOst�dt|i|���S)N�b)�array�bytes)�pos�kw�r�5/usr/local/python-3.10/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�ctypesZresize�len�
memoryview�cast)rr�data�objrrrr;s
c@�eZdZdS)rN��__name__�
__module__�__qualname__rrrrrB�rZCFLAGS�ZCONFIG_ARGSz-fsanitize=memoryz--with-memory-sanitizerz-fsanitize=addressZgettotalrefcountcCs8ttddd��}|jWd�S1swYdS)z(Get the default TextIOWrapper chunk size�r�latin-1��encodingN)�open�__file__�_CHUNK_SIZE��frrr�_default_chunk_sizeUs$�r0c@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___s

zMockRawIOWithoutRead.__init__cCs|j�t|��t|�S�N)r5�appendrr�r8rrrr�writeeszMockRawIOWithoutRead.writecC�dS�NTr�r8rrr�writablei�zMockRawIOWithoutRead.writablecCr>�N�*rr@rrr�filenolrBzMockRawIOWithoutRead.filenocCr>r?rr@rrr�readableorBzMockRawIOWithoutRead.readablecCr>r?rr@rrr�seekablerrBzMockRawIOWithoutRead.seekablecCr>r2r�r8r�whencerrr�seekurBzMockRawIOWithoutRead.seekcCr>r2rr@rrr�tellxrBzMockRawIOWithoutRead.tellcCs�|jd7_t|�}z|jd}Wnty#|jd7_YdSw|dur.|jd=dSt|�}t|�|krD|jd=||d|�<|S|d|�|dd�<||d�|jd<|S�N�r)r6rr4�
IndexErrorr7)r8�bufZmax_lenr�nrrr�readinto{s&�zMockRawIOWithoutRead.readintoNcCs|Sr:r)r8rrrr�truncate�rBzMockRawIOWithoutRead.truncate)rr:)r"r#r$�__doc__r9r=rArErFrGrJrKrQrRrrrrr1[s
r1c@r )�CMockRawIOWithoutReadNr!rrrrrT�r%rTc@r )�PyMockRawIOWithoutReadNr!rrrrrU�r%rUc@seZdZddd�ZdS)�	MockRawIONcCs8|jd7_z|j�d�WS|jd7_YdS)NrMr�)r6r4�popr7�r8rPrrr�read�szMockRawIO.readr:�r"r#r$rZrrrrrV�srVc@r )�
CMockRawIONr!rrrrr\�r%r\c@r )�PyMockRawIONr!rrrrr]�r%r]csFeZdZ�fdd�Zd�fdd�	Zdd�Zdd	�Z�fd
d�Z�ZS)
�MisbehavedRawIOc�t��|�dS�N�)�superr=r<��	__class__rrr=��zMisbehavedRawIO.writeNcr_r`)rbrZrYrcrrrZ�rezMisbehavedRawIO.readcCr>)Ni����rrHrrrrJ�rBzMisbehavedRawIO.seekcCr>)Ni8���rr@rrrrK�rBzMisbehavedRawIO.tellcst��|�t|�dS)N�)rbrQr)r8rOrcrrrQ�szMisbehavedRawIO.readintor:)	r"r#r$r=rZrJrKrQ�
__classcell__rrrcrr^�sr^c@r )�CMisbehavedRawIONr!rrrrrh�r%rhc@r )�PyMisbehavedRawIONr!rrrrri�r%rics$eZdZ�fdd�Zdd�Z�ZS)�SlowFlushRawIOcst���t��|_dSr:)rbr9�	threading�Event�in_flushr@rcrrr9��
zSlowFlushRawIO.__init__cCs|j��t�d�dS)Ng�?)rm�set�time�sleepr@rrr�flush�rnzSlowFlushRawIO.flush)r"r#r$r9rrrgrrrcrrj�srjc@r )�CSlowFlushRawIONr!rrrrrs�r%rsc@r )�PySlowFlushRawIONr!rrrrrt�r%rtc@seZdZdZdd�ZdS)�CloseFailureIOrcCs|jsd|_t�dS�NrM��closed�OSErrorr@rrr�close�s�zCloseFailureIO.closeN)r"r#r$rxrzrrrrru�sruc@r )�CCloseFailureIONr!rrrrr{�r%r{c@r )�PyCloseFailureIONr!rrrrr|�r%r|cs6eZdZ�fdd�Zd�fdd�	Z�fdd�Z�ZS)	�
MockFileIOcsg|_t��|�dSr:)�read_historyrbr9�r8rrcrrr9�szMockFileIO.__init__Ncs2t��|�}|j�|durd�|St|��|Sr:)rbrZr~r;r)r8rP�resrcrrrZ�s

�zMockFileIO.readcst��|�}|j�|�|Sr:)rbrQr~r;)r8rr�rcrrrQ�szMockFileIO.readintor:)r"r#r$r9rZrQrgrrrcrr}�sr}c@r )�CMockFileIONr!rrrrr��r%r�c@r )�PyMockFileIONr!rrrrr��r%r�c@s,eZdZdd�Zdd�Zdd�Zdd�Zd	S)
�MockUnseekableIOcCr>�NFrr@rrrrG�rBzMockUnseekableIO.seekablecG�
|�d���Nznot seekable��UnsupportedOperation�r8�argsrrrrJ��
zMockUnseekableIO.seekcGr�r�r�r�rrrrKr�zMockUnseekableIO.tellcGr�r�r�r�rrrrRr�zMockUnseekableIO.truncateN)r"r#r$rGrJrKrRrrrrr��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:)r5�
_blocker_charr@rrrr9s
zMockNonBlockWriterIO.__init__cCsd�|j�}g|jdd�<|S�NrW)�joinr5)r8�srrr�pop_writtensz MockNonBlockWriterIO.pop_writtencCs
||_dS)z'Block when a given char is encountered.N)r�)r8�charrrr�block_ons
zMockNonBlockWriterIO.block_oncCr>r?rr@rrrrFrBzMockNonBlockWriterIO.readablecCr>r?rr@rrrrGrBzMockNonBlockWriterIO.seekablercCr>r2rrHrrrrJ"szMockNonBlockWriterIO.seekcCr>r?rr@rrrrA&rBzMockNonBlockWriterIO.writablecCstt|�}d}|jr0z|�|j�}Wn	tyYnw|dkr+|j�|d|��|Sd|_dS|j�|�t|�S)N���r)rr��index�
ValueErrorr5r;r)r8rrPrrrr=)s�zMockNonBlockWriterIO.writeN�r)r"r#r$r9r�r�rFrGrJrAr=rrrrr�
s
r�c@r�)�CMockNonBlockWriterION)r"r#r$r��BlockingIOErrorrrrrr�=r�r�c@r�)�PyMockNonBlockWriterION)r"r#r$r�r�rrrrr�@r�r�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�IOTestcC�t�tj�dSr:�r�unlink�TESTFNr@rrr�setUpFrezIOTest.setUpcCr�r:r�r@rrr�tearDownIrezIOTest.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.rfrsHello.�r�rMs	 world


�	s	*********�hra�
��)�assertEqualr=rRrKrJ�	bytearray�assertRaises�	TypeError)r8r/�bufferrrr�	write_opsLs(

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)Nrfshellos worlra�d
r��hello world
rMrW�xi����r�sworld�
r�sworld
)rZr�rrQrr�rrJrKr�r��	readinto1)r8r/Zbufferedrrrr�read_opsds@



�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�rMrarr�)rFrAr�rJ�LARGE�
OverflowErrorr��skipTestrKr=rRrZ�r8r/rrr�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'Zblahzblah
rMr�)r�r+rr�r�rZ�readliner=�
writelinesrJ�SEEK_CUR�SEEK_END)r8�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�piperz�FileIO)r'r�r@rr�pipe_reader�s
z3IOTest.test_optional_abilities.<locals>.pipe_readercsNt��\}}��tj|�tjtj|dfd�}|����|j���	|d�S)N�d��targetr�r�)
r�r��
addCleanuprzrk�ThreadrZ�startr�r�)r'r��threadr@rr�pipe_writer�sz3IOTest.test_optional_abilities.<locals>.pipe_writerc�������Sr:)�BufferedReaderr�rr@rr�buffered_reader��z7IOTest.test_optional_abilities.<locals>.buffered_readercr�r:)�BufferedWriterr�rr@rr�buffered_writer�r�z7IOTest.test_optional_abilities.<locals>.buffered_writercr�r:)�BufferedRandom�BytesIOrr@rr�buffered_random�r�z7IOTest.test_optional_abilities.<locals>.buffered_randomcs���������Sr:)�BufferedRWPairr�rr@rr�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$�BufferedIOBaserAr=rr@rr�UnseekableReader��r��ascii�r��
TextIOWrapper)r�r@rr�text_reader��z3IOTest.test_optional_abilities.<locals>.text_readercr�)Ncr�)zMIOTest.test_optional_abilities.<locals>.text_writer.<locals>.UnseekableWriterN)r"r#r$r�rFrZrr@rr�UnseekableWriter�r�r�r�r�)r�r@rr�text_writer�r�z3IOTest.test_optional_abilities.<locals>.text_writer�fr�fwr'r�Zrws�rw�3�3zUnknown base classr/rM�winr�r)r��StringIO�subTestr�rFrA�
isinstance�
TextIOBaser��	RawIOBase�failrEr�ryrZr=�sys�platform�
startswithrGrKrJrR)r8r�r�r�r�r�r�r�r��tests�testZ	abilitiesrrFrArrGrr@r�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)r8Zfn_with_NULZbytes_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�rFrArGr�r�r�rrr�test_raw_file_io%s�"�zIOTest.test_raw_file_iocCs�|�tjd��%}|�|��d�|�|��d�|�|��d�|�|�Wd�n1s/wY|�tjd��'}|�|��d�|�|��d�|�|��d�|�|d�Wd�dS1sewYdS)Nr�FTr�r
r�rrr�test_buffered_file_io1s�"�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
ra�xy�szzy
sfoobar
sanother lineg333333@r'r�r))r+rr�r=r�r�r�r�r�rrr�
test_readline=s��"�zIOTest.test_readlinecCs*Gdd�d|j�}|�ttft|��dS)Nc@�eZdZdd�ZdS)z+IOTest.test_readline_nonsizeable.<locals>.RcS�dSr:rr@rrrr�OrBz4IOTest.test_readline_nonsizeable.<locals>.R.readlineN)r"r#r$r�rrrr�RN�r)�IOBaser�r��
StopIteration�next�r8rrrr�test_readline_nonsizeableKsz IOTest.test_readline_nonsizeablecCs(Gdd�d|j�}|�t|�jd�dS)Nc@r)z'IOTest.test_next_nonsizeable.<locals>.RcSrr:rr@rrr�__next__WrBz0IOTest.test_next_nonsizeable.<locals>.R.__next__N)r"r#r$rrrrrrVrrrM)rr�r��	readlinesrrrr�test_next_nonsizeableSszIOTest.test_next_nonsizeablecCs@|��}|�|�|��}|�|d�|�|�}|�|d�dS)Nr�T)r�r��getvaluer�r�)r8r/rrrr�test_raw_bytes_io[s

zIOTest.test_raw_bytes_iocCs�tjdd�dkstjdkrt�dd|j�|�tjdd��
}|�|�Wd�n1s/wY|�tjd��}|�|�Wd�dS1sLwYdS)Nr�r��darwinZ	largefilez-test requires %s bytes and a long time to run�w+br)	r�r�rZrequiresr�r+rr�r�r�rrr�test_large_file_opscs��"�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�TrMrz1/0 didn't raise an exception)r+rr�r=r�rx�ZeroDivisionErrorr�)r8�bufsizer/rrr�test_with_openps"�
����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�rK�
assertGreaterr�rrr�test_append_mode_tell�s���"�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|�dSrv�r;rb�__del__�AttributeErrorr��rd�recordrrr-��
�
z0IOTest.test_destructor.<locals>.MyFileIO.__del__c���d�t���dSr`�r;rbrzr@r/rrrz�rnz.IOTest.test_destructor.<locals>.MyFileIO.closecr2�Nr��r;rbrrr@r/rrrr�rnz.IOTest.test_destructor.<locals>.MyFileIO.flush�r"r#r$r-rzrrrgr�r0rcr�MyFileIO��r8r&r�r��rMrar�r�)r�r
�check_warnings�ResourceWarningrr�r=r�
gc_collectr�r+rZ)r8r8r/rr7r�test_destructor�s
��"�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)NrMrar�)�on_del�on_close�on_flushr@rrrr9�s
z4IOTest._check_base_destructor.<locals>.MyIO.__init__cs8��|j�zt�j}Wn
tyYdSw|�dSr:)r;r?rbr-r.r�r/rrr-�s�
z3IOTest._check_base_destructor.<locals>.MyIO.__del__c���|j�t���dSr:)r;r@rbrzr@r/rrrz��z1IOTest._check_base_destructor.<locals>.MyIO.closecrBr:)r;rArbrrr@r/rrrr�rCz1IOTest._check_base_destructor.<locals>.MyIO.flush)r"r#r$r9r-rzrrrgrr7rcr�MyIO�s
rDr:)rr=r�)r8�baserDr/rr7r�_check_base_destructor�szIOTest._check_base_destructorcC�|�|j�dSr:)rFrr@rrr�test_IOBase_destructor�rezIOTest.test_IOBase_destructorcCrGr:)rFr�r@rrr�test_RawIOBase_destructor�rez IOTest.test_RawIOBase_destructorcCrGr:)rFr�r@rrr�test_BufferedIOBase_destructor�rez%IOTest.test_BufferedIOBase_destructorcCrGr:)rFr�r@rrr�test_TextIOBase_destructor�rez!IOTest.test_TextIOBase_destructorcCs||�tjd��
}|�d�Wd�n1swY|�tjd��}|�|��d�Wd�dS1s7wYdS)Nr�r�r��r+rr�r=r�rZr�rrr�test_close_flushes�s�"�zIOTest.test_close_flushescs�t�dtd���t��������fdd�}|����|��tjd��|����	���|��
��	���|����	���	���dS)N�ir�csH|���|�����|��f�Wd�dS1swYdSr:)r�r=r�r.�r'rPr8rr�check�s"�z'IOTest.test_array_writes.<locals>.checkr�)r�ranger�tobytesr�r�rr�r�rVr�r�)r8rPrrOr�test_array_writes�szIOTest.test_array_writescC�|jt|jtjdddd�dS)Nr�r�F�r*�closefd�r�r�r+rr�r@rrr�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'FrUrr��rVr�seggrM)
r+rr�r=rEr�rZrJrzr�r�rQr��r8r/�filerrr�test_read_closed�s �
�"�zIOTest.test_read_closedcCrT)Nr'r�FrUrWr@rrr�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)TFrU)	r+rr�r=r�r��rawrVrEr[rrr�test_closefd_attr�s�"�zIOTest.test_closefd_attrcCs�t�dtf��!|�tjd�}|�d�||_t�	|�}~t
��Wd�n1s+wY|�|�|�|�
tjd��}|�|��d�Wd�dS1sRwYdS)Nr&r�sabcxxxr�)r
r;r<r�rr�r=r/�weakref�refrr=�assertIsNoner+r�rZ)r8r/�wrrrr�test_garbage_collections


�"�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��maxsizerZreal_max_memuseZ_2Gr+r�r�rZ)r8Zzeror/rrr�test_unbounded_files 


��"�zIOTest.test_unbounded_filecsh|j|i|���g���fdd�}|�_|�t�j�|��j�|���|��d�dd��_dS)Ncs�jg�dd�<t��r:rwr�rxr/rr�	bad_flush$sz4IOTest.check_flush_error_on_close.<locals>.bad_flushrcSrr:rrrrr�<lambda>,�z3IOTest.check_flush_error_on_close.<locals>.<lambda>)r+rrr�ryrz�
assertTruerx�assertFalse)r8r��kwargsrmrrlr�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�rVrZr�r�r)rU)rsrr�r�r+�O_WRONLY�O_CREATrz)r8�fdrrr�test_flush_error_on_close.s$

z IOTest.test_flush_error_on_closecCs<|jtjddd�}|��|��|��|�t|j�dS)Nr�rr�)r+rr�rzr�r�rrr�rrr�test_multi_closeFs
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�efgNra�ab�crz�ef�grW)r1r�rZ�r8�rawiorrr�test_RawIOBase_readMs
zIOTest.test_RawIOBase_readcCs@|��|��|��|��|��f}|D]
}|�t|d��qdS)N�__dict__)rr�r�r�r�rp�hasattr)r8rrrrr�test_types_have_dictZs��zIOTest.test_types_have_dictcs�|jtjddd��
}|�d�Wd�n1swYt�tjtj���fdd�}|jddd|d	��}|�|��d�Wd�dS1sIwYdS)
Nr�r�r)rYc��Sr:r)rg�flags�rvrr�openerirBz"IOTest.test_opener.<locals>.opener�non-existentr')r*r�)r+rr�r=r��O_RDONLYr�rZ)r8r/r�rr�r�test_openeres�"�zIOTest.test_openercC�Vdd�}|�t��}tdd|d�Wd�n1swY|�t|j�d�dS)NcSr>�Nr�r�Zfnamer�rrr�	badopenerprBz4IOTest.test_bad_opener_negative_1.<locals>.badopenerr�r'�r�zopener returned -1�r�r�r+r��str�	exception�r8r��cmrrr�test_bad_opener_negative_1n�
�z!IOTest.test_bad_opener_negative_1cCr�)NcSr>)N���rr�rrrr�xrBz8IOTest.test_bad_opener_other_negative.<locals>.badopenerr�r'r�zopener returned -2r�r�rrr�test_bad_opener_other_negativevr�z%IOTest.test_bad_opener_other_negativec	Cs�|�td��E}|�td��&}|j|��dd�}|j|��dd�|��|��|��Wd�n1s6wYWd�dSWd�dS1sNwYdS)Nr�FrZ)r+r,r�rEr9r�rz)r8�f1�f2Zfileiorrr�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�r@rrr�test_nonbuffered_textio����"�zIOTest.test_nonbuffered_textioc	Cr�)Nr�r��invalid�r*�newliner�r@rrr�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>.StreamcSr>)N�12345r�r8�sizerrrrZ�rBz8IOTest.test_buffered_readinto_mixin.<locals>.Stream.readN)r"r#r$rZ�read1rrrr�Stream�sr��rQr�rfr�)r�r�rr��getattrr)r8r��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)rYr')r+r=r�rZ)rgr/r@rr�check_path_succeeds�s�"�z7IOTest.test_fspath_support.<locals>.check_path_succeedsr�r�r)zread/write/append modeZrwxa)rrr�r��fsencoder+rEr�r��FloatingPointError�assertRaisesRegexr�)r8r�r/Zbad_pathrr@r�test_fspath_support�s*�����"�zIOTest.test_fspath_supportcCs8|�d�}|�|��d�|�d�}|�|��d�dS�N�ryrzr{�abcdefg)r1r�rZ�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)r8r�rrrr9�r�z<IOTest.test_BufferedIOBase_readinto.<locals>.Reader.__init__cSs"|jd|�}|j|d�|_|Sr:r�)r8r��resultrrrrZ�sz8IOTest.test_BufferedIOBase_readinto.<locals>.Reader.readcSs|�t|d��S)z$Returns no more than 5 bytes at oncerf)rZ�minr�rrrr��sz9IOTest.test_BufferedIOBase_readinto.<locals>.Reader.read1N)r"r#r$r9rZr�rrrr�Reader�sr�)
)rQr�rfrf)rQr�r�r�)rQrfr�rf)rQr��r�)rQr�rr)r�r�rfrf)r�r�r�rf)r�rfr�rf)r�r�r�rf)r�r�rr�)
r�r�rrQr�r�r�rZassertSequenceEqualr�)r8r�rZUNUSED_BYTErr�r�Zrequestr��readerr�Zunusedrrr�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)r8�name�valuerrr�__setattr__�rBz/IOTest.test_close_assert.<locals>.R.__setattr__cS�t��r:�ryr@rrrrr��z)IOTest.test_close_assert.<locals>.R.flushN)r"r#r$r�rrrrrrr�srcSrr:rr@rrrrn�roz*IOTest.test_close_assert.<locals>.<lambda>)rr�ryrzrr)r8rr/rrr�test_close_assert�szIOTest.test_close_assertN�F)3r"r#r$r�r�r�r�r�r�r�rr	rrrrrrr"r%r)r>rFrHrIrJrKrMrSrXr]r^r`rerkrsrwrxr�r�r�r�r�r�r�r�r�r�r�r�r�rrrrr�Dsb
!h	



	
)r�c@r)�CIOTestcCsLGdd�d|j�}|�|�}||_t�|�}~~t��|�|�|�dS)Nc@r)z*CIOTest.test_IOBase_finalize.<locals>.MyIOcSrr:rr@rrrrzrBz0CIOTest.test_IOBase_finalize.<locals>.MyIO.closeN�r"r#r$rzrrrrrDrrD)rrrarbrr=rc)r8rDrrdrrr�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__)rz6Python RawIOBase does not have all C RawIOBase methods��msgN)r�detect_api_mismatchr�r�r�r�ro�r8Zmismatchrrr�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�r�r�r�ror�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:)rV�tp�assertIs�detachr�r��repr�r8r_rOrrr�test_detach&s

zCommonBufferedTests.test_detachcCs&|��}|�|�}|�d|���dSrC)rVr�r�rE�r8r��bufiorrr�test_fileno.s
zCommonBufferedTests.test_filenocCs:|��}|�|�}|�t|jdd�|�t|jdd�dS)Nrr�r�)rVr�r�r�rJr�rrr�test_invalid_args4s
z%CommonBufferedTests.test_invalid_argscsL|j}g�G�fdd�d|�}|��}||�}~t��|��gd��dS)Ncr*)zBCommonBufferedTests.test_override_destructor.<locals>.MyBufferedIOcr+rvr,r�r/rrr-?r1zJCommonBufferedTests.test_override_destructor.<locals>.MyBufferedIO.__del__cr2r`r3r@r/rrrzGrnzHCommonBufferedTests.test_override_destructor.<locals>.MyBufferedIO.closecr2r4r5r@r/rrrrJrnzHCommonBufferedTests.test_override_destructor.<locals>.MyBufferedIO.flushr6rr7rcr�MyBufferedIO>r9r�r:)r�rVrr=r�)r8r�r�r�r�rr7r�test_override_destructor;sz,CommonBufferedTests.test_override_destructorcs4|��}|�|���fdd�}|�|�t|�dS)Ncs*��	Wd�dS1swYdSr:rr�r�rr�_withWs"�z7CommonBufferedTests.test_context_manager.<locals>._with)rVr�r�r�)r8r�r�rr�r�test_context_managerSs

z(CommonBufferedTests.test_context_managerc	Cs�|��}t���J}|�t��|�|�jWd�n1swYts-|�|j	�n|j	durB|�
|j	jt�Wd�dSWd�dSWd�dS1sUwYdSr:)
rur�catch_unraisable_exceptionr�r.r��xyzzy�IOBASE_EMITS_UNRAISABLErc�
unraisabler��exc_typery�r8r�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'>)rVr�r#r$�assertRegexr�r�)r8r_rZclsnamerrr�	test_reprls
zCommonBufferedTests.test_reprc	Csv|��}|�|�}t�|d|��!zt|�Wn	ty Yn	wWd�dSWd�dS1s4wYdS)Nr�)rVr�r�	swap_attrr��RuntimeError�r8r_rrrr�test_recursive_reprvs
���"�z'CommonBufferedTests.test_recursive_reprcs�|���g����fdd�}|�_|����|�t�j�|��j�|��j�|���|��d�|��d�dd��_dS)Ncs�j�jg�dd�<t��r:rwr�rrxr_rrrm�sz@CommonBufferedTests.test_flush_error_on_close.<locals>.bad_flushrrMcSrr:rrrrrrn�roz?CommonBufferedTests.test_flush_error_on_close.<locals>.<lambda>)	rVrrr�r�ryrzrprxrq�r8rmrr�rrw�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���Nrrr�rrrrrm��z@CommonBufferedTests.test_close_error_on_close.<locals>.bad_flushcSr��Nrzr�rrrr�	bad_close�r�z@CommonBufferedTests.test_close_error_on_close.<locals>.bad_close�rz�rrcSrr:rrrrrrn�roz?CommonBufferedTests.test_close_error_on_close.<locals>.<lambda>cSrr:rrrrrrn�ro)
rVrzr�rrr�ryr�r�r��assertIsInstance�__context__rqrx�r8r_rmrr�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_flushrrrrrm�rBzNCommonBufferedTests.test_nonnormalized_close_error_on_close.<locals>.bad_flushcSrr:��non_existing_closerrrrr�rBzNCommonBufferedTests.test_nonnormalized_close_error_on_close.<locals>.bad_closerr
cSrr:rrrrrrn�rozMCommonBufferedTests.test_nonnormalized_close_error_on_close.<locals>.<lambda>cSrr:rrrrrrn�ro)
rVrzr�rrr��	NameError�assertInr�r�rrrqrxrrrr�'test_nonnormalized_close_error_on_close�s

�
z;CommonBufferedTests.test_nonnormalized_close_error_on_closecCs<|��}|�|�}|��|��|��|�t|j�dSr:)rVr�rzr�r�rrr�rrrrx�s
z$CommonBufferedTests.test_multi_closecCs6|�|�d��}|�|j|j�|�|j|jd�dS)N�
AAAAAAAAAAr)r�r�r�r�rKrJ�r8r�rrr�test_unseekable�sz#CommonBufferedTests.test_unseekablecCsP|��}|�|�}|��}|�t��||_Wd�dS1s!wYdSr:)rVr�r�r.r_)r8r_rO�xrrr�test_readonly_attributes�s
"�z,CommonBufferedTests.test_readonly_attributesN)r"r#r$r�r�r�r�r�r�r�r�rwrrrxrrrrrrr�#s


r�c@s(eZdZejdd��Zejdd��ZdS)�
SizeofTestcCs\d}d}|��}|j||d�}t�|�|}|��}|j||d�}|�t�|�||�dS)N�� ��buffer_size)rVr�r��	getsizeofr�)r8Zbufsize1Zbufsize2r�r�r�rrr�test_sizeof�szSizeofTest.test_sizeofcCsFd}|��}|j||d�}t�|�|}|��|�t�|�|�dS)Nrr)rVr�r�rrzr�)r8r$r�r�r�rrr�test_buffer_freeing�szSizeofTest.test_buffer_freeingN)r"r#r$r�cpython_onlyrrrrrrr�s


rc@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)Nry�r�r��r�)rVr�r9r�rZr�r�r�rrr�test_constructor�s


z#BufferedReaderTest.test_constructorcC�X|j�|j�}~|j�|j�}|�ttfd|jd�|�|���|�|�d�d�dS�N�uninitialized|has no attributerrW)	r��__new__r�r�r.rZr9rVr�rrrr�test_uninitialized��
�z%BufferedReaderTest.test_uninitializedcCsDdD]}|�d�}|�|�}|�d|�|��q|�t|jd�dS)N)Nr�r�r�r�)rVr�r�rZr�r�)r8�argr�r�rrr�	test_reads


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��arM�brWrr}r�rzrar{r�r�rVr�r�rZr�r6r�rrr�
test_read1	s

zBufferedReaderTest.test_read1cCs�|�d�}|�|�}|�d|�d��|�d|���|�d|���|�d|�d��|�|jd�|�d	|���|�|jd
�dS)Nr�r+rMsbcrzr{r�r�rWrr-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�rar|�cdr~rMsgfr)ryNscb)rVr�r�r�rQ)r8r�r�rrrr�
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�)ry�de�fghsjklrrar�ryrMr|r}r2r3r�sfghjklr)rVr�r�r��peekr6r�)r8rr�r�rrrr�test_readinto19s*
z!BufferedReaderTest.test_readinto1cC�d}d}|�|f�}|j||d�}t�dd�}t|�dksJ�|�|�}|�|t|��t|��d�}|�|t|��|�	|d|�|d|��|�	||d�dt||d���dS�	N�<saaaaaaaaaaaaaaaaaaaaaaaaaarrNs xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxr rr�)
rVr�rrrQr(rr�
assertLessr��r8rrr�r�rrPZbmrrr�test_readinto_arrayP�
(z&BufferedReaderTest.test_readinto_arraycCr6r7)
rVr�rrr�r(rrr9r�r:rrr�test_readinto1_arrayer<z'BufferedReaderTest.test_readinto1_arraycsV�fdd�}��|���gd����|��d�ddg���|��d�gd��dS)Ncs��d�}��|�S)N�r
r�r~)rVr�)r�r@rrr�{�

z0BufferedReaderTest.test_readlines.<locals>.bufior>rfr
r��r�rrrr@r�test_readlineszs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�rMr�r)r�r�r�r)rMrarra)rrrMr)rr}r�r�rZr~)r8rZdlenrr$Zbuf_read_sizesZraw_read_sizesr�r�r�nbytesrrr�test_buffering�s�

�z!BufferedReaderTest.test_bufferingcCs�|�d�}|�|�}|�d|�d��|�d|�d��|�d|���|�d|�d��|�|���|�d|���|�d�}|�d	|���|�|���dS)
N)ryrzNr{NNN�abcdr��erMsfgrW)r+NNr+)rVr�r�rZr4rcr�r�rrr�test_read_non_blocking�s


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

z%BufferedReaderTest.test_read_past_eofcCs(|�d�}|�|�}|�d|���dSr�rIr�rrr�
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�rCc
s^ztddg�D]}��|�}|sWdS��|�qWdSty.}z��|��d}~ww)NrM�)rrZr;�	Exception)rPr��e)r��errors�resultsrrr/�s
�
��z*BufferedReaderTest.test_threads.<locals>.fc�g|]}tj�d��qS��r��rkr���.0rr.rr�
<listcomp>��z3BufferedReaderTest.test_threads.<locals>.<listcomp>r��{�G�z�?�(the following exceptions were caught: %rrW)r3rQ�random�shufflerr�r+rr�r=�	read_moder�r�
start_threadsrprqrqr�r�rr�)r8�N�lr�r_�threadsrN�cr)r�rRr/rSr�test_threads�s:
���
���zBufferedReaderTest.test_threadscCsb|�|�d��}|�|j|j�|�|j|jd�|�d�|�|j|jd�|�|j|j�dS)NrrrM)r�r�r�r�rKrJrZrrrrr�s
z"BufferedReaderTest.test_unseekablecCs@|�d�}|�|�}|�t|jd�|�t|j�dd�|_dS)Nr�rcSrr:rrrrrrn�roz7BufferedReaderTest.test_misbehaved_io.<locals>.<lambda>)r^r�r�ryrJrKrzr�rrr�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)Nr rarMr�rzfailed for {}: {} != 0)rVr�r�rZr7ri)r8r$rPr�r�rrr�test_no_extraneous_read�s
�
��z*BufferedReaderTest.test_no_extraneous_readcCsDt�t�d��}|�d�|��|�t|j�|�t|jd�dS)N�12rM)	r�r�r�rZrzr�r�r4r�r<rrr�test_read_on_closed�s

z&BufferedReaderTest.test_read_on_closedcCsH|�d�}|�|�}|�|���|�|j|j�|�|j|jd�dS)Nryr)r}r�rqrAr�r�rRr�rrr�test_truncate_on_read_onlys


z-BufferedReaderTest.test_truncate_on_read_onlyN)r"r#r$r`r"r'r*r.r/r1r5r;r=rArErHrJrKr�requires_resourcerfrrgrhrjrkrrrrr�s.

'	rc@sZeZdZejZe�epe	d�dd��Z
dd�Zdd�Zdd	�Z
d
d�Zdd
�Zdd�ZdS)�CBufferedReaderTest�Lsanitizer defaults to crashing instead of returning NULL for malloc failure.cC�Ht�|�tjdkr"|��}|�|�}|�ttt	f|j
|tj�dSdS�Nrf)rr"r�rjrVr�r�r��MemoryErrorr�r9r�rrrr"�



��z$CBufferedReaderTest.test_constructorcCs�|�dg�}|�|�}|jt|j|dd�|�t|j�|jt|j|dd�|�t|j�|jt|j|dd�|�t|j�dS)Nryrrr!r�)rVr�r�r�r9rZr�rrr�test_initializations
z'CBufferedReaderTest.test_initializationcCs(|�d�}|�|�}|�t|jd�dS)Nr�r�)r^r�r�ryrZr�rrr�test_misbehaved_io_read's

z+CBufferedReaderTest.test_misbehaved_io_readcCs�|�tjtj�t�dtf��!|�tjd�}|�|�}||_	t
�|�}~t�
�Wd�n1s3wY|�|�|�dS)Nr&r!)r�rr�r�r
r;r<r�r�r/rarbrr=rc�r8r�r/rdrrrre.s


�z+CBufferedReaderTest.test_garbage_collectioncC�F|�td��|�t��ddd�Wd�dS1swYdS)Nr�r�r�r�r�r�r�r@rrr�test_args_error;�"�z#CBufferedReaderTest.test_args_errorcCsht�t�d��}dd�|_|�|�}|�t��}|��Wd�n1s&wY|�|j	j
�dS)NricSr>r�r�rOrrrrnBroz=CBufferedReaderTest.test_bad_readinto_value.<locals>.<lambda>)r�r�r�rQr�r�ryr�rcr��	__cause__�r8r�r�r�rrr�test_bad_readinto_value@s


�z+CBufferedReaderTest.test_bad_readinto_valuecCsjt�t�d��}dd�|_|�|�}|�t��}|��Wd�n1s&wY|�|j	j
t�dS)NricSr>r�rrzrrrrnJroz<CBufferedReaderTest.test_bad_readinto_type.<locals>.<lambda>)r�r�r�rQr�r�ryr�rr�r{r�r|rrr�test_bad_readinto_typeHs


�z*CBufferedReaderTest.test_bad_readinto_typeN)r"r#r$r�r�r��unittest�skipIf�MEMORY_SANITIZER�ADDRESS_SANITIZERr"rsrtrerxr}r~rrrrrms



rmc@�eZdZejZdS)�PyBufferedReaderTestN)r"r#r$r�r�r�rrrrr�Qr�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)Nrrr r�ryrr!r��ghirWsabcghi)
rVr�r9r�r=rrr�r�r�r5r�rrrr"Xs


z#BufferedWriterTest.test_constructorcCr#)Nr%rWr)	r�r&r�r�r.r=r9rVr�rrrrr'hr(z%BufferedWriterTest.test_uninitializedcCsD|��}|�|�}|�d�|�|j�|��|�|jdg�dS)Nshowdy!)rVr�r=rqr5r�r�r�rrr�test_detach_flushrs

z$BufferedWriterTest.test_detach_flushcCsh|��}|�|d�}|�d�|�|j�td�}|�|�d|dd�<|��|�d�|j�d�dS)NrCry�def�***rW�abcdef)	rVr�r=rqr5r�rrr�r�)r8�writerr�r�rrr�
test_writezs

zBufferedWriterTest.test_writecCsn|��}|�|d�}d}tdt|�d�D]
}|�|||d��qd�|j�}|�|�|dd��|�dS)NrCsabcdefghijklmnoprr�rWi����)	rVr�rQrr=r�r5rpr)r8r�r��contentsrPZflushedrrr�test_write_overflow�sz&BufferedWriterTest.test_write_overflowc	Cs�ttd��d}d}|��}|�|d�}dd�}|�}|t|�krItt|�t|�|�}|�|�||||��|�||�||7}|t|�ks!|�	�|�|d�
|j��dS)NrNrMrr�css(�td�D]}td�D]}|VqqdS)NrM�)rrQ)r�rNrrr�	gen_sizes�s���z2BufferedWriterTest.check_writes.<locals>.gen_sizesrW)rrQrVr�rr�rr�r=rrr�r5)	r8Zintermediate_funcr�rPr�r�r��sizesr�rrr�check_writes�s�zBufferedWriterTest.check_writescC�|�dd��dS)NcSrr:rr�rrrrn�roz0BufferedWriterTest.test_writes.<locals>.<lambda>�r�r@rrr�test_writes��zBufferedWriterTest.test_writescCr�)NcSs|��Sr:rr�rrrrn�sz<BufferedWriterTest.test_writes_and_flushes.<locals>.<lambda>r�r@rrr�test_writes_and_flushes�r�z*BufferedWriterTest.test_writes_and_flushescCs(dd�}|�|�dd�}|�|�dS)NcSs8|��}|�|dd�|�|dd�|�|d�dSrL)rKrJ�r�rrrr�_seekabs�sz:BufferedWriterTest.test_writes_and_seeks.<locals>._seekabscSs4|�dd�}|�dd�|�dd�|�|d�dS)NrrMr�)rJr�rrr�_seekrel�sz:BufferedWriterTest.test_writes_and_seeks.<locals>._seekrelr�)r8r�r�rrr�test_writes_and_seeks�s
z(BufferedWriterTest.test_writes_and_seekscCr�)NcSs|�|���Sr:)rRrKr�rrrrn�sz>BufferedWriterTest.test_writes_and_truncates.<locals>.<lambda>r�r@rrr�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)NrCrFrsefghirf�ksjklmn�0sopqrwxyz0123456789z'BlockingIOError should have been raisedr sabcdefghijklmnopqrwxyzs	ABCDEFGHIr�s	01234567A)r�r�r�r=r�r��characters_writtenr�r�rpr)r8r_r�rQ�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�rsXYrasXYcdefs123456sXYcdef123456)	r�r�r�r�r=rKrJrrr�r8r_r�rrr�test_write_and_rewind�sz(BufferedWriterTest.test_write_and_rewindcCs<|��}|�|d�}|�d�|��|�d|jd�dS�NrCryr)rVr�r=rrr�r5�r8r�r�rrr�
test_flush�s

zBufferedWriterTest.test_flushcCsFgd�}|��}|�|d�}|�|�|��|�d�|j�d�dS�N)r|r0r~rCrWr�)rVr�r�rrr�r�r5�r8rcr�r�rrr�test_writelines�s
z"BufferedWriterTest.test_writelinescCsJtgd��}|��}|�|d�}|�|�|��|�d�|j�d�dSr�)rrVr�r�rrr�r�r5r�rrr�test_writelines_userlist�s
z+BufferedWriterTest.test_writelines_userlistcCsL|��}|�|d�}|�t|jgd��|�t|jd�|�t|jd�dS)NrCr:�abc)rVr�r�r�r�r�rrr�test_writelines_error�s
z(BufferedWriterTest.test_writelines_errorcCs>|��}|�|d�}|�d�~t��|�d|jd�dSr�)rVr�r=rr=r�r5r�rrrr>s
z"BufferedWriterTest.test_destructorcCs�|�tjtj�|jtj|jdd��$}|�|d�}|�d�|�|�	d�d�|�|�
�d�Wd�n1s9wY|jtjddd��}|�|��d�Wd�dS1s[wYdS)	Nrr�rCr�r�r�r�ry)r�rr�r�r+�
write_moder�r=r�rRrKrZ)r8r_r�r/rrr�
test_truncate
s
�"�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')rr��zr+br�rMra)
r�rr�r�r+r=rZrRr�rK)r8r/Zbuffer_sizesrrrr�test_truncate_after_writes�
���z,BufferedWriterTest.test_truncate_after_writerLc
	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)NrMrNrMrOrr�rCc
sXz	z���}WntyYWdSw��|�qty+}z��|��d}~wwr:)�popleftrNr=rPr;)r�rQ)r�rR�queuerrr/>s�
�
��z*BufferedWriterTest.test_threads.<locals>.fcrTrUrWrXr.rrrZIr[z3BufferedWriterTest.test_threads.<locals>.<listcomp>r�r\r]r�)rrQrrrrr;r+rr�r�r�rrarprqrqrzrZr�rr�)
r8rbr�r�rPr�r_rdr�rNr)r�rRr/r�rrf's@���
�
��zBufferedWriterTest.test_threadscCsP|��}|�|d�}|�t|jd�|�t|j�|�t|jd�dd�|_dS)Nrfrr�cSrr:rrrrrrn^roz7BufferedWriterTest.test_misbehaved_io.<locals>.<lambda>)r^r�r�ryrJrKr=rzr�rrrrgVsz%BufferedWriterTest.test_misbehaved_iocCsB|�t��|�|��dd�Wd�dS1swYdS�NrCr��r�r�r�rVr@rrr�test_max_buffer_size_removal`s"�z/BufferedWriterTest.test_max_buffer_size_removalcCsH|��}dd�}||_|�|�}|�d�|�t|j�|�|j�dS)NcSr�r:r�)rrrr�	bad_writefr�z?BufferedWriterTest.test_write_error_on_close.<locals>.bad_write�spam)rVr=r�r�ryrzrprx)r8r_r�rrrr�test_write_error_on_closeds

z,BufferedWriterTest.test_write_error_on_closecCs\|��}|�|d�}tj|jd�}|��|j��|�t	|j
d�|�|j�|�
�dS)NrCrVr�)rjr�rkr�rzr�rm�waitr�r�r=rprxr�)r8r�r��trrr�test_slow_close_from_threadns
z.BufferedWriterTest.test_slow_close_from_threadN)r"r#r$r�r"r'r�r�r�r�r�r�r�r�r�r�r�r�r�r�r>r�r�rrlrfrgr�r�r�rrrrr�Us6


.

r�c@sBeZdZejZe�epe	d�dd��Z
dd�Zdd�Zdd	�Z
d
S)�CBufferedWriterTestrncCrorp)r�r"r�rjrVr�r�r�rqr�r9r�rrrr"~rrz$CBufferedWriterTest.test_constructorcCs�|��}|�|�}|jt|j|dd�|�t|jd�|jt|j|dd�|�t|jd�|jt|j|dd�|�t|jd�dS)Nrrr�r!r�)rVr�r�r�r9r=r�rrrrs�s
z'CBufferedWriterTest.test_initializationcCs�|�tjtj�t�dtf��&|�tjd�}|�|�}|�	d�||_
t�|�}~t
��Wd�n1s8wY|�|�|�|�tjd��}|�|��d�Wd�dS1s_wYdS)Nr&r!s123xxxr�)r�rr�r�r
r;r<r�r�r=rrarbrr=rcr+r�rZrurrrre�s



�"�z+CBufferedWriterTest.test_garbage_collectioncCrv)Nr�rrwr@rrrrx�ryz#CBufferedWriterTest.test_args_errorN)r"r#r$r�r�r�rr�r�r�r"rsrerxrrrrr�{s


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�rVrqrx�r8�pairrrrr"�sz#BufferedRWPairTest.test_constructorcCs�|j�|j�}~|j�|j�}|�ttfd|jd�|�ttfd|jd�|�|��|���|�	|�d�d�|�	|�d�d�dSr$)
r�r&r�r�r.rZr=r9rVr�r�rrrr'�s
�
�z%BufferedRWPairTest.test_uninitializedcCs(|�|��|���}|�|j|j�dSr:)r�rVr�r�r�r�rrrr��szBufferedRWPairTest.test_detachcCsH|�t��|�|��|��dd�Wd�dS1swYdSr�r�r@rrr�(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>.NotReadablecSr>r�rr@rrrrF�rBzSBufferedRWPairTest.test_constructor_with_not_readable.<locals>.NotReadable.readableN�r"r#r$rFrrrr�NotReadable�rr��rVr�ryr�)r8r�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>.NotWriteablecSr>r�rr@rrrrA�rBzUBufferedRWPairTest.test_constructor_with_not_writeable.<locals>.NotWriteable.writableN)r"r#r$rArrrr�NotWriteable�rr�r�)r8r�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�ryrMrzr~)r�r�rVr�rZr�rrrr*�szBufferedRWPairTest.test_readcsT�fdd�}��|���gd����|���gd����|��d�ddg�dS)Ncs����d�����S)Ns	abc
def
h)r�r�rVrr@rrrn��z3BufferedRWPairTest.test_readlines.<locals>.<lambda>)r
rr�rfr
rr@r�rr@rrA�sz!BufferedRWPairTest.test_readlinescCs<|�|�d�|���}|�|�d�d�|�|��d�dS)Nr�r�ryr�)r�r�rVr�r�r�rrrr.�szBufferedRWPairTest.test_read1c	Cs|dD]9}|�|��*|�|�d�|���}td�}|�t||�|�d�|�t|�d�Wd�n1s6wYqdS)Nr�r�srfsabcde)r�r�r�rVrr�r�r)r8r�r�rrrrr1�s���z BufferedRWPairTest.test_readintocCsf|��}|�|��|�}|�d�|��td�}|�|�d|dd�<|��|�|jddg�dS)Nryr�r�)rVr�r=rrr�r�r5)r8r�r�r�rrrr��s

zBufferedRWPairTest.test_writecCsB|�|�d�|���}|�|�d��d��|�|�d�d�dS)Nr�r�ry)r�r�rVrpr4rr�rZr�rrr�	test_peekszBufferedRWPairTest.test_peekcC�&|�|��|���}|�|���dSr:)r�rVrprFr�rrr�
test_readable
�z BufferedRWPairTest.test_readablecCr�r:)r�rVrprAr�rrr�test_writeabler�z!BufferedRWPairTest.test_writeablecCr�r:)r�rVrqrGr�rrr�
test_seekablesz BufferedRWPairTest.test_seekablecCs8|�|��|���}|�|j�|��|�|j�dSr:)r�rVrqrxrzrpr�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_close"r�zIBufferedRWPairTest.test_reader_close_error_on_close.<locals>.reader_closer�cSrr:rrrrrrn0rozEBufferedRWPairTest.test_reader_close_error_on_close.<locals>.<lambda>)rVrzr�r�r
rr�r�rprxrq)r8r�r�r�r�rrrr� test_reader_close_error_on_close!s
�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_close3r�zIBufferedRWPairTest.test_writer_close_error_on_close.<locals>.writer_closer�cSrr:rrrrrrnArozEBufferedRWPairTest.test_writer_close_error_on_close.<locals>.<lambda>)rVrzr�r�r
rr�r�rqrxrprr�r=)r8r�r�r�r�rrrr� test_writer_close_error_on_close2s*
�



�
"�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�Mr�zPBufferedRWPairTest.test_reader_writer_close_error_on_close.<locals>.reader_closecSr�r:r�rrrrr�Or�zPBufferedRWPairTest.test_reader_writer_close_error_on_close.<locals>.writer_closer�r�cSrr:rrrrrrn`rozLBufferedRWPairTest.test_reader_writer_close_error_on_close.<locals>.<lambda>cSrr:rrrrrrnaro)rVrzr�r�r
rr�r�rrrqrx)r8r�r�r�r�r�rrrr�'test_reader_writer_close_error_on_closeLs$
�
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:)rVr9�_isatty)r8�isattyrrrr9er?zABufferedRWPairTest.test_isatty.<locals>.SelectableIsAtty.__init__cSs|jSr:)r�r@rrrr�ir�z?BufferedRWPairTest.test_isatty.<locals>.SelectableIsAtty.isattyN)r"r#r$r9r�rrrr�SelectableIsAttydsr�FT)rVr�rqr�rp)r8r�r�rrr�test_isattycszBufferedRWPairTest.test_isattycCs*|�|��|���}t�|�}d}d}dSr:)r�rVrarb)r8Zbrwrbrrr�test_weakref_clearingxs
z(BufferedRWPairTest.test_weakref_clearingN)r"r#r$r"r'r�r�r�r�r*rAr.r1r�r�r�r�r�r�r�r�r�r�r�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�r�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+cC�t�|�t�|�dSr:)rr"r�r@rrrr"�rnz#BufferedRandomTest.test_constructorcCr�r:)rr'r�r@rrrr'�rnz%BufferedRandomTest.test_uninitializedcCsn|�d�}|�|d�}|�d|�d��|�d�|�d�|�|j�|�d|���|�d|jd	�dS)
N)�asdf�ghjkrC�asrasdddseeer�sdddeeer)rVr�r�rZr=rqr5�r8r_r�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	asdfghjklr�rarr�rs123fs	asdf123flr����rfrMr�sfl�r�)r�r�r�rZrKrJr=rrrr�r�r�rrr�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)NrBr|rarir~r�r�rsXYZr�)r�r�r�r=rKrrrJ)r8Z	read_funcr_r�rrr�check_flush_and_read�s



z'BufferedRandomTest.check_flush_and_readcCr�)NcWs
|j|�Sr:)rZ)r�r�rrrrn��
z8BufferedRandomTest.test_flush_and_read.<locals>.<lambda>�r�r@rrr�test_flush_and_read�r�z&BufferedRandomTest.test_flush_and_readcC�ddd�}|�|�dS)Nr�cSs.t|dkr|nd�}|�|�}t|d|��S)Nr�')r�rQr�r�rPrrrr�	_readinto�s
z=BufferedRandomTest.test_flush_and_readinto.<locals>._readinto�r�r�)r8r�rrr�test_flush_and_readinto�s
z*BufferedRandomTest.test_flush_and_readintocCr�)Nr�cSs2|�|�}|dkr|d|�}|�t|�d�|S�Nr�rM)r4rJrr�rrr�_peek�s

z5BufferedRandomTest.test_flush_and_peek.<locals>._peekr�r��r8r�rrr�test_flush_and_peek�s
z&BufferedRandomTest.test_flush_and_peekcCsh|�d�}|�|�}|�d�|��|�d�|��|�dd�|�d|���|�d|���dS)NrB�123s45rs	12345fghi)r�r�r=rrrJr�rrZr�rrr�test_flush_and_write�s



z'BufferedRandomTest.test_flush_and_writecCr�r:)rrfr�r@rrrrf�rnzBufferedRandomTest.test_threadscCs(dd�}|�|�dd�}|�|�dS)NcS�|�d�dSrv)r4r�rrrr��r�z6BufferedRandomTest.test_writes_and_peek.<locals>._peekcSs.|��}|�dd�|�d�|�|d�dS)Nr�rMr)rKrJr4r�rrrr��s
r�r�rrr�test_writes_and_peek�s
z'BufferedRandomTest.test_writes_and_peekcC�dd�}|�|�dS)NcS�|�dd�|�d�dSr�)rJrZr�rrr�_read�rCz7BufferedRandomTest.test_writes_and_reads.<locals>._readr��r8rrrr�test_writes_and_reads��z(BufferedRandomTest.test_writes_and_readscCr)NcSrr�)rJr�r�rrr�_read1�rCz9BufferedRandomTest.test_writes_and_read1s.<locals>._read1r�)r8rrrr�test_writes_and_read1s�rz)BufferedRandomTest.test_writes_and_read1scCr)NcSs|�dd�|�td��dSr�)rJrQr�r�rrrr	sz;BufferedRandomTest.test_writes_and_readintos.<locals>._readr�rrrr�test_writes_and_readintos	rz,BufferedRandomTest.test_writes_and_readintoscCs�dD]Q}|�d�}|�|d�}|�|�d�d�|�|��d�|�d|�|�|��|d�|��|�|��|d�|��}|�|dd|dd|�qdS)N)rMrfrrrM�A�Br�)r�r�r�rZrKr=rrr)r8Zoverwrite_sizer_r�r�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��)rJrZr=)r�Zpos1Zpos2rrr�mutate	s


z:BufferedRandomTest.test_write_rewind_write.<locals>.mutates�����rr�rarMzfailed result for i=%d, j=%d)rQrr�r�rrr�r�r)r8rrrN�jr_r��expectedrrr�test_write_rewind_write	s 

���z*BufferedRandomTest.test_write_rewind_writecCs^|�d�}|�|d�}|�|�d�d�|�|��d�|�|�d�d�|�|��d�dS)Nrr�rasAAsBBr)r�r�r�rZrRr=r�rrr�!test_truncate_after_read_or_write5	s
z4BufferedRandomTest.test_truncate_after_read_or_writecCr�r:)rrgr�r@rrrrg=	rnz%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��1rMr,�2rzr��f�4r�s1b2d3f4hryr+r}sa2c)r�r�r=r�rZr�r�rQr4rrr)r8r_r/rOrrr�test_interleaved_read_writeA	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
rsb
rrr��
s
1b
2def
3
)r�r�r=r�r�rrr)r8r_r/rrr�test_interleaved_readline_writeZ	s


��"�z2BufferedRandomTest.test_interleaved_readline_writeN)r"r#r$r`r�r"r'r�r�r�r�r�r�r�rfr�rrrrrrrgrrrrkrrrrr��s2
r�c@s:eZdZejZe�epe	d�dd��Z
dd�Zdd�ZdS)	�CBufferedRandomTestrncCrorp)r�r"r�rjrVr�r�r�rqr�r9r�rrrr"q	rrz$CBufferedRandomTest.test_constructorcCr�r:)rmrer�r@rrrre}	rnz+CBufferedRandomTest.test_garbage_collectioncCrv)Nr�rrwr@rrrrx�	ryz#CBufferedRandomTest.test_args_errorN)
r"r#r$r�r�r�rr�r�r�r"rerxrrrrrn	s

rc@r�)�PyBufferedRandomTestN)r"r#r$r�r�r�rrrrr�	r�rc@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�IncrementalDecoderr9�reset)r8rRrrrr9�	sz#StatefulIncrementalDecoder.__init__cCsdt|�S)Nz<SID %x>)�idr@rrr�__repr__�	�z#StatefulIncrementalDecoder.__repr__cCsd|_d|_t�|_dSrv)rN�or�r�r@rrrr �	sz StatefulIncrementalDecoder.resetcCs,|jdA|jdA}}t|j�|d|fS)NrMr�)rNr$rr�)r8rNr$rrr�getstate�	sz#StatefulIncrementalDecoder.getstatecCs:|\}}t|�|_t|d�\}}|dA|dA|_|_dS)Nr�rM)r�r��divmodrNr$)r8�stater�r�rNr$rrr�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)Nr&r�.)rN�ordr��process_wordr;r)r8�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)
Nr&rrN�crMr$r��-r))	r�r*r��intrNr$r/rr�)r8r.rrrr+�	s  z'StatefulIncrementalDecoder.process_wordN)rr�)r"r#r$rSr9r"r r%r(r/r+�codecEnabledrrrrr�	s

rc	Cs:tjr|dkrt�d�}tjd|jddddtd�SdSdS)N�test_decoderr()r��encoder/�incrementalencoder�streamreader�streamwriter�incrementaldecoder)rr3r�lookup�	CodecInfor5)r��latin1rrr�lookupTestDecoder�	s
��r=c@s eZdZdZgd�Zdd�ZdS)�StatefulIncrementalDecoderTestzB
    Make sure the StatefulIncrementalDecoder actually works.
    ))rFFza.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?r&rWrMr@)�
test_casesrr�r/)r8r,�eofr.�drrrr4
sz+StatefulIncrementalDecoderTest.test_decoderN)r"r#r$rSrAr4rrrrr>�	sr>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�t�t�|�	tj
t�dS)NsAAA
BBB
CCC
DDD
EEE
sAAA
BBB
CCC
DDD
EEE
r�)�testdatar/�
normalizedrr�r�r�registerr=r��
unregisterr@rrrr�
s

zTextIOWrapperTest.setUpcCr�r:r�r@rrrr�"
rezTextIOWrapperTest.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�é

rMr�r)r(�
r�FT)r*�line_buffering�é
rDr�)r�r�r�r9r�r*rKr�r�r�r��r8r'rr�rrrr"%
s
z"TextIOWrapperTest.test_constructorcCsj|j�|j�}~|j�|j�}|�tt|�|�ttfd|jd�|j	|�
�dd�|�|�d�d�dS)Nr%rr�r)r&)r�r&r�rPr�r�r�r.rZr9rVr��r8r�rrrr'3
s
�z$TextIOWrapperTest.test_uninitializedcCsR|��}|�|�}|�td��|j|dd�Wd�dS1s"wYdS)Nzis not a text encoding�hexr))r�r�r��LookupErrorr�)r8r'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)Zhowdyshowdyr)r�r�r�r�r�r=rqrr�r�r�r�r*rRrK�
write_throughrMrrrr�G
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�r5r�r�r#r�r�r��moder�r�)r8r_rr��modnamerrrr�[
s*

�
�
�
�
zTextIOWrapperTest.test_reprc	Csz|��}|j|dd�}t�|d|��!zt|�Wn	ty"Yn	wWd�dSWd�dS1s6wYdS)Nr�r)r�)r�r�rr�r�r��r8r_r�rrrr�o
s���"�z%TextIOWrapperTest.test_recursive_reprcCsx|��}|�|d�}|j|dddd�}|�d�|�|��d�|�d�|�|��d	�|�d
�|�|��d�dS)NrMr��
T�r*r�rK�XrWzY
ZsXY
ZzA
BsXY
ZA
B)r�r�r�r=r�rrMrrr�test_line_bufferingy
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)NrMr�rVFrWzAB
CrWT)rKsAB
CzDEF
Gs	AB
CDEF
G�Hs
AB
CDEF
GHZIJ)r�r�r�r=r�r�reconfigurerKrMrrr�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�rrr�EncodingWarningr�r�r*�clear�update)r8Zold_environ�keyZcurrent_locale_encodingrr�rrr�test_default_encoding�
s"

�

�

�z'TextIOWrapperTest.test_default_encodingcsXddl�|��}�fdd�|_|jt|j|dd��fdd�|_|jt|j|dd�dS)Nrc�
�jdSrv)ZINT_MAXr��	_testcapirrrn�
r�z8TextIOWrapperTest.test_device_encoding.<locals>.<lambda>rbr)crirv)ZUINT_MAXrrjrrrn�
r�)rkr�rEr�r�r�r<rrjr�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*rrrrd�assertIsNotNonerr:�r8rr�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)r�r*rRrzabc

�replaceuabc
�
)r�r�r��UnicodeErrorrZr�rnrrr�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)�ÿrrprrV)r*rRr�u	abcÿdef
sabcdef
rqsabc?def
)r�r�r�rrr=rrr�rrnrrr�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^qp|�t	|
�d�|�
|
|���qTnt|�}t
||	�D]
\}}|�||�qz|�t	|�t	|	��q:q6q/q!dS)N)�unix
�	windows
zos9
�last
�nonl)rvzwindows
zos9
rxryr&rV)rvrwz	os9
last
ryrJzunix
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)FTrMr��r�r*Tra)rr�r5rQr�r�r�rZr�rr;r�r3�zip)r8Zinput_linesr�	encodingsr*rZdo_readsr$r�Z	exp_linesr��textioZ	got_lines�c2Zgot_lineZexp_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
r�
r�T)�keependsr&rV)zAAA
zBBB
z
CCC
DDD
EEE
�FFF
�GGGrJ)zAAA
BBB
CCC
DDD
EEE
r�r�rz)z
AAA
BBB
CCC
zDDD
zEEE
z
FFF
z
GGGr�r)
rqr/�
splitlinesr�r�r�rrJrZr�)r8rErFr�rrO�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)r&rVrzrJr�r�zAAA
BzBB
CCC
zX
Y
ZF)r��linesep�sorted�itemsr�r�r=rrr�rxr)r8Ztestdictrr�rrOr�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;rrzr@�rErcrrrzD�z:TextIOWrapperTest.test_destructor.<locals>.MyBytesIO.closeNr�rr�rr�	MyBytesIOCsr�r�r)r�ry)r�r�r=rr=r�)r8r�rr�rr�rr>@s
z!TextIOWrapperTest.test_destructorcsLg�G�fdd�d|j�}|��}||dd�}~t��|��gd��dS)Ncr*)z<TextIOWrapperTest.test_override_destructor.<locals>.MyTextIOcr+rvr,r�r/rrr-Qr1zDTextIOWrapperTest.test_override_destructor.<locals>.MyTextIO.__del__cr2r`r3r@r/rrrzYrnzBTextIOWrapperTest.test_override_destructor.<locals>.MyTextIO.closecr2r4r5r@r/rrrr\rnzBTextIOWrapperTest.test_override_destructor.<locals>.MyTextIO.flushr6rr7rcr�MyTextIOPr9r�r�r)r:)r�r�rr=r�)r8r�rr�rr7rr�Ns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))
rurr�r�r.r�r�r�rcr�r�r�ryr�rrrr�es
�
��"�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)rMrar�rrfr�r ��� �!�?�@�A)r�r(r��w+r)r�r��r+rrar&rMrer&�def�utf)r+rr�r-r�r=rzrKrZrJr�multi_line_test)r8�	chunksize�encr/�cookierrr�
test_basic_iots:


��zTextIOWrapperTest.test_basic_iocCs�|�d�|��d}g}dD]+}g}t|�D]
}|�||t|��qd�|�d}|�|��|f�|�|�q|�d�g}		|��}
|��}|sNqV|	�|
|f�qC|�	|	|�dS)Nru	sÿ࿿￿)rrMrar�rrf�r�r�r��>r�r�r�rMr&rV)
rJrRrQr;rr�rKr=r�r�)r8r/r��sampleZwlinesr��charsrN�lineZrlinesrrrrr��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�rKr=rJr�r�r�ryrz)r8r/�p0�p1Zp2r�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)	Nrar'r��袈
r�r'r)r�)
r0rr5r�rr+rr�r=rZr�rKr�)
r8�
chunk_sizeZprefix_sizeZu_prefix�prefixZu_suffix�suffixr�r/r�rrr�test_seeking�s"�
"�zTextIOWrapperTest.test_seekingcCs�d}|�tjd��
}|�|�Wd�n1swY|jtjddd��}|jd|_|��|��Wd�dS1sAwYdS)Ns࿿
r�r'r�r)ra)r+rr�r=r-r�rK)r8rr/rrr�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�r4r)rMrfN)r+rr�r=rzr-rZrQrr�rKrJ)r�min_posr/ZdecodedrNrr��Z
CHUNK_SIZEr8rr�test_seek_and_tell_with_data�s$


��zJTextIOWrapperTest.test_seek_and_tell.<locals>.test_seek_and_tell_with_datarMra�.r�)rr3r>rAr)r8r�r,�_�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=rzr�r�rKrJ)r8r/r�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=rKrJrzr�r�)r8r/r�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)NZ
1234567890)r{r|r}r~rr�r)rra)r�r�r=rJr�rZrr5)r8rrr*rOr/rrr�test_encoded_writes"s



�z%TextIOWrapperTest.test_encoded_writescCs4Gdd�d|j�}|j|�dd�}|�t|j�dS)Nc@r)z5TextIOWrapperTest.test_unreadable.<locals>.UnReadablecSr>r�rr@rrrrF8rBz>TextIOWrapperTest.test_unreadable.<locals>.UnReadable.readableNr�rrrr�
UnReadable7rr�r�r))r�r�r�ryrZ)r8r�r�rrr�test_unreadable6sz!TextIOWrapperTest.test_unreadablecC�D|j|�d�dd�}d}	|�d�}|sq||7}q
|�|d�dS)NsAA
BBr�r)r&TrMzAA
BB�r�r�rZr��r8r��readsrerrr�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
ZCCrrfr�r�)r�r�r�rrJ�r8r�rrrrAGs

z TextIOWrapperTest.test_readlinescCr�)Ns�AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
Br�r)r&Tr�z�AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
Br�r�rrr�test_read_by_chunkPs
�z$TextIOWrapperTest.test_read_by_chunkcCsDgd�}|��}|j|dd�}|�|�|��|�|��d�dS�N)r&ZcdZefr�r)r�)r�r�r�rrr�r�r8rcrOr�rrrr�[s
z!TextIOWrapperTest.test_writelinescCsHtgd��}|��}|j|dd�}|�|�|��|�|��d�dSr�)rr�r�r�rrr�rr�rrrr�cs
z*TextIOWrapperTest.test_writelines_userlistcCsJ|j|��dd�}|�t|jgd��|�t|jd�|�t|jd�dS)Nr�r)r:ry)r�r�r�r�r�r�rrrr�ksz'TextIOWrapperTest.test_writelines_errorcCsH|j|�|j�dd�}d}	|�d�}|sq||7}q|�||j�dS)Nr�r)r&TrM)r�r�rErZr�rFr�rrr�test_issue1395_1qs
�z"TextIOWrapperTest.test_issue1395_1cCsN|j|�|j�dd�}d|_d}	|�d�}|sq||7}q|�||j�dS)Nr�r)rr&�r�r�rEr-rZr�rFr�rrr�test_issue1395_2}s
�z"TextIOWrapperTest.test_issue1395_2cCsj|j|�|j�dd�}d|_|�d�}||�d�7}||��7}||��7}||��7}|�||j�dS�Nr�r)r)r�r�rEr-rZr�r�rF�r8r�r�rrr�test_issue1395_3�s
z"TextIOWrapperTest.test_issue1395_3cCsD|j|�|j�dd�}d|_|�d�}||��7}|�||j�dSr�r�r�rrr�test_issue1395_4�s

z"TextIOWrapperTest.test_issue1395_4cCsX|j|�|j�dd�}d|_|�d�}|��}|�d�|�|�|�|�d�d�dS)Nr�r)rrzBBB
)r�r�rEr-rZrKrJr�)r8r�r�rrrr�test_issue1395_5�s


z"TextIOWrapperTest.test_issue1395_5cCs2|�|j�}|j|dd�}|�|��|���dS�Nr�r))r�rEr�r�rG)r8r�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�r'�xxx�aaaxxx)rr�r+r=rKr�rZr5�r8�filename�charsetr/rrrr�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)Nr�r�r)r�r�Zzzzr�bbbr�Zbbbzzz)	rr�r+r=rKrJr�rZr5r�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)
Nr�r�r)r�r'rr�r�r�)	rr�r+r=rJr�r�rZr5)r8r�r�r/rrr�test_seek_append_bom�s�
����z&TextIOWrapperTest.test_seek_append_bomcCs�|jtjddd��}|�|jd�Wd�n1swY|jtjdddd��}|�|jd�Wd�dS1s=wYdS)Nr�r�r)rrqrp)r+rr�r�rRr�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�rMr�csd|}�����|�dS)N�Thread%03d
)r�r=)rP�text)�eventr/rr�run�sz1TextIOWrapperTest.test_threads_write.<locals>.runcsg|]
}tj�|fd��qS)r�rWrX)r�rrrZ�s�z8TextIOWrapperTest.test_threads_write.<locals>.<listcomp>r�r\r)r�)rkrlr+rr�rQrrarorprqrZr�r)r8rdZcontentrPr)r�r/r�r�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:)rxr�ryr�rxr�rrrm�sz>TextIOWrapperTest.test_flush_error_on_close.<locals>.bad_flushrrMcSrr:rrrrrrn�roz=TextIOWrapperTest.test_flush_error_on_close.<locals>.<lambda>)r�r�rErrr�ryrzrprxr�rqr�rr�rrw�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)NcSr�r�r�rrrrrm
r�z>TextIOWrapperTest.test_close_error_on_close.<locals>.bad_flushcSr�r�r�rrrrr
r�z>TextIOWrapperTest.test_close_error_on_close.<locals>.bad_closer�r)rrcSrr:rrrrrrn
roz=TextIOWrapperTest.test_close_error_on_close.<locals>.<lambda>cSrr:rrrrrrn
ro)r�rErzr�rrr�ryr�r�r�rrrqrx�r8r�rmrr�rrrrr
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)NcSrr:r	rrrrrm
rBzLTextIOWrapperTest.test_nonnormalized_close_error_on_close.<locals>.bad_flushcSrr:rrrrrr
rBzLTextIOWrapperTest.test_nonnormalized_close_error_on_close.<locals>.bad_closer�r)rr
cSrr:rrrrrrn&
rozKTextIOWrapperTest.test_nonnormalized_close_error_on_close.<locals>.<lambda>cSrr:rrrrrrn'
ro)r�rErzr�rrr�r
rr�r�rrrqrxr�rrrr
s
�
z9TextIOWrapperTest.test_nonnormalized_close_error_on_closecCs@|j|�|j�dd�}|��|��|��|�t|j�dSr�)r�r�rErzr�r�rrr�rrrrx)
s
z"TextIOWrapperTest.test_multi_closecCs<|j|�|j�dd�}|�|j|j�|�|j|jd�dS)Nr�r)r)r�r�rEr�r�rKrJr�rrrr0
sz!TextIOWrapperTest.test_unseekablecCsX|j|�|j�dd�}|�|j�}|�t��||_Wd�dS1s%wYdSr�)r�r�rEr�r.r�)r8r�rOrrrr5
s
"�z*TextIOWrapperTest.test_readonly_attributescCsX|�gd��}|j|ddd�}|�|�d�d�|�|��d�|�t|�dd	g�dS)
N�ryr�sghi
jkl
opq
r�rVr�rZabcdzefghi
zjkl
zopq
)rVr�r�rZr�r3�r8r_r�rrr�
test_rawio;
s
zTextIOWrapperTest.test_rawiocCsV|�gd��}|j|dddd�}|�d�|�d�|�d�|�d	�|j�d
�dS)Nr�r�rVT)r*r�rR�1z23
4�5rWs123
45)rVr�r=r�r�r5r�rrr�test_rawio_write_throughF
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|��Sr?r5�r8r�rr)rd�flush_calledrrrrU
�
zHTextIOWrapperTest.test_bufio_write_through.<locals>.BufferedWriter.flushcr�r?)r;rbr=r�)rd�write_calledrrr=X
r�zHTextIOWrapperTest.test_bufio_write_through.<locals>.BufferedWriter.write)r"r#r$rrr=rgr�r�r�rcrr�T
sr�r+rar�T)r*rRrWr�r�)
r�r�rr�r/r=rqrpr�r)r8r�r�rr�r�r�rr�r�test_bufio_write_throughP
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�rVr�r�T)rRrWrZ23r�FZ45r�)	rVr�r=r[r�rRr�r5rrrUrrr�test_reconfigure_write_throughp
s(



z0TextIOWrapperTest.test_reconfigure_write_throughcCsl|j|�d�dd�}|�t|jd�|j|�d�dd�}|�t|j�|j|�d�dd�}|�t|j�dS)Nr'r�r)rM)r�r�r�r�rZr�rNrrr�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)Zbar)
rr:rr�r�r�r�r�r�r=)r8r�r�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�quopriTsaaaaaarVr�F)rr:r�r�r�)r�r�r@rr�_make_illegal_wrapper�
s
��zETextIOWrapperTest.test_illegal_decoder.<locals>._make_illegal_wrapperrMcs`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:rr@��getstate_ret_valrrr%�
rBzgTextIOWrapperTest.test_illegal_decoder.<locals>._make_very_illegal_wrapper.<locals>.BadDecoder.getstateN)r"r#r$r%rrrr�
BadDecoder�
srcs��Sr:r)r�)rrr�_get_bad_decoder�
r�zdTextIOWrapperTest.test_illegal_decoder.<locals>._make_very_illegal_wrapper.<locals>._get_bad_decoderr�r9)rr:rr�)rrr�)r)rrr�_make_very_illegal_wrapper�
s
�$�zJTextIOWrapperTest.test_illegal_decoder.<locals>._make_very_illegal_wrapperrDr)rMra)r�r�rZr�)r8r�rr)rr8r�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()
            )�iomodrr�-c)r�r"rir)r8rrr�coderrr�_check_create_at_shutdown�
s
�
z+TextIOWrapperTest._check_create_at_shutdowncCs@|��\}}}|r|�|j|���dS|�d|�����dS)N�ok)r
r�shutdown_errorr/r��strip�r8�rc�outrrrr�(test_create_at_shutdown_without_encoding�
sz:TextIOWrapperTest.test_create_at_shutdown_without_encodingcCs6|jddd�\}}}|�|�|�d|�����dS)Nr�rrpr)r
rqr�r/r
rrrr�%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_memoryviewrrRr�rZr/)r8r'r�Z	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>.FcSr>r?rr@rrrrF�
roz5TextIOWrapperTest.test_issue22849.<locals>.F.readablecSr>r?rr@rrrrA�
roz5TextIOWrapperTest.test_issue22849.<locals>.F.writablecSr>r?rr@rrrrG�
roz5TextIOWrapperTest.test_issue22849.<locals>.F.seekableN)r"r#r$rFrArGrrrr�F�
srr�r�r)cSr>r2r�rrrrrn�
roz3TextIOWrapperTest.test_issue22849.<locals>.<lambda>)�objectrQr�rPrK)r8rrNr�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é
r<�déf
�utf8rVr�r�r)�r�)r5r�r�r�r�r�r�r[)r8rr_r�rrr�test_reconfigure_encoding_read�
s
�"�z0TextIOWrapperTest.test_reconfigure_encoding_readcCsT|��}|j|ddd�}|�d�|jdd�|�d�|��|�|��d�dS)	Nr�rVr�zfoo
r�r)rLsfoo
é
)r�r�r=r[rrr�rr�rrr� 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)Nr<rVr�rr�r)sabc�
rs
abc�
déf
r��abc
r�s	abc
déf
)r�r�r=r[r�rrrr�rrr�test_reconfigure_writes



z(TextIOWrapperTest.test_reconfigure_writecCsd|��}dd�|_d|_|j|ddd�}|�d�|jdd�|�d	�|��|�|��d
�dS)NcSr>r�rrrrrrn.rozGTextIOWrapperTest.test_reconfigure_write_non_seekable.<locals>.<lambda>r�rVr�r r�r)rsabc
déf
)	r�rGrJr�r=r[rrr�rr�rrr�#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�rqrVr)�LF
rJrr)rR�CRLF
r�r�rrzLF
CRLF
s	LF
CRLF
)r�r�r[r�r*rRr=rJrZr�rr�rrr�test_reconfigure_defaults9s"


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�rVrzCR
r&zCR
s	CR
LF
EOFrzzCR
LF
s	LF
CR
EOFzLF
CR
sCR
CRLF
EOFrJz	CR
CRLF
zlinesep
r#r$r�zLF
LF
CR
CRLF
)r�r�r[r�r�r=r�r�r�rr/)r8r_r�rrrr�test_reconfigure_newlinePsB









z*TextIOWrapperTest.test_reconfigure_newlinecCsb|j|�d�dd�}|�d�|��|��|j|�d�dd�}|�d�|�d�|��dS)Nstestr�r)rMr)r�r�rZrKr=rNrrr�test_issue25862ts


z!TextIOWrapperTest.test_issue25862N)Tr"r#r$r�r�r"r'rQr�r�r�rYr\rr�r�r��	utf8_moderhrrrlrorsrur�r�r�r>r�r�r�r�r�r�r�r�r�r�r�r�r�rAr�r�r�r�r�r�r�r�r�r�r�r�r�r��
no_tracingr�rwrrrxrrr�r�r�r�r�r�rr
rrrrrrr!r"r%r&r'rrrrrD
s�	

	*/

	



 
(	
$rDcs,eZdZdZ�fdd�Z�fdd�Z�ZS)rzOA BytesIO object whose read method returns memoryviews
       rather than bytesc�tt��|��Sr:)rrbr��r8Zlen_rcrrr��rezMemviewBytesIO.read1cr*r:)rrbrZr+rcrrrZ�rezMemviewBytesIO.read)r"r#r$rSr�rZrgrrrcrr�srcCs:t�d�}t|�t|�|j}|�|d|��t|�S)z6Convert bytes-object *buf* to a non-trivial memoryviewrNN)rr�itemsize�	frombytesr)rOZarr�idxrrrr�s
rc@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)NrIrMr�r)r�r�)
r�r�r�r�r�r9rZr&rPr�rMrrrrs�s
z&CTextIOWrapperTest.test_initializationcCs�t�dtf��-t�tjd�}|�|�}|j|dd�}|�	d�||_
t�|�}~t
��Wd�n1s7wY|�|�|�|�tjd��}|�|��d�Wd�dS1s^wYdS)Nr&r�r�r)Z456defr�s456def)r
r;r<r�r�rr�r�r�r=rrarbrr=rcr+r�rZ)r8r�rr�rdr/rrrre�s



�	"�z*CTextIOWrapperTest.test_garbage_collectioncCsjtd�D]*}|�|��|���}|j|dd�}|�|��|���}|j|dd�}||_||_qt��dS)NrMr�r))rQr�rVr�Zbuddyrr=)r8rN�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-rNrrr� 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)NrcseZdZ��fdd�Z�ZS)z<CTextIOWrapperTest.test_internal_buffer_size.<locals>.MockIOcst|��krt�t��|�Sr:)rr�rbr=r)rdr�rrr=�szBCTextIOWrapperTest.test_internal_buffer_size.<locals>.MockIO.write)r"r#r$r=rgr�r�rcr�MockIO�sr8r�r)r�r�rrMr�Zghir�r�)rVr�r-r=r�r5r�r�)r8r8rOr�rr7r�test_internal_buffer_size�s

�
z,CTextIOWrapperTest.test_internal_buffer_sizeN)
r"r#r$r�rrsrer5r6r9rrrrr/�s
r/c@seZdZeZdZdS)�PyTextIOWrapperTestr0N)r"r#r$r�r�r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|��|�dSr:)r%r�r/r()rr�rrr'��decoderr8rr�
_check_decode�s
zPIncrementalNewlineDecoderTest.check_newline_decoding_utf8.<locals>._check_decodes袈u袈��r&����rWT)r-rrVr�r+z
a�

z

s
as袈
r�s袈
)r��UnicodeDecodeErrorr/r )r8r=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:)r5r;r/r)r�r�r=�encoderr�rr�_decode_bytewises�zNIncrementalNewlineDecoderTest.check_newline_decoding.<locals>._decode_bytewisecs|D]
}����|��qdSr:)r;r/)r�re)r=r�rrrGs�zabc

rVz
abc)rVrJzabc
r�)rzrVrJr&zabc

abcabc
abcabc)r�getincrementalencoderr��newlinesr�r r5r/)r8r=r*rGr,rrEr�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~rr�T��	translater�rD)r�getincrementaldecoder�IncrementalNewlineDecoderrJrDr�r�r()r8r�r�r=rrr�test_newline_decoder3s
z2IncrementalNewlineDecoderTest.test_newline_decodercs<�fdd�}�jddd�}||��jddd�}||�dS)NcsR��|jd���|�d�d���|jd���|�d�d���|jd�dS)Nuഀu਀)r�rIr/)�decr@rr�_checkFs
z@IncrementalNewlineDecoderTest.test_newline_bytes.<locals>._checkFrKT)rN)r8rQrPrr@r�test_newline_bytesDs
z0IncrementalNewlineDecoderTest.test_newline_bytescCs\dD]}t�d��}|�||�}|�|�qt�d��}|j|dd�}|�|�d�d�dS)N)r�r�rMrar�rrKrBz

)rrMrNrDr�r/)r8rLr=rrr�test_translateQsz,IncrementalNewlineDecoderTest.test_translateN)r"r#r$rDrJrOrRrSrrrrr;�s*!
r;c@r )�CIncrementalNewlineDecoderTestNr!rrrrrT[r%rTc@r )�PyIncrementalNewlineDecoderTestNr!rrrrrU^r%rUc@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�r@rrrr�frezMiscIOTest.tearDowncCsz|jjD]6}t|j|d�}|�||�|dvrqd|��vs"|dkr,|�t|t�|�q|�d�s:|�t||j	��qdS)N)r+�	open_code�errorr�ZSEEK_)
r��__all__r�rm�lowerrp�
issubclassrPrr)r8r�rrrr�test___all__is
��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�r&�Ur�r)r�r�r�FrZ)
r+rr�r�rSrzr
r;rr�r�r_rE)r8r/�grrr�test_attributests0�zMiscIOTest.test_attributescCsVt��\}}|�tj|�|j|ddd�}|�|j�tjdkr)|�|���dSdS)Nr'r�r)�win32)	r�r�r�rzr+r�r�rqrG)r8r'r�r/rrr�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)NrSr�r�rM�rSr�rarr'r�r�r!rr�r*r4r�rr�rQr�rWr&)r+rr�rzr�r�rrrEr��__iter__r�r4rZr�r�rQr�r�r�rrJrKrRr=r�r)r8rrr/rrr�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%rer&rM)	r�r�rrerarbrr=rc)r8rererrdrrr�test_blockingioerror�s
zMiscIOTest.test_blockingioerrorcCsD|�|jtj�|�|jtj�|�|jtj�|�|jtj�dSr:)rrr��ABCMetar�r�r�r@rrr�	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�rrr�ZassertNotIsInstancer�r�)r8Z	abcmoduler/rrr�_check_abc_inheritance�s$��"�z!MiscIOTest._check_abc_inheritancecCs|�|�dSr:)rjr@rrr�test_abc_inheritance�szMiscIOTest.test_abc_inheritancecCs|�t�dSr:)rjr�r@rrr�test_abc_inheritance_official�sz(MiscIOTest.test_abc_inheritance_officialcOsht|i|��}t|�}|�t��}d}t��Wd�n1s!wY|�|t|jj	d��dSr2)
r+r�ZassertWarnsr<rr=rr��warningr�)r8r�rrr/r'r�rrr�_check_warn_on_dealloc�s
�z!MiscIOTest._check_warn_on_dealloccCs6|jtjddd�|�tjd�|jtjddd�dSri)rnrr�r@rrr�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�rzry�errno�EBADF)rvrQ��fdsrr�cleanup_fds	s����z9MiscIOTest._check_warn_on_dealloc_fd.<locals>.cleanup_fdsrVF)r�r�r�rnr
r�r+)r8r�rrrtr'r�rrrr�_check_warn_on_dealloc_fds
"�z$MiscIOTest._check_warn_on_dealloc_fdcCs*|jddd�|�d�|jddd�dS)Nr�rr�r'r�r))rur@rrr�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)NrSr�r�rrbr'r�r�r!rr�r*rM)	rQ�pickle�HIGHEST_PROTOCOLr+rr�r�r��dumps)r8rr�protocolr/rrr�
test_pickling s&�����zMiscIOTest.test_picklingcCr�)Ni@��_test_nonblock_pipe_writer@rrr�test_nonblock_pipe_write_bigbuf3r�z*MiscIOTest.test_nonblock_pipe_write_bigbufcCr�)Nrr|r@rrr�!test_nonblock_pipe_write_smallbuf6r�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|��Wq�|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)rSrVr�r�)r��Ii�r��arMrar�sBLOCKEDrW)r�r�r�r+rr;r=r�r�r�rp�EAGAINr�rZrr�iterr�rprx)r8r$�sentZreceivedr'r�ZrfZwfrbrNr�rQrrrr}9s^

�
��	���
��z$MiscIOTest._test_nonblock_pipe_writecCsN|jtjddd��Wd�n1swY|jt|jtjddd�dS)Nr�r�r)r)r+rr�r��FileExistsErrorr@rrr�test_create_failms�zMiscIOTest.test_create_failcCs||�tjd��
}|�d�Wd�n1swY|�tjd��}|�d|���Wd�dS1s7wYdS)N�xbr�r�rLr�rrr�test_create_writesss�"�zMiscIOTest.test_create_writescCs|jt|jtjddd�dS)Nzrwax+r�r)rWr@rrr�test_open_allargszszMiscIOTest.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�devrr�)r�r"r,�textwrap�dedentrr�r)r8�modr�r�r	�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_encodingrrars<string>:5: EncodingWarning: rMs<string>:8: EncodingWarning: )r�r"r,r�r�rrr�r�rrpr)r8r�r�r	r�rrrr�test_check_encoding_warning�s$��
�

��z&MiscIOTest.test_check_encoding_warning)�categorycCs|�|jj|jj�dSr:)r�r��OpenWrapperr+r@rrr�test_openwrapper�szMiscIOTest.test_openwrapperN)$r"r#r$r�r\r_rardrfrhrjrkrlrnrorurvr{r~rrZ
skipUnlessr�r�r}r�r�r�r�r�rrr
Zignore_warningsrr�rrrrrVds<1
�
2-
rVc@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@BrrYrrrrZ�r�zACMiscIOTest.test_readinto_buffer_overflow.<locals>.BadReader.readNr�r[rrrr�	BadReader�sr�ra)r�r�r�r�r�rQ)r8r�r�rrrr�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()
            rrz�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	rr/rr�rqr
)r8Zstream_namer	r�r�r�patternrrr�&check_daemon_threads_shutdown_deadlock�s�

�z2CMiscIOTest.check_daemon_threads_shutdown_deadlockcCr�)N�stdout�r�r@rrr�,test_daemon_threads_shutdown_stdout_deadlockr�z8CMiscIOTest.test_daemon_threads_shutdown_stdout_deadlockcCr�)N�stderrr�r@rrr�,test_daemon_threads_shutdown_stderr_deadlockr�z8CMiscIOTest.test_daemon_threads_shutdown_stderr_deadlockN)r"r#r$r�r�r�r�r�rrrrr��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�oldalrmr@rrrr�rzSignalsTest.setUpcCst�tj|j�dSr:)r�r�r�r@rrrr��zSignalsTest.tearDowncCsdddSrLr)r8�sig�framerrrr�r#zSignalsTest.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�}��|�dSrv)r�rZr;)r��r'�read_resultsrrr5rCz2SignalsTest.check_interrupted_write.<locals>._readrVTFrVrM�pthread_sigmaskrraN)rr=rkr��daemonr�r��
PIPE_MAX_SIZErr�r+r�r�r��	SIG_BLOCKr�r��SIG_UNBLOCK�alarmr�r#r=r�r;rZr�rzryrprq)
r8�itemr�
fdopen_kwargsrr�r��
large_data�wiorQrr�r�check_interrupted_writesX




�
"

���
�
���z#SignalsTest.check_interrupted_writecCs|jddddd�dS)Nrr�rrb�r�r@rrr�!test_interrupted_write_unbuffereddrz-SignalsTest.test_interrupted_write_unbufferedcCs|jdddd�dS�Nrr��rSr�r@rrr�test_interrupted_write_bufferedgr�z+SignalsTest.test_interrupted_write_bufferedcCs|jddddd�dS)N�xyrr�r��rSr*r�r@rrr�test_interrupted_write_textjrz'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����dddSrL)r=)r��rr�rr�on_alarmos
z3SignalsTest.check_reentrant_write.<locals>.on_alarmrMr�zreentrant callr)r�r�r�r�r�r+r�r�r#r�rQr=rrrZrr�r�rpr�rrz)	r8rr�r�r'r�r�rNr�rr�r�check_reentrant_writems6


��

�

�z!SignalsTest.check_reentrant_writecC�|jddd�dSr��r�r@rrr�test_reentrant_write_buffered�r�z)SignalsTest.test_reentrant_write_bufferedcC�|jdddd�dS)Nr�r�r�r�r�r@rrr�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.FrVcst��d�dS)Nsbar)r�r=�r�r��r�rr�
alarm_handler�rez?SignalsTest.check_interrupted_read_retry.<locals>.alarm_handlerr�rMr�ZfoobarrN)r�r�r�r�r�r+r=r�r�rZrz)r8r/r�r'r�Zriorr�r�check_interrupted_read_retry�s"



�
z(SignalsTest.check_interrupted_read_retrycCs|jdd�dd�dS)NcSs
|�d�S)Nr<)r/rrrrrn�r�zBSignalsTest.test_interrupted_read_retry_buffered.<locals>.<lambda>r�r��r�r@rrr�$test_interrupted_read_retry_buffered�s

�z0SignalsTest.test_interrupted_read_retry_bufferedcCs|jdd�ddd�dS)NcSs|Sr:rrrrrrn�roz>SignalsTest.test_interrupted_read_retry_text.<locals>.<lambda>r'r<r�r�r@rrr� 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.�selectFrVNc
s�z/�s-����gggd�dvr(t��d�}��|�����gggd�dvs�rWdSWdStyD}z	|�WYd}~dSd}~ww)Ng�?rr)r�r�rZr;�
BaseException)r�r�)rXr'r�r��write_finishedrrr�s
����z8SignalsTest.check_interrupted_write_retry.<locals>._readrVTcst�tj��t�d�dSrv)r�r�r�r�)�alarm2rr�alarm1�r�z9SignalsTest.check_interrupted_write_retry.<locals>.alarm1cs���dSr:)r�r�)r�rrr��r#z9SignalsTest.check_interrupted_write_retry.<locals>.alarm2rMcss�|]}t|�VqdSr:)rrXrrr�	<genexpr>�s�z<SignalsTest.check_interrupted_write_retry.<locals>.<genexpr>r)r
�
import_modulerr�r�r�rkr�r�r�r�r�r+r�r=r�rrr�rc�sumrzryrprq)r8r�r�rbr�rr�r�r�r�rQr)r�rXr'r�r�r�r�r�check_interrupted_write_retry�s`
	





���
�

���z)SignalsTest.check_interrupted_write_retrycCr�)Nr�r�r��r�r@rrr�%test_interrupted_write_retry_buffered�r�z1SignalsTest.test_interrupted_write_retry_bufferedcCr�)Nrr�r<r�r�r@rrr�!test_interrupted_write_retry_text�r�z-SignalsTest.test_interrupted_write_retry_textN)r"r#r$r�r�r�r�r�r�r�rr)r�r�r�r�r�r�r�r�r�rrrrr�s$M
Dr�c@seZdZeZdS)�CSignalsTestN)r"r#r$r�rrrrr��r�r�c@seZdZeZdZdZdS)�
PySignalsTestN)r"r#r$r�r�r�r�rrrrr��sr�c
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)NrNcS�i|]}|tt|��qSr)r�r��rYr�rrr�
<dictcomp>r[zload_tests.<locals>.<dictcomp>cSr�r)r�r�r�rrrr�r[c3�$�|]
}|j�d|jfVqdS)reN�r"rX�Zglobsrrr���"zload_tests.<locals>.<genexpr>c3r�)�PyNr�rXr�rrr�r�rer�cSsg|]}t�|��qSr)rZ	makeSuite)rYrrrrrZ&r�zload_tests.<locals>.<listcomp>)&r�r�r�rmr�r�r�r�r�rrr>rTrUr/r:r�r�r�r�rVr^r}rur�r�r1rjr�rY�globalsrfr"rr��setattrrZ	TestSuite)
r�rZmocksZall_membersZc_io_nsZpy_io_nsrr�rZsuiterr�r�
load_testss@����r��__main__)|rSr�rrprbr�rwr^r�r�Z	sysconfigr�rkrprrra�collectionsrr�	itertoolsrrrrZtest.support.script_helperrrr	Ztest.supportr
rrr
Ztest.support.os_helperrrr�Z_pyior�r�ImportErrorrZ	StructurerZget_config_varZ_cflagsZ_config_argsr�r�r�r��dev_moder�r0r1r�rTrUrVr\r]r^rhrirjrsrtrur{r|r}r�r�r�r�r�r�r�r�r�ZTestCaser�r�r�rr�r�rrrmr�r�r�r�r�r�r�r�rrrrr=r>rDrrr/r:r;rTrUrVr�r�r�r�r�r�r�r�r"�mainrrrr�<module>s
���8
	
0=.*C(0QjN
+o
	Nui<o	
#�
© 2025 GrazzMean