Current File : //usr/local/apps/python3/lib/python3.11/test/__pycache__/test_io.cpython-311.pyc
�

�Ke>����	�dZddlZddlZddlZddlZddlZddlZddlZddlZddl	Z	ddl
Z
ddlZddlZddl
Z
ddlZddlZddlmZmZddlmZmZddlmZddlmZmZmZddlmZddlmZdd	lmZdd
lm Z ddlm!Z!ddl"m#Z#ddl$Z$ddl%Z%ddl&Z'	ddl(Z(d
�Z)Gd�de(j*��Z+n#e,$rd�Z)YnwxYwe-e	d��pe	j.j/Z0d�Z1e
j2e-ed��d��Z3Gd�d��Z4Gd�de4e%j5��Z6Gd�de4e'j5��Z7Gd�de4��Z8Gd�de8e%j5��Z9Gd�d e8e'j5��Z:Gd!�d"e8��Z;Gd#�d$e;e%j5��Z<Gd%�d&e;e'j5��Z=Gd'�d(e8��Z>Gd)�d*e>e%j5��Z?Gd+�d,e>e'j5��Z@Gd-�d.e8��ZAGd/�d0eAe%j5��ZBGd1�d2eAe'j5��ZCGd3�d4��ZDGd5�d6eDe%jE��ZFGd7�d8eDe'jE��ZGGd9�d:��ZHGd;�d<eHe%jE��ZIGd=�d>eHe'jE��ZJGd?�d@��ZKGdA�dBeKe%j5��ZLGdC�dDeKe'j5��ZMGdE�dFe
jN��ZOGdG�dHeO��ZPGdI�dJeO��ZQejRGdK�dLe
jN����ZSGdM�dN��ZTGdO�dP��ZUGdQ�dRe
jNeT��ZVGdS�dTeVeU��ZWGdU�dVeV��ZXGdW�dXe
jNeT��ZYGdY�dZeYeU��ZZGd[�d\eY��Z[Gd]�d^e
jN��Z\Gd_�d`e\��Z]Gda�dbe\��Z^Gdc�ddeVeY��Z_Gde�dfe_eU��Z`Gdg�dhe_��ZaGdi�dje$jb��Zcdk�ZdGdl�dme
jN��ZeGdn�doe
jN��ZfGdp�dqe%jE��Zgdr�ZhGds�dtef��ZiGdu�dvef��ZjGdw�dxe
jN��ZkGdy�dzek��ZlGd{�d|ek��ZmGd}�d~e
jN��ZnGd�d�en��ZoGd��d�en��Zpe
jqejrd�kd���Gd��d�e
jN����ZsGd��d�es��ZtGd��d�es��Zud��Zvewd�kre
jx��dSdS)�zUnit tests for the io module.�N)�deque�UserList)�cycle�count)�support)�assert_python_ok�assert_python_failure�run_python_until_end)�
import_helper)�	os_helper)�threading_helper)�warnings_helper)�skip_if_sanitizer)�FakePathc���t|i|��}t��}tj|t	|����|t|���d��dd�<|S)z?Create a bytes-like object having no string or sequence methods�BN)�bytes�EmptyStruct�ctypes�resize�len�
memoryview�cast)�pos�kw�data�objs    �6/usr/local/apps/python3/lib/python3.11/test/test_io.py�	bytesliker;s\���c� �R� � ���m�m���
�c�3�t�9�9�%�%�%�'+�
�3�����S�!�!�!�!�!�$��
�c��eZdZdS)rN��__name__�
__module__�__qualname__�r rrrBs�������r rc�@�tjdt|i|����S)N�b)�arrayr)rrs  rrr8s!���{�3��s� 1�b� 1� 1�2�2�2r �gettotalrefcountc�r�ttdd���5}|jcddd��S#1swxYwYdS)z(Get the default TextIOWrapper chunk size�r�latin-1��encodingN)�open�__file__�_CHUNK_SIZE)�fs r�_default_chunk_sizer4Js}��	
�h��i�	0�	0�	0��A��}���������������������s�,�0�0�alarmztest requires signal.alarm()c�R�eZdZdZdd�Zd�Zd�Zd�Zd�Zd�Z	d	�Z
d
�Zd�Zdd
�Z
dS)�MockRawIOWithoutReadzmA RawIO implementation without read(), so as to exercise the default
    RawIO.read() which calls readinto().r&c�X�t|��|_g|_d|_d|_dS�Nr)�list�_read_stack�_write_stack�_reads�_extraneous_reads)�self�
read_stacks  r�__init__zMockRawIOWithoutRead.__init__Xs/���
�+�+���������!"����r c�n�|j�t|����t|��S�N)r<�appendrr�r?r(s  r�writezMockRawIOWithoutRead.write^s*���� � ��q���*�*�*��1�v�v�
r c��dS�NTr&�r?s r�writablezMockRawIOWithoutRead.writableb����tr c��dS�N�*r&rIs r�filenozMockRawIOWithoutRead.filenoes���rr c��dSrHr&rIs r�readablezMockRawIOWithoutRead.readablehrKr c��dSrHr&rIs r�seekablezMockRawIOWithoutRead.seekablekrKr c��dSr9r&�r?r�whences   r�seekzMockRawIOWithoutRead.seekn����qr c��dSr9r&rIs r�tellzMockRawIOWithoutRead.tellqrXr c�d�|xjdz
c_t|��}	|jd}n!#t$r|xjdz
c_YdSwxYw|�
|jd=dSt|��}t|��|kr|jd=||d|�<|S|d|�|dd�<||d�|jd<|S�N�r)r=rr;�
IndexErrorr>)r?�buf�max_lenr�ns     r�readintozMockRawIOWithoutRead.readintots������q�����c�(�(��	��#�A�&�D�D���	�	�	��"�"�a�'�"�"��1�1�	�����<�� ��#��4���I�I���t�9�9����� ��#��C����G��H��(�7�(�^�C����F�"&�w�x�x�.�D��Q���Ns�
/�A
�A
Nc��|SrCr&)r?rs  r�truncatezMockRawIOWithoutRead.truncate�s���
r )r&rC)r#r$r%�__doc__rArFrJrOrQrSrWrZrbrdr&r rr7r7Ts�������,�,�#�#�#�#�������������������������*�����r r7c��eZdZdS)�CMockRawIOWithoutReadNr"r&r rrgrg���������Dr rgc��eZdZdS)�PyMockRawIOWithoutReadNr"r&r rrjrj�rhr rjc��eZdZdd�ZdS)�	MockRawIONc��|xjdz
c_	|j�d��S#|xjdz
c_YdSxYw)Nr]rr )r=r;�popr>�r?ras  r�readzMockRawIO.read�sR�����q����	��#�'�'��*�*�*��	��"�"�a�'�"�"��3�3���s	�,�ArC�r#r$r%rpr&r rrlrl�s(�����������r rlc��eZdZdS)�
CMockRawIONr"r&r rrsrs�rhr rsc��eZdZdS)�PyMockRawIONr"r&r rruru�rhr ruc�@��eZdZ�fd�Zd�fd�	Zd�Zd�Z�fd�Z�xZS)�MisbehavedRawIOc�L��t���|��dzS�N�)�superrF)r?r(�	__class__s  �rrFzMisbehavedRawIO.write�s����w�w�}�}�Q���!�#�#r Nc�L��t���|��dzSry)r{rp)r?rar|s  �rrpzMisbehavedRawIO.read�s����w�w�|�|�A����"�"r c��dS)Ni����r&rUs   rrWzMisbehavedRawIO.seek�rKr c��dS)Ni8���r&rIs rrZzMisbehavedRawIO.tell�rKr c�j��t���|��t|��dzS)N�)r{rbr)r?r_r|s  �rrbzMisbehavedRawIO.readinto�s+���
����������3�x�x�!�|�r rC)	r#r$r%rFrprWrZrb�
__classcell__�r|s@rrwrw�s��������$�$�$�$�$�#�#�#�#�#�#���������������r rwc��eZdZdS)�CMisbehavedRawIONr"r&r rr�r��rhr r�c��eZdZdS)�PyMisbehavedRawIONr"r&r rr�r��rhr r�c�$��eZdZ�fd�Zd�Z�xZS)�SlowFlushRawIOc�x��t�����tj��|_dSrC)r{rA�	threading�Event�in_flush)r?r|s �rrAzSlowFlushRawIO.__init__�s,���
��������!��)�)��
�
�
r c�`�|j���tjd��dS)Ng�?)r��set�time�sleeprIs r�flushzSlowFlushRawIO.flush�s,���
�������
�4�����r )r#r$r%rAr�r�r�s@rr�r��sG�������*�*�*�*�*�������r r�c��eZdZdS)�CSlowFlushRawIONr"r&r rr�r��rhr r�c��eZdZdS)�PySlowFlushRawIONr"r&r rr�r��rhr r�c��eZdZdZd�ZdS)�CloseFailureIOrc�0�|jsd|_t�dS�Nr]��closed�OSErrorrIs r�closezCloseFailureIO.close�s"���{�	��D�K��M�	�	r N)r#r$r%r�r�r&r rr�r��s(������
�F�����r r�c��eZdZdS)�CCloseFailureIONr"r&r rr�r��rhr r�c��eZdZdS)�PyCloseFailureIONr"r&r rr�r��rhr r�c�4��eZdZ�fd�Zd�fd�	Z�fd�Z�xZS)�
MockFileIOc�X��g|_t���|��dSrC)�read_historyr{rA)r?rr|s  �rrAzMockFileIO.__init__�s)������
����������r Nc���t���|��}|j�|�dnt	|����|SrC)r{rpr�rDr)r?ra�resr|s   �rrpzMockFileIO.read�s@����g�g�l�l�1�o�o���� � �����#�c�(�(�C�C�C��
r c�~��t���|��}|j�|��|SrC)r{rbr�rD)r?r(r�r|s   �rrbzMockFileIO.readinto�s6����g�g���q�!�!���� � ��%�%�%��
r rC)r#r$r%rArprbr�r�s@rr�r��so������������������
��������r r�c��eZdZdS)�CMockFileIONr"r&r rr�r��rhr r�c��eZdZdS)�PyMockFileIONr"r&r rr�r��rhr r�c�&�eZdZd�Zd�Zd�Zd�ZdS)�MockUnseekableIOc��dS�NFr&rIs rrSzMockUnseekableIO.seekable�s���ur c�,�|�d����Nznot seekable��UnsupportedOperation�r?�argss  rrWzMockUnseekableIO.seek�����'�'��7�7�7r c�,�|�d���r�r�r�s  rrZzMockUnseekableIO.tell�r�r c�,�|�d���r�r�r�s  rrdzMockUnseekableIO.truncate�r�r N)r#r$r%rSrWrZrdr&r rr�r��sP���������8�8�8�8�8�8�8�8�8�8�8r r�c��eZdZejZdS)�CMockUnseekableION)r#r$r%�ior�r&r rr�r��s�������2���r r�c��eZdZejZdS)�PyMockUnseekableION)r#r$r%�pyior�r&r rr�r�s�������4���r r�c�@�eZdZd�Zd�Zd�Zd�Zd�Zdd�Zd�Z	d	�Z
d
S)�MockNonBlockWriterIOc�"�g|_d|_dSrC)r<�
_blocker_charrIs rrAzMockNonBlockWriterIO.__init__s�����!����r c�R�d�|j��}g|jdd�<|S�Nr )�joinr<)r?�ss  r�pop_writtenz MockNonBlockWriterIO.pop_writtens,���H�H�T�&�'�'��!���!�!�!���r c��||_dS)z'Block when a given char is encountered.N)r�)r?�chars  r�block_onzMockNonBlockWriterIO.block_ons��!����r c��dSrHr&rIs rrQzMockNonBlockWriterIO.readablerKr c��dSrHr&rIs rrSzMockNonBlockWriterIO.seekablerKr rc��dSr9r&rUs   rrWzMockNonBlockWriterIO.seeks���qr c��dSrHr&rIs rrJzMockNonBlockWriterIO.writablerKr c�@�t|��}d}|jr^	|�|j��}|dkr$|j�|d|���|Sd|_dS#t
$rYnwxYw|j�|��t
|��S)N���r)rr��indexr<rD�
ValueErrorr)r?r(ras   rrFzMockNonBlockWriterIO.write"s����!�H�H������
	 �
 ��G�G�D�.�/�/���q�5�5��%�,�,�Q�r��r�U�3�3�3��H�*.�D�&��4���
�
�
���
����	
�� � ��#�#�#��1�v�v�
s�A'�'
A4�3A4N�r)r#r$r%rAr�r�rQrSrWrJrFr&r rr�r�s�������"�"�"����
"�"�"������������������r r�c��eZdZejZdS)�CMockNonBlockWriterION)r#r$r%r��BlockingIOErrorr&r rr�r�6s�������(�O�O�Or r�c��eZdZejZdS)�PyMockNonBlockWriterION)r#r$r%r�r�r&r rr�r�9s�������*�O�O�Or r�c��eZdZd�Zd�Zd�Zd7d�ZdZd�Zd�Z	e
jej
d	��e
jeed
��d��d�����Zd
�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Z d�Z!d�Z"d�Z#d�Z$d �Z%d!�Z&d"�Z'd#�Z(d$�Z)d%�Z*d&�Z+d'�Z,d(�Z-d)�Z.d*�Z/d+�Z0d,�Z1d-�Z2d.�Z3d/�Z4d0�Z5d1�Z6d2�Z7d3�Z8d4�Z9d5�Z:d6S)8�IOTestc�B�tjtj��dSrC�r�unlink�TESTFNrIs r�setUpzIOTest.setUp?������)�*�*�*�*�*r c�B�tjtj��dSrCr�rIs r�tearDownzIOTest.tearDownBr�r c��|�|�d��d��|�d��|�|���d��|�d��|�|�d��d��|�|�d��d��|�|�d��d��|�|���d��|�|�dd��d��|�|���d��td��}|�|�|��d	��d
|dd�<|�|�d��d��|�|�d��d��|�|�dd��d
��|�|���d
��|�|�d��d��|�|���d
��|�t|jd��dS)Nsblah.r�rsHello.�r�r]s	 world


�	s	*********�hrz�
��)�assertEqualrFrdrZrW�	bytearray�assertRaises�	TypeError)r?r3�buffers   r�	write_opszIOTest.write_opsEs:���������*�*�A�.�.�.�	�
�
�1�
�
�
���������1�%�%�%�	���q�	�	�	��������*�*�A�.�.�.����������A�&�&�&��������+�+�Q�/�/�/���������1�%�%�%��������A����*�*�*���������1�%�%�%��?�+�+�����������!�,�,�,���q�q�q�	����������A�&�&�&�����������*�*�*��������A����+�+�+���������2�&�&�&�������B����,�,�,���������2�&�&�&����)�Q�V�S�1�1�1�1�1r Fc�.�|�d��}|�|d��t|��}|�|�|��d��|�t	|��d��td��}|�|�|��d��|�t
|��d��|�|dd�d��|�|�d��d��|�|�d��d��|�|�d	��d
��|�|�td����d��|�|�dd��d
��|�|�d��d��|�|�d��d
��|�|�t����d��|�|�dd	��d��|�|�d��d��|�|���d��|�	t|jd��|�r|�d��|�|���d��|�d
��|�|���d��|�|���d
��|�d��td��}|�|�|��d��|�t	|��d��dSdS)Nr�shellos worlrz�d
r��hello world
r]r �xi����r�sworld�
r�sworld
)rpr�rrbrr�rrWrZr�r��	readinto1)r?r3�bufferedrs    r�read_opszIOTest.read_ops]sK���v�v�a�y�y������x�(�(�(������������D�)�)�1�-�-�-�����t���h�/�/�/���|�|��������D�)�)�1�-�-�-�����T���A�&�&�&�����b�q�b��6�*�*�*����������A�&�&�&����������%5�6�6�6����������C�(�(�(�������I�d�O�O�4�4�a�8�8�8��������A����*�*�*����������H�-�-�-����������C�(�(�(�������I�K�K�0�0�!�4�4�4��������A����*�*�*����������H�-�-�-���������2�&�&�&����)�Q�V�S�1�1�1��		4�
�F�F�1�I�I�I����Q�V�V�X�X�'7�8�8�8�
�F�F�1�I�I�I����Q�V�V�X�X�z�2�2�2����Q�V�V�X�X�s�+�+�+�
�F�F�1�I�I�I��Q�<�<�D����Q�[�[��.�.��2�2�2����U�4�[�[�(�3�3�3�3�3�		4�		4r lc��|���sJ�|���sJ�	|�|�|j��|j��n,#t
tf$r|�d��YnwxYw|�|���|j��|�|�	d��d��|�|���|jdz��|�|�dd��|jdz��|�|�
��|jdz��|�|���|jdz��|�|�dd��|jdz��|�|�
|jdz��|jdz��|�|���|jdz��|�|�dd��|jdz��|�|�dd��|j��|�|�d��d��dS)	Nzno largefile support�xxx�r�r]rzrr�)rQrJr�rW�LARGE�
OverflowErrorr��skipTestrZrFrdrp�r?r3s  r�large_file_opszIOTest.large_file_ops�sQ���z�z�|�|�����z�z�|�|����	2����Q�V�V�D�J�/�/���<�<�<�<���z�*�	2�	2�	2��M�M�0�1�1�1�1�1�	2������������4�:�.�.�.����������!�,�,�,���������4�:��>�2�2�2��������A����
�Q��7�7�7���������t�z�A�~�6�6�6���������4�:��>�2�2�2��������1���t�z�A�~�6�6�6�������D�J��N�3�3�T�Z�!�^�D�D�D���������4�:��>�2�2�2��������1���t�z�A�~�6�6�6��������A����
�3�3�3����������D�)�)�)�)�)s�3A"�"&B�
Bc���|j}|�tjdd���5}|�||j��|�||j��ddd��n#1swxYwY|�tjd��5}|�||j��|�||j��ddd��n#1swxYwY|�tjdd���5}|�||j��|�||j��ddd��n#1swxYwY|�tjdd���5}|�||jd��|�||jd	g��ddd��n#1swxYwY|�tjd��5}|�||jd��|�||jd	g��ddd��n#1swxYwY|�tjd
d���5}|�||jd��|�||jdg��|�||j	d
|j
��|�||j	d|j��ddd��dS#1swxYwYdS)N�w�utf-8r.�wbr��	buffering�rbsblahsblah
r,�blahzblah
r]r�)r�r0rr�r�rp�readlinerF�
writelinesrW�SEEK_CUR�SEEK_END)r?�exc�fps   r�test_invalid_operationszIOTest.test_invalid_operations�s���'��
�Y�Y�y�'��w�Y�
?�
?�	0�2����c�2�7�+�+�+����c�2�;�/�/�/�	0�	0�	0�	0�	0�	0�	0�	0�	0�	0�	0����	0�	0�	0�	0��Y�Y�y�'��
.�
.�	0�"����c�2�7�+�+�+����c�2�;�/�/�/�	0�	0�	0�	0�	0�	0�	0�	0�	0�	0�	0����	0�	0�	0�	0��Y�Y�y�'���Y�
;�
;�	0�r����c�2�7�+�+�+����c�2�;�/�/�/�	0�	0�	0�	0�	0�	0�	0�	0�	0�	0�	0����	0�	0�	0�	0��Y�Y�y�'���Y�
;�
;�	?�r����c�2�8�W�5�5�5����c�2�=�9�+�>�>�>�	?�	?�	?�	?�	?�	?�	?�	?�	?�	?�	?����	?�	?�	?�	?��Y�Y�y�'��
.�
.�	?�"����c�2�8�W�5�5�5����c�2�=�9�+�>�>�>�	?�	?�	?�	?�	?�	?�	?�	?�	?�	?�	?����	?�	?�	?�	?��Y�Y�y�'��w�Y�
?�
?�	?�2����c�2�8�V�4�4�4����c�2�=�8�*�=�=�=����c�2�7�A�t�}�=�=�=����c�2�7�B��
�>�>�>�	?�	?�	?�	?�	?�	?�	?�	?�	?�	?�	?�	?����	?�	?�	?�	?�	?�	?sl�7A-�-A1�4A1�7C�C�"C�7E�E�E�8:F>�>G�G�):H/�/H3�6H3�A>K'�'K+�.K+�%fstat() of a pipe fd is not supported�pipe�requires os.pipe()c�����fd�}�fd�}�fd�}�fd�}�fd�}�fd�}�fd�}�fd�}|d	f|d
f|df|df|d
f|df|df|df�jd
f�jd
ff
}	|	D�]\}
}��|
��5|
��5}d|v}
��|���|
��d|v}��|���|��t
|�j��rd}n4t
|�j�j	f��rd}n��
d��d|vr|���n ��t|j��|
r*|�d��|���nA��t|jd����t|j��|r|�|��n!��t|j|��t j�d��r|
||fvr	ddd��ddd�����d|v}��|���|��|r*|���|�d��nA��t|j����t|jd��|r,|r*|���|�d��nA��t|j����t|jd��ddd��n#1swxYwYddd��n#1swxYwY�� dS)Nc���tj��\}}tj|����|d��S)Nr,)�osrr��FileIO)r,rr?s  �r�pipe_readerz3IOTest.test_optional_abilities.<locals>.pipe_reader�s3����W�Y�Y�F�Q���H�Q�K�K�K��;�;�q�#�&�&�&r c�<��tj��\}}��tj|��t	jtj|df���}|�����|j����	|d��S)N�d��targetr�r)
rr�
addCleanupr�r��Threadrp�startr�r)r,r�threadr?s   �r�pipe_writerz3IOTest.test_optional_abilities.<locals>.pipe_writer�sx����W�Y�Y�F�Q���O�O�B�H�a�(�(�(��%�R�W�A�s�8�D�D�D�F��L�L�N�N�N��O�O�F�K�(�(�(��;�;�q�#�&�&�&r c�R����������SrC)�BufferedReaderr�rIs�r�buffered_readerz7IOTest.test_optional_abilities.<locals>.buffered_reader��#����&�&�t�'<�'<�'>�'>�?�?�?r c�R����������SrC)�BufferedWriterr�rIs�r�buffered_writerz7IOTest.test_optional_abilities.<locals>.buffered_writer�r&r c�R����������SrC)�BufferedRandom�BytesIOrIs�r�buffered_randomz7IOTest.test_optional_abilities.<locals>.buffered_random�s����&�&�t�|�|�~�~�6�6�6r c�x��������������SrC)�BufferedRWPairr�rIs�r�buffered_rw_pairz8IOTest.test_optional_abilities.<locals>.buffered_rw_pair�s8����&�&�t�'<�'<�'>�'>��%�%�'�'�)�)�
)r c�j��G�fd�d�j��}��|��d��S)Nc�@��eZdZ�jjZ�jjZdS)�MIOTest.test_optional_abilities.<locals>.text_reader.<locals>.UnseekableReaderN)r#r$r%�BufferedIOBaserJrFrIs�r�UnseekableReaderr3�s%��������.�7���+�1���r r5�ascii�r��
TextIOWrapper)r5r?s �r�text_readerz3IOTest.test_optional_abilities.<locals>.text_reader�s\���
2�
2�
2�
2�
2�
2�
2�4�#8�
2�
2�
2��%�%�&6�&6�&8�&8�'�B�B�Br c�j��G�fd�d�j��}��|��d��S)Nc�@��eZdZ�jjZ�jjZdS)�MIOTest.test_optional_abilities.<locals>.text_writer.<locals>.UnseekableWriterN)r#r$r%r4rQrprIs�r�UnseekableWriterr<�s%��������.�7���*�/���r r=r6r7)r=r?s �r�text_writerz3IOTest.test_optional_abilities.<locals>.text_writer�s\���
0�
0�
0�
0�
0�
0�
0�4�#8�
0�
0�
0��%�%�&6�&6�&8�&8�'�B�B�Br �fr�fwr,r�rws�rw�3�3zUnknown base classr3r]�winr�r)r,�StringIO�subTestr�rQrJ�
isinstance�
TextIOBaser4�	RawIOBase�failrOr�r�rprF�sys�platform�
startswithrSrZrWrd)r?rr"r%r)r-r0r9r>�tests�test�	abilitiesrrQrJrrSs`                r�test_optional_abilitieszIOTest.test_optional_abilities�s���	'�	'�	'�	'�	'�
	'�	'�	'�	'�	'�	@�	@�	@�	@�	@�	@�	@�	@�	@�	@�	7�	7�	7�	7�	7�	)�	)�	)�	)�	)�	C�	C�	C�	C�	C�	C�	C�	C�	C�	C��$��+�t�!4�
�c�"�_�c�$:�
�e�$�'7��&>�
�#���c� 2�
�\�5�!�D�M�5�#9�
��"'�2	@�2	@��T�9����d�#�#�1
@�1
@�T�T�V�V�1
@�s��)�+��� � �������:�:�:��)�+��� � �������:�:�:��c�4�?�3�3�4��D�D���d�&9�4�>�%J�K�K�4��D�D��I�I�2�3�3�3��)�#�#��J�J�L�L�L�L��%�%�g�s�z�:�:�:��9��H�H�Q�K�K�K��H�H�J�J�J�J��%�%�g�s�x��;�;�;��%�%�g�s�x�8�8�8��@��I�I�d�O�O�O�O��%�%�g�s�y�$�?�?�?��<�*�*�5�1�1��d�#�[�?2�72�72��C1
@�1
@�1
@�1
@�1
@�1
@�1
@�1
@�1
@�1
@�1
@�1
@�1
@�D�)�+��� � �������:�:�:��<��H�H�J�J�J��H�H�Q�K�K�K�K��%�%�g�s�x�8�8�8��%�%�g�s�x��;�;�;��@��@��L�L�N�N�N��L�L��O�O�O�O��%�%�g�s�|�<�<�<��%�%�g�s�|�Q�?�?�?�c1
@�1
@�1
@�1
@�1
@�1
@�1
@�1
@�1
@�1
@�1
@����1
@�1
@�1
@�1
@�1
@�1
@�1
@�1
@�1
@�1
@�1
@�1
@�1
@�1
@�1
@����1
@�1
@�1
@�1
@��2	@�2	@sD�1M)�<F*M�&M)�>DM�M)�M�M)�M�M)�)M-	�0M-	c�F�d}|�t|j|dd���t|d��}t	j��5t	jdt��|�t|j|dd���ddd��dS#1swxYwYdS)Nzfoobarrrr.r6�ignore)r�r�r0r�warnings�catch_warnings�simplefilter�DeprecationWarning)r?�fn_with_NUL�bytes_fns   r�test_open_handles_NUL_charsz"IOTest.test_open_handles_NUL_charss��� �����*�d�i��c�G��T�T�T���g�.�.��
�
$�
&�
&�	V�	V��!�(�,>�?�?�?����j�$�)�X�s�W��U�U�U�	V�	V�	V�	V�	V�	V�	V�	V�	V�	V�	V�	V����	V�	V�	V�	V�	V�	Vs�
?B�B�Bc�$�|�tjdd���5}|�|���d��|�|���d��|�|���d��|�|��ddd��n#1swxYwY|�tjdd���5}|�|���d��|�|���d��|�|���d��|�|��ddd��dS#1swxYwYdS)NrrrFTr	�	r0rr�r�rQrJrSr�r�rs  r�test_raw_file_iozIOTest.test_raw_file_io"s���
�Y�Y�y�'���Y�
;�
;�	�q����Q�Z�Z�\�\�5�1�1�1����Q�Z�Z�\�\�4�0�0�0����Q�Z�Z�\�\�4�0�0�0��N�N�1����		�	�	�	�	�	�	�	�	�	�	����	�	�	�	�
�Y�Y�y�'���Y�
;�
;�	�q����Q�Z�Z�\�\�4�0�0�0����Q�Z�Z�\�\�5�1�1�1����Q�Z�Z�\�\�4�0�0�0��M�M�!����		�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�	�	s%�BB=�=C�C�*BF�F	�F	c��|�tjd��5}|�|���d��|�|���d��|�|���d��|�|��ddd��n#1swxYwY|�tjd��5}|�|���d��|�|���d��|�|���d��|�|d��ddd��dS#1swxYwYdS)NrFTr	r]rs  r�test_buffered_file_iozIOTest.test_buffered_file_io.s���
�Y�Y�y�'��
.�
.�	�!����Q�Z�Z�\�\�5�1�1�1����Q�Z�Z�\�\�4�0�0�0����Q�Z�Z�\�\�4�0�0�0��N�N�1����		�	�	�	�	�	�	�	�	�	�	����	�	�	�	�
�Y�Y�y�'��
.�
.�	#�!����Q�Z�Z�\�\�4�0�0�0����Q�Z�Z�\�\�5�1�1�1����Q�Z�Z�\�\�4�0�0�0��M�M�!�T�"�"�"�		#�	#�	#�	#�	#�	#�	#�	#�	#�	#�	#�	#����	#�	#�	#�	#�	#�	#s%�BB;�;B?�B?�&BF�F�	Fc���|�tjd��5}|�d��ddd��n#1swxYwY|�tjd��5}|�|���d��|�|�d��d��|�|�d��d��|�|�d	��d
��|�|���d��|�|�d��d��|�t|jd
��ddd��n#1swxYwY|�tjdd���5}|�t|jd
��ddd��dS#1swxYwYdS)Nrs"abc
def
xyzzy
foobar
another liner	�abc
r��def
rz�xy�szzy
sfoobar
sanother lineg333333@r,rr.)r0rr�rFr�rr�r�rs  r�
test_readlinezIOTest.test_readline:sg��
�Y�Y�y�'��
.�
.�	B�!�
�G�G�@�A�A�A�	B�	B�	B�	B�	B�	B�	B�	B�	B�	B�	B����	B�	B�	B�	B�
�Y�Y�y�'��
.�
.�	:�!����Q�Z�Z�\�\�8�4�4�4����Q�Z�Z��^�^�X�6�6�6����Q�Z�Z��]�]�E�2�2�2����Q�Z�Z��]�]�H�5�5�5����Q�Z�Z�\�\�?�;�;�;����Q�Z�Z��-�-��?�?�?����i���S�9�9�9�	:�	:�	:�	:�	:�	:�	:�	:�	:�	:�	:����	:�	:�	:�	:��Y�Y�y�'��w�Y�
?�
?�	:�1����i���S�9�9�9�	:�	:�	:�	:�	:�	:�	:�	:�	:�	:�	:�	:����	:�	:�	:�	:�	:�	:s6�A�A�
A�.DF�F�F�="G,�,G0�3G0c��Gd�d|j��}|�ttft|����dS)Nc��eZdZd�ZdS)�+IOTest.test_readline_nonsizeable.<locals>.Rc��dSrCr&rIs rrz4IOTest.test_readline_nonsizeable.<locals>.R.readlineL����tr N)r#r$r%rr&r r�RriK�#������
�
�
�
�
r rl)�IOBaser�r��
StopIteration�next�r?rls  r�test_readline_nonsizeablez IOTest.test_readline_nonsizeableHsY��	�	�	�	�	���	�	�	�	
���9�m�4�d�A�A�C�C�@�@�@�@�@r c�~�Gd�d|j��}|�t|��jd��dS)Nc��eZdZd�ZdS)�'IOTest.test_next_nonsizeable.<locals>.Rc��dSrCr&rIs r�__next__z0IOTest.test_next_nonsizeable.<locals>.R.__next__Trkr N)r#r$r%rwr&r rrlruSrmr rlr])rnr�r��	readlinesrqs  r�test_next_nonsizeablezIOTest.test_next_nonsizeablePsV��	�	�	�	�	���	�	�	�	
���)�Q�Q�S�S�]�A�6�6�6�6�6r c��|���}|�|��|���}|�|d��|�|��}|�|d��dS)Nr�T)r,r��getvaluer�r�)r?r3rs   r�test_raw_bytes_iozIOTest.test_raw_bytes_ioXsp���L�L�N�N�����q�����z�z�|�|������/�0�0�0��L�L������
�
�a������r c���tjdd�dkstjdkrtjdd|jz��|�tjdd��5}|�|��ddd��n#1swxYwY|�tjd��5}|�|��ddd��dS#1swxYwYdS)Nr�rE�darwin�	largefilez-test requires %s bytes and a long time to run�w+br)	rLrMr�requiresr�r0rr�rrs  r�test_large_file_opszIOTest.test_large_file_ops`sX���<�����u�$�$����(@�(@����?�$�*�L�
N�
N�
N��Y�Y�y�'���
2�
2�	#�a�����"�"�"�	#�	#�	#�	#�	#�	#�	#�	#�	#�	#�	#����	#�	#�	#�	#�
�Y�Y�y�'��
/�
/�	#�1�����"�"�"�	#�	#�	#�	#�	#�	#�	#�	#�	#�	#�	#�	#����	#�	#�	#�	#�	#�	#s$�'B	�	B
�B
�4C�C�Cc���dD]�}d}|�tjd|��5}|�d��ddd��n#1swxYwY|�|jd��d}	|�tjd|��5}ddzddd��n#1swxYwY|�d����#t$r|�|jd��Y��wxYwdS)N)rrrr�Tr]rz1/0 didn't raise an exception)r0rr�rFr�r�rK�ZeroDivisionError)r?�bufsizer3s   r�test_with_openzIOTest.test_with_openms����	;�	;�G��A����9�+�T�7�;�;�
 �q��������
 �
 �
 �
 �
 �
 �
 �
 �
 �
 �
 ����
 �
 �
 �
 ����Q�X�t�,�,�,��A�
;��Y�Y�y�/��w�?�?��1��a�C�C�������������������
�	�	�9�:�:�:�:��%�
1�
1�
1�� � ���4�0�0�0�0�0�
1����	;�	;sG�A
�
A	�A	�3!C�B&�C�&B*	�*C�-B*	�.C�%C/�.C/c���|�tjd��5}|�d��ddd��n#1swxYwY|�tjdd���5}|�|���d��ddd��n#1swxYwY|�tjd��5}|�|���d��ddd��n#1swxYwY|�tjdd�	��5}|�|���d��ddd��dS#1swxYwYdS)
Nrr��abrrr��arr.)r0rr�rFr�rZ�
assertGreaterrs  r�test_append_mode_tellzIOTest.test_append_mode_tell}s&��
�Y�Y�y�'��
.�
.�	�!�
�G�G�F�O�O�O�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�
�Y�Y�y�'���Y�
;�
;�	*�q����Q�V�V�X�X�q�)�)�)�	*�	*�	*�	*�	*�	*�	*�	*�	*�	*�	*����	*�	*�	*�	*�
�Y�Y�y�'��
.�
.�	*�!����Q�V�V�X�X�q�)�)�)�	*�	*�	*�	*�	*�	*�	*�	*�	*�	*�	*����	*�	*�	*�	*�
�Y�Y�y�'��w�Y�
?�
?�	,�1����q�v�v�x�x��+�+�+�	,�	,�	,�	,�	,�	,�	,�	,�	,�	,�	,�	,����	,�	,�	,�	,�	,�	,sG�A�A�
A�0)B%�%B)�,B)�)D�D	�D	�2)E(�(E,�/E,c���g�G�fd�d|j��}tjdtf��5|tjd��}|�d��~tj��|�	�gd���|�
tjd��5}|�	|���d��ddd��n#1swxYwYddd��dS#1swxYwYdS)Nc�:���eZdZ��fd�Z��fd�Z��fd�Z�xZS)�(IOTest.test_destructor.<locals>.MyFileIOc�����d��	t��j}|��dS#t$rYdSwxYwr��rDr{�__del__�AttributeError�r?r3r|�records  ��rr�z0IOTest.test_destructor.<locals>.MyFileIO.__del__��Z����
�
�a� � � ������A��A�C�C�C�C�C��&�����D�D������7�
A�Ac�r����d��t�����dSry�rDr{r��r?r|r�s ��rr�z.IOTest.test_destructor.<locals>.MyFileIO.close��*����
�
�a� � � ����
�
�����r c�r����d��t�����dS�Nr��rDr{r�r�s ��rr�z.IOTest.test_destructor.<locals>.MyFileIO.flush�r�r �r#r$r%r�r�r�r��r|r�s@�r�MyFileIOr���z��������
�
�
�
�
�
�
 �
 �
 �
 �
 �
 �
 �
 �
 �
 �
 �
 �
 �
 �
 �
 r r��rr��r]rzr�r	)rr�check_warnings�ResourceWarningrr�rFr�
gc_collectr�r0rp)r?r�r3r�s   @r�test_destructorzIOTest.test_destructor�s������	 �	 �	 �	 �	 �	 �	 �t�{�	 �	 �	 ��
+�R��,A�
B�
B�	3�	3����)�4�0�0�A�
�G�G�F�O�O�O���� � � ����V�Y�Y�Y�/�/�/����9�+�T�2�2�
3�a�� � ������6�2�2�2�
3�
3�
3�
3�
3�
3�
3�
3�
3�
3�
3����
3�
3�
3�
3�
	3�	3�	3�	3�	3�	3�	3�	3�	3�	3�	3�	3����	3�	3�	3�	3�	3�	3s6�A8C9�,)C!�C9�!C%	�%C9�(C%	�)C9�9C=�C=c���g�G�fd�d|��}|��}~tj��|��gd���dS)Nc�@���eZdZd�Z��fd�Z��fd�Z��fd�Z�xZS)�+IOTest._check_base_destructor.<locals>.MyIOc�0�d|_d|_d|_dS)Nr]rzr�)�on_del�on_close�on_flushrIs rrAz4IOTest._check_base_destructor.<locals>.MyIO.__init__�s��
 ��� !��
� !��
�
�
r c�����|j��	t��j}|��dS#t$rYdSwxYwrC)rDr�r{r�r�r�s  ��rr�z3IOTest._check_base_destructor.<locals>.MyIO.__del__�s\����
�
�d�k�*�*�*������A��A�C�C�C�C�C��&�����D�D����s�<�
A
�	A
c�|����|j��t�����dSrC)rDr�r{r�r�s ��rr�z1IOTest._check_base_destructor.<locals>.MyIO.close��,����
�
�d�m�,�,�,����
�
�����r c�|����|j��t�����dSrC)rDr�r{r�r�s ��rr�z1IOTest._check_base_destructor.<locals>.MyIO.flush�r�r )r#r$r%rAr�r�r�r�r�s@�r�MyIOr��s���������
"�
"�
"�
�
�
�
�
�
�
 �
 �
 �
 �
 �
 �
 �
 �
 �
 �
 �
 �
 �
 �
 �
 r r�r�)rr�r�)r?�baser�r3r�s    @r�_check_base_destructorzIOTest._check_base_destructor�s{�����	 �	 �	 �	 �	 �	 �	 �4�	 �	 �	 �.
�D�F�F��
�������������+�+�+�+�+r c�:�|�|j��dSrC)r�rnrIs r�test_IOBase_destructorzIOTest.test_IOBase_destructor�s���#�#�D�K�0�0�0�0�0r c�:�|�|j��dSrC)r�rJrIs r�test_RawIOBase_destructorz IOTest.test_RawIOBase_destructor�s���#�#�D�N�3�3�3�3�3r c�:�|�|j��dSrC)r�r4rIs r�test_BufferedIOBase_destructorz%IOTest.test_BufferedIOBase_destructor�s���#�#�D�$7�8�8�8�8�8r c�:�|�|j��dSrC)r�rIrIs r�test_TextIOBase_destructorz!IOTest.test_TextIOBase_destructor�s���#�#�D�O�4�4�4�4�4r c�b�|�tjd��5}|�d��ddd��n#1swxYwY|�tjd��5}|�|���d��ddd��dS#1swxYwYdS)Nrr�r	�r0rr�rFr�rprs  r�test_close_flusheszIOTest.test_close_flushes�s��
�Y�Y�y�'��
.�
.�	�!�
�G�G�F�O�O�O�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�
�Y�Y�y�'��
.�
.�	/�!����Q�V�V�X�X�v�.�.�.�	/�	/�	/�	/�	/�	/�	/�	/�	/�	/�	/�	/����	/�	/�	/�	/�	/�	/�#�A�A�
A�.)B$�$B(�+B(c�r����tjdtd�����t����������fd�}|������|��tjd����|����	������|��
��	������|����	����	������dS)N�ir�c���|5��|�������|��f��ddd��dS#1swxYwYdSrC)r�rFr)r3r�rar?s ���r�checkz'IOTest.test_array_writes.<locals>.check�s�����
#�
#�� � �������Q�/�/�/����a�T�"�"�"�
#�
#�
#�
#�
#�
#�
#�
#�
#�
#�
#�
#����
#�
#�
#�
#�
#�
#s�AA�A�Ar)r)�ranger�tobytesr,rrr�r(rlr+r/)r?r�r�ras` @@r�test_array_writeszIOTest.test_array_writes�s������K��U�2�Y�Y�'�'����	�	������	#�	#�	#�	#�	#�	#�	#�	��d�l�l�n�n����
��d�k�k�)�*�C�0�0�1�1�1�
��d�!�!�$�.�.�"2�"2�3�3�4�4�4�
��d�!�!�$�.�.�"2�"2�3�3�4�4�4�
��d�!�!�$�.�.�"2�"2�D�N�N�4D�4D�E�E�F�F�F�F�Fr c�d�|�t|jtjddd���dS)NrrF�r/�closefd�r�r�r0rr�rIs r�test_closefdzIOTest.test_closefd�s;�����*�d�i��1A�3�#*�E�	�	;�	;�	;�	;�	;r c��|�tjdd���5}|�d��ddd��n#1swxYwY|�tjdd���5}|�|���ddd���}|�|���d��|�d��|���|�	t|j��ddd��n#1swxYwY|�tjd	��5}|�|���d	d�
��}|�|���dd�d��|���|�	t|jtd
����ddd��dS#1swxYwYdS)Nrrr.�egg
r,Fr�rr	�r�r�seggr])
r0rr�rFrOr�rprWr�r�r�rbr��r?r3�files   r�test_read_closedzIOTest.test_read_closed�s`��
�Y�Y�y�'��w�Y�
?�
?�	�1�
�G�G�G����	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�
�Y�Y�y�'��w�Y�
?�
?�	5�1��9�9�Q�X�X�Z�Z��w��9�N�N�D����T�Y�Y�[�[�'�2�2�2��I�I�a�L�L�L��J�J�L�L�L����j�$�)�4�4�4�	5�	5�	5�	5�	5�	5�	5�	5�	5�	5�	5����	5�	5�	5�	5��Y�Y�y�'��
.�
.�	G�!��9�9�Q�X�X�Z�Z��u�9�=�=�D����T�Y�Y�[�[��!��_�f�5�5�5��J�J�L�L�L����j�$�-��1���F�F�F�		G�	G�	G�	G�	G�	G�	G�	G�	G�	G�	G�	G����	G�	G�	G�	G�	G�	Gs7�A�A	�A	�2BD�D�"D�BG0�0G4�7G4c�d�|�t|jtjddd���dS)Nr,rFr�r�rIs r�test_no_closefd_with_filenamez$IOTest.test_no_closefd_with_filename�s;�����*�d�i��1A�3�#*�E�	�	;�	;�	;�	;�	;r c��|�tjd��5}|�d��ddd��n#1swxYwY|�tjdd���5}|�|jjjd��|�|���ddd���}|�|jjjd��ddd��dS#1swxYwYdS)	Nrsegg
r,rr.TFr�)	r0rr�rFr�r��rawr�rOr�s   r�test_closefd_attrzIOTest.test_closefd_attr�sT��
�Y�Y�y�'��
.�
.�	�!�
�G�G�H����	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�
�Y�Y�y�'��w�Y�
?�
?�	=�1����Q�X�\�1�4�8�8�8��9�9�Q�X�X�Z�Z��w��9�N�N�D����T�[�_�4�e�<�<�<�	=�	=�	=�	=�	=�	=�	=�	=�	=�	=�	=�	=����	=�	=�	=�	=�	=�	=s$�A�A�
A�0A6C3�3C7�:C7c�2�tjdtf��5|�tjd��}|�d��||_tj	|��}~tj��ddd��n#1swxYwY|�|��|��|�
tjd��5}|�|���d��ddd��dS#1swxYwYdS)Nr�rsabcxxxr	)rr�r�rrr�rFr3�weakref�refrr��assertIsNoner0r�rp)r?r3�wrs   r�test_garbage_collectionzIOTest.test_garbage_collection�sq���
+�R��,A�
B�
B�	!�	!����I�,�d�3�3�A�
�G�G�I�����A�C���Q���B���� � � �
	!�	!�	!�	!�	!�	!�	!�	!�	!�	!�	!����	!�	!�	!�	!�	
���"�"�$�$��#�#�#�
�Y�Y�y�'��
.�
.�	2�!����Q�V�V�X�X�y�1�1�1�	2�	2�	2�	2�	2�	2�	2�	2�	2�	2�	2�	2����	2�	2�	2�	2�	2�	2s$�A%B
�
B�B�)D�D�Dc��d}tj�|��s(|�d�|����t
jdkr|�d��tjtj	kr|�d��|�
|dd���5}|�t|j
��ddd��n#1swxYwY|�
|d��5}|�t|j
��ddd��n#1swxYwY|�
|d	��5}|�t|j
��ddd��dS#1swxYwYdS)
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	rrr,)r�path�existsr�formatrL�maxsizer�real_max_memuse�_2Gr0r�r�rp)r?�zeror3s   r�test_unbounded_filezIOTest.test_unbounded_files�����w�~�~�d�#�#�	=��M�M�.�5�5�d�;�;�<�<�<��;��#�#��M�M�G�H�H�H��"�W�[�0�0��M�M�B�C�C�C�
�Y�Y�t�T�Q�Y�
/�
/�	5�1����m�Q�V�4�4�4�	5�	5�	5�	5�	5�	5�	5�	5�	5�	5�	5����	5�	5�	5�	5�
�Y�Y�t�T�
"�
"�	5�a����m�Q�V�4�4�4�	5�	5�	5�	5�	5�	5�	5�	5�	5�	5�	5����	5�	5�	5�	5�
�Y�Y�t�S�
!�
!�	5�Q����m�Q�V�4�4�4�	5�	5�	5�	5�	5�	5�	5�	5�	5�	5�	5�	5����	5�	5�	5�	5�	5�	5s6�6!C#�#C'�*C'�!D1�1D5�8D5�!F�F�Fc�&���|j|i|���g���fd�}|�_|�t�j��|��j��|����|��d��d��_dS)Nc�:���jg�dd�<t���rCr�)r�r3s��r�	bad_flushz4IOTest.check_flush_error_on_close.<locals>.bad_flush!s�����
�F�1�1�1�I��)�)�Or rc��dSrCr&r&r r�<lambda>z3IOTest.check_flush_error_on_close.<locals>.<lambda>)���$�r )r0r�r�r�r��
assertTruer��assertFalse)r?r��kwargsr�r�r3s    @@r�check_flush_error_on_closez!IOTest.check_flush_error_on_closes�����
�D�I�t�&�v�&�&����	�	�	�	�	�	�������'�1�7�+�+�+������!�!�!��������������#�#�#��,����r c���|�tjdd���tjtjtjtjz��}|�|dd���tjtjtjtjz��}|�|ddd���tj|��|�tjd��tjtjtjtjz��}|�|d��tjtjtjtjz��}|�|dd���tj|��|�tjdd�	��tjtjtjtjz��}|�|dd�	��tjtjtjtjz��}|�|ddd�
��tj|��dS)NrrrF)rr�r�rrr.r�)r�rr�rr0�O_WRONLY�O_CREATr�)r?�fds  r�test_flush_error_on_closez IOTest.test_flush_error_on_close+s���	
�'�'�	�(8�$�!�'�L�L�L�
�W�Y�%�r�{�2�:�'=�
>�
>���'�'��D�A�'�>�>�>�
�W�Y�%�r�{�2�:�'=�
>�
>���'�'��D�A�u�'�M�M�M�
�������'�'�	�(8�$�?�?�?�
�W�Y�%�r�{�2�:�'=�
>�
>���'�'��D�1�1�1�
�W�Y�%�r�{�2�:�'=�
>�
>���'�'��D�%�'�@�@�@�
�������'�'�	�(8�#��'�P�P�P�
�W�Y�%�r�{�2�:�'=�
>�
>���'�'��C�'�'�B�B�B�
�W�Y�%�r�{�2�:�'=�
>�
>���'�'��C�'�5�'�Q�Q�Q�
�������r c��|�tjdd���}|���|���|���|�t
|j��dS)Nrrr)r0rr�r�r�r�r�rs  r�test_multi_closezIOTest.test_multi_closeCsa���I�I�i�&���I�:�:��	���	�	�	�	���	�	�	�	���	�	�	����*�a�g�.�.�.�.�.r c��|�d��}|�|�d��d��|�|�d��d��|�|�d��d��|�|�d��d��|�|�d��d��|�|�d��d��|�|�d��d��|�|�d��d��dS)	N)�abc�dN�efgNrz�ab�cr��ef�gr )r7r�rp�r?�rawios  r�test_RawIOBase_readzIOTest.test_RawIOBase_readJs���)�)�*L�M�M��������A����.�.�.�������A����-�-�-�������A����-�-�-�������A����-�-�-�������A����.�.�.�������A����-�-�-�������A����-�-�-�������A����,�,�,�,�,r c��|���|���|���|���|���f}|D]%}|�t
|d�����&dS)N�__dict__)rnrJrIrFr,r��hasattr)r?rPrs   r�test_types_have_dictzIOTest.test_types_have_dictWs~���K�K�M�M��N�N����O�O����M�M�O�O��L�L�N�N�
���	6�	6�C��O�O�G�C��4�4�5�5�5�5�	6�	6r c���|�tjdd���5}|�d��ddd��n#1swxYwYt	jtjtj����fd�}|�ddd|���5}|�|���d��ddd��dS#1swxYwYdS)	Nrrr.r�c����SrCr&)r��flagsr�s  �r�openerz"IOTest.test_opener.<locals>.openerfs����Ir �non-existentr,)r/r)r0rr�rFr�O_RDONLYr�rp)r?r3rr�s   @r�test_openerzIOTest.test_openerbsK���
�Y�Y�y�'��w�Y�
?�
?�	�1�
�G�G�G����	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�
�W�Y�%�r�{�
3�
3��	�	�	�	�	�
�Y�Y�~�s�W�V�Y�
L�
L�	0�PQ����Q�V�V�X�X�w�/�/�/�	0�	0�	0�	0�	0�	0�	0�	0�	0�	0�	0�	0����	0�	0�	0�	0�	0�	0s#�A�A
�
A
�)C�C�Cc���d�}|�t��5}tdd|���ddd��n#1swxYwY|�t	|j��d��dS)Nc��dS�Nr�r&��fnamers  r�	badopenerz4IOTest.test_bad_opener_negative_1.<locals>.badopenerm����2r r
r,�rzopener returned -1�r�r�r0r��str�	exception�r?r�cms   r�test_bad_opener_negative_1z!IOTest.test_bad_opener_negative_1k���	�	�	�
�
�
�z�
*�
*�	8�b����Y�7�7�7�7�	8�	8�	8�	8�	8�	8�	8�	8�	8�	8�	8����	8�	8�	8�	8�����R�\�*�*�,@�A�A�A�A�A��=�A�Ac���d�}|�t��5}tdd|���ddd��n#1swxYwY|�t	|j��d��dS)Nc��dS)N���r&rs  rrz8IOTest.test_bad_opener_other_negative.<locals>.badopenerurr r
r,rzopener returned -2rrs   r�test_bad_opener_other_negativez%IOTest.test_bad_opener_other_negativesrrc���tj���|�t��5}|�d�fd����ddd��n#1swxYwY|�|jjtj��dS)N�fooc����SrCr&)�namerr�s  �rr�z/IOTest.test_opener_invalid_fd.<locals>.<lambda>�s����r r)	r�make_bad_fdr�r�r0r�r�errno�EBADF)r?rr�s  @r�test_opener_invalid_fdzIOTest.test_opener_invalid_fd{s�����
"�
$�
$��
�
�
�w�
'�
'�	<�2��I�I�e�$:�$:�$:�$:�I�;�;�;�	<�	<�	<�	<�	<�	<�	<�	<�	<�	<�	<����	<�	<�	<�	<������+�U�[�9�9�9�9�9s�A�A�Ac���|�td��5}|�td��5}|�|���d���}|�|���d���|���|���|���ddd��n#1swxYwYddd��dS#1swxYwYdS)Nr	Fr�)r0r1rrOrArr�)r?�f1�f2�fileios    r�test_fileio_closefdzIOTest.test_fileio_closefd�s@��
�Y�Y�x��
&�
&�	�"�
�Y�Y�x��
&�
&�	�*,��[�[������e�[�<�<�F��O�O�B�I�I�K�K��O�7�7�7��K�K�M�M�M��L�L�N�N�N��K�K�M�M�M�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�	�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�	�	s5�C+�BC�C+�C	�C+�C	�C+�+C/�2C/c�
�tj|��5|�t��5|�t
jddd���ddd��n#1swxYwYddd��dS#1swxYwYdS)Nrrr�r/r�r�check_no_resource_warningr�r�r0rr�rIs r�test_nonbuffered_textiozIOTest.test_nonbuffered_textio�s"��
�
6�t�
<�
<�	P�	P��"�"�:�.�.�
P�
P��	�	�)�*�C�'�Q�	�O�O�O�
P�
P�
P�
P�
P�
P�
P�
P�
P�
P�
P����
P�
P�
P�
P�	P�	P�	P�	P�	P�	P�	P�	P�	P�	P�	P�	P����	P�	P�	P�	P�	P�	P�4�A8�$A �A8� A$	�$A8�'A$	�(A8�8A<�?A<c�
�tj|��5|�t��5|�t
jddd���ddd��n#1swxYwYddd��dS#1swxYwYdS)Nrr�invalid�r/�newliner3rIs r�test_invalid_newlinezIOTest.test_invalid_newline�s"��
�
6�t�
<�
<�	V�	V��"�"�:�.�.�
V�
V��	�	�)�*�C�'�9�	�U�U�U�
V�
V�
V�
V�
V�
V�
V�
V�
V�
V�
V����
V�
V�
V�
V�	V�	V�	V�	V�	V�	V�	V�	V�	V�	V�	V�	V����	V�	V�	V�	V�	V�	Vr6c	�b�Gd�d|j��}|��}dD]�}|�|��5td��}|�t	||��|��d��|�t|��d��ddd��n#1swxYwY��dS)Nc��eZdZd�ZeZdS)�3IOTest.test_buffered_readinto_mixin.<locals>.Streamc��dS)N�12345r&�r?�sizes  rrpz8IOTest.test_buffered_readinto_mixin.<locals>.Stream.read�s���xr N)r#r$r%rp�read1r&r r�Streamr>�s"������
 �
 �
 ��E�E�Er rD�rbr�r�r@)r4rGrr��getattrr)r?rD�stream�methodr�s     r�test_buffered_readinto_mixinz#IOTest.test_buffered_readinto_mixin�s��	�	�	�	�	�T�(�	�	�	������/�	:�	:�F����f�%�%�
:�
:�"�1����� � �!8����!8�!8��!@�!@�!�D�D�D�� � ��v����9�9�9�
:�
:�
:�
:�
:�
:�
:�
:�
:�
:�
:����
:�
:�
:�
:��	:�	:s�A B#�#B'	�*B'	c�<���fd�}|ttj����|ttjtj��������tjdd���5}t|�����}��t��5��|dd���ddd��n#1swxYwYddd��n#1swxYwYtd��}��t��5��|dd���ddd��n#1swxYwYtt��}��t��5��|dd���ddd��n#1swxYwY��
td��5��ttj��dd���ddd��dS#1swxYwYdS)Nc�D����|dd���5}|�d��ddd��n#1swxYwY��|dd���5}��|���d��ddd��dS#1swxYwYdS)Nrrr.r�r,)r0rFr�rp)r�r3r?s  �r�check_path_succeedsz7IOTest.test_fspath_support.<locals>.check_path_succeeds�s������4��w��7�7�
!�1����� � � �
!�
!�
!�
!�
!�
!�
!�
!�
!�
!�
!����
!�
!�
!�
!����4��w��7�7�
4�1�� � ������7�3�3�3�
4�
4�
4�
4�
4�
4�
4�
4�
4�
4�
4�
4����
4�
4�
4�
4�
4�
4s!�<�A�A�)B�B�Brrr.zread/write/append mode�rwxa)rrr�r�fsencoder0rOr�r��FloatingPointError�assertRaisesRegexr�)r?rLr3�bad_paths`   r�test_fspath_supportzIOTest.test_fspath_support�s7���	4�	4�	4�	4�	4�	��H�Y�%5�6�6�7�7�7���H�R�[��1A�%B�%B�C�C�D�D�D�
�Y�Y�y�'��w�Y�
?�
?�	;�1�����
�
�+�+�H��"�"�9�-�-�
;�
;��	�	�(�C�'�	�:�:�:�
;�
;�
;�
;�
;�
;�
;�
;�
;�
;�
;����
;�
;�
;�
;�	;�	;�	;�	;�	;�	;�	;�	;�	;�	;�	;����	;�	;�	;�	;�
�D�>�>��
�
�
�y�
)�
)�	7�	7��I�I�h��g�I�6�6�6�	7�	7�	7�	7�	7�	7�	7�	7�	7�	7�	7����	7�	7�	7�	7��.�/�/��
�
�
�1�
2�
2�	7�	7��I�I�h��g�I�6�6�6�	7�	7�	7�	7�	7�	7�	7�	7�	7�	7�	7����	7�	7�	7�	7��
#�
#�J�0H�
I�
I�	L�	L��I�I�h�y�/�0�0�&�7�I�K�K�K�	L�	L�	L�	L�	L�	L�	L�	L�	L�	L�	L�	L����	L�	L�	L�	L�	L�	Lsl�?<C7�;C �C7� C$	�$C7�'C$	�(C7�7C;�>C;�+E�E�E�	F.�.F2�5F2�0H�H�Hc��|�d��}|�|���d��|�d��}|�|���d��dS�N�r�r�r��abcdefg)r7r�rp�readallrs  r�test_RawIOBase_readallzIOTest.test_RawIOBase_readall�sn���)�)�*@�A�A����������z�2�2�2��)�)�*@�A�A����������*�5�5�5�5�5r c	��Gd�d|j��}d}d}|D�]>}|�|��5|\}}}}|tt|������}	t	|f|z��}
t|	|��}|�||
��|��|�t|
��|��|�|
d|�t|����|f||z
z}|�|
|d�|��|�t|	j	��||z
��ddd��n#1swxYwY��@dS)Nc� �eZdZd�Zd�Zd�ZdS)�3IOTest.test_BufferedIOBase_readinto.<locals>.Readerc��||_dSrC��avail)r?r^s  rrAz<IOTest.test_BufferedIOBase_readinto.<locals>.Reader.__init__�s
��"��
�
�
r c�L�|jd|�}|j|d�|_|SrCr])r?rB�results   rrpz8IOTest.test_BufferedIOBase_readinto.<locals>.Reader.read�s)����E�T�E�*��!�Z����.��
��
r c�H�|�t|d����S)z$Returns no more than 5 bytes at oncer�)rp�minrAs  rrCz9IOTest.test_BufferedIOBase_readinto.<locals>.Reader.read1�s���y�y��T�1���.�.�.r N)r#r$r%rArprCr&r r�Readerr[�sA������
#�
#�
#�
�
�
�
/�
/�
/�
/�
/r rc)
)rbr�r�r�)rbr�r�r�)rbr�r�r�)rbr��r�)rbr�rr)r�r�r�r�)r�r�r�r�)r�r�r�r�)r�r�rdr�)r�r�rr�)
r4rGrr�r�rFr�r�assertSequenceEqualr^)r?rcrO�UNUSED_BYTErPrHr^�requestr`�readerr��unuseds            r�test_BufferedIOBase_readintoz#IOTest.test_BufferedIOBase_readinto�s���		/�		/�		/�		/�		/�T�(�		/�		/�		/�

�����	D�	D�D����d�#�#�

D�

D�15�.���w�����e�E�l�l� 3� 3�4�4��"�K�>�G�#;�<�<�� ���0�0��� � �������8�8�8�� � ��V���g�6�6�6��(�(������%��-�-�H�H�H�%��7�V�+;�<���(�(������&�A�A�A�� � ��V�\�!2�!2�E�F�N�C�C�C�

D�

D�

D�

D�

D�

D�

D�

D�

D�

D�

D����

D�

D�

D�

D��	D�	Ds�DE
�
E	�E	c��Gd�d|j��}|��}|�t|j��d�|_dS)Nc��eZdZd�Zd�ZdS)�#IOTest.test_close_assert.<locals>.Rc��dSrCr&)r?r'�values   r�__setattr__z/IOTest.test_close_assert.<locals>.R.__setattr__�����r c��t���rC�r�rIs rr�z)IOTest.test_close_assert.<locals>.R.flush�s���i�i�r N)r#r$r%rqr�r&r rrlrn�s2������
�
�
�
 �
 �
 �
 �
 r rlc��dSrCr&rIs rr�z*IOTest.test_close_assert.<locals>.<lambda>����t�r )rnr�r�r�r�)r?rlr3s   r�test_close_assertzIOTest.test_close_assert�sc��	 �	 �	 �	 �	 ���	 �	 �	 �

�A�C�C�����'�1�7�+�+�+�$�#����r N�F);r#r$r%r�r�r�r�r�rr�unittest�skipIfr�
is_emscripten�
skipUnlessrrrRr[r^r`rfrrryr|r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rrrrr#r+r0r5r;rIrRrXrkrwr&r rr�r�=sg������+�+�+�+�+�+�2�2�2�04�4�4�4�B
�E�*�*�*�(?�?�?�2�X�_���F����X�����V�,�,�.B�C�C�f@�f@�D�C���f@�PV�V�V�
�
�
�
#�
#�
#�:�:�:�A�A�A�7�7�7����#�#�#�
;�
;�
;� ,�,�,�3�3�3�4,�,�,�<1�1�1�4�4�4�9�9�9�5�5�5�/�/�/�G�G�G�;�;�;�
G�
G�
G�;�;�;�
=�=�=�2�2�2�5�5�5� 
�
�
����0/�/�/�-�-�-�	6�	6�	6�0�0�0�B�B�B�B�B�B�:�:�:�
�
�
�P�P�P�
V�V�V�
:�:�:�L�L�L�86�6�6�'D�'D�'D�R$�$�$�$�$r r�c��eZdZd�ZdS)�CIOTestc���Gd�d|j��}|��|��}||_tj|��}~~t	j��|�|��|��dS)Nc��eZdZd�ZdS)�*CIOTest.test_IOBase_finalize.<locals>.MyIOc��dSrCr&rIs rr�z0CIOTest.test_IOBase_finalize.<locals>.MyIO.closerrr N�r#r$r%r�r&r rr�r�s#������
�
�
�
�
r r�)rnrr�r�rr�r�)r?r�rr�s    r�test_IOBase_finalizezCIOTest.test_IOBase_finalizes���	�	�	�	�	�4�;�	�	�	�
	
