Server : LiteSpeed
System : Linux server51.dnsbootclub.com 4.18.0-553.62.1.lve.el8.x86_64 #1 SMP Mon Jul 21 17:50:35 UTC 2025 x86_64
User : nandedex ( 1060)
PHP Version : 8.1.33
Disable Function : NONE
Directory :  /opt/cppython/lib/python3.8/test/__pycache__/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]


Current File : //opt/cppython/lib/python3.8/test/__pycache__/test_io.cpython-38.opt-1.pyc
U

>��gŏ�@s�dZddlZddlZddlZddlZddlZddlZddlZddlZddl	Z	ddl
Z
ddlZddlZddl
Z
ddlZddlZddlmZmZddlmZmZddlmZddlmZmZddlmZddlZddlZddlZ zddl!Z!Wne"k
�rdd	�Z#YnXd
d	�Z#Gdd�de!j$�Z%e
�&d
��p0dZ'e
�&d��p@dZ(de'k�pRde(kZ)e*e	d��pfe	j+j,Z-dd�Z.Gdd�d�Z/Gdd�de/ej0�Z1Gdd�de/e j0�Z2Gdd�de/�Z3Gdd�de3ej0�Z4Gdd �d e3e j0�Z5Gd!d"�d"e3�Z6Gd#d$�d$e6ej0�Z7Gd%d&�d&e6e j0�Z8Gd'd(�d(e3�Z9Gd)d*�d*e9ej0�Z:Gd+d,�d,e9e j0�Z;Gd-d.�d.e3�Z<Gd/d0�d0e<ej0�Z=Gd1d2�d2e<e j0�Z>Gd3d4�d4�Z?Gd5d6�d6e?ej@�ZAGd7d8�d8e?e j@�ZBGd9d:�d:�ZCGd;d<�d<eCej@�ZDGd=d>�d>eCe j@�ZEGd?d@�d@�ZFGdAdB�dBeFej0�ZGGdCdD�dDeFe j0�ZHGdEdF�dFe
jI�ZJGdGdH�dHeJ�ZKGdIdJ�dJeJ�ZLejMGdKdL�dLe
jI��ZNGdMdN�dN�ZOGdOdP�dP�ZPGdQdR�dRe
jIeO�ZQGdSdT�dTeQeP�ZRGdUdV�dVeQ�ZSGdWdX�dXe
jIeO�ZTGdYdZ�dZeTeP�ZUGd[d\�d\eT�ZVGd]d^�d^e
jI�ZWGd_d`�d`eW�ZXGdadb�dbeW�ZYGdcdd�ddeQeT�ZZGdedf�dfeZeP�Z[Gdgdh�dheZ�Z\Gdidj�djej]�Z^e�_e^j`�Gdkdl�dle
jI�ZaGdmdn�dne
jI�ZbGdodp�dpej@�Zcdqdr�ZdGdsdt�dteb�ZeGdudv�dveb�ZfGdwdx�dxe
jI�ZgGdydz�dzeg�ZhGd{d|�d|eg�ZiGd}d~�d~e
jI�ZjGdd��d�ej�ZkGd�d��d�ej�Zle
�mejnd�kd��Gd�d��d�e
jI��ZoGd�d��d�eo�ZpGd�d��d�eo�Zqd�d��Zresd�k�r�e
�t�dS)�zUnit tests for the io module.�N)�deque�UserList)�cycle�count)�support)�assert_python_ok�run_python_until_end)�FakePathcOst�dt||��S)N�b)�array�bytes)�pos�kw�r�+/opt/cppython/lib/python3.8/test/test_io.py�	byteslike2srcOs:t||�}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)r
r�data�objrrrr5s

c@seZdZdS)rN��__name__�
__module__�__qualname__rrrrr<srZCFLAGS�ZCONFIG_ARGSz-fsanitize=memoryz--with-memory-sanitizerZgettotalrefcountc
Cs,ttddd��}|jW5QR�SQRXdS)z(Get the default TextIOWrapper chunk size�r�latin-1��encodingN)�open�__file__�_CHUNK_SIZE��frrr�_default_chunk_sizeKsr(c@sdeZdZdZddd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�Zdd�Zddd�Z
dS)�MockRawIOWithoutReadzmA RawIO implementation without read(), so as to exercise the default
    RawIO.read() which calls readinto().rcCs t|�|_g|_d|_d|_dS�Nr)�list�_read_stack�_write_stack�_reads�_extraneous_reads)�selfZ
read_stackrrr�__init__Us
zMockRawIOWithoutRead.__init__cCs|j�t|��t|�S�N)r-�appendrr�r0r
rrr�write[szMockRawIOWithoutRead.writecCsdS�NTr�r0rrr�writable_szMockRawIOWithoutRead.writablecCsdS�N�*rr7rrr�filenobszMockRawIOWithoutRead.filenocCsdSr6rr7rrr�readableeszMockRawIOWithoutRead.readablecCsdSr6rr7rrr�seekablehszMockRawIOWithoutRead.seekablecCsdSr*r�r0r
�whencerrr�seekkszMockRawIOWithoutRead.seekcCsdSr*rr7rrr�tellnszMockRawIOWithoutRead.tellcCs�|jd7_t|�}z|jd}Wn$tk
rH|jd7_YdSX|dkr^|jd=dSt|�}t|�|kr�|jd=||d|�<|S|d|�|dd�<||d�|jd<|SdS�N�r)r.rr,�
IndexErrorr/)r0�bufZmax_lenr�nrrr�readintoqs$zMockRawIOWithoutRead.readintoNcCs|Sr2r)r0r
rrr�truncate�szMockRawIOWithoutRead.truncate)r)N)rrr�__doc__r1r5r8r;r<r=r@rArGrHrrrrr)Qs
r)c@seZdZdS)�CMockRawIOWithoutReadNrrrrrrJ�srJc@seZdZdS)�PyMockRawIOWithoutReadNrrrrrrK�srKc@seZdZddd�ZdS)�	MockRawIONcCs>|jd7_z|j�d�WS|jd7_YdSXdS)NrCr�)r.r,�popr/�r0rFrrr�read�szMockRawIO.read)N�rrrrPrrrrrL�srLc@seZdZdS)�
CMockRawIONrrrrrrR�srRc@seZdZdS)�PyMockRawIONrrrrrrS�srScsFeZdZ�fdd�Zd�fdd�	Zdd�Zdd	�Z�fd
d�Z�ZS)
�MisbehavedRawIOcst��|�dS�N�)�superr5r4��	__class__rrr5�szMisbehavedRawIO.writeNcst��|�dSrU)rWrPrOrXrrrP�szMisbehavedRawIO.readcCsdS)Ni����rr>rrrr@�szMisbehavedRawIO.seekcCsdS)Ni8���rr7rrrrA�szMisbehavedRawIO.tellcst��|�t|�dS)N�)rWrGr)r0rErXrrrG�szMisbehavedRawIO.readinto)N)	rrrr5rPr@rArG�
__classcell__rrrXrrT�s
rTc@seZdZdS)�CMisbehavedRawIONrrrrrr\�sr\c@seZdZdS)�PyMisbehavedRawIONrrrrrr]�sr]cs$eZdZ�fdd�Zdd�Z�ZS)�SlowFlushRawIOcst���t��|_dSr2)rWr1�	threading�Event�in_flushr7rXrrr1�s
zSlowFlushRawIO.__init__cCs|j��t�d�dS)Ng�?)ra�set�time�sleepr7rrr�flush�s
zSlowFlushRawIO.flush)rrrr1rer[rrrXrr^�sr^c@seZdZdS)�CSlowFlushRawIONrrrrrrf�srfc@seZdZdS)�PySlowFlushRawIONrrrrrrg�srgc@seZdZdZdd�ZdS)�CloseFailureIOrcCs|jsd|_t�dS�NrC��closed�OSErrorr7rrr�close�szCloseFailureIO.closeN)rrrrkrmrrrrrh�srhc@seZdZdS)�CCloseFailureIONrrrrrrn�srnc@seZdZdS)�PyCloseFailureIONrrrrrro�srocs6eZdZ�fdd�Zd�fdd�	Z�fdd�Z�ZS)	�
MockFileIOcsg|_t��|�dSr2)�read_historyrWr1�r0rrXrrr1�szMockFileIO.__init__Ncs,t��|�}|j�|dkrdnt|��|Sr2)rWrPrqr3r)r0rF�resrXrrrP�szMockFileIO.readcst��|�}|j�|�|Sr2)rWrGrqr3)r0r
rsrXrrrG�szMockFileIO.readinto)N)rrrr1rPrGr[rrrXrrp�srpc@seZdZdS)�CMockFileIONrrrrrrt�srtc@seZdZdS)�PyMockFileIONrrrrrru�sruc@s,eZdZdd�Zdd�Zdd�Zdd�Zd	S)
�MockUnseekableIOcCsdS�NFrr7rrrr=�szMockUnseekableIO.seekablecGs|�d��dS�Nznot seekable��UnsupportedOperation�r0�argsrrrr@�szMockUnseekableIO.seekcGs|�d��dSrxryr{rrrrA�szMockUnseekableIO.tellcGs|�d��dSrxryr{rrrrH�szMockUnseekableIO.truncateN)rrrr=r@rArHrrrrrv�srvc@seZdZejZdS)�CMockUnseekableION)rrr�iorzrrrrr}�sr}c@seZdZejZdS)�PyMockUnseekableION)rrr�pyiorzrrrrr�src@sNeZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zddd
�Zdd�Z	dd�Z
dS)�MockNonBlockWriterIOcCsg|_d|_dSr2)r-�
_blocker_charr7rrrr1szMockNonBlockWriterIO.__init__cCsd�|j�}g|jdd�<|S)NrM)�joinr-)r0�srrr�pop_written	sz MockNonBlockWriterIO.pop_writtencCs
||_dS)z'Block when a given char is encountered.N)r�)r0�charrrr�block_onszMockNonBlockWriterIO.block_oncCsdSr6rr7rrrr<szMockNonBlockWriterIO.readablecCsdSr6rr7rrrr=szMockNonBlockWriterIO.seekablercCsdSr*rr>rrrr@szMockNonBlockWriterIO.seekcCsdSr6rr7rrrr8szMockNonBlockWriterIO.writablecCsvt|�}d}|jrbz|�|j�}Wntk
r6Yn,X|dkrX|j�|d|��|Sd|_dS|j�|�t|�S)N���r)rr��index�
ValueErrorr-r3r)r0r
rFrrrr5szMockNonBlockWriterIO.writeN)r)rrrr1r�r�r<r=r@r8r5rrrrr�s
r�c@seZdZejZdS)�CMockNonBlockWriterION)rrrr~�BlockingIOErrorrrrrr�3sr�c@seZdZejZdS)�PyMockNonBlockWriterION)rrrr�r�rrrrr�6sr�c@s�eZdZdd�Zdd�Zdd�Zdbdd	�Zd
Zdd�Zd
d�Z	dd�Z
dd�Zdd�Zdd�Z
dd�Zdd�Zdd�Zdd�Zdd �Zd!d"�Zd#d$�Zd%d&�Zd'd(�Zd)d*�Zd+d,�Zd-d.�Zd/d0�Zd1d2�Zd3d4�Zd5d6�Zd7d8�Zd9d:�Zd;d<�Z d=d>�Z!d?d@�Z"dAdB�Z#dCdD�Z$dEdF�Z%dGdH�Z&dIdJ�Z'dKdL�Z(dMdN�Z)dOdP�Z*dQdR�Z+dSdT�Z,dUdV�Z-dWdX�Z.dYdZ�Z/d[d\�Z0d]d^�Z1d_d`�Z2daS)c�IOTestcCst�tj�dSr2�r�unlink�TESTFNr7rrr�setUp<szIOTest.setUpcCst�tj�dSr2r�r7rrr�tearDown?szIOTest.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.rZrsHello.�r�rCs	 world


�	s	*********�hrV�
��)�assertEqualr5rHrAr@�	bytearray�assertRaises�	TypeError)r0r'�bufferrrr�	write_opsBs(

zIOTest.write_opsFcCs�|�d�}|�|d�t|�}|�|�|�d�|�t|�d�td�}|�|�|�d�|�t|�d�|�|dd�d�|�|�d�d�|�|�d�d�|�|�d	�d
�|�|�td��d�|�|�dd�d
�|�|�d�d�|�|�d�d
�|�|�t��d�|�|�dd	�d�|�|�d�d�|�|��d�|�	t
|jd�|�r�|�d�|�|��d�|�d
�|�|��d�|�|��d
�|�d�td�}|�|�|�d�|�t|�d�dS)NrZshellos worlrV�d
r��hello world
rCrM�xi����r�sworld�
r�sworld
)rPr�rrGrr�rr@rAr�r��	readinto1)r0r'Zbufferedrrrr�read_opsZs>



zIOTest.read_opslc	CsRz|�|�|j�|j�Wn"ttfk
r<|�d�YnX|�|��|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�rCrVrr�)
r�r@�LARGE�
OverflowErrorr��skipTestrAr5rHrP�r0r'rrr�large_file_ops}s zIOTest.large_file_opsc
Csd|j}dD]:}|�tj|��"}|�||j�|�||j�W5QRXq
|jtjddd��"}|�||j�|�||j�W5QRX|jtjddd��(}|�||jd�|�||jdg�W5QRX|�tjd��(}|�||jd�|�||jdg�W5QRX|�tjd��P}|�||jd	�|�||jd
g�|�||j	d|j
�|�||j	d|j�W5QRXdS)
N)�w�wbr�r��	buffering�rbsblahsblah
rZblahzblah
rCr�)rzr#rr�r�rP�readliner5�
writelinesr@�SEEK_CUR�SEEK_END)r0�exc�mode�fprrr�test_invalid_operations�s&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|k}
��|��|
�d|k}��|��|�t|�j��rd}n$t|�j�j	f��r(d}n
��
d�d|k�rF|��n��t
|j�|
�rn|�d�|��n��t
|jd���t
|j�|�r�|�|�n��t
|j|�tj�d��r�|
||fk�r�W5QR�W5QR�q�d|k}��|��|�|�r|��|�d�n��t
|j���t
|jd�|�rP|�rP|��|�d�n��t
|j���t
|jd�W5QRXW5QRXq�dS)Ncs"t��\}}t�|���|d�S)Nr)�os�piperm�FileIO)rr�r7rr�pipe_reader�s
z3IOTest.test_optional_abilities.<locals>.pipe_readercsNt��\}}��tj|�tjtj|dfd�}|����|j���	|d�S)N�d��targetr|r�)
r�r��
addCleanuprmr_�ThreadrP�startr�r�)rr��threadr7rr�pipe_writer�sz3IOTest.test_optional_abilities.<locals>.pipe_writercs������Sr2)�BufferedReaderrvrr7rr�buffered_reader�sz7IOTest.test_optional_abilities.<locals>.buffered_readercs������Sr2)�BufferedWriterrvrr7rr�buffered_writer�sz7IOTest.test_optional_abilities.<locals>.buffered_writercs������Sr2)�BufferedRandom�BytesIOrr7rr�buffered_random�sz7IOTest.test_optional_abilities.<locals>.buffered_randomcs���������Sr2)�BufferedRWPairrvrr7rr�buffered_rw_pair�s
�z8IOTest.test_optional_abilities.<locals>.buffered_rw_paircs$G�fdd�d�j�}��|�d�S)NcseZdZ�jjZ�jjZdS)zMIOTest.test_optional_abilities.<locals>.text_reader.<locals>.UnseekableReaderN)rrr�BufferedIOBaser8r5rr7rr�UnseekableReader�sr��ascii�rv�
TextIOWrapper)r�r7rr�text_reader�sz3IOTest.test_optional_abilities.<locals>.text_readercs$G�fdd�d�j�}��|�d�S)NcseZdZ�jjZ�jjZdS)zMIOTest.test_optional_abilities.<locals>.text_writer.<locals>.UnseekableWriterN)rrrr�r<rPrr7rr�UnseekableWriter�sr�r�r�)r�r7rr�text_writer�sz3IOTest.test_optional_abilities.<locals>.text_writer�fr�fwrr�Zrws�rw�3�3zUnknown base classr'rC�winr�r)r��StringIO�subTestr�r<r8�
isinstance�
TextIOBaser��	RawIOBase�failr;r�rlrPr5�sys�platform�
startswithr=rAr@rH)r0r�r�r�r�r�r�r�r��tests�testZ	abilitiesrr<r8rr=rr7r�test_optional_abilities�st	�




�zIOTest.test_optional_abilitiesc	CsVd}|�t|j|d�t|d�}t���$t�dt�|�t|j|d�W5QRXdS)Nzfoobarr�r��ignore)r�r�r#r�warnings�catch_warnings�simplefilter�DeprecationWarning)r0Zfn_with_NULZbytes_fnrrr�test_open_handles_NUL_charss

z"IOTest.test_open_handles_NUL_charsc	Cs�|jtjddd��@}|�|��d�|�|��d�|�|��d�|�|�W5QRX|jtjddd��@}|�|��d�|�|��d�|�|��d�|�|�W5QRXdS)Nr�rr�FTr��	r#rr�r�r<r8r=r�r�r�rrr�test_raw_file_ioszIOTest.test_raw_file_ioc	Cs�|�tjd��@}|�|��d�|�|��d�|�|��d�|�|�W5QRX|�tjd��B}|�|��d�|�|��d�|�|��d�|�|d�W5QRXdS)Nr�FTr�r�r�rrr�test_buffered_file_io%szIOTest.test_buffered_file_ioc	Cs�|�tjd��}|�d�W5QRX|�tjd��~}|�|��d�|�|�d�d�|�|�d�d�|�|�d	�d
�|�|��d�|�|�d�d�|�t|jd
�W5QRX|�tjd��}|�t|jd
�W5QRXdS)Nr�s"abc
def
xyzzy
foobar
another liner��abc
r��def
rV�xy�szzy
sfoobar
sanother lineg333333@r)r#rr�r5r�r�r�r�r�rrr�
test_readline1szIOTest.test_readlinecCs*Gdd�d|j�}|�ttft|��dS)Nc@seZdZdd�ZdS)z+IOTest.test_readline_nonsizeable.<locals>.RcSsdSr2rr7rrrr�Csz4IOTest.test_readline_nonsizeable.<locals>.R.readlineN)rrrr�rrrr�RBsr�)�IOBaser�r��
StopIteration�next�r0r�rrr�test_readline_nonsizeable?sz IOTest.test_readline_nonsizeablecCs(Gdd�d|j�}|�t|�jd�dS)Nc@seZdZdd�ZdS)z'IOTest.test_next_nonsizeable.<locals>.RcSsdSr2rr7rrr�__next__Ksz0IOTest.test_next_nonsizeable.<locals>.R.__next__N)rrrr�rrrrr�Jsr�rC)r�r�r��	readlinesr�rrr�test_next_nonsizeableGszIOTest.test_next_nonsizeablecCs@|��}|�|�|��}|�|d�|�|�}|�|d�dS)Nr�T)r�r��getvaluer�r�)r0r'rrrr�test_raw_bytes_ioOs

zIOTest.test_raw_bytes_ioc	Cs|tjdd�dkstjdkr.t�dd|j�|�tjdd��}|�|�W5QRX|�tjd��}|�|�W5QRXdS)Nr�r��darwinZ	largefilez-test requires %s bytes and a long time to run�w+br)r�r�rZrequiresr�r#r�r�r�rrr�test_large_file_opsWs�zIOTest.test_large_file_opsc
Cs�dD]�}d}|�tjd|��}|�d�W5QRX|�|jd�d}z(|�tjd|��}ddW5QRXWn"tk
r�|�|jd�YqX|�d�qdS)N)rr�r�r�TrCrz1/0 didn't raise an exception)r#rr�r5r�rk�ZeroDivisionErrorr�)r0�bufsizer'rrr�test_with_opendszIOTest.test_with_openc	Cs�|�tjd��}|�d�W5QRX|jtjddd��}|�|��d�W5QRX|�tjd��}|�|��d�W5QRX|�tjd��}|�|��d�W5QRXdS)Nr�r��abrr�r��a)r#rr�r5r�rA�
assertGreaterr�rrr�test_append_mode_telltszIOTest.test_append_mode_tellc
s�g�G�fdd�d|j�}t�dtf��b|tjd�}|�d�~t��|��dddg�|�tjd	��}|�|�	�d�W5QRXW5QRXdS)
Ncs:eZdZ��fdd�Z��fdd�Z��fdd�Z�ZS)z(IOTest.test_destructor.<locals>.MyFileIOcs6��d�zt�j}Wntk
r*YnX|�dSri�r3rW�__del__�AttributeErrorr��rY�recordrrr�s
z0IOTest.test_destructor.<locals>.MyFileIO.__del__cs��d�t���dSrU�r3rWrmr7rrrrm�s
z.IOTest.test_destructor.<locals>.MyFileIO.closecs��d�t���dS�Nr��r3rWrer7rrrre�s
z.IOTest.test_destructor.<locals>.MyFileIO.flush�rrrrrmrer[r�rrXr�MyFileIO�srrr�r�rCrVr�r�)
r�r�check_warnings�ResourceWarningr�r5�
gc_collectr�r#rP)r0rr'rrr�test_destructor~s
zIOTest.test_destructorcs>g�G�fdd�d|�}|�}~t��|��dddg�dS)NcsBeZdZdd�Z��fdd�Z��fdd�Z��fdd�Z�ZS)	z+IOTest._check_base_destructor.<locals>.MyIOcSsd|_d|_d|_dS)NrCrVr�)�on_del�on_close�on_flushr7rrrr1�sz4IOTest._check_base_destructor.<locals>.MyIO.__init__cs8��|j�zt�j}Wntk
r,YnX|�dSr2)r3rrWrrr�rrrr�sz3IOTest._check_base_destructor.<locals>.MyIO.__del__cs��|j�t���dSr2)r3rrWrmr7rrrrm�sz1IOTest._check_base_destructor.<locals>.MyIO.closecs��|j�t���dSr2)r3rrWrer7rrrre�sz1IOTest._check_base_destructor.<locals>.MyIO.flush)rrrr1rrmrer[rrrXr�MyIO�srrCrVr�)rrr�)r0�baserr'rrr�_check_base_destructor�szIOTest._check_base_destructorcCs|�|j�dSr2)r!r�r7rrr�test_IOBase_destructor�szIOTest.test_IOBase_destructorcCs|�|j�dSr2)r!r�r7rrr�test_RawIOBase_destructor�sz IOTest.test_RawIOBase_destructorcCs|�|j�dSr2)r!r�r7rrr�test_BufferedIOBase_destructor�sz%IOTest.test_BufferedIOBase_destructorcCs|�|j�dSr2)r!r�r7rrr�test_TextIOBase_destructor�sz!IOTest.test_TextIOBase_destructorc	CsR|�tjd��}|�d�W5QRX|�tjd��}|�|��d�W5QRXdS)Nr�r�r��r#rr�r5r�rPr�rrr�test_close_flushes�szIOTest.test_close_flushescs�t�dtd���t��������fdd�}|����|��tjd��|����	���|��
��	���|����	���	���dS)N�ir�c	s2|�$��|�����|��f�W5QRXdSr2)r�r5r�r&�r
rFr0rr�check�sz'IOTest.test_array_writes.<locals>.checkr�)r�ranger�tobytesr�r�rr�r�rLr�r�)r0r*rr)r�test_array_writes�szIOTest.test_array_writescCs|jt|jtjddd�dS)Nr�F��closefd�r�r�r#rr�r7rrr�test_closefd�s�zIOTest.test_closefdc	Cs�|�tjd��}|�d�W5QRX|�tjd��J}|j|��ddd�}|�|��d�|�d�|��|�	t
|j�W5QRX|�tjd��N}|j|��ddd�}|�|��dd�d	�|��|�	t
|jtd
��W5QRXdS)Nr��egg
rFr.rr�r�seggrC)
r#rr�r5r;r�rPr@rmr�r�rGr��r0r'�filerrr�test_read_closed�s
zIOTest.test_read_closedcCs|jt|jtjddd�dS)NrFr.r0r7rrr�test_no_closefd_with_filename�sz$IOTest.test_no_closefd_with_filenamec	Csz|�tjd��}|�d�W5QRX|�tjd��>}|�|jjjd�|j|��ddd�}|�|jjjd�W5QRXdS)Nr�segg
rTFr.)	r#rr�r5r�r��rawr/r;r3rrr�test_closefd_attr�szIOTest.test_closefd_attrc	Cs�t�dtf��8|�tjd�}|�d�||_t�|�}~t�	�W5QRX|�
|�|�|�tjd��}|�|�
�d�W5QRXdS)Nrr�sabcxxxr�)rrrr�r�r5r'�weakref�refr�assertIsNoner#r�rP)r0r'�wrrrr�test_garbage_collection�s

zIOTest.test_garbage_collectionc	Cs�d}tj�|�s |�d�|��tjdkr4|�d�tjtj	krJ|�d�|j
|ddd��}|�t|j
�W5QRX|�
|d��}|�t|j
�W5QRX|�
|d	��}|�t|j
�W5QRXdS)
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�rP)r0Zzeror'rrr�test_unbounded_files


zIOTest.test_unbounded_filecsd|j||��g���fdd�}|�_|�t�j�|��j�|���|��d�dd��_dS)Ncs�jg�dd�<t��dSr2rjr�rkr'rr�	bad_flushsz4IOTest.check_flush_error_on_close.<locals>.bad_flushrcSsdSr2rrrrr�<lambda>rMz3IOTest.check_flush_error_on_close.<locals>.<lambda>)r#rer�rlrm�
assertTruerk�assertFalse)r0r|�kwargsrErrDr�check_flush_error_on_closes
z!IOTest.check_flush_error_on_closecCs.|jtjddd�t�tjtjtjB�}|j|ddd�t�tjtjtjB�}|j|dddd�t�|�|�tjd�t�tjtjtjB�}|�|d�t�tjtjtjB�}|j|ddd�t�|�|�tjd�t�tjtjtjB�}|�|d�t�tjtjtjB�}|j|ddd�t�|�dS)Nr�rr�F)r�r/r.r�)rJrr�r�r#�O_WRONLY�O_CREATrm)r0�fdrrr�test_flush_error_on_close!s$

z IOTest.test_flush_error_on_closecCs<|jtjddd�}|��|��|��|�t|j�dS)Nr�rr�)r#rr�rmr�r�rer�rrr�test_multi_close9s
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�efgNrV�ab�crQ�ef�grM)r)r�rP�r0�rawiorrr�test_RawIOBase_read@s
zIOTest.test_RawIOBase_readcCs@|��|��|��|��|��f}|D]}|�t|d��q&dS)N�__dict__)r�r�r�r�r�rG�hasattr)r0r�rrrr�test_types_have_dictMs�zIOTest.test_types_have_dictc	sp|�tjd��}|�d�W5QRXt�tjtj���fdd�}|jdd|d��}|�|��d�W5QRXdS)Nr�r2cs�Sr2r)r?�flags�rMrr�opener\sz"IOTest.test_opener.<locals>.opener�non-existentr�r_)r#rr�r5r��O_RDONLYr�rP)r0r'r_rr^r�test_openerXszIOTest.test_openerc	CsBdd�}|�t��}tdd|d�W5QRX|�t|j�d�dS)NcSsdS)Nr�r�Zfnamer]rrr�	badopenercsz4IOTest.test_bad_opener_negative_1.<locals>.badopenerr`rrazopener returned -1�r�r�r#r��str�	exception�r0re�cmrrr�test_bad_opener_negative_1asz!IOTest.test_bad_opener_negative_1c	CsBdd�}|�t��}tdd|d�W5QRX|�t|j�d�dS)NcSsdS)N���rrdrrrreksz8IOTest.test_bad_opener_other_negative.<locals>.badopenerr`rrazopener returned -2rfrirrr�test_bad_opener_other_negativeisz%IOTest.test_bad_opener_other_negativec
Csp|�td��Z}|�td��B}|j|��dd�}|j|��dd�|��|��|��W5QRXW5QRXdS)Nr�Fr.)r#r$r�r;r1r�rm)r0�f1�f2Zfileiorrr�test_fileio_closefdqs
�zIOTest.test_fileio_closefdc
CsBt�|��.|�t��|jtjddd�W5QRXW5QRXdS)Nr�rr��r�check_no_resource_warningr�r�r#r�r7rrr�test_nonbuffered_textio}szIOTest.test_nonbuffered_textioc
CsBt�|��.|�t��|jtjddd�W5QRXW5QRXdS)Nr��invalid��newlinerqr7rrr�test_invalid_newline�szIOTest.test_invalid_newlinec
CsjGdd�d|j�}|�}dD]H}|�|��4td�}|�t||�|�d�|�t|�d�W5QRXqdS)Nc@seZdZdd�ZeZdS)z3IOTest.test_buffered_readinto_mixin.<locals>.StreamcSsdS)N�12345r�r0�sizerrrrP�sz8IOTest.test_buffered_readinto_mixin.<locals>.Stream.readN)rrrrP�read1rrrr�Stream�sr|�rGr�rZrx)r�r�rr��getattrr)r0r|�stream�methodr�rrr�test_buffered_readinto_mixin�sz#IOTest.test_buffered_readinto_mixinc
s��fdd�}|ttj��|tt�tj�����tjd��4}t|���}��t����|d�W5QRXW5QRXtd�}��t����|d�W5QRXtt	�}��t	����|d�W5QRX��
td����ttj�d�W5QRXdS)Nc	sN��|d��}|�d�W5QRX��|d��}��|��d�W5QRXdS)Nr�r2r)r#r5r�rP)r?r'r7rr�check_path_succeeds�sz7IOTest.test_fspath_support.<locals>.check_path_succeedsr�zread/write/append modeZrwxa)r	rr�r��fsencoder#r;r�r��FloatingPointError�assertRaisesRegexr�)r0r�r'Zbad_pathrr7r�test_fspath_support�s zIOTest.test_fspath_supportcCs8|�d�}|�|��d�|�d�}|�|��d�dS�N�rPrQrR�abcdefg)r)r�rP�readallrWrrr�test_RawIOBase_readall�s

zIOTest.test_RawIOBase_readallc
Cs�Gdd�d|j�}d}d}|D]�}|�|���|\}}}}|tt|���}	t|f|�}
t|	|�}|�||
�|�|�t|
�|�|�|
d|�t|��|f||}|�|
|d�|�|�t|	j	�||�W5QRXqdS)Nc@s$eZdZdd�Zdd�Zdd�ZdS)z3IOTest.test_BufferedIOBase_readinto.<locals>.ReadercSs
||_dSr2��avail)r0r�rrrr1�sz<IOTest.test_BufferedIOBase_readinto.<locals>.Reader.__init__cSs"|jd|�}|j|d�|_|Sr2r�)r0rz�resultrrrrP�sz8IOTest.test_BufferedIOBase_readinto.<locals>.Reader.readcSs|�t|d��S)z$Returns no more than 5 bytes at oncerZ)rP�minryrrrr{�sz9IOTest.test_BufferedIOBase_readinto.<locals>.Reader.read1N)rrrr1rPr{rrrr�Reader�sr�)
)rGr�rZrZ)rGr�r�r�)rGrZr�rZ)rGr��r�)rGr�rr)r�r�rZrZ)r�r�r�rZ)r�rZr�rZ)r�r�r�rZ)r�r�rr�)
r�r�rr+r�r~r�rZassertSequenceEqualr�)r0r�r�ZUNUSED_BYTEr�r�r�Zrequestr��readerr�Zunusedrrr�test_BufferedIOBase_readinto�s

