Sindbad~EG File Manager

Current Path : /proc/2568807/root/usr/local/lib/python3.12/test/__pycache__/
Upload File :
Current File : //proc/2568807/root/usr/local/lib/python3.12/test/__pycache__/test_tempfile.cpython-312.pyc

�

'Μg+���ddlZddlZddlZddlZddlZddlZddlZddlZddlZddl	Z	ddl
Z
ddlZddlZddl
Z
ddlZddlmZddlZddlmZddlmZddlmZddlmZej.ej0k7Zeed�Zej8j;d�rd	Znd
ZGd�dej>�Z Gd
�dej>�Z!Gd�de!�Z"Gd�de!�Z#Gd�de!�Z$Gd�de!�Z%Gd�de!�Z&ejNd��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!�Z0Gd)�d*e!�Z1Gd+�d,e!�Z2ejfejhurGd-�d.e!�Z5Gd/�d0�Z6Gd1�d2e!�Z7e8d3k(rejr�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 �//usr/local/lib/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�
)��'�'��C�0�*�
�
�
�y�
)��'�'��R�0�*�
)�*�
)��
)�
)�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_none6s����
�
�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�
)��'�'��D�#�6�*�
�
�
�y�
)��'�'��T�2�6�*�
)�*�
)��
)�
)�s�(D>�E
�>E�
Ec�|�|jttjt	j
d���y)N�/)rrrrr�FakePathrs r�test_infer_return_type_pathlibz4TestLowLevelInternals.test_infer_return_type_pathlibAs&���
�
�c�8�6�6�y�7I�7I�#�7N�O�Prc	�x�tj}|jtt	j
|d���|jtt	j
|d���|jtt	j
d|d���|jtt	j
d|d���|jtt	j
d|d���|jtt	j
d|d���|jt�5t	j
d|d��ddd�|jt�5t	j
d|d��ddd�y#1swY�DxYw#1swYyxYw)Nr#�/rr)	rr$rrrrrrr)r�Paths  r�test_infer_return_type_pathlikez5TestLowLevelInternals.test_infer_return_type_pathlikeDs$���!�!���
�
�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�
)��'�'��D��I�6�*�
�
�
�y�
)��'�'��T�"�X�6�*�
)�*�
)��
)�
)�s�F$�>F0�$F-�0F9N)�__name__�
__module__�__qualname__rrr!r%r)�rrr
r
(s��>�
1�	7�Q�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�RuntimeWarningr*rs r�setUpzBaseTestCase.setUpYs1�����/�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 )�os�path�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.nameCheck^s������
�
�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)	r*r+r,�re�compilerGrHr;rUr-rrr/r/Ts/����
�
�-�.�I��b�j�j�,�-�G�C�
"2rr/c��eZdZd�Zy)�TestExportsc���tj}ddddddddddddddd�}g}|D]!}|ddk7s�||vs�|j|��#|jt	|�dk(d|z�y)N�)�NamedTemporaryFile�
TemporaryFile�mkstemp�mkdtempr2�TMP_MAX�
gettempprefix�gettempprefixb�
gettempdir�gettempdirb�tempdir�template�SpooledTemporaryFile�TemporaryDirectoryr�_zunexpected keys: %s)r�__dict__�appendrIrA)r�dict�expected�unexp�keys     r�test_exportszTestExports.test_exports�s���� � ��$%������� �����%&�#$�
��"���C��1�v��}��H�!4����S�!��	
����E�
�a��-��5�	7rN)r*r+r,rpr-rrrYrY�s��7rrYc�b��eZdZdZ�fd�Zd�Zd�Zd�Zej�d��Z
�xZS)�TestRandomNameSequencez6Test the internal iterator object _RandomNameSequence.c�T��tj�|_t�|��y�N)r�_RandomNameSequence�r�superr;�r�	__class__s �rr;zTestRandomNameSequence.setUp�s����-�-�/���
��
�rc�V�t|j�}|j|ddd�y�Nr)�nextrvrU)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)Nrr[)rv�range�
TEST_FILESr|rU�assertNotIn)rrlrv�ir}s     r�	test_manyz TestRandomNameSequence.test_many�sU�����F�F���z�"�A��Q��A��N�N�1�b�"�b�)����Q��%��D��G�	#rc�F�d}|j}|D]}|dz
}|dk(s�yy)Nrr[�)rv)rr�rvr}s    r�
supports_iterz$TestRandomNameSequence.supports_iter�s/��
���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)r>�pipe�fork�close�writer|rv�encode�_exit�readrA�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)r*r+r,�__doc__r;r~r�r�r�
requires_forkr��
__classcell__�rys@rrrrr�s9���@��&�
	���W����7��7rrrc��eZdZdZd�Zd�Zy)�TestCandidateTempdirListz3Test the internal function _candidate_tempdir_list.c��tj�}|jt|�dk(�|D]}|j	|t
��y�Nr)r�_candidate_tempdir_list�assertFalserA�assertIsInstancer)r�cand�cs   r�test_nonempty_listz+TestCandidateTempdirList.test_nonempty_list�sB���/�/�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�EnvironmentVarGuardr>�getenvr?rFrr��
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�3�5�D�2���)�)�G�,���j� 0��
�
�g�t�,�3�

$��)�)�+��
�M�M�'�4�(�%-�
,��#�G�,�
$��)�)��
$��-�
,�s5�C6�A.C6�"C�6C6�C3�0C6�2C3�3C6�6C?N)r*r+r,r�r�r�r-rrr�r��s��=�*�)rr�c��eZdZdZd�Zy)�TestGetDefaultTempdirzTest _get_default_tempdir().c	���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�
���gSrtr-)�our_temp_directorys�r�our_candidate_listzKTestGetDefaultTempdir.test_no_files_left_behind.<locals>.our_candidate_lists���*�+�+rr�c��t��rt)r�)�args�kwargss  r�
raise_OSErrorzFTestGetDefaultTempdir.test_no_files_left_behind.<locals>.raise_OSErrors	��!�)�Or�openr�)
rrhr�	swap_attr�_get_default_tempdirrEr>�listdirr�FileNotFoundError)rr�r�r�s   @r�test_no_files_left_behindz/TestGetDefaultTempdir.test_no_files_left_behind
sK���
�
(�
(�
*�.@�
,��"�"�8�-F�#5�7��-�-�/�� � ����,>�!?��D�$��&�&�r�6�=�A��*�*�+<�=� �5�5�7�>��$�$�R�Z�Z�0B�%C�R�H�	B��&�&�r�7�M�B��*�*�+<�=� �5�5�7�>��$�$�R�Z�Z�0B�%C�R�H�	C�7�+�
*� >�=��B�A��>�=��C�B��7�7��+�
*�s��!F7�AF+�F�%E;	�:-F�'#F+�
F� F	�5-F�"F+�*F7�;F
�F�F�F+�F
�F�F(�$F+�+F4	�0F7�7GN)r*r+r,r�r�r-rrr�r�
s��&�Irr�c��eZdZdZd�Zd�Zy)�TestGetCandidateNamesz0Test the internal function _get_candidate_names.c�l�tj�}|j|tj�yrt)r�_get_candidate_namesr�ru)r�objs  r�test_retvalz!TestGetCandidateNames.test_retval-s&���+�+�-�����c�8�#?�#?�@rc�z�tj�}tj�}|j||u�yrt)rr�rI)r�a�bs   r�test_same_thingz%TestGetCandidateNames.test_same_thing2s.���)�)�+���)�)�+������Q��rN)r*r+r,r�r�r�r-rrr�r�*s��:�A�
 rr�c#�K�tj�}	tjtd|�5d��ddd�t	j