������d�f�f�����
�[��
�
������������"�"�$�$��#�#�#�#�#r N)r#r$r%r�r&r rr~r~s#������$�$�$�$�$r r~c��eZdZdS)�PyIOTestNr"r&r rr�r�rhr r�c��eZdZd�Zd�ZdS)�APIMismatchTestc��tjtjtjd���}|�|t
��d���dS)z:Test that pyio RawIOBase class has all c RawIOBase methods)�__weakref__)rTz6Python RawIOBase does not have all C RawIOBase methods��msgN)r�detect_api_mismatchr�rJr�r�r��r?�mismatchs  r�test_RawIOBase_io_in_pyio_matchz/APIMismatchTest.test_RawIOBase_io_in_pyio_matchsM���.�t�~�r�|�6F�H�H�H������3�5�5�.f��g�g�g�g�gr c��tjtjtj��}|�|t
��d���dS)z:Test that c RawIOBase class has all pyio RawIOBase methodsz6C RawIOBase does not have all Python RawIOBase methodsr�N)rr�r�rJr�r�r�r�s  r�test_RawIOBase_pyio_in_io_matchz/APIMismatchTest.test_RawIOBase_pyio_in_io_match"s>���.�r�|�T�^�L�L������3�5�5�.f��g�g�g�g�gr N)r#r$r%r�r�r&r rr�r�s:������h�h�h�h�h�h�h�hr r�c�b�eZdZd�Zd�Zd�Zd�Zd�Zd�Zd�Z	d�Z
d	�Zd
�Zd�Z
d�Zd
�Zd�ZdS)�CommonBufferedTestsc��|���}|�|��}|�|���|��|�t
|j��t
|��dSrC)rl�tp�assertIs�detachr�r��repr�r?r�r_s   r�test_detachzCommonBufferedTests.test_detach+sc���n�n�����g�g�c�l�l���
�
�c�j�j�l�l�C�(�(�(����*�c�j�1�1�1��S�	�	�	�	�	r c��|���}|�|��}|�d|�����dSrM)rlr�r�rO�r?r�bufios   r�test_filenozCommonBufferedTests.test_fileno3sD����� � �������������U�\�\�^�^�,�,�,�,�,r c���|���}|�|��}|�t|jdd��|�t|jdd��dS)Nrr�r�)rlr�r�r�rWr�s   r�test_invalid_argsz%CommonBufferedTests.test_invalid_args9s^����� � ������������*�e�j�!�R�8�8�8����*�e�j�!�Q�7�7�7�7�7r c����|j}g�G�fd�d|��}|���}||��}~tj��|��gd���dS)Nc�:���eZdZ��fd�Z��fd�Z��fd�Z�xZS)�BCommonBufferedTests.test_override_destructor.<locals>.MyBufferedIOc�����d��	t��j}|��dS#t$rYdSwxYwr�r�r�s  ��rr�zJCommonBufferedTests.test_override_destructor.<locals>.MyBufferedIO.__del__Dr�r�c�r����d��t�����dSryr�r�s ��rr�zHCommonBufferedTests.test_override_destructor.<locals>.MyBufferedIO.closeLr�r c�r����d��t�����dSr�r�r�s ��rr�zHCommonBufferedTests.test_override_destructor.<locals>.MyBufferedIO.flushOr�r r�r�s@�r�MyBufferedIOr�Cr�r r�r�)r�rlrr�r�)r?r�r�rr�r�s     @r�test_override_destructorz,CommonBufferedTests.test_override_destructor@s����
�W����	 �	 �	 �	 �	 �	 �	 �2�	 �	 �	 ���� � ����U�#�#���������������+�+�+�+�+r c���|���}|�|����fd�}|��|�t|��dS)Nc�@���5	ddd��dS#1swxYwYdSrCr&�r�s�r�_withz7CommonBufferedTests.test_context_manager.<locals>._with\sp����
�
��
�
�
�
�
�
�
�
�
�
�
�
����
�
�
�
�
�
s���)rlr�r�r�)r?rr�r�s   @r�test_context_managerz(CommonBufferedTests.test_context_managerXse������ � ���������	�	�	�	�	�	�����	
���*�e�,�,�,�,�,r c��|���}tj��5}|�t��5|�|��jddd��n#1swxYwYts|�|j	��n,|j	�%|�
|j	jt��ddd��dS#1swxYwYdSrC)
r�r�catch_unraisable_exceptionr�r�r��xyzzy�IOBASE_EMITS_UNRAISABLEr��
unraisabler��exc_typer��r?rrs   r�test_error_through_destructorz1CommonBufferedTests.test_error_through_destructords[���#�#�%�%��
�
/�
1�
1�	B�R��"�"�>�2�2�
%�
%�������$�$�
%�
%�
%�
%�
%�
%�
%�
%�
%�
%�
%����
%�
%�
%�
%�+�
B��!�!�"�-�0�0�0�0���*�� � ���!7��A�A�A�	B�	B�	B�	B�	B�	B�	B�	B�	B�	B�	B�	B����	B�	B�	B�	B�	B�	Bs6�C�A*�C�*A.	�.C�1A.	�2AC�C�Cc��|���}|�|��}d|jj�d|jj��}|�t|��d|z��d|_|�t|��d|z��d|_|�t|��d|z��dS)N�(z\.)?z<%s>�dummyz<%s name='dummy'>�dummyz<%s name=b'dummy'>)rlr�r$r%�assertRegexr�r')r?r�r(�clsnames    r�	test_reprzCommonBufferedTests.test_reprqs����n�n�����G�G�C�L�L���"&�'�"4�"4�"4�d�g�6J�6J�K������a���&�7�"2�3�3�3��������a���"5��"?�@�@�@��������a���"6��"@�A�A�A�A�Ar c��|���}|�|��}tj|d|��5	t	|��n#t
$rYnwxYwddd��dS#1swxYwYdS)Nr')rlr�r�	swap_attrr��RuntimeError�r?r�r(s   r�test_recursive_reprz'CommonBufferedTests.test_recursive_repr{s����n�n�����G�G�C�L�L��
�
�s�F�A�
.�
.�	�	�
��Q�������
�
�
���
����	�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�	�	s6�A/�A�A/�
A�A/�A�A/�/A3�6A3c������|����g����fd�}|�_|�����|�t�j��|��j��|��j��|����|��d��|��d��d��_dS)Nc�F���j�jg�dd�<t���rCr�)r(r�r�s���rr�z@CommonBufferedTests.test_flush_error_on_close.<locals>.bad_flush�s"�����3�:�.�F�1�1�1�I��)�)�Or rr]c��dSrCr&r&r rr�z?CommonBufferedTests.test_flush_error_on_close.<locals>.<lambda>����D�r )	rlr�r�r�r�r�r�r�r�)r?r�r(r�r�s  @@@rr�z-CommonBufferedTests.test_flush_error_on_close�s�������n�n������	�	�	�	�	�	�	���	��G�G�C�L�L�����'�1�7�+�+�+������!�!�!�����
�#�#�#��������������#�#�#�������#�#�#� �L��	�	�	r c�4�|���}d�}d�}||_|�|��}||_|�t
��5}|���ddd��n#1swxYwY|�|jjd��|�	|jj
t
��|�|jj
jd��|�|j��d�|_d�|_dS)Nc� �td����Nr�rtr&r rr�z@CommonBufferedTests.test_close_error_on_close.<locals>.bad_flush�����'�"�"�"r c� �td����Nr�rtr&r r�	bad_closez@CommonBufferedTests.test_close_error_on_close.<locals>.bad_close�r�r �r��r�c��dSrCr&r&r rr�z?CommonBufferedTests.test_close_error_on_close.<locals>.<lambda>�r�r c��dSrCr&r&r rr�z?CommonBufferedTests.test_close_error_on_close.<locals>.<lambda>�r�r )
rlr�r�r�r�r�r�rr��assertIsInstance�__context__r�r��r?r�r�r�r(�errs      r�test_close_error_on_closez-CommonBufferedTests.test_close_error_on_close�sA���n�n����	#�	#�	#�	#�	#�	#���	��G�G�C�L�L�����
�
�
�w�
'�
'�	�3�
�G�G�I�I�I�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	������+�Z�8�8�8����c�m�7��A�A�A������2�7��D�D�D������"�"�"�!�L��	��,������A9�9A=�A=c�T�|���}d�}d�}||_|�|��}||_|�t
��5}|���ddd��n#1swxYwY|�dt|j����|�	|jj
t
��|�dt|jj
����|�|j��d�|_d�|_dS)Nc��t�rC��non_existing_flushr&r rr�zNCommonBufferedTests.test_nonnormalized_close_error_on_close.<locals>.bad_flush����$�$r c��t�rC��non_existing_closer&r rr�zNCommonBufferedTests.test_nonnormalized_close_error_on_close.<locals>.bad_close�r�r r�r�c��dSrCr&r&r rr�zMCommonBufferedTests.test_nonnormalized_close_error_on_close.<locals>.<lambda>�r�r c��dSrCr&r&r rr�zMCommonBufferedTests.test_nonnormalized_close_error_on_close.<locals>.<lambda>�r�r )
rlr�r�r�r��	NameError�assertInrrr�r�r�r�r�s      r�'test_nonnormalized_close_error_on_closez;CommonBufferedTests.test_nonnormalized_close_error_on_close�sI���n�n����	%�	%�	%�	%�	%�	%���	��G�G�C�L�L�����
�
�
�y�
)�
)�	�S�
�G�G�I�I�I�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	��
�
�*�C��
�,>�,>�?�?�?����c�m�7��C�C�C��
�
�*�C��
�0I�,J�,J�K�K�K������"�"�"��,��� �L��	�	�	r�c��|���}|�|��}|���|���|���|�t|j��dSrC)rlr�r�r�r�r�r�s   rr�z$CommonBufferedTests.test_multi_close�se���n�n�����G�G�C�L�L��	���	�	�	�	���	�	�	�	���	�	�	����*�a�g�.�.�.�.�.r c���|�|�d����}|�|j|j��|�|j|jd��dS)N�
AAAAAAAAAAr)r�r�r�r�rZrW�r?r�s  r�test_unseekablez#CommonBufferedTests.test_unseekable�s_������-�-�i�8�8�9�9�����$�3�U�Z�@�@�@����$�3�U�Z��C�C�C�C�Cr c���|���}|�|��}|���}|�t��5||_ddd��dS#1swxYwYdSrC)rlr�r�r�r�)r?r�r_�xs    r�test_readonly_attributesz,CommonBufferedTests.test_readonly_attributes�s����n�n�����g�g�c�l�l���N�N����
�
�
�~�
.�
.�	�	��C�G�	�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�	�	s�A-�-A1�4A1N)r#r$r%r�r�r�r�r�r�r�r�r�r�r�r�r�r�r&r rr�r�(s����������-�-�-�8�8�8�,�,�,�0
-�
-�
-�B�B�B�B�B�B����!�!�!�$���(!�!�!�*/�/�/�D�D�D�
����r r�c�N�eZdZejd���Zejd���ZdS)�
SizeofTestc�>�d}d}|���}|�||���}tj|��|z
}|���}|�||���}|�tj|��||z��dS)N�� ��buffer_size)rlr�rL�	getsizeofr�)r?�bufsize1�bufsize2rr�rBs      r�test_sizeofzSizeofTest.test_sizeof�s���������� � ������8��4�4���}�U�#�#�h�.����� � ������8��4�4�������u�-�-�t�h��?�?�?�?�?r c��d}|���}|�||���}tj|��|z
}|���|�tj|��|��dS)Nr�r�)rlr�rLr�r�r�)r?r�rr�rBs     r�test_buffer_freeingzSizeofTest.test_buffer_freeing�sr������� � ������7��3�3���}�U�#�#�g�-��
���
�
�
������u�-�-�t�4�4�4�4�4r N)r#r$r%r�cpython_onlyr�r�r&r rr�r��sS��������@�@���@�
��5�5���5�5�5r r�c���eZdZdZd�Zd�Zd�Zd�Zd�Zd�Z	d�Z
d	�Zd
�Zd�Z
d�Zd
�Zd�Zd�Zejd��ej��d�����Zd�Zd�Zd�Zd�Zd�ZdS)�BufferedReaderTestr	c��|�dg��}|�|��}|�|��|�|d���|�|d���|�d|�����|�t|j|d���|�t|j|d���|�t|j|d���|�dg��}|�|��|�d|�����dS)Nr��r��r��r�)rlr�rAr�rpr�r�r�s   r�test_constructorz#BufferedReaderTest.test_constructor�s&������x�(�(���������
���u����
���u�$��/�/�/�
���u�"��-�-�-����������.�.�.����*�e�n�e���K�K�K����*�e�n�e���M�M�M����*�e�n�e���L�L�L�����x�(�(��
���u�������������.�.�.�.�.r c�v�|j�|j��}~|j�|j��}|�ttfd|jd��|�|�����|�|�d��d��dS�N�uninitialized|has no attributerr )	r��__new__rPr�r�rprArlr�r�s  r�test_uninitializedz%BufferedReaderTest.test_uninitialized�s���������(�(���������(�(�����
�N�;�?�$�z�1�	.�	.�	.�	���t�~�~�'�'�(�(�(�������A����,�,�,�,�,r c��dD]U}|�d��}|�|��}|�d|�|�����V|�t
|jd��dS)N)NrdrUrVr")rlr�r�rpr�r�)r?�argrr�s    r�	test_readzBufferedReaderTest.test_readsu���	:�	:�C��N�N�#9�:�:�E��G�G�E�N�N�E����Z����C���9�9�9�9����*�e�j�"�5�5�5�5�5r c��|�d��}|�|��}|�d|�d����|�d|�d����|�|jd��|�d|�d����|�d|�d����|�|jd��|�d	|�d����|�|jd
��|�d|�d����|�|jd��|�d|�d����|�|jd
��dS)NrU�ar]�br rr�rr�rzr�r�re�rlr�r�rprCr=r�s   r�
test_read1zBufferedReaderTest.test_read1s������5�6�6�������������u�z�z�!�}�}�-�-�-�����u�{�{�1�~�~�.�.�.������q�)�)�)�����e�k�k�!�n�n�-�-�-�����u�{�{�3�/�/�0�0�0������q�)�)�)�����u�{�{�3�/�/�0�0�0������q�)�)�)��������S�!1�!1�2�2�2������q�)�)�)�����e�k�k�#�.�.�/�/�/������q�)�)�)�)�)r c�Z�|�d��}|�|��}|�d|�d����|�d|�����|�d|�����|�d|�d����|�|jd��|�d	|�����|�|jd
��dS)NrUrr]sbcr�r�r�r�r rer
r�s   r�test_read1_arbitraryz'BufferedReaderTest.test_read1_arbitrarys������5�6�6�������������u�z�z�!�}�}�-�-�-��������
�
�.�.�.�����u�{�{�}�}�-�-�-��������R���1�1�1������q�)�)�)�����e�k�k�m�m�,�,�,������q�)�)�)�)�)r c�>�|�d��}|�|��}td��}|�|�|��d��|�|d��|�|�|��d��|�|d��|�|�|��d��|�|d��|�|�|��d��|�|d��|�|�|��d��|�|d��|�d	��}|�|��}|�|�|��d��|�|d��|�|�|��d��|�|d
��dS)NrUrzr��cdrr]sgfr)r�Nscb)rlr�r�r�rb)r?rr�r(s    r�
test_readintoz BufferedReaderTest.test_readinto)s������5�6�6����������a�L�L���������*�*�A�.�.�.�����E�"�"�"��������*�*�A�.�.�.�����E�"�"�"��������*�*�A�.�.�.�����E�"�"�"��������*�*�A�.�.�.�����E�"�"�"��������*�*�A�.�.�.�����E�"�"�"����~�.�.����������������*�*�A�.�.�.�����E�"�"�"��������*�*�A�.�.�.�����E�"�"�"�"�"r c��d}|�d��}|�||���}td��}|�|�d��d��|�|jd��|�|�|��d��|�|d��|�|jd��|�|�|��d��|�|dd�d	��|�|jd��|�|�|��d��|�|d
��|�|jd��td|z��}|�|�d��d��|�|jd��|�|�|��d��|�|dd�d
��|�|jd��dS)Nr�)r��de�fghsjklr�rzr�r�r]r�r�rrr�sfghjklre)rlr�r�r��peekr=r�)r?r�rr�r(s     r�test_readinto1z!BufferedReaderTest.test_readinto1>s�������>�?�?������;��7�7���a�L�L��������A����/�/�/������q�)�)�)��������+�+�Q�/�/�/�����E�"�"�"������q�)�)�)��������+�+�Q�/�/�/�����2�A�2���%�%�%������q�)�)�)��������+�+�Q�/�/�/�����E�"�"�"������q�)�)�)��a��m�$�$��������A����/�/�/������q�)�)�)��������+�+�Q�/�/�/�����2�A�2��	�*�*�*������q�)�)�)�)�)r c	�n�d}d}|�|f��}|�||���}tjdd��}t|��dksJ�|�|��}|�|t|����t
|���d��}|�|t|����|�	|d|�|d|���|�	||d�dt||d���z��dS�	N�<saaaaaaaaaaaaaaaaaaaaaaaaaar�r�s xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxr�rr�)
rlr�r)rrbr�rr�
assertLessr��r?r�rrr�r(ra�bms        r�test_readinto_arrayz&BufferedReaderTest.test_readinto_arrayUs����������w�'�'������;��7�7��
�K��Y�'�'���1�v�v��|�|�|�|�
�N�N�1�������1�c�!�f�f�%�%�%���]�]�
�
��
$�
$������3�r�7�7�#�#�#�����B�Q�B���b�q�b��*�*�*�����A�B�B����R����V���!5�6�6�6�6�6r c	�n�d}d}|�|f��}|�||���}tjdd��}t|��dksJ�|�|��}|�|t|����t
|���d��}|�|t|����|�	|d|�|d|���|�	||d�dt||d���z��dSr)
rlr�r)rr�r�rrrr�rs        r�test_readinto1_arrayz'BufferedReaderTest.test_readinto1_arrayjs����������w�'�'������;��7�7��
�K��Y�'�'���1�v�v��|�|�|�|�
�O�O�A�������1�c�!�f�f�%�%�%���]�]�
�
��
$�
$������3�r�7�7�#�#�#�����B�Q�B���b�q�b��*�*�*�����A�B�B����R����V���!5�6�6�6�6�6r c�B���fd�}��|�����gd�����|���d��ddg����|���d��gd���dS)Nc�X����d��}��|��S)N�rbr�r)rlr�)rr?s �rr�z0BufferedReaderTest.test_readlines.<locals>.bufio�s%����N�N�#<�=�=�E��7�7�5�>�>�!r r$r�rbr��r�rxr�s` r�test_readlinesz!BufferedReaderTest.test_readliness����	"�	"�	"�	"�	"�	
�������*�*�,�,�.G�.G�.G�H�H�H��������*�*�1�-�-��&�/A�B�B�B��������*�*�4�0�0�2K�2K�2K�L�L�L�L�Lr c	�z�d}t|��}dgd�|dggdgd�|ggdgd�gd�gg}|D]�\}}}|�|��}|�||�	��}d}	|D];}
|�|�|
��||	|	|
z���|	|
z
}	�<|�|j|����dS)
N�	abcdefghir)r�r]re�r)r�r�r�re)r]rzrerz)rerer]r�)rr�r�r�rpr�)r?r�dlenrOr��buf_read_sizes�raw_read_sizesrr�r�nbytess           r�test_bufferingz!BufferedReaderTest.test_buffering�s�����4�y�y���>�>�>�T�1�;�0��:�:�:�T�8�0��>�>�>�;�;�;�0�
��8=�	A�	A�3�G�^�^��O�O�D�)�)�E��G�G�E�w�G�7�7�E��C�(�
�
��� � ����F�!3�!3�T�#�c�&�j�.�5I�J�J�J��v�
������U�/��@�@�@�@�	A�	Ar c��|�d��}|�|��}|�d|�d����|�d|�d����|�d|�����|�d|�d����|�|�����|�d|�����|�d��}|�d	|�����|�|�����dS)
N)r�r�Nr�NNN�abcdr��er]sfgr )rNNr)rlr�r�rprr�rWr�s   r�test_read_non_blockingz)BufferedReaderTest.test_read_non_blocking�s-�����M�N�N�������������%�*�*�Q�-�-�0�0�0�����u�z�z�!�}�}�-�-�-������
�
���-�-�-�����e�j�j��m�m�,�,�,����%�*�*�,�,�'�'�'�����e�j�j�l�l�+�+�+����1�2�2������u�}�}���/�/�/����%�-�-�/�/�*�*�*�*�*r c��|�d��}|�|��}|�d|�d����dS)NrUrVi(#�rlr�r�rpr�s   r�test_read_past_eofz%BufferedReaderTest.test_read_past_eof�sK�����5�6�6�������������U�Z�Z��%5�%5�6�6�6�6�6r c��|�d��}|�|��}|�d|�����dSrTr4r�s   r�
test_read_allz BufferedReaderTest.test_read_all�sG�����5�6�6�������������U�Z�Z�\�\�2�2�2�2�2r �cpuc�R��	�
��	d}ttd����|z}tj|��t	t|����}|�tjd��5�
�
�	|��ddd��n#1swxYwY|�tj|j
d���5}|�|d���g�	g���	�fd��
�
fd�td	��D��}tj
|��5tjd
��ddd��n#1swxYwY|��	d�	z��d����}td��D]H}t	t|g����}|�|�|��|���I	ddd��n#1swxYwYtjtj��dS#tjtj��wxYw)
N���rrrr)c����	tddg��D]1}��|��}|sdS��|���2dS#t$r}��|���d}~wwxYw)Nr]�)rrprD�	Exception)rar��er��errors�resultss   ���rr3z*BufferedReaderTest.test_threads.<locals>.f�s����
�!&��2�w���.�.�A� %�
�
�1�
�
�A�#$�&� %���#�N�N�1�-�-�-�-�.�.��%�����
�
�a�(�(�(���������s�+A�A�
A-�A(�(A-c�:��g|]}tj������S��r�r�r��.0r�r3s  �r�
<listcomp>z3BufferedReaderTest.test_threads.<locals>.<listcomp>��'���I�I�I�!�9�+�1�5�5�5�I�I�Ir r��{�G�z�?�(the following exceptions were caught: %rr )r:r��random�shufflerr�r0rr�rF�	read_moder�r
�
start_threadsr�r�r�r�r�rr�)r?�N�lr�r��threadsr��cr�r@r3rAs        @@@@r�test_threadszBufferedReaderTest.test_threads�s�������$	/��A��U�3�Z�Z� � �1�$�A��N�1�����i��l�l�#�#�A����9�+�T�2�2�
�a�����
�
�
�
�
�
�
�
�
�
�
�
�
�
����
�
�
�
����9�+�T�^�q��I�I�
4�S�����Q���������������J�I�I�I�u�R�y�y�I�I�I��%�3�G�<�<�%�%��J�t�$�$�$�%�%�%�%�%�%�%�%�%�%�%����%�%�%�%�� � ��>��G�I�I�I��H�H�W�%�%���s���4�4�A��i���n�n�-�-�A��$�$�Q�W�W�Q�Z�Z��3�3�3�3�4�-
4�
4�
4�
4�
4�
4�
4�
4�
4�
4�
4����
4�
4�
4�
4�4
��Y�-�.�.�.�.�.��I��Y�-�.�.�.�.���sz�A1H�7B�
H�B�H� B�!*H�AG�D=�1G�=E	�G�E	�B	G�H�G�H�"G�#H� H&c��|�|�d����}|�|j|j��|�|j|jd��|�d��|�|j|jd��|�|j|j��dS)Nr�rr])r�r�r�r�rZrWrpr�s  rr�z"BufferedReaderTest.test_unseekable�s�������-�-�i�8�8�9�9�����$�3�U�Z�@�@�@����$�3�U�Z��C�C�C�
�
�
�1�
�
�
����$�3�U�Z��C�C�C����$�3�U�Z�@�@�@�@�@r c���|�d��}|�|��}|�t|jd��|�t|j��d�|_dS)NrUrc��dSrCr&r&r rr�z7BufferedReaderTest.test_misbehaved_io.<locals>.<lambda>����d�r )rwr�r�r�rWrZr�r�s   r�test_misbehaved_ioz%BufferedReaderTest.test_misbehaved_io�sf���$�$�%;�<�<������������'�5�:�q�1�1�1����'�5�:�.�.�.�#�l����r c	�|�d}d|dz
||dz|dzfD�]'}|�d|zg��}|�||��}|�|�|��d|z��|�|jdd�||j����|�d|dz
zdg��}|�||��}|�|�|��d|z��|�|jdd�||j������)dS)Nr�rzr]r�rzfailed for {}: {} != 0)rlr�r�rpr>r�)r?r�rarr�s     r�test_no_extraneous_readz*BufferedReaderTest.test_no_extraneous_read�sX�����W�q�[�'�7�Q�;��!��D�
	Z�
	Z�A��N�N�D�1�H�:�.�.�E��G�G�E�7�+�+�E����U�Z�Z��]�]�D�1�H�5�5�5����U�4�a�5�<�<�Q��@W�X�X�
Z�
Z�
Z��N�N�D�A��E�N�D�#9�:�:�E��G�G�E�7�+�+�E����U�Z�Z��]�]�D�1�H�5�5�5����U�4�a�5�<�<�Q��@W�X�X�
Z�
Z�
Z�
Z�
	Z�
	Zr c�&�tjtjd����}|�d��|���|�t|j��|�t|jd��dS)N�12r])	r�r$r,rpr�r�r�rrCrEs  r�test_read_on_closedz&BufferedReaderTest.test_read_on_closedsp����b�j��/�/�0�0��	���q�	�	�	�	���	�	�	����*�a�f�-�-�-����*�a�g�q�1�1�1�1�1r c�*�|�d��}|�|��}|�|�����|�|j|j��|�|j|jd��dS)Nr�r)r�r�r�rJr�r�rdr�s   r�test_truncate_on_read_onlyz-BufferedReaderTest.test_truncate_on_read_onlys~������'�'���������������)�)�*�*�*����$�3�U�^�D�D�D����$�3�U�^�Q�G�G�G�G�Gr N)r#r$r%rNrrr	rrrrrr!r&r.r2r5r7r�requires_resourcer