z#IOTest.test_BufferedIOBase_readintocCs4Gdd�d|j�}|�}|�t|j�dd�|_dS)Nc@seZdZdd�Zdd�ZdS)z#IOTest.test_close_assert.<locals>.RcSsdSr2r)r0�name�valuerrr�__setattr__�sz/IOTest.test_close_assert.<locals>.R.__setattr__cSs
t��dSr2�rlr7rrrre�sz)IOTest.test_close_assert.<locals>.R.flushN)rrrr�rerrrrr��sr�cSsdSr2rr7rrrrF�rMz*IOTest.test_close_assert.<locals>.<lambda>)r�r�rlrmre)r0r�r'rrr�test_close_assert�szIOTest.test_close_assertN)F)3rrrr�r�r�r�r�r�r�r�r�r�r�r�r�rrrrrrr!r"r#r$r%r'r-r1r5r6r8r=rCrJrNrOrYr\rcrkrmrprsrwr�r�r�r�r�rrrrr�:s`
!h	



	
)r�c@seZdZdd�ZdS)�CIOTestcCsLGdd�d|j�}|�|�}||_t�|�}~~t��|�|�|�dS)Nc@seZdZdd�ZdS)z*CIOTest.test_IOBase_finalize.<locals>.MyIOcSsdSr2rr7rrrrm�sz0CIOTest.test_IOBase_finalize.<locals>.MyIO.closeN�rrrrmrrrrr�sr)r�rr9r:rrr;)r0rrr<rrr�test_IOBase_finalize�s
zCIOTest.test_IOBase_finalizeN)rrrr�rrrrr��sr�c@seZdZdS)�PyIOTestNrrrrrr�sr�c@seZdZdd�Zdd�ZdS)�APIMismatchTestcCs*tjtjtjdd�}|j|t�dd�dS)z:Test that pyio RawIOBase class has all c RawIOBase methods)�__weakref__)r�z6Python RawIOBase does not have all C RawIOBase methods��msgN)r�detect_api_mismatchr�r�r~r�rb�r0Zmismatchrrr�test_RawIOBase_io_in_pyio_match
s�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�rbr�rrr�test_RawIOBase_pyio_in_io_matchsz/APIMismatchTest.test_RawIOBase_pyio_in_io_matchN)rrrr�r�rrrrr�sr�c@s|eZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�Zdd�Zdd�Z
dd�Zdd�Zdd�ZdS)�CommonBufferedTestscCs<|��}|�|�}|�|��|�|�t|j�t|�dSr2)rL�tp�assertIs�detachr�r��repr�r0r7rErrr�test_detachs

zCommonBufferedTests.test_detachcCs&|��}|�|�}|�d|���dSr9)rLr�r�r;�r0rX�bufiorrr�test_fileno!s
zCommonBufferedTests.test_filenocCs:|��}|�|�}|�t|jdd�|�t|jdd�dS)Nrr�r�)rLr�r�r�r@r�rrr�test_invalid_args's
z%CommonBufferedTests.test_invalid_argscsN|j}g�G�fdd�d|�}|��}||�}~t��|��dddg�dS)Ncs:eZdZ��fdd�Z��fdd�Z��fdd�Z�ZS)zBCommonBufferedTests.test_override_destructor.<locals>.MyBufferedIOcs6��d�zt�j}Wntk
r*YnX|�dSrir
r�rrrr2s
zJCommonBufferedTests.test_override_destructor.<locals>.MyBufferedIO.__del__cs��d�t���dSrUrr7rrrrm:s
zHCommonBufferedTests.test_override_destructor.<locals>.MyBufferedIO.closecs��d�t���dSrrr7rrrre=s
zHCommonBufferedTests.test_override_destructor.<locals>.MyBufferedIO.flushrrrrXr�MyBufferedIO1sr�rCrVr�)r�rLrrr�)r0r�r�rXr�rrr�test_override_destructor.sz,CommonBufferedTests.test_override_destructorcs4|��}|�|���fdd�}|�|�t|�dS)Nc	s��W5QRXdSr2rr�r�rr�_withJsz7CommonBufferedTests.test_context_manager.<locals>._with)rLr�r�r�)r0rXr�rr�r�test_context_managerFs

z(CommonBufferedTests.test_context_managerc
Csn|��}t���T}|�t��|�|�jW5QRXtsF|�|j	�n|j	dk	r`|�
|j	jt�W5QRXdSr2)
rhr�catch_unraisable_exceptionr�rr��xyzzy�IOBASE_EMITS_UNRAISABLEr;�
unraisabler��exc_typerl�r0rXrjrrr�test_error_through_destructorRs

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'>)rLr�rr�assertRegexr�r�)r0r7r
Zclsnamerrr�	test_repr_s
zCommonBufferedTests.test_reprc	CsR|��}|�|�}t�|d|��(zt|�Wntk
rBYnXW5QRXdS�Nr�)rLr�r�	swap_attrr��RuntimeError�r0r7r
rrr�test_recursive_repris
z'CommonBufferedTests.test_recursive_reprcs�|���g����fdd�}|�_|����|�t�j�|��j�|��j�|���|��d�|��d�dd��_dS)Ncs�j�jg�dd�<t��dSr2rjr�r
rkr7rrrExsz@CommonBufferedTests.test_flush_error_on_close.<locals>.bad_flushrrCcSsdSr2rrrrrrF�rMz?CommonBufferedTests.test_flush_error_on_close.<locals>.<lambda>)	rLrer�r�rlrmrGrkrH�r0rErr�rrNss

z-CommonBufferedTests.test_flush_error_on_closec	Cs�|��}dd�}dd�}||_|�|�}||_|�t��}|��W5QRX|�|jjd�|�	|jj
t�|�|jj
jd�|�|j�dd�|_d	d�|_dS)
NcSstd��dS�Nrer�rrrrrE�sz@CommonBufferedTests.test_close_error_on_close.<locals>.bad_flushcSstd��dS�Nrmr�rrrr�	bad_close�sz@CommonBufferedTests.test_close_error_on_close.<locals>.bad_close�rm�recSsdSr2rrrrrrF�rMz?CommonBufferedTests.test_close_error_on_close.<locals>.<lambda>cSsdSr2rrrrrrF�rM)
rLrmr�rer�rlr�rhr|�assertIsInstance�__context__rHrk�r0r7rEr�r
�errrrr�test_close_error_on_close�s

z-CommonBufferedTests.test_close_error_on_closec	Cs�|��}dd�}dd�}||_|�|�}||_|�t��}|��W5QRX|�dt|j��|�	|jj
t�|�dt|jj
��|�|j�dd�|_d	d�|_dS)
NcSst�dSr2��non_existing_flushrrrrrE�szNCommonBufferedTests.test_nonnormalized_close_error_on_close.<locals>.bad_flushcSst�dSr2��non_existing_closerrrrr��szNCommonBufferedTests.test_nonnormalized_close_error_on_close.<locals>.bad_closer�r�cSsdSr2rrrrrrF�rMzMCommonBufferedTests.test_nonnormalized_close_error_on_close.<locals>.<lambda>cSsdSr2rrrrrrF�rM)
rLrmr�rer��	NameError�assertInrgrhr�r�rHrkr�rrr�'test_nonnormalized_close_error_on_close�s

z;CommonBufferedTests.test_nonnormalized_close_error_on_closecCs<|��}|�|�}|��|��|��|�t|j�dSr2)rLr�rmr�r�rer�rrrrO�s
z$CommonBufferedTests.test_multi_closecCs6|�|�d��}|�|j|j�|�|j|jd�dS)N�
AAAAAAAAAAr)r�rvr�rzrAr@�r0r�rrr�test_unseekable�sz#CommonBufferedTests.test_unseekablec	Cs:|��}|�|�}|��}|�t��||_W5QRXdSr2)rLr�r�rr7)r0r7rE�xrrr�test_readonly_attributes�s

z,CommonBufferedTests.test_readonly_attributesN)rrrr�r�r�r�r�r�r�r�rNr�r�rOr�r�rrrrr�s


r�c@s(eZdZejdd��Zejdd��ZdS)�
SizeofTestcCs\d}d}|��}|j||d�}t�|�|}|��}|j||d�}|�t�|�||�dS)N�� ��buffer_size)rLr�r��	getsizeofr�)r0Zbufsize1Zbufsize2rXr�rzrrr�test_sizeof�szSizeofTest.test_sizeofcCsFd}|��}|j||d�}t�|�|}|��|�t�|�|�dS)Nr�r�)rLr�r�r�rmr�)r0rrXr�rzrrr�test_buffer_freeing�szSizeofTest.test_buffer_freeingN)rrrr�cpython_onlyr�r�rrrrr��s

r�c@s�eZdZdZdd�Zdd�Zdd�Zdd	�Zd
d�Zdd
�Z	dd�Z
dd�Zdd�Zdd�Z
dd�Zdd�Zdd�Zdd�Ze�d�dd ��Zd!d"�Zd#d$�Zd%d&�Zd'd(�Zd)S)*�BufferedReaderTestr�cCs�|�dg�}|�|�}|�|�|j|dd�|j|dd�|�d|���|jt|j|dd�|jt|j|dd�|jt|j|dd�|�dg�}|�|�|�d|���dS)NrP�r��r��r�)rLr�r1r�rPr�r�r�rrr�test_constructor�s


z#BufferedReaderTest.test_constructorcCsX|j�|j�}~|j�|j�}|�ttfd|jd�|�|���|�|�d�d�dS�N�uninitialized|has no attributerrM)	r��__new__r�r�rrPr1rLr�r�rrr�test_uninitialized�s
�z%BufferedReaderTest.test_uninitializedcCsDdD]*}|�d�}|�|�}|�d|�|��q|�t|jd�dS)N)Nr�r�r�rl)rLr�r�rPr�r�)r0�argrXr�rrr�	test_read�s


zBufferedReaderTest.test_readcCs�|�d�}|�|�}|�d|�d��|�d|�d��|�|jd�|�d|�d��|�d|�d��|�|jd�|�d	|�d��|�|jd
�|�d|�d��|�|jd�|�d|�d��|�|jd
�dS)Nr��arC�brMrrTr�rQrVrRr�r��rLr�r�rPr{r.r�rrr�
test_read1�s

zBufferedReaderTest.test_read1cCs�|�d�}|�|�}|�d|�d��|�d|���|�d|���|�d|�d��|�|jd�|�d	|���|�|jd
�dS)Nr�r�rCsbcrQrRr�r�rMr�r�r�rrr�test_read1_arbitrarys

z'BufferedReaderTest.test_read1_arbitrarycCs|�d�}|�|�}td�}|�|�|�d�|�|d�|�|�|�d�|�|d�|�|�|�d�|�|d�|�|�|�d�|�|d�|�|�|�d�|�|d�|�d	�}|�|�}|�|�|�d�|�|d�|�|�|�d�|�|d
�dS)Nr�rVrS�cdrUrCsgfr)rPNscb)rLr�r�r�rG)r0rXr�r
rrr�
test_readintos&



z BufferedReaderTest.test_readintocCs4d}|�d�}|j||d�}td�}|�|�d�d�|�|jd�|�|�|�d�|�|d�|�|jd�|�|�|�d�|�|dd�d	�|�|jd�|�|�|�d�|�|d
�|�|jd�td|�}|�|�d�d�|�|jd�|�|�|�d�|�|dd�d
�|�|jd�dS)Nr�)rP�de�fghsjklr�rVr�rPrCrSrTr�r�r�sfghjklr�)rLr�r�r��peekr.r�)r0r�rXr�r
rrr�test_readinto1,s*
z!BufferedReaderTest.test_readinto1cCs�d}d}|�|f�}|j||d�}t�dd�}|�|�}|�|t|��t|��d�}|�|t|��|�	|d|�|d|��|�	||d�dt||d���dS�N�<saaaaaaaaaaaaaaaaaaaaaaaaaar�r(s xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxrr�)
rLr�rrGrrrr�
assertLessr��r0r�rrXr�r
rFZbmrrr�test_readinto_arrayCs
z&BufferedReaderTest.test_readinto_arraycCs�d}d}|�|f�}|j||d�}t�dd�}|�|�}|�|t|��t|��d�}|�|t|��|�	|d|�|d|��|�	||d�dt||d���dSr�)
rLr�rr�rrrrr�r�rrrr�test_readinto1_arrayXs
z'BufferedReaderTest.test_readinto1_arraycsZ�fdd�}��|���dddg���|��d�ddg���|��d�dddg�dS)Ncs��d�}��|�S)N)r�r�rU)rLr�)rXr7rrr�ns
z0BufferedReaderTest.test_readlines.<locals>.bufior�r�rUrZ�r�r�r�rr7r�test_readlinesmsz!BufferedReaderTest.test_readlinesc	Cs�d}t|�}dddddg|dggddddg|ggdddddgdddggg}|D]d\}}}|�|�}|j||d	�}d}	|D]*}
|�|�|
�||	|	|
��|	|
7}	qx|�|j|�qNdS)
N�	abcdefghir�r�rCr��rrVr�)rrpr�r�rPrq)r0rZdlenr�rZbuf_read_sizesZraw_read_sizesrXr�r
�nbytesrrr�test_bufferingus�

z!BufferedReaderTest.test_bufferingcCs�|�d�}|�|�}|�d|�d��|�d|�d��|�d|���|�d|�d��|�|���|�d|���|�d�}|�d	|���|�|���dS)
N)rPrQNrRNNN�abcdr��erCsfgrM)r�NNr�)rLr�r�rPr�r;r�r�rrr�test_read_non_blocking�s


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

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

