HEX
Server: Apache
System: Linux bd12.noc223.com 4.18.0-553.121.1.lve.el8.x86_64 #1 SMP Thu Apr 30 16:40:41 UTC 2026 x86_64
User: handcraf (1693)
PHP: 8.1.28
Disabled: NONE
Upload Files
File: //opt/alt/python312/lib64/python3.12/test/__pycache__/test_tempfile.cpython-312.opt-2.pyc
�

~h�en'���ddlZddlZddlZddlZddlZddlZddlZddlZddlZddl	Z	ddl
Z
ddlZddlZddl
Z
ddlmZddlZddlmZddlmZddlmZddlmZej,ej.k7Zeed�Zej6j9d�rd	Znd
ZGd�dej<�ZGd
�dej<�Z Gd�de �Z!Gd�de �Z"Gd�de �Z#Gd�de �Z$Gd�de �Z%ejLd��Z'd�Z(Gd�d�Z)Gd�de)e �Z*Gd�d e �Z+Gd!�d"e �Z,Gd#�d$e �Z-Gd%�d&e)e �Z.Gd'�d(e �Z/Gd)�d*e �Z0Gd+�d,e �Z1ejdejfurGd-�d.e �Z4Gd/�d0�Z5Gd1�d2e �Z6e7d3k(rejp�yy)4�N)�mock)�support)�	os_helper)�
script_helper)�warnings_helper�spawnl�openbsd�0�dc�*�eZdZd�Zd�Zd�Zd�Zd�Zy)�TestLowLevelInternalsc��|jttjd��|jttjd��|jttjd��y�N��)�assertIs�str�tempfile�_infer_return_type�bytes��selfs �9/opt/alt/python312/lib64/python3.12/test/test_tempfile.py�test_infer_return_type_singlesz4TestLowLevelInternals.test_infer_return_type_singles(sM���
�
�c�8�6�6�r�:�;��
�
�e�X�8�8��=�>��
�
�c�8�6�6�t�<�=rc��|jttjdd��|jttjdd��|jt�5tjdd�ddd�|jt�5tjdd�ddd�y#1swY�>xYw#1swYyxYwr�rrrrr�assertRaises�	TypeErrorrs r� test_infer_return_type_multiplesz6TestLowLevelInternals.test_infer_return_type_multiples-s����
�
�c�8�6�6�r�2�>�?��
�
�e�X�8�8��c�B�C�
�
�
�y�
)�	1��'�'��C�0�	1�
�
�
�y�
)�	1��'�'��R�0�	1�	1�	1�	1��	1�	1�s�*B>�C
�>C�
Cc��|jttjdd��|jttjdd��|jttjdd��|jttjdd��|jttjdd��|jt�5tjddd�ddd�|jt�5tjddd�ddd�y#1swY�?xYw#1swYyxYwrrrs r�)test_infer_return_type_multiples_and_nonez?TestLowLevelInternals.test_infer_return_type_multiples_and_none5s����
�
�c�8�6�6�t�R�@�A��
�
�c�8�6�6�r�4�@�A��
�
�c�8�6�6�t�T�B�C��
�
�e�X�8�8��d�C�D��
�
�e�X�8�8��s�C�D�
�
�
�y�
)�	7��'�'��D�#�6�	7�
�
�
�y�
)�	7��'�'��T�2�6�	7�	7�	7�	7��	7�	7�s�(D>�E
�>E�
Ec�|�|jttjt	j
d���y)N�/)rrrr�pathlib�Pathrs r�test_infer_return_type_pathlibz4TestLowLevelInternals.test_infer_return_type_pathlib@s$���
�
�c�8�6�6�w�|�|�C�7H�I�Jrc	�l�Gd�d�}|jttj|d���|jttj|d���|jttjd|d���|jttjd|d���|jttjd|d���|jttjd|d���|jt�5tjd|d��ddd�|jt�5tjd|d��ddd�y#1swY�DxYw#1swYyxYw)Nc��eZdZd�Zd�Zy)�CTestLowLevelInternals.test_infer_return_type_pathlike.<locals>.Pathc��||_y�N��path�rr-s  r�__init__zLTestLowLevelInternals.test_infer_return_type_pathlike.<locals>.Path.__init__Es	�� ��	rc��|jSr+r,rs r�
__fspath__zNTestLowLevelInternals.test_infer_return_type_pathlike.<locals>.Path.__fspath__Hs���y�y� rN)�__name__�
__module__�__qualname__r/r1�rrr%r)Ds��
!�
!rr%r#�/rrr)rr%s  r�test_infer_return_type_pathlikez5TestLowLevelInternals.test_infer_return_type_pathlikeCs7��	!�	!�	
�
�
�c�8�6�6�t�C�y�A�B��
�
�e�X�8�8��d��D�E��
�
�c�8�6�6�r�4��8�D�E��
�
�e�X�8�8��d�3�i�H�I��
�
�e�X�8�8��t�C�y�I�J��
�
�c�8�6�6�t�T�"�X�F�G�
�
�
�y�
)�	7��'�'��D��I�6�	7�
�
�
�y�
)�	7��'�'��T�"�X�6�	7�	7�	7�	7��	7�	7�s�>F�8F*�F'�*F3N)r2r3r4rrr!r&r7r5rrr
r
's��>�
1�	7�K�7rr
c�`�eZdZejd�Zejd�Zd�Zd�Zy)�BaseTestCasez^[a-z0-9_-]{8}$s^[a-z0-9_-]{8}$c��|jtj��tjdt
dt��y)N�ignore�mktemp)�category�message�module)�enterContextr�check_warnings�warnings�filterwarnings�RuntimeWarningr2rs r�setUpzBaseTestCase.setUp^s1�����/�8�8�:�;�����>�(0��	Crc�t�tjj|�\}}|dt|�}|t|�t|�z
d}|�Q|j	t|�t|�tust|tj�rtntd�|�7|j	t|�t|�turtntd�|�7|j	t|�t|�turtntd�|||fdk(r |j	t|�td�|jtjj|�tjj|�d|�d|���|j||d|�d|���|j||d|�d|���|t|�t|�t|�z
}t|t�r|jn|j}	|j|	j|�d|�d	|	j ���y)
Nzunexpected return type�NNNzdefault return type must be strzfile z not in directory z does not begin with z does not end with zrandom characters z do not match )�osr-�split�lenr�typer�
isinstance�PathLiker�assertEqual�abspath�	str_check�b_check�
assertTrue�match�pattern)
r�name�dir�pre�suf�ndir�nbase�npre�nsuf�checks
          r�	nameCheckzBaseTestCase.nameCheckcs������
�
�d�+�
��u��i�s�3�x� ���c�%�j��S��)�*�+���?��M�M��T�
���9��#�z�#�r�{�{�'C���(�
��?��M�M�$�t�*�T�#�Y�#�-=�c�5�2�
4��?��M�M�$�t�*�T�#�Y�#�-=�c�5�2�
4���c�?�0�0��M�M�$�t�*�c�+L�M�	
���������.�������0D�:>��D�	F�����s�=B�C�H�	J�����s�;@�#�F�	H��c�#�h�s�5�z�#�c�(�2�3��",�U�C�"8����d�l�l��������E�*� �%�-�-�1�	2rN)	r2r3r4�re�compilerPrQrEr^r5rrr9r9Ys/����
�
�-�.�I��b�j�j�,�-�G�C�
"2rr9c��eZdZd�Zy)�TestExportsc���tj}ddddddddddddddd�}g}|D]!}|ddk7s�||vs�|j|��#|jt	|�dk(d|z�y)N�)�NamedTemporaryFile�
TemporaryFile�mkstemp�mkdtempr<�TMP_MAX�
gettempprefix�gettempprefixb�
gettempdir�gettempdirb�tempdir�template�SpooledTemporaryFile�TemporaryDirectoryr�_zunexpected keys: %s)r�__dict__�appendrRrJ)r�dict�expected�unexp�keys     r�test_exportszTestExports.test_exports�s���� � ��$%������� �����%&�#$�
��"���	"�C��1�v��}��H�!4����S�!�	"�	
����E�
�a��-��5�	7rN)r2r3r4ryr5rrrbrb�s��7rrbc�`��eZdZ	�fd�Zd�Zd�Zd�Zej�d��Z	�xZ
S)�TestRandomNameSequencec�T��tj�|_t�|��yr+)r�_RandomNameSequence�r�superrE�r�	__class__s �rrEzTestRandomNameSequence.setUp�s����-�-�/���
��
�rc�V�t|j�}|j|ddd�y�Nr)�nextr~r^)r�ss  r�test_get_eight_char_strz.TestRandomNameSequence.test_get_eight_char_str�s!������L�����q�"�b�"�%rc��i}|j}tt�D]8}t|�}|j	|ddd�|j||�d||<�:y)Nrrd)r~�range�
TEST_FILESr�r^�assertNotIn)rrur~�ir�s     r�	test_manyz TestRandomNameSequence.test_many�sZ�����F�F���z�"�	�A��Q��A��N�N�1�b�"�b�)����Q��%��D��G�		rc�F�d}|j}|D]}|dz
}|dk(s�yy)Nrrd�)r~)rr�r~r�s    r�
supports_iterz$TestRandomNameSequence.supports_iter�s4��
���F�F���	�A�
��F�A��B�w��	rc��tj�\}}d}	tj�}|swtj|�tj|t|j�jd��tj|�tjd�t|j�}tj|t|��jd�}|rtj|d��tj|�tj|�|j||�y#|rtj|d��tj|�tj|�wxYw)N�asciir)�exitcode)rH�pipe�fork�close�writer�r~�encode�_exit�readrJ�decoder�wait_process�assertNotEqual)r�read_fd�write_fd�pid�parent_value�child_values      r�test_process_awarenessz-TestRandomNameSequence.test_process_awareness�s���G�G�I������	��'�'�)�C������!�����4����<�#6�#6�w�#?�@�����"������ ����<�L��'�'�'�3�|�+<�=�D�D�W�M�K���$�$�S�1�5��H�H�W���H�H�X�����K��6����$�$�S�1�5��H�H�W���H�H�X��s
�CE�AF)r2r3r4rEr�r�r�r�
requires_forkr��
__classcell__�r�s@rr{r{�s9���@��&�
	���W����7��7rr{c��eZdZ	d�Zd�Zy)�TestCandidateTempdirListc��tj�}|jt|�dk(�|D]}|j	|t
��y�Nr)r�_candidate_tempdir_list�assertFalserJ�assertIsInstancer)r�cand�cs   r�test_nonempty_listz+TestCandidateTempdirList.test_nonempty_list�sG���/�/�1������T��a��(��	*�A��!�!�!�S�)�	*rc��tj�5}dD]<}tj|�}|r�tjj|�||<�>t
j�}dD]1}tj|�}|st�|j||��3	tj�}|j||�ddd�y#ttf$rtj}Y�<wxYw#1swYyxYw)N)�TMPDIR�TEMP�TMP)r�EnvironmentVarGuardrH�getenvr-rOrr��
ValueError�assertIn�getcwd�AttributeError�OSError�curdir)r�env�envname�dirnamer�s     r�test_wanted_dirsz)TestCandidateTempdirList.test_wanted_dirs�s����
*�
*�
,�	)��2�
<���)�)�G�,���#%�7�7�?�?�7�#;�C��L�
<�
�3�3�5�D�2�
-���)�)�G�,���j� 0��
�
�g�t�,�
-�

$��)�)�+��
�M�M�'�4�(�%	)�	)��#�G�,�
$��)�)��
$��	)�	)�s5�C6�A.C6�"C�6C6�C3�0C6�2C3�3C6�6C?N)r2r3r4r�r�r5rrr�r��s��=�*�)rr�c��eZdZ	d�Zy)�TestGetDefaultTempdirc	���tj�5��fd�}tjtd|�5tj�|jt
j��g�d�}tjtd|�5|jt�5tj�ddd�|jt
j��g�ddd�tjtd|�5|jt�5tj�ddd�|jt
j��g�ddd�ddd�ddd�y#1swY��xYw#1swY��xYw#1swY�_xYw#1swY�>xYw#1swY�BxYw#1swYyxYw)Nc�
���gSr+r5)�our_temp_directorys�r�our_candidate_listzKTestGetDefaultTempdir.test_no_files_left_behind.<locals>.our_candidate_lists���*�+�+rr�c��t��r+)r�)�args�kwargss  r�
raise_OSErrorzFTestGetDefaultTempdir.test_no_files_left_behind.<locals>.raise_OSErrors	��!�)�Or�openr�)
rrqr�	swap_attr�_get_default_tempdirrNrH�listdirr�FileNotFoundError)rr�r�r�s   @r�test_no_files_left_behindz/TestGetDefaultTempdir.test_no_files_left_behinds����
�
(�
(�
*�	I�.@�
,��"�"�8�-F�#5�7�
I��-�-�/�� � ����,>�!?��D�$��&�&�r�6�=�A�I��*�*�+<�=�8� �5�5�7�8��$�$�R�Z�Z�0B�%C�R�H�	I��&�&�r�7�M�B�I��*�*�+<�=�8� �5�5�7�8��$�$�R�Z�Z�0B�%C�R�H�	I�
I�	I�	I� 8�8��I�I��8�8��I�I��
I�
I��	I�	I�s��!F7�AF+�F�%E;	�:-F�'#F+�
F� F	�5-F�"F+�*F7�;F
�F�F�F+�F
�F�F(�$F+�+F4	�0F7�7GN)r2r3r4r�r5rrr�r�s��&�Irr�c��eZdZ	d�Zd�Zy)�TestGetCandidateNamesc�l�tj�}|j|tj�yr+)r�_get_candidate_namesr�r})r�objs  r�test_retvalz!TestGetCandidateNames.test_retval2s&���+�+�-�����c�8�#?�#?�@rc�z�tj�}tj�}|j||u�yr+)rr�rR)r�a�bs   r�test_same_thingz%TestGetCandidateNames.test_same_thing7s.���)�)�+���)�)�+������Q��rN)r2r3r4r�r�r5rrr�r�/s��:�A�
 rr�c#�K�tj�}	tjtd|�5d��ddd�t	j
|�y#1swY�xYw#t	j
|�wxYw�w)Nrn)rrhrr�r�rmtree�rVs r�_inside_empty_temp_dirr�?sc����
�
�
�
�C��
�
�
�x��C�
8�	��	�	�����	�	��	�����s2�A<�A"�A�A"�A<�A�A"�"A9�9A<c�@��tjtd�fd��S)Nr�c���t��Sr+)�iter��namess�r�<lambda>z'_mock_candidate_names.<locals>.<lambda>Ls���T�%�[�r)rr�rr�s`r�_mock_candidate_namesr�Is������X�3�0�2�2rc�^�eZdZejejd�d��Zd�Zd�Z	y)�TestBadTempdirz$Emscripten cannot remove write bits.c�R�t�5tjtj�j
x}}|tjtjztjzz}tjtj|�	tjtjtj�r|jd�|jt�5|j�ddd�|j!tj"tj�g�tjtj|�	ddd�y#1swY�jxYw#tjtj|�wxYw#1swYyxYw)Nz!can't set the directory read-only)r�rH�statrrn�st_mode�S_IWUSR�S_IWGRP�S_IWOTH�chmod�access�W_OK�skipTestr�PermissionError�	make_temprNr�)r�oldmode�modes   r�test_read_only_directoryz'TestBadTempdir.test_read_only_directoryQs��$�
%�	4��W�W�X�%5�%5�6�>�>�>�G�d��d�l�l�T�\�\�1�D�L�L�@�A�A�D��H�H�X�%�%�t�,�
4��9�9�X�-�-�r�w�w�7��M�M�"E�F��&�&��7�%��N�N�$�%�� � ����H�,<�,<�!=�r�B�����)�)�7�3�	4�	4�%�%������)�)�7�3��	4�	4�s=�B
F�AE4�.E(�?;E4�:$F�(E1	�-E4�4&F�F�F&c�r�t�5tjjtj
d�}t
jtd|�5|jt�5|j�ddd�ddd�ddd�y#1swY�xYw#1swY�xYw#1swYyxYw)N�nonexistentrn)r�rHr-�joinrrnrr�rr�r��rrns  r�test_nonexisting_directoryz)TestBadTempdir.test_nonexisting_directorybs���
#�
%�	%��g�g�l�l�8�#3�#3�]�C�G��"�"�8�Y��@�
%��&�&�'8�9�%��N�N�$�%�
%�	%�	%�%�%��
%�
%��	%�	%�s<�A
B-�B!�+B�<B!�B-�B�B!�!B*	�&B-�-B6c��t�5tjjtj
d�}t
|d�j�tjtd|�5|jttf�5|j�ddd�ddd�ddd�y#1swY�xYw#1swY�xYw#1swYyxYw)N�file�wbrn)r�rHr-r�rrnr�r�rr�r�NotADirectoryErrorr�r�r�s  r�test_non_directoryz!TestBadTempdir.test_non_directoryis���
#�
%�	%��g�g�l�l�8�#3�#3�V�<�G���$��%�%�'��"�"�8�Y��@�
%��&�&�(:�<M�'N�O�%��N�N�$�%�
%�	%�	%�%�%��
%�
%��	%�	%�s<�A$C
�/C�B5�C�$C
�5B>�:C�C
	�C
�
CN)
r2r3r4�unittest�skipIfr�
is_emscriptenr�r�r�r5rrr�r�Os5���X�_�_����E��4��4�%�%rr�c��eZdZ	Gd�d�Zdd�Zd�Zd�Zd�Zd�Ze	jd	��Zejed
�ej �d���Zejed�d
��Zd�Zd�Zd�Zy)�TestMkstempInnerc�~�eZdZejZejZejZ
ejZd�Z
d�Zd�Zy)�TestMkstempInner.mkstempedc��|r
|j}n|j}tj|||�}tj|||||�\|_|_yr+)�_bflags�_tflagsrr�_mkstemp_inner�fdrU)rrVrWrX�bin�flags�output_types       rr/z#TestMkstempInner.mkstemped.__init__{sL���D�L�L�E� �L�L�E�"�5�5�c�3��D�K�#+�#:�#:�3��S�%�Q\�#]� �T�W�d�irc�D�tj|j|�yr+)rHr�r)rrs  rr�z TestMkstempInner.mkstemped.write�s���H�H�T�W�W�c�"rc�p�|j|j�|j|j�yr+)�_closer�_unlinkrUrs r�__del__z"TestMkstempInner.mkstemped.__del__�s"���K�K���� ��L�L����#rN)r2r3r4r�_bin_openflagsr�_text_openflagsr	rHr�r�unlinkrr/r�rr5rr�	mkstempedrus:���)�)���*�*�������)�)��	^�	#�	$rrNc�"�tj|||�}|�1|turtj�}ntj�}|�|�}|�|�}|j||||�}|j
|j|||�|Sr+)rrrrlrmrr^rU)rrVrWrXrrr�s       r�	do_createzTestMkstempInner.do_create�s����1�1�#�s�C�@���;��c�!��)�)�+���*�*�,���;��-�C��;��-�C��~�~�c�3��S�1�����t�y�y�#�s�C�0��rc�N�|j�jd�|jd��jd�|jd��jd�|jdd��jd�|jdd��jd�y)	N�blatr��rWr��rX�rWrX�aa�.txt)rr�rs r�
test_basiczTestMkstempInner.test_basic�s��������w�'����3���%�%�g�.����3���%�%�g�.����3�C��(�.�.�w�7����4�V��,�2�2�7�;rc�N�tj�}|j|d��jd�|j|d��jd�|j|d��jd�|j|dd��jd�|j|dd	��jd�|j	t
�5|jd
d��jd�ddd�|j	t
�5|j|d
��jd�ddd�|j	t
�5|j|dd
��jd�ddd�y#1swY��xYw#1swY�WxYw#1swYyxYw)Nr�rVrXr�a�rVrW�b�rVrWrX�aa�.txtr)rrmrr�rr)r�dir_bs  r�test_basic_with_bytes_namesz,TestMkstempInner.test_basic_with_bytes_names�sc���$�$�&�����5�c��*�0�0��9����5�d��+�1�1�'�:����5�d��+�1�1�'�:����5�d���5�;�;�G�D����5�e���9�?�?��H�
�
�
�y�
)�	;��N�N�r�s�N�+�1�1�'�:�	;�
�
�
�y�
)�	=��N�N�u�"�N�-�3�3�G�<�	=�
�
�
�y�
)�	F��N�N�u�#�2�N�6�<�<�W�E�	F�	F�		;�	;��	=�	=��	F�	F�s$�#F�#F�$F�F�F�F$c�l�ttt��}|D]}|jd��||<�y�Nrr)�listr�r�r�r�extantr�s   r�test_basic_manyz TestMkstempInner.test_basic_many�s4���e�J�'�(���	1�A����4��0�F�1�I�	1rc��tj�}	|j|��jd�|jt	j
|���jd�t
j�tj|�y#t
j�tj|�wxYw�Nr�r)
rrhrr�r$r%r�
gc_collectrH�rmdir�rrVs  r�test_choose_directoryz&TestMkstempInner.test_choose_directory�s������ ��	��N�N�s�N�#�)�)�'�2��N�N�w�|�|�C�0�N�1�7�7��@���� ��H�H�S�M��
��� ��H�H�S�M�s�AB�+Cc��|j�}tjtj|j�j
�}d}tjdk(r
|dz	}|dz}|j||�y)N��win32��I)	rr��S_IMODErHrUr��sys�platformrN)rr�r�rv�users     r�test_file_modezTestMkstempInner.test_file_mode�sg���~�~����|�|�B�G�G�D�I�I�.�6�6�7�����<�<�7�"��q�=�D��z�*�H�����x�(rzos.spawnl not availablec��tjrd}nd}|j�}|jt	j
|j�d�d|jz}	t}tjjtjjtjj|��d�}tjdk(rdtj z}d|z}ntj }t	j"tj$tj ||||�}|j'|dkd	|z�|j'|dkDd
|z�y#t$rtjd}Y��wxYw)N�v�qFz%drztf_inherit_check.pyr:z"%s"z$child process caught fatal signal %dz child process reports failure %d)r�verboserrNrH�get_inheritabler�__file__�	NameErrorr>�argvr-r�r�rOr?�
executabler�P_WAITr�)rrCr�r�me�tester�	decorated�retvals        r�test_noinheritzTestMkstempInner.test_noinherit�s/��
�?�?��A��A��~�~�������+�+�D�G�G�4�e�<�
�D�G�G�^��	��B������b�g�g�o�o�b�g�g�o�o�b�.A�B�3�5���<�<�7�"�����/�I��f�_�F����I����2�9�9�c�n�n�i���B�O������!��:�f�W�D�	F�����!��%G��%N�O��+�	����!��B�	�s�%E)�)F	�F	ztext mode not availablec�*�|jd��}|jd�|jd�tj|jdtj
�|j
tj|jd�d�y)Nr)rsblatsextra
r�r)rr�rH�lseekr�SEEK_SETrNr��r�fs  r�
test_textmodezTestMkstempInner.test_textmode�sc��

�N�N�q�N�!��	�����	���
��
������q�"�+�+�&����������r�*�G�4rc��tjtj�tj�dtjt
�Sr�)rr
rlrjrrrs rr�zTestMkstempInner.make_temps;���&�&�x�':�':�'<�'/�'=�'=�'?�')�'/�'>�'>�'*�	,�	,rc��t�5tddd�5|j�\}}tj|�|j|j
d��|j�\}}tj|�|j|j
d��ddd�ddd�y#1swY�xYw#1swYyxYw�N�aaa�bbb)r�r�r�rHr�rR�endswith)r�fd1�name1�fd2�name2s     r�!test_collision_with_existing_filez2TestMkstempInner.test_collision_with_existing_file	s���$�
%�	3�
"�5�%��
7�	3��>�>�+�L�S�%��H�H�S�M��O�O�E�N�N�5�1�2��>�>�+�L�S�%��H�H�S�M��O�O�E�N�N�5�1�2�	3�	3�	3�	3��	3�	3�s#�C�BB;�*C�;C	�C�Cc�~�t�5tddd�5tj�}|j	|jd��|j
�\}}tj|�|j	|jd��ddd�ddd�y#1swY�xYw#1swYyxYwrY)	r�r�rrhrRr\r�rHr�)rrVrrUs    r�&test_collision_with_existing_directoryz7TestMkstempInner.test_collision_with_existing_directorys���$�
%�	2�
"�5�%��
7�	2��"�"�$�C��O�O�C�L�L��/�0����)�J�R���H�H�R�L��O�O�D�M�M�%�0�1�	2�	2�	2�	2��	2�	2�s#�B3�A=B'�B3�'B0	�,B3�3B<)NNNrd)r2r3r4rrr!r+r1r7r�skip_unless_working_chmodrAr�
skipUnless�
has_spawnlr�requires_subprocessrP�has_textmoderVr�rarcr5rrrrrs���4�$�$�(� <�F�"1���(�(�)�)�)��X����%>�?� �W� � �"�#P�#�@�#P�J�X����'@�A�5�B�5�,�3�
2rrc��eZdZ	d�Zd�Zy)�TestGetTempPrefixc��tj�}|j|t�|j	t|�d�tj�}|j|t�|j	t|�d�yr�)rrjr�r�
assertGreaterrJrkr)r�p�pbs   r�test_sane_templatez$TestGetTempPrefix.test_sane_template&sf���"�"�$�����a��%����3�q�6�1�%�
�
$�
$�
&�����b�%�(����3�r�7�A�&rc��tj�dz}tjd��}	tjj||�}tj|tjtjz�}tj|�tj|�tj|�y#tj|�wxYw)Nz
xxxxxx.xxxr��prefix)rrjrhrHr-r�r��O_RDWR�O_CREATr�rr5)rrm�drs    r�test_usable_templatez&TestGetTempPrefix.test_usable_template2s���
�"�"�$�|�3�����B�'��	������Q��"�A�����B�I�I��
�
�2�3�B��H�H�R�L��I�I�a�L��H�H�Q�K��B�H�H�Q�K�s�A?C�CN)r2r3r4rorvr5rrrjrj#s���
'�rrjc�&�eZdZ	d�Zd�Zd�Zd�Zy)�TestGetTempDirc�P�tj�tj�fD]{}|jtj
j
|�xs|tjk(d|z�|jtj
j|�d|z��}y)Nz%r is not an absolute pathz%r is not a directory)	rrlrmrRrHr-�isabsr��isdir�rrus  r�test_directory_existsz$TestGetTempDir.test_directory_existsFs}���%�%�'��)=�)=�)?�@�	9�A��O�O�B�G�G�M�M�!�,�>��R�Y�Y��8�1�<�
>��O�O�B�G�G�M�M�!�,�3�a�7�
9�	9rc�x�tj�5}|jd�ddd�y#1swYyxYw)Nr)rrer�)rr�s  r�test_directory_writablez&TestGetTempDir.test_directory_writableOs3���
(�
(�
*�	 �d��J�J�w��	 �	 �	 �s�0�9c�4�tj�}tj�}tj�}|j||u�|j	t|�t|��|j
|tj|��yr+)	rrlrmrRr�rKrNrH�fsdecode)rr�r�r�s    rr�zTestGetTempDir.test_same_thingXsl�����!�����!��� � �"������Q������D��G�T�!�W�-�����B�K�K��N�+rc��tjd�}tjdc}t_	tj�5}||d<|jtj�|�ddd�|t_tj|�y#1swY�*xYw#|t_tj|�wxYw)Nz-Tempr�)rrhrnrr�rNrlr5)r�case_sensitive_tempdir�_tempdirr�s    r�test_case_sensitivez"TestGetTempDir.test_case_sensitivebs���"*�!1�!1�'�!:��%-�%5�%5�t�"��(�"�	4��.�.�0�
P�C� 6��H�
�� � ��!4�!4�!6�8N�O�
P�
 (�H���O�O�2�3�

P�
P��
 (�H���O�O�2�3�s#�B&�*B�1B&�B#�B&�&"CN)r2r3r4r}rr�r�r5rrrxrxCs���9� �,�4rrxc�.�eZdZ	dd�Zd�Zd�Zd�Zd�Zy)�TestMkstempNc	��tj|||�}|�1|turtj�}ntj�}|�|�}|�|�}tj
|||��\}}tjj|�\}}tjj|�}	|j|	|d|	�d|�d��	|j||||�t
j|�t
j|�y#t
j|�t
j|�wxYw)N�rVrr�suffixzDirectory 'z' incorrectly returned as '�')rrrrlrmrgrHr-rIrOrNr^r�r)
rrVrWrXrrrUrYrZ�adirs
          rrzTestMkstemp.do_createts����1�1�#�s�C�@���;��c�!��)�)�+���*�*�,���;��-�C��;��-�C��%�%�#�c�#�F�
��T����
�
�d�+�
��u��w�w���s�#������t�=A�4�H�	J�	��N�N�4��c�3�/��H�H�R�L��I�I�d�O��
�H�H�R�L��I�I�d�O�s�D�,D?c���|j�|jd��|jd��|jdd��|jdd��|jd�	�y)
Nr�rr�rrrr �.r��rrs rr!zTestMkstemp.test_basic�sV���������3������3������3�C��(����4�V��,����3��rc��tj�}|j|d��|j|d��|j|d��|j|dd��|j|dd��|jd	�
�|jt�5|jddd��ddd�|jt�5|jd	dd��ddd�|jt�5|jd	dd
��ddd�y#1swY�nxYw#1swY�HxYw#1swYyxYw)Nrr#r$r%r&r'r(r)�.r�r�rr )rrmrrrr|s  rr+z'TestMkstemp.test_basic_with_bytes_names�s��
� � �"�����1�#��&����1�$��'����1�$��'����1�$�D��1����1�%�W��5����4�� �
�
�
�y�
)�	<��N�N�s��7�N�;�	<�
�
�
�y�
)�	<��N�N�t��7�N�;�	<�
�
�
�y�
)�	<��N�N�t��F�N�;�	<�	<�		<�	<��	<�	<��	<�	<�s$�D�D+�D7�D(�+D4�7Ec��tj�}	|j|��|jtj|���tj|�y#tj|�wxYw�Nr�)rrhrr$r%rHr5r6s  rr7z!TestMkstemp.test_choose_directory�sQ����� ��	��N�N�s�N�#��N�N�w�|�|�C�0�N�1��H�H�S�M��B�H�H�S�M�s�7A#�#A:c�r�tj}|jtjtt	d�f�	tj
�\}}t
j|�t
j|�|j|t�tj�t_|jtjt�|jtj�t�|jtj�t�tj
�\}}t
j|�t
j|�|j|t�tj
d��\}}t
j|�t
j|�|j|t�tj
d��\}}t
j|�t
j|�|j|t�tj
tj���\}}t
j|�t
j|�|j|t�|t_y#|t_wxYw)Nr �r�z
test-temp-rqr�)rrnr�rrKrgrHr�rrmrrl)r�orig_tempdirrr-s    r�.test_for_tempdir_is_bytes_issue40701_api_wartsz:TestMkstemp.test_for_tempdir_is_bytes_issue40701_api_warts�s����'�'�����h�.�.��d�4�j�0A�B�	,��'�'�)�H�B���H�H�R�L��I�I�d�O��!�!�$��,�'�3�3�5�H���!�!�(�"2�"2�E�:��!�!�(�"5�"5�"7��=��!�!�(�"6�"6�"8�%�@��'�'�)�H�B���H�H�R�L��I�I�d�O��!�!�$��.��'�'�v�6�H�B���H�H�R�L��I�I�d�O��!�!�$��,��'�'�|�<�H�B���H�H�R�L��I�I�d�O��!�!�$��,��'�'�H�,?�,?�,A�B�H�B���H�H�R�L��I�I�d�O��!�!�$��,�+�H���|�H��s
�IJ)�)
J6rG)r2r3r4rr!r+r7r�r5rrr�r�qs����. �<�$�,rr�c�p�eZdZ	d�Zd
d�Zd�Zd�Zd�Zd�Ze	jd��Zd	�Zd
�Z
d�Zd�Zy)�TestMkdtempc�*�tj�Sr+)rrhrs rr�zTestMkdtemp.make_temp�s�����!�!rNc�N�tj|||�}|�1|turtj�}ntj�}|�|�}|�|�}tj
|||��}	|j
||||�|S#tj|��xYw)Nr�)	rrrrlrmrhr^rHr5)rrVrWrXrrUs      rrzTestMkdtemp.do_create�s����1�1�#�s�C�@���;��c�!��)�)�+���*�*�,���;��-�C��;��-�C����C��C�@��	��N�N�4��c�3�/��K��	��H�H�T�N��s�6B�B$c�v�tj|j��tj|jd���tj|jd���tj|jdd���tj|jdd���y�Nr�rr�rrrr )rHr5rrs rr!zTestMkdtemp.test_basic�su��
������!�"�
������C��(�)�
������C��(�)�
������C�S��1�2�
������D�f��5�6rc��tj�}tj|j	|���tj|j	|d���tj|j	|d���tj|j	|dd���tj|j	|dd���|jt�5tj|j	|d	d���ddd�|jt�5tj|j	|dd
���ddd�|jt�5tj|j	ddd���ddd�y#1swY��xYw#1swY�[xYw#1swYyxYw)Nr�r$r%r&r#r'r(r)rr r)rrmrHr5rrrr|s  rr+z'TestMkdtemp.test_basic_with_bytes_names�s[��� � �"��
������A��&�'�
������A�4��0�1�
������A�4��0�1�
������A�4�T��:�;�
������A�5�g��>�?�
�
�
�y�
)�	C��H�H�T�^�^��t��^�A�B�	C�
�
�
�y�
)�	C��H�H�T�^�^��u�&�^�A�B�	C�
�
�
�y�
)�	E��H�H�T�^�^���7�^�C�D�	E�	E�		C�	C��	C�	C��	E�	E�s$�)(F$�.(F0�3(F<�$F-�0F9�<Gc�.�ttt��}	|D]}|jd��||<�	|D](}t	|t
�s�t
j|��*y#|D](}t	|t
�s�t
j|��*wxYwr-)r.r�r�rrLrrHr5r/s   rr1zTestMkdtemp.test_basic_manys����e�J�'�(��	 ��
5�� �N�N�t�N�4��q�	�
5��
 ���a��%��H�H�Q�K�
 ��V�
 ���a��%��H�H�Q�K�
 �s�A%�%B�<Bc�F�tj�}	tj|j	|���tj|j	tj|����tj|�y#tj|�wxYwr�)rrhrHr5rr$r%r6s  rr7z!TestMkdtemp.test_choose_directorysc����� ��	��H�H�T�^�^��^�,�-��H�H�T�^�^����S�(9�^�:�;��H�H�S�M��B�H�H�S�M�s�AB	�	B c�T�|j�}	tjtj|�j�}|dz}d}t
