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

�Ke�����ddlmZddlmZmZddlZddlZddlmZm	Z	ddl
Z
ddlZddlZddl
Z
ddlZddlZddlZddlZddlZddlmZddlmZddlmZddlZddlZejd��Zdd	lmZmZmZdad
�ZGd�dej ��Z!Gd
�de!��Z"Gd�de!��Z#Gd�de!��Z$Gd�de!��Z%Gd�de!��Z&d�Z'e(dkrej)��dSdS)�)�support)�
bigmemtest�_4GN)�BytesIO�DEFAULT_BUFFER_SIZE)�
import_helper)�threading_helper)�unlink�bz2)�BZ2File�
BZ2Compressor�BZ2Decompressorc���t�!ttjd����atrt	jdg|���St�|��S)N�bunzip2)�input)�has_cmdline_bunzip2�bool�shutil�which�
subprocess�check_outputr�
decompress)�datas �7/usr/local/apps/python3/lib/python3.11/test/test_bz2.py�ext_decompressrsR���"�"�6�<�	�#:�#:�;�;���$��&�	�{�$�?�?�?�?��~�~�d�#�#�#�c	���eZdZ	gd�Zd�e��ZdZdZdZdZ	e
d��Zeje
j�eje
j�e����d����D]WZeed	��5Ze	e�ee��e	d
���z
Z	d
d
d
��n#1swxYwYe	dkrn�Xe�ed���Zd
�Zd�Zd
S)�BaseTest)s root:x:0:0:root:/root:/bin/bash
sbin:x:1:1:bin:/bin:
sdaemon:x:2:2:daemon:/sbin:
sadm:x:3:4:adm:/var/adm:
slp:x:4:7:lp:/var/spool/lpd:
s sync:x:5:0:sync:/sbin:/bin/sync
s-shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
s!halt:x:7:0:halt:/sbin:/sbin/halt
s"mail:x:8:12:mail:/var/spool/mail:
s"news:x:9:13:news:/var/spool/news:
s#uucp:x:10:14:uucp:/var/spool/uucp:
s operator:x:11:0:operator:/root:
s!games:x:12:100:games:/usr/games:
s,gopher:x:13:30:gopher:/usr/lib/gopher-data:
s(ftp:x:14:50:FTP User:/var/ftp:/bin/bash
s#nobody:x:65534:65534:Nobody:/home:
s.postfix:x:100:101:postfix:/var/spool/postfix:
s-niemeyer:x:500:500::/home/niemeyer:/bin/bash
s>postgres:x:101:102:PostgreSQL Server:/var/lib/pgsql:/bin/bash
s6mysql:x:102:103:MySQL server:/var/lib/mysql:/bin/bash
s#www:x:103:104::/var/www:/bin/false
rs�BZh91AY&SY.�N>_�@��n?��0���F��#&�F��Ц�MQ���4hh$�i4�4S�<Q�H���Շ���
��I��/Epu�]ɻDL
Q	1ߠ���2O9��7d�I�J�L#����/��#C��W����M��Xa<e�t�L�����˄.�����`n}�lh	E,�ZVH>���9gd6
�Պ��.K�v��xw�ߡ���|/";���ձ#A���o��y\�O煚��f8�2��"%�>V,��z⟣�"�E)I�^��r�U�2�6���U��0��^��DF����ݸ����ankR���3]���f��"6l$�j@���l1..�k�ls����E��
��k��n��Q�%y�v��z��̹zn7.G�]��B@�!8`sBZh9rE8P�sthis is not a valid bzip2 fileriz*.py�rbN���
compresslevelc�d�tj��\}|_tj|��dS�N)�tempfile�mkstemp�filename�os�close)�self�fds  r�setUpzBaseTest.setUpRs(��$�,�.�.���D�M�
�������rc�.�t|j��dSr$)r
r'�r*s r�tearDownzBaseTest.tearDownVs���t�}�����r)�__name__�
__module__�__qualname__�
TEXT_LINES�join�TEXT�DATA�
EMPTY_DATA�BAD_DATA�	test_size�	bytearray�BIG_TEXT�globr(�path�escape�dirname�__file__�fname�open�fh�readinto�
memoryviewr�compress�BIG_DATAr,r/�rrrr&s��������
�
�
�J�.�8�8�J���D�^�D�4�J�0�H��I��y��"�"�H����2�7�<�<����B�G�O�O�H�4M�4M�(N�(N�PV�W�W�X�X����
�T�%��
�
�	G�"�����Z�Z��%9�%9�)�*�*�%E�F�F�F�I�	G�	G�	G�	G�	G�	G�	G�	G�	G�	G�	G����	G�	G�	G�	G��x����E� ��|�|�H�A�|�6�6�H��������s�*C�C		�C		rc��eZdZ	d@d�Zd�Zd�Zd�Zd�Zd�Zd	�Z	d
�Z
d�Zd�Zd
�Z
d�Zd�Zd�Zd�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/d0�Z0d1�Z1e2j3��d2���Z4d3�Z5d4�Z6d5�Z7d6�Z8d7�Z9d8�Z:d9�Z;d:�Z<d;�Z=d<�Z>d=�Z?d>�Z@d?S)A�BZ2FileTestr rc���t|jd��5}|�|j|z��|�|��ddd��dS#1swxYwYdS)N�wb)rBr'�writer6)r*�streams�suffix�fs    r�createTempFilezBZ2FileTest.createTempFile]s���
�$�-��
&�
&�	�!�
�G�G�D�I��'�(�(�(�
�G�G�F�O�O�O�	�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�	�	s�3A�A�Ac�^�|�ttd��|�tttjd��|�tttjd��|�tttjd��|�tttjd���|�tttjd���|�tttjdd	��dS)
Ngw��/�^@�z�rx�rbtrr!�
�r�)�assertRaises�	TypeErrorr�
ValueErrorr(�devnullr.s r�testBadArgszBZ2FileTest.testBadArgsbs������)�W�g�6�6�6����*�g�r�z�3�?�?�?����*�g�r�z�4�@�@�@����*�g�r�z�5�A�A�A����*�g�r�z���K�K�K����*�g�r�z���L�L�L�	
���)�W�b�j�#�q�A�A�A�A�Arc�<�|���t|j��5}|�t|jt
����|�|���|j��ddd��dS#1swxYwYdSr$�	rQrr'rYrZ�read�float�assertEqualr5�r*�bz2fs  r�testReadzBZ2FileTest.testReadms���������
�T�]�
#�
#�	5�t����i���E�G�G�<�<�<����T�Y�Y�[�[�$�)�4�4�4�	5�	5�	5�	5�	5�	5�	5�	5�	5�	5�	5�	5����	5�	5�	5�	5�	5�	5s�AB�B�Bc���|�d|j���t|j��5}|�t
|j��ddd��dS#1swxYwYdS)Nr�rNrO)rQr8rr'rY�OSErrorr`rcs  r�testReadBadFilezBZ2FileTest.testReadBadFiless������A�d�m��<�<�<�
�T�]�
#�
#�	2�t����g�t�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#c�F�|�d���t|j��5}|�t|jt
����|�|���|jdz��ddd��dS#1swxYwYdS�N��rNr_rcs  r�testReadMultiStreamzBZ2FileTest.testReadMultiStreamxs������A��&�&�&�
�T�]�
#�
#�	9�t����i���E�G�G�<�<�<����T�Y�Y�[�[�$�)�a�-�8�8�8�	9�	9�	9�	9�	9�	9�	9�	9�	9�	9�	9�	9����	9�	9�	9�	9�	9�	9s�AB�B�Bc���tj}t|j��t_	|�d���t|j��5}|�t|j	t����|�|�	��|jdz��ddd��n#1swxYwY|t_dS#|t_wxYwrk)
�_compression�BUFFER_SIZE�lenr6rQrr'rYrZr`rarbr5)r*�buffer_sizerds   r�testReadMonkeyMultiStreamz%BZ2FileTest.testReadMonkeyMultiStream~s��#�.��#&�t�y�>�>�� �	3������*�*�*����'�'�
=�4��!�!�)�T�Y����@�@�@�� � ������d�i�!�m�<�<�<�
=�
=�
=�
=�
=�
=�
=�
=�
=�
=�
=����
=�
=�
=�
=�(3�L�$�$�$��{�L�$�2�2�2�2s0�*C�AC�4C�C�C�C�C�C'c���|�|j���t|j��5}|�|���|j��ddd��dS#1swxYwYdS)N)rO�rQr8rr'rbr`r5rcs  r�testReadTrailingJunkz BZ2FileTest.testReadTrailingJunk�s������4�=��1�1�1�
�T�]�
#�
#�	5�t����T�Y�Y�[�[�$�)�4�4�4�	5�	5�	5�	5�	5�	5�	5�	5�	5�	5�	5�	5����	5�	5�	5�	5�	5�	5s�.A+�+A/�2A/c��|�d|j���t|j��5}|�|���|jdz��ddd��dS#1swxYwYdS)Nrlrgrvrcs  r�testReadMultiStreamTrailingJunkz+BZ2FileTest.testReadMultiStreamTrailingJunk�s������A�d�m��<�<�<�
�T�]�
#�
#�	9�t����T�Y�Y�[�[�$�)�a�-�8�8�8�	9�	9�	9�	9�	9�	9�	9�	9�	9�	9�	9�	9����	9�	9�	9�	9�	9�	9s�1A/�/A3�6A3c�4�|���t|j��5}|�t|jt
����|�|�d��d��ddd��dS#1swxYwYdS)Nrr)rQrr'rYrZr`rarbrcs  r�	testRead0zBZ2FileTest.testRead0�s���������
�T�]�
#�
#�	0�t����i���E�G�G�<�<�<����T�Y�Y�q�\�\�3�/�/�/�	0�	0�	0�	0�	0�	0�	0�	0�	0�	0�	0�	0����	0�	0�	0�	0�	0�	0s�AB
�
B�Bc��|���t|j��5}d}	|�d��}|sn||z
}�|�||j��ddd��dS#1swxYwYdS)NrTrV�rQrr'r`rbr5�r*rd�text�strs    r�testReadChunk10zBZ2FileTest.testReadChunk10�s���������
�T�]�
#�
#�	.�t��D�
��i�i��m�m���������	
�

���T�4�9�-�-�-�	.�	.�	.�	.�	.�	.�	.�	.�	.�	.�	.�	.����	.�	.�	.�	.�	.�	.s�=A3�3A7�:A7c�
�|�d���t|j��5}d}	|�d��}|sn||z
}�|�||jdz��ddd��dS#1swxYwYdS)NrlrmrTrVr}r~s    r�testReadChunk10MultiStreamz&BZ2FileTest.testReadChunk10MultiStream�s������A��&�&�&�
�T�]�
#�
#�	2�t��D�
��i�i��m�m���������	
�

���T�4�9�q�=�1�1�1�	2�	2�	2�	2�	2�	2�	2�	2�	2�	2�	2�	2����	2�	2�	2�	2�	2�	2s�AA8�8A<�?A<c���|���t|j��5}|�|�d��|jdd���ddd��dS#1swxYwYdS)N�d)rQrr'rbr`r5rcs  r�testRead100zBZ2FileTest.testRead100�s���������
�T�]�
#�
#�	>�t����T�Y�Y�s�^�^�T�Y�t��t�_�=�=�=�	>�	>�	>�	>�	>�	>�	>�	>�	>�	>�	>�	>����	>�	>�	>�	>�	>�	>s�7A-�-A1�4A1c��|���t|j��5}|���}|�t|��d��|�|j�|����|�	|�
��|j��ddd��dS#1swxYwYdS�Nr)rQrr'�peek�assertNotEqualrr�
assertTruer5�
startswithrbr`)r*rd�pdatas   r�testPeekzBZ2FileTest.testPeek�s���������
�T�]�
#�
#�	5�t��I�I�K�K�E�����E�
�
�A�.�.�.��O�O�D�I�0�0��7�7�8�8�8����T�Y�Y�[�[�$�)�4�4�4�		5�	5�	5�	5�	5�	5�	5�	5�	5�	5�	5�	5����	5�	5�	5�	5�	5�	5s�BC�C�Cc�\�|���t|j��5}d}t|��}|�|�|��|��|�||jd|���t|j��|z
}tt|j����}|�|�|��|��|�|d|�|j|d���ddd��dS#1swxYwYdS)N�)rQrr'r:rbrDr5rr)r*rd�n�bs    r�testReadIntozBZ2FileTest.testReadInto�sJ��������
�T�]�
#�
#�	4�t��A��!���A����T�]�]�1�-�-�q�1�1�1����Q��	�"�1�"�
�.�.�.��D�I����"�A��#�d�i�.�.�)�)�A����T�]�]�1�-�-�q�1�1�1����Q�r��r�U�D�I�q�b�c�c�N�3�3�3�	4�	4�	4�	4�	4�	4�	4�	4�	4�	4�	4�	4����	4�	4�	4�	4�	4�	4s�C+D!�!D%�(D%c�0�|���t|j��5}|�t|jd��|jD]*}|�|���|���+	ddd��dS#1swxYwYdSr$�rQrr'rYrZ�readliner3rb�r*rd�lines   r�testReadLinezBZ2FileTest.testReadLine�s���������
�T�]�
#�
#�	8�t����i����=�=�=���
8�
8��� � ������$�7�7�7�7�
8�	8�	8�	8�	8�	8�	8�	8�	8�	8�	8�	8�	8����	8�	8�	8�	8�	8�	8s�AB�B�Bc�:�|�d���t|j��5}|�t|jd��|jdzD]*}|�|���|���+	ddd��dS#1swxYwYdSrkr�r�s   r�testReadLineMultiStreamz#BZ2FileTest.testReadLineMultiStream�s������A��&�&�&�
�T�]�
#�
#�	8�t����i����=�=�=���!�+�
8�
8��� � ������$�7�7�7�7�
8�	8�	8�	8�	8�	8�	8�	8�	8�	8�	8�	8�	8����	8�	8�	8�	8�	8�	8s�AB�B�Bc�$�|���t|j��5}|�t|jd��|�|���|j��ddd��dS#1swxYwYdSr$�rQrr'rYrZ�	readlinesrbr3rcs  r�
testReadLineszBZ2FileTest.testReadLines�s���������
�T�]�
#�
#�	@�t����i����>�>�>����T�^�^�-�-�t��?�?�?�	@�	@�	@�	@�	@�	@�	@�	@�	@�	@�	@�	@����	@�	@�	@�	@�	@�	@s�AB�B	�B	c�.�|�d���t|j��5}|�t|jd��|�|���|jdz��ddd��dS#1swxYwYdSrkr�rcs  r�testReadLinesMultiStreamz$BZ2FileTest.testReadLinesMultiStream�s������A��&�&�&�
�T�]�
#�
#�	D�t����i����>�>�>����T�^�^�-�-�t���/B�C�C�C�	D�	D�	D�	D�	D�	D�	D�	D�	D�	D�	D�	D����	D�	D�	D�	D�	D�	Ds�AB
�
B�Bc���|���t|j��5}|�t	t|����|j��ddd��dS#1swxYwYdSr$�rQrr'rb�list�iterr3rcs  r�testIteratorzBZ2FileTest.testIterator�s���������
�T�]�
#�
#�	@�t����T�$�t�*�*�-�-�t��?�?�?�	@�	@�	@�	@�	@�	@�	@�	@�	@�	@�	@�	@����	@�	@�	@�	@�	@�	@s�6A,�,A0�3A0c��|�d���t|j��5}|�t	t|����|jdz��ddd��dS#1swxYwYdSrkr�rcs  r�testIteratorMultiStreamz#BZ2FileTest.testIteratorMultiStream�s������A��&�&�&�
�T�]�
#�
#�	D�t����T�$�t�*�*�-�-�t���/B�C�C�C�	D�	D�	D�	D�	D�	D�	D�	D�	D�	D�	D�	D����	D�	D�	D�	D�	D�	Ds�9A1�1A5�8A5c��|���t|j��}|���|�t
t|��|�t
|j��dSr$)rQrr'r)rYr[�nextr�rcs  r�testClosedIteratorDeadlockz&BZ2FileTest.testClosedIteratorDeadlock�sf���������t�}�%�%���
�
�������*�d�D�1�1�1����*�d�n�5�5�5�5�5rc��t|jd��5}|�t|j��|�|j��ddd��n#1swxYwYt
|jd��5}|�t|�	����|j��ddd��dS#1swxYwYdS)N�wr�
rr'rYrZrMr5rBrbrr`�r*rdrPs   r�	testWritezBZ2FileTest.testWrite�sB��
�T�]�C�
(�
(�	"�D����i���4�4�4��J�J�t�y�!�!�!�	"�	"�	"�	"�	"�	"�	"�	"�	"�	"�	"����	"�	"�	"�	"��$�-��
&�
&�	B�!����^�A�F�F�H�H�5�5�t�y�A�A�A�	B�	B�	B�	B�	B�	B�	B�	B�	B�	B�	B�	B����	B�	B�	B�	B�	B�	Bs#�;A�A!�$A!�=;C�C	�C	c��t|jd��5}d}	|j|dz|dzdz�}|sn|�|��|dz
}�6	ddd��n#1swxYwYt	|jd��5}|�t
|�����|j��ddd��dS#1swxYwYdS)Nr�rTrVr r)rr'r5rMrBrbrr`)r*rdr�r�rPs     r�testWriteChunks10zBZ2FileTest.testWriteChunks10�si��
�T�]�C�
(�
(�	�D��A�
��i��"��a��c�2�X�
�.������
�
�3�����Q���
��	�	�	�	�	�	�	�	�	�	�	����	�	�	�	��$�-��
&�
&�	B�!����^�A�F�F�H�H�5�5�t�y�A�A�A�	B�	B�	B�	B�	B�	B�	B�	B�	B�	B�	B�	B����	B�	B�	B�	B�	B�	Bs#�:A�A!�$A!�=;C�C	�C	c��t�|jd���}t|jdd���5}|�|j��ddd��n#1swxYwYt
|jd��5}|�|���|��ddd��dS#1swxYwYdS)Nrlr!r�r)	rrFr5rr'rMrBrbr`)r*�expectedrdrPs    r� testWriteNonDefaultCompressLevelz,BZ2FileTest.testWriteNonDefaultCompressLevel
s'���<�<��	��<�;�;��
�T�]�C�q�
9�
9�
9�	"�T��J�J�t�y�!�!�!�	"�	"�	"�	"�	"�	"�	"�	"�	"�	"�	"����	"�	"�	"�	"�
�$�-��
&�
&�	1�!����Q�V�V�X�X�x�0�0�0�	1�	1�	1�	1�	1�	1�	1�	1�	1�	1�	1�	1����	1�	1�	1�	1�	1�	1s#�A � A$�'A$�)B6�6B:�=B:c���t|jd��5}|�t|j��|�|j��ddd��n#1swxYwY|�t|jdg��t|jd��5}|�t|�
����|j��ddd��dS#1swxYwYdS)Nr��ar)rr'rYrZ�
writelinesr3r[rBrbrr`r5r�s   r�testWriteLineszBZ2FileTest.testWriteLiness^��
�T�]�C�
(�
(�	-�D����i���9�9�9��O�O�D�O�,�,�,�	-�	-�	-�	-�	-�	-�	-�	-�	-�	-�	-����	-�	-�	-�	-�
	
���*�d�o��u�=�=�=�
�$�-��
&�
&�	B�!����^�A�F�F�H�H�5�5�t�y�A�A�A�	B�	B�	B�	B�	B�	B�	B�	B�	B�	B�	B�	B����	B�	B�	B�	B�	B�	Bs#�;A�A!�$A!�;C'�'C+�.C+c�l�t|jd��5}|�d��ddd��n#1swxYwYt|jd��5}|�t|jd��|�t|jdg��ddd��dS#1swxYwYdS)Nr�sabcrW�a)rr'rMrYrhr�rcs  r�testWriteMethodsOnReadOnlyFilez*BZ2FileTest.testWriteMethodsOnReadOnlyFiles6��
�T�]�C�
(�
(�	�D��J�J�v����	�	�	�	�	�	�	�	�	�	�	����	�	�	�	��T�]�C�
(�
(�	@�D����g�t�z�4�8�8�8����g�t����?�?�?�	@�	@�	@�	@�	@�	@�	@�	@�	@�	@�	@�	@����	@�	@�	@�	@�	@�	@s�8�<�<�AB)�)B-�0B-c�x�t|jd��5}|�t|j��|�|j��ddd��n#1swxYwYt|jd��5}|�t|j��|�|j��ddd��n#1swxYwYt
|jd��5}|�t|�	����|jdz��ddd��dS#1swxYwYdS)Nr�r�r�r�r�s   r�
testAppendzBZ2FileTest.testAppend#s���
�T�]�C�
(�
(�	"�D����i���4�4�4��J�J�t�y�!�!�!�	"�	"�	"�	"�	"�	"�	"�	"�	"�	"�	"����	"�	"�	"�	"��T�]�C�
(�
(�	"�D����i���4�4�4��J�J�t�y�!�!�!�	"�	"�	"�	"�	"�	"�	"�	"�	"�	"�	"����	"�	"�	"�	"��$�-��
&�
&�	F�!����^�A�F�F�H�H�5�5�t�y�1�}�E�E�E�	F�	F�	F�	F�	F�	F�	F�	F�	F�	F�	F�	F����	F�	F�	F�	F�	F�	Fs5�;A�A!�$A!�=;C�C�C�$>D/�/D3�6D3c�\�|���t|j��5}|�t|j��|�d��|�|���|jdd���ddd��dS#1swxYwYdS�N�)	rQrr'rYrZ�seekrbr`r5rcs  r�testSeekForwardzBZ2FileTest.testSeekForward-s���������
�T�]�
#�
#�	;�t����i���3�3�3��I�I�c�N�N�N����T�Y�Y�[�[�$�)�C�D�D�/�:�:�:�	;�	;�	;�	;�	;�	;�	;�	;�	;�	;�	;�	;����	;�	;�	;�	;�	;�	;��A+B!�!B%�(B%c��|�d���t|j��5}|�t|j��|�t
|j��dz��|�|�	��|jdd���ddd��dS#1swxYwYdS)Nr�rmr�)
rQrr'rYrZr�rrr5rbr`rcs  r�testSeekForwardAcrossStreamsz(BZ2FileTest.testSeekForwardAcrossStreams4s������A��&�&�&�
�T�]�
#�
#�	;�t����i���3�3�3��I�I�c�$�)�n�n�s�*�+�+�+����T�Y�Y�[�[�$�)�C�D�D�/�:�:�:�	;�	;�	;�	;�	;�	;�	;�	;�	;�	;�	;�	;����	;�	;�	;�	;�	;�	;s�BB8�8B<�?B<c�H�|���t|j��5}|�d��|�dd��|�|���|jdd���ddd��dS#1swxYwYdS�Ni��j���r i^)rQrr'r`r�rbr5rcs  r�testSeekBackwardszBZ2FileTest.testSeekBackwards;s���������
�T�]�
#�
#�	?�t��I�I�c�N�N�N��I�I�d�A�������T�Y�Y�[�[�$�)�G�H�H�*=�>�>�>�	?�	?�	?�	?�	?�	?�	?�	?�	?�	?�	?�	?����	?�	?�	?�	?�	?�	?��A!B�B�Bc���|�d���t|j��5}t|j��dz}|dkr+|t|�|����z}|dk�+|�dd��|�|���|jdd�|jz��ddd��dS#1swxYwYdS)Nr�rmr�rr�r i���)rQrr'rrr5r`r�rb)r*rd�readtos   r�testSeekBackwardsAcrossStreamsz*BZ2FileTest.testSeekBackwardsAcrossStreamsBs%�����A��&�&�&�
�T�]�
#�
#�	K�t����^�^�c�)�F��1�*�*��#�d�i�i��/�/�0�0�0���1�*�*��I�I�d�A�������T�Y�Y�[�[�$�)�G�H�H�*=��	�*I�J�J�J�	K�	K�	K�	K�	K�	K�	K�	K�	K�	K�	K�	K����	K�	K�	K�	K�	K�	Ks�BC�C�Cc�H�|���t|j��5}|�dd��|�|���|jt|j��dz
d���ddd��dS#1swxYwYdS)Nr�r�r�)rQrr'r�rbr`r5rrrcs  r�testSeekBackwardsFromEndz$BZ2FileTest.testSeekBackwardsFromEndKs���������
�T�]�
#�
#�	J�t��I�I�d�A�������T�Y�Y�[�[�$�)�C��	�N�N�3�4F�4G�4G�*H�I�I�I�	J�	J�	J�	J�	J�	J�	J�	J�	J�	J�	J�	J����	J�	J�	J�	J�	J�	Jr�c�(�|�d���t|j��5}|�dd��|�|���|jdzdd���ddd��dS#1swxYwYdS)Nr�rmi���)rQrr'r�rbr`r5rcs  r�%testSeekBackwardsFromEndAcrossStreamsz1BZ2FileTest.testSeekBackwardsFromEndAcrossStreamsQs������A��&�&�&�
�T�]�
#�
#�	C�t��I�I�e�Q�������T�Y�Y�[�[�4�9�q�=�%�&�&�*A�B�B�B�	C�	C�	C�	C�	C�	C�	C�	C�	C�	C�	C�	C����	C�	C�	C�	C�	C�	Cs�AB�B�Bc�v�|���t|j��5}|�d��|�|���t
|j����|�|���d��ddd��dS#1swxYwYdS�N��Ir�	rQrr'r�rb�tellrrr5r`rcs  r�testSeekPostEndzBZ2FileTest.testSeekPostEndWs���������
�T�]�
#�
#�	/�t��I�I�f�������T�Y�Y�[�[�#�d�i�.�.�9�9�9����T�Y�Y�[�[�#�.�.�.�	/�	/�	/�	/�	/�	/�	/�	/�	/�	/�	/�	/����	/�	/�	/�	/�	/�	/s�A8B.�.B2�5B2c��|�d���t|j��5}|�d��|�|���t
|j��dz��|�|���d��ddd��dS#1swxYwYdS�Nrlrmr�rr�rcs  r�testSeekPostEndMultiStreamz&BZ2FileTest.testSeekPostEndMultiStream^s������A��&�&�&�
�T�]�
#�
#�	/�t��I�I�f�������T�Y�Y�[�[�#�d�i�.�.�1�*<�=�=�=����T�Y�Y�[�[�#�.�.�.�	/�	/�	/�	/�	/�	/�	/�	/�	/�	/�	/�	/����	/�	/�	/�	/�	/�	/s�A;B3�3B7�:B7c��|���t|j��5}|�d��|�d��|�|���t
|j����|�|���d��ddd��dS#1swxYwYdSr�r�rcs  r�testSeekPostEndTwicez BZ2FileTest.testSeekPostEndTwicees���������
�T�]�
#�
#�	/�t��I�I�f�����I�I�f�������T�Y�Y�[�[�#�d�i�.�.�9�9�9����T�Y�Y�[�[�#�.�.�.�		/�	/�	/�	/�	/�	/�	/�	/�	/�	/�	/�	/����	/�	/�	/�	/�	/�	/s�B
C�C�
Cc��|�d���t|j��5}|�d��|�d��|�|���t
|j��dz��|�|���d��ddd��dS#1swxYwYdSr�r�rcs  r�testSeekPostEndTwiceMultiStreamz+BZ2FileTest.testSeekPostEndTwiceMultiStreamms������A��&�&�&�
�T�]�
#�
#�	/�t��I�I�f�����I�I�f�������T�Y�Y�[�[�#�d�i�.�.�1�*<�=�=�=����T�Y�Y�[�[�#�.�.�.�		/�	/�	/�	/�	/�	/�	/�	/�	/�	/�	/�	/����	/�	/�	/�	/�	/�	/s�BC�C�Cc�\�|���t|j��5}|�d��|�|���d��|�|���|j��ddd��dS#1swxYwYdS)Nr�r�rQrr'r�rbr�r`r5rcs  r�testSeekPreStartzBZ2FileTest.testSeekPreStartus���������
�T�]�
#�
#�	5�t��I�I�d�O�O�O����T�Y�Y�[�[�!�,�,�,����T�Y�Y�[�[�$�)�4�4�4�	5�	5�	5�	5�	5�	5�	5�	5�	5�	5�	5�	5����	5�	5�	5�	5�	5�	5r�c�f�|�d���t|j��5}|�d��|�|���d��|�|���|jdz��ddd��dS#1swxYwYdS)Nr�rmr�rr�rcs  r�testSeekPreStartMultiStreamz'BZ2FileTest.testSeekPreStartMultiStream|s������A��&�&�&�
�T�]�
#�
#�	9�t��I�I�d�O�O�O����T�Y�Y�[�[�!�,�,�,����T�Y�Y�[�[�$�)�a�-�8�8�8�	9�	9�	9�	9�	9�	9�	9�	9�	9�	9�	9�	9����	9�	9�	9�	9�	9�	9s�A.B&�&B*�-B*c��|���t|jd��5}t|��}	|�|���|�����|���n#|���wxYw	ddd��n#1swxYwY|�t|j��dS)Nr)	rQrBr'rrb�filenor)rYr[)r*�rawfrds   r�
testFilenozBZ2FileTest.testFileno�s���������
�$�-��
&�
&�	�$��4�=�=�D�
�� � ���������
�
�>�>�>��
�
�������
�
���������	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�	
���*�d�k�2�2�2�2�2s(�B0�:B
�5B0�
B � B0�0B4�7B4c��tt|j����}	|�|�����|���|�|�����|���n#|���wxYw|�t|j��tt��d��}	|�	|�����|���n#|���wxYw|�t|j��t|j��}d�|_t|��}	|�	|�����|���n#|���wxYw|�t|j��dS)Nr�c��dS)NFrHrHrr�<lambda>z*BZ2FileTest.testSeekable.<locals>.<lambda>�s��u�r)
rrr6r��seekabler`r)rYr[�assertFalse)r*rd�srcs   r�testSeekablezBZ2FileTest.testSeekable�s����w�t�y�)�)�*�*��	��O�O�D�M�M�O�O�,�,�,��I�I�K�K�K��O�O�D�M�M�O�O�,�,�,��J�J�L�L�L�L��D�J�J�L�L�L�L�������*�d�m�4�4�4��w�y�y�#�&�&��	����T�]�]�_�_�-�-�-��J�J�L�L�L�L��D�J�J�L�L�L�L�������*�d�m�4�4�4��d�i� � ��$�}����s�|�|��	����T�]�]�_�_�-�-�-��J�J�L�L�L�L��D�J�J�L�L�L�L�������*�d�m�4�4�4�4�4s$�A"B�B0�0'D,�,E�'G
�
G#c���tt|j����}	|�|�����|���|�|�����|���n#|���wxYw|�t|j��tt��d��}	|�	|�����|���n#|���wxYw|�t|j��dS�Nr�)
rrr6r��readabler`r)rYr[r�rcs  r�testReadablezBZ2FileTest.testReadable�s���w�t�y�)�)�*�*��	��O�O�D�M�M�O�O�,�,�,��I�I�K�K�K��O�O�D�M�M�O�O�,�,�,��J�J�L�L�L�L��D�J�J�L�L�L�L�������*�d�m�4�4�4��w�y�y�#�&�&��	����T�]�]�_�_�-�-�-��J�J�L�L�L�L��D�J�J�L�L�L�L�������*�d�m�4�4�4�4�4��A"B�B0�0'D,�,Ec���tt|j����}	|�|�����|���|�|�����|���n#|���wxYw|�t|j��tt��d��}	|�	|�����|���n#|���wxYw|�t|j��dSr�)
rrr6r��writabler`r)rYr[r�rcs  r�testWritablezBZ2FileTest.testWritable�s
���w�t�y�)�)�*�*��	����T�]�]�_�_�-�-�-��I�I�K�K�K����T�]�]�_�_�-�-�-��J�J�L�L�L�L��D�J�J�L�L�L�L�������*�d�m�4�4�4��w�y�y�#�&�&��	��O�O�D�M�M�O�O�,�,�,��J�J�L�L�L�L��D�J�J�L�L�L�L�������*�d�m�4�4�4�4�4r�c�|�|���td��D]}t|j��}~�dS)Ni')rQ�rangerr')r*�i�os   r�testOpenDelzBZ2FileTest.testOpenDel�sG���������u���	�	�A���
�&�&�A���	�	rc�H�|�ttd��dS)Nz
/non/existent)rYrhrr.s r�testOpenNonexistentzBZ2FileTest.testOpenNonexistent�s �����'�7�O�<�<�<�<�<rc��d}t|jd��5}|�|��ddd��n#1swxYwYt|j��5}|���}ddd��n#1swxYwY|�|dg��t|j��5}t
|�����}ddd��n#1swxYwY|�|dg��dS)Ns,BZh91AY&SY�b�]� !�h3M<]��BCe�%trLsTest)rBr'rMrr�rbr�)r*rrPrd�lines�xliness      r�testReadlinesNoNewlinez"BZ2FileTest.testReadlinesNoNewline�s���z��
�$�-��
&�
&�	�!�
�G�G�D�M�M�M�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�
�T�]�
#�
#�	%�t��N�N�$�$�E�	%�	%�	%�	%�	%�	%�	%�	%�	%�	%�	%����	%�	%�	%�	%������	�*�*�*�
�T�]�
#�
#�	,�t��$�.�.�*�*�+�+�F�	,�	,�	,�	,�	,�	,�	,�	,�	,�	,�	,����	,�	,�	,�	,�����'��+�+�+�+�+s1�:�>�>�A:�:A>�A>�0"C�C"�%C"c��d}t|jd��5}|�d��ddd��n#1swxYwYt|jd��}|���	|5	ddd��n#1swxYwY|�d��n#t
$rYnwxYw	t|jd��5}ddzddd��n#1swxYwY|�d��dS#t$rYdSwxYw)NrLsxxxrz4__enter__ on a closed file didn't raise an exceptionr rz1/0 didn't raise an exception)rr'rMr)�failr[�ZeroDivisionError�r*rPs  r�testContextProtocolzBZ2FileTest.testContextProtocol�s�����
�T�]�D�
)�
)�	�Q�
�G�G�F�O�O�O�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	��D�M�4�(�(��	���	�	�	�	N��
�
��
�
�
�
�
�
�
�
�
�
�
����
�
�
�
�

�I�I�L�M�M�M�M���	�	�	��D�	����	7�����-�-�
���!���
�
�
�
�
�
�
�
�
�
�
����
�
�
�
�

�I�I�5�6�6�6�6�6��!�	�	�	��D�D�	���sy�:�>�>�/B �1A?�3B �?B�B �B�B � 
B-�,B-�1C:�C�C:�C�C:�C� C:�:
D�Dc�����ddz�d}t|jd��5���fd���fd�t|��D��}tj|��5	ddd��n#1swxYwYddd��dS#1swxYwYdS)N�1irVrLc�V��td��D]}������dS�Nrl)r�rM)r�rrPs ��r�compz'BZ2FileTest.testThreading.<locals>.comp�s3����q���"�"�A��G�G�D�M�M�M�M�"�"rc�:��g|]}tj������S))�target)�	threading�Thread)�.0r�r
s  �r�
<listcomp>z-BZ2FileTest.testThreading.<locals>.<listcomp>�s'���N�N�N��y�'�t�4�4�4�N�N�Nr)rr'r�r	�
start_threads)r*�nthreads�threadsr
rrPs   @@@r�
testThreadingzBZ2FileTest.testThreading�s1������e�|����
�T�]�D�
)�
)�	�Q�
"�
"�
"�
"�
"�
"�O�N�N�N�e�H�o�o�N�N�N�G�!�/��8�8�
�
��
�
�
�
�
�
�
�
�
�
�
����
�
�
�
�	�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�	�	s5�6A<�A$�A<�$A(	�(A<�+A(	�,A<�<B�Bc��|���t|jd��}|dz}t|j��5}|�|��|�t|��|jd|d���|�|���|j|d���ddd��n#1swxYwYt|j��5}|�	��|�t|��|jd��|�|�	��|jd��ddd��n#1swxYwYt|j��5}|�
��|�tt|��|�|�
��g��ddd��dS#1swxYwYdS)Nrr�r )
rQrrr3rr'r`rbr�r5r�r�rY�
StopIteration)r*�linelen�halflenrds    r�testMixedIterationAndReadsz&BZ2FileTest.testMixedIterationAndReadss~���������d�o�a�(�)�)���Q�,��
�T�]�
#�
#�	?�t��I�I�g�������T�$�Z�Z����);�G�H�H�)E�F�F�F����T�Y�Y�[�[�$�)�G�H�H�*=�>�>�>�	?�	?�	?�	?�	?�	?�	?�	?�	?�	?�	?����	?�	?�	?�	?��T�]�
#�
#�	B�t��M�M�O�O�O����T�$�Z�Z����);�<�<�<����T�]�]�_�_�d�o�a�.@�A�A�A�	B�	B�	B�	B�	B�	B�	B�	B�	B�	B�	B����	B�	B�	B�	B��T�]�
#�
#�	3�t��N�N�������m�T�4�8�8�8����T�^�^�-�-�r�2�2�2�	3�	3�	3�	3�	3�	3�	3�	3�	3�	3�	3�	3����	3�	3�	3�	3�	3�	3s9�BC�C�C�4A6E6�6E:�=E:�AH�H�Hc���d}d}t|jd��5}|�|��ddd��n#1swxYwYt|jd��5}|�|��ddd��n#1swxYwYt|j��5}|�|���||z��ddd��dS#1swxYwYdS)Ns�foofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoos�barbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarr�r�)rr'rMrbr`)r*�data1�data2rds    r�testMultiStreamOrderingz#BZ2FileTest.testMultiStreamOrderings�������
�T�]�C�
(�
(�	�D��J�J�u����	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�
�T�]�C�
(�
(�	�D��J�J�u����	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�
�T�]�
#�
#�	9�t����T�Y�Y�[�[�%�%�-�8�8�8�	9�	9�	9�	9�	9�	9�	9�	9�	9�	9�	9�	9����	9�	9�	9�	9�	9�	9s3�<�A�A�A>�>B�B�,C�C�Cc�f�|j}	|�d��}n%#t$r|�d��YnwxYwt	|d��5}|�|j��ddd��n#1swxYwYt	|d��5}|�|���|j��ddd��n#1swxYwYt	|d��5}|�|���|j��ddd��dS#1swxYwYdS)N�asciiz%Temporary file name needs to be ASCIIrLr)	r'�encode�UnicodeEncodeError�skipTestrrMr6rbr`)r*�str_filename�bytes_filenamerPs    r�testOpenBytesFilenamez!BZ2FileTest.testOpenBytesFilenames����}��	C�)�0�0��9�9�N�N��!�	C�	C�	C��M�M�A�B�B�B�B�B�	C����
�^�T�
*�
*�	�a�
�G�G�D�I����	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�
�^�T�
*�
*�	2�a����Q�V�V�X�X�t�y�1�1�1�	2�	2�	2�	2�	2�	2�	2�	2�	2�	2�	2����	2�	2�	2�	2��\�4�
(�
(�	2�A����Q�V�V�X�X�t�y�1�1�1�	2�	2�	2�	2�	2�	2�	2�	2�	2�	2�	2�	2����	2�	2�	2�	2�	2�	2sE��A�A�A;�;A?�A?�.C�C�C�+.D&�&D*�-D*c�h�tj|j��}t|d��5}|�|j��ddd��n#1swxYwYt|d��5}|�|���|j��ddd��dS#1swxYwYdS)NrLr)�pathlib�Pathr'rrMr6rbr`)r*r'rPs   r�testOpenPathLikeFilenamez$BZ2FileTest.testOpenPathLikeFilename*s���<��
�.�.��
�X�t�
$�
$�	��
�G�G�D�I����	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�
�X�t�
$�
$�	2�����Q�V�V�X�X�t�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�,.B'�'B+�.B+c��	t�dtd��zd���}|�t	|��t
j��tt|����}|�	|�
d��d��dtz}|�|j
j���|d��dS)N�g��>A�	r!r z)Excessive amount of data was decompressed)rrF�int�
assertLessrrrprqrrrbr`r�assertLessEqual�_buffer�rawr�)r*�bomb�decomp�
max_decomps    r�testDecompressLimitedz!BZ2FileTest.testDecompressLimited1s���;��|�|�E�C��H�H�,�A�|�>�>������D�	�	�<�#;�<�<�<������'�'��������Q����/�/�/��,�,�
����V�^�/�4�4�6�6�
�7�	9�	9�	9�	9�	9rc��t|j��5}t|��5}|�t|jt
����|�|���|j��ddd��n#1swxYwY|�	|j
��ddd��dS#1swxYwYdSr$)rr6rrYrZr`rarbr5r��closed�r*�biords   r�testReadBytesIOzBZ2FileTest.testReadBytesIO?s'��
�T�Y�
�
�	)�3�����
9���!�!�)�T�Y����@�@�@�� � ������d�i�8�8�8�
9�
9�
9�
9�
9�
9�
9�
9�
9�
9�
9����
9�
9�
9�
9�
���S�Z�(�(�(�		)�	)�	)�	)�	)�	)�	)�	)�	)�	)�	)�	)����	)�	)�	)�	)�	)�	)s5�B>�AB�B>�B	�B>�B	�B>�>C�Cc���t|j��5}t|��5}|���}|�t|��d��|�|j�|����|�	|�
��|j��ddd��n#1swxYwYddd��dS#1swxYwYdSr�)rr6rr�r�rrr�r5r�rbr`)r*r<rdr�s    r�testPeekBytesIOzBZ2FileTest.testPeekBytesIOFs<��
�T�Y�
�
�	9�3�����
9���	�	�����#�#�C��J�J��2�2�2�����	� 4� 4�U� ;� ;�<�<�<�� � ������d�i�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�	9s5�C�BC�7C�C	�C�
C	�C�C�"Cc��t��5}t|d��5}|�t|j��|�|j��ddd��n#1swxYwY|�t|�����|j��|�	|j
��ddd��dS#1swxYwYdSr�)rrrYrZrMr5rbr�getvaluer�r:r;s   r�testWriteBytesIOzBZ2FileTest.testWriteBytesIONs;��
�Y�Y�	)�#���c�"�"�
&�d��!�!�)�T�Z�8�8�8��
�
�4�9�%�%�%�
&�
&�
&�
&�
&�
&�
&�
&�
&�
&�
&����
&�
&�
&�
&�
���^�C�L�L�N�N�;�;�T�Y�G�G�G����S�Z�(�(�(�	)�	)�	)�	)�	)�	)�	)�	)�	)�	)�	)�	)����	)�	)�	)�	)�	)�	)s5�C�;A'�C�'A+	�+C�.A+	�/AC�C�Cc��t|j��5}t|��5}|�t|j��|�d��|�|���|jdd���ddd��n#1swxYwYddd��dS#1swxYwYdSr�)	rr6rrYrZr�rbr`r5r;s   r�testSeekForwardBytesIOz"BZ2FileTest.testSeekForwardBytesIOVs ��
�T�Y�
�
�	?�3�����
?���!�!�)�T�Y�7�7�7��	�	�#����� � ������d�i����o�>�>�>�
?�
?�
?�
?�
?�
?�
?�
?�
?�
?�
?����
?�
?�
?�
?�	?�	?�	?�	?�	?�	?�	?�	?�	?�	?�	?�	?����	?�	?�	?�	?�	?�	?s5�B4�A+B�B4�B 	� B4�#B 	�$B4�4B8�;B8c�n�t|j��5}t|��5}|�d��|�dd��|�|���|jdd���ddd��n#1swxYwYddd��dS#1swxYwYdSr�)rr6rr`r�rbr5r;s   r�testSeekBackwardsBytesIOz$BZ2FileTest.testSeekBackwardsBytesIO]s@��
�T�Y�
�
�	C�3�����
C���	�	�#�����	�	�$��"�"�"�� � ������d�i����.A�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�B*�A!B�B*�B	�B*�B	�B*�*B.�1B.c���|jdd�}tt|����5}|�t|j��ddd��n#1swxYwYtt|����5}|�|�t|j����|j��|�t|jd��ddd��n#1swxYwYtd��D]_}tt|d|�����5}|�t|jd��ddd��n#1swxYwY�`dS)N���r �)
r6rrrY�EOFErrorr`rbrrr5r�)r*�	truncatedrPr�s    r�test_read_truncatedzBZ2FileTest.test_read_truncatedds����I�d�s�d�O�	�
�W�Y�'�'�
(�
(�	0�A����h���/�/�/�	0�	0�	0�	0�	0�	0�	0�	0�	0�	0�	0����	0�	0�	0�	0�
�W�Y�'�'�
(�
(�	3�A����Q�V�V�C��	�N�N�3�3�T�Y�?�?�?����h����2�2�2�	3�	3�	3�	3�	3�	3�	3�	3�	3�	3�	3����	3�	3�	3�	3��r���	7�	7�A����2�A�2��/�/�0�0�
7�A��!�!�(�A�F�A�6�6�6�
7�
7�
7�
7�
7�
7�
7�
7�
7�
7�
7����
7�
7�
7�
7��	7�	7s6�!A�A� A�A"C.�.C2�5C2�."E�E 	�#E 	c�n�tjdgd���}t|��|jz}tt	��d��5}|�|�|��|��|�|���|��ddd��dS#1swxYwYdS)N�Q)r r�rX�rlr�)�arrayrr�itemsizerrrbrMr�)r*�q�LENGTHrPs    r�test_issue44439zBZ2FileTest.test_issue44439qs����K��_�_�_�-�-���Q���!�*�$��
�W�Y�Y��
$�
$�	/�����Q�W�W�Q�Z�Z��0�0�0����Q�V�V�X�X�v�.�.�.�	/�	/�	/�	/�	/�	/�	/�	/�	/�	/�	/�	/����	/�	/�	/�	/�	/�	/s�AB*�*B.�1B.N)r r)Ar0r1r2rQr]rerirnrtrwryr{r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rrr	�requires_working_threadingrrr r(r,r8r=r?rBrDrFrLrTrHrrrJrJZs������������
	B�	B�	B�5�5�5�2�2�2�
9�9�9�3�3�3�5�5�5�
9�9�9�
0�0�0�	.�	.�	.�	2�	2�	2�>�>�>�
5�5�5�
4�
4�
4�8�8�8�8�8�8�@�@�@�D�D�D�@�@�@�
D�D�D�
6�6�6�B�B�B�
B�
B�
B�1�1�1�B�B�B�@�@�@�F�F�F�;�;�;�;�;�;�?�?�?�K�K�K�J�J�J�C�C�C�/�/�/�/�/�/�/�/�/�/�/�/�5�5�5�9�9�9�3�3�3�5�5�5�45�5�5�"5�5�5�"���=�=�=�
,�
,�
,�7�7�7�*1��0�2�2�
�
�3�2�
�3�3�3�"	9�	9�	9�2�2�2�2�2�2�	9�	9�	9�)�)�)�9�9�9�)�)�)�?�?�?�C�C�C�7�7�7�/�/�/�/�/rrJc�r�eZdZd�Zd�Zd�Zejee	dzd���d�����Z
d�Zd	S)
�BZ2CompressorTestc��t��}|�t|j��|�|j��}||���z
}|�t|��|j��dSr$)r
rYrZrFr5�flushrbr�r*�bz2crs   r�testCompresszBZ2CompressorTest.testCompress{sn���������)�T�]�3�3�3��}�}�T�Y�'�'����
�
����������-�-�t�y�9�9�9�9�9rc��t��}|�d��}||���z
}|�||j��dS�Nr)r
rFrYrbr7rZs   r�testCompressEmptyStringz)BZ2CompressorTest.testCompressEmptyString�sL�������}�}�S�!�!����
�
���������t��/�/�/�/�/rc��t��}d}d}	|j|dz|dzdz�}|sn||�|��z
}|dz
}�9||���z
}|�t|��|j��dS)NrrTrVr )r
r5rFrYrbr)r*r[r�rr�s     r�testCompressChunks10z&BZ2CompressorTest.testCompressChunks10�s�������
����	��)�A�b�D�!�A�#�r��M�*�C��
���D�M�M�#�&�&�&�D�
��F�A�	�	
��
�
����������-�-�t�y�9�9�9�9�9rr�r���size�memusec��t��}d|z}	|�|��}||���z
}d}n#d}wxYwt�|��}	|�t
|��|��|�t
|�d����d��d}dS#d}wxYw)N�xr)r
rFrYrrrbrr�strip)r*rcr[r�
compresseds     r�testCompress4Gz BZ2CompressorTest.testCompress4G�s��������d�{��	����t�,�,�J��$�*�*�,�,�&�J��D�D��4�D�K�K�K�K��~�~�j�)�)��	����S��Y�Y��-�-�-����S����D�!1�!1�2�2�A�6�6�6��D�D�D��4�D�K�K�K�Ks�,A�A�&AC�Cc���ttjdz��D]U}|�t��5tjt
��|��ddd��n#1swxYwY�VdS�Nr )r��pickle�HIGHEST_PROTOCOLrYrZ�dumpsr
�r*�protos  r�
testPicklezBZ2CompressorTest.testPickle�s����6�2�Q�6�7�7�	5�	5�E��"�"�9�-�-�
5�
5���]�_�_�e�4�4�4�
5�
5�
5�
5�
5�
5�
5�
5�
5�
5�
5����
5�
5�
5�
5��	5�	5��"A'�'A+	�.A+	N)r0r1r2r\r_rar�skip_if_pgo_taskrrrirqrHrrrWrWzs�������:�:�:�0�0�0�:�:�:�
���Z�S�3�Y�q�)�)�)���*�)���� 5�5�5�5�5rrWc��eZdZd�Zd�Zd�Zd�Zd�Zej	e
edzd���d	�����Zd
�Z
d�Zd�Zd
�Zd�Zd�Zejd���ZdS)�BZ2DecompressorTestc�H�|�ttd��dS)N�*)rYrZrr.s r�test_Constructorz$BZ2DecompressorTest.test_Constructor�s �����)�_�b�9�9�9�9�9rc���t��}|�t|j��|�|j��}|�||j��dSr$)rrYrZrr6rbr5�r*�bz2drs   r�testDecompressz"BZ2DecompressorTest.testDecompress�sV��� � �����)�T�_�5�5�5����t�y�)�)������t�y�)�)�)�)�)rc���t��}d}d}	|j|dz|dzdz�}|sn||�|��z
}|dz
}�9|�||j��dS)NrrTrVr )rr6rrbr5)r*r{rr�r�s     r�testDecompressChunks10z*BZ2DecompressorTest.testDecompressChunks10�s���� � ����
��	��)�A�b�D�!�A�#�r��M�*�C��
���D�O�O�C�(�(�(�D�
��F�A�	�	
����t�y�)�)�)�)�)rc���t��}d}|�|j|z��}|�||j��|�|j|��dS)Nsthis is unused data)rrr6rbr5�unused_data)r*r{r�rs    r�testDecompressUnusedDataz,BZ2DecompressorTest.testDecompressUnusedData�sa��� � ��,�����t�y��4�5�5������t�y�)�)�)�����)�;�7�7�7�7�7rc���t��}|�|j��}|�t|jd��|�t|jd��dS)Nsanythingr)rrr6rYrJrzs   r�testEOFErrorz BZ2DecompressorTest.testEOFError�sZ��� � �����t�y�)�)�����(�D�O�[�A�A�A����(�D�O�S�9�9�9�9�9rr�gffffff
@rbc��d}tj|��}	|||zdzz}t�|��}t	��}|�|��}|�||k��d}d}d}dS#d}d}d}wxYw)Ni�r )�random�	randbytesrrFrrr�)r*rc�	blocksize�blockrrhr{�decompresseds        r�testDecompress4Gz$BZ2DecompressorTest.testDecompress4G�s���%�	�� ��+�+��		 ��D�I�-��1�2�D����d�+�+�J�"�$�$�D��?�?�:�6�6�L��O�O�L�D�0�1�1�1��D��J��L�L�L���D��J��L����s�A!B�B	c���ttjdz��D]U}|�t��5tjt
��|��ddd��n#1swxYwY�VdSrk)r�rlrmrYrZrnrros  rrqzBZ2DecompressorTest.testPickle�s����6�2�Q�6�7�7�	7�	7�E��"�"�9�-�-�
7�
7���_�.�.��6�6�6�
7�
7�
7�
7�
7�
7�
7�
7�
7�
7�
7����
7�
7�
7�
7��	7�	7rrc�>�t��}d}g}t|j��dz
}|�|�|jd|�|�����|�|j��|�t|d��|��|�|�d|�����|�|j��|�t|d��|��|�|�|j|d�|�����|�t|d��|��|j	sZ|�|�d|�����|�t|d��|��|j	�Zd�
|��}|�||j��|�|jd��dS)Nr��@��
max_length���r)
rrrrG�appendrr��needs_inputrbr2�eofr4r;r�)r*�bzdr��out�len_s     r�testDecompressorChunksMaxsizez1BZ2DecompressorTest.testDecompressorChunksMaxsize�s��������
����4�=�!�!�B�&���
�
�3�>�>�$�-����"6�-7�"�9�9�	:�	:�	:������)�)�)�����S��W���z�2�2�2�	�
�
�3�>�>�#�*�>�=�=�>�>�>������)�)�)�����S��W���z�2�2�2�	�
�
�3�>�>�$�-����"6�-7�"�9�9�	:�	:�	:����S��R��\�\�:�6�6�6��'�	;��J�J�s�~�~�c�j�~�A�A�B�B�B�� � ��S��W���z�:�:�:��'�	;��h�h�s�m�m������d�m�,�,�,������#�.�.�.�.�.rc��t��}g}|�|�|jdd�d���d��|�|�dd����|�|�|jdd�d����|�|�|jdd�����|�d�|��|j��dS)Nr�rr�rr��i��rrbrr6r�r4r5�r*r�r�s   r�test_decompressor_inputbuf_1z0BZ2DecompressorTest.test_decompressor_inputbuf_1s���������	
�������	�$�3�$��34�(�6�6�7:�	<�	<�	<�
	�
�
�3�>�>�#�q�)�)�*�*�*�	�
�
�3�>�>�$�)�C��G�"4�b�9�9�:�:�:�	�
�
�3�>�>�$�)�C�D�D�/�2�2�3�3�3�������#����	�2�2�2�2�2rc��t��}g}|�|�|jdd�d���d��|�|�d����|�|�|jdd�d����|�|�|jdd�d����|�|�|jdd�����|�d�|��|j��dS)N��rr�rir��,r�r�s   r�test_decompressor_inputbuf_2z0BZ2DecompressorTest.test_decompressor_inputbuf_2s��������	
�������	�$�3�$��34�(�6�6�7:�	<�	<�	<��
�
�3�>�>�#�&�&�'�'�'�	�
�
�3�>�>�$�)�C��G�"4�a�8�8�9�9�9�	�
�
�3�>�>�$�)�C��G�"4�a�8�8�9�9�9�	�
�
�3�>�>�$�)�C�D�D�/�2�2�3�3�3�������#����	�2�2�2�2�2rc���t��}g}|�|�|jdd�d����|�|�|jdd�d����|�|�|jdd�����|�d�|��|j��dS)Nr�rlr�r)rr�rr6rbr4r5r�s   r�test_decompressor_inputbuf_3z0BZ2DecompressorTest.test_decompressor_inputbuf_30s���������	�
�
�3�>�>�$�)�D�S�D�/�1�5�5�6�6�6�	�
�
�3�>�>�$�)�C��G�"4�a�8�8�9�9�9�	�
�
�3�>�>�$�)�C�D�D�/�2�2�3�3�3�������#����	�2�2�2�2�2rc���t��}|�t|j|jdz��|�t|j|jdz��dS)N�)rrY�	Exceptionrr8)r*r�s  r�test_failurez BZ2DecompressorTest.test_failure@sU���������)�S�^�T�]�R�5G�H�H�H����)�S�^�T�]�R�5G�H�H�H�H�Hrc��tjtd��}t��}|��}t	d��D]}|����|�|��|z
dd���dS)N�gettotalrefcountr�rrV)�delta)r�
get_attribute�sysrr��__init__�assertAlmostEqual)r*r�r��refs_beforer�s     r�test_refleaks_in___init__z-BZ2DecompressorTest.test_refleaks_in___init__Fs���"�0��6H�I�I������&�&�(�(���s���	�	�A��L�L�N�N�N�N����/�/�1�1�K�?��"��M�M�M�M�MrN)r0r1r2rxr|r~r�r�rrsrrr�rqr�r�r�r�r��
refcount_testr�rHrrruru�s������:�:�:�*�*�*�
*�
*�
*�8�8�8�:�:�:�
���Z�S�3�Y�s�+�+�+�
 �
 �,�+���
 �7�7�7�
/�/�/�>3�3�3�,3�3�3�*3�3�3� I�I�I�
��N�N���N�N�Nrruc�J�eZdZd�Zd�Zd�Zd�Zd�Zd�Zd�Z	d�Z
d	�Zd
�ZdS)�CompressDecompressTestc��t�|j��}|�t	|��|j��dSr$)rrFr5rbr)r*rs  rr\z#CompressDecompressTest.testCompressQs;���|�|�D�I�&�&�������-�-�t�y�9�9�9�9�9rc�p�t�d��}|�||j��dSr^)rrFrbr7�r*rs  rr_z.CompressDecompressTest.testCompressEmptyStringUs1���|�|�C� � ������t��/�/�/�/�/rc�z�t�|j��}|�||j��dSr$�rrr6rbr5r�s  rr|z%CompressDecompressTest.testDecompressYs3���~�~�d�i�(�(������t�y�)�)�)�)�)rc�f�t�d��}|�|d��dSr^)rrrbr�s  r�testDecompressEmptyz*CompressDecompressTest.testDecompressEmpty]s/���~�~�c�"�"������s�#�#�#�#�#rc�p�t�|j��}|�|d��dSr^)rrr7rbr�s  r�testDecompressToEmptyStringz2CompressDecompressTest.testDecompressToEmptyStringas1���~�~�d�o�.�.������s�#�#�#�#�#rc�l�|�ttj|jdd���dS)NrH)rYr[rrr6r.s r�testDecompressIncompletez/CompressDecompressTest.testDecompressIncompletees,�����*�c�n�d�i����o�F�F�F�F�Frc�\�|�ttj|j��dSr$)rYrhrrr8r.s r�testDecompressBadDataz,CompressDecompressTest.testDecompressBadDatahs$�����'�3�>�4�=�A�A�A�A�Arc��t�|jdz��}|�||jdz��dSrr�r�s  r�testDecompressMultiStreamz0CompressDecompressTest.testDecompressMultiStreamks;���~�~�d�i�!�m�,�,������t�y�1�}�-�-�-�-�-rc��t�|j|jz��}|�||j��dSr$�rrr6r8rbr5r�s  r�testDecompressTrailingJunkz1CompressDecompressTest.testDecompressTrailingJunkos:���~�~�d�i�$�-�7�8�8������t�y�)�)�)�)�)rc��t�|jdz|jz��}|�||jdz��dSrr�r�s  r�%testDecompressMultiStreamTrailingJunkz<CompressDecompressTest.testDecompressMultiStreamTrailingJunkssB���~�~�d�i�!�m�d�m�;�<�<������t�y�1�}�-�-�-�-�-rN)
r0r1r2r\r_r|r�r�r�r�r�r�r�rHrrr�r�Ps�������:�:�:�0�0�0�*�*�*�$�$�$�$�$�$�G�G�G�B�B�B�.�.�.�*�*�*�.�.�.�.�.rr�c�L�eZdZ	d�Zd�Zd�Zd�Zd�Zd�Zd�Z	d�Z
d	�Zd
�ZdS)�OpenTestc�$�tj|i|��Sr$)rrB)r*�args�kwargss   rrBz
OpenTest.open{s���x��(��(�(�(rc���dD�]�}|dkrt|j��|�|j|��5}|�|j��ddd��n#1swxYwYt|jd��5}t|�����}|�||j��ddd��n#1swxYwY|�|jd��5}|�|���|j��ddd��n#1swxYwY|�|jd��5}|�|j��ddd��n#1swxYwYt|jd��5}t|�����}|�||jdz��ddd��n#1swxYwY���dS)N)rL�xbr�r�abr��r
r'rBrMr5rr`rb�r*�moderP�	file_datas    r�test_binary_modeszOpenTest.test_binary_modes~s��� �	;�	;�D��t�|�|��t�}�%�%�%����4�=�$�/�/�
#�1�����	�"�"�"�
#�
#�
#�
#�
#�
#�
#�
#�
#�
#�
#����
#�
#�
#�
#��d�m�T�*�*�
7�a�*�1�6�6�8�8�4�4�	�� � ��D�I�6�6�6�
7�
7�
7�
7�
7�
7�
7�
7�
7�
7�
7����
7�
7�
7�
7����4�=�$�/�/�
6�1�� � ������4�9�5�5�5�
6�
6�
6�
6�
6�
6�
6�
6�
6�
6�
6����
6�
6�
6�
6����4�=�$�/�/�
#�1�����	�"�"�"�
#�
#�
#�
#�
#�
#�
#�
#�
#�
#�
#����
#�
#�
#�
#��d�m�T�*�*�
;�a�*�1�6�6�8�8�4�4�	�� � ��D�I��M�:�:�:�
;�
;�
;�
;�
;�
;�
;�
;�
;�
;�
;����
;�
;�
;�
;��	;�	;�Z�A"�"A&	�)A&	�=C�C	�C	�1.D+�+D/	�2D/	�E8�8E<	�?E<	�AG$�$G(	�+G(	c���dD�]�}|dkrt|j��|�|j|��5}|�|j��ddd��n#1swxYwYt|jd��5}t|�����}|�||j��ddd��n#1swxYwY|�|jd��5}|�|���|j��ddd��n#1swxYwY|�|jd��5}|�|j��ddd��n#1swxYwYt|jd��5}t|�����}|�||jdz��ddd��n#1swxYwY���dS)N)r��xr�rrWr�r�r�r�s    r�test_implicit_binary_modesz#OpenTest.test_implicit_binary_modes�s����	;�	;�D��s�{�{��t�}�%�%�%����4�=�$�/�/�
#�1�����	�"�"�"�
#�
#�
#�
#�
#�
#�
#�
#�
#�
#�
#����
#�
#�
#�
#��d�m�T�*�*�
7�a�*�1�6�6�8�8�4�4�	�� � ��D�I�6�6�6�
7�
7�
7�
7�
7�
7�
7�
7�
7�
7�
7����
7�
7�
7�
7����4�=�#�.�.�
6�!�� � ������4�9�5�5�5�
6�
6�
6�
6�
6�
6�
6�
6�
6�
6�
6����
6�
6�
6�
6����4�=�#�.�.�
#�!�����	�"�"�"�
#�
#�
#�
#�
#�
#�
#�
#�
#�
#�
#����
#�
#�
#�
#��d�m�T�*�*�
;�a�*�1�6�6�8�8�4�4�	�� � ��D�I��M�:�:�:�
;�
;�
;�
;�
;�
;�
;�
;�
;�
;�
;����
;�
;�
;�
;��	;�	;r�c��|j�d��}|�dtj��}dD�]�}|dkrt|j��|�|j|d���5}|�|��ddd��n#1swxYwYt|jd��5}t|�
�����d��}|�||��ddd��n#1swxYwY|�|jdd���5}|�|�
��|��ddd��n#1swxYwY|�|jdd���5}|�|��ddd��n#1swxYwYt|jd��5}t|�
�����d��}|�||d	z��ddd��n#1swxYwY��dS)
Nr"�
)�wt�xtr���encodingr�rt�atr�)r5�decode�replacer(�linesepr
r'rBrMrr`rb)r*r�text_native_eolr�rPr�s      r�test_text_modeszOpenTest.test_text_modes�s4���y����(�(���,�,�t�R�Z�8�8�� �	A�	A�D��t�|�|��t�}�%�%�%����4�=�$���A�A�
�Q�����
�
�
�
�
�
�
�
�
�
�
�
�
�
����
�
�
�
��d�m�T�*�*�
=�a�*�1�6�6�8�8�4�4�;�;�G�D�D�	�� � ��O�<�<�<�
=�
=�
=�
=�
=�
=�
=�
=�
=�
=�
=����
=�
=�
=�
=����4�=�$���A�A�
1�Q�� � ������4�0�0�0�
1�
1�
1�
1�
1�
1�
1�
1�
1�
1�
1����
1�
1�
1�
1����4�=�$���A�A�
�Q�����
�
�
�
�
�
�
�
�
�
�
�
�
�
����
�
�
�
��d�m�T�*�*�
A�a�*�1�6�6�8�8�4�4�;�;�G�D�D�	�� � ��O�a�,?�@�@�@�
A�
A�
A�
A�
A�
A�
A�
A�
A�
A�
A����
A�
A�
A�
A��	A�	As\�7B�B	� B	�9AD�D	�D	�8)E-�-E1	�4E1	�F7�7F;	�>F;	�AH1�1H5	�8H5	c��dD]�}t|j��d|vrdnd}|�|j||���5}	ddd��n#1swxYwY|�t��5|�|j|��5}	ddd��n#1swxYwYddd��n#1swxYwY��dS)N)r�r�r��t�utf-8r�)r
r'rBrY�FileExistsError)r*r�r�rPs    r�test_x_modezOpenTest.test_x_mode�s���%�	�	�D��4�=�!�!�!�"%��+�+�w�w�4�H����4�=�$���B�B�
�a��
�
�
�
�
�
�
�
�
�
�
����
�
�
�
��"�"�?�3�3�
�
��Y�Y�t�}�d�3�3��q��������������������
�
�
�
�
�
�
�
�
�
�
����
�
�
�
��	�	sG�A�A	�A	�1B2�
B�B2�B�B2�"B�#B2�2B6	�9B6	c���|�t|j��d��5}|�|���|j��ddd��n#1swxYwY|�t|j��d��5}|�|���|j��ddd��n#1swxYwY|j�d��}|�t|j��dd���5}|�|���|��ddd��dS#1swxYwYdS)NrWrr"r�r�r�)rBrr6rbr`r5r�)r*rPrs   r�test_fileobjzOpenTest.test_fileobj�s���
�Y�Y�w�t�y�)�)�3�
/�
/�	2�1����Q�V�V�X�X�t�y�1�1�1�	2�	2�	2�	2�	2�	2�	2�	2�	2�	2�	2����	2�	2�	2�	2�
�Y�Y�w�t�y�)�)�4�
0�
0�	2�A����Q�V�V�X�X�t�y�1�1�1�	2�	2�	2�	2�	2�	2�	2�	2�	2�	2�	2����	2�	2�	2�	2��y����(�(��
�Y�Y�w�t�y�)�)�4�'�Y�
B�
B�	-�a����Q�V�V�X�X�t�,�,�,�	-�	-�	-�	-�	-�	-�	-�	-�	-�	-�	-�	-����	-�	-�	-�	-�	-�	-s5�.A#�#A'�*A'�.C�C�C�)E�E�Ec��|�t|j|jd��|�t|j|jd��|�t|j|jdd���|�t|j|jdd���|�t|j|jdd�	��dS)
N�wbt�xbtrr�r��ignore)�errorsr�)�newline)rYr[rBr'r.s r�test_bad_paramszOpenTest.test_bad_params�s������*��)�T�]�E�	;�	;�	;����*��)�T�]�E�	;�	;�	;����*��)�T�]�D�7�	�	L�	L�	L����*��)�T�]�D��	�	K�	K�	K����*��)�T�]�D�$�	�	H�	H�	H�	H�	Hrc��|j�d��}|�dtj��}|�|jdd���5}|�|��ddd��n#1swxYwYt|jd��5}t|�	�����d��}|�
||��ddd��n#1swxYwY|�|jdd���5}|�
|�	��|��ddd��dS#1swxYwYdS)Nr"r�r�z	utf-16-ler�rr�)r5r�r�r(r�rBr'rMrr`rb)r*rr�rPr�s     r�
test_encodingzOpenTest.test_encoding�s����y����(�(���,�,�t�R�Z�8�8��
�Y�Y�t�}�d�[�Y�
A�
A�	�Q�
�G�G�D�M�M�M�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�
�$�-��
&�
&�	9�!�&�q�v�v�x�x�0�0�7�7��D�D�I����Y��8�8�8�	9�	9�	9�	9�	9�	9�	9�	9�	9�	9�	9����	9�	9�	9�	9��Y�Y�t�}�d�[�Y�
A�
A�	-�Q����Q�V�V�X�X�t�,�,�,�	-�	-�	-�	-�	-�	-�	-�	-�	-�	-�	-�	-����	-�	-�	-�	-�	-�	-s7�A:�:A>�A>�AC1�1C5�8C5�)E�E�Ec�T�|�|jd��5}|�d��ddd��n#1swxYwY|�|jddd���5}|�|���d��ddd��dS#1swxYwYdS)NrLsfoo�barr�r"r�)r�r��foobar)rBr'rMrbr`rs  r�test_encoding_error_handlerz$OpenTest.test_encoding_error_handler�s��
�Y�Y�t�}�d�
+�
+�	#�q�
�G�G�M�"�"�"�	#�	#�	#�	#�	#�	#�	#�	#�	#�	#�	#����	#�	#�	#�	#�
�Y�Y�t�}�d�W�X�Y�
N�
N�	1�����Q�V�V�X�X�x�0�0�0�	1�	1�	1�	1�	1�	1�	1�	1�	1�	1�	1�	1����	1�	1�	1�	1�	1�	1s!�>�A�A�')B�B!�$B!c��|j�d��}|�|jddd���5}|�|��ddd��n#1swxYwY|�|jddd���5}|�|���|g��ddd��dS#1swxYwYdS)Nr"r�r�r�)r�r�r��
)r5r�rBr'rMrbr�)r*rrPs   r�test_newlinezOpenTest.test_newline�s1���y����(�(��
�Y�Y�t�}�d�W�d�Y�
K�
K�	�q�
�G�G�D�M�M�M�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�
�Y�Y�t�}�d�W�d�Y�
K�
K�	4�q����Q�[�[�]�]�T�F�3�3�3�	4�	4�	4�	4�	4�	4�	4�	4�	4�	4�	4�	4����	4�	4�	4�	4�	4�	4s#�A�A�"A�*B;�;B?�B?N)
r0r1r2rBr�r�r�r�r�r�r�r�r�rHrrr�r�xs��������)�)�)�;�;�;�";�;�;�$A�A�A�&���-�-�-�H�H�H�
-�
-�
-�1�1�1�4�4�4�4�4rr�c�,�tj��dSr$)r�
reap_childrenrHrr�tearDownModuler��s��������r�__main__)*�testr�test.supportrrrP�unittest�iorrr(rlr<r%r*r�rrrrr	�test.support.os_helperr
rpr��
import_modulerrr
rrr�TestCaserrJrWrur�r�r�r0�mainrHrr�<module>rs���������(�(�(�(�(�(�(�(���������+�+�+�+�+�+�+�+�	�	�	�	�
�
�
�
�������������
�
�
�
�
�
�
�
���������&�&�&�&�&�&�)�)�)�)�)�)�)�)�)�)�)�)�����
�
�
�
�"�m�!�%�(�(��7�7�7�7�7�7�7�7�7�7���$�$�$�1�1�1�1�1�x� �1�1�1�h]/�]/�]/�]/�]/�(�]/�]/�]/�@05�05�05�05�05��05�05�05�f`N�`N�`N�`N�`N�(�`N�`N�`N�F%.�%.�%.�%.�%.�X�%.�%.�%.�Pv4�v4�v4�v4�v4�x�v4�v4�v4�r����z����H�M�O�O�O�O�O��r