z BufferedReaderTest.test_read_all�cpuc
s*�zd}ttd��|}t�|�tt|��}|�	tjd�����
|�W5QRX|j	tj|jdd���}|�|d��g�g����fdd���fd	d
�td�D�}t�
|��t�d�W5QRX|��d
��d���}td�D]$}tt|g��}|�|�|�|�q�W5QRXW5t�tj�XdS)N���r�rr�rc
sfz2tddg�D] }��|�}|s$q0��|�qWn.tk
r`}z��|��W5d}~XYnXdS)NrC�)rrPr3�	Exception)rFr��e)r��errors�resultsrrr'�s

z*BufferedReaderTest.test_threads.<locals>.fcsg|]}tj�d��qS��r��r_r���.0r�r&rr�
<listcomp>�sz3BufferedReaderTest.test_threads.<locals>.<listcomp>r��{�G�z�?�(the following exceptions were caught: %rrM)rr�r�r+r+�random�shufflerr�r#r5�	read_moder��
start_threadsrcrdrHr�r�r)r0�N�lr�r7�threadsr(�cr)r�rr'rr�test_threads�s.
�
"zBufferedReaderTest.test_threadscCsb|�|�d��}|�|j|j�|�|j|jd�|�d�|�|j|jd�|�|j|j�dS)Nr�rrC)r�rvr�rzrAr@rPr�rrrr��s
z"BufferedReaderTest.test_unseekablecCs@|�d�}|�|�}|�t|jd�|�t|j�dd�|_dS)Nr�rcSsdSr2rrrrrrF�rMz7BufferedReaderTest.test_misbehaved_io.<locals>.<lambda>)rTr�r�rlr@rArmr�rrr�test_misbehaved_io�s


z%BufferedReaderTest.test_misbehaved_ioc	Cs�d}d|d||d|dfD]�}|�d|g�}|�||�}|�|�|�d|�|�|jdd�||j��|�d|ddg�}|�||�}|�|�|�d|�|�|jdd�||j��qdS)Nr�rVrCr�rzfailed for {}: {} != 0)rLr�r�rPr/rA)r0rrFrXr�rrr�test_no_extraneous_read�s
�
�z*BufferedReaderTest.test_no_extraneous_readcCsDt�t�d��}|�d�|��|�t|j�|�t|jd�dS)N�12rC)	r~r�r�rPrmr�r�r�r{r4rrr�test_read_on_closed�s

z&BufferedReaderTest.test_read_on_closedN)rrrr!r�r�r�r�r�r�r�rrrrrr
rr�requires_resourcer'r�r(r)r+rrrrr��s*

'	r�c@sFeZdZejZe�ed�dd��Z	dd�Z
dd�Zdd	�Zd
d�Z
dS)
�CBufferedReaderTest�GMSan defaults to crashing instead of returning NULL for malloc failure.cCsDt�|�tjdkr@|��}|�|�}|�ttt	f|j
|tj�dS�Nr>)r�r�r�rBrLr�r�r��MemoryErrorr�r1r�rrrr��s


�z$CBufferedReaderTest.test_constructorcCs�|�dg�}|�|�}|jt|j|dd�|�t|j�|jt|j|dd�|�t|j�|jt|j|dd�|�t|j�dS)NrPrr�r�r�)rLr�r�r�r1rPr�rrr�test_initialization	s
z'CBufferedReaderTest.test_initializationcCs(|�d�}|�|�}|�t|jd�dS)Nr�r�)rTr�r�rlrPr�rrr�test_misbehaved_io_reads

z+CBufferedReaderTest.test_misbehaved_io_readc	Csn|�tjtj�t�dtf��8|�tjd�}|�|�}||_t	�
|�}~t��W5QRX|�|�|�dS)Nrr)
r�rr�r�rrr�r�r'r9r:rr;�r0rXr'r<rrrr=s

z+CBufferedReaderTest.test_garbage_collectionc	Cs0|�td��|�t��ddd�W5QRXdS)Nr�r��r�r�r�r~r�r7rrr�test_args_error'sz#CBufferedReaderTest.test_args_errorN)rrrr~r�r��unittest�skipIf�MEMORY_SANITIZERr�r1r2r=r5rrrrr-�s




r-c@seZdZejZdS)�PyBufferedReaderTestN)rrrr�r�r�rrrrr9-sr9c@s�eZdZdZdd�Zdd�Zdd�Zdd	�Zd
d�Zdd
�Z	dd�Z
dd�Zdd�Zdd�Z
dd�Zdd�Zdd�Zdd�Zdd�Zd d!�Zd"d#�Zd$d%�Zd&d'�Ze�d(�d)d*��Zd+d,�Zd-d.�Zd/d0�Zd1d2�Zd3S)4�BufferedWriterTestr�cCs�|��}|�|�}|�|�|j|dd�|j|dd�|�d|�d��|��|jt|j|dd�|jt|j|dd�|jt|j|dd�|�|�|�d|�d	��|��|�d
�|j	�d�dS)Nr�r�r�r�rPrr�r��ghirMsabcghi)
rLr�r1r�r5rer�r�r�r-r�rrrr�4s


z#BufferedWriterTest.test_constructorcCsX|j�|j�}~|j�|j�}|�ttfd|jd�|�|���|�|�d�d�dS)Nr�rMr)	r�r�r�r�rr5r1rLr�r�rrrr�Ds
�z%BufferedWriterTest.test_uninitializedcCsD|��}|�|�}|�d�|�|j�|��|�|jdg�dS)Nshowdy!)rLr�r5rHr-r�r�r�rrr�test_detach_flushNs

z$BufferedWriterTest.test_detach_flushcCsh|��}|�|d�}|�d�|�|j�td�}|�|�d|dd�<|��|�d�|j�d�dS)NrrP�def�***rM�abcdef)	rLr�r5rHr-r�rer�r�)r0�writerr�r�rrr�
test_writeVs

zBufferedWriterTest.test_writecCsn|��}|�|d�}d}tdt|�d�D]}|�|||d��q(d�|j�}|�|�|dd��|�dS)Nrsabcdefghijklmnoprr�rMi����)	rLr�r+rr5r�r-rGr�)r0r@r��contentsrFZflushedrrr�test_write_overflowbsz&BufferedWriterTest.test_write_overflowc	Cs�ttd��d}d}|��}|�|d�}dd�}|�}|t|�kr�tt|�t|�|�}|�|�||||��|�||�||7}q6|�	�|�|d�
|j��dS)Nrrrr�css&td�D]}td�D]
}|VqqdS)NrC�)rr+)rzr(rrr�	gen_sizestsz2BufferedWriterTest.check_writes.<locals>.gen_sizesrM)rr+rLr�rr�r�r�r5rer�r-)	r0Zintermediate_funcrBrFr@r�rE�sizesrzrrr�check_writesms
zBufferedWriterTest.check_writescCs|�dd��dS)NcSsdSr2rr�rrrrF�rMz0BufferedWriterTest.test_writes.<locals>.<lambda>�rGr7rrr�test_writes�szBufferedWriterTest.test_writescCs|�dd��dS)NcSs|��Sr2r�r�rrrrF�rMz<BufferedWriterTest.test_writes_and_flushes.<locals>.<lambda>rHr7rrr�test_writes_and_flushes�sz*BufferedWriterTest.test_writes_and_flushescCs(dd�}|�|�dd�}|�|�dS)NcSs8|��}|�|dd�|�|dd�|�|d�dSrB)rAr@�r�r
rrr�_seekabs�sz:BufferedWriterTest.test_writes_and_seeks.<locals>._seekabscSs4|�dd�}|�dd�|�dd�|�|d�dS)NrrCr�)r@rKrrr�_seekrel�sz:BufferedWriterTest.test_writes_and_seeks.<locals>._seekrelrH)r0rLrMrrr�test_writes_and_seeks�s
z(BufferedWriterTest.test_writes_and_seekscCs|�dd��dS)NcSs|�|���Sr2)rHrAr�rrrrF�rMz>BufferedWriterTest.test_writes_and_truncates.<locals>.<lambda>rHr7rrr�test_writes_and_truncates�sz,BufferedWriterTest.test_writes_and_truncatesc
Cs�|��}|�|d�}|�|�d�d�|�|�d�d�|�d�|�|�d�d�|�d�z|�d	�Wn*|jk
r�}z
|j}W5d}~XYnX|�d
�|�|d�|�|��d�|�|�d
�d�|��}|�	|�
d�|�dS)Nrr	r�sefghirZ�ksjklmn�0sopqrwxyz0123456789z'BlockingIOError should have been raisedr�sabcdefghijklmnopqrwxyzs	ABCDEFGHIr�s	01234567A)r�r�r�r5r�r��characters_writtenr�r�rGr�)r0r7r�r�writtenr�rrr�test_write_non_blocking�s&



�z*BufferedWriterTest.test_write_non_blockingcCs�t��}|�|d�}|�|�d�d�|�|��d�|�dd�|�|�d�d�|�dd�|�|��d�|�|�d�d�|��|�|��d	�dS)
Nr�r?r�rsXYrVsXYcdefs123456sXYcdef123456)	r~r�r�r�r5rAr@rre�r0r7r�rrr�test_write_and_rewind�sz(BufferedWriterTest.test_write_and_rewindcCs<|��}|�|d�}|�d�|��|�d|jd�dS�NrrPr)rLr�r5rer�r-�r0r@r�rrr�
test_flush�s

zBufferedWriterTest.test_flushcCsHdddg}|��}|�|d�}|�|�|��|�d�|j�d�dS�NrSr�rUrrMr?)rLr�r�rer�r�r-�r0r$r@r�rrr�test_writelines�s

z"BufferedWriterTest.test_writelinescCsLtdddg�}|��}|�|d�}|�|�|��|�d�|j�d�dSrZ)rrLr�r�rer�r�r-r[rrr�test_writelines_userlist�s
z+BufferedWriterTest.test_writelines_userlistcCsN|��}|�|d�}|�t|jdddg�|�t|jd�|�t|jd�dS)NrrCrVr��abc)rLr�r�r�r�rXrrr�test_writelines_error�s
z(BufferedWriterTest.test_writelines_errorcCs>|��}|�|d�}|�d�~t��|�d|jd�dSrW)rLr�r5rrr�r-rXrrrr�s
z"BufferedWriterTest.test_destructorc	Cs�|�tjtj�|jtj|jdd��>}|�|d�}|�d�|�|�	d�d�|�|�
�d�W5QRX|jtjddd��}|�|��d�W5QRXdS)	Nrr�rr?r�r�r�rP)r�rr�r�r#�
write_moder�r5r�rHrArP)r0r7r�r'rrr�
test_truncate�s
z BufferedWriterTest.test_truncatec
Cs�|�tjtj�|�tjd��}|�dd�W5QRXdddg}|D]Z}|jtjd|d��>}|�d|d	�|�d	�|��|�|�	�|d
�W5QRXqFdS)Nr��i'r�r���zr+br�rCrV)
r�rr�r�r#r5rPrHr�rA)r0r'Zbuffer_sizesr�rrr�test_truncate_after_write�s

z,BufferedWriterTest.test_truncate_after_writerc

sR�z<d}ttd��|}tddg�}d}t��|t|�krbt|�}��	||||��||7}q.~|j
tj|jdd��t}|�|d��g����fdd	���fd
d�td�D�}t�
|��t�d
�W5QRX|��d�����W5QRX|�
tjd������}W5QRXtd�D]}	|�|�t|	g��|��qW5t�tj�XdS)NrrrCrrr�rc
sjz6z���}Wntk
r&YWdSX��|�qWn.tk
rd}z��|��W5d}~XYnXdSr2)�popleftrDr5rr3)r�r)r�r�queuerrr's

z*BufferedWriterTest.test_threads.<locals>.fcsg|]}tj�d��qSrrrr&rrr%sz3BufferedWriterTest.test_threads.<locals>.<listcomp>r�rrr�)rr�r�rr+rrrr�r3r#r`r�r"rcrdrHrmrPr�r)
r0r#rBrFrFrzr7r%r�r(r)r�rr'rfrr's6
� zBufferedWriterTest.test_threadscCsP|��}|�|d�}|�t|jd�|�t|j�|�t|jd�dd�|_dS)NrZrr?cSsdSr2rrrrrrF:rMz7BufferedWriterTest.test_misbehaved_io.<locals>.<lambda>)rTr�r�rlr@rAr5rmr�rrrr(2sz%BufferedWriterTest.test_misbehaved_ioc	Cs,|�t��|�|��dd�W5QRXdS�Nrr��r�r�r�rLr7rrr�test_max_buffer_size_removal<sz/BufferedWriterTest.test_max_buffer_size_removalcCsH|��}dd�}||_|�|�}|�d�|�t|j�|�|j�dS)NcSs
t��dSr2r�)r
rrr�	bad_writeBsz?BufferedWriterTest.test_write_error_on_close.<locals>.bad_write�spam)rLr5r�r�rlrmrGrk)r0r7rjr
rrr�test_write_error_on_close@s

