HEX
Server: Apache
System: Linux zacp120.webway.host 4.18.0-553.50.1.lve.el8.x86_64 #1 SMP Thu Apr 17 19:10:24 UTC 2025 x86_64
User: govancoz (1003)
PHP: 8.3.26
Disabled: exec,system,passthru,shell_exec,proc_close,proc_open,dl,popen,show_source,posix_kill,posix_mkfifo,posix_getpwuid,posix_setpgid,posix_setsid,posix_setuid,posix_setgid,posix_seteuid,posix_setegid,posix_uname
Upload Files
File: //proc/thread-self/root/usr/local/lib/python3.7/test/__pycache__/test_io.cpython-37.opt-2.pyc
B

��g��@s�ddlZddlZddlZddlZddlZddlZddlZddlZddlZddl	Z	ddl
Z
ddlZddlZddl
Z
ddlZddlmZmZddlmZmZddlmZddlmZmZddlmZddlZddlZddlZyddl Z Wne!k
�rdd�Z"YnXd	d�Z"Gd
d�de j#�Z$e	�%d��p,d
Z&e	�%d��p<d
Z'de&k�pNde'kZ(dd�Z)Gdd�d�Z*Gdd�de*ej+�Z,Gdd�de*ej+�Z-Gdd�de*�Z.Gdd�de.ej+�Z/Gdd�de.ej+�Z0Gdd �d e.�Z1Gd!d"�d"e1ej+�Z2Gd#d$�d$e1ej+�Z3Gd%d&�d&e.�Z4Gd'd(�d(e4ej+�Z5Gd)d*�d*e4ej+�Z6Gd+d,�d,e.�Z7Gd-d.�d.e7ej+�Z8Gd/d0�d0e7ej+�Z9Gd1d2�d2�Z:Gd3d4�d4e:ej;�Z<Gd5d6�d6e:ej;�Z=Gd7d8�d8�Z>Gd9d:�d:e>ej;�Z?Gd;d<�d<e>ej;�Z@Gd=d>�d>�ZAGd?d@�d@eAej+�ZBGdAdB�dBeAej+�ZCGdCdD�dDejD�ZEGdEdF�dFeE�ZFGdGdH�dHeE�ZGejHGdIdJ�dJejD��ZIGdKdL�dL�ZJGdMdN�dN�ZKGdOdP�dPejDeJ�ZLGdQdR�dReLeK�ZMGdSdT�dTeL�ZNGdUdV�dVejDeJ�ZOGdWdX�dXeOeK�ZPGdYdZ�dZeO�ZQGd[d\�d\ejD�ZRGd]d^�d^eR�ZSGd_d`�d`eR�ZTGdadb�dbeLeO�ZUGdcdd�ddeUeK�ZVGdedf�dfeU�ZWGdgdh�dhejX�ZYe�ZeYj[�Gdidj�djejD�Z\Gdkdl�dlejD�Z]Gdmdn�dnej;�Z^dodp�Z_Gdqdr�dre]�Z`Gdsdt�dte]�ZaGdudv�dvejD�ZbGdwdx�dxeb�ZcGdydz�dzeb�ZdGd{d|�d|ejD�ZeGd}d~�d~ee�ZfGdd��d�ee�Zge�hejid�kd��Gd�d��d�ejD��ZjGd�d��d�ej�ZkGd�d��d�ej�Zld�d��Zmend�k�r�e�o�dS)��N)�deque�UserList)�cycle�count)�support)�assert_python_ok�run_python_until_end)�FakePathcOst�dt||��S)N�b)�array�bytes)�pos�kw�r�(/usr/local/lib/python3.7/test/test_io.py�	byteslike2srcOs:t||�}t�}t�|t|��|t|��d�dd�<|S)N�B)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-sanitizerc	Cs ttddd��}|jSQRXdS)N�rzlatin-1)�encoding)�open�__file__�_CHUNK_SIZE)�frrr�_default_chunk_sizeFsr$c@s`eZdZddd�Zdd�Zdd�Zdd	�Zd
d�Zdd
�Zdd�Z	dd�Z
dd�Zddd�ZdS)�MockRawIOWithoutReadrcCs t|�|_g|_d|_d|_dS)Nr)�list�_read_stack�_write_stack�_reads�_extraneous_reads)�selfZ
read_stackrrr�__init__Ps
zMockRawIOWithoutRead.__init__cCs|j�t|��t|�S)N)r(�appendrr)r+r
rrr�writeVszMockRawIOWithoutRead.writecCsdS)NTr)r+rrr�writableZszMockRawIOWithoutRead.writablecCsdS)N�*r)r+rrr�fileno]szMockRawIOWithoutRead.filenocCsdS)NTr)r+rrr�readable`szMockRawIOWithoutRead.readablecCsdS)NTr)r+rrr�seekablecszMockRawIOWithoutRead.seekablecCsdS)Nrr)r+r
�whencerrr�seekfszMockRawIOWithoutRead.seekcCsdS)Nrr)r+rrr�telliszMockRawIOWithoutRead.tellcCs�|jd7_t|�}y|jd}Wn"tk
rF|jd7_dSX|dkr\|jd=dSt|�}t|�|kr�|jd=||d|�<|S|d|�|dd�<||d�|jd<|SdS)N�r)r)rr'�
IndexErrorr*)r+�bufZmax_lenr�nrrr�readintols$zMockRawIOWithoutRead.readintoNcCs|S)Nr)r+r
rrr�truncate�szMockRawIOWithoutRead.truncate)r)N)
rrrr,r.r/r1r2r3r5r6r;r<rrrrr%Ls
r%c@seZdZdS)�CMockRawIOWithoutReadN)rrrrrrrr=�sr=c@seZdZdS)�PyMockRawIOWithoutReadN)rrrrrrrr>�sr>c@seZdZddd�ZdS)�	MockRawIONcCs8|jd7_y|j�d�S|jd7_dSdS)Nr7r�)r)r'�popr*)r+r:rrr�read�szMockRawIO.read)N)rrrrBrrrrr?�sr?c@seZdZdS)�
CMockRawION)rrrrrrrrC�srCc@seZdZdS)�PyMockRawION)rrrrrrrrD�srDcsFeZdZ�fdd�Zd�fdd�	Zdd�Zdd	�Z�fd
d�Z�ZS)
�MisbehavedRawIOcst��|�dS)N�)�superr.)r+r
)�	__class__rrr.�szMisbehavedRawIO.writeNcst��|�dS)NrF)rGrB)r+r:)rHrrrB�szMisbehavedRawIO.readcCsdS)Ni����r)r+r
r4rrrr5�szMisbehavedRawIO.seekcCsdS)Ni8���r)r+rrrr6�szMisbehavedRawIO.tellcst��|�t|�dS)N�)rGr;r)r+r9)rHrrr;�szMisbehavedRawIO.readinto)N)	rrrr.rBr5r6r;�
__classcell__rr)rHrrE�s
rEc@seZdZdS)�CMisbehavedRawION)rrrrrrrrK�srKc@seZdZdS)�PyMisbehavedRawION)rrrrrrrrL�srLcs$eZdZ�fdd�Zdd�Z�ZS)�SlowFlushRawIOcst���t��|_dS)N)rGr,�	threading�Event�in_flush)r+)rHrrr,�s
zSlowFlushRawIO.__init__cCs|j��t�d�dS)Ng�?)rP�set�time�sleep)r+rrr�flush�s
zSlowFlushRawIO.flush)rrrr,rTrJrr)rHrrM�srMc@seZdZdS)�CSlowFlushRawION)rrrrrrrrU�srUc@seZdZdS)�PySlowFlushRawION)rrrrrrrrV�srVc@seZdZdZdd�ZdS)�CloseFailureIOrcCs|jsd|_t�dS)Nr7)�closed�OSError)r+rrr�close�szCloseFailureIO.closeN)rrrrXrZrrrrrW�srWc@seZdZdS)�CCloseFailureION)rrrrrrrr[�sr[c@seZdZdS)�PyCloseFailureION)rrrrrrrr\�sr\cs6eZdZ�fdd�Zd�fdd�	Z�fdd�Z�ZS)	�
MockFileIOcsg|_t��|�dS)N)�read_historyrGr,)r+r)rHrrr,�szMockFileIO.__init__Ncs,t��|�}|j�|dkrdnt|��|S)N)rGrBr^r-r)r+r:�res)rHrrrB�szMockFileIO.readcst��|�}|j�|�|S)N)rGr;r^r-)r+r
r_)rHrrr;�szMockFileIO.readinto)N)rrrr,rBr;rJrr)rHrr]�sr]c@seZdZdS)�CMockFileION)rrrrrrrr`�sr`c@seZdZdS)�PyMockFileION)rrrrrrrra�srac@s,eZdZdd�Zdd�Zdd�Zdd�Zd	S)
�MockUnseekableIOcCsdS)NFr)r+rrrr3�szMockUnseekableIO.seekablecGs|�d��dS)Nznot seekable)�UnsupportedOperation)r+�argsrrrr5�szMockUnseekableIO.seekcGs|�d��dS)Nznot seekable)rc)r+rdrrrr6�szMockUnseekableIO.tellcGs|�d��dS)Nznot seekable)rc)r+rdrrrr<�szMockUnseekableIO.truncateN)rrrr3r5r6r<rrrrrb�srbc@seZdZejZdS)�CMockUnseekableION)rrr�iorcrrrrre�srec@seZdZejZdS)�PyMockUnseekableION)rrr�pyiorcrrrrrg�srgc@sDeZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dS)�MockNonBlockWriterIOcCsg|_d|_dS)N)r(�
_blocker_char)r+rrrr,szMockNonBlockWriterIO.__init__cCsd�|j�}g|jdd�<|S)Nr@)�joinr()r+�srrr�pop_writtensz MockNonBlockWriterIO.pop_writtencCs
||_dS)N)rj)r+�charrrr�block_on	szMockNonBlockWriterIO.block_oncCsdS)NTr)r+rrrr2
szMockNonBlockWriterIO.readablecCsdS)NTr)r+rrrr3szMockNonBlockWriterIO.seekablecCsdS)NTr)r+rrrr/szMockNonBlockWriterIO.writablecCsvt|�}d}|jrby|�|j�}Wntk
r6Yn,X|dkrX|j�|d|��|Sd|_dS|j�|�t|�S)N���r)rrj�index�
ValueErrorr(r-r)r+r
r:rrrr.szMockNonBlockWriterIO.writeN)
rrrr,rmror2r3r/r.rrrrri�sric@seZdZejZdS)�CMockNonBlockWriterION)rrrrf�BlockingIOErrorrrrrrs*srsc@seZdZejZdS)�PyMockNonBlockWriterION)rrrrhrtrrrrru-sruc@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�dS)N)r�unlink�TESTFN)r+rrr�setUp3szIOTest.setUpcCst�tj�dS)N)rrwrx)r+rrr�tearDown6szIOTest.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.rIrsHello.�rpr7s	 world


�	s	*********�hrF�
�g)�assertEqualr.r<r6r5�	bytearray�assertRaises�	TypeError)r+r#�bufferrrr�	write_ops9s(

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)NrIshellos worlrFsd
r�shello world
r7r@�xi����r{sworld�
gsworld
)rBr�rr;rr�rr5r6r�r��	readinto1)r+r#Zbufferedrrrr�read_opsQs>



zIOTest.read_opslc	CsRy|�|�|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 supportsxxx�rpr7rFrr�)
r�r5�LARGE�
OverflowErrorrr�skipTestr6r.r<rB)r+r#rrr�large_file_opsts zIOTest.large_file_opsc
Csh|j}xBdD]:}|�tj|��"}|�||j�|�||j�WdQRXqW|jtjddd��"}|�||j�|�||j�WdQRX|jtjddd��(}|�||jd�|�||jdg�WdQRX|�tjd��(}|�||jd�|�||jdg�WdQRX|�tjd��P}|�||jd	�|�||jd
g�|�||j	d|j
�|�||j	d|j�WdQRXdS)
N)�w�wbr�r)�	buffering�rbsblahsblah
rZblahzblah
r7rp)rcr rrxr�rB�readliner.�
writelinesr5�SEEK_CUR�SEEK_END)r+�exc�mode�fprrr�test_invalid_operations�s&
zIOTest.test_invalid_operationscsz�fdd�}�fdd�}�fdd�}�fdd�}�fd	d
�}�fdd�}�fd
d�}�fdd�}|df|df|df|df|df|df|df|df�jdf�jdff
}	�x�|	D�]�\}
}��|
����|
����}d|k}
��|��|
�d|k}��|��|�t|�j��rd}n$t|�j�j	f��r,d}n
��
d�d|k�rJ|��n��t
|j�|
�rr|�d�|��n��t
|jd���t
|j�|�r�|�|�n��t
|j|�tj�d��r�|
||fk�r�w�d|k}��|��|�|�r|��|�d�n��t
|j���t
|jd�|�r@|�r@|��|�d�n��t
|j���t
|jd�WdQRXWdQRXq�WdS)Ncs"t��\}}t�|���|d�S)Nr)�os�piperZ�FileIO)rr�)r+rr�pipe_reader�s
z3IOTest.test_optional_abilities.<locals>.pipe_readercsNt��\}}��tj|�tjtj|dfd�}|����|j���	|d�S)N�d)�targetrdr�)
r�r��
addCleanuprZrN�ThreadrB�startrkr�)rr�Zthread)r+rr�pipe_writer�sz3IOTest.test_optional_abilities.<locals>.pipe_writercs������S)N)�BufferedReaderrbr)r+rr�buffered_reader�sz7IOTest.test_optional_abilities.<locals>.buffered_readercs������S)N)�BufferedWriterrbr)r+rr�buffered_writer�sz7IOTest.test_optional_abilities.<locals>.buffered_writercs������S)N)�BufferedRandom�BytesIOr)r+rr�buffered_random�sz7IOTest.test_optional_abilities.<locals>.buffered_randomcs���������S)N)�BufferedRWPairrbr)r+rr�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�BufferedIOBaser/r.r)r+rr�UnseekableReader�sr��ascii)rb�
TextIOWrapper)r�)r+rr�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�r2rBr)r+rr�UnseekableWriter�sr�r�)rbr�)r�)r+rr�text_writer�sz3IOTest.test_optional_abilities.<locals>.text_writer�fr�fwrr�Zrws�rw�3�3zUnknown base classr#r7�winrlr)r��StringIO�subTestr�r2r/�
isinstance�
TextIOBaser��	RawIOBase�failr1r�rYrBr.�sys�platform�
startswithr3r6r5r<)r+r�r�r�r�r�r�r�r��tests�testZ	abilitiesrr2r/rr3r)r+r�test_optional_abilities�sd	




zIOTest.test_optional_abilitiesc	CsVd}|�t|j|d�t|d�}t���$t�dt�|�t|j|d�WdQRXdS)Nzfoobarr�r��ignore)r�rrr r�warnings�catch_warnings�simplefilter�DeprecationWarning)r+Zfn_with_NULZbytes_fnrrr�test_open_handles_NUL_charss

z"IOTest.test_open_handles_NUL_charsc	Cs�|jtjddd��@}|�|��d�|�|��d�|�|��d�|�|�WdQRX|jtjddd��@}|�|��d�|�|��d�|�|��d�|�|�WdQRXdS)Nr�r)r�FTr�)	r rrxr�r2r/r3r�r�)r+r#rrr�test_raw_file_ioszIOTest.test_raw_file_ioc	Cs�|�tjd��@}|�|��d�|�|��d�|�|��d�|�|�WdQRX|�tjd��B}|�|��d�|�|��d�|�|��d�|�|d�WdQRXdS)Nr�FTr�)	r rrxr�r2r/r3r�r�)r+r#rrr�test_buffered_file_ioszIOTest.test_buffered_file_ioc	Cs�|�tjd��}|�d�WdQRX|�tjd��~}|�|��d�|�|�d�d�|�|�d�d�|�|�d	�d
�|�|��d�|�|�d�d�|�t|jd
�WdQRX|�tjd��}|�t|jd
�WdQRXdS)Nr�s"abc
def
xyzzy
foobar
another liner�sabc
r�sdef
rFsxy�szzy
sfoobar
sanother lineg333333@r)r rrxr.r�r�r�r�)r+r#rrr�
test_readline(szIOTest.test_readlinecCs*Gdd�d|j�}|�ttft|��dS)Nc@seZdZdd�ZdS)z+IOTest.test_readline_nonsizeable.<locals>.RcSsdS)Nr)r+rrrr�:sz4IOTest.test_readline_nonsizeable.<locals>.R.readlineN)rrrr�rrrr�R9sr�)�IOBaser�r��
StopIteration�next)r+r�rrr�test_readline_nonsizeable6sz IOTest.test_readline_nonsizeablecCs(Gdd�d|j�}|�t|�jd�dS)Nc@seZdZdd�ZdS)z'IOTest.test_next_nonsizeable.<locals>.RcSsdS)Nr)r+rrr�__next__Bsz0IOTest.test_next_nonsizeable.<locals>.R.__next__N)rrrr�rrrrr�Asr�r7)r�r�r��	readlines)r+r�rrr�test_next_nonsizeable>szIOTest.test_next_nonsizeablecCs@|��}|�|�|��}|�|d�|�|�}|�|d�dS)Nshello world
T)r�r��getvaluer�r�)r+r#rrrr�test_raw_bytes_ioFs

zIOTest.test_raw_bytes_ioc	Cs|tjdd�dkstjdkr.t�dd|j�|�tjdd��}|�|�WdQRX|�tjd��}|�|�WdQRXdS)Nr�r��darwinZ	largefilez-test requires %s bytes and a long time to runzw+br)r�r�rZrequiresr�r rxr�)r+r#rrr�test_large_file_opsNszIOTest.test_large_file_opsc
Cs�x�dD]�}d}|�tjd|��}|�d�WdQRX|�|jd�d}y(|�tjd|��}ddWdQRXWn"tk
r�|�|jd�YqX|�d�qWdS)N)rr7r�r�sxxxTr7rz1/0 didn't raise an exception)r rrxr.r�rX�ZeroDivisionErrorr�)r+�bufsizer#rrr�test_with_open[s
zIOTest.test_with_openc	Cs�|�tjd��}|�d�WdQRX|jtjddd��}|�|��d�WdQRX|�tjd��}|�|��d�WdQRX|�tjd��}|�|��d�WdQRXdS)Nr�sxxx�abr)r�r��a)r rrxr.r�r6�
assertGreater)r+r#rrr�test_append_mode_tellkszIOTest.test_append_mode_tellc
s�g�G�fdd�d|j�}t�dtf��b|tjd�}|�d�~t��|��dddg�|�tjd	��}|�|�	�d�WdQRXWdQRXdS)
Ncs:eZdZ��fdd�Z��fdd�Z��fdd�Z�ZS)z(IOTest.test_destructor.<locals>.MyFileIOcs6��d�yt�j}Wntk
r*YnX|�dS)Nr7)r-rG�__del__�AttributeError)r+r#)rH�recordrrr�xs
z0IOTest.test_destructor.<locals>.MyFileIO.__del__cs��d�t���dS)NrF)r-rGrZ)r+)rHr�rrrZ�s
z.IOTest.test_destructor.<locals>.MyFileIO.closecs��d�t���dS)Nr�)r-rGrT)r+)rHr�rrrT�s
z.IOTest.test_destructor.<locals>.MyFileIO.flush)rrrr�rZrTrJr)r�)rHr�MyFileIOwsr�rr�sxxxr7rFr�r�)
r�r�check_warnings�ResourceWarningrxr.�
gc_collectr�r rB)r+r�r#r)r�r�test_destructorus
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)Nr7rFr�)�on_del�on_close�on_flush)r+rrrr,�sz4IOTest._check_base_destructor.<locals>.MyIO.__init__cs8��|j�yt�j}Wntk
r,YnX|�dS)N)r-r�rGr�r�)r+r#)rHr�rrr��sz3IOTest._check_base_destructor.<locals>.MyIO.__del__cs��|j�t���dS)N)r-r�rGrZ)r+)rHr�rrrZ�sz1IOTest._check_base_destructor.<locals>.MyIO.closecs��|j�t���dS)N)r-r�rGrT)r+)rHr�rrrT�sz1IOTest._check_base_destructor.<locals>.MyIO.flush)rrrr,r�rZrTrJr)r�)rHr�MyIO�sr�r7rFr�)rr�r�)r+�baser�r#r)r�r�_check_base_destructor�szIOTest._check_base_destructorcCs|�|j�dS)N)r�r�)r+rrr�test_IOBase_destructor�szIOTest.test_IOBase_destructorcCs|�|j�dS)N)r�r�)r+rrr�test_RawIOBase_destructor�sz IOTest.test_RawIOBase_destructorcCs|�|j�dS)N)r�r�)r+rrr�test_BufferedIOBase_destructor�sz%IOTest.test_BufferedIOBase_destructorcCs|�|j�dS)N)r�r�)r+rrr�test_TextIOBase_destructor�sz!IOTest.test_TextIOBase_destructorc	CsR|�tjd��}|�d�WdQRX|�tjd��}|�|��d�WdQRXdS)Nr�sxxxr�)r rrxr.r�rB)r+r#rrr�test_close_flushes�szIOTest.test_close_flushescs�t�dtd���t��������fdd�}|����|��tjd��|����	���|��
��	���|����	���	���dS)N�ir�c	s2|�$��|�����|��f�WdQRXdS)N)r�r.r�)r#)r�r:r+rr�check�sz'IOTest.test_array_writes.<locals>.checkr�)r�ranger�tobytesr�r�rrxr�r?r�r�)r+r�r)r�r:r+r�test_array_writes�szIOTest.test_array_writescCs|jt|jtjddd�dS)Nr�F)�closefd)r�rrr rrx)r+rrr�test_closefd�szIOTest.test_closefdc	Cs�|�tjd��}|�d�WdQRX|�tjd��J}|j|��ddd�}|�|��d�|�d�|��|�	t
|j�WdQRX|�tjd��N}|j|��ddd�}|�|��dd�d	�|��|�	t
|jtd
��WdQRXdS)Nr�zegg
rF)r�rr�r�seggr7)
r rrxr.r1r�rBr5rZr�rrr;r�)r+r#�filerrr�test_read_closed�s
zIOTest.test_read_closedcCs|jt|jtjddd�dS)NrF)r�)r�rrr rrx)r+rrr�test_no_closefd_with_filename�sz$IOTest.test_no_closefd_with_filenamec	Csz|�tjd��}|�d�WdQRX|�tjd��>}|�|jjjd�|j|��ddd�}|�|jjjd�WdQRXdS)Nr�segg
rTF)r�)	r rrxr.r�r��rawr�r1)r+r#r�rrr�test_closefd_attr�szIOTest.test_closefd_attrc	Cs�t�dtf��8|�tjd�}|�d�||_t�|�}~t�	�WdQRX|�
|�|�|�tjd��}|�|�
�d�WdQRXdS)Nrr�sabcxxxr�)rr�r�r�rxr.r#�weakref�refr��assertIsNoner r�rB)r+r#�wrrrr�test_garbage_collection�s

zIOTest.test_garbage_collectionc	Cs�d}tj�|�s |�d�|��tjdkr4|�d�tjtj	krJ|�d�|j
|ddd��}|�t|j
�WdQRX|�
|d��}|�t|j
�WdQRX|�
|d	��}|�t|j
�WdQRXdS)
Nz	/dev/zeroz{0} does not existi���z+test can only run in a 32-bit address spacez&test requires at least 2 GiB of memoryr�r)r�r)r��path�existsr��formatr��maxsizerZreal_max_memuseZ_2Gr r�r�rB)r+Zzeror#rrr�test_unbounded_file�s


zIOTest.test_unbounded_filecsd|j||��g���fdd�}|�_|�t�j�|��j�|���|��d�dd��_dS)Ncs�jg�dd�<t��dS)N)rXrYr)rXr#rr�	bad_flushsz4IOTest.check_flush_error_on_close.<locals>.bad_flushrcSsdS)Nrrrrr�<lambda>r@z3IOTest.check_flush_error_on_close.<locals>.<lambda>)r rTr�rYrZ�
assertTruerX�assertFalse)r+rd�kwargsrr)rXr#r�check_flush_error_on_close	s
z!IOTest.check_flush_error_on_closecCs.|jtjddd�t�tjtjtjB�}|j|ddd�t�tjtjtjB�}|j|dddd�t�|�|�tjd�t�tjtjtjB�}|�|d�t�tjtjtjB�}|j|ddd�t�|�|�tjd�t�tjtjtjB�}|�|d�t�tjtjtjB�}|j|ddd�t�|�dS)Nr�r)r�F)r�r�)r�r�)rrrxr�r �O_WRONLY�O_CREATrZ)r+�fdrrr�test_flush_error_on_closes$

z IOTest.test_flush_error_on_closecCs<|jtjddd�}|��|��|��|�t|j�dS)Nr�r)r�)r rrxrZr�rrrT)r+r#rrr�test_multi_close0s
zIOTest.test_multi_closecCs�|�d�}|�|�d�d�|�|�d�d�|�|�d�d�|�|�d�d�|�|�d�d�|�|�d�d�|�|�d�d�|�|�d�d�dS)	N)sabc�dNsefgNrFsab�crsef�gr@)r%r�rB)r+�rawiorrr�test_RawIOBase_read7s
zIOTest.test_RawIOBase_readcCsD|��|��|��|��|��f}x|D]}|�t|d��q(WdS)N�__dict__)r�r�r�r�r�r�hasattr)r+r�rrrr�test_types_have_dictDs

zIOTest.test_types_have_dictc	sp|�tjd��}|�d�WdQRXt�tjtj���fdd�}|jdd|d��}|�|��d�WdQRXdS)Nr�zegg
cs�S)Nr)r	�flags)rrr�openerSsz"IOTest.test_opener.<locals>.openerznon-existentr)r")r rrxr.r��O_RDONLYr�rB)r+r#r"r)rr�test_openerOszIOTest.test_openerc	CsBdd�}|�t��}tdd|d�WdQRX|�t|j�d�dS)NcSsdS)Nrpr)�fnamer!rrr�	badopenerZsz4IOTest.test_bad_opener_negative_1.<locals>.badopenerznon-existentr)r"zopener returned -1)r�rrr r��str�	exception)r+r&�cmrrr�test_bad_opener_negative_1Xsz!IOTest.test_bad_opener_negative_1c	CsBdd�}|�t��}tdd|d�WdQRX|�t|j�d�dS)NcSsdS)N���r)r%r!rrrr&bsz8IOTest.test_bad_opener_other_negative.<locals>.badopenerznon-existentr)r"zopener returned -2)r�rrr r�r'r()r+r&r)rrr�test_bad_opener_other_negative`sz%IOTest.test_bad_opener_other_negativec
Csp|�td��Z}|�td��B}|j|��dd�}|j|��dd�|��|��|��WdQRXWdQRXdS)Nr�F)r�)r r!r�r1r,r�rZ)r+�f1�f2Zfileiorrr�test_fileio_closefdhszIOTest.test_fileio_closefdc
CsBt�|��.|�t��|jtjddd�WdQRXWdQRXdS)Nr�r)r�)r�check_no_resource_warningr�rrr rx)r+rrr�test_nonbuffered_textiotszIOTest.test_nonbuffered_textioc
CsBt�|��.|�t��|jtjddd�WdQRXWdQRXdS)Nr�Zinvalid)�newline)rr0r�rrr rx)r+rrr�test_invalid_newlineyszIOTest.test_invalid_newlinec
CsnGdd�d|j�}|�}xPdD]H}|�|��4td�}|�t||�|�d�|�t|�d�WdQRXqWdS)Nc@seZdZdd�ZeZdS)z3IOTest.test_buffered_readinto_mixin.<locals>.StreamcSsdS)Ns12345r)r+�sizerrrrB�sz8IOTest.test_buffered_readinto_mixin.<locals>.Stream.readN)rrrrB�read1rrrr�Stream�sr6)r;r�rIs12345)r�r�rr��getattrr)r+r6�stream�methodr�rrr�test_buffered_readinto_mixin~s
z#IOTest.test_buffered_readinto_mixinc
s��fdd�}|ttj��|ttj�d�����tjd��4}t|���}��t����|d�WdQRXWdQRXtd�}��t����|d�WdQRXtt�}��t����|d�WdQRX��	t
d����ttj�d�WdQRXdS)Nc	sN��|d��}|�d�WdQRX��|d��}��|��d�WdQRXdS)Nr�zegg
r)r r.r�rB)r	r#)r+rr�check_path_succeeds�sz7IOTest.test_fspath_support.<locals>.check_path_succeedszutf-8r�zread/write/append modeZrwxa)r	rrx�encoder r1r�r��FloatingPointError�assertRaisesRegexrr)r+r;r#Zbad_pathr)r+r�test_fspath_support�s zIOTest.test_fspath_supportcCs8|�d�}|�|��d�|�d�}|�|��d�dS)N)sabcrsefgsabcdefg)r%r�rB�readall)r+rrrr�test_RawIOBase_readall�s