|�y#1swY�xYw#t	j
|�wxYw�w)Nre)rr_rr�r�rmtree�rMs r�_inside_empty_temp_dirr�:s\����
�
�
�
�C��
�
�
�x��C�
8��9�	�����9�
8��	�����s2�A<�A"�A�A"�A<�A�A"�"A9�9A<c�@��tjtd�fd��S)Nr�c���t��Srt)�iter��namess�r�<lambda>z'_mock_candidate_names.<locals>.<lambda>Gs	���T�%�[r)rr�rr�s`r�_mock_candidate_namesr�Ds������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�r>�statrre�st_mode�S_IWUSR�S_IWGRP�S_IWOTH�chmod�access�W_OK�skipTestr�PermissionError�	make_temprEr�)r�oldmode�modes   r�test_read_only_directoryz'TestBadTempdir.test_read_only_directoryLs��$�
%��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�$�8�� � ����H�,<�,<�!=�r�B�����)�)�7�3�&�
%�8�7������)�)�7�3��&�
%�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�nonexistentre)r�r>r?�joinrrerr�rr�r��rres  r�test_nonexisting_directoryz)TestBadTempdir.test_nonexisting_directory]s|��
#�
%��g�g�l�l�8�#3�#3�]�C�G��"�"�8�Y��@��&�&�'8�9��N�N�$�:�A�&�
%�:�9��A�@��&�
%�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�wbre)r�r>r?r�rrer�r�rr�r�NotADirectoryErrorr�r�r�s  r�test_non_directoryz!TestBadTempdir.test_non_directoryds���
#�
%��g�g�l�l�8�#3�#3�V�<�G���$��%�%�'��"�"�8�Y��@��&�&�(:�<M�'N�O��N�N�$�P�A�&�
%�P�O��A�@��&�
%�s<�A$C
�/C�B5�C�$C
�5B>�:C�C
	�C
�
CN)
r*r+r,�unittest�skipIfr�
is_emscriptenr�r�r�r-rrr�r�Js5���X�_�_����E��4��4�%�%rr�c��eZdZdZGd�d�Zdd�Zd�Zd�Zd�Zd	�Z	e
jd
��Ze
jed�ej"�d���Ze
jed
�d��Zd�Zd�Zd�Zy)�TestMkstempInnerz*Test the internal function _mkstemp_inner.c�~�eZdZejZejZejZ
ejZd�Z
d�Zd�Zy)�TestMkstempInner.mkstempedc��|r
|j}n|j}tj|||�}tj|||||�\|_|_yrt)�_bflags�_tflagsrr�_mkstemp_inner�fdrL)rrMrNrO�bin�flags�output_types       r�__init__z#TestMkstempInner.mkstemped.__init__vsL���D�L�L�E� �L�L�E�"�5�5�c�3��D�K�#+�#:�#:�3��S�%�Q\�#]� �T�W�d�irc�D�tj|j|�yrt)r>r�r)rrs  rr�z TestMkstempInner.mkstemped.write}s���H�H�T�W�W�c�"rc�p�|j|j�|j|j�yrt)�_closer�_unlinkrLrs r�__del__z"TestMkstempInner.mkstemped.__del__�s"���K�K���� ��L�L����#rN)r*r+r,r�_bin_openflagsr�_text_openflagsrr>r�r�unlinkrrr�r
r-rr�	mkstempedr�ps:���)�)���*�*�������)�)��	^�	#�	$rrNc�"�tj|||�}|�1|turtj�}ntj�}|�|�}|�|�}|j||||�}|j
|j|||�|Srt)rrrrcrdrrUrL)rrMrNrOrrr�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��rNr��rO�rNrO�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�rMrOr�a�rMrN�b�rMrNrO�aa�.txtr)rrdrr�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�
)��N�N�u�#�2�N�6�<�<�W�E�*�
)�	*�
)��
)�
)��
)�
)�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�s/���e�J�'�(���A����4��0�F�1�I�rc��tj�}	|j|��jd�|jt	j
|���jd�t
j�tj|�y#t
j�tj|�wxYw�Nr�r)
rr_rr�rr$r�
gc_collectr>�rmdir�rrMs  r�test_choose_directoryz&TestMkstempInner.test_choose_directory�s������ ��	��N�N�s�N�#�)�)�'�2��N�N�y�1�1�#�6�N�7�=�=�g�F���� ��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_IMODEr>rLr��sys�platformrE)rr�r�rm�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.pyr4z"%s"z$child process caught fatal signal %dz child process reports failure %d)r�verboserrEr>�get_inheritabler�__file__�	NameErrorr8�argvr?r�r�rFr9�
executabler�P_WAITr�)rr=r�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)rsblatsextra
r�r)rr�r>�lseekr�SEEK_SETrEr��r�fs  r�
test_textmodezTestMkstempInner.test_textmode�sc��

�N�N�q�N�!��	�����	���
��
������q�"�+�+�&����������r�*�G�4rc��tjtj�tj�dtjt
�Sr{)rrrcrarrrs rr�zTestMkstempInner.make_temp�s;���&�&�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�r>r�rI�endswith)r�fd1�name1�fd2�name2s     r�!test_collision_with_existing_filez2TestMkstempInner.test_collision_with_existing_files���$�
%�
"�5�%��
7��>�>�+�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�8�&�
%�
7�
7��&�
%�s#�C�BB;�*C�;C	�C�Cc�~�t�5tddd�5tj�}|j	|jd��|j
�\}}tj|�|j	|jd��ddd�ddd�y#1swY�xYw#1swYyxYwrS)	r�r�rr_rIrVr�r>r�)rrMrrLs    r�&test_collision_with_existing_directoryz7TestMkstempInner.test_collision_with_existing_directorys���$�
%�
"�5�%��
7��"�"�$�C��O�O�C�L�L��/�0����)�J�R���H�H�R�L��O�O�D�M�M�%�0�1�
8�&�
%�
7�
7��&�
%�s#�B3�A=B'�B3�'B0	�,B3�3B<)NNNr[)r*r+r,r�rrrr%r+r1r�skip_unless_working_chmodr;r��
skipUnless�
has_spawnlr�requires_subprocessrJ�has_textmoderPr�r[r]r-rrr�r�ms���4�$�$�(� <�F�"1���(�(�)�)�)��X����%>�?� �W� � �"�#P�#�@�#P�J�X����'@�A�5�B�5�,�3�
2rr�c��eZdZdZd�Zd�Zy)�TestGetTempPrefixzTest gettempprefix().c��tj�}|j|t�|j	t|�d�tj�}|j|t�|j	t|�d�yr�)rrar�r�
assertGreaterrArbr)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)rrar_r>r?r�r��O_RDWR�O_CREATr�rr/)rrg�drs    r�test_usable_templatez&TestGetTempPrefix.test_usable_template-s���
�"�"�$�|�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)r*r+r,r�rirpr-rrrdrds���
'�rrdc�(�eZdZdZd�Zd�Zd�Zd�Zy)�TestGetTempDirzTest gettempdir().c�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)	rrcrdrIr>r?�isabsr��isdir�rros  r�test_directory_existsz$TestGetTempDir.test_directory_existsAsy���%�%�'��)=�)=�)?�@�A��O�O�B�G�G�M�M�!�,�>��R�Y�Y��8�1�<�
>��O�O�B�G�G�M�M�!�,�3�a�7�
9�Arc�x�tj�5}|jd�ddd�y#1swYyxYw)Nr)rr\r�)rr�s  r�test_directory_writablez&TestGetTempDir.test_directory_writableJs*���
(�
(�
*�d��J�J�w��+�
*�
*�s�0�9c�4�tj�}tj�}tj�}|j||u�|j	t|�t|��|j
|tj|��yrt)	rrcrdrIr�rBrEr>�fsdecode)rr�r�r�s    rr�zTestGetTempDir.test_same_thingSsl�����!�����!��� � �"������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�)rr_rerr�rErcr/)r�case_sensitive_tempdir�_tempdirr�s    r�test_case_sensitivez"TestGetTempDir.test_case_sensitive]s���"*�!1�!1�'�!:��%-�%5�%5�t�"��(�"�	4��.�.�0�C� 6��H�
�� � ��!4�!4�!6�8N�O�1�
 (�H���O�O�2�3�
1�0��
 (�H���O�O�2�3�s#�B&�*B�1B&�B#�B&�&"CN)r*r+r,r�rwryr�rr-rrrrrr>s���9� �,�4rrrc�0�eZdZdZdd�Zd�Zd�Zd�Zd�Zy)	�TestMkstempzTest mkstemp().Nc	��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�rMrl�suffixzDirectory 'z' incorrectly returned as '�')rrrrcrdr^r>r?r@rFrErUr�r)
rrMrNrOrrrLrPrQ�adirs
          rrzTestMkstemp.do_createos����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 rrzTestMkstemp.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)Nrrrrr r!r"r#�.r�r�rr)rrdrrrrvs  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�)rr_rrr$r>r/r0s  rr1z!TestMkstemp.test_choose_directory�sS����� ��	��N�N�s�N�#��N�N�y�1�1�#�6�N�7��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-rkr�)rrer�rrBr^r>r�rrdrrc)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)�)
J6r=)	r*r+r,r�rrr%r1r�r-rrr�r�ls����. �<�$�,rr�c��eZdZdZd�Zdd�Zd�Zd�Zd�Zd�Z	e
jd	��Ze
jej d
k(d�d��Zd
�Zd�Zd�Zd�Zy)�TestMkdtempzTest mkdtemp().c�*�tj�Srt)rr_rs rr�zTestMkdtemp.make_temp�s�����!�!rNc�N�tj|||�}|�1|turtj�}ntj�}|�|�}|�|�}tj
|||��}	|j
||||�|S#tj|��xYw)Nr�)	rrrrcrdr_rUr>r/)rrMrNrOrrLs      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)r>r/rrs rrzTestMkdtemp.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�rrr rr!r"r#rrr)rrdr>r/rrrrvs  rr%z'TestMkdtemp.test_basic_with_bytes_names�s3��� � �"��
������A��&�'�
������A�4��0�1�
������A�4��0�1�
������A�4�T��:�;�
������A�5�g��>�?�
�
�
�y�
)��H�H�T�^�^��t��^�A�B�*�
�
�
�y�
)��H�H�T�^�^��u�&�^�A�B�*�
�
�
�y�
)��H�H�T�^�^���7�^�C�D�*�
)�	*�
)��
)�
)��
)�
)�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�rrCrr>r/r)s   rr+zTestMkdtemp.test_basic_many�su���e�J�'�(��	 ��� �N�N�t�N�4��q�	�����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�)rr_r>r/rrr$r0s  rr1z!TestMkdtemp.test_choose_directoryse����� ��	��H�H�T�^�^��^�,�-��H�H�T�^�^�	�(:�(:�3�(?�^�@�A��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�r4r5r6)	rr�r7r>r�r8r9rEr/)rrMr�rmr: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'�nt�Only on Windows.c��|j�}	tjd|gd��j�}t	j
|�|j�}t
�}d}|j�j�D]�}d}|j|�r |j|�j�}n%|r#|ddj�r|j�}|s�^|j|jd�d���|jdj�|�y#t	j
|�wxYw)	Nz
icacls.exe�oem��encodingFr[�:rz
BUILTIN\Users)r�
subprocess�check_output�casefoldr>r/�set�strip�
splitlines�
startswith�removeprefix�isspace�add�	partitionr�)rrM�out�users�
found_user�line�acls       r�test_mode_win32zTestMkdtemp.test_mode_win32!s���n�n���	��)�)�<��*=��N�W�W�Y�C��H�H�S�M��l�l�n������
��I�I�K�*�*�,�D��C����s�#��'�'��,�2�2�4���$�r��(�*�*�,��j�j�l����	�	�#�-�-��,�Q�/�0�-�	
���)�2�2�4�e�<��
�H�H�S�M�s�'D,�,Ec��t�5tddd�5tjd��}|j	�|j|jjd��tj�}|j|jd��ddd�ddd�y#1swY�xYw#1swYyxYw)NrTrUF��delete)	r�r�rr\r�rIrLrVr_)rr�rMs   rr[z-TestMkdtemp.test_collision_with_existing_file<s���$�
%�
"�5�%��
7��.�.�e�<�D��J�J�L��O�O�D�I�I�.�.�u�5�6��"�"�$�C��O�O�C�L�L��/�0�8�&�
%�
7�
7��&�
%�s#�B;�BB/�B;�/B8	�4B;�;Cc�V�t�5tddd�5tj�}|j	|jd��tj�}|j	|jd��ddd�ddd�y#1swY�xYw#1swYyxYwrS)r�r�rr_rIrV)r�dir1�dir2s   rr]z2TestMkdtemp.test_collision_with_existing_directoryGsy��$�
%�
"�5�%��
7��#�#�%�D��O�O�D�M�M�%�0�1��#�#�%�D��O�O�D�M�M�%�0�1�	8�&�
%�
7�
7��&�
%�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-rkr�)rrer�rrBr_r>r/rdrrc)rr�r?s   rr�z:TestMkdtemp.test_for_tempdir_is_bytes_issue40701_api_wartsQsw���'�'�����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�)rr_rIr>r?rtr/)rr?s  r�test_path_is_absolutez!TestMkdtemp.test_path_is_absoluteksG��	��#�#��,�D��O�O�B�G�G�M�M�$�/�0��H�H�T�N��B�H�H�T�N�s�AA�A3r=)r*r+r,r�r�rrr%r+r1rr^r�r�r_r>rLr�r[r]r�r�r-rrr�r��s~���"��(7�
E�	 ���(�(��)��"�X������D��*<�=�=�>�=�4	1�2�,�4rr�c�T��eZdZdZ�fd�Z�fd�ZGd�d�Zd	d�Zd�Zd�Z	�xZ
S)
�
TestMktempzTest mktemp().c�T��tj�|_t�|��yrt)rr_rMrwr;rxs �rr;zTestMktemp.setUpzs����#�#�%���
��
�rc���|jr&tj|j�d|_t�|��yrt)rMr>r/rw�tearDownrxs �rr�zTestMktemp.tearDown~s,����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�r3)rr2rLr>r�r�r)rrMrNrOs    rrzTestMktemp.mktemped.__init__�s9�� ���C��C�H�D�I�
�H�H�R�W�W�T�Y�Y����e�<�=rc�:�|j|j�yrt)rrLrs rr
zTestMktemp.mktemped.__del__�s���L�L����#rN)r*r+r,r>rrrrrrr
r-rr�mktempedr��s ���)�)���)�)��	>�	$rr�c��|j|j||�}|j|j|j||�|Srt)r�rMrUrL)rrNrOr�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 rrzTestMktemp.test_basic��H���������3������3������3�C��(����4�V��,rc��ttt��}|D]}|jd��||<�~t	j
�yr')r(r�r�rrr.r)s   rr�zTestMktemp.test_many�s>���e�J�'�(���A����4��0�F�1�I������r)rr)r*r+r,r�r;r�r�rrr�r�r�s@rr�r�us)������$�$��-�rr�c�x�eZdZdZdd�Zd�Zd�Zd�Zd�Zd�Z	d	�Z
d
�Zd�Zd�Z
d
�Zd�Zd�Zd�Zd�Zd�Zd�Zy)�TestNamedTemporaryFilezTest NamedTemporaryFile().Nc��|�tj�}tj||||��}|j|j|||�|S)N)rMrlr�r�)rrcr\rUrL)rrMrNrOr�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 rrz!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)rrO�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)rr\r�r��seek)rO�liness �r�	make_filez3TestNamedTemporaryFile.test_iter.<locals>.make_file�s7����+�+��7�A�
�G�G�C�H�H�U�O�$�
�F�F�1�I��Hrr[)�	enumeraterErA)rr�r��lr�s    @r�	test_iterz TestNamedTemporaryFile.test_iter�sR���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)rr\rIr>r?�existsrLrNs  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)rr_r\r�rEr>r�r�r?r�rLr/�rrMrOs   r�test_del_on_closez(TestNamedTemporaryFile.test_del_on_close�s������ ��	��,�,��5������ �6����R�Z�Z��_�b�1����R�W�W�^�^�A�F�F�3�B�Q�V�V�K�
M�
�H�H�S�M�
6�5��
�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)rMr�rz)NamedTemporaryFile %s missing after close)rr_r\rLr�r�rIr>r?r�rr/)rrM�tmprOs    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
)rr\r�r�rNs  r�test_multiple_closez*TestNamedTemporaryFile.test_multiple_closes7���'�'�)��	�����	���	�	���	�	���	rc�n��tj�5�|jtjj�j��ddd�|jtjj�j���fd�}|jt|�y#1swY�]xYw)Nc�6���5	ddd�y#1swYyxYwrtr-�rOs�r�
use_closedz?TestNamedTemporaryFile.test_context_manager.<locals>.use_closed������������)
rr\rIr>r?r�rLr�rr��rr�rOs  @r�test_context_managerz+TestNamedTemporaryFile.test_context_managersr���
�
(�
(�
*�a��O�O�B�G�G�N�N�1�6�6�2�3�+������������/�0�	�	
���*�j�1�
+�
*�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�rMr��delete_on_closer�NamedTemporaryFile z= is incorrectly deleted on closure when delete_on_close=Falsez" exists after context manager exit)
rr_r\r�rLr��subTestrIr>r?r�r�r/)rrMrO�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_falses��
��� ��	��,�,��48�=B�D�GH����� ��������	��\�\�^��O�O�B�G�G�N�N�1�6�6�$:�1�!�&�&��<L�M�N�$�
D������ � ���������!7�#6�q�v�v�j�A>�"?�@� �
�H�H�S�M�$�^��
D�D�� ���
�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)	rr_r\r�r�r>rrLr/r�s   r�&test_context_man_ok_to_delete_manuallyz=TestNamedTemporaryFile.test_context_man_ok_to_delete_manually5s������ ��		��,�,��48�=B�D�GH����� ����	��	�	�!�&�&�!�D�
�H�H�S�M�D�D��
�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)rr_r\r�rLrIr>r?r�rr/)rrMr�rOs    r�(test_context_man_not_del_if_delete_falsez?TestNamedTemporaryFile.test_context_man_not_del_if_delete_falseDs������ ����
	��,�,��U�=A�C�FG����� �����C�
�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�C�C��
�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)rr\rLr��rMrO�tmp_names   r�my_funcz=TestNamedTemporaryFile.test_del_by_finalizer.<locals>.my_funcWs6���+�+��D�<A�C�A��v�v�H�
�G�G�G���Orr�z exists after finalizer )	�gc�collectrr_r�r>r?r�r/)rr	rMrs    r�test_del_by_finalizerz,TestNamedTemporaryFile.test_del_by_finalizerTsu��	�	�
�
����� ��	��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)rr\rLr�r�r>rrs   rr	zVTestNamedTemporaryFile.test_correct_finalizer_work_if_already_deleted.<locals>.my_funcnsI���+�+��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_deletedjs��	�#�	�	�
�
�rc��tj�}|jtj|�|jt�5tjd|��ddd�|jt�5tjd|��ddd�|jtj|�g�y#1swY�dxYw#1swY�;xYw�Nr�)r�rM�)rr_�
addCleanuprr�rr�r\rrEr>r�r0s  r�
test_bad_modez$TestNamedTemporaryFile.test_bad_modeys������ �����	�(�(�#�.�
�
�
�z�
*��'�'�T�s�;�+�
�
�
�y�
)��'�'�Q�C�8�*�������C��"�-�	+�
*��
)�
)���
C�?C�C�Cc�:�tj�}|jtj|�|jt�5tjdd|��ddd�|jtj|�g�y#1swY�/xYw�N�wzbad-encoding)r�rM)rr_rrr�r�LookupErrorr\rEr>r�r0s  r�test_bad_encodingz(TestNamedTemporaryFile.test_bad_encoding�sj����� �����	�(�(�#�.�
�
�
�{�
+��'�'��n�#�N�,�������C��"�-�,�
+���
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�)rr_rrr�r�patch�	mock_open�KeyboardInterrupt�side_effectrr\r��
assert_calledrEr>r�)rrM�mock_ntfrs    r�test_unexpected_errorz,TestNamedTemporaryFile.test_unexpected_error�s������ �����	�(�(�#�.�
�Z�Z�8�
9�X�
�Z�Z�	�4�>�>�#3�
4�	�#4�#6�H� ��"�"�#4�5��+�+��4�6�5�:�
	����'�'�)�������C��"�-�6�5��5�
4��:�
9�s<�
)D$�3%D�D�/D�7D$�D�D�D!	�D$�$D-)NrrT)r*r+r,r�rrr�r�r�r�r�r�r�r�rrrrrrr$r-rrr�r��s[��$��-�$� ,�I�
�� �2��8
�� �,
�.�.�	.rr�c�"�eZdZdZdd�Zd�Zd�Zd�Zd�Zd�Z	e
jejd	�d
��Zd�Zd�Zd
�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Ze
jejd	�d��Zd�Zy)�TestSpooledTemporaryFilezTest SpooledTemporaryFile().Nc�d�|�tj�}tj||||��}|S)N)�max_sizerMrlr�)rrcrg)rr(rMrNrOr�s      rrz"TestSpooledTemporaryFile.do_create�s2���;��%�%�'�C��,�,�h�C�PS�\_�`���rc��|j�}|j|j�|jddd��}|j|j�y)Nrr�r)r(rNrO)rr��_rolledrNs  rrz#TestSpooledTemporaryFile.test_basic�sF���N�N���������#��N�N�C�S�f�N�=��������#rc�`�|j|j�tj�yrt)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)r�rMrrgr�)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�
)r(rMsblat blat blat blat blat z*SpooledTemporaryFile %s exists after close)rr_rgr�r*r�rIrLr�rEr>r�rC�intr?r�r/)rrMrO�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)NrK�r(r�)rr�rErL�assertWarns�ResourceWarningr
rNs  r�test_del_unrolled_filez/TestSpooledTemporaryFile.test_del_unrolled_file�sV��
�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)NrrOr�z9Rolled SpooledTemporaryFile (name=%s) exists after delete)rr�rLrIr>r?r�rPrQr
r�)rrOrLs   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�rO�r�xxxxxxxxxxxxxxxxxxxx)rr�r*r�r�r�)rrOr�s   r�test_rewrite_smallz+TestSpooledTemporaryFile.test_rewrite_small�s_���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)NrVrOrX�
xxxxxxxxxx�x)rr�r*r�rIrNs  r�test_write_sequentialz.TestSpooledTemporaryFile.test_write_sequential�s}��
�N�N�B�N�'��������#�	���	��������#�	���	��������#�	����
�����	�	�"rc���|j�}|jd�|jd�}|j|d�|j	�}|j|d�y)N)r\�y�zrsxyz)rrEr�rEr�)rrO�pos�bufs    r�test_writelinesz(TestSpooledTemporaryFile.test_writelinessS���N�N���	���'�(��f�f�Q�i������a� ��f�f�h������f�%rc���|jd��}|jd�|j|j�|j	d�|j|j�y)N�#rO)rXr[sxxxxxr\)rrEr�r*r�rIrNs  r�test_writelines_sequentialz3TestSpooledTemporaryFile.test_writelines_sequentialsN��
�N�N�B�N�'��	���5�6�������#�	����
�����	�	�"rc�4�|jd��}|j|j�|jdd�}|j	|d�|j|j�|jd�|j
|j�y)NrVrOrrr\)rr�r*r�rEr�rI)rrOras   r�test_sparsez$TestSpooledTemporaryFile.test_sparsesr��
�N�N�B�N�'��������#��f�f�S�!�n������c�"�������#�	����
�����	�	�"rc���|jd��}|j|j�|j|j	�dkD�|j|j�y)NrVrOr)rr�r*rIr6rNs  r�test_filenoz$TestSpooledTemporaryFile.test_filenosJ���N�N�B�N�'��������#�������
�Q��'�����	�	�"rc���tj�}|jd�|j|j�|j�|j�|j�yr�)rrgr�r�r*r�rNs  r�#test_multiple_close_before_rolloverz<TestSpooledTemporaryFile.test_multiple_close_before_rollover&sI���)�)�+��	�����������#�	���	�	���	�	���	rc���tjd��}|jd�|j|j�|j�|j�|j�y)Nr[rOr�)rrgr�rIr*r�rNs  r�"test_multiple_close_after_rolloverz;TestSpooledTemporaryFile.test_multiple_close_after_rollover/sI���)�)�1�5��	���������	�	�"�	���	�	���	�	���	rc���|jd��}|j}|j}|j}|d�|d�|dd�|j	|d�d�y)NrVrOs#aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaas#bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbr�FsFaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb)rr�r�r�rE)rrOr�r�r�s     r�test_bound_methodsz+TestSpooledTemporaryFile.test_bound_methods8s]��
�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)NrKrOr[r�r\zrb+)rrgr�r�r*rEr�r�rLrr�r;r�r5rI�assertIsNotNonerNs  r�test_propertiesz(TestSpooledTemporaryFile.test_propertiesFsf���)�)�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+rK�utf-8)r�r(r�zabc
rzdef
zabc
def
�strictzxyzzy
zabc
def
xyzzy
zfoobar
zabc
def
xyzzy
foobar
)rrgr�r�rEr�r�r*r�r�rLr;r>�linesepr�r5rIrsrNs  r�test_text_modez'TestSpooledTemporaryFile.test_text_mode^s���
�)�)�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)NrvrKrrwr1)r�r(�newliner�r5uΛ
ruΜΜΜΜΜΜΜΜΜΜ
u(ΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝuBΛ
ΜΜΜΜΜΜΜΜΜΜ
ΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝ)rrgr�r�rEr�r�r*r�r�rLrsr;r�r5rIrNs  r�test_text_newline_and_encodingz7TestSpooledTemporaryFile.test_text_newline_and_encoding~sm���)�)�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)Nr[rOc�6���5	ddd�y#1swYyxYwrtr-r�s�rr�zQTestSpooledTemporaryFile.test_context_manager_before_rollover.<locals>.use_closed�r�r�)rrgr�r*r3rIrr�r�s  @r�$test_context_manager_before_rolloverz=TestSpooledTemporaryFile.test_context_manager_before_rollover�sn���
�
*�
*�A�
6�!����Q�Y�Y�'����Q�X�X�&�7�	
������!�	�	
���*�j�1�7�
6�s�7B�Bc���tjd��5�|j�j��j	d��j�|j
�j�|j�j�ddd�|j
�j��fd�}|jt|�y#1swY�@xYw)Nr[rOr�c�6���5	ddd�y#1swYyxYwrtr-r�s�rr�zQTestSpooledTemporaryFile.test_context_manager_during_rollover.<locals>.use_closed�r�r�)
rrgr�r*r�r1rIr3rr�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�&�7�	
������!�	�	
���*�j�1�7�
6�s�A3C
�
Cc�z��tjd����jd��j�|j	�j
��5|j
�j�ddd�|j	�j��fd�}|jt|�y#1swY�@xYw)Nr[rOr�c�6���5	ddd�y#1swYyxYwrtr-r�s�rr�zPTestSpooledTemporaryFile.test_context_manager_after_rollover.<locals>.use_closed�r�r�)
rrgr�r1rIr*r�r3rr�r�s  @r�#test_context_manager_after_rolloverz<TestSpooledTemporaryFile.test_context_manager_after_rollover�s�����)�)�1�5��	�����	���	�����	�	�"�
����Q�X�X�&��������!�	�	
���*�j�1�
�Q�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)	NrKrOsabcdefg
rr�sabcdr�)rrgr�r�r@r�r*rE�_file�getvaluerIr>�fstatr6�st_sizerNs  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
�yrt)r�rrgr�types�GenericAliasrs r�test_class_getitemz+TestSpooledTemporaryFile.test_class_getitem�s&�����h�;�;�E�B��(�(�	*r)rNrr) r*r+r,r�rrr.rIr�rRr�r�rr�rTrYr]rcrfrhrjrlrnrqrtrzr}r�r�r�r�r�r-rrr&r&�s���&��$�;�
�*�"��X�_�_����G��

��

�$�
#�&�#�	#�#���6��0-�@-�4	2�2�2��X�_�_����G��;��;�**rr&c�:�eZdZdZd�Zd�Zd�Zd�Zd�Zd�Z	d�Z
y	)
�TestTemporaryFilezTest TemporaryFile().c�,�tj�yrt)rr]rs rrzTestTemporaryFile.test_basic�s��
�"�"�$rc��tj�}tj|��}|jd�	t	j
|�y#|j
�t	j
|��xYwr-)rr_r]r�r>r/r�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�)rr]r�r�rNs  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�)rr]r�r�rEr�)�inputr�r��fileobjrs    �r�	roundtripz;TestTemporaryFile.test_mode_and_encoding.<locals>.roundtripsQ����+�+�T�<�V�<���M�M�%�(��L�L��O��$�$�U�G�L�L�N�;�=�<�<�s�AA#�#A,s1234r�zabdc
rvuΛzutf-16r�zfoo
r)r|r-)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)rr_rrr�rr�r]rrEr>r�r0s  rrzTestTemporaryFile.test_bad_modes����"�"�$�C��O�O�I�,�,�c�2��"�"�:�.��&�&�D�c�:�/��"�"�9�-��&�&�A�3�7�.����R�Z�Z��_�b�1�	/�.��-�-�rc�:�tj�}|jtj|�|jt�5tjdd|��ddd�|jtj|�g�y#1swY�/xYwr)rr_rrr�rrr]rEr>r�r0s  rrz#TestTemporaryFile.test_bad_encodingsj���"�"�$�C��O�O�I�,�,�c�2��"�"�;�/��&�&�s�^��M�0����R�Z�Z��_�b�1�0�/�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�)rr_rrr�rrr r!rr]r"rEr>r�)rrM�mock_unlinkr�
mock_closes     rr$z'TestTemporaryFile.test_unexpected_errors����"�"�$�C��O�O�I�,�,�c�2����7��?����K�(�K����I�&�)����J�'�:�*;�*=��'��&�&�'8�9��*�*�s�3�:�(�'�)�@�
�$�$�&����R�Z�Z��_�b�1�:�9��(�'��'�&��)�(��@�?�sl�E�!E�7D?�
%D3	�2D'�	D3	�D?�E�!E�'D0�,D3	�3D<
�8D?�?E�E�E	�E�E N)r*r+r,r�rr�r�r�rrr$r-rrr�r��s(��#�	%�
	� 	�	3�	2�	2�	2rr�c��eZdZd�Zd�Zd�Zy)�
NulledModulesc��|D�cgc]}|j��c}|_|jD�cgc]}|j���c}|_ycc}wcc}wrt)rj�refs�copy�contents)r�modules�modr�s    rrzNulledModules.__init__+sD��-4�5�W�c�S�\�\�W�5��	�/3�y�y�9�y������y�9��
��6��9s
�A�Ac�>�|jD]}|D]}d||<�	�yrt)r�)rroros   rrBzNulledModules.__enter__/s#�����A�����#���rc��t|j|j�D]&\}}|j�|j	|��(yrt)�zipr�r��clear�update)r�exc_inforor�s    rr8zNulledModules.__exit__4s3����	�	�4�=�=�1�D�A�q�
�G�G�I�
�H�H�Q�K�2rN)r*r+r,rrBr8r-rrr�r�*s��:��
rr�c�2�eZdZdZ		dd�Zdd�Zd�Zd�Zd�Ze	jejdk(d	�d
��Z
e	jejdk(d	�d��Zej d��Zej d
��Ze	jeed�d�ej d���Zej,d��Zej,d��Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Z e	jeed�d�d��Z!d�Z"y)�TestTemporaryDirectoryzTest TemporaryDirectory().Nc���|�tj�}tj||||��}|j|j|||�|j|j|||�|S)N)rMrlr��ignore_cleanup_errors)rrcrhrUrL�
do_create2)	rrMrNrO�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%dr[z
test%d.txtr�sHello world!)r�r>r?r��mkdirr�r�r�)rr?r�r�r�r�rLrOs        rr�z!TestTemporaryDirectory.do_create2Hs�����4�[���w�w�|�|�D�'�A�+�6�����������g�a�i��u�=�!��u��A��b�g�g�l�l�4���)9�:�D�A�Q�����(�B�A��A�A�s�B:�:C	c�@�tj�5}	ddd�|jt�5}tj��ddd�|j	j
jtj�y#1swY�rxYw#1swY�JxYwr�)rrhrr�rE�	exception�errno�ENOENT)rr��cms   r�test_mkdtemp_failurez+TestTemporaryDirectory.test_mkdtemp_failureSsl���
(�
(�
*�k��+�
�
�
�0�
1�R��'�'�K�8�2�������+�+�U�\�\�:�	+�
*��
1�
1�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)rr_rrIr>r?r�rL�cleanupr�r/)rrMros   r�test_explicit_cleanupz,TestTemporaryDirectory.test_explicit_cleanup]s������ ��	����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
�2�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)z=Test that cleanup doesn't return an error when ignoring them.T�rMr��TemporaryDirectory � does not exist�
a_file.txt�w+t�
Hello world!
N�*�win�1Unexpected number of files in TemporaryDirectory � existence state unexpectedz exists after cleanup)rrhr�pathlibr(rLrIr�r�r�r�rErAr(�globrLr8r9r�r��r�working_dir�temp_dir�	temp_path�	open_files     r�#test_explicit_cleanup_ignore_errorsz:TestTemporaryDirectory.test_explicit_cleanup_ignore_errorsjsf��
�
(�
(�
*�k��~�~��t�&�=�H����X�]�]�3�I��O�O�I�,�,�.�1�)��o�N�
P��i�,�.��6�)���� 0�1�� � �"�7�
���S��i�n�n�S�&9�!:�;� ����!8�!8��!?�@�3�3<�-�A�
B�
���� � �"����'�'��.�%�i�]�2M�N�
P�
�������� � �"�%�i�]�2G�H�
J�%+�
*�7�6��
+�
*�s%�A&F
�;"F�CF
�F
	�F