z,BufferedWriterTest.test_write_error_on_closecCs\|��}|�|d�}tj|jd�}|��|j��|�t	|j
d�|�|j�|�
�dS)Nrrrk)r^r�r_r�rmr�ra�waitr�r�r5rGrkr�)r0rXr��trrr�test_slow_close_from_threadJs
z.BufferedWriterTest.test_slow_close_from_threadN)rrrr`r�r�r<rArCrGrIrJrNrOrTrVrYr\r]r_rrardrr,r'r(rirlrorrrrr:1s4


.

r:c@s>eZdZejZe�ed�dd��Z	dd�Z
dd�Zdd	�Zd
S)�CBufferedWriterTestr.cCsDt�|�tjdkr@|��}|�|�}|�ttt	f|j
|tj�dSr/)r:r�r�rBrLr�r�r�r0r�r1r�rrrr�Zs


�z$CBufferedWriterTest.test_constructorcCs�|��}|�|�}|jt|j|dd�|�t|jd�|jt|j|dd�|�t|jd�|jt|j|dd�|�t|jd�dS)Nrr�r=r�r�)rLr�r�r�r1r5r�rrrr1fs
z'CBufferedWriterTest.test_initializationc	Cs�|�tjtj�t�dtf��B|�tjd�}|�|�}|�d�||_	t
�|�}~t��W5QRX|�
|�|�|�tjd��}|�|��d�W5QRXdS)Nrrs123xxxr�)r�rr�r�rrr�r�r5r�r9r:rr;r#r�rPr3rrrr=ps


z+CBufferedWriterTest.test_garbage_collectionc	Cs0|�td��|�t��ddd�W5QRXdS)Nr�r�r4r7rrrr5�sz#CBufferedWriterTest.test_args_errorN)
rrrr~r�r�r6r7r8r�r1r=r5rrrrrpWs



rpc@seZdZejZdS)�PyBufferedWriterTestN)rrrr�r�r�rrrrrq�srqc@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�dSr2)r�rLrHrk�r0�pairrrrr��sz#BufferedRWPairTest.test_constructorcCs�|j�|j�}~|j�|j�}|�ttfd|jd�|�ttfd|jd�|�|��|���|�	|�d�d�|�	|�d�d�dSr�)
r�r�r�r�rrPr5r1rLr�rsrrrr��s 
�
�z%BufferedRWPairTest.test_uninitializedcCs(|�|��|���}|�|j|j�dSr2)r�rLr�rzr�rsrrrr��szBufferedRWPairTest.test_detachc	Cs2|�t��|�|��|��dd�W5QRXdSrgrhr7rrr�(test_constructor_max_buffer_size_removal�sz;BufferedRWPairTest.test_constructor_max_buffer_size_removalcCs,Gdd�dt�}|�t|j|�|���dS)Nc@seZdZdd�ZdS)zJBufferedRWPairTest.test_constructor_with_not_readable.<locals>.NotReadablecSsdSrwrr7rrrr<�szSBufferedRWPairTest.test_constructor_with_not_readable.<locals>.NotReadable.readableN�rrrr<rrrr�NotReadable�srw�rLr�rlr�)r0rwrrr�"test_constructor_with_not_readable�sz5BufferedRWPairTest.test_constructor_with_not_readablecCs,Gdd�dt�}|�t|j|��|��dS)Nc@seZdZdd�ZdS)zLBufferedRWPairTest.test_constructor_with_not_writeable.<locals>.NotWriteablecSsdSrwrr7rrrr8�szUBufferedRWPairTest.test_constructor_with_not_writeable.<locals>.NotWriteable.writableN)rrrr8rrrr�NotWriteable�srzrx)r0rzrrr�#test_constructor_with_not_writeable�sz6BufferedRWPairTest.test_constructor_with_not_writeablecCsv|�|�d�|���}|�|�d�d�|�|�d�d�|�|��d�|�|�d�|���}|�|�d�d�dS)Nr?r�rPrCrQrU)r�r�rLr�rPrsrrrr��szBufferedRWPairTest.test_readcsX�fdd�}��|���dddg���|���dddg���|��d�ddg�dS)Ncs����d�����S)Ns	abc
def
h)r�r�rLrr7rrrF�rMz3BufferedRWPairTest.test_readlines.<locals>.<lambda>r�r�r�rZrrsrr7rr�sz!BufferedRWPairTest.test_readlinescCs<|�|�d�|���}|�|�d�d�|�|��d�dS)Nr?r�rPr=)r�r�rLr�r{rsrrrr��szBufferedRWPairTest.test_read1c
CshdD]^}|�|��J|�|�d�|���}td�}|�t||�|�d�|�t|�d�W5QRXqdS)Nr}r?srZsabcde)r�r�r�rLrr�r~r)r0r�rtrrrrr��sz BufferedRWPairTest.test_readintocCsf|��}|�|��|�}|�d�|��td�}|�|�d|dd�<|��|�|jddg�dS)NrPr=r>)rLr�r5rer�r�r-)r0r�rtr�rrrrA�s

zBufferedRWPairTest.test_writecCsB|�|�d�|���}|�|�d��d��|�|�d�d�dS)Nr?r�rP)r�r�rLrGr�r�r�rPrsrrr�	test_peek�szBufferedRWPairTest.test_peekcCs&|�|��|���}|�|���dSr2)r�rLrGr<rsrrr�
test_readable�sz BufferedRWPairTest.test_readablecCs&|�|��|���}|�|���dSr2)r�rLrGr8rsrrr�test_writeable�sz!BufferedRWPairTest.test_writeablecCs&|�|��|���}|�|���dSr2)r�rLrHr=rsrrr�
test_seekable�sz BufferedRWPairTest.test_seekablecCs8|�|��|���}|�|j�|��|�|j�dSr2)r�rLrHrkrmrGrsrrr�test_close_and_closed�sz(BufferedRWPairTest.test_close_and_closedc	Cs�dd�}|��}||_|��}|�||�}|�t��}|��W5QRX|�dt|j��|�|j	�|�
|j	�|�|j	�dd�|_dS)NcSstdSr2��reader_non_existingrrrr�reader_close�szIBufferedRWPairTest.test_reader_close_error_on_close.<locals>.reader_closer�cSsdSr2rrrrrrFrMzEBufferedRWPairTest.test_reader_close_error_on_close.<locals>.<lambda>)rLrmr�r�r�r�rgrhrGrkrH)r0r�r�r@rtr�rrr� test_reader_close_error_on_close�sz3BufferedRWPairTest.test_reader_close_error_on_closec
Cs�dd�}|��}|��}||_|�||�}|�t��}|��W5QRX|�dt|j��|�|j	�|�
|j	�|�|j	�dd�|_d}t���.t���d}t�
�W5QRXt�
�W5QRXdS)NcSstdSr2��writer_non_existingrrrr�writer_closeszIBufferedRWPairTest.test_writer_close_error_on_close.<locals>.writer_closer�cSsdSr2rrrrrrFrMzEBufferedRWPairTest.test_writer_close_error_on_close.<locals>.<lambda>)rLrmr�r�r�r�rgrhrHrkrGrr�r)r0r�r�r@rtr�rrr� test_writer_close_error_on_closes$


z3BufferedRWPairTest.test_writer_close_error_on_closec	Cs�dd�}dd�}|��}||_|��}||_|�||�}|�t��}|��W5QRX|�dt|j��|�|jj	t�|�dt|jj	��|�
|j�|�
|j�|�
|j�dd�|_d	d�|_dS)
NcSstdSr2r�rrrrr�)szPBufferedRWPairTest.test_reader_writer_close_error_on_close.<locals>.reader_closecSstdSr2r�rrrrr�+szPBufferedRWPairTest.test_reader_writer_close_error_on_close.<locals>.writer_closer�r�cSsdSr2rrrrrrF<rMzLBufferedRWPairTest.test_reader_writer_close_error_on_close.<locals>.<lambda>cSsdSr2rrrrrrF=rM)rLrmr�r�r�r�rgrhr�r�rHrk)r0r�r�r�r@rtr�rrr�'test_reader_writer_close_error_on_close(s"
z:BufferedRWPairTest.test_reader_writer_close_error_on_closecCs�Gdd�dt�}|�|d�|d��}|�|���|�|d�|d��}|�|���|�|d�|d��}|�|���|�|d�|d��}|�|���dS)Nc@seZdZdd�Zdd�ZdS)z8BufferedRWPairTest.test_isatty.<locals>.SelectableIsAttycSst�|�||_dSr2)rLr1�_isatty)r0�isattyrrrr1As
zABufferedRWPairTest.test_isatty.<locals>.SelectableIsAtty.__init__cSs|jSr2)r�r7rrrr�Esz?BufferedRWPairTest.test_isatty.<locals>.SelectableIsAtty.isattyN)rrrr1r�rrrr�SelectableIsAtty@sr�FT)rLr�rHr�rG)r0r�rtrrr�test_isatty?szBufferedRWPairTest.test_isattycCs*|�|��|���}t�|�}d}d}dSr2)r�rLr9r:)r0Zbrwr:rrr�test_weakref_clearingTs
z(BufferedRWPairTest.test_weakref_clearingN)rrrr�r�r�ruryr{r�rr�r�rAr|r}r~rr�r�r�r�r�r�rrrrrr�s*			rrc@seZdZejZdS)�CBufferedRWPairTestN)rrrr~r�r�rrrrr�Zsr�c@seZdZejZdS)�PyBufferedRWPairTestN)rrrr�r�r�rrrrr�]sr�c@s�eZdZdZdZdd�Zdd�Zdd�Zd	d
�Zdd�Z	d
d�Z
dd�Zdd�Zdd�Z
dd�Zdd�Zdd�Zdd�Zdd�Zdd �Zd!d"�Zd#d$�Zd%d&�Zd'd(�Zd)d*�Zd+Zd+S),�BufferedRandomTest�rb+zwb+cCst�|�t�|�dSr2)r�r�r:r7rrrr�es
z#BufferedRandomTest.test_constructorcCst�|�t�|�dSr2)r�r�r:r7rrrr�is
z%BufferedRandomTest.test_uninitializedcCsn|�d�}|�|d�}|�d|�d��|�d�|�d�|�|j�|�d|���|�d|jd	�dS)
N)�asdf�ghjkr�asrVsdddseeer�sdddeeer)rLr�r�rPr5rHr-�r0r7r�rrr�test_read_and_writems


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�rVrr�r�s123fs	asdf123flr����rZrCr�sfl�r�)r�r�r�rPrAr@r5rerr�r�r�rrr�test_seek_and_tellxs$


z%BufferedRandomTest.test_seek_and_tellcCs�|�d�}|�|�}|�d||d��|�d�|�d||d��|�d|���|��|�d|���|�d||��|�dd�|�d	�|��|�dd�|�d	||d
��dS)NrrSrVr*rUr�r;rsXYZr�)r�r�r�r5rArer@)r0Z	read_funcr7r�rrr�check_flush_and_read�s



z'BufferedRandomTest.check_flush_and_readcCs|�dd��dS)NcWs
|j|�Sr2)rP)r�r|rrrrF�rMz8BufferedRandomTest.test_flush_and_read.<locals>.<lambda>�r�r7rrr�test_flush_and_read�sz&BufferedRandomTest.test_flush_and_readcCsddd�}|�|�dS)Nr�cSs.t|dkr|nd�}|�|�}t|d|��S)Nr�')r�rGr�r�rFr
rrr�	_readinto�s
z=BufferedRandomTest.test_flush_and_readinto.<locals>._readinto)r�r�)r0r�rrr�test_flush_and_readinto�s
z*BufferedRandomTest.test_flush_and_readintocCsddd�}|�|�dS)Nr�cSs2|�|�}|dkr|d|�}|�t|�d�|S�Nr�rC)r�r@rr�rrr�_peek�s

z5BufferedRandomTest.test_flush_and_peek.<locals>._peek)r�r��r0r�rrr�test_flush_and_peek�s
z&BufferedRandomTest.test_flush_and_peekcCsh|�d�}|�|�}|�d�|��|�d�|��|�dd�|�d|���|�d|���dS)Nr�123s45rs	12345fghi)r�r�r5rer@r�rrPrUrrr�test_flush_and_write�s



z'BufferedRandomTest.test_flush_and_writecCst�|�t�|�dSr2)r�r'r:r7rrrr'�s
zBufferedRandomTest.test_threadscCs(dd�}|�|�dd�}|�|�dS)NcSs|�d�dSri)r�r�rrrr��sz6BufferedRandomTest.test_writes_and_peek.<locals>._peekcSs.|��}|�dd�|�d�|�|d�dS)Nr�rCr)rAr@r�rKrrrr��s
rHr�rrr�test_writes_and_peek�s
z'BufferedRandomTest.test_writes_and_peekcCsdd�}|�|�dS)NcSs|�dd�|�d�dSr�)r@rPr�rrr�_read�sz7BufferedRandomTest.test_writes_and_reads.<locals>._readrH�r0r�rrr�test_writes_and_reads�sz(BufferedRandomTest.test_writes_and_readscCsdd�}|�|�dS)NcSs|�dd�|�d�dSr�)r@r{r�rrr�_read1�sz9BufferedRandomTest.test_writes_and_read1s.<locals>._read1rH)r0r�rrr�test_writes_and_read1s�sz)BufferedRandomTest.test_writes_and_read1scCsdd�}|�|�dS)NcSs|�dd�|�td��dSr�)r@rGr�r�rrrr��sz;BufferedRandomTest.test_writes_and_readintos.<locals>._readrHr�rrr�test_writes_and_readintos�sz,BufferedRandomTest.test_writes_and_readintoscCs�dD]�}|�d�}|�|d�}|�|�d�d�|�|��d�|�d|�|�|��|d�|��|�|��|d�|��}|�|dd|dd|�qdS)N)rCrZr�r�rC�A�Br�)r�r�r�rPrAr5rer)r0Zoverwrite_sizer7r�r�rrr�test_write_after_readahead�s
�z-BufferedRandomTest.test_write_after_readaheadc	Cs�dd�}d}tdt|��D]t}t|t|��D]`}|�|�}|�|d�}||||�|��t|�}d||<d||<|�|��|d||f�q,qdS)	NcSs:|�|�|�||�|�d�|�|�|�d�dS)N��)r@rPr5)r�Zpos1Zpos2rrr�mutate�s



z:BufferedRandomTest.test_write_rewind_write.<locals>.mutates�����rr�rVrCzfailed result for i=%d, j=%d)r+rr�r�rer�r�r)r0r�r
r(�jr7r��expectedrrr�test_write_rewind_write�s

�z*BufferedRandomTest.test_write_rewind_writecCs^|�d�}|�|d�}|�|�d�d�|�|��d�|�|�d�d�|�|��d�dS)Nr�r�rVsAAsBBr�)r�r�r�rPrHr5rUrrr�!test_truncate_after_read_or_write	s
z4BufferedRandomTest.test_truncate_after_read_or_writecCst�|�t�|�dSr2)r�r(r:r7rrrr(	s
z%BufferedRandomTest.test_misbehaved_ioc
Cs:|�d���}|�|d���}|�d�|�|�d�d�|�d�|�|�d�d�|�d�td�}|�|�|�|d	�|�d
�|�|�d�d�|�	�|�|�
�d�W5QRXW5QRX|�d
��d}|�|d��L}|�|�d�d�|�d�|�|�d�d�|�	�|�|�
�d�W5QRXW5QRXdS)Nsabcdefghr��1rCr��2rQr��f�4r�s1b2d3f4hrPr�rTsa2c)r�r�r5r�rPr{r�rGr�rer)r0r7r'rErrr�test_interleaved_read_write	s*




$
z.BufferedRandomTest.test_interleaved_read_writec
Cs�|�d���}|�|��l}|�d�|�|��d�|�d�|�|��d�|�d�|�|��d�|��|�|��d�W5QRXW5QRXdS)	Ns
ab
cdef
g
r�sb
r�r�r��
s
1b
2def
3
)r�r�r5r�r�rer)r0r7r'rrr�test_interleaved_readline_write6	s


z2BufferedRandomTest.test_interleaved_readline_writeN)rrrr!r`r�r�r�r�r�r�r�r�r�r'r�r�r�r�r�r�r�r(r�r�r�rrrrr�as.
r�c@s6eZdZejZe�ed�dd��Z	dd�Z
dd�ZdS)	�CBufferedRandomTestr.cCsDt�|�tjdkr@|��}|�|�}|�ttt	f|j
|tj�dSr/)r�r�r�rBrLr�r�r�r0r�r1r�rrrr�I	s


�z$CBufferedRandomTest.test_constructorcCst�|�t�|�dSr2)r-r=rpr7rrrr=U	s
z+CBufferedRandomTest.test_garbage_collectionc	Cs0|�td��|�t��ddd�W5QRXdS)Nr�r�r4r7rrrr5Y	sz#CBufferedRandomTest.test_args_errorN)rrrr~r�r�r6r7r8r�r=r5rrrrr�F	s



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

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

r�c@s*eZdZdZdddddddgZd	d
�ZdS)�StatefulIncrementalDecoderTestzB
    Make sure the StatefulIncrementalDecoder actually works.
    )r	Fza.b.c.d.)�oiabcdT�abcd.)soi...abcd...Tr�)si.o6.x.xyz.toolongtofit.Fzx-----.xyz---.toolon.)s
i.i2.o6xyzTzxy----.z-----.)si.o3.i6.abcdefghijklmnopTzabc.ghi.mno.)s;i.o29.a.b.cde.o15.abcdefghijabcdefghij.i3.a.b.c.d.ei00k.l.mTz�a----------------------------.b----------------------------.cde--------------------------.abcdefghijabcde.a.b------------..c.------------.d.e------------.k--------------.l--------------.m--------------.cCs\|jD]$\}}}t�}|�|�||�|�qt�}|�|�d�d�|�|�dd�d�dS)Nr�rrMrCr�)�
test_casesr�r�r�)r0r��eofr��drrrr��	sz+StatefulIncrementalDecoderTest.test_decoderN)rrrrIr�r�rrrrr��	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}�ZHejId~d��ZJejId�d���ZKd�d��ZLd�d��ZMd�d��ZNd�d��ZOd�d��ZPd�d��ZQd�d��ZRd�d��ZSd�d��ZTd�S)��TextIOWrapperTestcCs"d|_d�d�|_t�tj�dS)NsAAA
BBB
CCC
DDD
EEE
sAAA
BBB
CCC
DDD
EEE
r�)�testdatar��
normalizedrr�r�r7rrrr��	szTextIOWrapperTest.setUpcCst�tj�dSr2r�r7rrrr��	szTextIOWrapperTest.tearDowncCs�|�d�}|�|d�}|�|�}|j|ddd�|�|jd�|�|jd�|j|ddd	�|�|jd�|�|jd�|�d
|���|jt	|j|dd�|jt
|j|d
d�dS)N�é

rr �
�r"rvF�utf-8T)r"�line_buffering�é
r:rur�)r�r�r�r1r�r"r�r�r�r�r��r0rr
rnrrrr��	s

z"TextIOWrapperTest.test_constructorcCsf|j�|j�}~|j�|j�}|�tt|�|�ttfd|jd�|�	|�
��|�|�d�d�dS)Nr�rr)r�r�r�rr�r�r�rrPr1rLr��r0rnrrrr�
s
�z$TextIOWrapperTest.test_uninitializedc	Cs<|��}|�|�}|�td��|j|dd�W5QRXdS)Nzis not a text encoding�hexr!)r�r�r��LookupErrorr�)r0rr
rrr�*test_non_text_encoding_codecs_are_rejected
s
z<TextIOWrapperTest.test_non_text_encoding_codecs_are_rejectedcCs�|��}|�|�}|�|�}|�|��|�|j|dd�}|�d�|�|���|��|�|��d�|�	t
|j�t|�|�|jd�|�|j
d�|�|j�|�|j�dS)Nr�r!Zhowdyshowdyr�)r�r�r�r�r�r5rHrr�r�r�r�r"rr��
write_throughr�rrrr�
s


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

�
�
�
�
zTextIOWrapperTest.test_reprc	CsR|��}|�|�}t�|d|��(zt|�Wntk
rBYnXW5QRXdSr�)r�r�rr�r�r��r0r7rnrrrr�G
s
z%TextIOWrapperTest.test_recursive_reprcCsv|��}|�|d�}|j|ddd�}|�d�|�|��d�|�d�|�|��d�|�d	�|�|��d
�dS)Nr�
T�rvr��XrMzY
ZsXY
ZzA
BsXY
ZA
B)r�r�r�r5r�rr�rrr�test_line_bufferingQ
s


z%TextIOWrapperTest.test_line_bufferingcCs|��}|�|d�}|j|ddd�}|�d�|�|��d�|jdd�|�|��d	�|�d
�|�|��d�|�d�|�|��d�|jdd�|�|��d
�|�d�|�|��d
�|��|jdd�|�|jd�|jdd�|��|jdd�|�|jd�dS)Nrr�Fr�zAB
CrMT)r�sAB
CzDEF
Gs	AB
CDEF
G�Hs
AB
CDEF
GHZIJ)r�r�r�r5r�r�reconfigurer�r�rrr�test_reconfigure_line_buffering\
s,



z1TextIOWrapperTest.test_reconfigure_line_bufferingzutf-8 mode is enabledc	Csrttj�}zJdD]}|tjkrtj|=qt�d�}|��}|�|�}|�	|j
|�W5tj��tj�|�XdS)N)�LC_ALL�LANG�LC_CTYPEF)�dictr��environ�clear�update�locale�getpreferredencodingr�r�r�r")r0Zold_environ�keyZcurrent_locale_encodingr
rnrrr�test_default_encodingw
s





z'TextIOWrapperTest.test_default_encodingcsPddl�|��}�fdd�|_|�t|j|��fdd�|_|�t|j|�dS)Nrcs
�jdSri)ZINT_MAXr��	_testcapirrrF�
rMz8TextIOWrapperTest.test_device_encoding.<locals>.<lambda>cs
�jdSri)ZUINT_MAXrrrrrF�
rM)rr�r;r�r�r�r4rrr�test_device_encoding�
sz&TextIOWrapperTest.test_device_encodingcCsJ|��}|j|dd�}|�|jd�|�|�}|�|j�t�|j�dS)Nr�r!)r�r�r�r"�assertIsNotNoner�r��r0r
rnrrr�
test_encoding�
s
zTextIOWrapperTest.test_encodingcCs�|�d�}|j|dd�}|�t|j�|�d�}|j|ddd�}|�t|j�|�d�}|j|ddd�}|�|��d�|�d�}|j|ddd�}|�|��d	�dS)
Nsabc
�
r�r!r��r"rr�zabc

�replaceuabc
�
)r�r�r��UnicodeErrorrPr�rrrr�test_encoding_errors_reading�
s



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

�
z.TextIOWrapperTest.test_encoding_errors_writingc	Cs<dddddg}ddddddggd|gd	ddd
dggddd
ggddddggg}d}|D]�}td�|��|��}dD]�}tdd�D]�}|D]�\}}	|�|�|�|�}
|j|
||d�}|r�g}|�d�}
|
dkr�q�|�t	|
�d�|�
|
|���q�nt|�}t
||	�D]\}}|�||��q|�t	|�t	|	��q�q~qpqTdS)Nzunix
z	windows
zos9
zlast
Znonlzwindows
zos9
rr�z	os9
last
r�zunix
windows
z
os9
last
nonl�
z
unix
windows
z
os9
z	last
nonl)r�r �utf-16�	utf-16-le�	utf-16-be�utf-32�	utf-32-le�	utf-32-be)FTrCr��rvr"rV)rr�r�r+r�r�r�rPr�rr3r�r+�zip)r0Zinput_linesr��	encodingsr"rZdo_readsrrvZ	exp_linesr��textioZ	got_lines�c2Zgot_lineZexp_linerrr�
test_newlines�
s8
��
zTextIOWrapperTest.test_newlinesc
Cs�d}|�dd��dd�}d|�d�jdd�fd|�d�jdd�fd	d
ddd
dgfddd
dgfddddddgffD]R\}}|�|�}|j|d|d�}|�|��|�|�d�|�|��d�	|��qpdS)NsAAA
BBB
CCC
DDD
EEE
FFF
GGGs
r��
r�T)�keependsrr�zAAA
zBBB
z
CCC
DDD
EEE
zFFF
ZGGGr�zAAA
BBB
CCC
DDD
EEE
rz
AAA
BBB
CCC
zDDD
zEEE
z
FFF
z
GGGr�r)
rr��
splitlinesr�r�r�r�r@rPr�)r0r�r�rvr�rE�txtrrr�test_newlines_input�
s�

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

ZsAAA
BBB
CCC
X
Y

Z)rr�rr�r�r�zAAA
BzBB
CCC
zX
Y
ZF)r��linesep�sorted�itemsr�r�r5rer�rkr)r0Ztestdictr�rvr�rEr*rrr�test_newlines_outputs�


z&TextIOWrapperTest.test_newlines_outputcsZg�|j�G��fdd�d��}|�}|j|dd�}|�d�~t��|�dg��dS)NcseZdZ��fdd�ZdS)z4TextIOWrapperTest.test_destructor.<locals>.MyBytesIOcs��|�����|�dSr2)r3rrmr7�r r$rrrmsz:TextIOWrapperTest.test_destructor.<locals>.MyBytesIO.closeNr�rr0rr�	MyBytesIOsr1r�r!r^rP)r�r�r5rrr�)r0r1r
rnrr0rrs
z!TextIOWrapperTest.test_destructorcsNg�G�fdd�d|j�}|��}||dd�}~t��|��dddg�dS)Ncs:eZdZ��fdd�Z��fdd�Z��fdd�Z�ZS)z<TextIOWrapperTest.test_override_destructor.<locals>.MyTextIOcs6��d�zt�j}Wntk
r*YnX|�dSrir
r�rrrr%s
zDTextIOWrapperTest.test_override_destructor.<locals>.MyTextIO.__del__cs��d�t���dSrUrr7rrrrm-s
zBTextIOWrapperTest.test_override_destructor.<locals>.MyTextIO.closecs��d�t���dSrrr7rrrre0s
zBTextIOWrapperTest.test_override_destructor.<locals>.MyTextIO.flushrrrrXr�MyTextIO$sr2r�r!rCrVr�)r�r�rrr�)r0r2r
rnrrrr�"sz*TextIOWrapperTest.test_override_destructorc
Csn|��}t���T}|�t��|�|�jW5QRXtsF|�|j	�n|j	dk	r`|�
|j	jt�W5QRXdSr2)
rhrr�r�rr�r�r�r;r�r�r�rlr�rrrr�9s