zIOTest.test_RawIOBase_readallc
Cs�Gdd�d|j�}d}d}x�|D]�}|�|���|\}}}}|tt|���}	t|f|�}
t|	|�}|�||
�|�|�t|
�|�|�|
d|�t|��|f||}|�|
|d�|�|�t|	j	�||�WdQRXq WdS)Nc@s$eZdZdd�Zdd�Zdd�ZdS)z3IOTest.test_BufferedIOBase_readinto.<locals>.ReadercSs
||_dS)N)�avail)r+rBrrrr,�sz<IOTest.test_BufferedIOBase_readinto.<locals>.Reader.__init__cSs"|jd|�}|j|d�|_|S)N)rB)r+r4�resultrrrrB�sz8IOTest.test_BufferedIOBase_readinto.<locals>.Reader.readcSs|�t|d��S)NrI)rB�min)r+r4rrrr5�sz9IOTest.test_BufferedIOBase_readinto.<locals>.Reader.read1N)rrrr,rBr5rrrr�Reader�srE)
)r;r�rIrI)r;r�r{r{)r;rIr{rI)r;r{�r{)r;r�rr)r�r�rIrI)r�r�r{rI)r�rIr{rI)r�r{rFrI)r�r�rr�)
r�r�rr�r�r7r�rZassertSequenceEqualrB)r+rEr�ZUNUSED_BYTEr�r9rBZrequestrC�readerr�Zunusedrrr�test_BufferedIOBase_readinto�s