jdk(r
|dz	}|dz}|j||�tj|�y#tj|�wxYw)Ni�i�r:r;r<)	rr�r=rHr�r>r?rNr5)rrVr�rvr@s     r�	test_modezTestMkdtemp.test_modes����n�n���	��<�<������ 4� 4�5�D��E�M�D��H��|�|�w�&� �1�}���:�.�����T�8�,��H�H�S�M��B�H�H�S�M�s�A(B�B'c��t�5tddd�5tjd��}|j	�|j|jjd��tj�}|j|jd��ddd�ddd�y#1swY�xYw#1swYyxYw)NrZr[F��delete)	r�r�rrer�rRrUr\rh)rr�rVs   rraz-TestMkdtemp.test_collision_with_existing_file&s���$�
%�	1�
"�5�%��
7�	1��.�.�e�<�D��J�J�L��O�O�D�I�I�.�.�u�5�6��"�"�$�C��O�O�C�L�L��/�0�
	1�	1�	1�	1��	1�	1�s#�B;�BB/�B;�/B8	�4B;�;Cc�V�t�5tddd�5tj�}|j	|jd��tj�}|j	|jd��ddd�ddd�y#1swY�xYw#1swYyxYwrY)r�r�rrhrRr\)r�dir1�dir2s   rrcz2TestMkdtemp.test_collision_with_existing_directory1s���$�
%�	2�
"�5�%��
7�	2��#�#�%�D��O�O�D�M�M�%�0�1��#�#�%�D��O�O�D�M�M�%�0�1�	2�	2�	2�	2��	2�	2�s#�B�A)B�B�B	�B�B(c��tj}|jtjtt	d�f�	tj
�}t
j|�|j|t�tj�t_|jtjt�|jtj�t�|jtj�t�tj
�}t
j|�|j|t�tj
d��}t
j|�|j|t�tj
d��}t
j|�|j|t�tj
tj���}t
j|�|j|t�|t_y#|t_wxYw)Nz-dirr�z
test-mkdtemp-rqr�)rrnr�rrKrhrHr5rmrrl)rr�r-s   rr�z:TestMkdtemp.test_for_tempdir_is_bytes_issue40701_api_warts;sw���'�'�����h�.�.��d�4�j�0A�B�	,��#�#�%�D��H�H�T�N��!�!�$��,�'�3�3�5�H���!�!�(�"2�"2�E�:��!�!�(�"5�"5�"7��=��!�!�(�"6�"6�"8�%�@��#�#�%�D��H�H�T�N��!�!�$��.��#�#�6�2�D��H�H�T�N��!�!�$��,��#�#�?�;�D��H�H�T�N��!�!�$��,��#�#��(;�(;�(=�>�D��H�H�T�N��!�!�$��,�+�H���|�H��s
�G$H1�1
H>c���	tjd��}|jtjj|��tj|�y#tj�wxYw)Nr�r�)rrhrRrHr-rzr5r.s  r�test_path_is_absolutez!TestMkdtemp.test_path_is_absoluteUsG��	��#�#��,�D��O�O�B�G�G�M�M�$�/�0��H�H�T�N��B�H�H�T�N�s�AA�A3rG)r2r3r4r�rr!r+r1r7rrdr�rarcr�r�r5rrr�r��sR���"��(7�
E�	 ���(�(��)��"	1�2�,�4rr�c�R��eZdZ	�fd�Z�fd�ZGd�d�Zdd�Zd�Zd�Z�xZ	S)	�
TestMktempc�T��tj�|_t�|��yr+)rrhrVrrEr�s �rrEzTestMktemp.setUpds����#�#�%���
��
�rc���|jr&tj|j�d|_t�|��yr+)rVrHr5r�tearDownr�s �rr�zTestMktemp.tearDownhs,����8�8��H�H�T�X�X���D�H�
���rc�H�eZdZejZejZd�Z	d�Z
y)�TestMktemp.mktempedc��tj|||��|_tjtj
|j|jd��y)Nr�r9)rr<rUrHr�r�r)rrVrWrXs    rr/zTestMktemp.mktemped.__init__rs9�� ���C��C�H�D�I�
�H�H�R�W�W�T�Y�Y����e�<�=rc�:�|j|j�yr+)rrUrs rrzTestMktemp.mktemped.__del__xs���L�L����#rN)r2r3r4rHrrrrrr/rr5rr�mktempedr�ns ���)�)���)�)��	>�	$rr�c��|j|j||�}|j|j|j||�|Sr+)r�rVr^rU)rrWrXr�s    rrzTestMktemp.do_create{s7���}�}�T�X�X�s�C�0�����t�y�y�$�(�(�C��5��rc��|j�|jd��|jd��|jdd��|jdd��yr�r�rs rr!zTestMktemp.test_basic��H���������3������3������3�C��(����4�V��,rc��ttt��}|D]}|jd��||<�~t	j
�yr-)r.r�r�rrr4r/s   rr�zTestMktemp.test_many�sC���e�J�'�(���	1�A����4��0�F�1�I�	1�����r)rr)
r2r3r4rEr�r�rr!r�r�r�s@rr�r�_s)������$�$��-�rr�c�v�eZdZ	dd�Zd�Zd�Zd�Zd�Zd�Zd�Z	d	�Z
d
�Zd�Zd�Z
d
�Zd�Zd�Zd�Zd�Zd�Zy)�TestNamedTemporaryFileNc��|�tj�}tj||||��}|j|j|||�|S)N)rVrrr�r�)rrlrer^rU)rrVrWrXr�r�s      rrz TestNamedTemporaryFile.do_create�sK���;��%�%�'�C��*�*�s�3�s�28�:��	
���t�y�y�#�s�C�0��rc��|j�|jd��|jd��|jdd��|jdd��yr�r�rs rr!z!TestNamedTemporaryFile.test_basic�r�rc��|j�}tj|�}|j}|j}~|d�~|d�~t	j
d��r|j
|��yy)N�foosbarT)�cpython)r�weakref�refr�r�check_impl_detail�assertIsNone)rrU�wrr��write2s     r�test_method_lookupz)TestNamedTemporaryFile.test_method_lookup�si��
�N�N���
�[�[��^����������
�
�f�
���v����$�$�T�2����b�d�#�3rc���gd���fd�}t|��D]\}}|j|�|��|jt��dz
�y)N)sspam
seggs
sbeans
c���tjd��}|jdj���|j	d�|S)N�w+b�r�rr)rrer�r��seek)rU�liness �r�	make_filez3TestNamedTemporaryFile.test_iter.<locals>.make_file�s7����+�+��7�A�
�G�G�C�H�H�U�O�$�
�F�F�1�I��Hrrd)�	enumeraterNrJ)rr�r��lr�s    @r�	test_iterz TestNamedTemporaryFile.test_iter�sW���3��	�
�i�k�*�	*�D�A�q����Q��a��)�	*�����C��J��N�+rc��tj�}|jtjj|j�d|jz�y)Nz$NamedTemporaryFile %s does not exist)rrerRrHr-�existsrUrTs  r�test_creates_namedz)TestNamedTemporaryFile.test_creates_named�s<���'�'�)����������q�v�v�.�>����G�	Irc���tj�}	tj|��5}|jd�ddd�|j	tj|�g�|jt
jjj�d|jz�tj|�y#1swY��xYw#tj|�wxYw)Nr�rz(NamedTemporaryFile %s exists after close)rrhrer�rNrHr�r�r-r�rUr5�rrVrUs   r�test_del_on_closez(TestNamedTemporaryFile.test_del_on_close�s������ ��	��,�,��5�
!������ �
!����R�Z�Z��_�b�1����R�W�W�^�^�A�F�F�3�B�Q�V�V�K�
M�
�H�H�S�M�

!�
!��
�H�H�S�M�s"�C�C�A3C�C�C�C*c��tj�}d}	tj|d��}|j}|j	d�|j�|j
tjj|j�d|jz�|�tj|�tj|�y#|�tj|�tj|�wxYw)NF)rVr�rz)NamedTemporaryFile %s missing after close)rrhrerUr�r�rRrHr-r�rr5)rrV�tmprUs    r�test_dis_del_on_closez,TestNamedTemporaryFile.test_dis_del_on_close�s������ ����
	��+�+��E�B�A��&�&�C�
�G�G�G��
�G�G�I��O�O�B�G�G�N�N�1�6�6�2�C�a�f�f�L�
N����	�	�#���H�H�S�M�����	�	�#���H�H�S�M�s�B
C�.C=c��tj�}|jd�|j�|j�|j�y�N�abc
)rrer�r�rTs  r�test_multiple_closez*TestNamedTemporaryFile.test_multiple_close�s7���'�'�)��	�����	���	�	���	�	���	rc�n��tj�5�|jtjj�j��ddd�|jtjj�j���fd�}|jt|�y#1swY�]xYw)Nc�6���5	ddd�y#1swYyxYwr+r5�rUs�r�
use_closedz?TestNamedTemporaryFile.test_context_manager.<locals>.use_closed������
��
�
�
����)
rrerRrHr-r�rUr�rr��rr�rUs  @r�test_context_managerz+TestNamedTemporaryFile.test_context_manager�sy���
�
(�
(�
*�	4�a��O�O�B�G�G�N�N�1�6�6�2�3�	4������������/�0�	�	
���*�j�1�
	4�	4�s�9B+�+B4c���tj�}	tj|dd��5}|jd�|j}|j�|j
�5|jtjj|j�d|j�d��ddd�ddd�|j
�5|jtjjj�d|j�d��ddd�tj|�y#1swY��xYw#1swY��xYw#1swY�7xYw#tj|�wxYw)NTF�rVr��delete_on_closer�NamedTemporaryFile z= is incorrectly deleted on closure when delete_on_close=Falsez" exists after context manager exit)
rrhrer�rUr��subTestrRrHr-r�r�r5)rrVrU�f_names    r�:test_context_man_not_del_on_close_if_delete_on_close_falsezQTestNamedTemporaryFile.test_context_man_not_del_on_close_if_delete_on_close_falses8��
��� ��	��,�,��48�=B�D�

N�GH����� ��������	��\�\�^�N��O�O�B�G�G�N�N�1�6�6�$:�1�!�&�&��<L�M�N�N�

N�����
@�� � ���������!7�#6�q�v�v�j�A>�"?�@�
@�
�H�H�S�M�N�N��

N�

N��
@�
@��
�H�H�S�M�sT�E�>E�,AD:�4E�<E�AE�E�:E	�?E�E�E�E�E�E5c�f�tj�}	tj|dd��5}|jd�|j	�tj|j�ddd�tj|�y#1swY�xYw#tj|�wxYw�NTFr�r)	rrhrer�r�rHrrUr5r�s   r�&test_context_man_ok_to_delete_manuallyz=TestNamedTemporaryFile.test_context_man_ok_to_delete_manuallys������ ��		��,�,��48�=B�D�
"�GH����� ����	��	�	�!�&�&�!�
"�
�H�H�S�M�
"�
"��
�H�H�S�M�s#�B�AB
�/B�
B�B�B0c��tj�}d}	tj|dd��5}|jd�|j}ddd�|jtjjj�d|j�d��t
j|�t
j|�y#1swY�{xYw#t
j|�t
j|�wxYw)NrFTr�rr�z exists after close)rrhrer�rUrRrHr-r�rr5)rrVr�rUs    r�(test_context_man_not_del_if_delete_falsez?TestNamedTemporaryFile.test_context_man_not_del_if_delete_false.s������ ����
	��,�,��U�=A�C�
 �FG����� �����
 �
�O�O�B�G�G�N�N�1�6�6�2�-�a�f�f�Z�7J�K�
M�
�I�I�f���H�H�S�M�
 �
 ��
�I�I�f���H�H�S�M�s#�C�C�AC�C�
C�,Dc�0�d�}tj�tj�}	||�}|j	t
jj|�d|�d��tj|�y#tj|�wxYw)Nc�p�tj|dd��}|j}|jd�|Sr�)rrerUr��rVrU�tmp_names   r�my_funcz=TestNamedTemporaryFile.test_del_by_finalizer.<locals>.my_funcAs6���+�+��D�<A�C�A��v�v�H�
�G�G�G���Orr�z exists after finalizer )	�gc�collectrrhr�rHr-r�r5)rr�rVr�s    r�test_del_by_finalizerz,TestNamedTemporaryFile.test_del_by_finalizer>su��	�	�
�
����� ��	��s�|�H����R�W�W�^�^�H�5�-�h�\�:2�3�
4�
�H�H�S�M��B�H�H�S�M�s�;A>�>Bc�@�dtfd�}tj�y)N�returnc��tj|dd��}|j}|jd�|j	�tj|�|Sr�)rrerUr�r�rHrr�s   rr�zVTestNamedTemporaryFile.test_correct_finalizer_work_if_already_deleted.<locals>.my_funcXsI���+�+��D�<A�C�A��v�v�H�
�G�G�G��
�G�G�I��I�I�h���Or)rr�r�)rr�s  r�.test_correct_finalizer_work_if_already_deletedzETestNamedTemporaryFile.test_correct_finalizer_work_if_already_deletedTs��	�#�	�	�
�
�rc��tj�}|jtj|�|jt�5tjd|��ddd�|jt�5tjd|��ddd�|jtj|�g�y#1swY�dxYw#1swY�;xYw�Nr�)r�rV�)rrh�
addCleanuprr�rr�rerrNrHr�r6s  r�
test_bad_modez$TestNamedTemporaryFile.test_bad_modecs������ �����	�(�(�#�.�
�
�
�z�
*�	<��'�'�T�s�;�	<�
�
�
�y�
)�	9��'�'�Q�C�8�	9�������C��"�-�		<�	<��	9�	9���
C�?C�C�Cc�:�tj�}|jtj|�|jt�5tjdd|��ddd�|jtj|�g�y#1swY�/xYw�N�wzbad-encoding)�encodingrV)rrhrrr�r�LookupErrorrerNrHr�r6s  r�test_bad_encodingz(TestNamedTemporaryFile.test_bad_encodinglsu����� �����	�(�(�#�.�
�
�
�{�
+�	O��'�'��n�#�N�	O�������C��"�-�	O�	O���
B�Bc�`�tj�}|jtj|�tjd�5}tjdtj��5}t�|_	|jt�5tj|��ddd�ddd�ddd��jj�|jtj |�g�y#1swY�^xYw#1swY�bxYw#1swY�fxYw)Nztempfile._TemporaryFileWrapperzio.openr�)rrhrrr�r�patch�	mock_open�KeyboardInterrupt�side_effectrrer��
assert_calledrNrHr�)rrV�mock_ntfrs    r�test_unexpected_errorz,TestNamedTemporaryFile.test_unexpected_errorss������ �����	�(�(�#�.�
�Z�Z�8�
9�	5�X�
�Z�Z�	�4�>�>�#3�
4�	5�8A�#4�#6�H� ��"�"�#4�5�
5��+�+��4�
5�	5�	5�
	����'�'�)�������C��"�-�
5�
5��	5�	5��	5�	5�s<�
)D$�3%D�D�/D�7D$�D�D�D!	�D$�$D-)NrrT)r2r3r4rr!r�r�r�r�r�r�r�r�r�r�r�r�rr
rr5rrr�r��s[��$��-�$� ,�I�
�� �2��8
�� �,
�.�.�	.rr�c� �eZdZ	dd�Zd�Zd�Zd�Zd�Zd�Ze	jejd�d	��Z
d
�Zd�Zd�Zd
�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Ze	jejd�d��Zd�Zy)�TestSpooledTemporaryFileNc�d�|�tj�}tj||||��}|S)N)�max_sizerVrrr�)rrlrp)rrrVrWrXr�s      rrz"TestSpooledTemporaryFile.do_create�s2���;��%�%�'�C��,�,�h�C�PS�\_�`���rc��|j�}|j|j�|jddd��}|j|j�y)Nrr�r )rrWrX)rr��_rolledrTs  rr!z#TestSpooledTemporaryFile.test_basic�sF���N�N���������#��N�N�C�S�f�N�=��������#rc�`�|j|j�tj�yr+)r�r�io�IOBasers r�test_is_iobasez'TestSpooledTemporaryFile.test_is_iobase�s�����d�n�n�.��	�	�:rc�~�hd�}tttj��}||z
}|j	|d�y)N>r�r��tellr��flush�read1r��closed�detach�errors�fileno�isatty�__exit__�__iter__�__next__r�newlines�readable�readinto�readline�seekable�truncate�writable�	__enter__�	readinto1�	readlines�
writelineszMSpooledTemporaryFile missing attributes from IOBase/BufferedIOBase/TextIOBase)�setrVrrpr�)r�iobase_attrs�spooledtempfile_attrs�
missing_attrss    r�test_iobase_interfacez.TestSpooledTemporaryFile.test_iobase_interface�sB��	
��!$�C��(E�(E�$F� G��$�'<�<�
�����
/�	
rc�N�tj�}	tjd|��}|j|j�|jd�|j
|j�|j}|j�|jtj|�g�t|t�s2|jtjj|�d|z�tj |�y#tj |�wxYw)N�
)rrVsblat blat blat blat blat z*SpooledTemporaryFile %s exists after close)rrhrpr�rr�rRrUr�rNrHr�rL�intr-r�r5)rrVrU�filenames    rr�z*TestSpooledTemporaryFile.test_del_on_close�s������ ��	��-�-�r�s�C�A����Q�Y�Y�'�
�G�G�L�!��O�O�A�I�I�&��v�v�H�
�G�G�I����R�Z�Z��_�b�1��h��,�� � �������!9�@�8�K�M�
�H�H�S�M��B�H�H�S�M�s�C!D
�
D$c��|jd��}|jd�|j|jd�|j	t
�5|j
�ddd�y#1swYyxYw)Nr;�rr�)rr�rNrU�assertWarns�ResourceWarningrrTs  r�test_del_unrolled_filez/TestSpooledTemporaryFile.test_del_unrolled_file�s_��
�N�N�B�N�'��	������������&�
�
�
�o�
.�	�
�I�I�K�	�	�	�s�A/�/A8z&Emscripten cannot fstat renamed files.c��|jd��}|jd�|j}|jtj
j
|��|jt�5|j�ddd�|jtj
j
|�d|z�y#1swY�<xYw)Nrr?r�z9Rolled SpooledTemporaryFile (name=%s) exists after delete)rr�rUrRrHr-r�r@rArr�)rrUrUs   r�test_del_rolled_filez-TestSpooledTemporaryFile.test_del_rolled_file�s���
�N�N�A�N�&��	������v�v����������t�,�-�
�
�
�o�
.�	�
�I�I�K�	�����G�G�N�N�4� �G�$�N�	
�	�	�s�3B?�?Cc��|jd��}|j|j�td�D]%}|j	dd�|jd��'|j|j�y)N�r?�r�xxxxxxxxxxxxxxxxxxxx)rr�rr�r�r�)rrUr�s   r�test_rewrite_smallz+TestSpooledTemporaryFile.test_rewrite_small�sd���N�N�B�N�'��������#��q��	�A�
�F�F�1�a�L�
�G�G�I��	�	
������#rc�f�|jd��}|j|j�|jd�|j|j�|jd�|j|j�|jd�|j	|j�y)NrFr?rH�
xxxxxxxxxx�x)rr�rr�rRrTs  r�test_write_sequentialz.TestSpooledTemporaryFile.test_write_sequential�s}��
�N�N�B�N�'��������#�	���	��������#�	���	��������#�	����
�����	�	�"rc���|j�}|jd�|jd�}|j|d�|j	�}|j|d�y)N)rL�y�zrsxyz)rr4r�rNr�)rrU�pos�bufs    r�test_writelinesz(TestSpooledTemporaryFile.test_writelines�sS���N�N���	���'�(��f�f�Q�i������a� ��f�f�h������f�%rc���|jd��}|jd�|j|j�|j	d�|j|j�y)N�#r?)rHrKsxxxxxrL)rr4r�rr�rRrTs  r�test_writelines_sequentialz3TestSpooledTemporaryFile.test_writelines_sequential�sN��
�N�N�B�N�'��	���5�6�������#�	����
�����	�	�"rc�4�|jd��}|j|j�|jdd�}|j	|d�|j|j�|jd�|j
|j�y)NrFr?rrrL)rr�rr�rNr�rR)rrUrQs   r�test_sparsez$TestSpooledTemporaryFile.test_sparse�sr��
�N�N�B�N�'��������#��f�f�S�!�n������c�"�������#�	����
�����	�	�"rc���|jd��}|j|j�|j|j	�dkD�|j|j�y)NrFr?r)rr�rrRr%rTs  r�test_filenoz$TestSpooledTemporaryFile.test_fileno	sJ���N�N�B�N�'��������#�������
�Q��'�����	�	�"rc���tj�}|jd�|j|j�|j�|j�|j�yr�)rrpr�r�rr�rTs  r�#test_multiple_close_before_rolloverz<TestSpooledTemporaryFile.test_multiple_close_before_rolloversI���)�)�+��	�����������#�	���	�	���	�	���	rc���tjd��}|jd�|j|j�|j�|j�|j�y)Nrdr?r�)rrpr�rRrr�rTs  r�"test_multiple_close_after_rolloverz;TestSpooledTemporaryFile.test_multiple_close_after_rolloversI���)�)�1�5��	���������	�	�"�	���	�	���	�	���	rc���|jd��}|j}|j}|j}|d�|d�|dd�|j	|d�d�y)NrFr?s#aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaas#bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbr�FsFaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb)rr�r�r�rN)rrUr�r�r�s     r�test_bound_methodsz+TestSpooledTemporaryFile.test_bound_methods"s]��
�N�N�B�N�'���v�v�������v�v��
�i��
�i���Q��
�����b��#4�5rc�J�tjd��}|jd�|j|j�|j|jd�|j|j�|jt�5|jddd�|jt�5|jddd�|jt�5|jddd�|jd�|j|j�|j|jd�|j|j�|jt�5|jddd�|jt�5|jddd�|jt�5|jddd�y#1swY��@xYw#1swY��#xYw#1swY��xYw#1swY��xYw#1swY�gxYw#1swYyxYw)Nr;r?rKr�rLzrb+)rrpr�r�rrNr�r�rUrr�r*rr$rR�assertIsNotNonerTs  r�test_propertiesz(TestSpooledTemporaryFile.test_properties0s����)�)�2�6��	���	��������#��������'����!�&�&�!�
�
�
�~�
.�	�
�J�J�	�
�
�
�~�
.�	�
�J�J�	�
�
�
�~�
.�	�
�H�H�	�	
����
�����	�	�"��������'����Q�V�V�$�
�
�
�~�
.�	�
�J�J�	�
�
�
�~�
.�	�
�J�J�	�
�
�
�~�
.�	�
�H�H�	�	�	�	��	�	��	�	��	�	��	�	��	�	�sH�
G�9
G'�#
G4�0
H�
H
�
H�G$�'G1�4G>�H
�
H�H"c��tjddd��}|jd�|jd�|j	|j�d�|jd�|jd�|j	|j�d�|j
|j�|j	|jd�|j|j�|j	|jtj�|j	|jd�|j	|jd	�|jd
�|jd�|j	|j�d�|jd�|jd�|j	|j�d
�|j!|j�|j	|jd�|j#|j�|j	|jtj�|j	|jd�|j	|jd	�y)N�w+r;�utf-8)r�rrzabc
rzdef
zabc
def
�strictzxyzzy
zabc
def
xyzzy
zfoobar
zabc
def
xyzzy
foobar
)rrpr�r�rNr�r�rr�r�rUr*rH�lineseprr$rRrcrTs  r�test_text_modez'TestSpooledTemporaryFile.test_text_modeHs���
�)�)�t�b�3:�
<��	�����	���q�	��������7�+�	�����	���q�	��������<�0�������#��������&����!�&�&�!�������R�Z�Z�0�������W�-�������8�,�	���	��	���q�	��������#6�7�	�����	���q�	��������#B�C�����	�	�"��������&����Q�V�V�$�������R�Z�Z�0�������W�-�������8�,rc��tjddddd��}|jd�|jd�|j	|j�d�|j
|j�|j	|jd�|j|j�|j|j�|j	|jd�|j	|jd�|jd	�|jd
�|jd�|j	|j�d�|j|j�|j	|jd�|j|j�|j|j�|j	|jd�|j	|jd�y)Nrfr;rrgr;)r�r�newlinerr$uΛ
ruΜΜΜΜΜΜΜΜΜΜ
u(ΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝuBΛ
ΜΜΜΜΜΜΜΜΜΜ
ΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝ)rrpr�r�rNr�r�rr�r�rUrcr*rr$rRrTs  r�test_text_newline_and_encodingz7TestSpooledTemporaryFile.test_text_newline_and_encodinghsm���)�)�t�b�24�w�19�
;��	
�����	���q�	��������<�0�������#��������&����!�&�&�!����Q�Z�Z�(�������W�-�������8�,�	���&�'�	���
��	���q�	��������I�	K�����	�	�"��������&����Q�V�V�$����Q�Z�Z�(�������W�-�������8�,rc�4��tjd��5�|j�j�|j�j�ddd�|j�j��fd�}|j
t|�y#1swY�@xYw)Nrdr?c�6���5	ddd�y#1swYyxYwr+r5r�s�rr�zQTestSpooledTemporaryFile.test_context_manager_before_rollover.<locals>.use_closed�r�r�)rrpr�rr"rRrr�r�s  @r�$test_context_manager_before_rolloverz=TestSpooledTemporaryFile.test_context_manager_before_rollover�su���
�
*�
*�A�
6�	'�!����Q�Y�Y�'����Q�X�X�&�	'�	
������!�	�	
���*�j�1�	'�	'�s�7B�Bc���tjd��5�|j�j��j	d��j�|j
�j�|j�j�ddd�|j
�j��fd�}|jt|�y#1swY�@xYw)Nrdr?r�c�6���5	ddd�y#1swYyxYwr+r5r�s�rr�zQTestSpooledTemporaryFile.test_context_manager_during_rollover.<locals>.use_closed�r�r�)
rrpr�rr�r rRr"rr�r�s  @r�$test_context_manager_during_rolloverz=TestSpooledTemporaryFile.test_context_manager_during_rollover�s����
�
*�
*�A�
6�	'�!����Q�Y�Y�'�
�G�G�H��
�G�G�I��O�O�A�I�I�&����Q�X�X�&�	'�	
������!�	�	
���*�j�1�	'�	'�s�A3C
�
Cc�z��tjd����jd��j�|j	�j
��5|j
�j�ddd�|j	�j��fd�}|jt|�y#1swY�@xYw)Nrdr?r�c�6���5	ddd�y#1swYyxYwr+r5r�s�rr�zPTestSpooledTemporaryFile.test_context_manager_after_rollover.<locals>.use_closed�r�r�)
rrpr�r rRrr�r"rr�r�s  @r�#test_context_manager_after_rolloverz<TestSpooledTemporaryFile.test_context_manager_after_rollover�s�����)�)�1�5��	�����	���	�����	�	�"�
�	'����Q�X�X�&�	'�������!�	�	
���*�j�1�
	'�	'�s�B1�1B:c�8�tjd��}|jd�|jd�|j	�|j|j�|j|jj�d�tjd��}|jd�|j	d�|j|j�|j|jj�d�tjd��}|jd�|j	d�|j|j�|jtj|j��jd�y)	Nr;r?sabcdefg