z/TextIOWrapperTest.test_error_through_destructorcCs�dD�]�}dD�]t}|jtjd|d�}||_|�|�d�d�|��|jtjd|d�}||_|�|��d�|�|��d�|��}|�|�	d�d�|�|�d�d�|�	d�|�|�d	�d
�|�|�d�d�|�|�d�d
�|�|��d
�|�|��|�|�|�	d�d�|�|�	dd	�|�|�|�d�d�|�|�	|�|�|�|��d�|�
d��r||�||�|��qqdS)N)rCrVr�r�rZrDr���� �!�?�@�A)r�r r��w+r!r^r��r+rrVr	rCr&r�def�utf)r#rr�r%r�r5rmrArPr@r��multi_line_test)r0�	chunksize�encr'�cookierrr�
test_basic_ioHs6


zTextIOWrapperTest.test_basic_iocCs�|�d�|��d}g}dD]V}g}t|�D]}|�||t|��q.d�|�d}|�|��|f�|�|�q|�d�g}	|��}
|��}|s�q�|	�|
|f�q�|�	|	|�dS)Nru	sÿ࿿￿)rrCrVr�r�rZ�r4r5r6�>r7r8r9rrr�)
r@rHr+r3rr�rAr5r�r�)r0r'r@�sampleZwlinesrz�charsr(�lineZrlinesr
rrrr>es&

z!TextIOWrapperTest.multi_line_testcCs�|jtjddd�}|��}|�d�|��}|�d�|��}|�d�|�|��|�|�|��d�|�|��|�|�|��d�|�|��|�|�d�|D]}|�|d�|�t	|j�q�|�|��|�|�
�dS)Nr:r�r!uÿ
r)r#rr�rAr5r@r�r�r�rlrm)r0r'�p0�p1Zp2rGrrr�test_telling{s$



zTextIOWrapperTest.test_tellingc
	Cs�t�}|d}d|}t|�d��}|�t|�t|��d}t|�d��}||}|�tjd��}|�|d�W5QRX|jtjddd��B}|�	|�}	|�|	t
|d��|�|��|�|�|��|�W5QRXdS)	NrVr
r��袈
r�rr!r�)
r(rr�r�rr#rr�r5rPrgrAr�)
r0�
chunk_sizeZprefix_sizeZu_prefix�prefixZu_suffix�suffixrGr'r�rrr�test_seeking�s
zTextIOWrapperTest.test_seekingc	Csfd}|�tjd��}|�|�W5QRX|jtjddd��"}|jd|_|��|��W5QRXdS)Ns࿿
r�rr�r!rV)r#rr�r5r%r�rA)r0rr'rrr�test_seeking_too�sz"TextIOWrapperTest.test_seeking_toocs�d�d��fdd�	}dt_z^tjD]\}}}||�q"tjD]8\}}}�t|�d}d|}|d}||||�q<W5dt_XdS)	N�rc	s���tjd�}|�|�|���jtjdd�}�|_|��}|��t|t|�d�D]�}ddt|�|fD]~}�jtjdd�}��	|�|�|d|��|�
�}��	|�|�||||��|�|���	|��||d��|��qnqXdS)zTell/seek to various points within a data stream and ensure
            that the decoded data returned by read() is consistent.r�r�r!rCrZN)r#rr�r5rmr%rPr+rr�rAr@)r�min_posr'Zdecodedr(r�rA�Z
CHUNK_SIZEr0rr�test_seek_and_tell_with_data�s 

zJTextIOWrapperTest.test_seek_and_tell.<locals>.test_seek_and_tell_with_datarCrV�.)r)r�r�r�r�r)r0rTr��_�offsetrMrRrrSrr��s
z$TextIOWrapperTest.test_seek_and_tellcCs�|jtjddd�}|�d�|��|jtjddd�}|�|��d�|��}|�|��d�|��}|�|�|�|��d�|�|��|�|��dS)Nr��euc_jpr!u
AB
うえ
rzAB
uうえ
)	r#rr�r5rmr�r�rAr@)r0r'rHrIrrr�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æ̀�æùruæ̀̀)	r#rr�r5rAr@rmr�r�)r0r'rHrrr�test_seek_with_encoder_state�s



z.TextIOWrapperTest.test_seek_with_encoder_statecCs�d}d}|D]�}|��}|j||d�}|�|�|�|�|�d�|�|��|d�|�d�|�|��|d�|�|��|d�|��qdS)NZ
1234567890)rrrrrr r!rrV)r�r�r5r@r�rPrr�)r0rr�r"rEr'rrr�test_encoded_writes�s



z%TextIOWrapperTest.test_encoded_writescCs0Gdd�d|j�}|�|��}|�t|j�dS)Nc@seZdZdd�ZdS)z5TextIOWrapperTest.test_unreadable.<locals>.UnReadablecSsdSrwrr7rrrr<sz>TextIOWrapperTest.test_unreadable.<locals>.UnReadable.readableNrvrrrr�
UnReadablesr^)r�r�r�rlrP)r0r^r*rrr�test_unreadable
sz!TextIOWrapperTest.test_unreadablecCs>|�|�d��}d}|�d�}|s$q.||7}q|�|d�dS)NsAA
BBrrCzAA
BB�r�r�rPr��r0r*�readsr&rrr�test_read_one_by_ones

z&TextIOWrapperTest.test_read_one_by_onecCsl|�|�d��}|�|��dddg�|�d�|�|�d�dddg�|�d�|�|�d�ddg�dS)NsAA
BB
CCzAA
zBB
ZCCrrZ)r�r�r�r�r@�r0r*rrrrs

z TextIOWrapperTest.test_readlinescCs>|�|�d��}d}|�d�}|s$q.||7}q|�|d�dS)Ns�AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
BrrQz�AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
Br`rarrr�test_read_by_chunk$s

z$TextIOWrapperTest.test_read_by_chunkcCsBdddg}|��}|�|�}|�|�|��|�|��d�dS�Nr	ZcdZefr?)r�r�r�rer�r�r0r$rEr*rrrr\/s


z!TextIOWrapperTest.test_writelinescCsFtdddg�}|��}|�|�}|�|�|��|�|��d�dSrf)rr�r�r�rer�rrgrrrr]7s

z*TextIOWrapperTest.test_writelines_userlistcCsH|�|���}|�t|jdddg�|�t|jd�|�t|jd�dS)NrCrVr�rP)r�r�r�r�r�rdrrrr_?sz'TextIOWrapperTest.test_writelines_errorcCsF|j|�|j�dd�}d}|�d�}|s*q4||7}q|�||j�dS)Nr�r!rrC)r�r�r�rPr�r�rarrr�test_issue1395_1Es

z"TextIOWrapperTest.test_issue1395_1cCsL|j|�|j�dd�}d|_d}|�d�}|s0q:||7}q |�||j�dS)Nr�r!r�r�r�r�r�r%rPr�r�rarrr�test_issue1395_2Qs

z"TextIOWrapperTest.test_issue1395_2cCsj|j|�|j�dd�}d|_|�d�}||�d�7}||��7}||��7}||��7}|�||j�dS�Nr�r!r�)r�r�r�r%rPr�r�r��r0r*rbrrr�test_issue1395_3]s
z"TextIOWrapperTest.test_issue1395_3cCsD|j|�|j�dd�}d|_|�d�}||��7}|�||j�dSrkrirlrrr�test_issue1395_4hs

z"TextIOWrapperTest.test_issue1395_4cCsX|j|�|j�dd�}d|_|�d�}|��}|�d�|�|�|�|�d�d�dS)Nr�r!r�rzBBB
)r�r�r�r%rPrAr@r�)r0r*rbr
rrr�test_issue1395_5ps


z"TextIOWrapperTest.test_issue1395_5cCs2|�|j�}|j|dd�}|�|��|���dS�Nr�r!)r�r�r�r�r=)r0r�r*rrr�test_issue2282zsz TextIOWrapperTest.test_issue2282c
Cs�tj}dD]�}|j|d|d��}|�d�|��}W5QRX|�|d��}|�|��d�|��W5QRX|j|d|d��}|�d�W5QRX|�|d��}|�|��d�|��W5QRXq
dS)	N��	utf-8-sigrrr�r!�aaar�r
�xxx�aaaxxx)rr�r#r5rAr�rPr��r0�filename�charsetr'r
rrr�test_append_bom�s
 z!TextIOWrapperTest.test_append_bomc
Cs�tj}dD]�}|j|d|d��}|�d�|��}W5QRX|j|d|d��.}|�|�|�d�|�d�|�d�W5QRX|�|d	��}|�|��d
�|��W5QRXq
dS)Nrrr�r!rtr;Zzzzr�bbbr�Zbbbzzz)	rr�r#r5rAr@r�rPr�rwrrr�
test_seek_bom�s



zTextIOWrapperTest.test_seek_bomc
Cs�tj}dD]�}|j|d|d��}|�d�W5QRX|j|d|d��(}|�d�|�d|j�|�d�W5QRX|�|d��}|�|��d	�|��W5QRXq
dS)
Nrrr�r!rtr
rrur�rv)	rr�r#r5r@r�r�rPr�)r0rxryr'rrr�test_seek_append_bom�s
z&TextIOWrapperTest.test_seek_append_bomc	CsX|�tjd��}|�|jd�W5QRX|jtjddd��}|�|jd�W5QRXdS)Nr�r�r�r)r#rr�r�rr�rrr�test_errors_property�sz&TextIOWrapperTest.test_errors_propertyc
s�t���|jtjddd��N���fdd���fdd�td�D�}t�|�j��t�	d	�W5QRXW5QRX|�tj��2���
�}td�D]}|�|�d
|�d�q�W5QRXdS)Nr�rCr�csd|}�����|�dS)N�Thread%03d
)rmr5)rF�text)�eventr'rr�run�sz1TextIOWrapperTest.test_threads_write.<locals>.runcsg|]}tj�|fd��qS)r�rr)r�rrr�s�z8TextIOWrapperTest.test_threads_write.<locals>.<listcomp>r�rr�)
r_r`r#rr�r+r"rbrcrdrPr�r)r0r%ZcontentrFr)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��dSr2)rkr�rlr�rkr*rrrE�sz>TextIOWrapperTest.test_flush_error_on_close.<locals>.bad_flushrrCcSsdSr2rrrrrrF�rMz=TextIOWrapperTest.test_flush_error_on_close.<locals>.<lambda>)r�r�r�rer�rlrmrGrkr�rHr�rr�rrN�s
z+TextIOWrapperTest.test_flush_error_on_closec	Cs�|�|j�}dd�}dd�}||_|j|dd�}||_|�t��}|��W5QRX|�|jj	d�|�
|jjt�|�|jjj	d�|�|j
�d	d
�|_dd
�|_dS)NcSstd��dSr�r�rrrrrE�sz>TextIOWrapperTest.test_close_error_on_close.<locals>.bad_flushcSstd��dSr�r�rrrrr��sz>TextIOWrapperTest.test_close_error_on_close.<locals>.bad_closer�r!r�r�cSsdSr2rrrrrrF�rMz=TextIOWrapperTest.test_close_error_on_close.<locals>.<lambda>cSsdSr2rrrrrrF�rM)r�r�rmr�rer�rlr�rhr|r�r�rHrk�r0r�rEr�r*r�rrrr��s
z+TextIOWrapperTest.test_close_error_on_closec	Cs�|�|j�}dd�}dd�}||_|j|dd�}||_|�t��}|��W5QRX|�dt|j	��|�
|j	jt�|�dt|j	j��|�|j
�d	d
�|_dd
�|_dS)NcSst�dSr2r�rrrrrE�szLTextIOWrapperTest.test_nonnormalized_close_error_on_close.<locals>.bad_flushcSst�dSr2r�rrrrr��szLTextIOWrapperTest.test_nonnormalized_close_error_on_close.<locals>.bad_closer�r!r�r�cSsdSr2rrrrrrF�rMzKTextIOWrapperTest.test_nonnormalized_close_error_on_close.<locals>.<lambda>cSsdSr2rrrrrrF�rM)r�r�rmr�rer�r�r�rgrhr�r�rHrkr�rrrr��s
z9TextIOWrapperTest.test_nonnormalized_close_error_on_closecCs@|j|�|j�dd�}|��|��|��|�t|j�dSrp)r�r�r�rmr�r�rerdrrrrO�s
z"TextIOWrapperTest.test_multi_closecCs8|�|�|j��}|�|j|j�|�|j|jd�dSr*)r�rvr�r�rzrAr@rdrrrr�
sz!TextIOWrapperTest.test_unseekablec	CsB|j|�|j�dd�}|�|j�}|�t��||_W5QRXdSrp)r�r�r�r�rr�)r0r*rErrrr�	
sz*TextIOWrapperTest.test_readonly_attributescCsZ|�dddg�}|j|ddd�}|�|�d�d�|�|��d	�|�t|�d
dg�dS)NrPr=�ghi
jkl
opq
r�r�r�r�Zabcdzefghi
zjkl
zopq
)rLr�r�rPr�r+�r0r7r*rrr�
test_rawio
s
zTextIOWrapperTest.test_rawiocCsX|�dddg�}|j|dddd�}|�d�|�d	�|�d
�|�d�|j�d�dS)
NrPr=r�r�r�T)r"rvr��1z23
4�5rMs123
45)rLr�r5r�r�r-r�rrr�test_rawio_write_through
s
�


z*TextIOWrapperTest.test_rawio_write_throughcs�gg��G��fdd�d|j�}|��}d}||t|�d�}|j|ddd�}|�d�}|�|�|���|���|�|�	�d�g�|�|d	�|���|�|�	�|d
�dS)Ncs,eZdZ��fdd�Z��fdd�Z�ZS)zBTextIOWrapperTest.test_bufio_write_through.<locals>.BufferedWritercs��d�t�j||�Sr6r�r0r|rI)rY�flush_calledrrre)
s
zHTextIOWrapperTest.test_bufio_write_through.<locals>.BufferedWriter.flushcs��d�t�j||�Sr6)r3rWr5r�)rY�write_calledrrr5,
s
zHTextIOWrapperTest.test_bufio_write_through.<locals>.BufferedWriter.write)rrrrer5r[r�r�r�rXrr�(
sr�r�rVr�T)r"r�rMr�r�)
r�r�rr�r�r5rHrGr�r)r0r�rXrr�r$r�rr�r�test_bufio_write_through$
s"
�




z*TextIOWrapperTest.test_bufio_write_throughcCs|�g�}|j|ddd�}|�d�|jdd�|�|jd�|�d�|j�d�|�d	�|�d�|j�d
�|jdd�|�|jd�|�d�|��|�d�|j�d
�|��|jdd�|�|jd�|jdd�|��|jdd�|�|jd�dS)Nr�r�r�r�T)r�rMr�Z23r�FZ45rx)	rLr�r5rr�r�r�r-rer�rrr�test_reconfigure_write_throughD
s(



z0TextIOWrapperTest.test_reconfigure_write_throughcCs`|�|�d��}|�t|jd�|�|�d��}|�t|j�|�|�d��}|�t|j�dS)Nr
rC)r�r�r�r�rPr�r�rrr�test_read_nonbytes[
sz$TextIOWrapperTest.test_read_nonbytesc	CsLt�d�}t�|dd��tjt�d�dd�}W5QRX|�t|j	d�dS)N�rot13�_is_text_encodingT�foor!Zbar)
r�r�rr�r~r�r�r�r�r5)r0r�rnrrr�test_illegal_encodere
s
z&TextIOWrapperTest.test_illegal_encodercs��fdd����}��t|jd���}��t|j���}��t|j��fdd�}|d�}��t|jd�|d�}��t|jd�|d�}��t|jd�dS)	Ncs8t�d�}d|_z�j��d�ddd�}W5d|_X|S)N�quopriTFsaaaaaar�r!)r�r�r�r�r�)r�rnr7rr�_make_illegal_wrapperp
s
�
zETextIOWrapperTest.test_illegal_decoder.<locals>._make_illegal_wrapperrCc
sTG�fdd�d���fdd�}t�d�}t�|d|����W5QR�SQRXdS)NcseZdZ�fdd�ZdS)z^TextIOWrapperTest.test_illegal_decoder.<locals>._make_very_illegal_wrapper.<locals>.BadDecodercs�Sr2rr7��getstate_ret_valrrr��
szgTextIOWrapperTest.test_illegal_decoder.<locals>._make_very_illegal_wrapper.<locals>.BadDecoder.getstateN)rrrr�rr�rr�
BadDecoder�
sr�cs��Sr2r)r�)r�rr�_get_bad_decoder�
szdTextIOWrapperTest.test_illegal_decoder.<locals>._make_very_illegal_wrapper.<locals>._get_bad_decoderr�r�)r�r�rr�)r�r�r�)r�)r�r�r�_make_very_illegal_wrapper�
s
�zJTextIOWrapperTest.test_illegal_decoder.<locals>._make_very_illegal_wrapperr:r)rCrV)r�r�rPr�)r0rnr�r)r�r0r�test_illegal_decoderm
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()
            )�iomodrI�-c)r~rrAr)r0rIr��coderrr�_check_create_at_shutdown�
s�z+TextIOWrapperTest._check_create_at_shutdowncCs>|��\}}}|r&|�|j|���n|�d|�����dS)N�ok)r�r��shutdown_errorr�r��strip�r0�rc�outr�rrr�(test_create_at_shutdown_without_encoding�
sz:TextIOWrapperTest.test_create_at_shutdown_without_encodingcCs6|jddd�\}}}|�|�|�d|�����dS)Nr�r�rr�)r�rHr�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�rc)�MemviewBytesIOr��_to_memoryviewrr,r�rPr�)r0rrnZ	bytes_valrrr�test_read_byteslike�
sz%TextIOWrapperTest.test_read_byteslikec	CsfGdd�dt�}td�D].}z|j|�dd�Wqtk
rDYqXqdd�|_|j|�dd�}dS)Nc@s$eZdZdd�Zdd�Zdd�ZdS)z,TextIOWrapperTest.test_issue22849.<locals>.FcSsdSr6rr7rrrr<�
rMz5TextIOWrapperTest.test_issue22849.<locals>.F.readablecSsdSr6rr7rrrr8�
rMz5TextIOWrapperTest.test_issue22849.<locals>.F.writablecSsdSr6rr7rrrr=�
rMz5TextIOWrapperTest.test_issue22849.<locals>.F.seekableN)rrrr<r8r=rrrr�F�
sr�r�r�r!cSsdSr*r�r�rrrrF�
rMz3TextIOWrapperTest.test_issue22849.<locals>.<lambda>)�objectr+r�rrA)r0r�r(rnrrr�test_issue22849�
s
z!TextIOWrapperTest.test_issue22849c	Cs�d�d�d�d�}|�|�}|j|ddd�}|�|��d�|�|j��|jdd�W5QRX|�|j��|jdd	�W5QRXdS)
N�abcé
r��déf
�utf8r�r�r�r!ru)r�r�r�r�r�r�rzr)r0rr7r*rrr�test_reconfigure_encoding_read�
s
z0TextIOWrapperTest.test_reconfigure_encoding_readcCsT|��}|j|ddd�}|�d�|jdd�|�d�|��|�|��d�dS)	Nr�r�r�zfoo
rsr!r�sfoo
é
)r�r�r5rrer�rr�rrr� test_reconfigure_write_fromascii�
s

z2TextIOWrapperTest.test_reconfigure_write_fromasciicCs�|��}|j|ddd�}|�d�|jdd�|�|��d�|�d�|��|�|��d	�|��}|j|d
dd�}|�d�|jdd�|�d�|��|�|��d
�dS)Nr�r�r�r�r�r!sabc�
r�s
abc�
déf
r��abc
rss	abc
déf
)r�r�r5rr�rrer�rrr�test_reconfigure_write�
s



z(TextIOWrapperTest.test_reconfigure_writecCsd|��}dd�|_d|_|j|ddd�}|�d�|jdd�|�d	�|��|�|��d
�dS)NcSsdSrwrrrrrrFrMzGTextIOWrapperTest.test_reconfigure_write_non_seekable.<locals>.<lambda>r�r�r�r�rsr!r�sabc
déf
)	r�r=r@r�r5rrer�rr�rrr�#test_reconfigure_write_non_seekables


z5TextIOWrapperTest.test_reconfigure_write_non_seekablecCs�|�|��ddd�}|jdd�|�|jd�|�|jd�|�d�|jdd�|�|jd�|�|jd�|jdd	�|�|jd�|�|jd�|�d
�|jddd�|�|jd
�|�d�|�|��d�|�|�	��
�d�dS)Nr�rr�r!�LF
r�rur�r~�CRLF
r�r�r�rzLF
CRLF
s	LF
CRLF
)r�r�rr�r"rr5r@rPr�rrdrrr�test_reconfigure_defaultss"


z+TextIOWrapperTest.test_reconfigure_defaultscCs�|�d�}|j|ddd�}|jdd�|�|��d�|�d�}|j|ddd�}|jdd�|�|��d�|�d�}|j|dd	d�}|jdd�|�|��d
�|�d�}|j|ddd�}|jd	d�|�|��d�|�d
�}|j|dd	d�}|jdd�|�|��d�|j|��dd	d�}|jdd�|�d�|jdd�|�d�|jdd�|�d�|jd	d�|�d�|jdd�|�d�dtjd}|�|���	��
d�|�dS)NsCR
EOFr�r�ruzCR
rzCR
s	CR
LF
EOFrzCR
LF
s	LF
CR
EOFzLF
CR
sCR
CRLF
EOFr�z	CR
CRLF
zlinesep
r�r�r,zLF
LF
CR
CRLF
)r�r�rr�r�r5r�r,r�rr�)r0r7r*r�rrr�test_reconfigure_newline&sB









z*TextIOWrapperTest.test_reconfigure_newlinecCsb|j|�d�dd�}|�d�|��|��|j|�d�dd�}|�d�|�d�|��dS)Nstestr�r!rCr�)r�r�rPrAr5r�rrr�test_issue25862Js


z!TextIOWrapperTest.test_issue25862N)Urrrr�r�r�r�r�r�r�r�r�rr6r7r�r]�	utf8_moder
rr�rrrrr&r+r/rr�r�rBr>rJrOrPr�rYr\r]r_rcrrer\r]r_rhrjrmrnrorqrzr|r}r�
no_tracingr�rNr�r�rOr�r�r�r�r�r�r�r�r�r�Zrequires_type_collectingr�r�r�r�r�r�r�r�r�r�r�rrrrr��	s�	

		*/

	



 
(
	

$r�cs,eZdZdZ�fdd�Z�fdd�Z�ZS)r�zOA BytesIO object whose read method returns memoryviews
       rather than bytescstt��|��Sr2)r�rWr{�r0Zlen_rXrrr{ZszMemviewBytesIO.read1cstt��|��Sr2)r�rWrPr�rXrrrP]szMemviewBytesIO.read)rrrrIr{rPr[rrrXrr�Vsr�cCs:t�d�}t|�t|�|j}|�|d|��t|�S)z6Convert bytes-object *buf* to a non-trivial memoryviewr(N)rr�itemsize�	frombytesr)rEZarr�idxrrrr�`s
r�c@s<eZdZeZdZdd�Zdd�Zdd�Zdd	�Zd
d�Z	dS)
�CTextIOWrapperTestz,RuntimeError: could not find io module statecCsb|�d�}|�|d�}|�|�}|jt|j|dd�|�t|j�|j�|j�}|�tt	|�dS)Nr�rr�ru)
r�r�r�r�r�r1rPr�rr�r�rrrr1ms

z&CTextIOWrapperTest.test_initializationc	Cs�t�dtf��Pt�tjd�}|�|�}|j|dd�}|�d�||_	t
�|�}~t��W5QRX|�
|�|�|�tjd��}|�|��d�W5QRXdS)Nrr�r�r!Z456defr�s456def)rrrr~r�r�r�r�r5r�r9r:rr;r#r�rP)r0rXr
rnr<r'rrrr=ws