z#IOTest.test_BufferedIOBase_readintocCs*Gdd�d|j�}|�}|�t|j�dS)Nc@seZdZdd�Zdd�ZdS)z#IOTest.test_close_assert.<locals>.RcSsdS)Nr)r+�name�valuerrr�__setattr__�sz/IOTest.test_close_assert.<locals>.R.__setattr__cSs
t��dS)N)rY)r+rrrrT�sz)IOTest.test_close_assert.<locals>.R.flushN)rrrrLrTrrrrr��sr�)r�r�rYrZ)r+r�r#rrr�test_close_assert�szIOTest.test_close_assertN)F)3rrrryrzr�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rrrrr
rrrrr r$r*r,r/r1r3r:r?rArIrMrrrrrv1s`
!h	



	
)rvc@seZdZdd�ZdS)�CIOTestcCsLGdd�d|j�}|�|�}||_t�|�}~~t��|�|�|�dS)Nc@seZdZdd�ZdS)z*CIOTest.test_IOBase_finalize.<locals>.MyIOcSsdS)Nr)r+rrrrZ�sz0CIOTest.test_IOBase_finalize.<locals>.MyIO.closeN)rrrrZrrrrr��sr�)r�rrrrr�r)r+r�rrrrr�test_IOBase_finalize�s
zCIOTest.test_IOBase_finalizeN)rrrrOrrrrrN�srNc@seZdZdS)�PyIOTestN)rrrrrrrrP�srPc@seZdZdd�Zdd�ZdS)�APIMismatchTestcCs*tjtjtjdd�}|j|t�dd�dS)N)�__weakref__)r�z6Python RawIOBase does not have all C RawIOBase methods)�msg)r�detect_api_mismatchrhr�rfr�rQ)r+�mismatchrrr�test_RawIOBase_io_in_pyio_match�sz/APIMismatchTest.test_RawIOBase_io_in_pyio_matchcCs&t�tjtj�}|j|t�dd�dS)Nz6C RawIOBase does not have all Python RawIOBase methods)rS)rrTrfr�rhr�rQ)r+rUrrr�test_RawIOBase_pyio_in_io_matchsz/APIMismatchTest.test_RawIOBase_pyio_in_io_matchN)rrrrVrWrrrrrQ�srQc@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|�dS)N)r?�tp�assertIs�detachr�rr�repr)r+rr9rrr�test_detach
s

zCommonBufferedTests.test_detachcCs&|��}|�|�}|�d|���dS)Nr0)r?rYr�r1)r+r�bufiorrr�test_filenos
zCommonBufferedTests.test_filenocCs:|��}|�|�}|�t|jdd�|�t|jdd�dS)Nrrpr|)r?rYr�rrr5)r+rr^rrr�test_invalid_argss
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�yt�j}Wntk
r*YnX|�dS)Nr7)r-rGr�r�)r+r#)rHr�rrr�&s
zJCommonBufferedTests.test_override_destructor.<locals>.MyBufferedIO.__del__cs��d�t���dS)NrF)r-rGrZ)r+)rHr�rrrZ.s
zHCommonBufferedTests.test_override_destructor.<locals>.MyBufferedIO.closecs��d�t���dS)Nr�)r-rGrT)r+)rHr�rrrT1s
zHCommonBufferedTests.test_override_destructor.<locals>.MyBufferedIO.flush)rrrr�rZrTrJr)r�)rHr�MyBufferedIO%srar7rFr�)rYr?rr�r�)r+rYrarr^r)r�r�test_override_destructor"sz,CommonBufferedTests.test_override_destructorcs4|��}|�|���fdd�}|�|�t|�dS)Nc	s��WdQRXdS)Nrr)r^rr�_with>sz7CommonBufferedTests.test_context_manager.<locals>._with)r?rYr�rr)r+rrcr)r^r�test_context_manager:s

z(CommonBufferedTests.test_context_managerc	s�������fdd�}t�d��}��t|�WdQRX|����}|r���t|�	��d���
|�d�|���
|�d�|�dS)Ncs����jdS)N)rY�xyzzyr)rr+rrr#Jsz<CommonBufferedTests.test_error_through_destructor.<locals>.f�stderrr7zException OSError: z ignored)
rWr�captured_outputr�r�r��stripr�r�
splitlinesrr��endswith)r+r#rlr)rr+r�test_error_through_destructorFs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'>sdummyz<%s name=b'dummy'>)r?rYrr�assertRegexr\rJ)r+rr
Zclsnamerrr�	test_reprUs
zCommonBufferedTests.test_reprc	CsR|��}|�|�}t�|d|��(yt|�Wntk
rBYnXWdQRXdS)NrJ)r?rYr�	swap_attrr\�RuntimeError)r+rr
rrr�test_recursive_repr_s
z'CommonBufferedTests.test_recursive_reprcs�|���g����fdd�}|�_|����|�t�j�|��j�|��j�|���|��d�|��d�dd��_dS)Ncs�j�jg�dd�<t��dS)N)rXrYr)r
rXrrrrnsz@CommonBufferedTests.test_flush_error_on_close.<locals>.bad_flushrr7cSsdS)Nrrrrrryr@z?CommonBufferedTests.test_flush_error_on_close.<locals>.<lambda>)	r?rTrYr�rYrZrrXr)r+rr)r
rXrrris

z-CommonBufferedTests.test_flush_error_on_closec	Cs�|��}dd�}dd�}||_|�|�}||_|�t��}|��WdQRX|�|jjd�|�	|jj
t�|�|jj
jd�|�|j�dS)NcSstd��dS)NrT)rYrrrrr}sz@CommonBufferedTests.test_close_error_on_close.<locals>.bad_flushcSstd��dS)NrZ)rYrrrr�	bad_closesz@CommonBufferedTests.test_close_error_on_close.<locals>.bad_close)rZ)rT)
r?rZrYrTr�rYr�r(rd�assertIsInstance�__context__rrX)r+rrrrr
�errrrr�test_close_error_on_close{s
z-CommonBufferedTests.test_close_error_on_closec	Cs�|��}dd�}dd�}||_|�|�}||_|�t��}|��WdQRX|�dt|j��|�	|jj
t�|�dt|jj
��|�|j�dS)NcSst�dS)N)�non_existing_flushrrrrr�szNCommonBufferedTests.test_nonnormalized_close_error_on_close.<locals>.bad_flushcSst�dS)N)�non_existing_closerrrrrr�szNCommonBufferedTests.test_nonnormalized_close_error_on_close.<locals>.bad_closerxrw)
r?rZrYrTr��	NameError�assertInr'r(rsrtrrX)r+rrrrr
rurrr�'test_nonnormalized_close_error_on_close�s
z;CommonBufferedTests.test_nonnormalized_close_error_on_closecCs<|��}|�|�}|��|��|��|�t|j�dS)N)r?rYrZr�rrrT)r+rr
rrrr�s
z$CommonBufferedTests.test_multi_closecCs6|�|�d��}|�|j|j�|�|j|jd�dS)Ns
AAAAAAAAAAr)rYrbr�rcr6r5)r+r^rrr�test_unseekable�sz#CommonBufferedTests.test_unseekablec	Cs:|��}|�|�}|��}|�t��||_WdQRXdS)N)r?rYr�r�r)r+rr9�xrrr�test_readonly_attributes�s

z,CommonBufferedTests.test_readonly_attributesN)rrrr]r_r`rbrdrkrnrqrrvr{rr|r~rrrrrX
s

rXc@s(eZdZejdd��Zejdd��ZdS)�
SizeofTestcCs\d}d}|��}|j||d�}t�|�|}|��}|j||d�}|�t�|�||�dS)Nii )�buffer_size)r?rYr��	getsizeofr�)r+Zbufsize1Zbufsize2rr^r4rrr�test_sizeof�szSizeofTest.test_sizeofcCsFd}|��}|j||d�}t�|�|}|��|�t�|�|�dS)Ni)r�)r?rYr�r�rZr�)r+r�rr^r4rrr�test_buffer_freeing�szSizeofTest.test_buffer_freeingN)rrrr�cpython_onlyr�r�rrrrr�src@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)Nsabci)r��ri�rp)r?rYr,r�rBr�rr)r+rr^rrr�test_constructor�s


z#BufferedReaderTest.test_constructorcCsX|j�|j�}~|j�|j�}|�ttfd|jd�|�|���|�|�d�d�dS)Nzuninitialized|has no attributerr@)	rY�__new__r>rrr�rBr,r?r�)r+r^rrr�test_uninitialized�s

z%BufferedReaderTest.test_uninitializedcCsHx2dD]*}|�d�}|�|�}|�d|�|��qW|�t|jd�dS)N)NrF)sabcrsefgsabcdefgr+)r?rYr�rBr�rr)r+�argrr^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)N)sabcrsefg�ar7�br@rrr�rrFsefgr�r�)r?rYr�rBr5r))r+rr^rrr�
test_read1�s

zBufferedReaderTest.test_read1cCs�|�d�}|�|�}|�d|�d��|�d|���|�d|���|�d|�d��|�|jd�|�d	|���|�|jd
�dS)N)sabcrsefgr�r7sbcrsefgrpr�r@r�)r?rYr�rBr5r))r+rr^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)N)sabcrsefgrFsabscdsefr7sgfr)sabcNscb)r?rYr�r�r;)r+rr^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�)sabcsdesfghsjkl)r�rFr�sabcr7sabrsdesfghr{sfghjklr�)r?rYr�r��peekr)r�)r+r�rr^r
rrr�test_readinto1s*
z!BufferedReaderTest.test_readinto1cCs�d}d}|�|f�}|j||d�}t�dd�}|�|�}|�|t|��t|��d�}|�|t|��|�	|d|�|d|��|�	||d�dt||d���dS)N�<saaaaaaaaaaaaaaaaaaaaaaaaaa)r�r�s xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxrr�)
r?rYrr;r�rrr�
assertLessr�)r+r�rrr^r
r:�bmrrr�test_readinto_array1s
z&BufferedReaderTest.test_readinto_arraycCs�d}d}|�|f�}|j||d�}t�dd�}|�|�}|�|t|��t|��d�}|�|t|��|�	|d|�|d|��|�	||d�dt||d���dS)Nr�saaaaaaaaaaaaaaaaaaaaaaaaaa)r�r�s xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxrr�)
r?rYrr�r�rrrr�r�)r+r�rrr^r
r:r�rrr�test_readinto1_arrayFs
z'BufferedReaderTest.test_readinto1_arraycsZ�fdd�}��|���dddg���|��d�ddg���|��d�dddg�dS)Ncs��d�}��|�S)N)sabc
sd
sef)r?rY)r)r+rrr^\s
z0BufferedReaderTest.test_readlines.<locals>.bufiosabc
sd
sefrI)r�r�)r+r^r)r+r�test_readlines[sz!BufferedReaderTest.test_readlinesc	Cs�d}t|�}dddddg|dggddddg|ggdddddgdddggg}xp|D]h\}}}|�|�}|j||d	�}d}	x2|D]*}
|�|�|
�||	|	|
��|	|
7}	q|W|�|j|�qPWdS)
Ns	abcdefghir�r�r7r��rrF)r�)rr]rYr�rBr^)r+rZdlenr�r�Zbuf_read_sizesZraw_read_sizesrr^r
�nbytesrrr�test_bufferingcs

z!BufferedReaderTest.test_bufferingcCs�|�d�}|�|�}|�d|�d��|�d|�d��|�d|���|�d|�d��|�|���|�d|���|�d�}|�d	|���|�|���dS)
N)sabcrNsefgNNNsabcdr{�er7sfgr@)r�NNr�)r?rYr�rBr�rr@)r+rr^rrr�test_read_non_blockingws


z)BufferedReaderTest.test_read_non_blockingcCs*|�d�}|�|�}|�d|�d��dS)N)sabcrsefgsabcdefgi(#)r?rYr�rB)r+rr^rrr�test_read_past_eof�s

z%BufferedReaderTest.test_read_past_eofcCs(|�d�}|�|�}|�d|���dS)N)sabcrsefgsabcdefg)r?rYr�rB)r+rr^rrr�
test_read_all�s

z BufferedReaderTest.test_read_all�cpuc
s.�zd}ttd��|}t�|�tt|��}|�tjd�����	|�WdQRX|jtj|j
dd���}|�|d��g�g����fdd���fd	d
�td�D�}t�|��t
�d�WdQRX|��d
��d���}x0td�D]$}tt|g��}|�|�|�|�q�WWdQRXWdt�tj�XdS)Ni��r�r)r�r�c
shy4x.tddg�D]}��|�}|s$P��|�qWWn.tk
rb}z��|��Wdd}~XYnXdS)Nr7�)rrBr-�	Exception)r:rl�e)r^�errors�resultsrrr#�s

z*BufferedReaderTest.test_threads.<locals>.fcsg|]}tj�d��qS))r�)rNr�)�.0r})r#rr�
<listcomp>�sz3BufferedReaderTest.test_threads.<locals>.<listcomp>r�g{�G�z�?z(the following exceptions were caught: %rr@)r&r��randomZshufflerr�r rrxr.�	read_moderY�
start_threadsrRrSrrkr�rrw)r+�N�lrlr�threadsr��cr)r^r�r#r�r�test_threads�s,


$zBufferedReaderTest.test_threadscCsb|�|�d��}|�|j|j�|�|j|jd�|�d�|�|j|jd�|�|j|j�dS)Ns
AAAAAAAAAArr7)rYrbr�rcr6r5rB)r+r^rrrr|�s
z"BufferedReaderTest.test_unseekablecCs6|�d�}|�|�}|�t|jd�|�t|j�dS)N)sabcrsefgr)rErYr�rYr5r6)r+rr^rrr�test_misbehaved_io�s

z%BufferedReaderTest.test_misbehaved_ioc	Cs�d}x�d|d||d|dfD]�}|�d|g�}|�||�}|�|�|�d|�|�|jdd�||j��|�d|ddg�}|�||�}|�|�|�d|�|�|jdd�||j��q WdS)Nr�rFr7r�rzfailed for {}: {} != 0)r?rYr�rBr*r)r+r�r:rr^rrr�test_no_extraneous_read�s 

z*BufferedReaderTest.test_no_extraneous_readcCsDt�t�d��}|�d�|��|�t|j�|�t|jd�dS)Ns12r7)	rfr�r�rBrZr�rrr�r5)r+r
rrr�test_read_on_closed�s

z&BufferedReaderTest.test_read_on_closedN)rrrr�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�requires_resourcer�r|r�r�r�rrrrr��s(
(r�c@sFeZdZejZe�ed�dd��Z	dd�Z
dd�Zdd	�Zd
d�Z
dS)
�CBufferedReaderTestzGMSan defaults to crashing instead of returning NULL for malloc failure.cCsDt�|�tjdkr@|��}|�|�}|�ttt	f|j
|tj�dS)Ni���)r�r�r�rr?rYr�r��MemoryErrorrrr,)r+rr^rrrr��s


z$CBufferedReaderTest.test_constructorcCs�|�dg�}|�|�}|jt|j|dd�|�t|j�|jt|j|dd�|�t|j�|jt|j|dd�|�t|j�dS)Nsabcr)r�i�rp)r?rYr�rrr,rB)r+rr^rrr�test_initialization�s
z'CBufferedReaderTest.test_initializationcCs(|�d�}|�|�}|�t|jd�dS)N)sabcrsefgr�)rErYr�rYrB)r+rr^rrr�test_misbehaved_io_read�s

z+CBufferedReaderTest.test_misbehaved_io_readc	Csn|�tjtj�t�dtf��8|�tjd�}|�|�}||_t	�
|�}~t��WdQRX|�|�|�dS)Nrzw+b)
r�rrwrxr�r�r�rYr#rrr�r)r+rr#rrrrrs

z+CBufferedReaderTest.test_garbage_collectionc	Cs0|�td��|�t��ddd�WdQRXdS)Nr�i)r>r�rYrfr�)r+rrr�test_args_errorsz#CBufferedReaderTest.test_args_errorN)rrrrfr�rY�unittest�skipIf�MEMORY_SANITIZERr�r�r�rr�rrrrr��s