rr�sabcdr�)rrpr�r�r/r�rrN�_file�getvaluerRrH�fstatr%�st_sizerTs  r�!test_truncate_with_size_parameterz:TestSpooledTemporaryFile.test_truncate_with_size_parameter�s��

�)�)�2�6��	�����	���q�	�	�
�
��������#�������)�)�+�S�1��)�)�2�6��	�����	�
�
�1�
�������#�������)�)�+�W�5��)�)�2�6��	�����	�
�
�2������	�	�"�������!�(�(�*�-�5�5�r�:rc�n�|jtjttj
�yr+)r�rrpr�types�GenericAliasrs r�test_class_getitemz+TestSpooledTemporaryFile.test_class_getitem�s&�����h�;�;�E�B��(�(�	*r)rNrr)r2r3r4rr!rr9r�rBrrrrrDrIrMrSrVrXrZr\r^rardrjrmrprsrvr}r�r5rrrr�s���&��$�;�
�*�"��X�_�_����G��

��

�$�
#�&�#�	#�#���6��0-�@-�4	2�2�2��X�_�_����G��;��;�**rrc�8�eZdZ	d�Zd�Zd�Zd�Zd�Zd�Zd�Z	y)	�TestTemporaryFilec�,�tj�yr+)rrfrs rr!zTestTemporaryFile.test_basic�s��
�"�"�$rc��tj�}tj|��}|jd�	t	j
|�y#|j
�t	j
|��xYwr3)rrhrfr�rHr5r�r�s   r�test_has_no_namez"TestTemporaryFile.test_has_no_name�sZ���"�"�$�C��&�&�3�/�A�
�G�G�G��
�����
��
����	�����
��s�A�(A;c��tj�}|jd�|j�|j�|j�yr�)rrfr�r�rTs  rr�z%TestTemporaryFile.test_multiple_close�s7���&�&�(�A�
�G�G�H��
�G�G�I�
�G�G�I�
�G�G�Irc�`���fd�}|dd�|dd�|ddd��|d	dd
��y)Nc����tj|i|��5}|j|�|jd��j	||j��ddd�y#1swYyxYwr�)rrfr�r�rNr�)�inputr�r��fileobjrs    �r�	roundtripz;TestTemporaryFile.test_mode_and_encoding.<locals>.roundtrip�sZ����+�+�T�<�V�<�<���M�M�%�(��L�L��O��$�$�U�G�L�L�N�;�<�<�<�s�AA#�#A,s1234r�zabdc
rfuΛzutf-16)rzfoo
r)rlr5)rr�s` r�test_mode_and_encodingz(TestTemporaryFile.test_mode_and_encoding�s6���
<�
�g�u�%��h��%��h��x�8��i��r�2rc��tj�}|jtj|�|jt�5tjd|��ddd�|jt�5tjd|��ddd�|jtj|�g�y#1swY�dxYw#1swY�;xYwr)rrhrrr�rr�rfrrNrHr�r6s  rrzTestTemporaryFile.test_bad_mode�s����"�"�$�C��O�O�I�,�,�c�2��"�"�:�.�
;��&�&�D�c�:�
;��"�"�9�-�
8��&�&�A�3�7�
8����R�Z�Z��_�b�1�	
;�
;��
8�
8�rc�:�tj�}|jtj|�|jt�5tjdd|��ddd�|jtj|�g�y#1swY�/xYwr)rrhrrr�rr	rfrNrHr�r6s  rr
z#TestTemporaryFile.test_bad_encoding�su���"�"�$�C��O�O�I�,�,�c�2��"�"�;�/�
N��&�&�s�^��M�
N����R�Z�Z��_�b�1�
N�
N�rc
���tj�}|jtj|�tjdd�5tjd�5}tjd�5}tjd�5}t�|_|jt�5tj|��ddd�ddd�ddd�ddd�ddd�j�|jtj|�g�y#1swY�_xYw#1swY�cxYw#1swY�gxYw#1swY�kxYw#1swY�oxYw)Nztempfile._O_TMPFILE_WORKSFz	os.unlinkzos.openzos.closer�)rrhrrr�rr
rrrrfrrNrHr�)rrV�mock_unlinkr�
mock_closes     rrz'TestTemporaryFile.test_unexpected_errors���"�"�$�C��O�O�I�,�,�c�2����7��?�
4����K�(�
4�,7����I�&�
4�*3����J�'�
4�,6�*;�*=��'��&�&�'8�9�4��*�*�s�3�4�
4�
4�
4�
4�
�$�$�&����R�Z�Z��_�b�1�4�4��
4�
4��
4�
4��
4�
4��
4�
4�sl�E�!E�7D?�
%D3	�2D'�	D3	�D?�E�!E�'D0�,D3	�3D<
�8D?�?E�E�E	�E�E N)
r2r3r4r!r�r�r�rr
rr5rrr�r��s(��#�	%�
	� 	�	3�	2�	2�	2rr�c��eZdZd�Zd�Zd�Zy)�
NulledModulesc��|D�cgc]}|j��c}|_|jD�cgc]}|j���c}|_ycc}wcc}wr+)rs�refs�copy�contents)r�modules�modr�s    rr/zNulledModules.__init__s<��-4�5�c�S�\�\�5��	�/3�y�y�9������9��
��6��9s
�A�Ac�>�|jD]}|D]}d||<�	�yr+)r�)rrurxs   rr1zNulledModules.__enter__s-�����	�A��
����#��
�	rc��t|j|j�D]&\}}|j�|j	|��(yr+)�zipr�r��clear�update)r�exc_inforur�s    rr'zNulledModules.__exit__s8����	�	�4�=�=�1�	�D�A�q�
�G�G�I�
�H�H�Q�K�	rN)r2r3r4r/r1r'r5rrr�r�s��:��
rr�c�0�eZdZ			dd�Zdd�Zd�Zd�Zd�Zeje
jdk(d�d	��Zeje
jdk(d�d
��Z
ejd��Zejd��Zejee
d
�d�ejd���Zej*d��Zej*d��Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zejee
d
�d�d��Z d�Z!y)�TestTemporaryDirectoryNc���|�tj�}tj||||��}|j|j|||�|j|j|||�|S)N)rVrrr��ignore_cleanup_errors)rrlrqr^rU�
do_create2)	rrVrWrX�recurse�dirs�filesr�r�s	         rrz TestTemporaryDirectory.do_create'sb���;��%�%�'�C��)�)��C��"7�9��	
���s�x�x��c�3�/�������'�4��7��
rc��|r_t|�D]Q}tjj|d|z�}tj|�|j||dz
||��St|�D]I}t
tjj|d|z�d�5}|jd�ddd��Ky#1swY�VxYw)Nzdir%drdz
test%d.txtr�sHello world!)r�rHr-r��mkdirr�r�r�)rr-r�r�r�r�rUrUs        rr�z!TestTemporaryDirectory.do_create22s�����4�[�
>���w�w�|�|�D�'�A�+�6�����������g�a�i��u�=�
>��u��	)�A��b�g�g�l�l�4���)9�:�D�A�
)�Q�����(�
)�
)�	)�
)�
)�s�B:�:C	c�@�tj�5}	ddd�|jt�5}tj��ddd�|j	j
jtj�y#1swY�rxYw#1swY�JxYwr�)rrqrr�rN�	exception�errno�ENOENT)rr��cms   r�test_mkdtemp_failurez+TestTemporaryDirectory.test_mkdtemp_failure=s|���
(�
(�
*�	�k��	�
�
�
�0�
1�	9�R��'�'�K�8�	9�������+�+�U�\�\�:�		�	��	9�	9�s�B�B�B�Bc���tj�}	|j|��}|jtj
j
|j�d|jz�|j�|jtj
j
|j�d|jz�t	j|�y#t	j|�wxYw)Nr�z$TemporaryDirectory %s does not exist�*TemporaryDirectory %s exists after cleanup)rrhrrRrHr-r�rU�cleanupr�r5)rrVrus   r�test_explicit_cleanupz,TestTemporaryDirectory.test_explicit_cleanupGs������ ��	����3��'�A��O�O�B�G�G�N�N�1�6�6�2�B�Q�V�V�K�
M�
�I�I�K����R�W�W�^�^�A�F�F�3�D�q�v�v�M�
O�
�H�H�S�M��B�H�H�S�M�s�B.C�C1c
�4�	tj�5}|j|d��}tj|j
�}|j
|j�d|�d��t|dzd�5}|jd�|j�ddd�|jtt|jd���tt j"j%d	��d
|���|j|j�t j"j%d	�d|�d��|j�|j'|j�d|�d��ddd�y#1swY��xYw#1swYyxYw)
NT�rVr��TemporaryDirectory � does not exist�
a_file.txt�w+t�
Hello world!
�*�win�1Unexpected number of files in TemporaryDirectory � existence state unexpectedz exists after cleanup)rrqrr$r%rUrRr�r�r�r�rNrJr.�globr<r>r?�
startswithr��r�working_dir�temp_dir�	temp_path�	open_files     r�#test_explicit_cleanup_ignore_errorsz:TestTemporaryDirectory.test_explicit_cleanup_ignore_errorsTs~��K�
�
(�
(�
*�	J�k��~�~��t�&�=�H����X�]�]�3�I��O�O�I�,�,�.�1�)��o�N�
P��i�,�.��6�
#�)���� 0�1�� � �"�
#�
���S��i�n�n�S�&9�!:�;� ����!8�!8��!?�@�3�3<�-�A�
B�
���� � �"����'�'��.�%�i�]�2M�N�
P�
�������� � �"�%�i�]�2G�H�
J�%	J�	J�
#�
#��
	J�	J�s%�A&F�<"F�CF�F	�F�F�ntzOnly on Windows.c��tj�5}|j|��}ttj
j
|jd�d�5|jt�5|j�ddd�ddd�ddd�y#1swY�xYw#1swY�xYw#1swYyxYw)Nr�zexample.txtr�)rrqrr�rHr-r�rUrr�r�)rr�r�s   r�#test_explicit_cleanup_correct_errorz:TestTemporaryDirectory.test_explicit_cleanup_correct_errorls���
�
(�
(�
*�	'�k��~�~�+�~�6�H��b�g�g�l�l�8�=�=�-�@�$�G�
'��&�&��7�'��$�$�&�'�
'�	'�	'�
'�'��
'�
'��	'�	'�s<�AB4�B(�2B�B(�B4�B%�!B(�(B1	�-B4�4B=c��tj�5}|j|��}tjj|jd�}tj|�tj|�5|jt�5|j�ddd�ddd�ddd�y#1swY�xYw#1swY�xYw#1swYyxYw)Nr��subdir)
rrqrrHr-r�rUr�r�
change_cwdrr�r�)rr�r�r�s    r� test_cleanup_with_used_directoryz7TestTemporaryDirectory.test_cleanup_with_used_directoryvs���
�
(�
(�
*�	'�k��~�~�+�~�6�H��W�W�\�\�(�-�-��:�F��H�H�V���%�%�f�-�
'��&�&��7�'��$�$�&�'�
'�		'�	'�'�'��
'�
'��		'�	'�s<�A'C�<C�B<�#C�+C�<C�C�C	�
C�Cc�x�|j�}|jd��}tj|jtjj|jd��|j
�|jtjj|j�d|jz�|jtjj|j�d�|jtj|j�dgd�|j
�y)Nr�r��foor�z-Directory pointed to by a symlink was deletedz	test0.txtz>Contents of the directory pointed to by a symlink were deleted)rrH�symlinkrUr-r�r�r�r�rRrNr�)r�d1�d2s   r�(test_cleanup_with_symlink_to_a_directoryz?TestTemporaryDirectory.test_cleanup_with_symlink_to_a_directory�s����^�^�
��
�^�^�A�^�
&��	�
�
�2�7�7�B�G�G�L�L����%�8�9�	�
�
�������������0�E����O�	Q���������r�w�w�/�G�	I�������B�G�G�,�{�m�(�	)�	�
�
�rc�����jd��5}tjj|d�}t	|d�j�tjj|d�}tj|�td�D�]���dz��jt�d��	�5��fd
�}�jd�5|dd
��ddd��jd�5|dd��ddd��jd�5tj|��tj|�j}||d
��tj|�j}�j||d||fz�ddd��jd�5tj|��tj|�j}||d��tj|�j}�j||d||fz�ddd�ddd����	ddd�y#1swY��cxYw#1swY��LxYw#1swY��xYw#1swY�DxYw#1swY���xYw#1swYyxYw)Nrr��file1r�r��r;�03or�c����jd��}tjj|jd�}tj
|||��	tj|�d��	tj|��tj|j��|j��jtjj|j��y#t$rY��wxYw#t$rY��wxYw�Nrr�r���target_is_directoryF)�follow_symlinks)rrHr-r�rUr�r��NotImplementedErrorr�r�r�r�)�targetr�r�r�r�rs    ��r�testzDTestTemporaryDirectory.test_cleanup_with_symlink_modes.<locals>.test�s����!�^�^�A�^�6��"$�'�'�,�,�r�w�w�	�"B���
�
�6�7�4G�I�!��H�H�W�d�E�J�!��H�H�W�d�3�������$�/��
�
���(�(���������)@�A�� 3�!� �!�� 1�!� �!��$�C/�0C>�/	C;�:C;�>	D
�	D
�nonexisting file�nonexistingFr��nonexisting dirT�
existing filez%03o != %03o�existing dir)rrHr-r�r�r�r�r�r��formatr�r�r�rN)rr�r�r�r��old_mode�new_moder�s`      @r�test_cleanup_with_symlink_modesz6TestTemporaryDirectory.test_cleanup_with_symlink_modes�s>����^�^�A�^�
&�,	P�"��G�G�L�L��W�-�E�����#�#�%��7�7�<�<��F�+�D��H�H�T�N��a��'
P����
���\�\�v�d�E�':�\�;�%P�B�"���&8�9�G��]��F�G����&7�8�F��]��E�F����o�6�P������-�#%�7�7�5�>�#9�#9���U��>�#%�7�7�5�>�#9�#9���(�(��8�)7�8�X�:N�)N�P�P����n�5�P�����t�,�#%�7�7�4�=�#8�#8���T�t�<�#%�7�7�4�=�#8�#8���(�(��8�)7�8�X�:N�)N�P�P�?%P�%P�'
P�,	P�,	P�2G�G��F�F��P�P��P�P��?%P�%P��,	P�,	P�s��B I8�5I+�
H9	�I+�1I	�<I+�A7I	�I+�%A7I	�I+�$I8�9I
�>I+�I
�I+�I
�I+�I(
�$I+�+I5�0I8�8J�chflagszrequires os.chflagsc����tjtjz��j���j	d��5}t
jj|d�}t|d�j�t
jj|d�}tj|���fd�}�jd�5|dd	�
�ddd��jd�5|dd�
�ddd��jd
�5tj|��tj|�j}||d	�
�tj|�j}�j||�ddd��jd�5tj|��tj|�j}||d�
�tj|�j}�j||�ddd�ddd�y#1swY��KxYw#1swY��4xYw#1swY��xYw#1swY�8xYw#1swYyxYw)Nrr�r�r�r�c����jd��}tjj|jd�}tj
|||��	tj|�d��	tj|��tj|j��|j��jtjj|j��y#t$rY��wxYw#t$rY��wxYwr�)rrHr-r�rUr�r�r�r�r�r�r�)r�r�r�r�r
rs    ��rr�zDTestTemporaryDirectory.test_cleanup_with_symlink_flags.<locals>.test�s�����^�^�A�^�.���'�'�,�,�r�w�w�	�:���
�
�6�7�/B�D���J�J�w��u�E���J�J�w��.��
�
�2�7�7�E�*��
�
��� � ���������!8�9��+�����)����r�r�r�Fr�r�Tr�r�)r��UF_IMMUTABLE�UF_NOUNLINK�check_flagsrrHr-r�r�r�r�r�r��st_flagsrN)rr�r�r�r��	old_flags�	new_flagsr
s`      @r�test_cleanup_with_symlink_flagsz6TestTemporaryDirectory.test_cleanup_with_symlink_flags�s�����!�!�D�$4�$4�4�������
�^�^�A�^�
&�'	7�"��G�G�L�L��W�-�E�����#�#�%��7�7�<�<��F�+�D��H�H�T�N�
:�"���0�1�
?��]��>�
?����/�0�
>��]��=�
>����o�.�
7��
�
�5�%�(��G�G�E�N�3�3�	��U��6��G�G�E�N�3�3�	�� � ��I�6�
7����n�-�
7��
�
�4��'��G�G�D�M�2�2�	��T�t�4��G�G�D�M�2�2�	�� � ��I�6�
7�E'	7�'	7�,
?�
?��
>�
>��
7�
7��
7�
7��E'	7�'	7�so�BI�H"�I�2H/�=I�A1H<�I� A1I�I�"H,	�'I�/H9	�4I�<I	�I�I	�
I�Ic�.�tj�}	|j|��}|j}~|j	t
jj|�d|z�tj|�y#tj|�wxYw)Nr��*TemporaryDirectory %s exists after __del__)	rrhrrUr�rHr-r�r5�rrVrurUs    r�test_del_on_collectionz-TestTemporaryDirectory.test_del_on_collection�sr����� ��	����3��'�A��6�6�D�����R�W�W�^�^�D�1�D�t�K�
M�
�H�H�S�M��B�H�H�S�M�s�AA=�=Bc
��	tj�5}|j|d��}tj|j
�}|j
|j�d|�d��t|dzd�5}|jd�~ddd�|jtt|jd���ttj j#d	��d
|���|j|j�tj j#d	�d|�d��ddd�y#1swY��xYw#1swYyxYw)NTr�r�r�r�r�r�r�r�r�r�)rrqrr$r%rUrRr�r�r�rNrJr.r�r<r>r?r�r�s     r�$test_del_on_collection_ignore_errorsz;TestTemporaryDirectory.test_del_on_collection_ignore_errorss?��N�
�
(�
(�
*�	P�k��~�~��t�&�=�H����X�]�]�3�I��O�O�I�,�,�.�1�)��o�N�
P��i�,�.��6�
�)���� 0�1��
�
���S��i�n�n�S�&9�!:�;� ����!8�!8��!?�@�3�3<�-�A�
B�
���� � �"����'�'��.�%�i�]�2M�N�
P�	P�	P�
�
��
	P�	P�s%�A&E�<D?�B'E�?E	�E�Ec���|j�5}dD]�}dj||��}tjd|�\}}}|j	�j�}|j