z*CTextIOWrapperTest.test_garbage_collectioncCsjtd�D]T}|�|��|���}|j|dd�}|�|��|���}|j|dd�}||_||_qt��dS)Nrr�r!)r+r�rLr�Zbuddyrr)r0r(Zb1�t1Zb2�t2rrr�!test_rwpair_cleared_before_textio�sz4CTextIOWrapperTest.test_rwpair_cleared_before_textioc	Cs0|j|��dd�}|�t��
|`W5QRXdSrp)r�r�r�rr%r�rrr� test_del__CHUNK_SIZE_SystemError�sz3CTextIOWrapperTest.test_del__CHUNK_SIZE_SystemErrorc	s�d�G�fdd�d|j�}|�}|j|dd�}|j�|�d�|�d�|�g|j�|�t��|�d�d	�W5QRX|�d
g|j�|�d�|�d��|�d
dd
�g|j�dS)Nr�cseZdZ��fdd�Z�ZS)z<CTextIOWrapperTest.test_internal_buffer_size.<locals>.MockIOcst|��krt�t��|�Sr2)rr�rWr5rr)rYrLrrr5�szBCTextIOWrapperTest.test_internal_buffer_size.<locals>.MockIO.write)rrrr5r[r�rLrXr�MockIO�sr�r�r!r^r<r�rCr?Zghir;r�)rLr�r%r5r�r-r�r�)r0r�rErnrr�r�test_internal_buffer_size�s


z,CTextIOWrapperTest.test_internal_buffer_sizeN)
rrrr~r�r1r=r�r�r�rrrrr�is
r�c@seZdZeZdZdS)�PyTextIOWrapperTestz$LookupError: unknown encoding: asciiN)rrrr�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)NcsB���}���j|f|�|���|����j|f|�|�dSr2)r�r�r�r�)r
r�rIr���decoderr0rr�
_check_decode�s
zPIncrementalNewlineDecoderTest.check_newline_decoding_utf8.<locals>._check_decodes袈u袈��r����rMT)r�r�r�r'r�z
a�

z

s
as袈
rKs袈
)r��UnicodeDecodeErrorr�r�)r0r�r�rr�r�check_newline_decoding_utf8�s4



















z9IncrementalNewlineDecoderTest.check_newline_decoding_utf8csg�|dk	r*t�|������fdd�}nd���fdd�}|��jd�|d�|��jd�|d�|��jd�|d�|��jd�|d	�|��jd
�|d�|�d���d����d	}�dk	r�����|�}|���|�d	�|��jd�dS)
Ncs*��|�D]}����t|g���q
dSr2)r�r3r�r)r�r
�r��encoderr�rr�_decode_bytewise�szNIncrementalNewlineDecoderTest.check_newline_decoding.<locals>._decode_bytewisecs|D]}����|��qdSr2)r3r�)r�r&)r�r�rrr��szabc

r�z
abc)r�r�zabc
r^)rr�r�rzabc

abcabc
abcabc)r��getincrementalencoderr��newlinesr�r�r�r�)r0r�r"r�r�rr�r�check_newline_decoding�s0
z4IncrementalNewlineDecoderTest.check_newline_decodingcCspd}|D].}|ot�|��}|j|dd�}|�||�qt�d��}|j|dd�}|�|�|�t|jd�dS)N)	Nr�r rrrrrr T��	translater�r:)r��getincrementaldecoder�IncrementalNewlineDecoderr�r�r�r�r�)r0r#r@r�rrr�test_newline_decoder	s
z2IncrementalNewlineDecoderTest.test_newline_decodercs<�fdd�}�jddd�}||��jddd�}||�dS)NcsR��|jd���|�d�d���|jd���|�d�d���|jd�dS)Nuഀu਀)r�r�r�)�decr7rr�_checks
z@IncrementalNewlineDecoderTest.test_newline_bytes.<locals>._checkFr�T)r�)r0r�r�rr7r�test_newline_bytess
z0IncrementalNewlineDecoderTest.test_newline_bytescCs\dD]&}t�d��}|�||�}|�|�qt�d��}|j|dd�}|�|�d�d�dS)N)rlr�rCrVr�rr�r�z

)r�r�r�r�r�r�)r0r�r�rrr�test_translate'sz,IncrementalNewlineDecoderTest.test_translateN)rrrr�r�r�r�r�rrrrr��s
*!
r�c@seZdZdS)�CIncrementalNewlineDecoderTestNrrrrrr�1sr�c@seZdZdS)�PyIncrementalNewlineDecoderTestNrrrrrr�4sr�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-S).�
MiscIOTestcCst�tj�dSr2r�r7rrrr�<szMiscIOTest.tearDowncCs||jjD]n}t|j|d�}|�||�|dkr2qqd|��ksF|dkrZ|�t|t�|�q|�d�s|�t||j	��qdS)N)r#�	open_code�errorrzZSEEK_)
r~�__all__r~r�lowerrG�
issubclassrr�r�)r0r�rrrr�test___all__?s
zMiscIOTest.test___all__c	Csh|jtjddd�}|�|jd�|��t�dtf��|�tjd�}W5QRX|�|jtj�|�|j	jtj�|�|j	j
jtj�|�|jd�|�|j	jd�|�|j	j
jd�|��|�tjd�}|�|jd�|�|j	jd�|�|j	j
jd�|j|��dd	d
�}|�|jd�|�|j
jd�|�|j|���|�|j
j|���|��|��dS)Nr�rr�r�Ur�r:r�Fr.)r#rr�r�r�rmrr�r�r�r7r;)r0r'�grrr�test_attributesJs.zMiscIOTest.test_attributescCsNt��\}}|�tj|�|�|d�}|�|j�tjdkrJ|�|���dS)Nr
�win32)	r�r�r�rmr#r�r�rHr=)r0rr�r'rrr�test_open_pipe_with_appendfs
z%MiscIOTest.test_open_pipe_with_appendcCsddiddiddd�ddd�ddd�ddidd	iddd�ddd�d	dd�dd
iddid
dd�d
dd�ddd�fD�]�}|jtjf|�}|��|�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��r2|�t|j�t
|d��rR|�t|jtd��t
|d��rr|�t|jtd��|�t|j�|�t|j�|�t|jd�|�t|jd�|�t|j�|�t|j�|�t|jd|dk�r�dnd�|�t|jg�|�tt|�qpdS)Nr�r�r�rC�r�r�rVrrr�r:rr�r{r�r�rGr�r
rMr)r#rr�rmr�r�rer;r��__iter__r[r�rPr{r�rGr�r�r�r�r@rArHr5r�r�)r0rIr'rrr�test_io_after_closeqsZ�


�zMiscIOTest.test_io_after_closecCsXGdd�dt�}|d�}|�d|�}||_||_t�|�}~~t��|�|�|�dS)Nc@seZdZdS)z*MiscIOTest.test_blockingioerror.<locals>.CNrrrrr�C�sr�rrC)	rgr�r
r&r9r:rrr;)r0r�r&r
r<rrr�test_blockingioerror�s
zMiscIOTest.test_blockingioerrorcCsD|�|jtj�|�|jtj�|�|jtj�|�|jtj�dSr2)r�r�r^�ABCMetar�r�r�r7rrr�	test_abcs�szMiscIOTest.test_abcsc	Cs�|jtjddd��>}|�||j�|�||j�|�||j�|�||j�W5QRX|�tjd��>}|�||j�|�||j�|�||j�|�||j�W5QRX|�tjd��>}|�||j�|�||j�|�||j�|�||j�W5QRXdS�Nr�rr�r�)	r#rr�r�r�r�ZassertNotIsInstancer�r�)r0Z	abcmoduler'rrr�_check_abc_inheritance�sz!MiscIOTest._check_abc_inheritancecCs|�|�dSr2)r�r7rrr�test_abc_inheritance�szMiscIOTest.test_abc_inheritancecCs|�t�dSr2)r�r~r7rrr�test_abc_inheritance_official�sz(MiscIOTest.test_abc_inheritance_officialc	OsPt||�}t|�}|�t��}d}t��W5QRX|�|t|jj	d��dSr*)
r#r�ZassertWarnsrrrr�rg�warningr|)r0r|rIr'rrjrrr�_check_warn_on_dealloc�s
z!MiscIOTest._check_warn_on_dealloccCs2|jtjddd�|�tjd�|�tjd�dSr�)rrr�r7rrr�test_warn_on_dealloc�szMiscIOTest.test_warn_on_deallocc	s�g��fdd�}|�|�t��\}}�||f7�|j|f|�|�t��\}}�||f7�t�|��t|f|�ddi|��W5QRXdS)NcsN�D]D}zt�|�Wqtk
rF}z|jtjkr6�W5d}~XYqXqdSr2)r�rmrl�errno�EBADF)rMr��fdsrr�cleanup_fds�sz9MiscIOTest._check_warn_on_dealloc_fd.<locals>.cleanup_fdsr/F)r�r�r�rrrrr#)r0r|rIrrr�rrr�_check_warn_on_dealloc_fd�s
z$MiscIOTest._check_warn_on_dealloc_fdcCs&|jddd�|�d�|�d�dS)Nr�rr�r)r	r7rrr�test_warn_on_dealloc_fd�s
z"MiscIOTest.test_warn_on_dealloc_fdcCs�ddiddiddd�ddiddiddd�ddidd	id	dd�f	D]F}ttjd
�D]2}|jtjf|��}|�ttj||�W5QRXqRq@dS)Nr�r�r�rr�rr�r:rrC)	r+�pickle�HIGHEST_PROTOCOLr#rr�r�r��dumps)r0rI�protocolr'rrr�
test_pickling�s�zMiscIOTest.test_picklingcCs|�d�dS)Ni@��_test_nonblock_pipe_writer7rrr�test_nonblock_pipe_write_bigbufsz*MiscIOTest.test_nonblock_pipe_write_bigbufcCs|�d�dS)Nr�rr7rrr�!test_nonblock_pipe_write_smallbufsz,MiscIOTest.test_nonblock_pipe_write_smallbuf�set_blockingz(os.set_blocking() required for this testc
Csg}g}t��\}}t�|d�t�|d�|j|dd|d�}|j|dd|d�}|��||��jdD]�}z<d}	t|	dd	g�|}
|�|
�|�|
�|	d
7}	qnWqd|jk
�r.}zh|�|j	dt
j�|�|j	d|j�|dd|j�|d<|�|�
��d
}
|�|
�|�|
�W5d}~XYqdXqdz|��W�q�Wnj|jk
�r�}zH|�|j	dt
j�|�|j	d|j�|�|jd�|�|�
��W5d}~XYnX�q2|t|j
d�7}W5QRXW5QRXd�|�d�|�}}|�||�|�|j�|�|j�dS)NFr�T)r�r/r�r�)r��Ii�r��arCrVr�sBLOCKEDrM)r�r�rr#rr3r5r�r�r|r�EAGAINrRrPre�iterr�rGrk)r0r�sentZreceivedrr�ZrfZwfr#r(r�rrrrrsH



$$z$MiscIOTest._test_nonblock_pipe_writec	Cs2|�tjd��W5QRX|�t|jtjd�dS)Nr�r�)r#rr�r��FileExistsErrorr7rrr�test_create_fail?s
zMiscIOTest.test_create_failc	CsR|�tjd��}|�d�W5QRX|�tjd��}|�d|���W5QRXdS)N�xbrkr�r&r�rrr�test_create_writesEszMiscIOTest.test_create_writescCs|�t|jtjd�dS)Nzrwax+r0r7rrr�test_open_allargsLszMiscIOTest.test_open_allargsN)rrrr�r�r�r�r�r�r�r�r�rrrr	r
rrrr6Z
skipUnlessr[r�rrrrrrrrr�:s0/
�
2r�c@s0eZdZeZdd�Zdd�Zdd�Zdd�Zd	S)
�CMiscIOTestcCs6Gdd�d|jj�}|�}td�}|�t|j|�dS)Nc@seZdZddd�ZdS)z<CMiscIOTest.test_readinto_buffer_overflow.<locals>.BadReaderr�cSsddS)Nr�i@BrrOrrrrPWszACMiscIOTest.test_readinto_buffer_overflow.<locals>.BadReader.readN)r�rQrrrr�	BadReaderVsr!rV)r~r�r�r�r�rG)r0r!r�r
rrr�test_readinto_buffer_overflowTsz)CMiscIOTest.test_readinto_buffer_overflowcCs\d�t��}td|�\}}|j��}|jdkrHd�t��}|�||�n|�|�d��dS)Na�if 1:
            import sys
            import time
            import threading
            from test.support import SuppressCrashReport

            file = sys.{stream_name}

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

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

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

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

�z2CMiscIOTest.check_daemon_threads_shutdown_deadlockcCs|�d�dS)N�stdout�r&r7rrr�,test_daemon_threads_shutdown_stdout_deadlock�sz8CMiscIOTest.test_daemon_threads_shutdown_stdout_deadlockcCs|�d�dS)N�stderrr(r7rrr�,test_daemon_threads_shutdown_stderr_deadlock�sz8CMiscIOTest.test_daemon_threads_shutdown_stderr_deadlockN)rrrr~r"r&r)r+rrrrr Qs
	(r c@seZdZeZdS)�PyMiscIOTestN)rrrr�r~rrrrr,�sr,�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�|_dSr2)�signal�SIGALRM�alarm_interrupt�oldalrmr7rrrr��szSignalsTest.setUpcCst�tj|j�dSr2)r/r0r2r7rrrr��szSignalsTest.tearDowncCsdddSrBr)r0�sig�framerrrr1�szSignalsTest.alarm_interruptc
sfg���fdd�}tj|d�}d|_t��\�}d|d<|tjt|�d}z�|jj
|f|�}ttd	�r�t�tjtjg�|��t�tjtjg�n|��t�d�z|�t|j|�W5t�d
�|��X��t��d��|��|d
d�|dd�g�W5t�|�t���z|��Wn4t	k
�r^}	z|	j
t
jk�rN�W5d}	~	XYnXXdS)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�}��|�dSri)r�rPr3)r��r�read_resultsrrr��sz2SignalsTest.check_interrupted_write.<locals>._readrTFr/rCN�pthread_sigmaskrrV)r_r��daemonr�r�r�
PIPE_MAX_SIZErrmrlrrr~r#r[r/r7�	SIG_BLOCKr0r��SIG_UNBLOCK�alarmr�r�rr5r3rPr�)
r0�itemr�
fdopen_kwargsr�rnr��
large_data�wiorrr5r�check_interrupted_write�s8



$

z#SignalsTest.check_interrupted_writecCs|jddddd�dS)Nr�r�rr��rAr7rrr�!test_interrupted_write_unbuffered�sz-SignalsTest.test_interrupted_write_unbufferedcCs|jdddd�dS�Nr�r��r�rBr7rrr�test_interrupted_write_buffered�sz+SignalsTest.test_interrupted_write_bufferedcCs|jddddd�dS)N�xyr�r�r��r�r"rBr7rrr�test_interrupted_write_text�sz'SignalsTest.test_interrupted_write_textc		s���fdd�}t�tj|�t��\}}|jj|f|��z�t�d�|�t	t
f��<}td�D]}������
�q\t�|t��d�qTW5QRX|j}t|t
�r�|�t|��d�t|��W5t�d����t�|�XdS)Ncs����dddSrB)r5)r|�rr@rr�on_alarm�s
z3SignalsTest.check_reentrant_write.<locals>.on_alarmrrCr�zreentrant call)r/r0r�r�r~r#r<rmr�rr�r+r5rerPrrhr�rGrgr�)	r0rr>rKrr�rjr(r�rrJr�check_reentrant_write�s"


 

z!SignalsTest.check_reentrant_writecCs|jddd�dSrD�rLr7rrr�test_reentrant_write_buffered�sz)SignalsTest.test_reentrant_write_bufferedcCs|jdddd�dS)NrGr�r�rHrMr7rrr�test_reentrant_write_text�sz%SignalsTest.test_reentrant_write_textc	s�t��\}�d|d<�fdd�}t�tj|�z@|jj|f|�}t��d�t�d�|�	||�
d��d	�W5t�d�|��t���t�|�Xd
S)z�Check that a buffered read, when it gets interrupted (either
        returning a partial result or EINTR), properly invokes the signal
        handler and retries if the latter returned successfully.Fr/cst��d�dS)Nsbar)r�r5�r3r4�r�rr�
alarm_handlersz?SignalsTest.check_interrupted_read_retry.<locals>.alarm_handlerrr�rCr�ZfoobarN)r�r�r/r0r<rmr~r#r5r�rP)r0r�r>rrRZriorrQr�check_interrupted_read_retry�s


z(SignalsTest.check_interrupted_read_retrycCs|jdd�dd�dS)NcSs
|�d�S)Nr�)r�r�rrrrFrMzBSignalsTest.test_interrupted_read_retry_buffered.<locals>.<lambda>r�rE�rSr7rrr�$test_interrupted_read_retry_buffereds
�z0SignalsTest.test_interrupted_read_retry_bufferedcCs|jdd�dd�dS)NcSs|Sr2rr�rrrrFrMz>SignalsTest.test_interrupted_read_retry_text.<locals>.<lambda>rrErTr7rrr� test_interrupted_read_retry_texts
�z,SignalsTest.test_interrupted_read_retry_textcs\t�d��tj}t��\�}d|d<g�d�d������fdd�}tj|d��d�_�fd	d
�}�fdd��||}t�tj	|�zl|jj|f|�}t�
d�|�|�}
|�||
�|��d����|���|�|tdd��D���W5t�
d
�d�t�|�t���z|��Wn4tk
�rT}	z|	j
t
jk�rD�W5d}	~	XYnXXdS)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.�selectFr/Nc
shz<�s:����gggd�dkrt��d�}��|�qqWn&tk
rb}z|�W5d}~XYnXdS)Ng�?rr�)rWr�rPr3�
BaseException)r�r�)r�rr6rW�write_finishedrrr�-sz8SignalsTest.check_interrupted_write_retry.<locals>._readrTcst�tj��t�d�dSri)r/r0r<rP)�alarm2rr�alarm18sz9SignalsTest.check_interrupted_write_retry.<locals>.alarm1cs���dSr2)r�rP)rnrrrZ;sz9SignalsTest.check_interrupted_write_retry.<locals>.alarm2rrCcss|]}t|�VqdSr2)rrrrr�	<genexpr>Psz<SignalsTest.check_interrupted_write_retry.<locals>.<genexpr>)r�
import_moduler9r�r�r_r�r8r/r0r<rmrlrrr~r#r5r�rer�r;�sum)r0r=r>r#r�r�r[r?r@rrSr)rZr�rr6rWrnrYr�check_interrupted_write_retrysB
	





z)SignalsTest.check_interrupted_write_retrycCs|jddd�dS)Nr�r�rE�r_r7rrr�%test_interrupted_write_retry_buffered_sz1SignalsTest.test_interrupted_write_retry_bufferedcCs|jdddd�dS)Nr�r�r�rHr`r7rrr�!test_interrupted_write_retry_textbsz-SignalsTest.test_interrupted_write_retry_textN)rrrr�r�r1rArCrFrIrr�rLrNrOrSrUrVr_rarbrrrrr.�s"4
Dr.c@seZdZeZdS)�CSignalsTestN)rrrr~rrrrrcfsrcc@seZdZeZdZdZdS)�
PySignalsTestN)rrrr�r~rNrOrrrrrdisrdc
s tttttttttt	t
ttt
ttttttf}ttttttttf}tjdg}dd�|D�}dd�|D�}t��|��fdd�|D��|��fdd�|D��t j!|d<|D]Z}|j"�#d	�r�|�$�D]\}}t%|||�q�q�|j"�#d
�r�|�$�D]\}}t%|||�q�q�t&�'dd�|D��}	|	S)
Nr�cSsi|]}|tt|��qSr)r~r~�rr�rrr�
<dictcomp>�szload_tests.<locals>.<dictcomp>cSsi|]}|tt|��qSr)r~r�rerrrrf�sc3s"|]}|j�d|jfVqdS)r�N�rr�Zglobsrrr\�szload_tests.<locals>.<genexpr>c3s"|]}|j�d|jfVqdS)�PyNrgrrhrrr\�sr#r�ricSsg|]}t�|��qSr)r6Z	makeSuite)rr�rrrr�szload_tests.<locals>.<listcomp>)(r�r�r�r-r9rprqr�r�r�r�r�r�r�r�r�r r,rcrdrLrTrprhr�rvr)r^r~r��globalsr	r��OpenWrapperrr�r.�setattrr6Z	TestSuite)
r|r�ZmocksZall_membersZc_io_nsZpy_io_nsr�r�rZsuiterrhr�
load_testsrsR��
rm�__main__)urIr^rrr
r�rrr/r�Z	sysconfigr_rcr6r�r9�collectionsrr�	itertoolsrrr�rZtest.support.script_helperrrZtest.supportr	r�r~Z_pyior�r�ImportErrorrZ	StructurerZget_config_varZ_cflagsZ_config_argsr8r[r]�dev_moder�r(r)r�rJrKrLrRrSrTr\r]r^rfrgrhrnrorpr�rtrurvr}rr�r�r�ZTestCaser�r�r�r�r�r�r�r�r-r9r:rprqrrr�r�r�r�r�r�r��registerr�r�r�r�r�r�r�r�r�r�r�r r,r7r�r.rcrdrmr�mainrrrr�<module>s�
�8
	
0:.#3(0QfW+k
	Nu;V	%


F1le Man4ger