r�c@seZdZejZdS)�PyBufferedReaderTestN)rrrrhr�rYrrrrr�sr�c@s�eZdZdZdd�Zdd�Zdd�Zdd	�Zd
d�Zdd
�Z	dd�Z
dd�Zdd�Zdd�Z
dd�Zdd�Zdd�Zdd�Zdd�Zd d!�Zd"d#�Zd$d%�Zd&d'�Ze�d(�d)d*��Zd+d,�Zd-d.�Zd/d0�Zd1d2�Zd3S)4�BufferedWriterTestr�cCs�|��}|�|�}|�|�|j|dd�|j|dd�|�d|�d��|��|jt|j|dd�|jt|j|dd�|jt|j|dd�|�|�|�d|�d	��|��|�d
�|j	�d�dS)Ni)r�r�r�sabcri�rpsghir@sabcghi)
r?rYr,r�r.rTr�rrrkr()r+rr^rrrr�s


z#BufferedWriterTest.test_constructorcCsX|j�|j�}~|j�|j�}|�ttfd|jd�|�|���|�|�d�d�dS)Nzuninitialized|has no attributer@r)	rYr�r>rrr�r.r,r?r�)r+r^rrrr�/s

z%BufferedWriterTest.test_uninitializedcCsD|��}|�|�}|�d�|�|j�|��|�|jdg�dS)Nshowdy!)r?rYr.rr(r[r�)r+rr9rrr�test_detach_flush9s

z$BufferedWriterTest.test_detach_flushcCsh|��}|�|d�}|�d�|�|j�td�}|�|�d|dd�<|��|�d�|j�d�dS)Nr�sabcsdefs***r@sabcdef)	r?rYr.rr(r�rTr�rk)r+�writerr^r�rrr�
test_writeAs

zBufferedWriterTest.test_writecCsr|��}|�|d�}d}x.tdt|�d�D]}|�|||d��q*Wd�|j�}|�|�|dd��|�dS)Nr�sabcdefghijklmnoprr�r@i����)	r?rYr�rr.rkr(rr�)r+r�r^�contentsr:Zflushedrrr�test_write_overflowMsz&BufferedWriterTest.test_write_overflowc	Cs�ttd��d}d}|��}|�|d�}dd�}|�}xT|t|�kr�tt|�t|�|�}|�|�||||��|�||�||7}q8W|�	�|�|d�
|j��dS)Nr�i�rr~css.x(td�D]}xtd�D]
}|VqWq
WdS)Nr7�)rr�)r4r�rrr�	gen_sizes_sz2BufferedWriterTest.check_writes.<locals>.gen_sizesr@)rr�r?rYrrDr�r�r.rTrkr()	r+Zintermediate_funcr�r:r�r^r��sizesr4rrr�check_writesXszBufferedWriterTest.check_writescCs|�dd��dS)NcSsdS)Nr)r^rrrrmr@z0BufferedWriterTest.test_writes.<locals>.<lambda>)r�)r+rrr�test_writeslszBufferedWriterTest.test_writescCs|�dd��dS)NcSs|��S)N)rT)r^rrrrpr@z<BufferedWriterTest.test_writes_and_flushes.<locals>.<lambda>)r�)r+rrr�test_writes_and_flushesosz*BufferedWriterTest.test_writes_and_flushescCs(dd�}|�|�dd�}|�|�dS)NcSs8|��}|�|dd�|�|dd�|�|d�dS)Nr7r)r6r5)r^r
rrr�_seekabsssz:BufferedWriterTest.test_writes_and_seeks.<locals>._seekabscSs4|�dd�}|�dd�|�dd�|�|d�dS)Nrr7rp)r5)r^r
rrr�_seekrelysz:BufferedWriterTest.test_writes_and_seeks.<locals>._seekrel)r�)r+r�r�rrr�test_writes_and_seeksrs
z(BufferedWriterTest.test_writes_and_seekscCs|�dd��dS)NcSs|�|���S)N)r<r6)r^rrrr�r@z>BufferedWriterTest.test_writes_and_truncates.<locals>.<lambda>)r�)r+rrr�test_writes_and_truncates�sz,BufferedWriterTest.test_writes_and_truncatesc
Cs�|��}|�|d�}|�|�d�d�|�|�d�d�|�d�|�|�d�d�|�d�y|�d	�Wn*|jk
r�}z
|j}Wdd}~XYnX|�d
�|�|d�|�|��d�|�|�d
�d�|��}|�	|�
d�|�dS)Nr�sabcdr�sefghirI�ksjklmn�0sopqrwxyz0123456789z'BlockingIOError should have been raisedr�sabcdefghijklmnopqrwxyzs	ABCDEFGHIr|s	01234567A)rirYr�r.rort�characters_writtenr�rmrr�)r+rr^r��writtenrlrrr�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�sabcdefr{rsXYrFsXYcdefs123456sXYcdef123456)	rfr�rYr�r.r6r5r�rT)r+rr^rrr�test_write_and_rewind�sz(BufferedWriterTest.test_write_and_rewindcCs<|��}|�|d�}|�d�|��|�d|jd�dS)Nr�sabcr)r?rYr.rTr�r()r+r�r^rrr�
test_flush�s

zBufferedWriterTest.test_flushcCsHdddg}|��}|�|d�}|�|�|��|�d�|j�d�dS)Nsabscdsefr�r@sabcdef)r?rYr�rTr�rkr()r+r�r�r^rrr�test_writelines�s

z"BufferedWriterTest.test_writelinescCsLtdddg�}|��}|�|d�}|�|�|��|�d�|j�d�dS)Nsabscdsefr�r@sabcdef)rr?rYr�rTr�rkr()r+r�r�r^rrr�test_writelines_userlist�s
z+BufferedWriterTest.test_writelines_userlistcCsN|��}|�|d�}|�t|jdddg�|�t|jd�|�t|jd�dS)Nr�r7rFr��abc)r?rYr�r�r�)r+r�r^rrr�test_writelines_error�s
z(BufferedWriterTest.test_writelines_errorcCs>|��}|�|d�}|�d�~t��|�d|jd�dS)Nr�sabcr)r?rYr.rr�r�r()r+r�r^rrrr��s
z"BufferedWriterTest.test_destructorc	Cs�|�tjtj�|jtj|jdd��>}|�|d�}|�d�|�|�	d�d�|�|�
�d�WdQRX|jtjddd��}|�|��d�WdQRXdS)	Nr)r�r�sabcdefr�r{r�sabc)r�rrwrxr �
write_moderYr.r�r<r6rB)r+rr^r#rrr�
test_truncate�s
z BufferedWriterTest.test_truncatec
Cs�|�tjtj�|�tjd��}|�dd�WdQRXdddg}xb|D]Z}|jtjd|d��>}|�d|d	�|�d	�|��|�|�	�|d
�WdQRXqHWdS)Nr��i'i i��zr+b)r�r7rF)
r�rrwrxr r.rBr<r�r6)r+r#Zbuffer_sizesr�rrr�test_truncate_after_write�s


z,BufferedWriterTest.test_truncate_after_writer�c

sZ�zDd}ttd��|}tddg�}d}t��x6|t|�krdt|�}��||||��||7}q0W~|jtj	|j
dd��t}|�|d��g����fdd	���fd
d�td�D�}t�|��t
�d
�WdQRX|��d�����WdQRX|�tj	d������}WdQRXx*td�D]}	|�|�t|	g��|��q"WWdt�tj	�XdS)Ni�r�r7r�r)r�r�c
sjy6x0y���}Wntk
r$dSX��|�qWWn.tk
rd}z��|��Wdd}~XYnXdS)N)�popleftr8r.r�r-)rlr�)r^r��queuerrr#s
z*BufferedWriterTest.test_threads.<locals>.fcsg|]}tj�d��qS))r�)rNr�)r�r})r#rrr�sz3BufferedWriterTest.test_threads.<locals>.<listcomp>r�g{�G�z�?z(the following exceptions were caught: %rr�)rr�rrrr�r-r rrxr�rYr�rRrSrrZrBr�rrw)
r+r�r�r�r:r4rr�rlr�r)r^r�r#r�rr��s4
"zBufferedWriterTest.test_threadscCsF|��}|�|d�}|�t|jd�|�t|j�|�t|jd�dS)NrIrsabcdef)rErYr�rYr5r6r.)r+rr^rrrr�s
z%BufferedWriterTest.test_misbehaved_ioc	Cs,|�t��|�|��dd�WdQRXdS)Nr�r)r�r�rYr?)r+rrr�test_max_buffer_size_removal$sz/BufferedWriterTest.test_max_buffer_size_removalcCsH|��}dd�}||_|�|�}|�d�|�t|j�|�|j�dS)NcSs
t��dS)N)rY)r
rrr�	bad_write*sz?BufferedWriterTest.test_write_error_on_close.<locals>.bad_writesspam)r?r.rYr�rYrZrrX)r+rr�r
rrr�test_write_error_on_close(s

z,BufferedWriterTest.test_write_error_on_closecCs\|��}|�|d�}tj|jd�}|��|j��|�t	|j
d�|�|j�|�
�dS)Nr�)r�sspam)rMrYrNr�rZr�rP�waitr�rrr.rrXrk)r+rr^�trrr�test_slow_close_from_thread2s
z.BufferedWriterTest.test_slow_close_from_threadN)rrrr�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rr�r�r�r�r�r�rrrrr�s2

/
r�c@s>eZdZejZe�ed�dd��Z	dd�Z
dd�Zdd	�Zd
S)�CBufferedWriterTestzGMSan defaults to crashing instead of returning NULL for malloc failure.cCsDt�|�tjdkr@|��}|�|�}|�ttt	f|j
|tj�dS)Ni���)r�r�r�rr?rYr�r�r�rrr,)r+rr^rrrr�Bs


z$CBufferedWriterTest.test_constructorcCs�|��}|�|�}|jt|j|dd�|�t|jd�|jt|j|dd�|�t|jd�|jt|j|dd�|�t|jd�dS)Nr)r�sdefi�rp)r?rYr�rrr,r.)r+rr^rrrr�Ns
z'CBufferedWriterTest.test_initializationc	Cs�|�tjtj�t�dtf��B|�tjd�}|�|�}|�d�||_	t
�|�}~t��WdQRX|�
|�|�|�tjd��}|�|��d�WdQRXdS)Nrzw+bs123xxxr�)r�rrwrxr�r�r�rYr.r}rrr�rr r�rB)r+rr#rrrrrXs


z+CBufferedWriterTest.test_garbage_collectionc	Cs0|�td��|�t��ddd�WdQRXdS)Nr�i)r>r�rYrfr�)r+rrrr�isz#CBufferedWriterTest.test_args_errorN)
rrrrfr�rYr�r�r�r�r�rr�rrrrr�?s

r�c@seZdZejZdS)�PyBufferedWriterTestN)rrrrhr�rYrrrrr�osr�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�dS)N)rYr?rrX)r+�pairrrrr�tsz#BufferedRWPairTest.test_constructorcCs�|j�|j�}~|j�|j�}|�ttfd|jd�|�ttfd|jd�|�|��|���|�	|�d�d�|�	|�d�d�dS)Nzuninitialized|has no attributerr@)
rYr�r>rrr�rBr.r,r?r�)r+r�rrrr�xs



z%BufferedRWPairTest.test_uninitializedcCs(|�|��|���}|�|j|j�dS)N)rYr?r�rcr[)r+r�rrrr]�szBufferedRWPairTest.test_detachc	Cs2|�t��|�|��|��dd�WdQRXdS)Nr�r)r�r�rYr?)r+rrr�(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>.NotReadablecSsdS)NFr)r+rrrr2�szSBufferedRWPairTest.test_constructor_with_not_readable.<locals>.NotReadable.readableN)rrrr2rrrr�NotReadable�sr�)r?r�rYrY)r+r�rrr�"test_constructor_with_not_readable�sz5BufferedRWPairTest.test_constructor_with_not_readablecCs,Gdd�dt�}|�t|j|��|��dS)Nc@seZdZdd�ZdS)zLBufferedRWPairTest.test_constructor_with_not_writeable.<locals>.NotWriteablecSsdS)NFr)r+rrrr/�szUBufferedRWPairTest.test_constructor_with_not_writeable.<locals>.NotWriteable.writableN)rrrr/rrrr�NotWriteable�sr�)r?r�rYrY)r+r�rrr�#test_constructor_with_not_writeable�sz6BufferedRWPairTest.test_constructor_with_not_writeablecCsv|�|�d�|���}|�|�d�d�|�|�d�d�|�|��d�|�|�d�|���}|�|�d�d�dS)Nsabcdefr�sabcr7rsef)rYr�r?r�rB)r+r�rrrr��szBufferedRWPairTest.test_readcsX�fdd�}��|���dddg���|���dddg���|��d�ddg�dS)Ncs����d�����S)Ns	abc
def
h)rYr�r?r)r+rrr�r@z3BufferedRWPairTest.test_readlines.<locals>.<lambda>sabc
sdef
r}rI)r�r�)r+r�r)r+rr��sz!BufferedRWPairTest.test_readlinescCs<|�|�d�|���}|�|�d�d�|�|��d�dS)Nsabcdefr�sabcsdef)rYr�r?r�r5)r+r�rrrr��szBufferedRWPairTest.test_read1c
CslxfdD]^}|�|��J|�|�d�|���}td�}|�t||�|�d�|�t|�d�WdQRXqWdS)N)r;r�sabcdefsrIsabcde)r�rYr�r?rr�r7r)r+r9r�rrrrr��s
z BufferedRWPairTest.test_readintocCsf|��}|�|��|�}|�d�|��td�}|�|�d|dd�<|��|�|jddg�dS)Nsabcsdefs***)r?rYr.rTr�r�r()r+r�r�r�rrrr��s