�requires_working_threadingrTr�rYr[r^r`r&r rr�r��s��������I�/�/�/�-�-�-�6�6�6�*�*�*� 	*�	*�	*�#�#�#�**�*�*�.7�7�7�*7�7�7�*M�M�M�A�A�A�(
+�
+�
+�7�7�7�3�3�3��W��u�%�%�0��0�2�2�%/�%/�3�2�&�%�%/�NA�A�A�#�#�#�Z�Z�Z�(2�2�2�H�H�H�H�Hr r�c�n�eZdZejZeddd���d���Zd�Zd�Z	d�Z
d�Zd	�Zd
�Z
dS)�CBufferedReaderTestT�Lsanitizer defaults to crashing instead of returning NULL for malloc failure.��memory�address�reasonc�"�t�|��tjdkrd|���}|�|��}|�tttf|j
|tj��dSdS�Nr�)r�rrLr�rlr�r�r��MemoryErrorr�rAr�s   rrz$CBufferedReaderTest.test_constructor���	�+�+�D�1�1�1��;��#�#��N�N�$�$�E��G�G�E�N�N�E����}�k�:�F����s�{�
4�
4�
4�
4�
4�$�#r c���|�dg��}|�|��}|�t|j|d���|�t|j��|�t|j|d���|�t|j��|�t|j|d���|�t|j��dS)Nr�rr�rr�)rlr�r�r�rArpr�s   r�test_initializationz'CBufferedReaderTest.test_initialization#s�������x�(�(������������*�e�n�e���K�K�K����*�e�j�1�1�1����*�e�n�e���M�M�M����*�e�j�1�1�1����*�e�n�e���L�L�L����*�e�j�1�1�1�1�1r c��|�d��}|�|��}|�t|jd��dS)NrUr�)rwr�r�r�rpr�s   r�test_misbehaved_io_readz+CBufferedReaderTest.test_misbehaved_io_read-sG���$�$�%;�<�<���������	
���'�5�:�r�2�2�2�2�2r c���|�tjtj��t	jdtf��5|�tjd��}|�|��}||_	tj|��}~tj
��ddd��n#1swxYwY|�|��|��dS)Nr�r�)rrr�r�rr�r�rr�r3r�r�rr�r��r?rr3r�s    rr�z+CBufferedReaderTest.test_garbage_collection4s���	
���	�(�)�*:�;�;�;�
�
+�R��,A�
B�
B�	!�	!��K�K�	� 0�%�8�8�E�������A��A�C���Q���B���� � � �
	!�	!�	!�	!�	!�	!�	!�	!�	!�	!�	!����	!�	!�	!�	!�	
���"�"�$�$��#�#�#�#�#s�A%B7�7B;�>B;c��|�td��5|�tj��ddd��ddd��dS#1swxYwYdS)Nr$r��rPr�r�r�r,rIs r�test_args_errorz#CBufferedReaderTest.test_args_errorA���
�
#�
#�I�/?�
@�
@�	4�	4��G�G�B�J�L�L�$��d�3�3�3�	4�	4�	4�	4�	4�	4�	4�	4�	4�	4�	4�	4����	4�	4�	4�	4�	4�	4��*A�A�Ac�V�tjtjd����}d�|_|�|��}|�t��5}|���ddd��n#1swxYwY|�|j	j
��dS)Nr]c��dSrr&�r_s rr�z=CBufferedReaderTest.test_bad_readinto_value.<locals>.<lambda>Hs��R�r )r�r$r,rbr�r�r�rr�r�	__cause__�r?rr�rs    r�test_bad_readinto_valuez+CBufferedReaderTest.test_bad_readinto_valueFs����!�"�*�U�"3�"3�4�4��'�����������
�
�
�w�
'�
'�	�2��N�N����	�	�	�	�	�	�	�	�	�	�	����	�	�	�	����"�,�0�1�1�1�1�1��A?�?B�Bc�b�tjtjd����}d�|_|�|��}|�t��5}|���ddd��n#1swxYwY|�|j	j
t��dS)Nr]c��dSr�r&r{s rr�z<CBufferedReaderTest.test_bad_readinto_type.<locals>.<lambda>Ps��S�r )r�r$r,rbr�r�r�rr�rr|r�r}s    r�test_bad_readinto_typez*CBufferedReaderTest.test_bad_readinto_typeNs����!�"�*�U�"3�"3�4�4��(�����������
�
�
�w�
'�
'�	�2��N�N����	�	�	�	�	�	�	�	�	�	�	����	�	�	�	����b�l�4�i�@�@�@�@�@rN)r#r$r%r�r$r�rrrorqr�rvr~r�r&r rrdrds�������	�	�B���d�D�;G�H�H�H�4�4�H�H�4�2�2�2�3�3�3�$�$�$�4�4�4�
2�2�2�A�A�A�A�Ar rdc��eZdZejZdS)�PyBufferedReaderTestN)r#r$r%r�r$r�r&r rr�r�W�������	
�	�B�B�Br r�c�"�eZdZdZd�Zd�Zd�Zd�Zd�Zd�Z	d�Z
d	�Zd
�Zd�Z
d�Zd
�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zejd��ej��d�����Zd�Zd�Zd�Zej��d���ZdS)�BufferedWriterTestrc�*�|���}|�|��}|�|��|�|d���|�|d���|�d|�d����|���|�t|j|d���|�t|j|d���|�t|j|d���|�|��|�d|�d	����|���|�d
�|j	��d��dS)Nr�r�r�r�r�rrr��ghir sabcghi)
rlr�rAr�rFr�r�r�r�r<r�s   rrz#BufferedWriterTest.test_constructor^sV����� � ���������
���u����
���u�$��/�/�/�
���u�"��-�-�-�����E�K�K��/�/�0�0�0�
���
�
�
����*�e�n�e���K�K�K����*�e�n�e���M�M�M����*�e�n�e���L�L�L�
���u��������E�K�K��/�/�0�0�0�
���
�
�
�������%�"4�5�5�y�A�A�A�A�Ar c�v�|j�|j��}~|j�|j��}|�ttfd|jd��|�|�����|�|�d��d��dS)Nrr r)	r�rrPr�r�rFrArlr�r�s  rrz%BufferedWriterTest.test_uninitializedns���������(�(���������(�(�����
�N�;�?�$�{�C�	1�	1�	1�	���t�~�~�'�'�(�(�(�������S�)�)�1�-�-�-�-�-r c��|���}|�|��}|�d��|�|j��|���|�|jdg��dS)Nshowdy!)rlr�rFr�r<r�r�r�s   r�test_detach_flushz$BufferedWriterTest.test_detach_flushxsw���n�n�����g�g�c�l�l���	�	�)��������)�*�*�*��
�
��������)�I�;�7�7�7�7�7r c��|���}|�|d��}|�d��|�|j��td��}|�|��d|dd�<|���|�d�|j��d��dS)Nr)r��def�***r �abcdef)	rlr�rFr�r<r�r�r�r�)r?�writerr�r�s    r�
test_writezBufferedWriterTest.test_write�s������!�!�������"�"��
���F��������,�-�-�-��6�"�"��
���F������q�q�q�	�
���
�
�
�������&�"5�6�6�	�B�B�B�B�Br c�v�|���}|�|d��}d}tdt|��d��D]"}|�|||dz����#d�|j��}|�|�|dd���|��dS)Nr)sabcdefghijklmnoprr�r i����)	rlr�r�rrFr�r<r�rN)r?r�r��contentsra�flusheds      r�test_write_overflowz&BufferedWriterTest.test_write_overflow�s������!�!�������"�"��&���q�#�h�-�-��+�+�	)�	)�A��K�K���1�Q�3���(�(�(�(��(�(�6�.�/�/��	
����*�*�8�C�R�C�=�9�9�7�C�C�C�C�Cr c�h�ttd����dz}d}|���}|�|d��}d�}|��}|t	|��kr�tt
|��t	|��|z
��}|�|�||||z���|��||��||z
}|t	|��k��|�	��|�|d�
|j����dS)Nr;r:rr�c3�ZK�td��D]}td��D]}|V���dS)Nr]�)rr�)rBr�s  r�	gen_sizesz2BufferedWriterTest.check_writes.<locals>.gen_sizes�sJ�����a���
�
���r�����A��J�J�J�J��
�
r r )rr�rlr�rrbrpr�rFr�r�r<)	r?�intermediate_funcr�rar�r�r��sizesrBs	         r�check_writeszBufferedWriterTest.check_writes�s$����s���$�$�t�+��
�����!�!�������#�#��	�	�	��	�����#�h�-�-����t�E�{�{�C��M�M�A�$5�6�6�D����U�[�[��!�A�d�F�(�);�<�<�d�C�C�C���e�$�$�$�
��I�A�	�#�h�-�-���
	���
�
�
�����3�8�8�F�,?�#@�#@�A�A�A�A�Ar c�2�|�d���dS)Nc��dSrCr&r�s rr�z0BufferedWriterTest.test_writes.<locals>.<lambda>�s���r �r�rIs r�test_writeszBufferedWriterTest.test_writes�s �����,�,�-�-�-�-�-r c�2�|�d���dS)Nc�*�|���SrCr�r�s rr�z<BufferedWriterTest.test_writes_and_flushes.<locals>.<lambda>�s�����
�
�r r�rIs r�test_writes_and_flushesz*BufferedWriterTest.test_writes_and_flushes�s �����5�5�6�6�6�6�6r c�f�d�}|�|��d�}|�|��dS)Nc��|���}|�|dzd��|�|dz
d��|�|d��dSr\)rZrW�r�rs  r�_seekabsz:BufferedWriterTest.test_writes_and_seeks.<locals>._seekabs�sY���*�*�,�,�C��J�J�s�Q�w��"�"�"��J�J�s�Q�w��"�"�"��J�J�s�A�����r c��|�dd��}|�dd��|�dd��|�|d��dS)Nrr]r�)rWr�s  r�_seekrelz:BufferedWriterTest.test_writes_and_seeks.<locals>._seekrel�sW���*�*�Q��"�"�C��J�J�r�1�����J�J�r�1�����J�J�s�A�����r r�)r?r�r�s   r�test_writes_and_seeksz(BufferedWriterTest.test_writes_and_seeks�sR��	�	�	�
	
���(�#�#�#�	�	�	�
	
���(�#�#�#�#�#r c�2�|�d���dS)Nc�P�|�|�����SrC)rdrZr�s rr�z>BufferedWriterTest.test_writes_and_truncates.<locals>.<lambda>�s�����u�z�z�|�|�(D�(D�r r�rIs r�test_writes_and_truncatesz,BufferedWriterTest.test_writes_and_truncates�s �����D�D�E�E�E�E�Er c��|���}|�|d��}|�|�d��d��|�|�d��d��|�d��|�|�d��d��|�d��	|�d	��|�d
��n#|j$r}|j}Yd}~nd}~wwxYw|�|d��|�|���d��|�|�d
��d��|���}|�	|�
d��|��dS)Nr)r0resefghir��ksjklmn�0sopqrwxyz0123456789z'BlockingIOError should have been raisedr�sabcdefghijklmnopqrwxyzs	ABCDEFGHIr�s	01234567A)r�r�r�rFr�rKr��characters_writtenr�r�rN)r?r�r�r?�writtenr�s      r�test_write_non_blockingz*BufferedWriterTest.test_write_non_blocking�s����'�'�)�)������Q����������W�-�-�q�1�1�1�������X�.�.��2�2�2����T����������X�.�.��2�2�2�	���T����	A��K�K�-�.�.�.�
�I�I�?�@�@�@�@���#�	+�	+�	+��*�G�G�G�G�G�G�����	+����	
����"�%�%�%�������*�*�%�	'�	'�	'�	
������\�2�2�A�6�6�6��O�O����������\�2�2�A�6�6�6�6�6s�C<�<
D�D�Dc��tj��}|�|d��}|�|�d��d��|�|���d��|�dd��|�|�d��d��|�dd��|�|���d��|�|�d��d��|���|�|���d	��dS)
Nrer�r�rsXYrzsXYcdefs123456sXYcdef123456)	r�r,r�r�rFrZrWr{r��r?r�r�s   r�test_write_and_rewindz(BufferedWriterTest.test_write_and_rewind�s���j�l�l������Q����������Y�/�/��3�3�3���������q�)�)�)�
�
�
�1�a����������U�+�+�Q�/�/�/�
�
�
�1�a�������������3�3�3�������Y�/�/��3�3�3�
���
�
�
����������9�9�9�9�9r c���|���}|�|d��}|�d��|���|�d|jd��dS�Nr)r�r)rlr�rFr�r�r<�r?r�r�s   r�
test_flushzBufferedWriterTest.test_flush�sg�����!�!�������"�"��
���F����
���
�
�
������!4�Q�!7�8�8�8�8�8r c��gd�}|���}|�|d��}|�|��|���|�d�|j��d��dS�N)r�rrr)r r�)rlr�rr�r�r�r<�r?rQr�r�s    r�test_writelinesz"BufferedWriterTest.test_writelines�s{��!�!�!�����!�!�������"�"��
�������
���
�
�
�������&�"5�6�6�	�B�B�B�B�Br c�*�tgd���}|���}|�|d��}|�|��|���|�d�|j��d��dSr�)rrlr�rr�r�r�r<r�s    r�test_writelines_userlistz+BufferedWriterTest.test_writelines_userlist�s����*�*�*�+�+�����!�!�������"�"��
�������
���
�
�
�������&�"5�6�6�	�B�B�B�B�Br c�$�|���}|�|d��}|�t|jgd���|�t|jd��|�t|jd��dS)Nr)r��abc)rlr�r�r�rr�s   r�test_writelines_errorz(BufferedWriterTest.test_writelines_errors�����!�!�������"�"�����)�U�%5�y�y�y�A�A�A����)�U�%5�t�<�<�<����)�U�%5�u�=�=�=�=�=r c���|���}|�|d��}|�d��~tj��|�d|jd��dSr�)rlr�rFrr�r�r<r�s   rr�z"BufferedWriterTest.test_destructorsl�����!�!�������"�"��
���F���������������!4�Q�!7�8�8�8�8�8r c��|�tjtj��|�tj|jd���5}|�|d��}|�d��|�|�	d��d��|�|�
��d��ddd��n#1swxYwY|�tjdd���5}|�|���d��ddd��dS#1swxYwYdS)	Nrrr)r�r�r�r	r�)rrr�r�r0�
write_moder�rFr�rdrZrp)r?r�r�r3s    r�
test_truncatez BufferedWriterTest.test_truncates������	�(�)�*:�;�;�;�
�Y�Y�y�'���A�Y�
F�
F�	.�#��G�G�C��O�O�E��K�K�	�"�"�"����U�^�^�A�.�.��2�2�2����U�Z�Z�\�\�1�-�-�-�		.�	.�	.�	.�	.�	.�	.�	.�	.�	.�	.����	.�	.�	.�	.�
�Y�Y�y�'���Y�
;�
;�	/�q����Q�V�V�X�X�v�.�.�.�	/�	/�	/�	/�	/�	/�	/�	/�	/�	/�	/�	/����	/�	/�	/�	/�	/�	/s%�A=C�C�"C�)D>�>E�Ec�^�|�tjtj��|�tjd��5}|�ddz��ddd��n#1swxYwYgd�}|D]�}|�tjd|���5}|�d|dzz��|�d��|���|�|�	��|dz��ddd��n#1swxYwY��dS)	Nr�i')r�r���zr+brr]rz)
rrr�r�r0rFrprdr�rZ)r?r3�buffer_sizesr�s    r�test_truncate_after_writez,BufferedWriterTest.test_truncate_after_writes���	
���	�(�)�*:�;�;�;�
�Y�Y�y�'��
.�
.�	%�!�
�G�G�G�e�O�$�$�$�	%�	%�	%�	%�	%�	%�	%�	%�	%�	%�	%����	%�	%�	%�	%�)�(�(��'�	<�	<�K����9�+�U�k��J�J�
<�a�����;��?�3�4�4�4����q�	�	�	��
�
����� � ������;��?�;�;�;�

<�
<�
<�
<�
<�
<�
<�
<�
<�
<�
<����
<�
<�
<�
<��	<�	<s%�A0�0A4�7A4�%A0D!�!D%	�(D%	r8c���
���
�	d}ttd����|z}tddg��}d}t���
|t	|��krGt|��}�
�||||z���||z
}|t	|��k�G~|�tj	|j
d���5}|�|d���
g��
��
fd���fd	�td
��D��}tj
|��5tjd��ddd��n#1swxYwY|��d�z���
���ddd��n#1swxYwY|�tj	d
��5�����}ddd��n#1swxYwYtd��D]9}	|�|�t|	g����|���:	tjtj	��dS#tjtj	��wxYw)Nr:r;r]r=rrr)c����			����}n#t$rYdSwxYw��|���=#t$r}��|���d}~wwxYwrC)�popleftr^rFr>rD)r�r?r�r@�queues  ���rr3z*BufferedWriterTest.test_threads.<locals>.fEs����	�+�'�$)�M�M�O�O����#-�'�'�'� &���'����!�K�K��N�N�N�+��%�����
�
�a�(�(�(���������s2�A��A�
(�A�(�A�
A&�A!�!A&c�:��g|]}tj������SrCrErFs  �rrHz3BufferedWriterTest.test_threads.<locals>.<listcomp>PrIr r�rJrKr	)rr�rrrrprDr0rr�r�r�r
rOr�r�r�r�rpr�rr�)r?rPr�r�rarBr�rRr�r�r�r@r3r�s          @@@@rrTzBufferedWriterTest.test_threads-s������+	/��A��U�3�Z�Z�(�(�1�,�H��1�b�'�N�N�E��A��G�G�E��c�(�m�m�#�#��E�{�{�����X�a��$��h�/�0�0�0��T�	���c�(�m�m�#�#�����9�+�T�_���J�J�
�c�����Q������
�
�
�
�
�
�
�J�I�I�I�u�R�y�y�I�I�I��%�3�G�<�<�%�%��J�t�$�$�$�%�%�%�%�%�%�%�%�%�%�%����%�%�%�%�� � ��>��G�I�I�I����
�
�
�'
�
�
�
�
�
�
�
�
�
�
����
�
�
�
�(���9�+�T�2�2�
�a��F�F�H�H��
�
�
�
�
�
�
�
�
�
�
����
�
�
�
��3�Z�Z�
9�
9��� � ������s���!4�!4�a�8�8�8�8�
9�
��Y�-�.�.�.�.�.��I��Y�-�.�.�.�.���sz�CH?�
AE>�D:�.E>�:D>	�>E>�D>	�0E>�2H?�>F�H?�F�#H?�)G
�>H?�
G�H?�G�AH?�? Ic�.�|���}|�|d��}|�t|jd��|�t|j��|�t|jd��d�|_dS)Nr�rr�c��dSrCr&r&r rr�z7BufferedWriterTest.test_misbehaved_io.<locals>.<lambda>erXr )rwr�r�r�rWrZrFr�r�s   rrYz%BufferedWriterTest.test_misbehaved_io]s����$�$�&�&������q�!�!�����'�5�:�q�1�1�1����'�5�:�.�.�.����'�5�;�	�:�:�:�#�l����r c��|�t��5|�|���dd��ddd��dS#1swxYwYdS�Nr)r��r�r�r�rlrIs r�test_max_buffer_size_removalz/BufferedWriterTest.test_max_buffer_size_removalgs���
�
�
�y�
)�
)�	-�	-��G�G�D�N�N�$�$�a��,�,�,�	-�	-�	-�	-�	-�	-�	-�	-�	-�	-�	-�	-����	-�	-�	-�	-�	-�	-s�*A�A�Ac�
�|���}d�}||_|�|��}|�d��|�t|j��|�|j��dS)Nc��t���rCrt)r(s r�	bad_writez?BufferedWriterTest.test_write_error_on_close.<locals>.bad_writems���)�)�Or �spam)rlrFr�r�r�r�r�r�)r?r�r�r(s    r�test_write_error_on_closez,BufferedWriterTest.test_write_error_on_closeksz���n�n����	�	�	���	��G�G�C�L�L��	����������'�1�7�+�+�+������!�!�!�!�!r c��|���}|�|d��}tj|j���}|���|j���|�t|j
d��|�|j��|�
��dS)Nr)rDr�)r�r�r�rr�r r��waitr�r�rFr�r�r�)r?rr��ts    r�test_slow_close_from_threadz.BufferedWriterTest.test_slow_close_from_threadus����#�#�%�%������q�!�!����E�K�0�0�0��	���	�	�	�
����������*�e�k�7�;�;�;������%�%�%�	�������r N) r#r$r%r�rrr�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rrar
rbrTrYr�r�r�r&r rr�r�[s��������J�B�B�B� .�.�.�8�8�8�
C�
C�
C�	D�	D�	D�B�B�B�(.�.�.�7�7�7�$�$�$�F�F�F�7�7�7�6:�:�:�9�9�9�C�C�C�C�C�C�>�>�>�9�9�9�	/�	/�	/�<�<�<�$�W��u�%�%�0��0�2�2�,/�,/�3�2�&�%�,/�\#�#�#�-�-�-�"�"�"�1��0�2�2�	�	�3�2�	�	�	r r�c�\�eZdZejZeddd���d���Zd�Zd�Z	d�Z
dS)	�CBufferedWriterTestTrerfc�"�t�|��tjdkrd|���}|�|��}|�tttf|j
|tj��dSdSrk)r�rrLr�rlr�r�r�rlr�rAr�s   rrz$CBufferedWriterTest.test_constructor�rmr c���|���}|�|��}|�t|j|d���|�t|jd��|�t|j|d���|�t|jd��|�t|j|d���|�t|jd��dS)Nrr�r�rr�)rlr�r�r�rArFr�s   rroz'CBufferedWriterTest.test_initialization�s������ � ������������*�e�n�e���K�K�K����*�e�k�6�:�:�:����*�e�n�e���M�M�M����*�e�k�6�:�:�:����*�e�n�e���L�L�L����*�e�k�6�:�:�:�:�:r c��|�tjtj��t	jdtf��5|�tjd��}|�|��}|�	d��||_
tj|��}~tj��ddd��n#1swxYwY|�|��|��|�tjd��5}|�|���d��ddd��dS#1swxYwYdS)Nr�r�s123xxxr	)rrr�r�rr�r�rr�rFr�r�r�rr�r�r0r�rprss    rr�z+CBufferedWriterTest.test_garbage_collection�s���	
���	�(�)�*:�;�;�;�
�
+�R��,A�
B�
B�	!�	!��K�K�	� 0�%�8�8�E�������A�
�G�G�I�����A�C���Q���B���� � � �	!�	!�	!�	!�	!�	!�	!�	!�	!�	!�	!����	!�	!�	!�	!�	
���"�"�$�$��#�#�#�
�Y�Y�y�'��
.�
.�	2�!����Q�V�V�X�X�y�1�1�1�	2�	2�	2�	2�	2�	2�	2�	2�	2�	2�	2�	2����	2�	2�	2�	2�	2�	2s%�A:C�C�C�)E�E�Ec��|�td��5|�tj��ddd��ddd��dS#1swxYwYdS)Nr(r�rurIs rrvz#CBufferedWriterTest.test_args_error�rwrxN)r#r$r%r�r(r�rrror�rvr&r rr�r��s�������	�	�B���d�D�;G�H�H�H�4�4�H�H�4�;�;�;�2�2�2�"4�4�4�4�4r r�c��eZdZejZdS)�PyBufferedWriterTestN)r#r$r%r�r(r�r&r rr�r��r�r r�c��eZdZd�Zd�Zd�Zd�Zd�Zd�Zd�Z	d�Z
d	�Zd
�Zd�Z
d�Zd
�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�ZdS)�BufferedRWPairTestc��|�|���|�����}|�|j��dSrC)r�rlr�r��r?�pairs  rrz#BufferedRWPairTest.test_constructor�sE���w�w�t�~�~�'�'����)9�)9�:�:�������%�%�%�%�%r c�@�|j�|j��}~|j�|j��}|�ttfd|jd��|�ttfd|jd��|�|���|�����|�	|�d��d��|�	|�d��d��dSr)
r�rrPr�r�rprFrArlr�r�s  rrz%BufferedRWPairTest.test_uninitialized�s����w���t�w�'�'����w���t�w�'�'�����
�N�;�?�#�y�!�	-�	-�	-�	
���
�N�;�?�#�z�3�	0�	0�	0�	
�
�
�d�n�n�&�&����(8�(8�9�9�9�������1���s�+�+�+�������C���!�,�,�,�,�,r c��|�|���|�����}|�|j|j��dSrC)r�rlr�r�r�r�s  rr�zBufferedRWPairTest.test_detach�sJ���w�w�t�~�~�'�'����)9�)9�:�:�����$�3�T�[�A�A�A�A�Ar c���|�t��5|�|���|���dd��ddd��dS#1swxYwYdSr�r�rIs r�(test_constructor_max_buffer_size_removalz;BufferedRWPairTest.test_constructor_max_buffer_size_removal�s���
�
�
�y�
)�
)�	?�	?��G�G�D�N�N�$�$�d�n�n�&6�&6��2�>�>�>�	?�	?�	?�	?�	?�	?�	?�	?�	?�	?�	?�	?����	?�	?�	?�	?�	?�	?s�=A%�%A)�,A)c��Gd�dt��}|�t|j|��|�����dS)Nc��eZdZd�ZdS)�JBufferedRWPairTest.test_constructor_with_not_readable.<locals>.NotReadablec��dSr�r&rIs rrQzSBufferedRWPairTest.test_constructor_with_not_readable.<locals>.NotReadable.readable�����ur N�r#r$r%rQr&r r�NotReadabler���#������
�
�
�
�
r r��rlr�r�r�)r?r�s  r�"test_constructor_with_not_readablez5BufferedRWPairTest.test_constructor_with_not_readable�s`��	�	�	�	�	�)�	�	�	�	
���'�4�7�K�K�M�M�4�>�>�;K�;K�L�L�L�L�Lr c��Gd�dt��}|�t|j|���|����dS)Nc��eZdZd�ZdS)�LBufferedRWPairTest.test_constructor_with_not_writeable.<locals>.NotWriteablec��dSr�r&rIs rrJzUBufferedRWPairTest.test_constructor_with_not_writeable.<locals>.NotWriteable.writable�r�r N)r#r$r%rJr&r r�NotWriteabler��r�r rr�)r?rs  r�#test_constructor_with_not_writeablez6BufferedRWPairTest.test_constructor_with_not_writeable�s`��	�	�	�	�	�9�	�	�	�	
���'�4�7�D�N�N�,<�,<�l�l�n�n�M�M�M�M�Mr c�8�|�|�d��|�����}|�|�d��d��|�|�d��d��|�|���d��|�|�d��|�����}|�|�d��d��dS)Nr�r�r�r]r�r)r�r,rlr�rpr�s  rr	zBufferedRWPairTest.test_read�s����w�w�t�|�|�I�.�.����0@�0@�A�A��������1���v�.�.�.�������1���t�,�,�,���������e�,�,�,��w�w�t�|�|�F�+�+�T�^�^�-=�-=�>�>��������4���&�1�1�1�1�1r c�@���fd�}��|�����gd�����|�����gd�����|���d��ddg��dS)Nc�z������d��������S)Ns	abc
def
h)r�r,rlrIs�rr�z3BufferedRWPairTest.test_readlines.<locals>.<lambda>�s+���t�w�w�t�|�|�N�;�;�T�^�^�=M�=M�N�N�r )rbrcr�r�rbrcr%r�s` rr&z!BufferedRWPairTest.test_readlines�s����N�N�N�N���������)�)�+�+�-G�-G�-G�H�H�H��������)�)�+�+�-G�-G�-G�H�H�H��������)�)�!�,�,�x��.B�C�C�C�C�Cr c��|�|�d��|�����}|�|�d��d��|�|���d��dS)Nr�r�r�r�)r�r,rlr�rCr�s  rrzBufferedRWPairTest.test_read1�sq���w�w�t�|�|�I�.�.����0@�0@�A�A��������A����/�/�/���������v�.�.�.�.�.r c	��dD]�}|�|��5|�|�d��|�����}t	d��}|�t
||��|��d��|�t|��d��ddd��n#1swxYwY��dS)NrEr�sr�sabcde)rGr�r,rlrr�rFr)r?rHr�rs    rrz BufferedRWPairTest.test_readinto�s��/�	8�	8�F����f�%�%�
8�
8��w�w�t�|�|�I�6�6����8H�8H�I�I�� ��+�+��� � �!6���v�!6�!6�t�!<�!<�a�@�@�@�� � ��t���h�7�7�7�
8�
8�
8�
8�
8�
8�
8�
8�
8�
8�
8����
8�
8�
8�
8��	8�	8s�BC�C	�C	c��|���}|�|���|��}|�d��|���t	d��}|�|��d|dd�<|���|�|jddg��dS)Nr�r�r�)rlr�rFr�r�r�r<)r?rr�r�s    rr�zBufferedRWPairTest.test_writes����N�N�����w�w�t�~�~�'�'��+�+���
�
�6�����
�
�����6�"�"���
�
�6������q�q�q�	��
�
���������&�&�)9�:�:�:�:�:r c�D�|�|�d��|�����}|�|�d���d����|�|�d��d��dS)Nr�r�r�)r�r,rlr�rrNr�rpr�s  r�	test_peekzBufferedRWPairTest.test_peeks{���w�w�t�|�|�I�.�.����0@�0@�A�A������	�	�!���/�/��7�7�8�8�8�������1���v�.�.�.�.�.r c���|�|���|�����}|�|�����dSrC)r�rlr�rQr�s  r�
test_readablez BufferedRWPairTest.test_readable�I���w�w�t�~�~�'�'����)9�)9�:�:������
�
���(�(�(�(�(r c���|�|���|�����}|�|�����dSrC)r�rlr�rJr�s  r�test_writeablez!BufferedRWPairTest.test_writeabler
r c���|�|���|�����}|�|�����dSrC)r�rlr�rSr�s  r�
test_seekablez BufferedRWPairTest.test_seekablesM���w�w�t�~�~�'�'����)9�)9�:�:����������)�)�)�)�)r c�
�|�|���|�����}|�|j��|���|�|j��dSrC)r�rlr�r�r�r�r�s  r�test_close_and_closedz(BufferedRWPairTest.test_close_and_closed#sf���w�w�t�~�~�'�'����)9�)9�:�:�������%�%�%��
�
���������$�$�$�$�$r c��d�}|���}||_|���}|�||��}|�t��5}|���ddd��n#1swxYwY|�dt
|j����|�|j	��|�
|j	��|�|j	��d�|_dS)Nc��tdSrC��reader_non_existingr&r r�reader_closezIBufferedRWPairTest.test_reader_close_error_on_close.<locals>.reader_close*������r rc��dSrCr&r&r rr�zEBufferedRWPairTest.test_reader_close_error_on_close.<locals>.<lambda>8rvr )rlr�r�r�r�r�rrr�r�r�)r?rrir�r�r�s      r� test_reader_close_error_on_closez3BufferedRWPairTest.test_reader_close_error_on_close)s(��	 �	 �	 ����!�!��#������!�!���w�w�v�v�&�&��
�
�
�y�
)�
)�	�S��J�J�L�L�L�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	��
�
�+�S���-?�-?�@�@�@������$�$�$������'�'�'�����
�&�&�&�$�|����s�#B�B�Bc� �d�}|���}|���}||_|�||��}|�t��5}|���ddd��n#1swxYwY|�dt
|j����|�|j	��|�
|j	��|�|j	��d�|_d}tj��5tj��5d}tj
��ddd��n#1swxYwYtj
��ddd��dS#1swxYwYdS)Nc��tdSrC��writer_non_existingr&r r�writer_closezIBufferedRWPairTest.test_writer_close_error_on_close.<locals>.writer_close;rr rc��dSrCr&r&r rr�zEBufferedRWPairTest.test_writer_close_error_on_close.<locals>.<lambda>Irvr )rlr�r�r�r�r�rrr�r�r�rr�r�)r?r rir�r�r�s      r� test_writer_close_error_on_closez3BufferedRWPairTest.test_writer_close_error_on_close:s)��	 �	 �	 ����!�!�����!�!��#����w�w�v�v�&�&��
�
�
�y�
)�
)�	�S��J�J�L�L�L�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	��
�
�+�S���-?�-?�@�@�@������%�%�%�����
�&�&�&������'�'�'�$�|������
/�
1�
1�	!�	!��3�5�5�
%�
%����"�$�$�$�
%�
%�
%�
%�
%�
%�
%�
%�
%�
%�
%����
%�
%�
%�
%�
�� � � �	!�	!�	!�	!�	!�	!�	!�	!�	!�	!�	!�	!����	!�	!�	!�	!�	!�	!sH�#B�B�B�"F�6E�F�E	�F�E	� F�F�
Fc���d�}d�}|���}||_|���}||_|�||��}|�t��5}|���ddd��n#1swxYwY|�dt
|j����|�|jj	t��|�dt
|jj	����|�
|j��|�
|j��|�
|j��d�|_d�|_dS)Nc��tdSrCrr&r rrzPBufferedRWPairTest.test_reader_writer_close_error_on_close.<locals>.reader_closeUrr c��tdSrCrr&r rr zPBufferedRWPairTest.test_reader_writer_close_error_on_close.<locals>.writer_closeWrr rrc��dSrCr&r&r rr�zLBufferedRWPairTest.test_reader_writer_close_error_on_close.<locals>.<lambda>hrvr c��dSrCr&r&r rr�zLBufferedRWPairTest.test_reader_writer_close_error_on_close.<locals>.<lambda>irvr )rlr�r�r�r�r�rrr�r�r�r�)r?rr rir�r�r�s       r�'test_reader_writer_close_error_on_closez:BufferedRWPairTest.test_reader_writer_close_error_on_closeTs���	 �	 �	 �	 �	 �	 ����!�!��#������!�!��#����w�w�v�v�&�&��
�
�
�y�
)�
)�	�S��J�J�L�L�L�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	��
�
�+�S���-?�-?�@�@�@����c�m�7��C�C�C��
�
�+�S���1J�-K�-K�L�L�L������%�%�%������'�'�'������'�'�'�$�|���#�|����s�-B�B�Bc��Gd�dt��}|�|d��|d����}|�|�����|�|d��|d����}|�|�����|�|d��|d����}|�|�����|�|d��|d����}|�|�����dS)Nc��eZdZd�Zd�ZdS)�8BufferedRWPairTest.test_isatty.<locals>.SelectableIsAttyc�H�t�|��||_dSrC)rlrA�_isatty)r?�isattys  rrAzABufferedRWPairTest.test_isatty.<locals>.SelectableIsAtty.__init__ms!���"�"�4�(�(�(�%����r c��|jSrC)r-rIs rr.z?BufferedRWPairTest.test_isatty.<locals>.SelectableIsAtty.isattyqs
���|�#r N)r#r$r%rAr.r&r r�SelectableIsAttyr+ls2������
&�
&�
&�
$�
$�
$�
$�
$r r0FT)rlr�r�r.r�)r?r0r�s   r�test_isattyzBufferedRWPairTest.test_isattyksJ��	$�	$�	$�	$�	$�y�	$�	$�	$��w�w�'�'��.�.�0@�0@��0G�0G�H�H����������'�'�'��w�w�'�'��-�-�/?�/?��/F�/F�G�G��������
�
�&�&�&��w�w�'�'��.�.�0@�0@��0F�0F�G�G��������
�
�&�&�&��w�w�'�'��-�-�/?�/?��/E�/E�F�F��������
�
�&�&�&�&�&r c��|�|���|�����}tj|��}d}d}dSrC)r�rlr�r�)r?�brwr�s   r�test_weakref_clearingz(BufferedRWPairTest.test_weakref_clearing�sF���g�g�d�n�n�&�&����(8�(8�9�9���k�#���������r N)r#r$r%rrr�r�r�rr	r&rrr�r
rrrrrr"r(r1r4r&r rr�r��s[������&�&�&�-�-�-�B�B�B�?�?�?�M�M�M�N�N�N�2�2�2�D�D�D�/�/�/�8�8�8�
;�
;�
;�/�/�/�)�)�)�)�)�)�*�*�*�%�%�%�$�$�$�"!�!�!�4$�$�$�.'�'�'�*����r r�c��eZdZejZdS)�CBufferedRWPairTestN)r#r$r%r�r/r�r&r rr6r6�s������	�	�B�B�Br r6c��eZdZejZdS)�PyBufferedRWPairTestN)r#r$r%r�r/r�r&r rr8r8�r�r r8c��eZdZdZdZd�Zd�Zd�Zd�Zd�Z	d�Z
d	�Zd
�Zd�Z
d�Zd
�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�ZdZdZdS)�BufferedRandomTest�rb+zwb+c�n�t�|��t�|��dSrC)r�rr�rIs rrz#BufferedRandomTest.test_constructor�s0���+�+�D�1�1�1��+�+�D�1�1�1�1�1r c�n�t�|��t�|��dSrC)r�rr�rIs rrz%BufferedRandomTest.test_uninitialized��0���-�-�d�3�3�3��-�-�d�3�3�3�3�3r c���|�d��}|�|d��}|�d|�d����|�d��|�d��|�|j��|�d|�����|�d|jd	��dS)
N)�asdf�ghjkr)�asrzsdddseeerAsdddeeer)rlr�r�rprFr�r<�r?r�rBs   r�test_read_and_writez&BufferedRandomTest.test_read_and_write�s����n�n�/�0�0��
�W�W�S�!�_�_����������
�
�+�+�+�
�������
�����������)�*�*�*�����"�'�'�)�)�,�,�,�����C�$4�Q�$7�8�8�8�8�8r c�t�|�d��}|�|��}|�d|�d����|�d|�����|�dd��|�d|�d����|�d��|�dd��|�d|�����|�d	|�����|�d
d��|�d|�����|�dd��|�d
|�����|�d|�d����|���|�d|�����|�	t|jd��dS)Ns	asdfghjklrBrzrr@res123fs	asdf123flr����r�r]rdsfl�r�)r,r�r�rprZrWrFr�r{r�r�rCs   r�test_seek_and_tellz%BufferedRandomTest.test_seek_and_tell�s����l�l�<�(�(��
�W�W�S�\�\����������
�
�+�+�+�����B�G�G�I�I�&�&�&�
����1�
�
�
�����"�'�'�!�*�*�-�-�-�
�������
����1�
�
�
�����r�w�w�y�y�1�1�1�����B�G�G�I�I�&�&�&�
����A��������B�G�G�I�I�&�&�&�
����1�
�
�
�����B�G�G�I�I�&�&�&�����������,�,�,�
���
�
�
�����s�|�|�~�~�6�6�6����)�R�W�c�2�2�2�2�2r c���|�d��}|�|��}|�d||d����|�d��|�d||d����|�d|�����|���|�d|�����|�d||����|�dd��|�d	��|���|�dd��|�d	||d
����dS)Nr(r�rzr]rr�r�rsXYZr�)r,r�r�rFrZr�rW)r?�	read_funcr�r�s    r�check_flush_and_readz'BufferedRandomTest.check_flush_and_read�sM���l�l�<�(�(�������������	�	�%�� 3� 3�4�4�4�
���E��������	�	�%�� 3� 3�4�4�4�����E�J�J�L�L�)�)�)�
���
�
�
�����E�J�J�L�L�)�)�)�������5�!1�!1�2�2�2�����A�����	�	�&����
���
�
�
�
�
�
�1�a����������5�!�!4�!4�5�5�5�5�5r c�2�|�d���dS)Nc��|j|�SrC)rp)r�r�s  rr�z8BufferedRandomTest.test_flush_and_read.<locals>.<lambda>�s��z�u�z�4�7H�r �rKrIs r�test_flush_and_readz&BufferedRandomTest.test_flush_and_read�s ���!�!�"H�"H�I�I�I�I�Ir c�8�dd�}|�|��dS)Nr�c��t|dkr|nd��}|�|��}t|d|���S)Nr�')r�rbr�r�rar(s   r�	_readintoz=BufferedRandomTest.test_flush_and_readinto.<locals>._readinto�s@���q�A�v�v�!�!�4�0�0�A����q�!�!�A���2�A�2��<�<�r �r�rN)r?rTs  r�test_flush_and_readintoz*BufferedRandomTest.test_flush_and_readinto�s2��	 �	 �	 �	 �	
�!�!�)�,�,�,�,�,r c�8�dd�}|�|��dS)Nr�c��|�|��}|dkr
|d|�}|�t|��d��|S�Nr�r])rrWrrSs   r�_peekz5BufferedRandomTest.test_flush_and_peek.<locals>._peek�sH���
�
�1�
�
�A��B�w�w��b�q�b�E���J�J�s�1�v�v�q�!�!�!��Hr rUrN�r?rZs  r�test_flush_and_peekz&BufferedRandomTest.test_flush_and_peek�s2��	�	�	�	�	
�!�!�%�(�(�(�(�(r c���|�d��}|�|��}|�d��|���|�d��|���|�dd��|�d|�����|�d|�����dS)Nr(�123s45rs	12345fghi)r,r�rFr�rWr�r{rpr�s   r�test_flush_and_writez'BufferedRandomTest.test_flush_and_write�s����l�l�<�(�(���������
���F����
���
�
�
�
���E����
���
�
�
�
�
�
�1�a��������s�|�|�~�~�6�6�6�����u�z�z�|�|�4�4�4�4�4r c�n�t�|��t�|��dSrC)r�rTr�rIs rrTzBufferedRandomTest.test_threads�s0���'�'��-�-�-��'�'��-�-�-�-�-r c�f�d�}|�|��d�}|�|��dS)Nc�0�|�d��dSr�)rr�s rrZz6BufferedRandomTest.test_writes_and_peek.<locals>._peek�s���J�J�q�M�M�M�M�Mr c��|���}|�dd��|�d��|�|d��dS)Nr�r]r)rZrWrr�s  rrZz6BufferedRandomTest.test_writes_and_peek.<locals>._peek�sL���*�*�,�,�C��J�J�r�1�����J�J�q�M�M�M��J�J�s�A�����r r�r[s  r�test_writes_and_peekz'BufferedRandomTest.test_writes_and_peek�sP��	�	�	����%� � � �	�	�	�
	
���%� � � � � r c�6�d�}|�|��dS)Nc�\�|�dd��|�d��dSrY)rWrpr�s r�_readz7BufferedRandomTest.test_writes_and_reads.<locals>._read�s)���J�J�r�1�����J�J�q�M�M�M�M�Mr r��r?rgs  r�test_writes_and_readsz(BufferedRandomTest.test_writes_and_reads�s-��	�	�	�	
���%� � � � � r c�6�d�}|�|��dS)Nc�\�|�dd��|�d��dSrY)rWrCr�s r�_read1z9BufferedRandomTest.test_writes_and_read1s.<locals>._read1	s)���J�J�r�1�����K�K��N�N�N�N�Nr r�)r?rls  r�test_writes_and_read1sz)BufferedRandomTest.test_writes_and_read1s	s-��	�	�	�	
���&�!�!�!�!�!r c�6�d�}|�|��dS)Nc�v�|�dd��|�td����dSrY)rWrbr�r�s rrgz;BufferedRandomTest.test_writes_and_readintos.<locals>._read
	s4���J�J�r�1�����N�N�9�Q�<�<�(�(�(�(�(r r�rhs  r�test_writes_and_readintosz,BufferedRandomTest.test_writes_and_readintos		s-��	)�	)�	)�	
���%� � � � � r c��dD�]:}|�d��}|�|d��}|�|�d��d��|�|���d��|�d|z��|�|���|dz��|���|�|���|dz��|���}|�|dd|zzdd|z
zz����<dS)N)r]r�r�rer]�A�Br�)r,r�r�rprZrFr�r{)r?�overwrite_sizer�r�r�s     r�test_write_after_readaheadz-BufferedRandomTest.test_write_after_readahead	s9��%�	L�	L�N��,�,�y�)�)�C��G�G�C��O�O�E����U�Z�Z��]�]�D�1�1�1����U�Z�Z�\�\�1�-�-�-��K�K��~�-�.�.�.����U�Z�Z�\�\�>�A�+=�>�>�>�
�K�K�M�M�M����U�Z�Z�\�\�>�A�+=�>�>�>������A����Q��t�n�,�,�t�q�>�7I�/J�J�
L�
L�
L�
L�	L�	Lr c	��d�}d}tdt|����D]�}t|t|����D]�}|�|��}|�|d��}||||��|���t|��}d||<d||<|�|���|d||fz������dS)Nc���||ksJ�|�|��|�||z
��|�d��|�|��|�d��dS)N��)rWrprF)r��pos1�pos2s   r�mutatez:BufferedRandomTest.test_write_rewind_write.<locals>.mutate%	su���4�<�<�<�<��J�J�t�����J�J�t�d�{�#�#�#��K�K�� � � �
�J�J�t�����K�K�� � � � � r s�����rrrzr]zfailed result for i=%d, j=%d)r�rr,r�r�r�r�r{)r?r|r(r��jr�r��expecteds        r�test_write_rewind_writez*BufferedRandomTest.test_write_rewind_write#	s��		!�		!�		!�
$���q�#�a�&�&�!�!�
	J�
	J�A��1�c�!�f�f�%�%�	
J�	
J���l�l�1�o�o������S�)�)����u�a��#�#�#����
�
�
�$�Q�<�<����������� � �������!?�1�a�&�!H�J�J�J�J�	
J�
	J�
	Jr c��|�d��}|�|d��}|�|�d��d��|�|���d��|�|�d��d��|�|���d��dS)Nr�rrzsAAsBBre)r,r�r�rprdrFr�s   r�!test_truncate_after_read_or_writez4BufferedRandomTest.test_truncate_after_read_or_write=	s����l�l�9�%�%������S�!�!��������A����.�.�.�������)�)�1�-�-�-�������U�+�+�Q�/�/�/�������)�)�1�-�-�-�-�-r c�n�t�|��t�|��dSrC)r�rYr�rIs rrYz%BufferedRandomTest.test_misbehaved_ioE	r>r c�D�|�d��5}|�|d��5}|�d��|�|�d��d��|�d��|�|�d��d��|�d��t
d��}|�|��|�|d	��|�d
��|�|�d��d��|�	��|�|�
��d��ddd��n#1swxYwYddd��n#1swxYwY|�d
��5}|�|d��5}|�|�d��d��|�d��|�|�d��d��|�	��|�|�
��d��ddd��n#1swxYwYddd��dS#1swxYwYdS)Nsabcdefghr�1r]r�2r�rD�f�4r�s1b2d3f4hr�rr�sa2c)r,r�rFr�rprCr�rbrr�r{)r?r�r3r_s    r�test_interleaved_read_writez.BufferedRandomTest.test_interleaved_read_writeI	s��
�\�\�+�
&�
&�
	>�#�����c�"�"�
>�a�����
�
�
�� � �������D�1�1�1�����
�
�
�� � �������T�2�2�2�����
�
�
���l�l���
�
�3����� � ��d�+�+�+�����
�
�
�� � �������D�1�1�1����	�	�	�� � �������=�=�=�
>�
>�
>�
>�
>�
>�
>�
>�
>�
>�
>����
>�
>�
>�
>�
	>�
	>�
	>�
	>�
	>�
	>�
	>�
	>�
	>�
	>�
	>����
	>�
	>�
	>�
	>��\�\�&�
!�
!�	9�S�����c�"�"�
9�a�� � �������D�1�1�1�����
�
�
�� � �������D�1�1�1����	�	�	�� � �������8�8�8�
9�
9�
9�
9�
9�
9�
9�
9�
9�
9�
9����
9�
9�
9�
9�	9�	9�	9�	9�	9�	9�	9�	9�	9�	9�	9�	9����	9�	9�	9�	9�	9�	9sl�F�EE?�3F�?F	�F�F	�F�F�F�6J�
B$I=�1J�=J	�J�J	�J�J�Jc��|�d��5}|�|��5}|�d��|�|���d��|�d��|�|���d��|�d��|�|���d��|���|�|���d��ddd��n#1swxYwYddd��dS#1swxYwYdS)	Ns
ab
cdef
g
r�sb
r�rcrD�
s
1b
2def
3
)r,r�rFr�rr�r{)r?r�r3s   r�test_interleaved_readline_writez2BufferedRandomTest.test_interleaved_readline_writeb	s���
�\�\�*�
+�
+�		C�s�������
C������
�
�
�� � ������v�6�6�6�����
�
�
�� � ������x�8�8�8�����
�
�
�� � ������u�5�5�5����	�	�	�� � ������1A�B�B�B�
C�
C�
C�
C�
C�
C�
C�
C�
C�
C�
C����
C�
C�
C�
C�		C�		C�		C�		C�		C�		C�		C�		C�		C�		C�		C�		C����		C�		C�		C�		C�		C�		Cs5�E�C4D,� E�,D0	�0E�3D0	�4E�E�EN)r#r$r%rNr�rrrDrHrKrOrVr\r_rTrdrirmrprurr�rYr�r�r�r`r&r rr:r:�sa�������I��J�2�2�2�4�4�4�	9�	9�	9�3�3�3�.6�6�6�$J�J�J�-�-�-�	)�	)�	)�
5�
5�
5�.�.�.�	!�	!�	!�!�!�!�"�"�"�!�!�!�L�L�L�(J�J�J�4.�.�.�4�4�4�9�9�9�2
C�
C�
C��O�"&���r r:c�V�eZdZejZeddd���d���Zd�Zd�Z	dS)�CBufferedRandomTestTrerfc�"�t�|��tjdkrd|���}|�|��}|�tttf|j
|tj��dSdSrk)r:rrLr�rlr�r�r�rlr�rAr�s   rrz$CBufferedRandomTest.test_constructory	rmr c�n�t�|��t�|��dSrC)rdr�r�rIs rr�z+CBufferedRandomTest.test_garbage_collection�	s0���3�3�D�9�9�9��3�3�D�9�9�9�9�9r c��|�td��5|�tj��ddd��ddd��dS#1swxYwYdS)Nr+r�rurIs rrvz#CBufferedRandomTest.test_args_error�	rwrxN)
r#r$r%r�r+r�rrr�rvr&r rr�r�v	sw������	�	�B���d�D�;G�H�H�H�4�4�H�H�4�:�:�:�4�4�4�4�4r r�c��eZdZejZdS)�PyBufferedRandomTestN)r#r$r%r�r+r�r&r rr�r��	r�r r�c�D�eZdZdZdd�Zd�Zd�Zd�Zd�Zd
d	�Z	d
�Z
dZdS)�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.
    �strictc�n�tj�||��|���dSrC)�codecs�IncrementalDecoderrA�reset)r?r@s  rrAz#StatefulIncrementalDecoder.__init__�	s,���!�*�*�4��8�8�8��
�
�����r c�&�dt|��zS)Nz<SID %x>)�idrIs r�__repr__z#StatefulIncrementalDecoder.__repr__�	s���B�t�H�H�$�$r c�H�d|_d|_t��|_dSr�)r��or�r�rIs rr�z StatefulIncrementalDecoder.reset�	s���������k�k����r c�b�|jdz|jdz}}t|j��|dz|zfS)Nr]r)r�r�rr�)r?r�r�s   r�getstatez#StatefulIncrementalDecoder.getstate�	s4���v��z�4�6�A�:�1���T�[�!�!�1�S�5�1�9�,�,r c��|\}}t|��|_t|d��\}}|dz|dzc|_|_dS)Nrr])r�r��divmodr�r�)r?�stater�r�r�r�s      r�setstatez#StatefulIncrementalDecoder.setstate�	sF���
�����'�'����b�#�����1��Q���A��������r Fc��d}|D]�}|jdkrM|td��kr|jr||���z
}�?|j�|���Z|j�|��t|j��|jkr||���z
}��|r|jr||���z
}|S)Nr�r�.)r��ordr��process_wordrDr)r?�input�final�outputr(s     r�decodez!StatefulIncrementalDecoder.decode�	s������
	2�
	2�A��v��{�{���C���=�=��{�6��$�"3�"3�"5�"5�5����K�&�&�q�)�)�)�)���"�"�1�%�%�%��t�{�#�#�t�v�-�-��d�/�/�1�1�1�F���	*�T�[�	*��d�'�'�)�)�)�F��
r c�$�d}|jdtd��kr2tdt|jdd�pd����|_n�|jdtd��kr2tdt|jdd�pd����|_nZ|j�d��}t|��|jkr
|d|jzz
}|jr|d|j�}|d	z
}t��|_|S)
Nr�rr��cr]r�r6�-r�)	r�r�rb�intr�r�r�rr�)r?r�s  rr�z'StatefulIncrementalDecoder.process_word�	s������;�q�>�S��X�X�%�%���S���Q�R�R��!5�A�6�6�7�7�D�F�F�
�[��^�s�3�x�x�
'�
'���S���Q�R�R��!5�A�6�6�7�7�D�F�F��[�'�'��0�0�F��6�{�{�T�V�#�#��#�d�f�*�$���v�
)���������c�M�F��k�k����
r N)r�rx)r#r$r%rerAr�r�r�r�r�r��codecEnabledr&r rr�r��	s���������"����%�%�%�"�"�"�
-�-�-�&�&�&�����"��� �L�L�Lr r�c	��tjr?|dkr;tjd��}tjd|jddddt���SdSdS)N�test_decoderr-)r'�encoder��incrementalencoder�streamreader�streamwriter�incrementaldecoder)r�r�r��lookup�	CodecInfor�)r'�latin1s  r�lookupTestDecoderr��	sd��!�.�;�4�>�3I�3I���y�)�)������
�d�#��D�9�	;�;�;�	;�;�;�3I�3Ir c� �eZdZdZgd�Zd�ZdS)�StatefulIncrementalDecoderTestzB
    Make sure the StatefulIncrementalDecoder actually works.
    ))r0Fza.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--------------.c�T�|jD]>\}}}t��}|�|�||��|���?t��}|�|�d��d��|�|�dd��d��dS)Nr�r�r r]r�)�
test_casesr�r�r�)r?r��eofr��ds     rr�z+StatefulIncrementalDecoderTest.test_decoder
s���"&�/�	;�	;��E�3��*�,�,�A����Q�X�X�e�S�1�1�6�:�:�:�:�
'�(�(��������)�,�,�b�1�1�1�������#�q�)�)�7�3�3�3�3�3r N)r#r$r%rer�r�r&r rr�r��	s>�����������J�6	4�	4�	4�	4�	4r r�c�J�eZdZd�Zd�Zd�Zd�Zd�Zd�Zd�Z	d�Z
d	�Zd
�Ze
jejjd��d���Zd
�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Z d�Z!d�Z"d�Z#d�Z$d�Z%d �Z&d!�Z'd"�Z(d#�Z)d$�Z*d%�Z+d&�Z,d'�Z-d(�Z.d)�Z/d*�Z0d+�Z1d,�Z2d-�Z3d.�Z4d/�Z5e6j7e8j9��d0�����Z:d1�Z;d2�Z<d3�Z=d4�Z>d5�Z?d6�Z@d7�ZAd8�ZBd9�ZCd:�ZDd;�ZEd<�ZFd=�ZGd>�ZHd?�ZId@�ZJdA�ZKdB�ZLdC�ZMdD�ZNdE�ZOdF�ZPdG�ZQdH�ZRdI�ZSdJ�ZTdKS)L�TextIOWrapperTestc��d|_d�d��|_tjtj��t
jt��|�	tj
t��dS)NsAAA
BBB
CCC
DDD
EEE
sAAA
BBB
CCC
DDD
EEE
r6)�testdatar��
normalizedrr�r�r��registerr�r�
unregisterrIs rr�zTextIOWrapperTest.setUp#
sa��:��
�6�=�=�g�F�F������)�*�*�*���)�*�*�*�����)�+<�=�=�=�=�=r c�B�tjtj��dSrCr�rIs rr�zTextIOWrapperTest.tearDown*
r�r c��|�d��}|�|d��}|�|d���}|�|dd���|�|jd��|�|jd��|�|dd	�
��|�|jd��|�|jd	��|�d|�����|�t|j|dd���|�t|j|dd
���dS)N�é

r:rr.r-�
r9FT)r/�line_buffering�é
rNr�)r,r$r8rAr�r/r�rr�r�r��r?r,r(r�s    rrz"TextIOWrapperTest.test_constructor-
s8���L�L��)�)������4�(�(�����q�7��3�3��	�
�
�1�y�&�
�9�9�9������Y�/�/�/�����)�5�1�1�1�	�
�
�1�w�t�
�<�<�<������W�-�-�-�����)�4�0�0�0�����1�:�:�<�<�0�0�0����)�Q�Z��W�b��Q�Q�Q����*�a�j�!�g�w��W�W�W�W�Wr c��|j�|j��}~|j�|j��}|�tt|��|�ttfd|jd��|�	|�
��d���|�|�d��d��dS)Nrrrr.r�)r8rr�r>r�rPr�r�rprArlr��r?r�s  rrz$TextIOWrapperTest.test_uninitialized;
s�����&�&�t�'9�:�:��
���&�&�t�'9�:�:�����)�T�1�-�-�-����
�N�;�?� �v�q�	*�	*�	*�	
�
�
�4�>�>�#�#�g�
�6�6�6����������B�'�'�'�'�'r c���|���}|�|��}|�td��5|�|d���ddd��dS#1swxYwYdS)Nzis not a text encoding�hexr.)r,r(rP�LookupErrorr8)r?r,r(s   r�*test_non_text_encoding_codecs_are_rejectedz<TextIOWrapperTest.test_non_text_encoding_codecs_are_rejectedF
s���
�L�L�N�N������"�"��
�
#�
#�K�1I�
J�
J�	2�	2����q�5��1�1�1�	2�	2�	2�	2�	2�	2�	2�	2�	2�	2�	2�	2����	2�	2�	2�	2�	2�	2s�A*�*A.�1A.c�&�|���}|�|��}|�|d���}|�|���|��|�|d���}|�d��|�|�����|���|�|���d��|�	t|j��t|��|�|jd��|�|j
d��|�|j��|�|j��dS)Nr6r.�howdyshowdyr�)r,r(r8r�r�rFr�r{r�r�r�r�r/r@r��
write_throughr�s    rr�zTextIOWrapperTest.test_detachO
sO���L�L�N�N������"�"�����q�7��3�3���
�
�a�h�h�j�j�!�$�$�$����q�7��3�3��	���������������&�&�&�	���
�
�
���������x�0�0�0����*�a�h�/�/�/�	
�Q���������W�-�-�-������8�,�,�,�����)�*�*�*������)�)�)�)�)r c�p�|�d�d����}|�|��}|�|d���}|jj}|�t
|��d|z��d|_|�t
|��d|z��d|_|�t
|��d|z��d	|_|�t
|��d
|z��|j	�
��t
|��dS)N�hellorr.z'<(%s\.)?TextIOWrapper encoding='utf-8'>r�z4<(%s\.)?TextIOWrapper name='dummy' encoding='utf-8'>r,z=<(%s\.)?TextIOWrapper name='dummy' mode='r' encoding='utf-8'>r�z><(%s\.)?TextIOWrapper name=b'dummy' mode='r' encoding='utf-8'>)r,r�r$r8r$r�r�r'�moder�r�)r?r�r(r��modnames     rr�zTextIOWrapperTest.test_reprc
s<���l�l�7�>�>�'�2�2�3�3������$�$�����q�7��3�3���$�/������a���C�g�M�	O�	O�	O��������a���P�SZ�Z�	\�	\�	\��������a���Y�\c�c�	e�	e�	e��������a���Z�]d�d�	f�	f�	f�	
��������Q�����r c��|���}|�|d���}tj|d|��5	t	|��n#t
$rYnwxYwddd��dS#1swxYwYdS)Nrr.r')r,r8rr�r�r��r?r�r�s   rr�z%TextIOWrapperTest.test_recursive_reprw
s����l�l�n�n�����s�W��5�5��
�
�s�F�A�
.�
.�	�	�
��Q�������
�
�
���
����	�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�	�	s6�A1�A�A1�
A!�A1� A!�!A1�1A5�8A5c��|���}|�|d��}|�|ddd���}|�d��|�|���d��|�d��|�|���d	��|�d
��|�|���d��dS)Nr:r�
T�r/r:r��Xr zY
ZsXY
ZzA
BsXY
ZA
B)r,r(r8rFr�r{r�s    r�test_line_bufferingz%TextIOWrapperTest.test_line_buffering�
s����L�L�N�N������4�(�(�����q�7�D�QU��V�V��	���������������s�+�+�+�	���������������x�0�0�0�	���������������|�4�4�4�4�4r c��|���}|�|d��}|�|ddd���}|�d��|�|���d��|�d�	��|�|���d
��|�d��|�|���d��|�d
��|�|���d��|�d�	��|�|���d��|�d��|�|���d��|���|�d�	��|�|jd��|�d�	��|���|�d�	��|�|jd��dS)Nr:rr�Fr�zAB
Cr T)r�sAB
CzDEF
Gs	AB
CDEF
G�Hs
AB
CDEF
GH�IJ)r,r(r8rFr�r{�reconfigurer�r�s    r�test_reconfigure_line_bufferingz1TextIOWrapperTest.test_reconfigure_line_buffering�
s����L�L�N�N������4�(�(�����q�7�D�QV��W�W��	���������������s�+�+�+�	�
�
�T�
�*�*�*���������x�0�0�0�	���������������~�6�6�6�	���������������~�6�6�6�	�
�
�U�
�+�+�+����������7�7�7�	����
�
�
����������7�7�7�	
�
�
����	�
�
�T�
�*�*�*�����)�5�1�1�1�	�
�
�T�
�*�*�*�	�
�
����	�
�
�T�
�*�*�*�����)�4�0�0�0�0�0r zutf-8 mode is enabledc��ttj��}	dD]}|tjvr
tj|=�tj��}|���}t
j��5t
jdt��|�
|��}ddd��n#1swxYwY|�|j|��tj�
��tj�|��dS#tj�
��tj�|��wxYw)N)�LC_ALL�LANG�LC_CTYPErT)�dictr�environ�locale�getencodingr,rUrVrW�EncodingWarningr8r�r/�clear�update)r?�old_environ�key�current_locale_encodingr(r�s      r�test_default_encodingz'TextIOWrapperTest.test_default_encoding�
sb���2�:�&�&��	+�6�
(�
(���"�*�$�$��
�3���&,�&8�&:�&:�#������A��(�*�*�
*�
*��%�h��@�@�@��&�&�q�)�)��
*�
*�
*�
*�
*�
*�
*�
*�
*�
*�
*����
*�
*�
*�
*�
���Q�Z�)@�A�A�A��J�������J���k�*�*�*�*�*��
�J�������J���k�*�*�*�*���s0�AD�50B1�%D�1B5�5D�8B5�9D�?Ec��|���}|�|d���}|�|jd��t	j��5t	jdt��|�|��}ddd��n#1swxYwY|�|j��tj
|j��dS)Nrr.rT)r,r8r�r/rUrVrWr��assertIsNotNoner�r��r?r(r�s   r�
test_encodingzTextIOWrapperTest.test_encoding�
s����L�L�N�N�����q�7��3�3�������W�-�-�-�
�
$�
&�
&�	&�	&��!�(�O�<�<�<��"�"�1�%�%�A�	&�	&�	&�	&�	&�	&�	&�	&�	&�	&�	&����	&�	&�	&�	&�	
���Q�Z�(�(�(��
�a�j�!�!�!�!�!s�0B�B�Bc��|�d��}|�|d���}|�t|j��|�d��}|�|dd���}|�t|j��|�d��}|�|dd���}|�|���d��|�d��}|�|dd���}|�|���d	��dS)
Nsabc
�
r6r.r��r/r@rTzabc

�replaceuabc
�
)r,r8r��UnicodeErrorrpr�r�s   r�test_encoding_errors_readingz.TextIOWrapperTest.test_encoding_errors_reading�
s���L�L��(�(�����q�7��3�3�����,���/�/�/��L�L��(�(�����q�7�8��D�D�����,���/�/�/��L�L��(�(�����q�7�8��D�D����������9�-�-�-��L�L��(�(�����q�7�9��E�E����������?�3�3�3�3�3r c�0�|���}|�|d���}|�t|jd��|���}|�|dd���}|�t|jd��|���}|�|ddd���}|�d	��|���|�|���d
��|���}|�|ddd���}|�d	��|���|�|���d��dS)
Nr6r.�ÿr�rrTr�)r/r@r:u	abcÿdef
sabcdef
rsabc?def
)r,r8r�rrFr�r�r{r�s   r�test_encoding_errors_writingz.TextIOWrapperTest.test_encoding_errors_writing�
sb���L�L�N�N�����q�7��3�3�����,����8�8�8��L�L�N�N�����q�7�8��D�D�����,����8�8�8��L�L�N�N�����q�7�8�%)�
�
+�
+��	�������	���	�	�	���������{�3�3�3��L�L�N�N�����q�7�9�%)�
�
+�
+��	�������	���	�	�	���������|�4�4�4�4�4r c
�@�gd�}dgd�gd|gdgd�gdddggd	gd
�gg}d}|D�]z}td�|���|����}dD�]>}td
d��D�])}|D�]"\}}	|�|�|��|��}
|�|
||���}|rng}	|�d��}
|
dkrnN|�t|
��d��|�
|
|���z���jnt|��}t||	��D]\}}|�||���|�t|��t|	������$��+��@��|dS)N)�unix
�	windows
zos9
�last
�nonl)rzwindows
zos9
r
rr�r�)rr	z	os9
last
rr�zunix
windows
z
os9
last
nonl�
)z
unix
windows
z
os9
z	last
nonl)rr-�utf-16�	utf-16-le�	utf-16-be�utf-32�	utf-32-le�	utf-32-be)FTr]r��r:r/Trz)rr�r�r�r$r,r8rpr�rrDrr:�zip)r?�input_linesrO�	encodingsr/r�do_readsr�r:�	exp_linesr��textio�	got_lines�c2�got_line�exp_lines                r�
test_newlineszTextIOWrapperTest.test_newlines�
s ��L�L�L���H�H�H�J��+���F�F�F�H��+�->�@�B��B�B�B�D�
��
�	�"�	I�	I�H������-�-�4�4�X�>�>�?�?�D�)�
I�
I��$�Q��|�|�I�I�G�.3�I�I�*��� $� 3� 3�D�L�L��4F�4F�� P� P��!%�!3�!3�E�7�;C�"4�"E�"E��#�	5�(*�I�I�%+�[�[��^�^��#%��8�8�$)� $� 0� 0��R���!� <� <� <� )� 0� 0��f�o�o�6G�6G�1G� H� H� H�I�%*�)-�V���I�25�i��2K�2K�A�A�.�H�h� �,�,�X�x�@�@�@�@��(�(��Y����Y���H�H�H�H�#I�I�
I�	I�	Ir c�~�d}|�dd���dd��}d|�d���d���fd|�d���d���fd	gd
�fdgd�fd
gd�ffD]�\}}|�|��}|�|d|���}|�|���|��|�d��|�|���d�	|������dS)NsAAA
BBB
CCC
DDD
EEE
FFF
GGGs
r��
r6T)�keependsr�r�)zAAA
zBBB
z
CCC
DDD
EEE
�FFF
�GGGr�)zAAA
BBB
CCC
DDD
EEE
r"r#r)z
AAA
BBB
CCC
zDDD
zEEE
z
FFF
z
GGGr9r)
rr��
splitlinesr,r8r�rxrWrpr�)r?r�r�r:r~r_�txts       r�test_newlines_inputz%TextIOWrapperTest.test_newlines_inputsL��?���%�%�g�u�5�5�=�=�e�U�K�K�
�
�:�$�$�W�-�-�8�8�$�8�G�G�H�
�����)�)�4�4�d�4�C�C�D�
�P�P�P�Q�
�J�J�J�K�
�Q�Q�Q�R�"�	<�	<��G�X��,�,�x�(�(�C��$�$�S�7�G�$�L�L�C����S�]�]�_�_�h�7�7�7��H�H�Q�K�K�K����S�X�X�Z�Z�����):�):�;�;�;�;�	<�	<r c��ddddd�}d|tjfgt|�����z}|D]�\}}|���}|�|d|���}|�d��|�d��|�d	��|���|�|j	d
��|�|�
��|����dS)NsAAA
BBB
CCC
X
Y
ZsAAA
BBB
CCC
X
Y

ZsAAA
BBB
CCC
X
Y