�
Fr�r�c��tj�5}|j|��}ttj
j
|jd�d�5|jt�5|j�ddd�ddd�ddd�y#1swY�xYw#1swY�xYw#1swYyxYw)Nr�zexample.txtr�)rrhrr�r>r?r�rLrr�r�)rr�r�s   r�#test_explicit_cleanup_correct_errorz:TestTemporaryDirectory.test_explicit_cleanup_correct_error�s���
�
(�
(�
*�k��~�~�+�~�6�H��b�g�g�l�l�8�=�=�-�@�$�G��&�&��7��$�$�&�8�H�+�
*�
8�7��H�G��+�
*�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)
rrhrr>r?r�rLr�r�
change_cwdrr�r�)rr�r�r�s    r� test_cleanup_with_used_directoryz7TestTemporaryDirectory.test_cleanup_with_used_directory�s���
�
(�
(�
*�k��~�~�+�~�6�H��W�W�\�\�(�-�-��:�F��H�H�V���%�%�f�-��&�&��7��$�$�&�8�.�	+�
*�8�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)rr>�symlinkrLr?r�r�r�r�rIrEr�)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��r5�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)rr>r?r�rLr�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)rr>r?r�r�r�r�r�r��formatr�r�r�rE)rr�r�r�r��old_mode�new_moder�s`      @r�test_cleanup_with_symlink_modesz6TestTemporaryDirectory.test_cleanup_with_symlink_modes�s�����^�^�A�^�
&�"��G�G�L�L��W�-�E�����#�#�%��7�7�<�<��F�+�D��H�H�T�N��a�����
���\�\�v�d�E�':�\�;�B�"���&8�9��]��F�:����&7�8��]��E�9����o�6������-�#%�7�7�5�>�#9�#9���U��>�#%�7�7�5�>�#9�#9���(�(��8�)7�8�X�:N�)N�P�7����n�5�����t�,�#%�7�7�4�=�#8�#8���T�t�<�#%�7�7�4�=�#8�#8���(�(��8�)7�8�X�:N�)N�P�6�?<�;�!�'�
&�2:�9��8�8��7�6��6�5��?<�;��'�
&�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�)rr>r?r�rLr�r�r�r�r�r�r�)r�r�r�r�rrs    ��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_flagsrr>r?r�r�r�r�r�r��st_flagsrE)rr�r�r�r��	old_flags�	new_flagsrs`      @r�test_cleanup_with_symlink_flagsz6TestTemporaryDirectory.test_cleanup_with_symlink_flags�s�����!�!�D�$4�$4�4�������
�^�^�A�^�
&�"��G�G�L�L��W�-�E�����#�#�%��7�7�<�<��F�+�D��H�H�T�N�
:�"���0�1��]��>�2����/�0��]��=�1����o�.��
�
�5�%�(��G�G�E�N�3�3�	��U��6��G�G�E�N�3�3�	�� � ��I�6�/����n�-��
�
�4��'��G�G�D�M�2�2�	��T�t�4��G�G�D�M�2�2�	�� � ��I�6�.�E'�
&�,2�1��0�0��/�.��.�-��E'�
&�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__)	rr_rrLr�r>r?r�r/�rrMrorLs    r�test_del_on_collectionz-TestTemporaryDirectory.test_del_on_collectionsr����� ��	����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)
z@Test that ignoring errors works when TemporaryDirectory is gced.Tr�r�r�r�r�r�Nr�r�r�r�)rrhrr�r(rLrIr�r�r�rErAr(r�rLr8r9r�r�s     r�$test_del_on_collection_ignore_errorsz;TestTemporaryDirectory.test_del_on_collection_ignore_errorss)���
(�
(�
*�k��~�~��t�&�=�H����X�]�]�3�I��O�O�I�,�,�.�1�)��o�N�
P��i�,�.��6�)���� 0�1��7�
���S��i�n�n�S�&9�!:�;� ����!8�!8��!?�@�3�3<�-�A�
B�
���� � �"����'�'��.�%�i�]�2M�N�
P�+�
*�7�6��
+�
*�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)�builtinsr>�shutilr8rr8a�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)
                    )rMr��-cr�rw�backslashreplace�
Exception �'ResourceWarning: Implicitly cleaning up�rr�r�assert_python_okr�r�r�r>r?r�r�r�)rrMr��code�rcr��errrs        r�test_del_on_shutdownz+TestTemporaryDirectory.test_del_on_shutdown0s���
�^�^�
��R���&��3�C��0�'�( -�=�=�d�D�I���C���:�:�<�-�-�/��� � �������!9�H�8�S�U��j�j��*<�=��� � ��s�3��
�
�G��M�7S��
�
�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)z?Test ignoring errors works when a tempdir is gc'ed on shutdown.a�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�rr�r�r�r�r�rwr�	Exception�ErrorrN)rrhr�rrr�r(r�r�rErAr(r�rLr8r9r�r�r�r�)rr�r�__r�rr�s       r�"test_del_on_shutdown_ignore_errorsz9TestTemporaryDirectory.test_del_on_shutdown_ignore_errorsPs5��
�
(�
(�
*�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+�
*�
*�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�rr�rwrrrr)rrMrrr�rrs       r�test_exit_on_shutdownz,TestTemporaryDirectory.test_exit_on_shutdownus���
�^�^�
����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�)�
�
�s�B3C
�
Cc��|j�5}|j|d��}|j}tjdtfd��5tjdt��~tj�ddd�|jtjj|�d|z�ddd�y#1swY�DxYw#1swYyxYw)	N�)rMr��
ImplicitlyF)�quiet�always)r3r)
rrLrr7rQr8r9rr.r�r>r?r�rs    r�test_warnings_on_cleanupz/TestTemporaryDirectory.test_warnings_on_cleanup�s���
�^�^�
�����3���2�A��6�6�D�!�/�/��1@�1B�6;�=��'�'��?�K���"�"�$�=�
���R�W�W�^�^�D�1�D�t�K�
M��
�
=�=���
�s#�=C�1C�?:C�C	�C�Cc��|j�}|j�|j�|j�yrt)rr�rvs  rr�z*TestTemporaryDirectory.test_multiple_close�s)���N�N���	�	�	��	�	�	��	�	�	�rc�B�|j�}|5}|jtjj	|��|j||j�ddd�|jtjj	��y#1swY�8xYwrt)rrIr>r?r�rErLr�)rrorLs   rr�z+TestTemporaryDirectory.test_context_manager�sj���N�N���
�$��O�O�B�G�G�N�N�4�0�1����T�1�6�6�*��	
���������-�.��Q�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�r5r�r�r r�r�r�r�F��topdown)
r�r�r�rr>�walkrLr�r?r�r�r�r�)rr�ro�rootr�r�rLs       r�
test_modesz!TestTemporaryDirectory.test_modes�s����!�H�D��Q�J�D����6�$��#6��7��N�N�1�1�A�N�>���-/�W�W�Q�V�V�U�-K�)��d�E�$)�D��H�H�R�W�W�\�\�$��%=�t�D�%*�����t�,�.L��I�I�K�
�� � ���������!7�8�8�7���Q��8�7�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�r>r�r�r�r)rrrM�excs    rrz"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)Nr rr(Fr))r�r�r�rrr>r+rLr�r?r�r�r�r�)rrror,r�r�rLs       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��'�&D�
�I�I�K�
�	
�����������/�0��Q�s
�	BD�Dc���tjd��5}	ddd�|jtjj��t
j|�y#1swY�MxYw)NFr�)rrhrIr>r?r�r
r�)rr�s  r�test_delete_falsez(TestTemporaryDirectory.test_delete_false�sH��
�
(�
(��
6�+��7���������{�3�4��
�
�k�"�7�
6�s�A%�%A.)Nrrr[r[r[F)r[r[r[)#r*r+r,r�rr�r�r�r�r�r_r>rLr�r�r�skip_unless_symlinkr�r��hasattrrr�cpython_onlyrr
rrrr$r�r�r-rr2r4r-rrr�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__):rr�r,r>r�r8rVr8�
contextlibr�r�r�r
r
r�r�rr�r�test.supportrrrrrrbr6r`r9r�r��TestCaser
r/rYrrr�r�r��contextmanagerr�r�r�r�rdrrr�r�r�r�r&r\r]r�r�r�r*�mainr-rr�<module>r>s�����	�	��
�	������	�
�����"�&�(��(�(�H�,C�,C�C��
�R��
"�
��<�<���9�%��J��J�(7�H�-�-�(7�X,2�8�$�$�,2�^7�,�7�<;7�\�;7�~")�|�")�TI�L�I�@
 �L�
 � ������2� %� %�Fn2�~�|�n2�b���@+4�\�+4�\[,�,�[,�|h�.�,�h�V0��0�|_.�\�_.�FC*�|�C*�J
���h�&<�&<�<�I2�L�I2�Z
�
� c#�\�c#�J
�z���H�M�M�O�r

Sindbad File Manager Version 1.0, Coded By Sindbad EG ~ The Terrorists