zBufferedRWPairTest.test_writecCsB|�|�d�|���}|�|�d��d��|�|�d�d�dS)Nsabcdefr�sabc)rYr�r?rr�r�r�rB)r+r�rrr�	test_peek�szBufferedRWPairTest.test_peekcCs&|�|��|���}|�|���dS)N)rYr?rr2)r+r�rrr�
test_readable�sz BufferedRWPairTest.test_readablecCs&|�|��|���}|�|���dS)N)rYr?rr/)r+r�rrr�test_writeable�sz!BufferedRWPairTest.test_writeablecCs&|�|��|���}|�|���dS)N)rYr?rr3)r+r�rrr�
test_seekable�sz BufferedRWPairTest.test_seekablecCs8|�|��|���}|�|j�|��|�|j�dS)N)rYr?rrXrZr)r+r�rrr�test_close_and_closed�sz(BufferedRWPairTest.test_close_and_closedc	Cs�dd�}|��}||_|��}|�||�}|�t��}|��WdQRX|�dt|j��|�|j	�|�
|j	�|�|j	�dS)NcSstdS)N)�reader_non_existingrrrr�reader_close�szIBufferedRWPairTest.test_reader_close_error_on_close.<locals>.reader_closer�)r?rZrYr�ryrzr'r(rrXr)r+r�rHr�r�rurrr� test_reader_close_error_on_close�sz3BufferedRWPairTest.test_reader_close_error_on_closec	Cs�dd�}|��}|��}||_|�||�}|�t��}|��WdQRX|�dt|j��|�|j	�|�
|j	�|�|j	�dS)NcSstdS)N)�writer_non_existingrrrr�writer_close�szIBufferedRWPairTest.test_writer_close_error_on_close.<locals>.writer_closer�)r?rZrYr�ryrzr'r(rrXr)r+r�rHr�r�rurrr� test_writer_close_error_on_close�sz3BufferedRWPairTest.test_writer_close_error_on_closec	Cs�dd�}dd�}|��}||_|��}||_|�||�}|�t��}|��WdQRX|�dt|j��|�|jj	t�|�dt|jj	��|�
|j�|�
|j�|�
|j�dS)NcSstdS)N)r�rrrrr�szPBufferedRWPairTest.test_reader_writer_close_error_on_close.<locals>.reader_closecSstdS)N)r�rrrrr�szPBufferedRWPairTest.test_reader_writer_close_error_on_close.<locals>.writer_closer�r�)r?rZrYr�ryrzr'r(rsrtrrX)r+r�r�rHr�r�rurrr�'test_reader_writer_close_error_on_closes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�|�||_dS)N)r?r,�_isatty)r+�isattyrrrr,s
zABufferedRWPairTest.test_isatty.<locals>.SelectableIsAtty.__init__cSs|jS)N)r�)r+rrrr�sz?BufferedRWPairTest.test_isatty.<locals>.SelectableIsAtty.isattyN)rrrr,r�rrrr�SelectableIsAttysr�FT)r?rYrr�r)r+r�r�rrr�test_isattyszBufferedRWPairTest.test_isattycCs*|�|��|���}t�|�}d}d}dS)N)rYr?rr)r+Zbrwrrrr�test_weakref_clearing)s
z(BufferedRWPairTest.test_weakref_clearingN)rrrr�r�r]r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rrrrr�rs*			r�c@seZdZejZdS)�CBufferedRWPairTestN)rrrrfr�rYrrrrr/src@seZdZejZdS)�PyBufferedRWPairTestN)rrrrhr�rYrrrrr2src@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),�BufferedRandomTestzrb+zwb+cCst�|�t�|�dS)N)r�r�r�)r+rrrr�:s
z#BufferedRandomTest.test_constructorcCst�|�t�|�dS)N)r�r�r�)r+rrrr�>s
z%BufferedRandomTest.test_uninitializedcCsn|�d�}|�|d�}|�d|�d��|�d�|�d�|�|j�|�d|���|�d|jd	�dS)
N)sasdfsghjkr�sasrFsdddseeesghjksdddeeer)r?rYr�rBr.rr()r+rr�rrr�test_read_and_writeBs


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	asdfghjklsasrFrsasdfr�s123fs	asdf123flr|���rIr7rFsfl�g)r�rYr�rBr6r5r.rTr�r�r�)r+rr�rrr�test_seek_and_tellMs$


z%BufferedRandomTest.test_seek_and_tellcCs�|�d�}|�|�}|�d||d��|�d�|�d||d��|�d|���|��|�d|���|�d||��|�dd�|�d	�|��|�dd�|�d	||d
��dS)Ns	abcdefghisabrFs12sefr{sghirsXYZr�)r�rYr�r.r6rTr5)r+Z	read_funcrr^rrr�check_flush_and_readds



z'BufferedRandomTest.check_flush_and_readcCs|�dd��dS)NcWs
|j|�S)N)rB)r^rdrrrrwr@z8BufferedRandomTest.test_flush_and_read.<locals>.<lambda>)r)r+rrr�test_flush_and_readvsz&BufferedRandomTest.test_flush_and_readcCsddd�}|�|�dS)NrpcSs.t|dkr|nd�}|�|�}t|d|��S)Nri')r�r;r)r^r:r
rrr�	_readintozs
z=BufferedRandomTest.test_flush_and_readinto.<locals>._readinto)rp)r)r+r	rrr�test_flush_and_readintoys
z*BufferedRandomTest.test_flush_and_readintocCsddd�}|�|�dS)NrpcSs2|�|�}|dkr|d|�}|�t|�d�|S)Nrpr7)r�r5r)r^r:r
rrr�_peek�s

z5BufferedRandomTest.test_flush_and_peek.<locals>._peek)rp)r)r+rrrr�test_flush_and_peek�s
z&BufferedRandomTest.test_flush_and_peekcCsh|�d�}|�|�}|�d�|��|�d�|��|�dd�|�d|���|�d|���dS)Ns	abcdefghis123s45rs	12345fghi)r�rYr.rTr5r�r�rB)r+rr^rrr�test_flush_and_write�s



z'BufferedRandomTest.test_flush_and_writecCst�|�t�|�dS)N)r�r�r�)r+rrrr��s
zBufferedRandomTest.test_threadscCs(dd�}|�|�dd�}|�|�dS)NcSs|�d�dS)Nr7)r�)r^rrrr�sz6BufferedRandomTest.test_writes_and_peek.<locals>._peekcSs.|��}|�dd�|�d�|�|d�dS)Nrpr7r)r6r5r�)r^r
rrrr�s
)r�)r+rrrr�test_writes_and_peek�s
z'BufferedRandomTest.test_writes_and_peekcCsdd�}|�|�dS)NcSs|�dd�|�d�dS)Nrpr7)r5rB)r^rrr�_read�sz7BufferedRandomTest.test_writes_and_reads.<locals>._read)r�)r+rrrr�test_writes_and_reads�sz(BufferedRandomTest.test_writes_and_readscCsdd�}|�|�dS)NcSs|�dd�|�d�dS)Nrpr7)r5r5)r^rrr�_read1�sz9BufferedRandomTest.test_writes_and_read1s.<locals>._read1)r�)r+rrrr�test_writes_and_read1s�sz)BufferedRandomTest.test_writes_and_read1scCsdd�}|�|�dS)NcSs|�dd�|�td��dS)Nrpr7)r5r;r�)r^rrrr�sz;BufferedRandomTest.test_writes_and_readintos.<locals>._read)r�)r+rrrr�test_writes_and_readintos�sz,BufferedRandomTest.test_writes_and_readintoscCs�x�dD]�}|�d�}|�|d�}|�|�d�d�|�|��d�|�d|�|�|��|d�|��|�|��|d�|��}|�|dd|dd|�qWdS)N)r7rIs
AAAAAAAAAAr�r7�A�Br|)r�rYr�rBr6r.rTr�)r+Zoverwrite_sizerr^rlrrr�test_write_after_readahead�s