Z)r�r�rr�r6r9zAAA
BzBB
CCC
zX
Y
ZF)r�linesep�sorted�itemsr,r8rFr�r�r�r{)r?�testdictrOr:r~r_r%s       r�test_newlines_outputz&TextIOWrapperTest.test_newlines_output+s��+�-�-�7�	�������,�-�.�����8H�8H�1I�1I�I��!&�	7�	7��G�X��,�,�.�.�C��$�$�S�7�G�$�L�L�C��I�I�h�����I�I�k�"�"�"��I�I�k�"�"�"��I�I�K�K�K����S�Z��/�/�/����S�\�\�^�^�X�6�6�6�6�	7�	7r c����g�|j�G��fd�d���}|��}|�|d���}|�d��~tj��|�dg���dS)Nc���eZdZ��fd�ZdS)�4TextIOWrapperTest.test_destructor.<locals>.MyBytesIOc�����|�������|��dSrC)rDr{r�)r?r�rQs ��rr�z:TextIOWrapperTest.test_destructor.<locals>.MyBytesIO.closeAs5�����������)�)�)��
�
�4� � � � � r Nr�)r�rQs��r�	MyBytesIOr/@s3�������
!�
!�
!�
!�
!�
!�
!�
!r r1r6r.r�r�)r,r8rFrr�r�)r?r1r(r�r�rQs    @@rr�z!TextIOWrapperTest.test_destructor=s��������|��	!�	!�	!�	!�	!�	!�	!�	!��	!�	!�	!�
�I�K�K�����q�7��3�3��	�������
���������&��1�%�%�%�%�%r c����g�G�fd�d|j��}|���}||d���}~tj��|��gd���dS)Nc�:���eZdZ��fd�Z��fd�Z��fd�Z�xZS)�<TextIOWrapperTest.test_override_destructor.<locals>.MyTextIOc�����d��	t��j}|��dS#t$rYdSwxYwr�r�r�s  ��rr�zDTextIOWrapperTest.test_override_destructor.<locals>.MyTextIO.__del__Nr�r�c�r����d��t�����dSryr�r�s ��rr�zBTextIOWrapperTest.test_override_destructor.<locals>.MyTextIO.closeVr�r c�r����d��t�����dSr�r�r�s ��rr�zBTextIOWrapperTest.test_override_destructor.<locals>.MyTextIO.flushYr�r r�r�s@�r�MyTextIOr4Mr�r r8r6r.r�)r8r,rr�r�)r?r8r(r�r�s    @rr�z*TextIOWrapperTest.test_override_destructorKs������	 �	 �	 �	 �	 �	 �	 �t�)�	 �	 �	 �
�L�L�N�N���H�Q��)�)�)��
�������������+�+�+�+�+r c��|���}tj��5}|�t��5|�|d���jddd��n#1swxYwYts|�|j	��n,|j	�%|�
|j	jt��ddd��dS#1swxYwYdS)Nrr.)
r�rr�r�r�r8r�r�r�r�r�r�r�r�s   rr�z/TextIOWrapperTest.test_error_through_destructorbsu���#�#�%�%��
�
/�
1�
1�	B�R��"�"�>�2�2�
B�
B��"�"�5�7�"�;�;�A�A�
B�
B�
B�
B�
B�
B�
B�
B�
B�
B�
B����
B�
B�
B�
B�+�
B��!�!�"�-�0�0�0�0���*�� � ���!7��A�A�A�	B�	B�	B�	B�	B�	B�	B�	B�	B�	B�	B�	B����	B�	B�	B�	B�	B�	Bs6�C�A,� C�,A0	�0C�3A0	�4AC�C�Cc��dD�];}dD�]4}|�tjd|���}||_|�|�d��d��|���|�tjd|���}||_|�|���d��|�|���d��|���}|�|�	d��d��|�|�d��d��|�	d��|�|�d	��d
��|�|�d��d��|�|�d��d
��|�|���d
��|�|���|��|�|�	d��d��|�|�	dd	��|��|�|�d��d��|�|�	|��|��|�|���d��|�
d��r|�||��|�����6��=dS)N)r]rzr�rer�r�r���� �!�?�@�A)r6r-r�w+r.r�r��r+rrzr�r]rSr��def�utf)r0rr�r2r�rFr�rZrprWrN�multi_line_test)r?�	chunksize�encr3�cookies     r�
test_basic_iozTextIOWrapperTest.test_basic_ioqs���L�	�	�I�2�
�
���I�I�i�.��s�I�C�C�� )��
�� � ��������3�3�3����	�	�	��I�I�i�.��s�I�C�C�� )��
�� � ������1�-�-�-�� � ������5�1�1�1�������� � �������A�.�.�.�� � �������u�5�5�5����q�	�	�	�� � �������D�1�1�1�� � �������C�0�0�0�� � �������B�/�/�/�� � ������2�.�.�.�� � ������6�2�2�2�� � �������A�.�.�.�� � �����1���v�6�6�6�� � ��������3�3�3�� � ��������8�8�8�� � ������5�1�1�1��>�>�%�(�(�1��(�(��C�0�0�0����	�	�	�	�3
�	�	r c	�v�|�d��|���d}g}dD]�}g}t|��D]-}|�||t	|��z���.d�|��dz}|�|���|f��|�|����|�d��g}		|���}
|���}|sn|	�|
|f���C|�	|	|��dS)Nru	sÿ࿿￿)rr]rzr�rer��r<r=r>�>r?r@rAr:r�r�)
rWrdr�rDrr�rZrFrr�)r?r3rH�sample�wlinesrB�charsr��line�rlinesrs           rrFz!TextIOWrapperTest.multi_line_test�s0��	���q�	�	�	�	�
�
����$����L�	�	�D��E��4�[�[�
6�
6�����V�A��F���O�4�5�5�5�5��7�7�5�>�>�D�(�D��M�M�1�6�6�8�8�T�*�+�+�+�
�G�G�D�M�M�M�M�	���q�	�	�	���	'��&�&�(�(�C��:�:�<�<�D��
���M�M�3��+�&�&�&�	'�	
�����(�(�(�(�(r c���|�tjdd���}|���}|�d��|���}|�d��|���}|�d��|�|���|��|�|���d��|�|���|��|�|���d��|�|���|��|�d��|D]8}|�|d��|�t|j���9|�|���|��|�
��dS)NrBrr.uÿ
r)r0rr�rZrFrWr�rr�r�r�)r?r3�p0�p1�p2rQs      r�test_tellingzTextIOWrapperTest.test_telling�s����I�I�i�&��w�I�?�?��
�V�V�X�X��	�������
�V�V�X�X��	�������
�V�V�X�X��	���q�	�	�	���������2�&�&�&���������x�0�0�0���������2�&�&�&���������x�0�0�0���������2�&�&�&�	���q�	�	�	��	/�	/�D����T�8�,�,�,����g�q�v�.�.�.�.���������2�&�&�&�	���	�	�	�	�	r c�T�t��}|dz
}d|z}t|�d����}|�t	|��t	|����d}t|�d����}||z}|�tjd��5}|�|dz��ddd��n#1swxYwY|�tjdd���5}|�	|��}	|�|	t|d����|�|���|��|�|���|��ddd��dS#1swxYwYdS)	Nrzr�r�袈
rr,r.r6)
r4rr�r�rr0rr�rFrprrZr)
r?�
chunk_size�prefix_size�u_prefix�prefix�u_suffix�suffixrQr3r�s
          r�test_seekingzTextIOWrapperTest.test_seeking�s���(�*�*�
� �1�n����$���x���w�/�/�0�0������X����F���4�4�4����x���w�/�/�0�0������
�Y�Y�y�'��
.�
.�	�!�
�G�G�D��F�O�O�O�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�
�Y�Y�y�'��w�Y�
?�
?�	5�1����{�#�#�A����Q��F�G� 4� 4�5�5�5����Q�V�V�X�X�{�3�3�3����Q�Z�Z�\�\�8�4�4�4�		5�	5�	5�	5�	5�	5�	5�	5�	5�	5�	5�	5����	5�	5�	5�	5�	5�	5s%�4C�C� C�B
F�F!�$F!c��d}|�tjd��5}|�|��ddd��n#1swxYwY|�tjdd���5}|jd|_|���|���ddd��dS#1swxYwYdS)Ns࿿
rr,rr.rz)r0rr�rFr2rrZ)r?rr3s   r�test_seeking_tooz"TextIOWrapperTest.test_seeking_too�s#�� ��
�Y�Y�y�'��
.�
.�	�!�
�G�G�D�M�M�M�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�
�Y�Y�y�'��w�Y�
?�
?�	�1�
�M�M��A�M�
�J�J�L�L�L�
�F�F�H�H�H�		�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�	�	s#�A�A	�A	�27B6�6B:�=B:c�0���d�d��fd�	}dt_	tjD]\}}}||���tjD]4\}}}�t	|��dzz
}d|z}|dz}|||z|���5	dt_dS#dt_wxYw)N�rc	�����tjd��}|�|��|�����tjd���}�|_|���}|���t|t|��dz��D�]}ddt|��|z
fD]�}��tjd���}��	|�|��|d|���|�
��}��	|�|��||||z���|�|����	|���||d���|�������dS)zTell/seek to various points within a data stream and ensure
            that the decoded data returned by read() is consistent.rr�r.r]r�N)r0rr�rFr�r2rpr�rr�rZrW)	r�min_posr3�decodedr�r}rI�
CHUNK_SIZEr?s	       ��r�test_seek_and_tell_with_datazJTextIOWrapperTest.test_seek_and_tell.<locals>.test_seek_and_tell_with_data�s�����	�	�)�*�D�1�1�A�
�G�G�D�M�M�M�
�G�G�I�I�I��	�	�)�*�^�	�D�D�A�&�A�M��f�f�h�h�G�
�G�G�I�I�I��7�C��L�L�1�$4�5�5�
�
���Q��G���q� 0�1���A��	�	�)�"2�^�	�L�L�A��$�$�Q�V�V�A�Y�Y������<�<�<��V�V�X�X�F��$�$�Q�V�V�A�Y�Y���!�a�%��0@�A�A�A��F�F�6�N�N�N��$�$�Q�V�V�X�X�w�q�r�r�{�;�;�;��G�G�I�I�I�I��
�
r r]rz�.r�)r�r�r�r�r)r?rir��_�offsetr]rfrhs`      @rrHz$TextIOWrapperTest.test_seek_and_tell�s������
�	�	�	�	�	�	�	�,34�"�/�	8�=�H�
4�
4���q�!�,�,�U�3�3�3�3� >�H�
F�
F���q�!�#�c�%�j�j�!�m�3���f��� ��(��,�,�V�e�^�W�E�E�E�E�
F�78�&�3�3�3��a�&�3�7�7�7�7s�AB�Bc���|�tjdd���}|�d��|���|�tjdd���}|�|���d��|���}|�|���d��|���}|�|��|�|���d��|�|���|��|���dS)Nr�euc_jpr.u
AB
うえ
r,zAB
uうえ
)	r0rr�rFr�r�rrZrW)r?r3rTrUs    r�test_multibyte_seek_and_tellz.TextIOWrapperTest.test_multibyte_seek_and_tells
���I�I�i�&��h�I�?�?��	���$�%�%�%�	���	�	�	��I�I�i�&��h�I�?�?����������v�.�.�.�
�V�V�X�X����������'7�8�8�8�
�V�V�X�X��	���r�
�
�
���������'7�8�8�8���������2�&�&�&�	���	�	�	�	�	r c��|�tjdd���}|�d��|���}|�d��|�|��|�d��|���|�tjdd���}|�|���d��|���dS)	Nr�euc_jis_2004r.uæ̀�æùr,uæ̀̀)	r0rr�rFrZrWr�r�r)r?r3rTs   r�test_seek_with_encoder_statez.TextIOWrapperTest.test_seek_with_encoder_states����I�I�i�&��n�I�E�E��	�������
�V�V�X�X��	�������	���r�
�
�
�	�������	���	�	�	��I�I�i�&��n�I�E�E����������';�<�<�<�	���	�	�	�	�	r c�B�d}d}|D�]}|���}|�||���}|�|��|�|��|�d��|�|���|dz��|�d��|�|���|dz��|�|���|dz�|������dS)N�
1234567890)r
rrrrrr.rrz)r,r8rFrWr�rpr{r�)r?rrOr/r_r3s      r�test_encoded_writesz%TextIOWrapperTest.test_encoded_writess�������
	J�
	J�H��,�,�.�.�C��"�"�3��"�:�:�A�
�G�G�D�M�M�M�
�G�G�D�M�M�M�
�F�F�1�I�I�I����Q�V�V�X�X�t�a�x�0�0�0�
�F�F�1�I�I�I����Q�V�V�X�X�t�a�x�0�0�0����S�\�\�^�^�d�Q�h�->�->�x�-H�-H�I�I�I�I�
	J�
	Jr c��Gd�d|j��}|�|��d���}|�t|j��dS)Nc��eZdZd�ZdS)�5TextIOWrapperTest.test_unreadable.<locals>.UnReadablec��dSr�r&rIs rrQz>TextIOWrapperTest.test_unreadable.<locals>.UnReadable.readable5r�r Nr�r&r r�
UnReadablery4r�r r{rr.)r,r8r�r�rp)r?r{r%s   r�test_unreadablez!TextIOWrapperTest.test_unreadable3sl��	�	�	�	�	���	�	�	�� � ������ �@�@�����'�3�8�,�,�,�,�,r c���|�|�d��d���}d}	|�d��}|sn||z
}�|�|d��dS)NsAA
BBrr.r�Tr]zAA
BB�r8r,rpr��r?r%�readsrSs    r�test_read_one_by_onez&TextIOWrapperTest.test_read_one_by_one:sv��� � ����k�!:�!:�W� �M�M����	�������A��
���Q�J�E�		�
	
�����)�)�)�)�)r c��|�|�d��d���}|�|���gd���|�d��|�|�d��gd���|�d��|�|�d��ddg��dS)	NsAA
BB
CCrr.)�AA
�BB
�CCrr�r�r�)r8r,r�rxrW�r?r%s  rr&z TextIOWrapperTest.test_readlinesDs���� � ����m�!<�!<�w� �O�O����������*@�*@�*@�A�A�A��������������t�,�,�.D�.D�.D�E�E�E��������������q�)�)�F�F�+;�<�<�<�<�<r c���|�|�d��d���}d}	|�d��}|sn||z
}�|�|d��dS)Ns�AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
Brr.r�Trdz�AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
Br~rs    r�test_read_by_chunkz$TextIOWrapperTest.test_read_by_chunkMsw��� � ����.C�!D�!D�w� �W�W����	�����
�
�A��
���Q�J�E�		�
	
����
�.�.�.�.�.r c��gd�}|���}|�|d���}|�|��|���|�|���d��dS�N)r��cd�efrr.r�)r,r8rr�r�r{�r?rQr_r%s    rr�z!TextIOWrapperTest.test_writelinesXsu�������l�l�n�n��� � ��w� �7�7�����q�����	�	�������������3�3�3�3�3r c� �tgd���}|���}|�|d���}|�|��|���|�|���d��dSr�)rr,r8rr�r�r{r�s    rr�z*TextIOWrapperTest.test_writelines_userlist`s~���'�'�'�(�(���l�l�n�n��� � ��w� �7�7�����q�����	�	�������������3�3�3�3�3r c�"�|�|���d���}|�t|jgd���|�t|jd��|�t|jd��dS)Nrr.r�r�)r8r,r�r�rr�s  rr�z'TextIOWrapperTest.test_writelines_errorhsz��� � ������'� �B�B�����)�S�^�Y�Y�Y�?�?�?����)�S�^�T�:�:�:����)�S�^�V�<�<�<�<�<r c���|�|�|j��d���}d}	|�d��}|sn||z
}�|�||j��dS)Nr6r.r�Tr])r8r,r�rpr�r�rs    r�test_issue1395_1z"TextIOWrapperTest.test_issue1395_1ns|��� � ����d�m�!<�!<�w� �O�O����	�������A��
���Q�J�E�		�
	
������0�0�0�0�0r c���|�|�|j��d���}d|_d}	|�d��}|sn||z
}�|�||j��dS)Nr6r.rer��r8r,r�r2rpr�r�rs    r�test_issue1395_2z"TextIOWrapperTest.test_issue1395_2zs���� � ����d�m�!<�!<�w� �O�O�������	�������A��
���Q�J�E�		�
	
������0�0�0�0�0r c��|�|�|j��d���}d|_|�d��}||�d��z
}||���z
}||���z
}||���z
}|�||j��dS�Nr6r.re)r8r,r�r2rprr�r��r?r%r�s   r�test_issue1395_3z"TextIOWrapperTest.test_issue1395_3�s���� � ����d�m�!<�!<�w� �O�O������������
����!�����
��������
��������
��������������0�0�0�0�0r c��|�|�|j��d���}d|_|�d��}||���z
}|�||j��dSr�r�r�s   r�test_issue1395_4z"TextIOWrapperTest.test_issue1395_4�sn��� � ����d�m�!<�!<�w� �O�O������������
��������������0�0�0�0�0r c�j�|�|�|j��d���}d|_|�d��}|���}|�d��|�|��|�|�d��d��dS)Nr6r.rerzBBB
)r8r,r�r2rprZrWr�)r?r%r�rs    r�test_issue1395_5z"TextIOWrapperTest.test_issue1395_5�s���� � ����d�m�!<�!<�w� �O�O�������������h�h�j�j�������������
�
�
�������!���g�.�.�.�.�.r c���|�|j��}|�|d���}|�|���|�����dS�Nr6r.)r,r�r8r�rS)r?r�r%s   r�test_issue2282z TextIOWrapperTest.test_issue2282�s[�����d�m�,�,��� � ��'� �:�:��������*�*�C�L�L�N�N�;�;�;�;�;r c��tj}dD�]s}|�|d|���5}|�d��|���}ddd��n#1swxYwY|�|d��5}|�|���d�|����ddd��n#1swxYwY|�|d|���5}|�d��ddd��n#1swxYwY|�|d��5}|�|���d�|����ddd��n#1swxYwY��udS)	N��	utf-8-sigr
rrr.�aaar	r��xxx�aaaxxx)rr�r0rFrZr�rpr��r?�filename�charsetr3rs     r�test_append_bomz!TextIOWrapperTest.test_append_bom�sk���#��8�
	E�
	E�G����8�S�7��;�;�
�q���������f�f�h�h��
�
�
�
�
�
�
�
�
�
�
����
�
�
�
����8�T�*�*�
B�a�� � ������5�<�<��+@�+@�A�A�A�
B�
B�
B�
B�
B�
B�
B�
B�
B�
B�
B����
B�
B�
B�
B����8�S�7��;�;�
�q��������
�
�
�
�
�
�
�
�
�
�
����
�
�
�
����8�T�*�*�
E�a�� � ������8�?�?�7�+C�+C�D�D�D�
E�
E�
E�
E�
E�
E�
E�
E�
E�
E�
E����
E�
E�
E�
E��
	E�
	EsG�*A � A$	�'A$	�<C	�	C
	�C
	�,D�D	�D	�/<E7�7E;	�>E;	c��tj}dD�]I}|�|d|���5}|�d��|���}ddd��n#1swxYwY|�|d|���5}|�|��|�d��|�d��|�d��ddd��n#1swxYwY|�|d	��5}|�|���d
�|����ddd��n#1swxYwY��KdS)Nr�rr.r�rC�zzzr�bbbr	�bbbzzz)	rr�r0rFrZrWr�rpr�r�s     r�
test_seek_bomzTextIOWrapperTest.test_seek_bom�s����#��8�
	E�
	E�G����8�S�7��;�;�
�q���������f�f�h�h��
�
�
�
�
�
�
�
�
�
�
����
�
�
�
����8�T�G��<�<�
�����s��������������q�	�	�	��������	
�
�
�
�
�
�
�
�
�
�
����
�
�
�
�
���8�T�*�*�
E�a�� � ������8�?�?�7�+C�+C�D�D�D�
E�
E�
E�
E�
E�
E�
E�
E�
E�
E�
E����
E�
E�
E�
E��
	E�
	Es6�*A � A$	�'A$	�AC$�$C(	�+C(	�<E