tjj|�d|z�|j	dd�}|jd|�|jd	|���	ddd�y#1swYyxYw)
N)�builtinsrH�shutilr>rrBa�if True:
                    import builtins
                    import os
                    import shutil
                    import sys
                    import tempfile
                    import warnings

                    tmp = tempfile.TemporaryDirectory(dir={dir!r})
                    sys.stdout.buffer.write(tmp.name.encode())

                    tmp2 = os.path.join(tmp.name, 'test_dir')
                    os.mkdir(tmp2)
                    with open(os.path.join(tmp2, "test0.txt"), "w") as f:
                        f.write("Hello world!")

                    {mod}.tmp = tmp

                    warnings.filterwarnings("always", category=ResourceWarning)
                    )rVr��-cr�rg�backslashreplace�
Exception �'ResourceWarning: Implicitly cleaning up�rr�r�assert_python_okr��stripr�rHr-r�r�r�)rrVr��code�rc�out�errr�s        r�test_del_on_shutdownz+TestTemporaryDirectory.test_del_on_shutdowns���
�^�^�
�	N��R�
N���&��3�C��0�'�( -�=�=�d�D�I���C���:�:�<�-�-�/��� � �������!9�H�8�S�U��j�j��*<�=��� � ��s�3��
�
�G��M�7
N�	N�	N�	N�s�B;C�Cc
���	tj�5}dj|��}tjd|�\}}}tj|j�j��}|jtt|jd���ttjj!d��d|���|j|j#�tjj!d�d|�d��|jd	d
�}|j%d|�|j%d|�|j'd
|�ddd�y#1swYyxYw)Na�if True:
                import pathlib
                import sys
                import tempfile
                import warnings

                temp_dir = tempfile.TemporaryDirectory(
                    dir={working_dir!r}, ignore_cleanup_errors=True)
                sys.stdout.buffer.write(temp_dir.name.encode())

                temp_dir_2 = pathlib.Path(temp_dir.name) / "test_dir"
                temp_dir_2.mkdir()
                with open(temp_dir_2 / "test0.txt", "w") as test_file:
                    test_file.write("Hello world!")
                open_file = open(temp_dir_2 / "open_file.txt", "w")
                open_file.write("Hello world!")

                warnings.filterwarnings("always", category=ResourceWarning)
                )r�r�r�r�r�r�r�rgr�	Exception�Errorr)rrqr�rrr$r%r�rrNrJr.r�r<r>r?r�r�r�r�)rr�r�__rr	r�s       r�"test_del_on_shutdown_ignore_errorsz9TestTemporaryDirectory.test_del_on_shutdown_ignore_errors:sE��M�
�
(�
(�
*�!	J�k��$�F�{�F�3�%
�&)�9�9�$��E�L�B��S����S�Z�Z�\�%7�%7�%9�:�I����S��i�n�n�S�&9�!:�;� ����!8�!8��!?�@�3�3<�-�A�
B�
���� � �"����'�'��.�%�i�]�2M�N�
P��*�*�W�&8�9�C����[�#�.����W�c�*��M�M�C�S�I�C!	J�!	J�!	J�s�EE$�$E-c��|j�5}dj|��}tjd|�\}}}|j	�j�}|j
tjj|�d|z�|j	dd�}|jd|�|jd|�ddd�y#1swYyxYw)	Na�if True:
                import sys
                import tempfile
                import warnings

                def generator():
                    with tempfile.TemporaryDirectory(dir={dir!r}) as tmp:
                        yield tmp
                g = generator()
                sys.stdout.buffer.write(next(g).encode())

                warnings.filterwarnings("always", category=ResourceWarning)
                r�r�r�rgrrrr)rrVrrrr	r�s       r�test_exit_on_shutdownz,TestTemporaryDirectory.test_exit_on_shutdown_s���
�^�^�
�	J����F�s�F�O�
�)�9�9�$��E�L�B��S��z�z�|�)�)�+�H����R�W�W�^�^�H�5�D�x�O�
Q��*�*�W�&8�9�C����\�3�/��M�M�C�S�I�)	J�	J�	J�s�B3C
�
Cc��|j�5}|j|d��}|j}tjdtfd��5tjdt��~tj�ddd�|jtjj|�d|z�ddd�y#1swY�DxYw#1swYyxYw)	N�)rVr��
ImplicitlyF)�quiet�always)r=r�)
rrUrrArArBrCrr4r�rHr-r�r�s    r�test_warnings_on_cleanupz/TestTemporaryDirectory.test_warnings_on_cleanupws���
�^�^�
�	M�����3���2�A��6�6�D�!�/�/��1@�1B�6;�=�
%��'�'��?�K���"�"�$�
%�
���R�W�W�^�^�D�1�D�t�K�
M�	M�	M�

%�
%��	M�	M�s#�=C�1C�?:C�C	�C�Cc��|j�}|j�|j�|j�yr+)rr�r|s  rr�z*TestTemporaryDirectory.test_multiple_close�s)���N�N���	�	�	��	�	�	��	�	�	�rc�B�|j�}|5}|jtjj	|��|j||j�ddd�|jtjj	��y#1swY�8xYwr+)rrRrHr-r�rNrUr�)rrurUs   rr�z+TestTemporaryDirectory.test_context_manager�sr���N�N���
�	+�$��O�O�B�G�G�N�N�4�0�1����T�1�6�6�*�	+�	
���������-�.�	+�	+�s�AB�Bc�r�td�D�]}|dz}|jt|d���5|jddd��}|5t	j
|jd�	�D]W\}}}|D]6}t	jtjj||�|��8t	j||��Y|j�ddd�|jtjj|j��ddd���y#1swY�MxYw#1swY��*xYw)
Nr�r;r�r�rr�r�r�r�F��topdown)
r�r�r�rrH�walkrUr�r-r�r�r�r�)rr�ru�rootr�r�rUs       r�
test_modesz!TestTemporaryDirectory.test_modes�s���!�H�	9�D��Q�J�D����6�$��#6��7�	
9��N�N�1�1�A�N�>��� �-/�W�W�Q�V�V�U�-K�-�)��d�E�$)�E�D��H�H�R�W�W�\�\�$��%=�t�D�E�����t�,�-��I�I�K�
 �� � ���������!7�8�	
9�	
9�	9� � ��	
9�	
9�s%�D,�BD �AD,� D)�%D,�,D6	c�n�tj}	t|d�j�	t	j
||�t	j
|d�tj|�y#t$r"}|jd|d�d|���Yd}~�<d}~wwxYw#tj|�wxYw)Nrrz chflags() doesn't support flags z#bz: )	r�TESTFNr�r�rHr�r�r�r)rr
r=�excs    rr�z"TestTemporaryDirectory.check_flags�s����#�#��	'���3��%�%�'�
(��
�
�8�U�+��
�
�8�Q�'����X�&���
4��
�
� @�!&�r�
�"�S�E�3�4�4��
4��
���X�&�s4�B�A/�B�/	B�8B�B�B�B�B4c	�D�tjtjz}|j|�|j	ddd��}|5tj|jd��D]W\}}}|D]6}tjt
jj||�|��8tj||��Y|j�ddd�|jt
jj|j��y#1swY�BxYw)NrrrFr)r�r�r�r�rrHrrUr�r-r�r�r�r�)rr
rurr�r�rUs       r�
test_flagsz!TestTemporaryDirectory.test_flags�s����!�!�D�$4�$4�4��������N�N�1�1�A�N�6��
�	�%'�W�W�Q�V�V�U�%C�
(�!��d�E�!�@�D��J�J�r�w�w�|�|�D�$�7��?�@��
�
�4��'�
(�
�I�I�K�
	�	
�����������/�0�	�	�s
�	BD�Dc���tjd��5}	ddd�|jtjj��t
j|�y#1swY�MxYw)NFr�)rrqrRrHr-r�r�r�)rr�s  r�test_delete_falsez(TestTemporaryDirectory.test_delete_false�sO��
�
(�
(��
6�	�+��	���������{�3�4��
�
�k�"�	�	�s�A%�%A.)NrrrdrdrdF)rdrdrd)"r2r3r4rr�r�r�r�rrerHrUr�r�r�skip_unless_symlinkr�r��hasattrr�r�cpython_onlyr�r�r
rrrr�r�r r�r%r'r5rrr�r�$s���$�KL�(-�	�	)�;��J�0�X������D��*<�=�'�>�'��X������D��*<�=�	'�>�	'��"�"��#��(�"�"�.P�#�.P�`�X�����Y�/�1F�G��"�"�,7�#�H�,7�\
���
��
�
���P��P�(N�@#J�JJ�0M� �/�9�'� �X�����Y�/�1F�G�1�H�1�#rr��__main__)9rr�rrHr$r>r_rB�
contextlibr�rr�r�r�rrr�r�test.supportrrrrrrhr)rfr?r�r��TestCaser
r9rbr{r�r�r��contextmanagerr�r�r�rrjrxr�r�r�r�rrerfr�r�r�r2�mainr5rr�<module>r1s�����	�	��
�	������	�
����"�&�(��(�(�H�,C�,C�C��
�R��
"�
��<�<���9�%��J��J�.7�H�-�-�.7�d,2�8�$�$�,2�^7�,�7�<;7�\�;7�~")�|�")�TI�L�I�@
 �L�
 � ������2� %� %�Fn2�~�|�n2�b���@+4�\�+4�\[,�,�[,�|M�.�,�M�`0��0�|_.�\�_.�FC*�|�C*�J
���h�&<�&<�<�I2�L�I2�Z
�
� c#�\�c#�J
�z���H�M�M�O�r