z-BufferedRandomTest.test_write_after_readaheadc	Cs�dd�}d}x�tdt|��D]x}xrt|t|��D]`}|�|�}|�|d�}||||�|��t|�}d||<d||<|�|��|d||f�q0WqWdS)	NcSs:|�|�|�||�|�d�|�|�|�d�dS)N��)r5rBr.)r^Zpos1Zpos2rrr�mutate�s



z:BufferedRandomTest.test_write_rewind_write.<locals>.mutates�����rr�rFr7zfailed result for i=%d, j=%d)r�rr�rYrTr�r�r�)r+rr
r��jrr^�expectedrrr�test_write_rewind_write�s
z*BufferedRandomTest.test_write_rewind_writecCs^|�d�}|�|d�}|�|�d�d�|�|��d�|�|�d�d�|�|��d�dS)Ns
AAAAAAAAAAr�rFsAAsBBr�)r�rYr�rBr<r.)r+rr^rrr�!test_truncate_after_read_or_write�s
z4BufferedRandomTest.test_truncate_after_read_or_writecCst�|�t�|�dS)N)r�r�r�)r+rrrr��s
z%BufferedRandomTest.test_misbehaved_ioc
Cs:|�d���}|�|d���}|�d�|�|�d�d�|�d�|�|�d�d�|�d�td�}|�|�|�|d	�|�d
�|�|�d�d�|�	�|�|�
�d�WdQRXWdQRX|�d
��d}|�|d��L}|�|�d�d�|�d�|�|�d�d�|�	�|�|�
�d�WdQRXWdQRXdS)Nsabcdefghr��1r7r��2rr��f�4r}s1b2d3f4hsabcr�rsa2c)r�rYr.r�rBr5r�r;r�rTr�)r+rr#r9rrr�test_interleaved_read_write�s*




$
z.BufferedRandomTest.test_interleaved_read_writec
Cs�|�d���}|�|��l}|�d�|�|��d�|�d�|�|��d�|�d�|�|��d�|��|�|��d�WdQRXWdQRXdS)	Ns
ab
cdef
g
rsb
rsdef
r��
s
1b
2def
3
)r�rYr.r�r�rTr�)r+rr#rrr�test_interleaved_readline_write	s


z2BufferedRandomTest.test_interleaved_readline_writeN)rrrr�r�r�r�rrrrr
rr
r�rrrrrrrr�r"r$r|rrrrr6s.
rc@s6eZdZejZe�ed�dd��Z	dd�Z
dd�ZdS)	�CBufferedRandomTestzGMSan defaults to crashing instead of returning NULL for malloc failure.cCsDt�|�tjdkr@|��}|�|�}|�ttt	f|j
|tj�dS)Ni���)rr�r�rr?rYr�r�r�rrr,)r+rr^rrrr�	s


z$CBufferedRandomTest.test_constructorcCst�|�t�|�dS)N)r�rr�)r+rrrr*	s
z+CBufferedRandomTest.test_garbage_collectionc	Cs0|�td��|�t��ddd�WdQRXdS)Nr�i)r>r�rYrfr�)r+rrrr�.	sz#CBufferedRandomTest.test_args_errorN)rrrrfr�rYr�r�r�r�rr�rrrrr%	sr%c@seZdZejZdS)�PyBufferedRandomTestN)rrrrhr�rYrrrrr&4	sr&c@sXeZdZddd�Zdd�Zdd�Zdd	�Zd
d�Zdd
d�Zdd�Z	dZ
edd��ZdS)�StatefulIncrementalDecoder�strictcCstj�||�|��dS)N)�codecs�IncrementalDecoderr,�reset)r+r�rrrr,U	sz#StatefulIncrementalDecoder.__init__cCsdt|�S)Nz<SID %x>)�id)r+rrr�__repr__Y	sz#StatefulIncrementalDecoder.__repr__cCsd|_d|_t�|_dS)Nr7)r��or�r�)r+rrrr+\	sz StatefulIncrementalDecoder.resetcCs,|jdA|jdA}}t|j�|d|fS)Nr7r�)r�r.rr�)r+r�r.rrr�getstatea	sz#StatefulIncrementalDecoder.getstatecCs:|\}}t|�|_t|d�\}}|dA|dA|_|_dS)Nr�r7)r�r��divmodr�r.)r+�stater�rfr�r.rrr�setstatee	s
z#StatefulIncrementalDecoder.setstateFcCs�d}xl|D]d}|jdkrF|td�kr8|jrD||��7}qn|j�|�q
|j�|�t|j�|jkr
||��7}q
W|r�|jr�||��7}|S)Nrr�.)r��ordr��process_wordr-r)r+�input�final�outputr
rrr�decodek	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��cr7r.r��-r3)	r�r4rD�intr�r.r9rr�)r+r8rrrr5|	s  z'StatefulIncrementalDecoder.process_wordc	Cs6|jr2|dkr2t�d�}tjd|jdddd|d�SdS)N�test_decoderzlatin-1)rJr<r9�incrementalencoder�streamreader�streamwriter�incrementaldecoder)�codecEnabledr)�lookup�	CodecInfor<)�clsrJ�latin1rrr�lookupTestDecoder�	s
z,StatefulIncrementalDecoder.lookupTestDecoderN)r()F)
rrrr,r-r+r/r2r9r5rB�classmethodrGrrrrr'C	s

r'c@s&eZdZdddddddgZdd	�Zd
S)�StatefulIncrementalDecoderTest)sabcdFza.b.c.d.)soiabcdTzabcd.)soi...abcd...Tzabcd.)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`x.|jD]$\}}}t�}|�|�||�|�qWt�}|�|�d�d�|�|�dd�d�dS)Nsoiabcdrr@r7zabcd.)�
test_casesr'r�r9)r+r6�eofr8�drrrr=�	sz+StatefulIncrementalDecoderTest.test_decoderN)rrrrJr=rrrrrI�	s
rIc@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[�Z6ej7d\d]��Z8d^d_�Z9d`da�Z:dbdc�Z;ddde�Z<dfdg�Z=dhdi�Z>djdk�Z?dldm�Z@dndo�ZAdpdq�ZBdrds�ZCdtdu�ZDdvdw�ZEdxdy�ZFejGdzd{��ZHejGd|d}��ZId~d�ZJd�d��ZKd�d��ZLd�d��ZMd�d��ZNd�d��ZOd�d��ZPd�d��ZQd�d��ZRd�S)��TextIOWrapperTestcCs"d|_d�d�|_t�tj�dS)NsAAA
BBB
CCC
DDD
EEE
sAAA
BBB
CCC
DDD
EEE
r�)�testdatar9�
normalizedrrwrx)r+rrrry�	szTextIOWrapperTest.setUpcCst�tj�dS)N)rrwrx)r+rrrrz�	szTextIOWrapperTest.tearDowncCs�|�d�}|�|d�}|�|�}|j|ddd�|�|jd�|�|jd�|j|ddd	�|�|jd�|�|jd�|�d
|���|jt	|j|dd�|jt
|j|d
d�dS)Nsé

i�zlatin-1z
)rr2Fzutf-8T)r�line_bufferingué
r0)r2re)r�r�r�r,r�rrPr�r�r�rr)r+rr
r�rrrr��	s

z"TextIOWrapperTest.test_constructorcCsf|j�|j�}~|j�|j�}|�tt|�|�ttfd|jd�|�	|�
��|�|�d�d�dS)Nzuninitialized|has no attributerr)r�r�r�r�r\r>rrr�rBr,r?r�)r+r�rrrr��	s

z$TextIOWrapperTest.test_uninitializedc	Cs<|��}|�|�}|�td��|j|dd�WdQRXdS)Nzis not a text encoding�hex)r)r�r�r>�LookupErrorr�)r+rr
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�)rZhowdyshowdyr()r�r�r�rZr[r.rr�r�r�rrr\rr�rP�
write_through)r+rr
r�rrrr]�	s


zTextIOWrapperTest.test_detachcCs�|�d�d��}|�|�}|j|dd�}|jj}|�t|�d|�d|_|�t|�d|�d|_|�t|�d|�d	|_|�t|�d
|�|j	�
�t|�dS)NZhellozutf-8)rz'<(%s\.)?TextIOWrapper encoding='utf-8'>rlz4<(%s\.)?TextIOWrapper name='dummy' encoding='utf-8'>rz=<(%s\.)?TextIOWrapper name='dummy' mode='r' encoding='utf-8'>sdummyz><(%s\.)?TextIOWrapper name=b'dummy' mode='r' encoding='utf-8'>)r�r<r�r�rrmr\rJr�r�r[)r+rr
r��modnamerrrrn
s"









zTextIOWrapperTest.test_reprc	CsR|��}|�|�}t�|d|��(yt|�Wntk
rBYnXWdQRXdS)NrJ)r�r�rror\rp)r+rr�rrrrq
s
z%TextIOWrapperTest.test_recursive_reprcCsv|��}|�|d�}|j|ddd�}|�d�|�|��d�|�d�|�|��d�|�d	�|�|��d
�dS)Ni��
T)r2rP�Xr@zY
ZsXY
ZzA
BsXY
ZA
B)r�r�r�r.r�r�)r+rr
r�rrr�test_line_buffering&
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)Ni�rVF)r2rPzAB
Cr@T)rPsAB
CzDEF
Gs	AB
CDEF
G�Hs
AB
CDEF
GHZIJ)r�r�r�r.r�r��reconfigurerP)r+rr
r�rrr�test_reconfigure_line_buffering1
s,



z1TextIOWrapperTest.test_reconfigure_line_bufferingzutf-8 mode is enabledc	Csvttj�}zNxdD]}|tjkrtj|=qWt�d�}|��}|�|�}|�|j|�Wdtj�	�tj�
|�XdS)N)�LC_ALL�LANG�LC_CTYPEF)�dictr��environ�locale�getpreferredencodingr�r�r�r�clear�update)r+Zold_environ�keyZcurrent_locale_encodingr
r�rrr�test_default_encodingL
s





z'TextIOWrapperTest.test_default_encodingcsPddl�|��}�fdd�|_|�t|j|��fdd�|_|�t|j|�dS)Nrcs
�jdS)Nr7)ZINT_MAXr)�	_testcapirrre
r@z8TextIOWrapperTest.test_device_encoding.<locals>.<lambda>cs
�jdS)Nr7)ZUINT_MAXr)rgrrrg
r@)rgr�r1r�r�r�)r+r
r)rgr�test_device_encoding_
sz&TextIOWrapperTest.test_device_encodingcCsJ|��}|j|dd�}|�|jd�|�|�}|�|j�t�|j�dS)Nzutf-8)r)r�r�r�r�assertIsNotNoner)rC)r+r
r�rrr�
test_encodingj
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�)rr()rr�r�zabc

�replaceuabc
�
)r�r�r��UnicodeErrorrBr�)r+r
r�rrr�test_encoding_errors_readings
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�rV)rr�r2u	abcÿdef
sabcdef
rksabc?def
)r�r�r�rlr.rTr�r�)r+r
r�rrr�test_encoding_errors_writing�
s$



z.TextIOWrapperTest.test_encoding_errors_writingc	CsTdddddg}ddddddggd|gd	ddd
dggddd
ggddddggg}d}x�|D]�}td�|��|��}x�dD]�}x�tdd�D]�}x�|D]�\}}	|�|�|�|�}
|j|
||d�}|r�g}xD|�d�}
|
dkr�P|�t	|
�d�|�
|
|���q�Wnt|�}x$t
||	�D]\}}|�||��qW|�t	|�t	|	��q�Wq�WqtWqVWdS)Nzunix
z	windows
zos9
zlast
Znonlzwindows
zos9
rrVz	os9
last
z
zunix
windows
z
os9
last
nonl�
z
unix
windows
z
os9
z	last
nonl)zutf-8zlatin-1zutf-16z	utf-16-lez	utf-16-bezutf-32z	utf-32-lez	utf-32-be)FTr7r�)r2rrF)rrkr<r�r�r�r�rBr�rr-r�r&�zip)r+Zinput_linesr��	encodingsrrZdo_readsr�r2Z	exp_linesr^�textioZ	got_linesZc2Zgot_lineZexp_linerrr�
test_newlines�
s6



zTextIOWrapperTest.test_newlinesc
Cs�d}|�dd��dd�}x�d|�d�jdd�fd|�d�jdd�fd	d
ddd
dgfddd
dgfddddddgfgD]R\}}|�|�}|j|d|d�}|�|��|�|�d�|�|��d�	|��qrWdS)NsAAA
BBB
CCC
DDD
EEE
FFF
GGGs
r#�
r�T)�keependsrrVzAAA
zBBB
z
CCC
DDD
EEE
zFFF
ZGGGz
zAAA
BBB
CCC
DDD
EEE
rpz
AAA
BBB
CCC
zDDD
zEEE
z
FFF
z
GGG)rr2r)
rkr9rir�r�r�r�r5rBrk)r+rNrOr2rr9�txtrrr�test_newlines_input�
s

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

ZsAAA
BBB
CCC
X
Y

Z)rrVrpz
r�)rr2zAAA
BzBB
CCC
zX
Y
ZF)r��linesep�sorted�itemsr�r�r.rTr�rXr�)r+Ztestdictr�r2rr9rwrrr�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��|�����|�dS)N)r-r�rZ)r+)r�r�rrrZ�
sz:TextIOWrapperTest.test_destructor.<locals>.MyBytesIO.closeN)rrrrZr)r�r�rr�	MyBytesIO�
sr}r�)rr�sabc)r�r�r.rr�r�)r+r}r
r�r)r�r�rr��
s
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�yt�j}Wntk
r*YnX|�dS)Nr7)r-rGr�r�)r+r#)rHr�rrr��
s
zDTextIOWrapperTest.test_override_destructor.<locals>.MyTextIO.__del__cs��d�t���dS)NrF)r-rGrZ)r+)rHr�rrrZs
zBTextIOWrapperTest.test_override_destructor.<locals>.MyTextIO.closecs��d�t���dS)Nr�)r-rGrT)r+)rHr�rrrTs
zBTextIOWrapperTest.test_override_destructor.<locals>.MyTextIO.flush)rrrr�rZrTrJr)r�)rHr�MyTextIO�
sr~r�)rr7rFr�)r�r�rr�r�)r+r~r
r�r)r�rrb�
sz*TextIOWrapperTest.test_override_destructorc	s�������fdd�}t�d��}��t|�WdQRX|����}|r���t|�	��d���
|�d�|���
|�d�|�dS)Ncs����jdS)N)r�rer)rr+rrr#sz:TextIOWrapperTest.test_error_through_destructor.<locals>.frfr7zException OSError: z ignored)
rWrrgr�r�r�rhr�rrirr�rj)r+r#rlr)rr+rrksz/TextIOWrapperTest.test_error_through_destructorcCs��x�dD�]�}�x~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�|�||�|��qWqWdS)N)r7rFr�r�rIr�r���� �!�?�@�A)r�zlatin-1zutf-8zw+)rr�r�zr+rrFr�r7r�r�def�utf)r rrxr"r�r.rZr6rBr5r��multi_line_test)r+Z	chunksize�encr#�cookierrr�
test_basic_ios6
zTextIOWrapperTest.test_basic_iocCs�|�d�|��d}g}xbdD]Z}g}x&t|�D]}|�||t|��q2Wd�|�d}|�|��|f�|�|�q W|�d�g}	x(|��}
|��}|s�P|	�|
|f�q�W|�	|	|�dS)Nru	sÿ࿿￿)rr7rFr�r�rI�r�r�r��>r�r�r�i�rrV)
r5r<r�r-rrkr6r.r�r�)r+r#r�ZsampleZwlinesr4�charsr��lineZrlinesr
rrrr�<s(


z!TextIOWrapperTest.multi_line_testcCs�|jtjddd�}|��}|�d�|��}|�d�|��}|�d�|�|��|�|�|��d�|�|��|�|�|��d�|�|��|�|�d�x&|D]}|�|d�|�t	|j�q�W|�|��|�|�
�dS)Nzw+zutf-8)ruÿ
r)r rrxr6r.r5r�r�r�rYrZ)r+r#Zp0Zp1Zp2r�rrr�test_tellingRs$




zTextIOWrapperTest.test_tellingc
	Cs�t�}|d}d|}t|�d��}|�t|�t|��d}t|�d��}||}|�tjd��}|�|d�WdQRX|jtjddd��B}|�	|�}	|�|	t
|d��|�|��|�|�|��|�WdQRXdS)	NrFr�zutf-8u袈
r�r)rr�)
r$rr<r�rr rrxr.rBr'r6r�)
r+Z
chunk_sizeZprefix_sizeZu_prefix�prefixZu_suffix�suffixr�r#rlrrr�test_seekingfs
zTextIOWrapperTest.test_seekingc	Csfd}|�tjd��}|�|�WdQRX|jtjddd��"}|jd|_|��|��WdQRXdS)Ns࿿
r�rzutf-8)rrF)r rrxr.r"r�r6)r+rr#rrr�test_seeking_toowsz"TextIOWrapperTest.test_seeking_toocs�d�d��fdd�	}dt_zfxtjD]\}}}||�q$WxBtjD]8\}}}�t|�d}d|}|d}||||�qBWWddt_XdS)	N�rc	s���tjd�}|�|�|���jtjdd�}�|_|��}|��x�t|t|�d�D]�}x�ddt|�|gD]~}�jtjdd�}��	|�|�|d|��|�
�}��	|�|�||||��|�|���	|��||d��|��qrWqZWdS)Nr�r=)rr7rI)r rrxr.rZr"rBr�rr�r6r5)r�min_posr#Zdecodedr�rr�)�
CHUNK_SIZEr+rr�test_seek_and_tell_with_data�s 

zJTextIOWrapperTest.test_seek_and_tell.<locals>.test_seek_and_tell_with_datar7rF�.)r)r'rBrIrJr)r+r�r6�_�offsetr�r�r)r�r+rr�sz$TextIOWrapperTest.test_seek_and_tellcCs�d}d}x�|D]�}|��}|j||d�}|�|�|�|�|�d�|�|��|d�|�d�|�|��|d�|�|��|d�|��qWdS)NZ
1234567890)zutf-16z	utf-16-lez	utf-16-bezutf-32z	utf-32-lez	utf-32-be)rrrF)r�r�r.r5r�rBr�r<)r+rr�rr9r#rrr�test_encoded_writes�s




z%TextIOWrapperTest.test_encoded_writescCs0Gdd�d|j�}|�|��}|�t|j�dS)Nc@seZdZdd�ZdS)z5TextIOWrapperTest.test_unreadable.<locals>.UnReadablecSsdS)NFr)r+rrrr2�sz>TextIOWrapperTest.test_unreadable.<locals>.UnReadable.readableN)rrrr2rrrr�
UnReadable�sr�)r�r�r�rYrB)r+r�rwrrr�test_unreadable�sz!TextIOWrapperTest.test_unreadablecCsB|�|�d��}d}x|�d�}|s&P||7}qW|�|d�dS)NsAA
BBrr7zAA
BB)r�r�rBr�)r+rw�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
ZCCrrI)r�r�r�r�r5)r+rwrrrr��s

z TextIOWrapperTest.test_readlinescCsB|�|�d��}d}x|�d�}|s&P||7}qW|�|d�dS)Ns�AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
Brr�z�AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
B)r�r�rBr�)r+rwr�r�rrr�test_read_by_chunk�s
z$TextIOWrapperTest.test_read_by_chunkcCsBdddg}|��}|�|�}|�|�|��|�|��d�dS)Nr��cd�efsabcdef)r�r�r�rTr�r�)r+r�r9rwrrrr��s


z!TextIOWrapperTest.test_writelinescCsFtdddg�}|��}|�|�}|�|�|��|�|��d�dS)Nr�r�r�sabcdef)rr�r�r�rTr�r�)r+r�r9rwrrrr��s

z*TextIOWrapperTest.test_writelines_userlistcCsH|�|���}|�t|jdddg�|�t|jd�|�t|jd�dS)Nr7rFr�sabc)r�r�r�r�r�)r+rwrrrr��sz'TextIOWrapperTest.test_writelines_errorcCsJ|j|�|j�dd�}d}x|�d�}|s,P||7}qW|�||j�dS)Nr�)rrr7)r�r�rNrBr�rO)r+rwr�r�rrr�test_issue1395_1s
z"TextIOWrapperTest.test_issue1395_1cCsP|j|�|j�dd�}d|_d}x|�d�}|s2P||7}q"W|�||j�dS)Nr�)rr�r)r�r�rNr"rBr�rO)r+rwr�r�rrr�test_issue1395_2s
z"TextIOWrapperTest.test_issue1395_2cCsj|j|�|j�dd�}d|_|�d�}||�d�7}||��7}||��7}||��7}|�||j�dS)Nr�)rr�)r�r�rNr"rBr�r�rO)r+rwr�rrr�test_issue1395_3s
z"TextIOWrapperTest.test_issue1395_3cCsD|j|�|j�dd�}d|_|�d�}||��7}|�||j�dS)Nr�)rr�)r�r�rNr"rBr�rO)r+rwr�rrr�test_issue1395_4#s

z"TextIOWrapperTest.test_issue1395_4cCsX|j|�|j�dd�}d|_|�d�}|��}|�d�|�|�|�|�d�d�dS)Nr�)rr�rzBBB
)r�r�rNr"rBr6r5r�)r+rwr�r
rrr�test_issue1395_5+s


z"TextIOWrapperTest.test_issue1395_5cCs2|�|j�}|j|dd�}|�|��|���dS)Nr�)r)r�rNr�r�r3)r+r�rwrrr�test_issue22825sz TextIOWrapperTest.test_issue2282c
Cs�tj}x�dD]�}|j|d|d��}|�d�|��}WdQRX|�|d��}|�|��d�|��WdQRX|j|d|d��}|�d�WdQRX|�|d��}|�|��d�|��WdQRXqWdS)	N)z	utf-8-sigzutf-16zutf-32r�)r�aaar�r��xxx�aaaxxx)rrxr r.r6r�rBr<)r+�filename�charsetr#r
rrr�test_append_bom;s

 z!TextIOWrapperTest.test_append_bomc
Cs�tj}x�dD]�}|j|d|d��}|�d�|��}WdQRX|j|d|d��.}|�|�|�d�|�d�|�d�WdQRX|�|d	��}|�|��d
�|��WdQRXqWdS)N)z	utf-8-sigzutf-16zutf-32r�)rr�zr+ZzzzrZbbbr�Zbbbzzz)	rrxr r.r6r5r�rBr<)r+r�r�r#r
rrr�
test_seek_bomJs




zTextIOWrapperTest.test_seek_bomc
Cs�tj}x�dD]�}|j|d|d��}|�d�WdQRX|j|d|d��(}|�d�|�d|j�|�d�WdQRX|�|d��}|�|��d	�|��WdQRXqWdS)
N)z	utf-8-sigzutf-16zutf-32r�)rr�r�rr�r�r�)	rrxr r.r5r�r�rBr<)r+r�r�r#rrr�test_seek_append_bomYs

z&TextIOWrapperTest.test_seek_append_bomc	CsX|�tjd��}|�|jd�WdQRX|jtjddd��}|�|jd�WdQRXdS)Nr�r(rk)r�)r rrxr�r�)r+r#rrr�test_errors_propertyfsz&TextIOWrapperTest.test_errors_propertyc
s�t���|jtjddd��N���fdd���fdd�td�D�}t�|�j��t�	d	�WdQRXWdQRX|�tj��6���
�}x&td�D]}|�|�d
|�d�q�WWdQRXdS)Nr�r7)r�csd|}�����|�dS)NzThread%03d
)r�r.)r:�text)�eventr#rr�runqsz1TextIOWrapperTest.test_threads_write.<locals>.runcsg|]}tj�|fd��qS))r�rd)rNr�)r�r})r�rrr�usz8TextIOWrapperTest.test_threads_write.<locals>.<listcomp>r�g{�G�z�?zThread%03d
)
rNrOr rrxr�r�rQrRrSrBr�r)r+r�Zcontentr:r)r�r#r�r�test_threads_writels
z$TextIOWrapperTest.test_threads_writecs�|j|�|j�dd��g���fdd�}|�_|�t�j�|��j�|��j	j�|���|�
�d�|�
�d�dd��_dS)	Nr�)rcs �j�jjg�dd�<t��dS)N)rXr�rYr)rXrwrrr�sz>TextIOWrapperTest.test_flush_error_on_close.<locals>.bad_flushrr7cSsdS)Nrrrrrr�r@z=TextIOWrapperTest.test_flush_error_on_close.<locals>.<lambda>)r�r�rNrTr�rYrZrrXr�r)r+rr)rXrwrr~s
z+TextIOWrapperTest.test_flush_error_on_closec	Cs�|�|j�}dd�}dd�}||_|j|dd�}||_|�t��}|��WdQRX|�|jj	d�|�
|jjt�|�|jjj	d�|�|j
�dS)	NcSstd��dS)NrT)rYrrrrr�sz>TextIOWrapperTest.test_close_error_on_close.<locals>.bad_flushcSstd��dS)NrZ)rYrrrrrr�sz>TextIOWrapperTest.test_close_error_on_close.<locals>.bad_closer�)r)rZ)rT)r�rNrZr�rTr�rYr�r(rdrsrtrrX)r+r�rrrrwrurrrrv�sz+TextIOWrapperTest.test_close_error_on_closec	Cs�|�|j�}dd�}dd�}||_|j|dd�}||_|�t��}|��WdQRX|�dt|j	��|�
|j	jt�|�dt|j	j��|�|j
�dS)	NcSst�dS)N)rwrrrrr�szLTextIOWrapperTest.test_nonnormalized_close_error_on_close.<locals>.bad_flushcSst�dS)N)rxrrrrrr�szLTextIOWrapperTest.test_nonnormalized_close_error_on_close.<locals>.bad_closer�)rrxrw)r�rNrZr�rTr�ryrzr'r(rsrtrrX)r+r�rrrrwrurrrr{�sz9TextIOWrapperTest.test_nonnormalized_close_error_on_closecCs@|j|�|j�dd�}|��|��|��|�t|j�dS)Nr�)r)r�r�rNrZr�rrrT)r+rwrrrr�s
z"TextIOWrapperTest.test_multi_closecCs8|�|�|j��}|�|j|j�|�|j|jd�dS)Nr)r�rbrNr�rcr6r5)r+rwrrrr|�sz!TextIOWrapperTest.test_unseekablec	CsB|j|�|j�dd�}|�|j�}|�t��||_WdQRXdS)Nr�)r)r�r�rNr�r�r�)r+rwr9rrrr~�sz*TextIOWrapperTest.test_readonly_attributescCsZ|�dddg�}|j|ddd�}|�|�d�d�|�|��d	�|�t|�d
dg�dS)Nsabcsdefsghi
jkl
opq
r�rV)rr2r�Zabcdzefghi
zjkl
zopq
)r?r�r�rBr�r&)r+rrwrrr�
test_rawio�s
zTextIOWrapperTest.test_rawiocCsX|�dddg�}|j|dddd�}|�d�|�d	�|�d
�|�d�|j�d�dS)
Nsabcsdefsghi
jkl
opq
r�rVT)rr2rT�1z23
4�5r@s123
45)r?r�r.r�rkr()r+rrwrrr�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||�S)NT)r-rGrT)r+rdr)rH�flush_calledrrrT�s
zHTextIOWrapperTest.test_bufio_write_through.<locals>.BufferedWriter.flushcs��d�t�j||�S)NT)r-rGr.)r+rdr)rH�write_calledrrr.�s
zHTextIOWrapperTest.test_bufio_write_through.<locals>.BufferedWriter.write)rrrrTr.rJr)r�r�)rHrr��sr�r�rFr�T)rrTr@r�r)
r�r�rr�r9r.rrr�r�)r+r�rrr^rsr�r)r�r�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�rV)rr2r�T)rTr@rZ23s123FZ45s12345)	r?r�r.rZr�rTrkr(rT)r+rr�rrr�test_reconfigure_write_through�s(



z0TextIOWrapperTest.test_reconfigure_write_throughcCs`|�|�d��}|�t|jd�|�|�d��}|�t|j�|�|�d��}|�t|j�dS)Nr�r7)r�r�r�r�rBr�)r+r�rrr�test_read_nonbytes
sz$TextIOWrapperTest.test_read_nonbytesc	CsLt�d�}t�|dd��tjt�d�dd�}WdQRX|�t|j	d�dS)N�rot13�_is_text_encodingTsfoo)rZbar)
r)rCrrorfr�r�r�r�r.)r+r�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)	Ncs8t�d�}d|_z�j��d�ddd�}Wdd|_X|S)N�quopriTsaaaaaarV)r2rF)r)rCr�r�r�)r�r�)r+rr�_make_illegal_wrapper#
s
zETextIOWrapperTest.test_illegal_decoder.<locals>._make_illegal_wrapperr7c	sHG�fdd�d���fdd�}t�d�}t�|d|����SQRXdS)NcseZdZ�fdd�ZdS)z^TextIOWrapperTest.test_illegal_decoder.<locals>._make_very_illegal_wrapper.<locals>.BadDecodercs�S)Nr)r+)�getstate_ret_valrrr/9
szgTextIOWrapperTest.test_illegal_decoder.<locals>._make_very_illegal_wrapper.<locals>.BadDecoder.getstateN)rrrr/r)r�rr�
BadDecoder8
sr�cs��S)Nr)rl)r�rr�_get_bad_decoder;
szdTextIOWrapperTest.test_illegal_decoder.<locals>._make_very_illegal_wrapper.<locals>._get_bad_decoderr�rA)r)rCrro)r�r�r�)r�)r�r�r�_make_very_illegal_wrapper7
s
zJTextIOWrapperTest.test_illegal_decoder.<locals>._make_very_illegal_wrapperr0r)r7rF)r�r�rBr�)r+r�r�r)r�r+r�test_illegal_decoder 
s