�
E	�E	c�r�tj}dD�]&}|�|d|���5}|�d��ddd��n#1swxYwY|�|d|���5}|�d��|�d|j��|�d��ddd��n#1swxYwY|�|d��5}|�|���d	�|����ddd��n#1swxYwY��(dS)
Nr�rr.r�r�rr�r	r�)	rr�r0rFrWrr�rpr�)r?r�r�r3s    r�test_seek_append_bomz&TextIOWrapperTest.test_seek_append_bom�s����#��8�	E�	E�G����8�S�7��;�;�
�q��������
�
�
�
�
�
�
�
�
�
�
����
�
�
�
����8�S�7��;�;�
�q����q�	�	�	����q�$�-�(�(�(��������
�
�
�
�
�
�
�
�
�
�
����
�
�
�
����8�T�*�*�
E�a�� � ������8�?�?�7�+C�+C�D�D�D�
E�
E�
E�
E�
E�
E�
E�
E�
E�
E�
E����
E�
E�
E�
E��	E�	Es6�A�A	�A	�/AC�C	�C	�"<D*�*D.	�1D.	c�^�|�tjdd���5}|�|jd��ddd��n#1swxYwY|�tjddd���5}|�|jd��ddd��dS#1swxYwYdS)Nrrr.r�rr)r0rr�r�r@rs  r�test_errors_propertyz&TextIOWrapperTest.test_errors_property�s��
�Y�Y�y�'��w�Y�
?�
?�	1�1����Q�X�x�0�0�0�	1�	1�	1�	1�	1�	1�	1�	1�	1�	1�	1����	1�	1�	1�	1�
�Y�Y�y�'��w�y�Y�
Q�
Q�	2�UV����Q�X�y�1�1�1�	2�	2�	2�	2�	2�	2�	2�	2�	2�	2�	2�	2����	2�	2�	2�	2�	2�	2s#�A�A�A�9B"�"B&�)B&c�����tj���|�tjddd���5���fd���fd�td��D��}t
j|�j��5tj
d��ddd��n#1swxYwYddd��n#1swxYwY|�tjd�	��5�����}td��D].}|�|�
d
|z��d���/	ddd��dS#1swxYwYdS)Nrrr]r2c�d��d|z}������|��dS)N�Thread%03d
)r�rF)ra�text�eventr3s  ��r�runz1TextIOWrapperTest.test_threads_write.<locals>.run�s-���%��)���
�
��������
�
�
�
�
r c�>��g|]}tj�|f�����S)rrE)rGr�r�s  �rrHz8TextIOWrapperTest.test_threads_write.<locals>.<listcomp>�s;���+�+�+��!�'�s�!��>�>�>�+�+�+r r�rJr.r�)r�r�r0rr�r�r
rOr�r�r�rpr�r)r?rR�contentrar�r3r�s    @@@r�test_threads_writez$TextIOWrapperTest.test_threads_write�s-�������!�!��
�Y�Y�y�'��w�!�Y�
L�
L�	!�PQ�
�
�
�
�
�
�+�+�+�+� %�b�	�	�+�+�+�G�!�/����C�C�
!�
!��
�4� � � �
!�
!�
!�
!�
!�
!�
!�
!�
!�
!�
!����
!�
!�
!�
!�	!�	!�	!�	!�	!�	!�	!�	!�	!�	!�	!����	!�	!�	!�	!��Y�Y�y�'�'�Y�
:�
:�	G�a��f�f�h�h�G��2�Y�Y�
G�
G��� � ����~��/A�!B�!B�A�F�F�F�F�
G�	G�	G�	G�	G�	G�	G�	G�	G�	G�	G�	G�	G����	G�	G�	G�	G�	G�	GsH�<B.�6B�B.�B	�B.�B	�B.�.B2�5B2�AD;�;D?�D?c�����|�|�|j��d����g���fd�}|�_|�t
�j��|��j��|��j	j��|����|�
�d��|�
�d��d��_dS)Nr6r.c�P���j�jjg�dd�<t���rC)r�r�r�)r�r%s��rr�z>TextIOWrapperTest.test_flush_error_on_close.<locals>.bad_flush�s%�����S�Z�%6�7�F�1�1�1�I��)�)�Or rr]c��dSrCr&r&r rr�z=TextIOWrapperTest.test_flush_error_on_close.<locals>.<lambda>�r�r )r8r,r�r�r�r�r�r�r�r�r�)r?r�r�r%s  @@rr�z+TextIOWrapperTest.test_flush_error_on_close�s������ � ����d�m�!<�!<�w� �O�O����	�	�	�	�	�	���	����'�3�9�-�-�-�����
�#�#�#�����
�)�*�*�*��������������#�#�#�������#�#�#� �L��	�	�	r c�D�|�|j��}d�}d�}||_|�|d���}||_|�t��5}|���ddd��n#1swxYwY|�|jj	d��|�
|jjt��|�|jjj	d��|�|j
��d�|_d�|_dS)	Nc� �td���r�rtr&r rr�z>TextIOWrapperTest.test_close_error_on_close.<locals>.bad_flush
r�r c� �td���r�rtr&r rr�z>TextIOWrapperTest.test_close_error_on_close.<locals>.bad_close
r�r r6r.r�r�c��dSrCr&r&r rr�z=TextIOWrapperTest.test_close_error_on_close.<locals>.<lambda>
rvr c��dSrCr&r&r rr�z=TextIOWrapperTest.test_close_error_on_close.<locals>.<lambda>
r�r )r,r�r�r8r�r�r�r�rr�r�r�r�r��r?r�r�r�r%r�s      rr�z+TextIOWrapperTest.test_close_error_on_close�sN�����d�m�,�,��	#�	#�	#�	#�	#�	#� ���� � ��'� �:�:����	�
�
�
�w�
'�
'�	�3��I�I�K�K�K�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	������+�Z�8�8�8����c�m�7��A�A�A������2�7��D�D�D������$�$�$�$�|��� �L��	�	�	�� B�B�Bc�d�|�|j��}d�}d�}||_|�|d���}||_|�t��5}|���ddd��n#1swxYwY|�dt|j	����|�
|j	jt��|�dt|j	j����|�|j
��d�|_d�|_dS)	Nc��t�rCr�r&r rr�zLTextIOWrapperTest.test_nonnormalized_close_error_on_close.<locals>.bad_flush
r�r c��t�rCr�r&r rr�zLTextIOWrapperTest.test_nonnormalized_close_error_on_close.<locals>.bad_close
r�r r6r.r�r�c��dSrCr&r&r rr�zKTextIOWrapperTest.test_nonnormalized_close_error_on_close.<locals>.<lambda>$
rvr c��dSrCr&r&r rr�zKTextIOWrapperTest.test_nonnormalized_close_error_on_close.<locals>.<lambda>%
r�r )r,r�r�r8r�r�r�r�rrr�r�r�r�r�s      rr�z9TextIOWrapperTest.test_nonnormalized_close_error_on_close
sV�����d�m�,�,��	%�	%�	%�	%�	%�	%� ���� � ��'� �:�:����	�
�
�
�y�
)�
)�	�S��I�I�K�K�K�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	��
�
�*�C��
�,>�,>�?�?�?����c�m�7��C�C�C��
�
�*�C��
�0I�,J�,J�K�K�K������$�$�$�$�|��� �L��	�	�	r�c��|�|�|j��d���}|���|���|���|�t
|j��dSr�)r8r,r�r�r�r�r�r�s  rr�z"TextIOWrapperTest.test_multi_close'
sm��� � ����d�m�!<�!<�w� �O�O���	�	�����	�	�����	�	�������*�c�i�0�0�0�0�0r c���|�|�|j��d���}|�|j|j��|�|j|jd��dS)Nrr.r)r8r�r�r�r�rZrWr�s  rr�z!TextIOWrapperTest.test_unseekable.
si��� � ��!6�!6�t�}�!E�!E�PW� �X�X�����$�3�S�X�>�>�>����$�3�S�X�q�A�A�A�A�Ar c��|�|�|j��d���}|�|j��}|�t��5||_ddd��dS#1swxYwYdSr�)r8r,r�r�r�r�)r?r%r_s   rr�z*TextIOWrapperTest.test_readonly_attributes3
s���� � ����d�m�!<�!<�w� �O�O���l�l�4�=�)�)��
�
�
�~�
.�
.�	�	��C�J�	�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�	�	s�$A9�9A=�A=c�P�|�gd���}|�|dd���}|�|�d��d��|�|���d��|�t|��dd	g��dS)
N�r�r�sghi
jkl
opq
r6r�r9re�abcdzefghi
zjkl
zopq
)rlr8r�rprr:�r?r�r%s   r�
test_rawiozTextIOWrapperTest.test_rawio9
s����n�n�A�A�A�B�B��� � ��w�� �E�E��������!���f�-�-�-����������3�3�3�����c���W�g�$6�7�7�7�7�7r c�@�|�gd���}|�|ddd���}|�d��|�d��|�d��|�d	�|j��d
��dS)Nr�r6r�T)r/r:r��1z23
4�5r s123
45)rlr8rFr�r�r<r�s   r�test_rawio_write_throughz*TextIOWrapperTest.test_rawio_write_throughD
s����n�n�A�A�A�B�B��� � ��w��/3�!�5�5���	�	�#�����	�	�'�����	�	�#����������#�"2�3�3�Z�@�@�@�@�@r c����ggc��G��fd�d|j��}|���}d}||t|��dz��}|�|dd���}|�d��}|�|��|����|����|�|�	��d��g�|�|d	z��|����|�|�	��|d
z��dS)Nc�.���eZdZ��fd�Z��fd�Z�xZS)�BTextIOWrapperTest.test_bufio_write_through.<locals>.BufferedWriterc�`����d��t��j|i|��SrHr�)r?r�r�r|�flush_calleds   ��rr�zHTextIOWrapperTest.test_bufio_write_through.<locals>.BufferedWriter.flushS
�2����#�#�D�)�)�)�$�u�w�w�}�d�5�f�5�5�5r c�`����d��t��j|i|��SrH)rDr{rF)r?r�r�r|�write_calleds   ��rrFzHTextIOWrapperTest.test_bufio_write_through.<locals>.BufferedWriter.writeV
r�r )r#r$r%r�rFr�)r|r�r�s@��rr(r�R
s\��������
6�
6�
6�
6�
6�
6�
6�
6�
6�
6�
6�
6�
6�
6�
6�
6r r(rrzr6T)r/r�r r�rG)
r(r,rr8r�rFr�r�r�r{)	r?r(rrr�rr�r�r�s	       @@r�test_bufio_write_throughz*TextIOWrapperTest.test_bufio_write_throughN
sb����&(��"��l�	6�	6�	6�	6�	6�	6�	6�	6�T�0�	6�	6�	6�����������u�c�$�i�i��k�2�2���#�#�E�G�26�$�8�8���{�{�7�#�#�����T����	
����&�&�&�����%�%�%�������)�)�3�/�/�/������T�B�Y��������%�%�%�������)�)�4�"�9�5�5�5�5�5r c��|�g��}|�|dd���}|�d��|�d���|�|jd��|�d�|j��d��|�d	��|�d�|j��d
��|�d���|�|jd��|�d��|���|�d�|j��d
��|���|�d���|�|jd��|�d���|���|�d���|�|jd��dS)Nr6r�r9r�T)r�r r��23r^F�45r@)	rlr8rFr�r�r�r�r<r�r�s   r�test_reconfigure_write_throughz0TextIOWrapperTest.test_reconfigure_write_throughn
s����n�n�R� � �����s�W�d��C�C��	�������	�
�
�D�
�)�)�)������$�/�/�/�������#�"2�3�3�T�:�:�:�	����
�
�
�������#�"2�3�3�V�<�<�<�	�
�
�E�
�*�*�*������%�0�0�0�	����
�
�
�	���	�	�	�������#�"2�3�3�X�>�>�>�	�
�
����	�
�
�D�
�)�)�)������%�0�0�0�	�
�
�D�
�)�)�)�	�
�
����	�
�
�D�
�)�)�)������$�/�/�/�/�/r c���|�|�d��d���}|�t|jd��|�|�d��d���}|�t|j��|�|�d��d���}|�t|j��dS)Nr�rr.r])r8rFr�r�rprr�s  r�test_read_nonbytesz$TextIOWrapperTest.test_read_nonbytes�
s���
���t�}�}�S�1�1�G��D�D�����)�Q�V�Q�/�/�/����t�}�}�S�1�1�G��D�D�����)�Q�Z�0�0�0����t�}�}�S�1�1�G��D�D�����)�Q�V�,�,�,�,�,r c��tjd��}tj|dd��5t	jt	jd��d���}ddd��n#1swxYwY|�t|j	d��dS)N�rot13�_is_text_encodingT�foor.�bar)
r�r�rr�r�r8r,r�r�rF)r?r�r�s   r�test_illegal_encoderz&TextIOWrapperTest.test_illegal_encoder�
s����
�g�&�&��
�
�u�&9�4�
@�
@�	G�	G�� ���F�!3�!3�g�F�F�F�A�	G�	G�	G�	G�	G�	G�	G�	G�	G�	G�	G����	G�	G�	G�	G����)�Q�W�e�4�4�4�4�4s�)A � A$�'A$c�$����fd�����}��t|jd�����}��t|j�����}��t|j���fd�}|d��}��t|jd��|d��}��t|jd��|d��}��t|jd��dS)Nc���tjd��}d|_	����d��dd���}d|_n#d|_wxYw|S)N�quopriTsaaaaaar�rF)r�r�r�r8r,)r�r�r?s  �r�_make_illegal_wrapperzETextIOWrapperTest.test_illegal_decoder.<locals>._make_illegal_wrapper�
st����]�8�,�,�F�'+�F�$�
1��&�&�t�|�|�I�'>�'>�/3�h�'�H�H��,1��(�(��5��(�0�0�0�0��Hs�+A�	Ar]c������G�fd�d����fd�}tjd��}tj|d|��5���cddd��S#1swxYwYdS)Nc���eZdZ�fd�ZdS)�^TextIOWrapperTest.test_illegal_decoder.<locals>._make_very_illegal_wrapper.<locals>.BadDecoderc����SrCr&)r?�getstate_ret_vals �rr�zgTextIOWrapperTest.test_illegal_decoder.<locals>._make_very_illegal_wrapper.<locals>.BadDecoder.getstate�
s	���+�+r N)r#r$r%r�)r�s�r�
BadDecoderr��
s.�������,�,�,�,�,�,�,r r�c������SrCr&)r�r�s �r�_get_bad_decoderzdTextIOWrapperTest.test_illegal_decoder.<locals>._make_very_illegal_wrapper.<locals>._get_bad_decoder�
s���!�z�|�|�#r r�r�)r�r�rr�)r�r�r�r�r�s`  @�r�_make_very_illegal_wrapperzJTextIOWrapperTest.test_illegal_decoder.<locals>._make_very_illegal_wrapper�
s������
,�
,�
,�
,�
,�
,�
,�
,�
,�
,�
$�
$�
$�
$�
$��]�8�,�,�F��"�6�+?�#3�5�5�
/�
/�,�,�.�.�
/�
/�
/�
/�
/�
/�
/�
/�
/�
/�
/�
/����
/�
/�
/�
/�
/�
/s�
A�A� ArNr&)r]rz)r�r�rpr)r?r�r�r�s`  @r�test_illegal_decoderz&TextIOWrapperTest.test_illegal_decoder�
s2����	�	�	�	�	�
"�!�#�#�����)�Q�V�Q�/�/�/�!�!�#�#�����)�Q�Z�0�0�0�!�!�#�#�����)�Q�V�,�,�,�
		/�		/�		/�		/�		/�
'�&�r�*�*�����)�Q�V�R�0�0�0�&�&�r�*�*�����)�Q�V�R�0�0�0�&�&�v�.�.�����)�Q�V�R�0�0�0�0�0r c�h�|jj}d�||���}td|��S)Na�if 1:
            import codecs
            import {iomod} as io

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

            class C:
                def __init__(self):
                    self.buf = io.BytesIO()
                def __del__(self):
                    io.TextIOWrapper(self.buf, **{kwargs})
                    print("ok")
            c = C()
            )�iomodr��-c)r�r#r�r)r?r�r��codes    r�_check_create_at_shutdownz+TextIOWrapperTest._check_create_at_shutdown�
s=���� �����U�6��2�2�	
� ��d�+�+�+r c��|���\}}}|r/|�|j|�����dS|�d|��������dS)N�ok)r�r��shutdown_errorr�r��strip�r?�rc�outr�s    r�(test_create_at_shutdown_without_encodingz:TextIOWrapperTest.test_create_at_shutdown_without_encoding�
sx���5�5�7�7���C���	9�
�M�M�$�-�s�z�z�|�|�<�<�<�<�<����T�3�:�:�<�<�#5�#5�#7�#7�8�8�8�8�8r c���|�dd���\}}}|�|��|�d|��������dS)Nrr�rr)r�r�r�r�rrs    r�%test_create_at_shutdown_with_encodingz7TextIOWrapperTest.test_create_at_shutdown_with_encoding�
sm���5�5�w�=E�6�G�G���C�������������s�z�z�|�|�1�1�3�3�4�4�4�4�4r c�.�td��}|�|d��}t|��������}|�|�d��|�d����dS)NsJust some random string
rr�)�MemviewBytesIOr8�_to_memoryviewr{r�r�rpr�)r?r,r��	bytes_vals    r�test_read_byteslikez%TextIOWrapperTest.test_read_byteslike�
s|���7�8�8�����q�'�*�*��
$�A�J�J�L�L�1�1�9�9�;�;�	����������i�&6�&6�w�&?�&?�@�@�@�@�@r c��Gd�dt��}td��D]2}	|�|��d����##t$rY�/wxYwd�|_|�|��d���}dS)Nc� �eZdZd�Zd�Zd�ZdS)�,TextIOWrapperTest.test_issue22849.<locals>.Fc��dSrHr&rIs rrQz5TextIOWrapperTest.test_issue22849.<locals>.F.readable�
���t�tr c��dSrHr&rIs rrJz5TextIOWrapperTest.test_issue22849.<locals>.F.writable�
rr c��dSrHr&rIs rrSz5TextIOWrapperTest.test_issue22849.<locals>.F.seekable�
rr N)r#r$r%rQrJrSr&r r�Fr�
s+������+�+�+�+�+�+�+�+�+�+�+r rr�rr.c��dSr9r&�r�s rr�z3TextIOWrapperTest.test_issue22849.<locals>.<lambda>�
s��1�r )�objectr�r8r>rZ)r?rr�r�s    r�test_issue22849z!TextIOWrapperTest.test_issue22849�
s���	,�	,�	,�	,�	,��	,�	,�	,�
�r���	�	�A�
��"�"�1�1�3�3��"�9�9�9�9���
�
�
���
�����������q�q�s�s�W��5�5���s�A�
A�Ac�~�tjtjd����}|�d���dS)N�testr�r.)r�r8r,r�)r?�wrappers  r�test_reconfigure_localez)TextIOWrapperTest.test_reconfigure_locale�
s9���"�2�:�g�#6�#6�7�7�����X��.�.�.�.�.r c�(�d�d��d�d��z}|�|��}|�|dd���}|�|���d��|�|j��5|�d���ddd��n#1swxYwY|�|j��5|�d�	��ddd��dS#1swxYwYdS)
N�abcé
r��déf
�utf8r�r9rr.�r:)r�r,r8r�rr�r�r�)r?rr�r%s    r�test_reconfigure_encoding_readz0TextIOWrapperTest.test_reconfigure_encoding_reads����!�!�(�+�+�j�.?�.?��.G�.G�G���l�l�4� � ��� � ��x�� �F�F�����������5�5�5�
�
�
�t�8�
9�
9�	.�	.��O�O�W�O�-�-�-�	.�	.�	.�	.�	.�	.�	.�	.�	.�	.�	.����	.�	.�	.�	.�
�
�
�t�8�
9�
9�	*�	*��O�O�D�O�)�)�)�	*�	*�	*�	*�	*�	*�	*�	*�	*�	*�	*�	*����	*�	*�	*�	*�	*�	*s$�B>�>C�C�#D�D�Dc�V�|���}|�|dd���}|�d��|�d���|�d��|���|�|���d��dS)	Nr6r�r9zfoo
r�r.r�sfoo
é
)r,r8rFr�r�r�r{r�s   r� test_reconfigure_write_fromasciiz2TextIOWrapperTest.test_reconfigure_write_fromascii
s����l�l�n�n��� � ��w�� �E�E���	�	�'���������-�-�-��	�	�(�����	�	������������);�<�<�<�<�<r c��|���}|�|dd���}|�d��|�d���|�|���d��|�d��|���|�|���d	��|���}|�|d
d���}|�d��|�d���|�d��|���|�|���d
��dS)Nr�r�r9rrr.sabc�
r s
abc�
déf
r6�abc
r�s	abc
déf
)r,r8rFr�r�r{r�r�s   r�test_reconfigure_writez(TextIOWrapperTest.test_reconfigure_writes>���l�l�n�n��� � ��x�� �F�F���	�	�+���������)�)�)����������6�6�6��	�	�*�����	�	������������)A�B�B�B��l�l�n�n��� � ��w�� �E�E���	�	�'���������-�-�-��	�	�*�����	�	������������)=�>�>�>�>�>r c�t�|���}d�|_d|_|�|dd���}|�d��|�d���|�d��|���|�|���d	��dS)
Nc��dSr�r&r&r rr�zGTextIOWrapperTest.test_reconfigure_write_non_seekable.<locals>.<lambda>0s��u�r r6r�r9r'r�r.r sabc
déf
)	r,rSrWr8rFr�r�r�r{r�s   r�#test_reconfigure_write_non_seekablez5TextIOWrapperTest.test_reconfigure_write_non_seekable.s����l�l�n�n��$�}������� � ��w�� �E�E���	�	�'���������-�-�-��	�	�*�����	�	����	
��������*J�K�K�K�K�Kr c���|�|���ddd��}|�d���|�|jd��|�|jd��|�d��|�d���|�|jd��|�|jd��|�d�	��|�|jd��|�|jd��|�d
��|�dd���|�|jd
��|�d��|�|���d��|�|�	���
��d��dS)Nr6rr�r.�LF
r�r"rT)r@�CRLF
rr9r�rzLF
CRLF
s	LF
CRLF
)r8r,r�r�r/r@rFrWrpr�r{r�s  r�test_reconfigure_defaultsz+TextIOWrapperTest.test_reconfigure_defaults;s���� � �������)�T�J�J�������&�&�&������w�/�/�/������Y�/�/�/��	�	�&���������'�'�'������w�/�/�/������Y�/�/�/����x��(�(�(������w�/�/�/������X�.�.�.��	�	�(��������$��7�7�7������X�.�.�.����������������\�2�2�2���������.�.�0�0�/�B�B�B�B�Br c���|�d��}|�|dd���}|�d���|�|���d��|�d��}|�|dd���}|�d���|�|���d��|�d��}|�|dd	���}|�d���|�|���d
��|�d��}|�|dd���}|�d	���|�|���d��|�d
��}|�|dd	���}|�d���|�|���d��|�|���dd	���}|�d���|�d��|�d���|�d��|�d���|�d��|�d	���|�d��|�d���|�d��dtjzdz}|�|����	���
d��|��dS)NsCR
EOFr6r�r"zCR
r�zCR
s	CR
LF
EOFrzCR
LF
s	LF
CR
EOFzLF
CR
sCR
CRLF
EOFr�z	CR
CRLF
zlinesep
r-r.r(zLF
LF
CR
CRLF
)r,r8r�r�rrFrr(r�r{r�)r?r�r%r~s    r�test_reconfigure_newlinez*TextIOWrapperTest.test_reconfigure_newlineRs���l�l�:�&�&��� � ��g�t� �<�<�������%�%�%����������0�0�0��l�l�:�&�&��� � ��g�t� �<�<�������#�#�#����������0�0�0��l�l�>�*�*��� � ��g�t� �<�<�������%�%�%����������4�4�4��l�l�>�*�*��� � ��g�t� �<�<�������%�%�%����������4�4�4��l�l�-�.�.��� � ��g�t� �<�<�������'�'�'����������8�8�8�� � �������$� �G�G�������%�%�%��	�	�+���������#�#�#��	�	�&���������%�%�%��	�	�&���������%�%�%��	�	�&���������'�'�'��	�	�(�����r�z�)�,B�B����������.�.�0�0�7�7��@�@�(�K�K�K�K�Kr c��|�|�d��d���}|�d��|���|���|�|�d��d���}|�d��|�d��|���dS)Nrr6r.r]r�)r8r,rprZrFr�s  r�test_issue25862z!TextIOWrapperTest.test_issue25862vs������t�|�|�G�4�4�w��G�G��	���q�	�	�	�	������	���������t�|�|�G�4�4�w��G�G��	���q�	�	�	�	�������	�������r N)Ur#r$r%r�r�rrr�r�r�r�r�r�ryrzrLr�	utf8_moder�r�rrrr&r,r�r�r�rJrFrWr`rbrHrorsrvr|r�r&r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�
no_tracingr
rbr�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rrr
rrr#r%r(r+r/r1r3r&r rr�r�!
s�������>�>�>�+�+�+�X�X�X�	(�	(�	(�2�2�2�*�*�*�(���(���	5�	5�	5�1�1�1�6�X�_�S�Y�(�*A�B�B�+�+�C�B�+�(	"�	"�	"�4�4�4�$5�5�5�0(I�(I�(I�T<�<�<� 7�7�7�$&�&�&�,�,�,�.B�B�B����:)�)�)�,���(5�5�5�"	�	�	�-8�-8�-8�^
�
�
����J�J�J�(-�-�-�*�*�*�=�=�=�	/�	/�	/�4�4�4�4�4�4�=�=�=�
1�
1�
1�
1�
1�
1�	1�	1�	1�1�1�1�/�/�/�<�<�<�
E�
E�
E�
E�
E�
E�E�E�E�2�2�2�
��0��0�2�2�G�G�3�2���G�"!�!�!�"!�!�!�(!�!�!�*1�1�1�B�B�B�
���	8�	8�	8�A�A�A�6�6�6�@0�0�0�.-�-�-�5�5�5�&1�&1�&1�P,�,�,�*9�9�9�5�5�5�	A�	A�	A�
6�
6�
6�/�/�/�
*�
*�
*�
=�
=�
=�?�?�?�*L�L�L�C�C�C�."L�"L�"L�H	�	�	�	�	r r�c�,��eZdZdZ�fd�Z�fd�Z�xZS)r
zOA BytesIO object whose read method returns memoryviews
       rather than bytesc�`��tt���|����SrC)rr{rC�r?�len_r|s  �rrCzMemviewBytesIO.read1�s!����e�g�g�m�m�D�1�1�2�2�2r c�`��tt���|����SrC)rr{rpr8s  �rrpzMemviewBytesIO.read�s!����e�g�g�l�l�4�0�0�1�1�1r )r#r$r%rerCrpr�r�s@rr
r
�s[���������3�3�3�3�3�2�2�2�2�2�2�2�2�2r r
c���tjd��}t|��t|��|jzz
}|�|d|���t	|��S)z6Convert bytes-object *buf* to a non-trivial memoryviewr�N)r)r�itemsize�	frombytesr)r_�arr�idxs   rrr�sV���+�c�
�
�C�

�c�(�(�S��X�X���,�
,�C��M�M�#�d�s�d�)�����c�?�?�r c�4�eZdZeZdZd�Zd�Zd�Zd�Zd�Z	dS)�CTextIOWrapperTest�$LookupError: unknown encoding: asciic��|�d��}|�|d��}|�|d���}|�t|j|dd���|�t|j��|j�|j��}|�tt|��dS)Nr�r:rr.r�r9)
r,r$r8r�r�rArprr>r�r�s    rroz&CTextIOWrapperTest.test_initialization�s����L�L��)�)������4�(�(�����q�7��3�3�����*�a�j�!�g�w��W�W�W����*�a�f�-�-�-���&�&�t�'9�:�:�����)�T�1�-�-�-�-�-r c��tjdtf��5tjt
jd��}|�|��}|�|d���}|�	d��||_
tj|��}~tj��ddd��n#1swxYwY|�|��|��|�t
jd��5}|�|���d��ddd��dS#1swxYwYdS)Nr�rr6r.�456defr	s456def)rr�r�r�rrr�r(r8rFr�r�r�rr�r�r0r�rp)r?rr(r�r�r3s      rr�z*CTextIOWrapperTest.test_garbage_collection�s����
+�R��,A�
B�
B�	!�	!��I�i�.��5�5�E��#�#�E�*�*�A��"�"�1�w�"�7�7�A�
�G�G�H�����A�C���Q���B���� � � �	!�	!�	!�	!�	!�	!�	!�	!�	!�	!�	!����	!�	!�	!�	!�	
���"�"�$�$��#�#�#�
�Y�Y�y�'��
.�
.�	2�!����Q�V�V�X�X�y�1�1�1�	2�	2�	2�	2�	2�	2�	2�	2�	2�	2�	2�	2����	2�	2�	2�	2�	2�	2s$�BB8�8B<�?B<�)D7�7D;�>D;c��td��D]�}|�|���|�����}|�|d���}|�|���|�����}|�|d���}||_||_��tj��dS)Nr:r6r.)r�r/rlr8�buddyrr�)r?r��b1�t1�b2�t2s      r�!test_rwpair_cleared_before_textioz4CTextIOWrapperTest.test_rwpair_cleared_before_textio�s����t���	�	�A��$�$�T�^�^�%5�%5�t�~�~�7G�7G�H�H�B��#�#�B��#�9�9�B��$�$�T�^�^�%5�%5�t�~�~�7G�7G�H�H�B��#�#�B��#�9�9�B��B�H��B�H�H�������r c���|�|���d���}|�t��5|`ddd��dS#1swxYwYdSr�)r8r,r�r�r2r�s  r� test_del__CHUNK_SIZE_SystemErrorz3CTextIOWrapperTest.test_del__CHUNK_SIZE_SystemError�s������t�|�|�~�~���@�@��
�
�
�~�
.�
.�	�	��
�	�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�	�	s�A�A�Ac�~��d�G�fd�d|j��}|��}|�|d���}|j�|�d��|�d��|�g|j��|�t��5|�d�d	zz��ddd��n#1swxYwY|�d
g|j��|�d��|�d�z��|�d
dd
�zg|j��dS)Nr�c�"���eZdZ��fd�Z�xZS)�<CTextIOWrapperTest.test_internal_buffer_size.<locals>.MockIOc�z��t|���krt�t���|��SrC)rr�r{rF)r?rr|rZs  ��rrFzBCTextIOWrapperTest.test_internal_buffer_size.<locals>.MockIO.write�s0����t�9�9�z�)�)�&�&��w�w�}�}�T�*�*�*r )r#r$r%rFr�)r|rZs@�r�MockIOrQ�s>��������
+�
+�
+�
+�
+�
+�
+�
+�
+�
+r rSr6r.r�rDr�r]r��ghir�r�)rlr8r2rFr�r<r�r�)r?rSr_r�rZs    @r�test_internal_buffer_sizez,CTextIOWrapperTest.test_internal_buffer_size�s�����
�	+�	+�	+�	+�	+�	+�	+�T�^�	+�	+�	+��f�h�h�����s�W��5�5���]�
�	�������	�����������S�-�.�.�.�
�
�
�|�
,�
,�	(�	(�
�G�G�C��A��&�'�'�'�	(�	(�	(�	(�	(�	(�	(�	(�	(�	(�	(����	(�	(�	(�	(�	
���)��c�&6�7�7�7�	�������	����J��������)�V�T�*�_�=�s�?O�P�P�P�P�Ps� C�C�CN)
r#r$r%r�rror�rLrNrUr&r rrArA�sn������	�B�;�N�.�.�.�2�2�2�"������
Q�Q�Q�Q�Qr rAc��eZdZeZdZdS)�PyTextIOWrapperTestrBN)r#r$r%r�r�rr&r rrWrW�s������	
�B�;�N�N�Nr rWc�,�eZdZd�Zd�Zd�Zd�Zd�ZdS)�IncrementalNewlineDecoderTestc������fd�}|dd��|dd��|dd��|dd��|dd��|dd��|dd��|dd����t�jdd	�
������|dd��|d
d��|ddd	�
��|d
dd	�
��|d
d��|dd��|dd��|d
d��|d
d��|dd��|dd��|dd��|dd��|dd��|dd��dS)Nc��������}���j|fi|��|����|�����j|fi|��|��dSrC)r�r�r�r�)r(r�r�r��decoderr?s    ��r�
_check_decodezPIncrementalNewlineDecoderTest.check_newline_decoding_utf8.<locals>._check_decode�s�����$�$�&�&�E����^�W�^�A�8�8��8�8�!�<�<�<����U�#�#�#����^�W�^�A�8�8��8�8�!�<�<�<�<�<r s袈u袈��r�����r T)r�r�r�r rz
a�

z

s
as袈
rYs袈
)r��UnicodeDecodeErrorr�r�)r?r\r]s`` r�check_newline_decoding_utf8z9IncrementalNewlineDecoderTest.check_newline_decoding_utf8�s����	=�	=�	=�	=�	=�	=�	�
�o�x�0�0�0��
�g�r�"�"�"��
�g�r�"�"�"��
�g�x�(�(�(��
�g�r�"�"�"��
�g�r�"�"�"��
�g�x�(�(�(��
�g�r�"�"�"����,�g�n�c���N�N�N��
�
�����
�e�T�"�"�"��
�e�R� � � ��
�c�4�t�,�,�,�,��
�e�T��.�.�.�.��
�e�R� � � ��
�d�E�"�"�"��
�i��(�(�(��
�e�R� � � ��
�e�T�"�"�"��
�f�e�$�$�$��
�)�:�6�6�6��
�o�x�0�0�0��
�e�T�"�"�"��
�'��2�2�2��
�e�T�"�"�"�"�"r c�D����g�|�$tj|��������fd�}nd���fd�}|��jd��|d��|��jd��|d��|��jd��|d��|��jd��|d��|��jd	��|d��|�d
����d������d}��)������|��}|���|��d��|��jd��dS)Nc�����|��D]8}����t|g�������9dSrC)r�rDr�r)r�r(r\�encoderr`s  ���r�_decode_bytewisezNIncrementalNewlineDecoderTest.check_newline_decoding.<locals>._decode_bytewisesQ��� ����*�*�>�>�A��M�M�'�.�.���s���"<�"<�=�=�=�=�>�>r c�b��|D]*}����|�����+dSrC)rDr�)r�rSr\r`s  ��rrgzNIncrementalNewlineDecoderTest.check_newline_decoding.<locals>._decode_bytewises=����5�5�A��M�M�'�.�.��"3�"3�4�4�4�4�5�5r zabc

r�z
abc)r�r�zabc
r�)rr�r�r�zabc