z&TextIOWrapperTest.test_illegal_decodercKs |jj}dj||d�}td|�S)Na�if 1:
            import codecs
            import {iomod} as io

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

            class C:
                def __init__(self):
                    self.buf = io.BytesIO()
                def __del__(self):
                    io.TextIOWrapper(self.buf, **{kwargs})
                    print("ok")
            c = C()
            )�iomodrz-c)rfrrr)r+rr��coderrr�_check_create_at_shutdownH
sz+TextIOWrapperTest._check_create_at_shutdowncCs>|��\}}}|r&|�|j|���n|�d|�����dS)N�ok)r�rz�shutdown_errorr9r�rh)r+�rc�outrurrr�(test_create_at_shutdown_without_encoding]
sz:TextIOWrapperTest.test_create_at_shutdown_without_encodingcCs6|jddd�\}}}|�|�|�d|�����dS)Nzutf-8r()rr�r�)r�rr�r9rh)r+r�r�rurrr�%test_create_at_shutdown_with_encodingg
s
z7TextIOWrapperTest.test_create_at_shutdown_with_encodingcCs@td�}|�|d�}t|�����}|�|�d�|�d��dS)NsJust some random string
zutf-8r�)�MemviewBytesIOr��_to_memoryviewr�r�r�rBr9)r+rr�Z	bytes_valrrr�test_read_bytesliken
sz%TextIOWrapperTest.test_read_byteslikec	CsjGdd�dt�}x:td�D].}y|j|�dd�Wqtk
rFYqXqWdd�|_|j|�dd�}dS)Nc@s$eZdZdd�Zdd�Zdd�ZdS)z,TextIOWrapperTest.test_issue22849.<locals>.FcSsdS)NTr)r+rrrr2{
r@z5TextIOWrapperTest.test_issue22849.<locals>.F.readablecSsdS)NTr)r+rrrr/|
r@z5TextIOWrapperTest.test_issue22849.<locals>.F.writablecSsdS)NTr)r+rrrr3}
r@z5TextIOWrapperTest.test_issue22849.<locals>.F.seekableN)rrrr2r/r3rrrr�Fz
sr�r�zutf-8)rcSsdS)Nrr)r}rrrr�
r@z3TextIOWrapperTest.test_issue22849.<locals>.<lambda>)�objectr�r�r�r6)r+r�r�r�rrr�test_issue22849y
s

z!TextIOWrapperTest.test_issue22849c	Cs�d�d�d�d�}|�|�}|j|ddd�}|�|��d�|�|j��|jdd�WdQRX|�|j��|jdd	�WdQRXdS)
Nuabcé
rFudéf
�utf8rV)rr2zutf-8)r)r2)r<r�r�r�r�r�rcrZ)r+rrrwrrr�test_reconfigure_encoding_read�
s
z0TextIOWrapperTest.test_reconfigure_encoding_readcCsT|��}|j|ddd�}|�d�|jdd�|�d�|��|�|��d�dS)	Nr�rV)rr2zfoo
z	utf-8-sig)rué
sfoo
é
)r�r�r.rZrTr�r�)r+rrwrrr� 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)NrFrV)rr2uabcé
zutf-8)rsabc�
udéf
s
abc�
déf
r�zabc
z	utf-8-sigs	abc
déf
)r�r�r.rZr�r�rT)r+rrwrrr�test_reconfigure_write�
s



z(TextIOWrapperTest.test_reconfigure_writecCsd|��}dd�|_d|_|j|ddd�}|�d�|jdd�|�d	�|��|�|��d
�dS)NcSsdS)NFrrrrrr�
r@zGTextIOWrapperTest.test_reconfigure_write_non_seekable.<locals>.<lambda>r�rV)rr2zabc
z	utf-8-sig)rudéf
sabc
déf
)	r�r3r5r�r.rZrTr�r�)r+rrwrrr�#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�rkrV)rzLF
z
)r2r�)r�zCRLF
zutf-8)rr2r(rzLF
CRLF
s	LF
CRLF
)r�r�rZr�rr�r.r5rBr[r�)r+rwrrr�test_reconfigure_defaults�
s"


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�rV)r2zCR
rzCR
s	CR
LF
EOFrpzCR
LF
s	LF
CR
EOFzLF
CR
sCR
CRLF
EOFz
z	CR
CRLF
zlinesep
zLF
zCRLF
ryzLF
LF
CR
CRLF
)r�r�rZr�r�r.r�ryr[r�r9)r+rrwrrrr�test_reconfigure_newline�
sB









z*TextIOWrapperTest.test_reconfigure_newlinecCsb|j|�d�dd�}|�d�|��|��|j|�d�dd�}|�d�|�d�|��dS)Nstestr�)rr7r})r�r�rBr6r.)r+r�rrr�test_issue25862�
s


z!TextIOWrapperTest.test_issue25862N)Srrrryrzr�r�rSr]rnrqrXr[r�r�r�r!�	utf8_moderfrr�rhrjrmrortrxr|r�rbrkr�r�r�r�r�rr�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r��
no_tracingr�rrvr{rr|r~r�r�r�r�r�r�r�r�Zrequires_type_collectingr�r�r�r�r�r�r�r�r�r�r�rrrrrM�	s�	

	*/
	


 
(

$rMcs(eZdZ�fdd�Z�fdd�Z�ZS)r�cstt��|��S)N)r�rGr5)r+�len_)rHrrr5
szMemviewBytesIO.read1cstt��|��S)N)r�rGrB)r+r�)rHrrrBszMemviewBytesIO.read)rrrr5rBrJrr)rHrr�	sr�cCs:t�d�}t|�t|�|j}|�|d|��t|�S)Nr�)rr�itemsizeZ	frombytesr)r9Zarr�idxrrrr�s
r�c@s4eZdZeZdZdd�Zdd�Zdd�Zdd	�Zd
S)�CTextIOWrapperTestz,RuntimeError: could not find io module statecCsb|�d�}|�|d�}|�|�}|jt|j|dd�|�t|j�|j�|j�}|�tt	|�dS)Nsé

i�re)r2)
r�r�r�r�rrr,rBr�r�r\)r+rr
r�rrrr� s

z&CTextIOWrapperTest.test_initializationc	Cs�t�dtf��Pt�tjd�}|�|�}|j|dd�}|�d�||_	t
�|�}~t��WdQRX|�
|�|�|�tjd��}|�|��d�WdQRXdS)Nrr�r�)rZ456defr�s456def)rr�r�rfr�rxr�r�r.r}rrr�rr r�rB)r+rr
r�rr#rrrr*s


z*CTextIOWrapperTest.test_garbage_collectioncCsnx`td�D]T}|�|��|���}|j|dd�}|�|��|���}|j|dd�}||_||_q
Wt��dS)Ni�r�)r)r�r�r?r�Zbuddyrr�)r+r�Zb1Zt1Zb2Zt2rrr�!test_rwpair_cleared_before_textio;s
z4CTextIOWrapperTest.test_rwpair_cleared_before_textioc	Cs0|j|��dd�}|�t��
|`WdQRXdS)Nr�)r)r�r�r�r�r")r+r�rrr� test_del__CHUNK_SIZE_SystemErrorIsz3CTextIOWrapperTest.test_del__CHUNK_SIZE_SystemErrorN)	rrrrfr�r�rr�r�rrrrr�s
r�c@seZdZeZdZdS)�PyTextIOWrapperTestz$LookupError: unknown encoding: asciiN)rrrrhrfr�rrrrr�Osr�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|�|�dS)N)r/r�r9r2)r
rlrr1)�decoderr+rr�
_check_decodeXs
zPIncrementalNewlineDecoderTest.check_newline_decoding_utf8.<locals>._check_decodes袈u袈��r����r@T)r7r#rVrur�z
as

z

s
as袈
u袈
s袈
)r��UnicodeDecodeErrorr9r+)r+r�r�r)r�r+r�check_newline_decoding_utf8Vs4



















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.x(��|�D]}����t|g���qWdS)N)r<r-r9r)rlr
)r��encoderrCrr�_decode_bytewise�szNIncrementalNewlineDecoderTest.check_newline_decoding.<locals>._decode_bytewisecs"x|D]}����|��qWdS)N)r-r9)rlr�)r�rCrrr��s
zabc

rVz
abc)rVz
zabc
r�)rprVz
rzabc

abcabc
abcabc)r)�getincrementalencoderr��newlinesrkr+r<r9)r+r�rr�r6r)r�r�rCr�check_newline_decoding�s0
z4IncrementalNewlineDecoderTest.check_newline_decodingcCstd}x6|D].}|ot�|��}|j|dd�}|�||�q
Wt�d��}|j|dd�}|�|�|�t|jd�dS)N)	Nzutf-8zlatin-1zutf-16z	utf-16-lez	utf-16-bezutf-32z	utf-32-lez	utf-32-beT)�	translatezutf-8r0)r)�getincrementaldecoder�IncrementalNewlineDecoderr�r�r�r�r2)r+rrr�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�r9)�dec)r+rr�_check�s
z@IncrementalNewlineDecoderTest.test_newline_bytes.<locals>._checkF)r�T)r�)r+r�r�r)r+r�test_newline_bytes�s
z0IncrementalNewlineDecoderTest.test_newline_bytescCs`x.dD]&}t�d��}|�||�}|�|�qWt�d��}|j|dd�}|�|�d�d�dS)N)r+rpr7rFzutf-8r)r�s

z

)r)r�r�r�r�r9)r+r�r�rrr�test_translate�s
z,IncrementalNewlineDecoderTest.test_translateN)rrrr�r�r�r�r�rrrrr�Ts
*!
r�c@seZdZdS)�CIncrementalNewlineDecoderTestN)rrrrrrrr��sr�c@seZdZdS)�PyIncrementalNewlineDecoderTestN)rrrrrrrr�src@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�dS)N)rrwrx)r+rrrrz�szMiscIOTest.tearDowncCs�xz|jjD]n}t|j|d�}|�||�|dkr4q
q
d|��ksH|dkr\|�t|t�|�q
|�d�s
|�t||j	��q
WdS)Nr �errorrcZSEEK_)
rf�__all__r7ri�lowerr�
issubclassr�r�r�)r+rJrrrr�test___all__�s
zMiscIOTest.test___all__c	Csh|jtjddd�}|�|jd�|��t�dtf��|�tjd�}WdQRX|�|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�r)r�r�Ur�zw+zrb+F)r�)r rrxr�r�rZr�r�rJr�rr1)r+r#�grrr�test_attributes�s.zMiscIOTest.test_attributescCsNt��\}}|�tj|�|�|d�}|�|j�tjdkrJ|�|���dS)Nr��win32)	r�r�r�rZr r�r�rr3)r+rr�r#rrr�test_open_pipe_with_append�s
z%MiscIOTest.test_open_pipe_with_appendcCs�xddiddiddd�ddd�ddd�ddidd	iddd�ddd�d	dd�dd
iddid
dd�d
dd�ddd�gD�]�}|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��r6|�t|j�t
|d��rV|�t|jtd��t
|d��rv|�t|jtd��|�t|j�|�t|j�|�t|jd�|�t|jd�|�t|j�|�t|j�|�t|jd|dk�r�dnd�|�t|jg�|�tt|�qtWdS)Nr�r�r�r7)r�r�rFrrr�zw+zw+br�r5ir@r;r�r
r@r)r rrxrZr�rrrTr1r��__iter__rr�rBr5r@r;r�r�r�r�r5r6r<r.r�r�)r+rr#rrr�test_io_after_close	sX

zMiscIOTest.test_io_after_closecCsXGdd�dt�}|d�}|�d|�}||_||_t�|�}~~t��|�|�|�dS)Nc@seZdZdS)z*MiscIOTest.test_blockingioerror.<locals>.CN)rrrrrrr�C:srrr7)	r'rtr
r�rrrr�r)r+rr�r
rrrr�test_blockingioerror8s
zMiscIOTest.test_blockingioerrorcCsD|�|jtj�|�|jtj�|�|jtj�|�|jtj�dS)N)rsr�r��ABCMetar�r�r�)r+rrr�	test_abcsEszMiscIOTest.test_abcsc	Cs�|jtjddd��>}|�||j�|�||j�|�||j�|�||j�WdQRX|�tjd��>}|�||j�|�||j�|�||j�|�||j�WdQRX|�tjd��>}|�||j�|�||j�|�||j�|�||j�WdQRXdS)Nr�r)r�r�)	r rrxrsr�r�ZassertNotIsInstancer�r�)r+Z	abcmoduler#rrr�_check_abc_inheritanceLsz!MiscIOTest._check_abc_inheritancecCs|�|�dS)N)r)r+rrr�test_abc_inheritance]szMiscIOTest.test_abc_inheritancecCs|�t�dS)N)rrf)r+rrr�test_abc_inheritance_officialasz(MiscIOTest.test_abc_inheritance_officialc	OsPt||�}t|�}|�t��}d}t��WdQRX|�|t|jj	d��dS)Nr)
r r\ZassertWarnsr�rr�rzr'Zwarningrd)r+rdrr#rr)rrr�_check_warn_on_deallocfs
z!MiscIOTest._check_warn_on_dealloccCs2|jtjddd�|�tjd�|�tjd�dS)Nr�r)r�r�)rrrx)r+rrr�test_warn_on_deallocnszMiscIOTest.test_warn_on_deallocc	s�g��fdd�}|�|�t��\}}�||f7�|j|f|�|�t��\}}�||f7�t�|��t|f|�ddi|��WdQRXdS)NcsRxL�D]D}yt�|�Wqtk
rH}z|jtjkr8�Wdd}~XYqXqWdS)N)r�rZrY�errno�EBADF)rr�)�fdsrr�cleanup_fdsus
z9MiscIOTest._check_warn_on_dealloc_fd.<locals>.cleanup_fdsr�F)r�r�r�rrr0r )r+rdrrrr�r)rr�_check_warn_on_dealloc_fdss
z$MiscIOTest._check_warn_on_dealloc_fdcCs&|jddd�|�d�|�d�dS)Nr�r)r�r)r)r+rrr�test_warn_on_dealloc_fd�s
z"MiscIOTest.test_warn_on_dealloc_fdcCs�x�ddiddiddd�ddiddiddd�ddidd	id	dd�g	D]J}xDttjd
�D]2}|jtjf|��}|�ttj||�WdQRXqVWqBWdS)Nr�r�r�r)r�r�rr�zw+zw+br7)	r��pickleZHIGHEST_PROTOCOLr rrxr�r��dumps)r+rZprotocolr#rrr�
test_pickling�szMiscIOTest.test_picklingcCs|�d�dS)Ni@)�_test_nonblock_pipe_write)r+rrr�test_nonblock_pipe_write_bigbuf�sz*MiscIOTest.test_nonblock_pipe_write_bigbufcCs|�d�dS)Ni)r )r+rrr�!test_nonblock_pipe_write_smallbuf�sz,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�}|���|��rx�dD]�}y@d}	x6t|	dd	g�|}
|�|
�|�|
�|	d
7}	qrWWqf|jk
�r4}zh|�|j	dt
j�|�|j	d|j�|dd|j�|d<|�|�
��d
}
|�|
�|�|
�Wdd}~XYqfXqfWx�y|��PWnj|jk
�r�}zH|�|j	dt
j�|�|j	d|j�|�|jd�|�|�
��Wdd}~XYnX�q<W|t|j
d�7}WdQRXWdQRXd�|�d�|�}}|�||�|�|j�|�|j�dS)NFr�T)r�r�r�r�)i'�Ii�r��ar7rFrpsBLOCKEDr@)r�r�r#r rr-r.rtr�rdrZEAGAINr�rBrT�iterrkrrX)r+r�ZsentZreceivedrr�ZrfZwfr�r�rSr�rrrr �sL



 &$z$MiscIOTest._test_nonblock_pipe_writec	Cs2|�tjd��WdQRX|�t|jtjd�dS)Nr�r})r rrxr��FileExistsError)r+rrr�test_create_fail�s
zMiscIOTest.test_create_failc	CsR|�tjd��}|�d�WdQRX|�tjd��}|�d|���WdQRXdS)NZxbsspamr�)r rrxr.r�rB)r+r#rrr�test_create_writes�szMiscIOTest.test_create_writescCs|�t|jtjd�dS)Nzrwax+)r�rrr rrx)r+rrr�test_open_allargs�szMiscIOTest.test_open_allargsN)rrrrzrr	rr
rrrrrrrrrrr!r"r�Z
skipUnlessrr�r r)r*r+rrrrr�s,/
3rc@s0eZdZeZdd�Zdd�Zdd�Zdd�Zd	S)
�CMiscIOTestcCs6Gdd�d|jj�}|�}td�}|�t|j|�dS)Nc@seZdZddd�ZdS)z<CMiscIOTest.test_readinto_buffer_overflow.<locals>.BadReaderrpcSsddS)Nr�i@Br)r+r:rrrrB�szACMiscIOTest.test_readinto_buffer_overflow.<locals>.BadReader.readN)rp)rrrrBrrrr�	BadReader�sr-rF)rfr�r�r�rrr;)r+r-r^r
rrr�test_readinto_buffer_overflow�sz)CMiscIOTest.test_readinto_buffer_overflowcCs\d�t��}td|�\}}|j��}|jdkrHd�t��}|�||�n|�|�d��dS)Na�if 1:
            import sys
            import time
            import threading
            from test.support import SuppressCrashReport

            file = sys.{stream_name}

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

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

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

            time.sleep(0.5)
            file.write('!')
            file.flush()
            z-crz�Fatal Python error: could not acquire lock for <(_io\.)?BufferedWriter name='<{stream_name}>'> at interpreter shutdown, possibly due to daemon threadsz.!)	�
format_map�localsrrur9r�rmrrh)r+Zstream_namer�r_r�ru�patternrrr�&check_daemon_threads_shutdown_deadlock�s

z2CMiscIOTest.check_daemon_threads_shutdown_deadlockcCs|�d�dS)N�stdout)r2)r+rrr�,test_daemon_threads_shutdown_stdout_deadlocksz8CMiscIOTest.test_daemon_threads_shutdown_stdout_deadlockcCs|�d�dS)Nrf)r2)r+rrr�,test_daemon_threads_shutdown_stderr_deadlock sz8CMiscIOTest.test_daemon_threads_shutdown_stderr_deadlockN)rrrrfr.r2r4r5rrrrr,�s
	(r,c@seZdZeZdS)�PyMiscIOTestN)rrrrhrfrrrrr6$sr6�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�|_dS)N)�signal�SIGALRM�alarm_interrupt�oldalrm)r+rrrry+szSignalsTest.setUpcCst�tj|j�dS)N)r9r:r<)r+rrrrz.szSignalsTest.tearDowncCsdddS)Nr7rr)r+�sig�framerrrr;1szSignalsTest.alarm_interruptc
sfg���fdd�}tj|d�}d|_t��\�}d|d<|tjt|�d}z�|jj	|f|�}t
td�r�t�tj
tjg�|��t�tjtjg�n|��t�d�z|�t|j|�Wdt�d	�|��X��t��d��|��|d	d�|dd
�g�Wdt�|�t���y|��Wn4tk
�r^}	z|	jtjk�rN�Wdd}	~	XYnXXdS)Ncst��d�}��|�dS)Nr7)r�rBr-)rl)r�read_resultsrrr9sz2SignalsTest.check_interrupted_write.<locals>._read)r�TFr�r7�pthread_sigmaskrrF)rNr��daemonr�r�r�
PIPE_MAX_SIZErrfr rr9r@�	SIG_BLOCKr:r��SIG_UNBLOCK�alarmr�r�r.rkr-rBr�rZrYrr)
r+�itemr�
fdopen_kwargsrr�r��
large_data�wior�r)rr?r�check_interrupted_write4s8



$

z#SignalsTest.check_interrupted_writecCs|jddddd�dS)Nsxyr�r)r�r�)rJ)r+rrr�!test_interrupted_write_unbufferedhsz-SignalsTest.test_interrupted_write_unbufferedcCs|jdddd�dS)Nsxyr�)r�)rJ)r+rrr�test_interrupted_write_bufferedksz+SignalsTest.test_interrupted_write_bufferedcCs|jddddd�dS)N�xysxyr�r�)r�r)rJ)r+rrr�test_interrupted_write_textnsz'SignalsTest.test_interrupted_write_textc		s���fdd�}t�tj|�t��\}}|jj|f|��z�t�d�|�tt	f��D}x<x"t
d�D]}�������q`Wt�
|t��d�qVWWdQRX|j}t|t	�r�|�t|��d�t|��Wdt�d����t�|�XdS)Ncs����dddS)Nr7r)r.)rd)rrIrr�on_alarmss
z3SignalsTest.check_reentrant_write.<locals>.on_alarmr7r�zreentrant callr)r9r:r�r�rfr rEr�r�rpr�r.rTrBrr(r�rr'r�rZ)	r+rrGrOrr�r)r�r�r)rrIr�check_reentrant_writeqs$

"

z!SignalsTest.check_reentrant_writecCs|jddd�dS)Nsxyr�)r�)rP)r+rrr�test_reentrant_write_buffered�sz)SignalsTest.test_reentrant_write_bufferedcCs|jdddd�dS)NrMr�r�)r�r)rP)r+rrr�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�Wdt�d	�|�
�t�
��t�
|�XdS)
NFr�cst��d�dS)Nsbar)r�r.)r=r>)r�rr�
alarm_handler�sz?SignalsTest.check_interrupted_read_retry.<locals>.alarm_handlersfoor7r{Zfoobarr)r�r�r9r:rfr r.rEr�rBrZ)r+r9rGrrSZrior)r�r�check_interrupted_read_retry�s


z(SignalsTest.check_interrupted_read_retrycCs|jdd�dd�dS)NcSs
|�d�S)NrF)r9)r}rrrr�r@zBSignalsTest.test_interrupted_read_retry_buffered.<locals>.<lambda>r�)r�)rT)r+rrr�$test_interrupted_read_retry_buffered�s
z0SignalsTest.test_interrupted_read_retry_bufferedcCs|jdd�dd�dS)NcSs|S)Nr)r}rrrr�r@z>SignalsTest.test_interrupted_read_retry_text.<locals>.<lambda>r)r�)rT)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�_�fdd	�}�fd
d��||}t�tj	|�zl|j
j|f|�}t�d�|�
|�}	|�||	�|��d����|���|�|td
d��D���Wdt�d�d�t�|�t���y|��Wn4tk
�rT}
z|
jtjk�rD�Wdd}
~
XYnXXdS)N�selectFr�c
spyDx>�s@x4����gggd�dkr<t��d�}��|�q
WqWWn&tk
rj}z|�Wdd}~XYnXdS)Ng�?ri)rWr�rBr-�
BaseException)rlr�)rrr?rW�write_finishedrrr�sz8SignalsTest.check_interrupted_write_retry.<locals>._read)r�Tcst�tj��t�d�dS)Nr7)r9r:rE)r=r>)�alarm2rr�alarm1�sz9SignalsTest.check_interrupted_write_retry.<locals>.alarm1cs���dS)N)r�)r=r>)r�rrrZ�sz9SignalsTest.check_interrupted_write_retry.<locals>.alarm2r7css|]}t|�VqdS)N)r)r�r}rrr�	<genexpr>�sz<SignalsTest.check_interrupted_write_retry.<locals>.<genexpr>r)r�
import_modulerBr�r�rNr�rAr9r:rfr rEr.r�rTrkr�sumrZrYrr)r+rFrGr�r�rr[rHrIr�r�r)rZrrr?rWr�rYr�check_interrupted_write_retry�sB
	





z)SignalsTest.check_interrupted_write_retrycCs|jddd�dS)Nr�r�)r�)r_)r+rrr�%test_interrupted_write_retry_buffered�sz1SignalsTest.test_interrupted_write_retry_bufferedcCs|jdddd�dS)Nr}r�rF)r�r)r_)r+rrr�!test_interrupted_write_retry_text�sz-SignalsTest.test_interrupted_write_retry_textN)rrrryrzr;rJrKrLrNrr�rPrQrRrTrUrVr_r`rarrrrr8(s 4Dr8c@seZdZeZdS)�CSignalsTestN)rrrrfrrrrrb�srbc@seZdZeZdZdZdS)�
PySignalsTestN)rrrrhrfrQrRrrrrrcsrcc
s,tttttttttt	t
ttt
ttttttf}ttttttttf}tjdg}dd�|D�}dd�|D�}t��|��fdd�|D��|��fdd�|D��t j!|d<xj|D]b}|j"�#d	�r�xP|�$�D]\}}t%|||�q�Wq�|j"�#d
�r�x |�$�D]\}}t%|||�q�Wq�Wt&�'dd�|D��}	|	S)
Nr�cSsi|]}tt|�|�qSr)r7rf)r�rJrrr�
<dictcomp>szload_tests.<locals>.<dictcomp>cSsi|]}tt|�|�qSr)r7rh)r�rJrrrrdsc3s"|]}|j�d|jfVqdS)rN)r)r�r})�globsrrr\ szload_tests.<locals>.<genexpr>c3s"|]}|j�d|jfVqdS)�PyN)r)r�r})rerrr\!sr rrfcSsg|]}t�|��qSr)r�Z	makeSuite)r�r�rrrr�,szload_tests.<locals>.<listcomp>)(rNrPrQr�r�r�r�rrr%r&rIr�rr�r�r,r6rbrcr?rEr]rWrirbr%rMrfr�globalsrdrh�OpenWrapperrr�r{�setattrr�Z	TestSuite)
rdr�ZmocksZall_membersZc_io_nsZpy_io_nsr�rJrZsuiter)rer�
load_tests
s:

rj�__main__)pr�rrrar�rr�r9r�Z	sysconfigrNrRr�r�r�collectionsrr�	itertoolsrrr�rZtest.support.script_helperrrZtest.supportr	r)rfZ_pyiorhr�ImportErrorrZ	StructurerZget_config_varZ_cflagsZ_config_argsr�r$r%r�r=r>r?rCrDrErKrLrMrUrVrWr[r\r]r�r`rarbrergrirsruZTestCaservrNrPr�rQrXrr�r�r�r�r�r�r�rrrr%r&r*r'�registerrGrIrMr�r�r�r�r�r�rrr,r6r�rJr8rbrcrjr�mainrrrr�<module>s�
8
	
,7
( 3%0>fW+I
	3u;
V	%