abcabc
abcabc)r��getincrementalencoderr��newlinesr�r�r�r�)r?r\r/rgr�rfr`s `   @@r�check_newline_decodingz4IncrementalNewlineDecoderTest.check_newline_decodings����������<�f�2�8�<�<�>�>�G�
>�
>�
>�
>�
>�
>�
>�
>�
�G�
5�
5�
5�
5�
5�
5�	
����)�4�0�0�0����#�#�#�����)�4�0�0�0����!�!�!�����)�>�:�:�:����!�!�!�����)�>�:�:�:�����������)�+?�@�@�@����!�!�!����������*A�B�B�B��
�
���������M�M�O�O�O��N�N�5�)�)�E��������.�.��6�6�6�����)�4�0�0�0�0�0r c�|�d}|D]M}|otj|����}|�|d���}|�||���Ntjd����}|�|d���}|�|��|�t|jd��dS)N)	Nrr-r
rrrrrT��	translaterrN)r��getincrementaldecoder�IncrementalNewlineDecoderrkrcr�r�r�)r?rrHr\s    r�test_newline_decoderz2IncrementalNewlineDecoderTest.test_newline_decoder5s���
�	��	6�	6�C��A�?�f�:�3�?�?�A�A�G��4�4�W��4�M�M�G��'�'���5�5�5�5�7�&�.�w�7�7�9�9���0�0��D�0�I�I���(�(��1�1�1����)�W�%5�r�:�:�:�:�:r c����fd�}��dd���}||����dd���}||��dS)Nc�N����|jd����|�d��d����|jd����|�d��d����|jd��dS)Nuഀu਀)r�rjr�)�decr?s �r�_checkz@IncrementalNewlineDecoderTest.test_newline_bytes.<locals>._checkHs�������S�\�4�0�0�0����S�Z�Z��1�1�8�<�<�<����S�\�4�0�0�0����S�Z�Z��1�1�8�<�<�<����S�\�4�0�0�0�0�0r FrmT)rp)r?rurts`  r�test_newline_bytesz0IncrementalNewlineDecoderTest.test_newline_bytesFsl���	1�	1�	1�	1�	1��,�,�T�U�,�C�C����s�����,�,�T�T�,�B�B����s�����r c�V�dD]I}tjd����}|�||��}|�|���Jtjd����}|�|d���}|�|�d��d��dS)N)r"r�r]rzrrrmraz

)r�rorprcr�r�)r?rnr\s   r�test_translatez,IncrementalNewlineDecoderTest.test_translateSs���'�	6�	6�I�;�f�2�7�;�;�=�=�G��4�4�W�i�H�H�G��,�,�W�5�5�5�5�7�&�.�w�7�7�9�9���0�0��A�0�F�F��������	�2�2�H�=�=�=�=�=r N)r#r$r%rcrkrqrvrxr&r rrYrY�sa������(#�(#�(#�T1�1�1�B;�;�;�"���>�>�>�>�>r rYc�.�eZdZejd���ZdS)�CIncrementalNewlineDecoderTestc�H�|j�|j��}|�t|jd��|�t|j��|�t|jd��|�t|j��dS)N�bar)r�r)rprr�r�r�r�r�r�)r?�
uninitializeds  rrz1CIncrementalNewlineDecoderTest.test_uninitialized^s����6�>�>��*�,�,�
����*�m�&:�F�C�C�C����*�m�&<�=�=�=����*�m�&<�k�J�J�J����*�m�&9�:�:�:�:�:r N)r#r$r%rr�rr&r rrzrz]s1��������;�;���;�;�;r rzc��eZdZdS)�PyIncrementalNewlineDecoderTestNr"r&r rrrhrhr rc��eZdZd�Zd�Zd�Zd�Zeje	j
d��ejee
d��d��d�����Zd	�Zd
�Zd�Zd�Zd
�Zd�Zd�Zd�Zd�Zejee
d��d��d���Zd�Zeje	j
d��d���Zeje	j
d��d���Zejee
d��d��ejee
d��d��d�����Zd�Zd�Zd�Zd�Z d�Z!d�Z"e	j#e$j%e&���d �����Z'd!S)"�
MiscIOTestc�B�tjtj��dSrCr�rIs rr�zMiscIOTest.tearDownpr�r c��|jjD]�}t|j|d��}|�||��|dvr�3d|���vs|dkr*|�t
|t��|���y|�d��s(|�t
||j	������dS)N)r0�	open_code�errorr��SEEK_)
r��__all__rFr��lowerr��
issubclassr>rNrn)r?r'rs   r�test___all__zMiscIOTest.test___all__ss����G�O�	>�	>�D��$�'�4��.�.�C�� � ��d�+�+�+��,�,�,���D�J�J�L�L�(�(�D�4J�,J�,J����
�3�	� :� :�D�A�A�A�A��_�_�W�-�-�
>����
�3��� <� <�=�=�=��	>�	>r c��|�tjdd���}|�|jd��|���|�tjdd���}|�|jd��|�|jjd��|�|jjjd��|�|���dd�	��}|�|jd��|�|jjd��|�|j	|�����|�|jj	|�����|���|���dS)
NrrrrBrr.r;Fr�)
r0rr�r�r�r�r�r�rOr')r?r3�gs   r�test_attributeszMiscIOTest.test_attributes~s[���I�I�i�&���I�:�:��������&�&�&�	���	�	�	��I�I�i�&��w�I�?�?�������D�1�1�1�������E�2�2�2�������*�E�2�2�2��I�I�a�h�h�j�j�$��I�6�6�������T�*�*�*�������T�*�*�*������Q�X�X�Z�Z�0�0�0�������Q�X�X�Z�Z�0�0�0�	���	�	�	�	���	�	�	�	�	r c��dD]|}|�t��5}|�tj|��ddd��n#1swxYwY|�dt
|j�����}dS)N)�U�rUzr+Uzinvalid mode)r�r�r0rr�r�rr)r?r�rs   r�test_removed_u_modezMiscIOTest.test_removed_u_mode�s���&�	=�	=�D��"�"�:�.�.�
2�"��	�	�)�*�D�1�1�1�
2�
2�
2�
2�
2�
2�
2�
2�
2�
2�
2����
2�
2�
2�
2��M�M�.�#�b�l�*;�*;�<�<�<�<�	=�	=s�!A�A	�A	rrrc�H�tj��\}}|�tj|��|�|dd���}|�|j��t
jdkr)|�|�����dSdS)Nr�rr.�win32)	rrrr�r0rLrMr�rS)r?r,rr3s    r�test_open_pipe_with_appendz%MiscIOTest.test_open_pipe_with_append�s����w�y�y���1������!�$�$�$��I�I�a��w�I�/�/������� � � ��<�7�"�"����Q�Z�Z�\�\�*�*�*�*�*�#�"r c���ddiddiddd�ddd�ddd�ddidd	iddd�ddd�d	dd�dd
iddid
dd�d
dd�ddd�fD�]=}d|dvrd
|d<|jtjfi|��}|���|�t
|j��|�t
|j��|�t
|j��|�t
|j	��t|d��r!|�t
|jd��|�t
|j��t|d��rA|�t
|j
d��|�t
|j
��t|d��r |�t
|j��t|d��r.|�t
|jt!d����t|d��r.|�t
|jt!d����|�t
|j��|�t
|j��|�t
|jd��|�t
|jd��|�t
|j��|�t
|j��|�t
|jd|dvrdnd��|�t
|jg��|�t
t2|����?dS)Nr�rrr]�r�rrzrr,r	rBr�r(rr/rrCr�rWrbr�r r�)r0rr�r�r�r�r�rOr.�__iter__rrrprCrWrbr�r�rrxrWrZrdrFrrp)r?r�r3s   r�test_io_after_closezMiscIOTest.test_io_after_close�sf����
�����1�-�-��1�-�-��A�.�.���
�����1�-�-��1�-�-��A�.�.��������A�.�.��A�.�.��Q�/�/��.	3�.	3�F�"�&��.�(�(�%,��z�"���	�)�*�5�5�f�5�5�A�
�G�G�I�I�I����j�!�'�2�2�2����j�!�(�3�3�3����j�!�(�3�3�3����j�!�*�5�5�5��q�&�!�!�
9��!�!�*�a�f�a�8�8�8����j�!�&�1�1�1��q�'�"�"�
7��!�!�*�a�g�t�<�<�<��!�!�*�a�g�6�6�6��q�)�$�$�
9��!�!�*�a�i�8�8�8��q�*�%�%�
K��!�!�*�a�j�)�D�/�/�J�J�J��q�+�&�&�
L��!�!�*�a�k�9�T�?�?�K�K�K����j�!�*�5�5�5����j�!�+�6�6�6����j�!�+�q�9�9�9����j�!�&�!�4�4�4����j�!�&�1�1�1����j�!�*�5�5�5����j�!�'�%(�F�6�N�%:�%:�c�c��
D�
D�
D����j�!�,��;�;�;����j�$��2�2�2�2�].	3�.	3r c��Gd�dt��}|d��}|�d|��}||_||_t	j|��}~~t
j��|�|��|��dS)Nc��eZdZdS)�*MiscIOTest.test_blockingioerror.<locals>.CNr"r&r r�Cr��s�������Dr r�r�r])	rr�r(rSr�r�rr�r�)r?r�rSr(r�s     r�test_blockingioerrorzMiscIOTest.test_blockingioerror�s���	�	�	�	�	��	�	�	�
�A�b�E�E��� � ��A�&�&��������
�[��^�^��
�q���������"�"�$�$��#�#�#�#�#r c�.�|�|jtj��|�|jtj��|�|jtj��|�|jtj��dSrC)r�rnr��ABCMetarJr4rIrIs r�	test_abcszMiscIOTest.test_abcs�sq�����d�k�3�;�7�7�7����d�n�c�k�:�:�:����d�1�3�;�?�?�?����d�o�s�{�;�;�;�;�;r c���|�tjdd���5}|�||j��|�||j��|�||j��|�||j��ddd��n#1swxYwY|�tjd��5}|�||j��|�||j��|�||j��|�||j��ddd��n#1swxYwY|�tjdd���5}|�||j��|�||j��|�||j��|�||j��ddd��dS#1swxYwYdS�Nrrrrrr.)	r0rr�r�rnrJ�assertNotIsInstancer4rI)r?�	abcmoduler3s   r�_check_abc_inheritancez!MiscIOTest._check_abc_inheritance�s���
�Y�Y�y�'���Y�
;�
;�	>�q��!�!�!�Y�%5�6�6�6��!�!�!�Y�%8�9�9�9��$�$�Q�	�(@�A�A�A��$�$�Q�	�(<�=�=�=�		>�	>�	>�	>�	>�	>�	>�	>�	>�	>�	>����	>�	>�	>�	>�
�Y�Y�y�'��
.�
.�	>�!��!�!�!�Y�%5�6�6�6��$�$�Q�	�(;�<�<�<��!�!�!�Y�%=�>�>�>��$�$�Q�	�(<�=�=�=�		>�	>�	>�	>�	>�	>�	>�	>�	>�	>�	>����	>�	>�	>�	>�
�Y�Y�y�'��w�Y�
?�
?�	;�1��!�!�!�Y�%5�6�6�6��$�$�Q�	�(;�<�<�<��$�$�Q�	�(@�A�A�A��!�!�!�Y�%9�:�:�:�		;�	;�	;�	;�	;�	;�	;�	;�	;�	;�	;�	;����	;�	;�	;�	;�	;�	;s8�A-B�B �#B �A-E�E�E�-A-G'�'G+�.G+c�0�|�|��dSrC)r�rIs r�test_abc_inheritancezMiscIOTest.test_abc_inheritance�s���#�#�D�)�)�)�)�)r c�:�|�t��dSrC)r�r�rIs r�test_abc_inheritance_officialz(MiscIOTest.test_abc_inheritance_officials��	
�#�#�B�'�'�'�'�'r c�0�t|i|��}t|��}|�t��5}d}t	j��ddd��n#1swxYwY|�|t|jj	d����dSr9)
r0r��assertWarnsr�rr�r�r�warningr�)r?r�r�r3r,rs      r�_check_warn_on_deallocz!MiscIOTest._check_warn_on_deallocs����$�!�&�!�!����G�G��
�
�
�o�
.�
.�	!�"��A��� � � �	!�	!�	!�	!�	!�	!�	!�	!�	!�	!�	!����	!�	!�	!�	!�	
�
�
�a��R�Z�_�Q�/�0�0�1�1�1�1�1s�A�A�Ac���|�tjdd���|�tjd��|�tjdd���dSr�)r�rr�rIs r�test_warn_on_dealloczMiscIOTest.test_warn_on_dealloc
s]���#�#�I�$4�d�a�#�H�H�H��#�#�I�$4�d�;�;�;��#�#�I�$4�c�G�#�L�L�L�L�Lr c�T��g��fd�}|�|��tj��\}}�||fz
�|j|g|�Ri|��tj��\}}�||fz
�t	j|��5t
|g|�Rddi|��ddd��dS#1swxYwYdS)Nc����D]D}	tj|���#t$r }|jtjkr�Yd}~�=d}~wwxYwdSrC)rr�r�r)r*)r�r?�fdss  �r�cleanup_fdsz9MiscIOTest._check_warn_on_dealloc_fd.<locals>.cleanup_fdssr����
�
����H�R�L�L�L�L�������w�%�+�-�-��.�-�-�-�-���������
�
s��
A�A�Ar�F)rrrr�rr4r0)r?r�r�r�r,rr�s      @r�_check_warn_on_dealloc_fdz$MiscIOTest._check_warn_on_dealloc_fds(�����	�	�	�	�	�	
����$�$�$��w�y�y���1��q�!�t���#��#�A�7��7�7�7��7�7�7��w�y�y���1��q�!�t���
�
6�t�
<�
<�	4�	4���3�T�3�3�3�5�3�F�3�3�3�	4�	4�	4�	4�	4�	4�	4�	4�	4�	4�	4�	4����	4�	4�	4�	4�	4�	4s�=B�B!�$B!c��|�dd���|�d��|�dd���dS)Nr	rrr,rr.)r�rIs r�test_warn_on_dealloc_fdz"MiscIOTest.test_warn_on_dealloc_fd%sN���&�&�t�q�&�9�9�9��&�&�t�,�,�,��&�&�s�W�&�=�=�=�=�=r c�V�ddiddiddd�ddiddiddd�ddidd	id	dd�f	D]�}d
|dvrd|d<ttjd
z��D]Y}|jtjfi|��5}|�ttj||��ddd��n#1swxYwY�Z��dS)Nr�rrrr�r,r	rBr�r(rr/r])	r��pickle�HIGHEST_PROTOCOLr0rr�r�r��dumps)r?r��protocolr3s    r�
test_picklingzMiscIOTest.test_pickling,sL����
�����A�.�.���
�����A�.�.��������Q�/�/�
�	L�	L�F��&��.�(�(�%,��z�"�!�&�"9�A�"=�>�>�
L�
L���T�Y�y�/�:�:�6�:�:�L�a��%�%�i���q�(�K�K�K�L�L�L�L�L�L�L�L�L�L�L����L�L�L�L��
L�	L�	Ls�((B�B �#B c�0�|�d��dS)Ni@��_test_nonblock_pipe_writerIs r�test_nonblock_pipe_write_bigbufz*MiscIOTest.test_nonblock_pipe_write_bigbuf?s��	
�&�&�w�/�/�/�/�/r c�0�|�d��dS)Nr�r�rIs r�!test_nonblock_pipe_write_smallbufz,MiscIOTest.test_nonblock_pipe_write_smallbufEs��	
�&�&�t�,�,�,�,�,r �set_blockingz(os.set_blocking() required for this testc�B�g}g}tj��\}}tj|d��tj|d��|�|dd|���}|�|dd|���}|5|5dD�]"}	d}		t	|	dzd	zg��|z}
|�|
��|�|
��|	d
z
}	�I#|j$r�}|�|j	dtj��|�|j	d|j��|dd|j�|d<|�|�
����d
}
|�|
��|�|
��Yd}~��d}~wwxYw		|���n�#|j$r�}|�|j	dtj��|�|j	d|j��|�|jd��|�|�
����Yd}~nd}~wwxYw��|t|j
d��z
}ddd��n#1swxYwYddd��n#1swxYwYd�|��d�|��}}|�||��|�|j��|�|j��dS)NFr	T)r�r�rr)rR�Ii�r��ar]rzr�sBLOCKEDr )rrr�r0rrDrFr�r�r�r)�EAGAINr�rpr��iterr�r�r�)r?r��sent�receivedr,r�rf�wfrPr�r�r?s            rr�z$MiscIOTest._test_nonblock_pipe_writeKs��������w�y�y���1�
���5�!�!�!�
���5�!�!�!��Y�Y�q�t�T�W�Y�
E�
E��
�Y�Y�q�t�T�W�Y�
E�
E��
�	,�	,��	,�	,�#�
%�
%��%��A��#�Q��V�b�[�M�2�2�Q�6�����C�(�(�(�����
�
�
��Q���	���+�%�%�%��$�$�Q�V�A�Y���=�=�=��$�$�Q�V�A�Y��0D�E�E�E�#�B�x�(=��)=�(=�>�D��H��O�O�B�G�G�I�I�.�.�.�$�C��H�H�S�M�M�M��K�K��$�$�$�$�$�$�$�$�����%����
/�/��H�H�J�J�J����+�/�/�/��$�$�Q�V�A�Y���=�=�=��$�$�Q�V�A�Y��0D�E�E�E��$�$�Q�%9�1�=�=�=��O�O�B�G�G�I�I�.�.�.�.�.�.�.�.�����	/����	
/�
��R�W�d�+�+�+�H�;	,�	,�	,�	,�	,�	,�	,�	,�	,�	,�	,����	,�	,�	,�	,�	,�	,�	,�	,�	,�	,�	,�	,�	,�	,�	,����	,�	,�	,�	,�>���$������(�);�);�h������x�(�(�(�����	�"�"�"�����	�"�"�"�"�"s��9J �<J	�AC�
F 	�B<F	�J	�F 	� J	�%F:�9J	�:
I!�BI�J	�I!�!J	�=J �	J
	�
J �J
	�J � J$�'J$c���|�tjdd���5	ddd��n#1swxYwY|�t|jtjdd���dS)Nrrr.r�)r0rr�r��FileExistsErrorrIs r�test_create_failzMiscIOTest.test_create_fail�s���
�Y�Y�y�'��w�Y�
?�
?�	�	��	�	�	�	�	�	�	�	�	�	�	����	�	�	�	����/�4�9�i�6F��V]��^�^�^�^�^s�1�5�5c�b�|�tjd��5}|�d��ddd��n#1swxYwY|�tjd��5}|�d|�����ddd��dS#1swxYwYdS)N�xbr�r	r�rs  r�test_create_writeszMiscIOTest.test_create_writes�s��
�Y�Y�y�'��
.�
.�	�!�
�G�G�G����	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�
�Y�Y�y�'��
.�
.�	0�!����W�a�f�f�h�h�/�/�/�	0�	0�	0�	0�	0�	0�	0�	0�	0�	0�	0�	0����	0�	0�	0�	0�	0�	0r�c�b�|�t|jtjdd���dS)Nzrwax+rr.r�rIs r�test_open_allargszMiscIOTest.test_open_allargs�s-�����*�d�i��1A�7�U\��]�]�]�]�]r c���|jj}t}d}tjd|�d|�d|�d|�d|�d|�d|�d	|�d
���}tddd
|��}|�|jd|��dS)NzBoom, Shaka Laka, Boom!z)
            import sys
            from zC import open, TextIOWrapper

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

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

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

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

            sys.exit(10)
        �-X�devr�r�)r�r#r1�textwrap�dedentr	r�r)r?�modr�r8r��procs      r�test_check_encoding_errorsz%MiscIOTest.test_check_encoding_errors�s����g�����+����# ��# �# �
�# �# �
.5�# �# ��# �# �,3�# �# �$ �%# �# �*18�+# �# �8/6�9# �# �# �#
�#
��H%�T�5�$��=�=�������"�d�+�+�+�+�+r c	��|jj}t}tjd|�d|�d|�d���}tddd|��}|j���}|�t|��d��|�
|d	�d
����|�
|d�d����dS)
Nz(            import sys
            from zN import open, TextIOWrapper
            import pathlib

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

            pathlib.Path(z ).read_text()  # line 8
        r��warn_default_encodingr�rzrs<string>:5: EncodingWarning: r]s<string>:8: EncodingWarning: )r�r#r1r�r�rr�r$r�rr�rN)r?r�r�r�r�rUs      r�test_check_encoding_warningz&MiscIOTest.test_check_encoding_warning�s���g�������	 ��	 �	 �
 �	 �	 �#�	 �	 �	 �	
�	
�� ��&=�t�T�J�J���8�&�&�(�(������X����*�*�*�����Q�K�"�"�#C�D�D�	F�	F�	F�����Q�K�"�"�#C�D�D�	F�	F�	F�	F�	Fr c��d}tddd|��}|�d|j�����tddd|��}|�d|j�����dS)Nz(import io; print(io.text_encoding(None))r�zutf8=0r�slocalezutf8=1sutf-8)rr�rr)r?r�r�s   r�test_text_encodingzMiscIOTest.test_text_encoding�sy��:����h��d�;�;������D�H�N�N�$4�$4�5�5�5���h��d�;�;������4�8�>�>�#3�#3�4�4�4�4�4r )�categoryc�Z�|�|jj|jj��dSrC)r�r��OpenWrapperr0rIs r�test_openwrapperzMiscIOTest.test_openwrapper�s'��	
�
�
�d�g�)�4�7�<�8�8�8�8�8r N)(r#r$r%r�r�r�r�ryrzrr{r|rrr�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�ignore_warningsrXr�r&r rr�r�ns�������+�+�+�	>�	>�	>����$=�=�=��X�_���F����X�����V�,�,�.B�C�C�	+�	+�D�C���	+�/3�/3�/3�b$�$�$�<�<�<�;�;�;�"*�*�*�(�(�(�
2�2�2�M�M�M�
4�4�4�&�X�����V�,�,�.B�C�C�>�>�D�C�>�L�L�L�&�X�_���F���0�0���0��X�_���F���-�-���-��X�����^�4�4�C�E�E��X�����V�,�,�.B�C�C�0#�0#�D�C�E�E�0#�d_�_�_�0�0�0�^�^�^�+,�+,�+,�ZF�F�F�.	5�	5�	5�
��%�_�$�.@�A�A�A�9�9�B�A�	��
9�9�9r r�c�~�eZdZeZd�Zd�Zej��d���Zej��d���Z	dS)�CMiscIOTestc��Gd�d|jj��}|��}td��}|�t|j|��dS)Nc��eZdZdd�ZdS)�<CMiscIOTest.test_readinto_buffer_overflow.<locals>.BadReaderr�c��ddzS)Nr�i@Br&ros  rrpzACMiscIOTest.test_readinto_buffer_overflow.<locals>.BadReader.read�s���e�|�#r NrUrqr&r r�	BadReaderr��s(������
$�
$�
$�
$�
$�
$r r�rz)r�r4r�r�r�rb)r?r�r�r(s    r�test_readinto_buffer_overflowz)CMiscIOTest.test_readinto_buffer_overflow�si��	$�	$�	$�	$�	$���.�	$�	$�	$��	�����a�L�L�����*�e�n�a�8�8�8�8�8r c�x�d�t����}td|��\}}|j���}|jdkr9d�t����}|�||��dS|�|�d����dS)Na�if 1:
            import sys
            import time
            import threading
            from test.support import SuppressCrashReport

            file = sys.{stream_name}

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

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

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

            time.sleep(0.5)
            file.write('!')
            file.flush()
            r�rz�Fatal Python error: _enter_buffered_busy: could not acquire lock for <(_io\.)?BufferedWriter name='<{stream_name}>'> at interpreter shutdown, possibly due to daemon threadsz.!)	�
format_map�localsr
r�r�rr�r�r)r?�stream_namer�r�rkr��patterns       r�&check_daemon_threads_shutdown_deadlockz2CMiscIOTest.check_daemon_threads_shutdown_deadlock�s����0�
�6�8�8�$�$�1	
�2&�d�D�1�1���Q��g�n�n�����6�Q�;�;�)�*4��F�H�H�)=�)=�	
�

���S�'�*�*�*�*�*����S�Y�Y�t�_�_�-�-�-�-�-r c�0�|�d��dS)N�stdout�r�rIs r�,test_daemon_threads_shutdown_stdout_deadlockz8CMiscIOTest.test_daemon_threads_shutdown_stdout_deadlock����3�3�H�=�=�=�=�=r c�0�|�d��dS)N�stderrr�rIs r�,test_daemon_threads_shutdown_stderr_deadlockz8CMiscIOTest.test_daemon_threads_shutdown_stderr_deadlock"r�r N)
r#r$r%r�r�r�r
rbr�r�r&r rr�r��s�������	�B�9�9�9�'.�'.�'.�R1��0�2�2�>�>�3�2�>�1��0�2�2�>�>�3�2�>�>�>r r�c��eZdZeZdS)�PyMiscIOTestN)r#r$r%r�r�r&r rr�r�'s������	
�B�B�Br r��ntz%POSIX signals required for this test.c���eZdZd�Zd�Zd�Zd�Zeej	e
ed��d��d�����Zeej	e
ed��d��d�����Z
eej	e
ed��d��d	�����Zejd
���Zed���Zed���Zd
�Zed���Zed���Zd�Zed���Zed���ZdS)�SignalsTestc�X�tjtj|j��|_dSrC)�signal�SIGALRM�alarm_interrupt�oldalrmrIs rr�zSignalsTest.setUp.s���}�V�^�T�5I�J�J����r c�N�tjtj|j��dSrC)rrrrIs rr�zSignalsTest.tearDown1s���
�f�n�d�l�3�3�3�3�3r c��ddzdSr\r&)r?�sig�frames   rrzSignalsTest.alarm_interrupt4s��	�!����r c��
��tj��g��
�fd�}tj|���}d|_tj��\�
}d|d<|tjt|��zdzz}	|j	j
|fi|��}ttd��ritj
tjtjg��|���tj
tjtjg��n|���tjd��	|�t(|j|��tjd��|���n-#tjd��|���wxYw��tj�
d����|��|dd�|dd	�g��tj|��tj�
��	|���d
S#t6$r!}	|	jt8jkr�Yd
}	~	d
Sd
}	~	wwxYw#tj|��tj�
��	|���w#t6$r }	|	jt8jkr�Yd
}	~	wd
}	~	wwxYwxYw)z�Check that a partial write, when it gets interrupted, properly
        invokes the signal handler, and bubbles up the exception raised
        in the latter.c�\��tj�d��}��|��dSr�)rrprD)r�r,�read_resultss ��rrgz2SignalsTest.check_interrupted_write.<locals>._readUs,������1�
�
�A�����"�"�"�"�"r rDTFr�r]�pthread_sigmaskrrzN)rr�r�r�daemonrr�
PIPE_MAX_SIZErr�r0rrr�	SIG_BLOCKrr �SIG_UNBLOCKr5r�r�rFr�rDrpr�r�r�r)r*)r?�itemr�
fdopen_kwargsrgr�r�
large_data�wior?r,rs          @@r�check_interrupted_writez#SignalsTest.check_interrupted_write7s�����6	�������	#�	#�	#�	#�	#�	#�
��E�*�*�*������w�y�y���1�#(�
�i� ��W�2�c�$�i�i�?�!�C�D�
�$	��$�'�,�q�2�2�M�2�2�C��v�0�1�1�
��&�v�'7�&�.�9I�J�J�J����	�	�	��&�v�'9�F�N�;K�L�L�L�L����	�	�	�
�L��O�O�O�
��!�!�"3�S�Y�
�K�K�K���Q��������������Q��������������
������1�
�
�.�.�.����\�E�!�A�#�J��a��c�
�+C�D�D�D��H�Q�K�K�K��H�Q�K�K�K�
��	�	��������
�
�
��7�e�k�)�)��*�)�)�)�)�)�����
�����
�H�Q�K�K�K��H�Q�K�K�K�
��	�	�������
�
�
��7�e�k�)�)��*�)�)�)�)�����
������sh�8B9I&�2!E<�)I&�<*F&�&AI&�"H8�8
I#�I�I#�&)K�J%�$K�%
K�/K
�K�
K�Krrc�8�|�dddd���dS)Nrdrrr��rrIs r�!test_interrupted_write_unbufferedz-SignalsTest.test_interrupted_write_unbuffered�s'��	
�$�$�U�E���$�J�J�J�J�Jr c�6�|�ddd���dS�Nrdr�r�rrIs r�test_interrupted_write_bufferedz+SignalsTest.test_interrupted_write_buffered�s%��	
�$�$�U�E��$�=�=�=�=�=r c�8�|�dddd���dS)N�xyrdrr6�r�r/rrIs r�test_interrupted_write_textz'SignalsTest.test_interrupted_write_text�s'��	
�$�$�T�5�s�W�$�M�M�M�M�Mr c���	���	fd�}tjtj|��tj��\}}|jj|fi|���		tjd��|�ttf��5}	td��D]+}�	�����	����,tj
|t���dz���a#1swxYwY|j}t!|t��rC|�t%|���d��t%|����tjd���	���tj|��dS#tjd���	���tj|��wxYw)Nc�<�������ddzdSr\)rF)r�rrs ��r�on_alarmz3SignalsTest.check_reentrant_write.<locals>.on_alarm�s����I�I�d�O�O�O�
�a�C�C�C�Cr r]rzreentrant callr)rrrrr�r0r5r�r�r�r�rFr�rprrrHr�rrNr�)
r?rrr&r,rrr�rrs
 `       @r�check_reentrant_writez!SignalsTest.check_reentrant_write�s�����	�	�	�	�	�	�	�
�f�n�h�/�/�/��w�y�y���1��d�g�l�1�.�.�
�.�.��	��L��O�O�O��"�"�$5�|�#D�E�E�
0��0�"�3�Z�Z�$�$���	�	�$�����	�	������G�A�s�4�y�y�3��/�/�/�0�
0�
0�
0�
0����
0�
0�
0�
0��,�C��#�|�,�,�
Q�����C��� 3� 3�4D� E� E�s�3�x�x�P�P�P��L��O�O�O��I�I�K�K�K��H�Q�K�K�K�K�K��
�L��O�O�O��I�I�K�K�K��H�Q�K�K�K�K���s,�5F�A#C*�*C.�.F�1C.�2A"F�>Gc�4�|�dd���dSr�r'rIs r�test_reentrant_write_bufferedz)SignalsTest.test_reentrant_write_buffered�s!���"�"�5�t�"�4�4�4�4�4r c�6�|�ddd���dS)Nr!rr6r"r)rIs r�test_reentrant_write_textz%SignalsTest.test_reentrant_write_text�s#���"�"�4�c�G�"�D�D�D�D�Dr c���tj��\}�d|d<�fd�}tjtj|��	|jj|fi|��}tj�d��tjd��|�||�	d����d��tjd��|�
��tj
���tj
|��d	S#tjd��|�
��tj
���tj
|��wxYw)
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�c�2��tj�d��dS)Nr|)rrF)r
rrs  �r�
alarm_handlerz?SignalsTest.check_interrupted_read_retry.<locals>.alarm_handler�s����H�Q������r r�r]r��foobarrN)rrrrr�r0rFr5r�rpr�)r?r�rr,r/�riors      @r�check_interrupted_read_retryz(SignalsTest.check_interrupted_read_retry�s*����w�y�y���1�#(�
�i� �	 �	 �	 �	 �	 ��
�f�n�m�4�4�4�
	��$�'�,�q�2�2�M�2�2�C��H�Q������L��O�O�O�

���V�V�C�H�H�Q�K�K�0�0�(�;�;�;��L��O�O�O��I�I�K�K�K��H�Q�K�K�K��H�Q�K�K�K�K�K��
�L��O�O�O��I�I�K�K�K��H�Q�K�K�K��H�Q�K�K�K�K���s�A.D�AEc�6�|�d�d���dS)Nc�,�|�d��S)Nr�)r�rs rr�zBSignalsTest.test_interrupted_read_retry_buffered.<locals>.<lambda>�s��A�H�H�X�4F�4F�r r	r�r2rIs r�$test_interrupted_read_retry_bufferedz0SignalsTest.test_interrupted_read_retry_buffered�s2���)�)�*F�*F�/3�	*�	5�	5�	5�	5�	5r c�8�|�d�dd���dS)Nc��|SrCr&rs rr�z>SignalsTest.test_interrupted_read_retry_text.<locals>.<lambda>�s��A�r r,r�r"r5rIs r� test_interrupted_read_retry_textz,SignalsTest.test_interrupted_read_retry_text�s7���)�)�+�+�/2�X�	*�	G�	G�	G�	G�	Gr c�����
�����tjd���tj}t	j��\�
}d|d<g�d�d���
���fd�}t
j|����d�_�fd�}�fd	��||z}tj	tj
|��	|jj|fi|��}tj
d
��|�|��}	|�||	��|���d�����|����|�|t'd��D������tj
d��d�t	j|��t	j�
��	|���dS#t*$r!}
|
jt,jkr�Yd}
~
dSd}
~
wwxYw#tj
d��d�t	j|��t	j�
��	|���w#t*$r }
|
jt,jkr�Yd}
~
wd}
~
wwxYwxYw)
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�"��	�sp����gggd��dvrKtj�d��}��|������gggd��dv�K��ndSdS#t$r
}|�Yd}~dSd}~wwxYw)Ng�?rr�)r;rrprD�
BaseException)r�rr�r,rr;�write_finisheds  �����rrgz8SignalsTest.check_interrupted_write_retry.<locals>._read�s����
�(�/��v�}�}�a�S�"�b�#�>�>�q�A�A�A��G�A�t�,�,��$�+�+�A�.�.�.��v�}�}�a�S�"�b�#�>�>�q�A�A�A�)�/�/�/�/�/��!�
�
�
�������������
���s�A0A7�7
B�B	�	BrDTc�n��tjtj���tjd��dSr�)rrr5)r
r�alarm2s  �r�alarm1z9SignalsTest.check_interrupted_write_retry.<locals>.alarm1�s(����M�&�.�&�1�1�1��L��O�O�O�O�Or c�0������dSrC)r )r
rr�s  �rr@z9SignalsTest.check_interrupted_write_retry.<locals>.alarm2�s���
�G�G�I�I�I�I�Ir r]c3�4K�|]}t|��V��dSrC)r)rGr�s  r�	<genexpr>z<SignalsTest.check_interrupted_write_retry.<locals>.<genexpr>s(����#A�#A�q�C��F�F�#A�#A�#A�#A�#A�#Ar r)r�
import_modulerrrrr�rrrrr�r0r5rFr�r�r�r��sumr�r�r)r*)r?rrrPrrgrArrr�r?r@r�r,rr;r�r>s           @@@@@@@r�check_interrupted_write_retryz)SignalsTest.check_interrupted_write_retry�s�����������,�X�6�6��
�!���w�y�y���1�#(�
�i� �
������	�	�	�	�	�	�	�	�	�
��E�*�*�*�����	�	�	�	�	�	�	�	�	�	��A�X�
��
�f�n�f�-�-�-�	��$�'�,�q�2�2�M�2�2�C��L��O�O�O��i�i�
�+�+�G����Q��(�(�(��I�I�K�K�K�!�N�
�F�F�H�H�H����e�$�$�$����Q��#A�#A�L�#A�#A�#A� A� A�B�B�B��L��O�O�O�!�N��H�Q�K�K�K��H�Q�K�K�K�
��	�	��������
�
�
��7�e�k�)�)��*�)�)�)�)�)�����
�����
�L��O�O�O�!�N��H�Q�K�K�K��H�Q�K�K�K�
��	�	�������
�
�
��7�e�k�)�)��*�)�)�)�)�����
������sO�B>G�F0�0
G�:G�G�?I �H3�2I �3
I�=I�I �I�I c�4�|�dd���dS)Nr�rr�rGrIs r�%test_interrupted_write_retry_bufferedz1SignalsTest.test_interrupted_write_retry_buffereds!���*�*�4�d�*�;�;�;�;�;r c�6�|�ddd���dS)Nr�rr�r"rIrIs r�!test_interrupted_write_retry_textz-SignalsTest.test_interrupted_write_retry_text!s#���*�*�3�S�8�*�L�L�L�L�Lr N)r#r$r%r�r�rr�requires_alarmryr|rrrrr#rr5r'r*r,r2r6r9rGrJrLr&r rrr+s������K�K�K�4�4�4����K�K�K�Z��X�����V�,�,�.B�C�C�K�K�D�C��^�K���X�����V�,�,�.B�C�C�>�>�D�C��^�>���X�����V�,�,�.B�C�C�N�N�D�C��^�N�
�������6�5�5��^�5��E�E��^�E����0�5�5��^�5��G�G��^�G�B�B�B�H�<�<��^�<��M�M��^�M�M�Mr rc��eZdZeZdS)�CSignalsTestN)r#r$r%r�r&r rrOrO&s������	�B�B�Br rOc��eZdZeZdZdZdS)�
PySignalsTestN)r#r$r%r�r�r*r,r&r rrQrQ)s#������	
�B�%)�!� $���r rQc����tttttt
ttttttttttt t"t$t&f}t(t*t,t.t0t2t4t6f}t8jdgz}d�|D��}d�|D��}t=���|��fd�|D����|��fd�|D����|D]�}|j �!d��r,|�"��D]\}}	tG|||	����H|j �!d��r+|�"��D]\}}	tG|||	�����|�$��}
|D]*}|
�%|�&|�����+|
S)Nrpc�:�i|]}|tt|����Sr&)rFr��rGr's  r�
<dictcomp>zload_tests.<locals>.<dictcomp>Es$��@�@�@�D�t�g�b�$�'�'�@�@�@r c�:�i|]}|tt|����Sr&)rFr�rTs  rrUzload_tests.<locals>.<dictcomp>Fs$��C�C�C�t��w�t�T�*�*�C�C�Cr c3�F�K�|]}|j�d|jzfV��dS)r�N�r#�rGr��globss  �rrDzload_tests.<locals>.<genexpr>Hs6�����H�H�Q�A�J��c�A�J�&6� 7�8�H�H�H�H�H�Hr c3�F�K�|]}|j�d|jzfV��dS)�PyNrXrYs  �rrDzload_tests.<locals>.<genexpr>Is6�����J�J�q�Q�Z��t�a�j�'8�!9�:�J�J�J�J�J�Jr r�r\)'r~r�r�rdr�r�r�r6r8r�r�r�rzrrArWr�r�rOrQrlrwr�r�r�r�r7r�r�r��globalsr�r#rNr*�setattr�
suiteClass�addTest�loadTestsFromTestCase)�loaderrOr��mocks�all_members�c_io_ns�py_io_nsrPr'r�suiterZs           @r�
load_testsrh2s����
�h��
 �"6�
 �"6�
 �"6�
 �"6�
+�
+�-L�
�!4�
�,�
�=�

�E����^�
!�#3�5I�
�
�E��*� ;�<�<�K�@�@�K�@�@�@�G�C�C�{�C�C�C�H��I�I�E��N�N�H�H�H�H�%�H�H�H�H�H�H��O�O�J�J�J�J�E�J�J�J�J�J�J��)�)���=�#�#�C�(�(�	)�$�]�]�_�_�
)�
)�	��c���d�C�(�(�(�(�
)�
�]�
%�
%�d�
+�
+�	)�%�^�^�-�-�
)�
)�	��c���d�C�(�(�(�(�������E��:�:��
�
�
�f�2�2�4�8�8�9�9�9�9��Lr �__main__)yrer�r)r)r�rr�rLrrLr�r�r�ryrUr��collectionsrr�	itertoolsrrrPr�test.support.script_helperrr	r
�test.supportrrr
rr�test.support.os_helperrr�r��_pyior�rr�	Structurer�ImportErrorrr�dev_moder�r4r|rMr7rJrgrjrlrsrurwr�r�r�r�r�r�r�r�r�r,r�r�r�r�r�r�r�r��TestCaser�r~r�r�r�r�r�r�rdr�r�r�r�r�r6r8r:r�r�r�r�r�r�r�r
rrArWrYrzrr�r�r�rzr'rrOrQrhr#�mainr&r r�<module>rusw
��#�#�*�
�
�
���������
�
�
�
�	�	�	�	�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�������������������������'�'�'�'�'�'�'�'�"�"�"�"�"�"�"�"�������C�C�C�C�C�C�C�C�C�C�&�&�&�&�&�&�"�"�"�"�"�"�)�)�)�)�)�)�(�(�(�(�(�(�*�*�*�*�*�*�+�+�+�+�+�+�
�
�
�
�	�	�	�	�����
��M�M�M�
���
�
�
�
�
�f�&�
�
�
�
���3�3�3�3�3�3�3�3�3���� #�7�3�(:�;�;�Q�s�y�?Q�����
%��$��G�F�G���<����
6�6�6�6�6�6�6�6�p	�	�	�	�	�0�"�,�	�	�	�	�	�	�	�	�1�4�>�	�	�	������$����	�	�	�	�	��B�L�	�	�	�	�	�	�	�	�)�T�^�	�	�	������i����"	�	�	�	�	����	�	�	�	�	�	�	�	����	�	�	������Y����	�	�	�	�	�n�b�l�	�	�	�	�	�	�	�	�~�t�~�	�	�	������Y����	�	�	�	�	�n�b�l�	�	�	�	�	�	�	�	�~�t�~�	�	�	��������� 	�	�	�	�	�*�b�j�	�	�	�	�	�	�	�	�:�t�|�	�	�	�8�8�8�8�8�8�8�8�3�3�3�3�3�(�"�*�3�3�3�5�5�5�5�5�)�4�<�5�5�5�.�.�.�.�.�.�.�.�`)�)�)�)�)�0�"�,�)�)�)�+�+�+�+�+�1�4�>�+�+�+�A$�A$�A$�A$�A$�X�
�A$�A$�A$�H$�$�$�$�$�f�$�$�$�(	�	�	�	�	�v�	�	�	�	��h�h�h�h�h�h�'�h�h���h�j�j�j�j�j�j�j�j�Z5�5�5�5�5�5�5�5�,fH�fH�fH�fH�fH��*�,?�fH�fH�fH�R	@A�@A�@A�@A�@A�,�j�@A�@A�@A�F�����-����d�d�d�d�d��*�,?�d�d�d�P	-4�-4�-4�-4�-4�,�j�-4�-4�-4�`�����-����N�N�N�N�N��*�N�N�N�`�����,���������-����f&�f&�f&�f&�f&�+�-?�f&�f&�f&�R4�4�4�4�4�,�j�4�4�4�2�����-����I�I�I�I�I��!:�I�I�I�\;�;�;�)4�)4�)4�)4�)4�X�%6�)4�)4�)4�V^�^�^�^�^��)�^�^�^�B#2�2�2�2�2�R�Z�2�2�2����KQ�KQ�KQ�KQ�KQ�*�KQ�KQ�KQ�\<�<�<�<�<�+�<�<�<�
s>�s>�s>�s>�s>�H�$5�s>�s>�s>�j;�;�;�;�;�%B�;�;�;�	�	�	�	�	�&C�	�	�	�x9�x9�x9�x9�x9��"�x9�x9�x9�v;>�;>�;>�;>�;>�*�;>�;>�;>�|�����:���������D��"I�J�J�wM�wM�wM�wM�wM�(�#�wM�wM�K�J�wM�t�����;����%�%�%�%�%�K�%�%�%�#�#�#�J�z����H�M�O�O�O�O�O��s�B+�+B6�5B6