python (3.12.0)

(root)/
lib/
python3.12/
test/
__pycache__/
test_tempfile.cpython-312.opt-1.pyc

ΑeddlZddlZddlZddlZddlZddlZddlZddlZddlZddl	Z	ddl
Z
ddlZddlZddl
Z
ddlmZddlZddlmZddlmZddlmZddlmZej,ej.k7ZeedZej6j9drd	Znd
ZGddej<ZGd
dej<Z Gdde Z!Gdde Z"Gdde Z#Gdde Z$Gdde Z%ejLdZ'dZ(GddZ)Gdde)e Z*Gdd 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/d0Z5Gd1d2e Z6e7d3k(rejpyy)4N)mock)support)	os_helper)
script_helper)warnings_helperspawnlopenbsd0dc*eZdZdZdZdZdZdZy)TestLowLevelInternalsc|jttjd|jttjd|jttjdyN)assertIsstrtempfile_infer_return_typebytesselfs F/BuggyBox/python/3.12.0/bootstrap/lib/python3.12/test/test_tempfile.pytest_infer_return_type_singlesz4TestLowLevelInternals.test_infer_return_type_singles(sM

c866r:;

eX88=>

c866t<=rc|jttjdd|jttjdd|jt5tjddddd|jt5tjdddddy#1swY>xYw#1swYyxYwrrrrrrassertRaises	TypeErrorrs r test_infer_return_type_multiplesz6TestLowLevelInternals.test_infer_return_type_multiples-s

c866r2>?

eX88cBC


y
)	1''C0	1


y
)	1''R0	1	1	1	1	1	1s*B>C
>C
Cc|jttjdd|jttjdd|jttjdd|jttjdd|jttjdd|jt5tjdddddd|jt5tjddddddy#1swY?xYw#1swYyxYwrrrs r)test_infer_return_type_multiples_and_nonez?TestLowLevelInternals.test_infer_return_type_multiples_and_none5s

c866tR@A

c866r4@A

c866tTBC

eX88dCD

eX88sCD


y
)	7''D#6	7


y
)	7''T26	7	7	7	7	7	7s(D>E
>E
Ec||jttjt	j
dy)N/)rrrrpathlibPathrs rtest_infer_return_type_pathlibz4TestLowLevelInternals.test_infer_return_type_pathlib@s$

c866w||C7HIJrc	lGdd}|jttj|d|jttj|d|jttjd|d|jttjd|d|jttjd|d|jttjd|d|jt5tjd|dddd|jt5tjd|ddddy#1swYDxYw#1swYyxYw)NceZdZdZdZy)CTestLowLevelInternals.test_infer_return_type_pathlike.<locals>.Pathc||_yNpathrr-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yy rN)__name__
__module____qualname__r/r1rrr%r)Ds
!
!rr%r#/rrr)rr%s  rtest_infer_return_type_pathlikez5TestLowLevelInternals.test_infer_return_type_pathlikeCs7	!	!	


c866tCyAB

eX88dDE

c866r48DE

eX88d3iHI

eX88tCyIJ

c866tT"XFG


y
)	7''DI6	7


y
)	7''T"X6	7	7	7	7	7	7s>F8F*F'*F3N)r2r3r4rrr!r&r7r5rrr
r
's>
1	7K7rr
c`eZdZejdZejdZdZdZy)BaseTestCasez^[a-z0-9_-]{8}$s^[a-z0-9_-]{8}$c|jtjtjdt
dty)Nignoremktemp)categorymessagemodule)enterContextrcheck_warningswarningsfilterwarningsRuntimeWarningr2rs rsetUpzBaseTestCase.setUp^s1/88:;>(0	Crcttjj|\}}|dt|}|t|t|z
d}|Q|j	t|t|tust|tjrt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 typeNNNzdefault 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-splitlenrtyper
isinstancePathLikerassertEqualabspath	str_checkb_check
assertTruematchpattern)
rnamedirpresufndirnbasenprensufchecks
          r	nameCheckzBaseTestCase.nameCheckcs

d+
uis3x c%jS)*+?MMT
9#z#r{{'C(
?MM$t*T#Y#-=c52
4?MM$t*T#Y#-=c52
4c?00MM$t*c+LM	
.0D:>D	Fs=BCH	Js;@#F	Hc#hs5z#c(23",UC"8dllE* %--1	2rN)	r2r3r4recompilerPrQrEr^r5rrr9r9Ys/

-.Ibjj,-GC
"2rr9ceZdZdZy)TestExportsctj}ddddddddddddddd}g}|D]!}|ddk7s||vs|j|#|jt	|dk(d|zy)N)NamedTemporaryFile
TemporaryFilemkstempmkdtempr<TMP_MAX
gettempprefixgettempprefixb
gettempdirgettempdirbtempdirtemplateSpooledTemporaryFileTemporaryDirectoryr_zunexpected keys: %s)r__dict__appendrRrJ)rdictexpectedunexpkeys     rtest_exportszTestExports.test_exportss  $% %&#$
"	"C1v}H!4S!	"	
E
a-5	7rN)r2r3r4ryr5rrrbrbs7rrbcbeZdZdZfdZdZdZdZejdZ
xZS)TestRandomNameSequencez6Test the internal iterator object _RandomNameSequence.cTtj|_t|yr+)r_RandomNameSequencersuperrEr	__class__s rrEzTestRandomNameSequence.setUps--/

rcVt|j}|j|dddyNr)nextr~r^)rss  rtest_get_eight_char_strz.TestRandomNameSequence.test_get_eight_char_strs!Lq"b"%rci}|j}ttD]8}t|}|j	|ddd|j||d||<:y)Nrrd)r~range
TEST_FILESrr^assertNotIn)rrur~irs     r	test_manyz TestRandomNameSequence.test_manysZFFz"	AQANN1b"b)Q%DG		rcFd}|j}|D]}|dz
}|dk(syy)Nrrd)r~)rrr~rs    r
supports_iterz$TestRandomNameSequence.supports_iters4
FF	A
FABw	rctj\}}d}	tj}|swtj|tj|t|jjdtj|tjdt|j}tj|t|jd}|rtj|dtj|tj||j||y#|rtj|dtj|tj|wxYw)Nasciir)exitcode)rHpipeforkclosewriterr~encode_exitreadrJdecoderwait_processassertNotEqual)rread_fdwrite_fdpidparent_valuechild_values      rtest_process_awarenessz-TestRandomNameSequence.test_process_awarenesssGGI	'')C!4<#6#6w#?@" <L'''3|+<=DDWMK$$S15HHWHHXK6$$S15HHWHHXs
CEAF)r2r3r4__doc__rErrrr
requires_forkr
__classcell__rs@rr{r{s9@&
	W77rr{ceZdZdZdZdZy)TestCandidateTempdirListz3Test the internal function _candidate_tempdir_list.ctj}|jt|dk(|D]}|j	|t
yNr)r_candidate_tempdir_listassertFalserJassertIsInstancer)rcandcs   rtest_nonempty_listz+TestCandidateTempdirList.test_nonempty_listsG//1Ta(	*A!!!S)	*rctj5}dD]<}tj|}|rtjj|||<>t
j}dD]1}tj|}|st|j||3	tj}|j||dddy#ttf$rtj}Y<wxYw#1swYyxYw)N)TMPDIRTEMPTMP)rEnvironmentVarGuardrHgetenvr-rOrr
ValueErrorassertIngetcwdAttributeErrorOSErrorcurdir)renvenvnamedirnamers     rtest_wanted_dirsz)TestCandidateTempdirList.test_wanted_dirss
*
*
,	)2
<))G,#%77??7#;CL
<
335D2
-))G,j 0

gt,
-

$))+
MM'4(%	)	)#G,
$))
$	)	)s5C6A.C6"C6C6C30C62C33C66C?N)r2r3r4rrrr5rrrrs=*)rrceZdZdZdZy)TestGetDefaultTempdirzTest _get_default_tempdir().c	tj5fd}tjtd|5tj|jt
jgd}tjtd|5|jt5tjddd|jt
jgdddtjtd|5|jt5tjddd|jt
jgdddddddddy#1swYxYw#1swYxYw#1swY_xYw#1swY>xYw#1swYBxYw#1swYyxYw)Nc
gSr+r5)our_temp_directorysrour_candidate_listzKTestGetDefaultTempdir.test_no_files_left_behind.<locals>.our_candidate_lists*++rrctr+)r)argskwargss  r
raise_OSErrorzFTestGetDefaultTempdir.test_no_files_left_behind.<locals>.raise_OSErrors	!)Oropenr)
rrqr	swap_attr_get_default_tempdirrNrHlistdirrFileNotFoundError)rrrrs   @rtest_no_files_left_behindz/TestGetDefaultTempdir.test_no_files_left_behinds

(
(
*	I.@
,""8-F#57
I--/  ,>!?D$&&r6=AI**+<=8 5578$$RZZ0B%CRH	I&&r7MBI**+<=8 5578$$RZZ0B%CRH	I
I	I	I 88II88II
I
I	I	Is!F7AF+F%E;	:-F'#F+
F F	5-F"F+*F7;F
FFF+F
FF($F++F4	0F77GN)r2r3r4rrr5rrrrs&IrrceZdZdZdZdZy)TestGetCandidateNamesz0Test the internal function _get_candidate_names.cltj}|j|tjyr+)r_get_candidate_namesrr})robjs  rtest_retvalz!TestGetCandidateNames.test_retval2s&++-c8#?#?@rcztj}tj}|j||uyr+)rrrR)rabs   rtest_same_thingz%TestGetCandidateNames.test_same_thing7s.))+))+QrN)r2r3r4rrrr5rrrr/s:A
 rrc#Ktj}	tjtd|5ddddt	j
|y#1swYxYw#t	j
|wxYww)Nrn)rrhrrrrmtreerVs r_inside_empty_temp_dirr?sc



C


xC
8						s2A<A"AA"A<AA""A99A<c@tjtdfdS)NrctSr+)iternamessr<lambda>z'_mock_candidate_names.<locals>.<lambda>LsT%[r)rrrrs`r_mock_candidate_namesrIsX3022rc^eZdZejejddZdZdZ	y)TestBadTempdirz$Emscripten cannot remove write bits.cRt5tjtjj
x}}|tjtjztjzz}tjtj|	tjtjtjr|jd|jt5|jddd|j!tj"tjgtjtj|	dddy#1swYjxYw#tjtj|wxYw#1swYyxYw)Nz!can't set the directory read-only)rrHstatrrnst_modeS_IWUSRS_IWGRPS_IWOTHchmodaccessW_OKskipTestrPermissionError	make_temprNr)roldmodemodes   rtest_read_only_directoryz'TestBadTempdir.test_read_only_directoryQs$
%	4WWX%5%56>>>GddllT\\1DLL@AADHHX%%t,
499X--rww7MM"EF&&7%NN$%  H,<,<!=rB))73	4	4%%))73	4	4s=B
FAE4.E(?;E4:$F(E1	-E44&FFF&crt5tjjtj
d}t
jtd|5|jt5|jdddddddddy#1swYxYw#1swYxYw#1swYyxYw)Nnonexistentrn)rrHr-joinrrnrrrrrrrns  rtest_nonexisting_directoryz)TestBadTempdir.test_nonexisting_directorybs
#
%	%ggll8#3#3]CG""8Y@
%&&'89%NN$%
%	%	%%%
%
%	%	%s<A
B-B!+B<B!B-BB!!B*	&B--B6ct5tjjtj
d}t
|djtjtd|5|jttf5|jdddddddddy#1swYxYw#1swYxYw#1swYyxYw)Nfilewbrn)rrHr-rrrnrrrrrNotADirectoryErrorrrrs  rtest_non_directoryz!TestBadTempdir.test_non_directoryis
#
%	%ggll8#3#3V<G$%%'""8Y@
%&&(:<M'NO%NN$%
%	%	%%%
%
%	%	%s<A$C
/CB5C$C
5B>:CC
	C

CN)
r2r3r4unittestskipIfr
is_emscriptenrrrr5rrrrOs5X__E44%%rrceZdZdZGddZddZdZdZdZd	Z	e
jd
Ze
jedej"dZe
jed
dZdZdZdZy)TestMkstempInnerz*Test the internal function _mkstemp_inner.c~eZdZejZejZejZ
ejZdZ
dZdZy)TestMkstempInner.mkstempedc|r
|j}n|j}tj|||}tj|||||\|_|_yr+)_bflags_tflagsrr_mkstemp_innerfdrU)rrVrWrXbinflagsoutput_types       rr/z#TestMkstempInner.mkstemped.__init__{sLDLLE LLE"55c3DK#+#:#:3S%Q\#] TWdircDtj|j|yr+)rHrr)rrs  rrz TestMkstempInner.mkstemped.writesHHTWWc"rcp|j|j|j|jyr+)_closer_unlinkrUrs r__del__z"TestMkstempInner.mkstemped.__del__s"KK LL#rN)r2r3r4r_bin_openflagsr	_text_openflagsr
rHrrunlinkrr/rrr5rr	mkstempedrus:))**))	^	#	$rrNc"tj|||}|1|turtj}ntj}||}||}|j||||}|j
|j||||Sr+)rrrrlrmrr^rU)rrVrWrXr
rrs       r	do_createzTestMkstempInner.do_creates11#sC@;c!))+**,;-C;-C~~c3S1tyy#sC0rcN|jjd|jdjd|jdjd|jddjd|jddjdy)	NblatrrWrrXrWrXaa.txt)rrrs r
test_basiczTestMkstempInner.test_basicsw'3%%g.3%%g.3C(..w74V,227;rcNtj}|j|djd|j|djd|j|djd|j|ddjd|j|dd	jd|j	t
5|jd
djdddd|j	t
5|j|d
jdddd|j	t
5|j|dd
jddddy#1swYxYw#1swYWxYw#1swYyxYw)NrrVrXrarVrWbrVrWrXaa.txtr)rrmrrrr)rdir_bs  rtest_basic_with_bytes_namesz,TestMkstempInner.test_basic_with_bytes_namessc$$&5c*0095d+11':5d+11':5d5;;GD5e9??H


y
)	;NNrsN+11':	;


y
)	=NNu"N-33G<	=


y
)	FNNu#2N6<<WE	F	F		;	;	=	=	F	Fs$#F#F$FFFF$clttt}|D]}|jd||<yNr r)listrrrrextantrs   rtest_basic_manyz TestMkstempInner.test_basic_manys4eJ'(	1A40F1I	1rctj}	|j|jd|jt	j
|jdt
jtj|y#t
jtj|wxYwNrr)
rrhrrr$r%r
gc_collectrHrmdirrrVs  rtest_choose_directoryz&TestMkstempInner.test_choose_directorys 	NNsN#))'2NNw||C0N177@ HHSM
 HHSMsAB+Cc|j}tjtj|jj
}d}tjdk(r
|dz	}|dz}|j||y)Nwin32I)	rrS_IMODErHrUrsysplatformrN)rrrrvusers     rtest_file_modezTestMkstempInner.test_file_modesg~~||BGGDII.667<<7"q=Dz*Hx(rzos.spawnl not availablectjrd}nd}|j}|jt	j
|jdd|jz}	t}tjjtjjtjj|d}tjdk(rdtj z}d|z}ntj }t	j"tj$tj ||||}|j'|dkd	|z|j'|dkDd
|zy#t$rtjd}YwxYw)NvqFz%drztf_inherit_check.pyr;z"%s"z$child process caught fatal signal %dz child process reports failure %d)rverboserrNrHget_inheritabler__file__	NameErrorr?argvr-rrrOr@
executablerP_WAITr)rrDrrmetester	decoratedretvals        rtest_noinheritzTestMkstempInner.test_noinherits/
??AA~~++DGG4e<
DGG^	Bbggoobggoob.AB35<<7"/If_FI299cnniBO!:fWD	F!%G%NO+	!B	s%E))F	F	ztext mode not availablec*|jd}|jd|jdtj|jdtj
|j
tj|jddy)Nr)r
sblatsextra
rr)rrrHlseekrSEEK_SETrNrrfs  r
test_textmodezTestMkstempInner.test_textmodesc

NNqN!		

q"++&r*G4rctjtjtjdtjt
Sr)rrrlrjrrrs rrzTestMkstempInner.make_temps;&&x':':'<'/'='='?')'/'>'>'*	,	,rct5tddd5|j\}}tj||j|j
d|j\}}tj||j|j
dddddddy#1swYxYw#1swYyxYwNaaabbb)rrrrHrrRendswith)rfd1name1fd2name2s     r!test_collision_with_existing_filez2TestMkstempInner.test_collision_with_existing_file	s$
%	3
"5%
7	3>>+LS%HHSMOOENN512>>+LS%HHSMOOENN512	3	3	3	3	3	3s#CBB;*C;C	CCc~t5tddd5tj}|j	|jd|j
\}}tj||j	|jdddddddy#1swYxYw#1swYyxYwrZ)	rrrrhrRr]rrHr)rrVrrUs    r&test_collision_with_existing_directoryz7TestMkstempInner.test_collision_with_existing_directorys$
%	2
"5%
7	2""$COOCLL/0)JRHHRLOODMM%01	2	2	2	2	2	2s#B3A=B'B3'B0	,B33B<)NNNrd)r2r3r4rrrr"r,r2r8rskip_unless_working_chmodrBr
skipUnless
has_spawnlrrequires_subprocessrQhas_textmoderWrrbrdr5rrrrrs4$$( <F"1(()))X%>? W  "#P#@#PJX'@A5B5,3
2rrceZdZdZdZdZy)TestGetTempPrefixzTest gettempprefix().ctj}|j|t|j	t|dtj}|j|t|j	t|dyr)rrjrr
assertGreaterrJrkr)rppbs   rtest_sane_templatez$TestGetTempPrefix.test_sane_template&sf""$a%3q61%

$
$
&b%(3r7A&rctjdz}tjd}	tjj||}tj|tjtjz}tj|tj|tj|y#tj|wxYw)Nz
xxxxxx.xxxrprefix)rrjrhrHr-rrO_RDWRO_CREATrrr6)rrndrs    rtest_usable_templatez&TestGetTempPrefix.test_usable_template2s
""$|3B'	Q"ABII

23BHHRLIIaLHHQKBHHQKsA?CCN)r2r3r4rrprwr5rrrkrk#s
'rrkc(eZdZdZdZdZdZdZy)TestGetTempDirzTest gettempdir().cPtjtjfD]{}|jtj
j
|xs|tjk(d|z|jtj
j|d|z}y)Nz%r is not an absolute pathz%r is not a directory)	rrlrmrRrHr-isabsrisdirrrvs  rtest_directory_existsz$TestGetTempDir.test_directory_existsFs}%%')=)=)?@	9AOOBGGMM!,>RYY81<
>OOBGGMM!,3a7
9	9rcxtj5}|jddddy#1swYyxYw)Nr)rrer)rrs  rtest_directory_writablez&TestGetTempDir.test_directory_writableOs3
(
(
*	 dJJw	 	 	 s09c4tj}tj}tj}|j||u|j	t|t||j
|tj|yr+)	rrlrmrRrrKrNrHfsdecode)rrrrs    rrzTestGetTempDir.test_same_thingXsl!!  "QDGT!W-BKKN+rctjd}tjdc}t_	tj5}||d<|jtj|ddd|t_tj|y#1swY*xYw#|t_tj|wxYw)Nz-Tempr)rrhrnrrrNrlr6)rcase_sensitive_tempdir_tempdirrs    rtest_case_sensitivez"TestGetTempDir.test_case_sensitivebs"*!1!1'!:%-%5%5t"("	4..0
PC 6H
  !4!4!68NO
P
 (HOO23

P
P
 (HOO23s#B&*B1B&B#B&&"CN)r2r3r4rr~rrrr5rrryryCs9 ,4rryc0eZdZdZddZdZdZdZdZy)	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)NrVrssuffixzDirectory 'z' incorrectly returned as '')rrrrlrmrgrHr-rIrOrNr^rr)
rrVrWrXrrrUrYrZadirs
          rrzTestMkstemp.do_createts11#sC@;c!))+**,;-C;-C%%#c#F
T

d+
uwws#t=A4H	J	NN4c3/HHRLIIdO
HHRLIIdOsD,D?c|j|jd|jd|jdd|jdd|jd	y)
Nrrrrrr r!.rrrs rr"zTestMkstemp.test_basicsV333C(4V,3rctj}|j|d|j|d|j|d|j|dd|j|dd|jd	
|jt5|jdddddd|jt5|jd	ddddd|jt5|jd	dd
dddy#1swYnxYw#1swYHxYw#1swYyxYw)Nrr$r%r&r'r(r)r*.rrr r!)rrmrrrr}s  rr,z'TestMkstemp.test_basic_with_bytes_namess
  "1#&1$'1$'1$D11%W54 


y
)	<NNs7N;	<


y
)	<NNt7N;	<


y
)	<NNtFN;	<	<		<	<	<	<	<	<s$DD+D7D(+D47Ectj}	|j||jtj|tj|y#tj|wxYwNr)rrhrr$r%rHr6r7s  rr8z!TestMkstemp.test_choose_directorysQ 	NNsN#NNw||C0N1HHSMBHHSMs7A##A:crtj}|jtjtt	df	tj
\}}t
j|t
j||j|ttjt_|jtjt|jtjt|jtjttj
\}}t
j|t
j||j|ttj
d\}}t
j|t
j||j|ttj
d\}}t
j|t
j||j|ttj
tj\}}t
j|t
j||j|t|t_y#|t_wxYw)Nr!rz
test-temp-rrr)rrnrrrKrgrHrrrmrrl)rorig_tempdirrr-s    r.test_for_tempdir_is_bytes_issue40701_api_wartsz:TestMkstemp.test_for_tempdir_is_bytes_issue40701_api_wartss''h..d4j0AB	,'')HBHHRLIIdO!!$,'335H!!("2"2E:!!("5"5"7=!!("6"6"8%@'')HBHHRLIIdO!!$.''v6HBHHRLIIdO!!$,''|<HBHHRLIIdO!!$,''H,?,?,ABHBHHRLIIdO!!$,+H|Hs
IJ))
J6rG)	r2r3r4rrr"r,r8rr5rrrrqs. <$,rrcreZdZdZdZddZdZdZdZdZ	e
jd	Zd
Z
dZdZd
Zy)TestMkdtempzTest mkdtemp().c*tjSr+)rrhrs rrzTestMkdtemp.make_temps!!rNcNtj|||}|1|turtj}ntj}||}||}tj
|||}	|j
|||||S#tj|xYw)Nr)	rrrrlrmrhr^rHr6)rrVrWrXrrUs      rrzTestMkdtemp.do_creates11#sC@;c!))+**,;-C;-CCC@	NN4c3/K	HHTNs6BB$cvtj|jtj|jdtj|jdtj|jddtj|jddyNrrrrrr r!)rHr6rrs rr"zTestMkdtemp.test_basicsu
!"
C()
C()
CS12
Df56rctj}tj|j	|tj|j	|dtj|j	|dtj|j	|ddtj|j	|dd|jt5tj|j	|d	dddd|jt5tj|j	|dd
ddd|jt5tj|j	ddddddy#1swYxYw#1swY[xYw#1swYyxYw)Nrr%r&r'r$r(r)r*r r!r)rrmrHr6rrrr}s  rr,z'TestMkdtemp.test_basic_with_bytes_namess[  "
A&'
A401
A401
A4T:;
A5g>?


y
)	CHHT^^t^AB	C


y
)	CHHT^^u&^AB	C


y
)	EHHT^^7^CD	E	E		C	C	C	C	E	Es$)(F$.(F03(F<$F-0F9<Gc.ttt}	|D]}|jd||<	|D](}t	|t
st
j|*y#|D](}t	|t
st
j|*wxYwr.)r/rrrrLrrHr6r0s   rr2zTestMkdtemp.test_basic_manyseJ'(	 
5 NNtN4q	
5
 a%HHQK
 V
 a%HHQK
 sA%%B<BcFtj}	tj|j	|tj|j	tj|tj|y#tj|wxYwr)rrhrHr6rr$r%r7s  rr8z!TestMkdtemp.test_choose_directorysc 	HHT^^^,-HHT^^S(9^:;HHSMBHHSMsAB		B cT|j}	tjtj|j}|dz}d}t
jdk(r
|dz	}|dz}|j||tj|y#tj|wxYw)Niir;r<r=)	rrr>rHrr?r@rNr6)rrVrrvrAs     r	test_modezTestMkdtemp.test_modesnn	<< 4 45DEMDH||w& 1}:.T8,HHSMBHHSMsA(BB'ct5tddd5tjd}|j	|j|jjdtj}|j|jdddddddy#1swYxYw#1swYyxYw)Nr[r\Fdelete)	rrrrerrRrUr]rh)rrrVs   rrbz-TestMkdtemp.test_collision_with_existing_file&s$
%	1
"5%
7	1..e<DJJLOODII..u56""$COOCLL/0
	1	1	1	1	1	1s#B;BB/B;/B8	4B;;CcVt5tddd5tj}|j	|jdtj}|j	|jdddddddy#1swYxYw#1swYyxYwrZ)rrrrhrRr])rdir1dir2s   rrdz2TestMkdtemp.test_collision_with_existing_directory1s$
%	2
"5%
7	2##%DOODMM%01##%DOODMM%01	2	2	2	2	2	2s#BA)BBB	BB(ctj}|jtjtt	df	tj
}t
j||j|ttjt_|jtjt|jtjt|jtjttj
}t
j||j|ttj
d}t
j||j|ttj
d}t
j||j|ttj
tj}t
j||j|t|t_y#|t_wxYw)Nz-dirrz
test-mkdtemp-rrr)rrnrrrKrhrHr6rmrrl)rrr-s   rrz:TestMkdtemp.test_for_tempdir_is_bytes_issue40701_api_warts;sw''h..d4j0AB	,##%DHHTN!!$,'335H!!("2"2E:!!("5"5"7=!!("6"6"8%@##%DHHTN!!$.##62DHHTN!!$,##?;DHHTN!!$,##(;(;(=>DHHTN!!$,+H|Hs
G$H11
H>c	tjd}|jtjj|tj|y#tjwxYw)Nrr)rrhrRrHr-r{r6r.s  rtest_path_is_absolutez!TestMkdtemp.test_path_is_absoluteUsG	##,DOOBGGMM$/0HHTNBHHTNsAAA3rG)r2r3r4rrrr"r,r2r8rrerrbrdrrr5rrrrsR"(7
E	 (()"	12,4rrcTeZdZdZfdZfdZGddZd	dZdZdZ	xZ
S)

TestMktempzTest mktemp().cTtj|_t|yr+)rrhrVrrErs rrEzTestMktemp.setUpds##%

rc|jr&tj|jd|_t|yr+)rVrHr6rtearDownrs rrzTestMktemp.tearDownhs,88HHTXXDH
rcHeZdZejZejZdZ	dZ
y)TestMktemp.mktempedctj||||_tjtj
|j|jdy)Nrr:)rr<rUrHrrr	)rrVrWrXs    rr/zTestMktemp.mktemped.__init__rs9 CCHDI
HHRWWTYYe<=rc:|j|jyr+)rrUrs rrzTestMktemp.mktemped.__del__xsLL#rN)r2r3r4rHrrrrr	r/rr5rrmktempedrns ))))	>	$rrc|j|j||}|j|j|j|||Sr+)rrVr^rU)rrWrXrs    rrzTestMktemp.do_create{s7}}TXXsC0tyy$((C5rc|j|jd|jd|jdd|jddyrrrs rr"zTestMktemp.test_basicH333C(4V,rcttt}|D]}|jd||<~t	j
yr.)r/rrrrr5r0s   rrzTestMktemp.test_manysCeJ'(	1A40F1I	1r)rr)r2r3r4rrErrrr"rrrs@rrr_s)$$-rrcxeZdZdZddZdZdZdZdZdZ	d	Z
d
ZdZdZ
d
ZdZdZdZdZdZdZy)TestNamedTemporaryFilezTest NamedTemporaryFile().Nc|tj}tj||||}|j|j||||S)N)rVrsrr)rrlrer^rU)rrVrWrXrrs      rrz TestNamedTemporaryFile.do_createsK;%%'C**s3s28:	
tyy#sC0rc|j|jd|jd|jdd|jddyrrrs rr"z!TestNamedTemporaryFile.test_basicrrc|j}tj|}|j}|j}~|d~|d~t	j
dr|j
|yy)NfoosbarT)cpython)rweakrefrefrrcheck_impl_detailassertIsNone)rrVwrrwrite2s     rtest_method_lookupz)TestNamedTemporaryFile.test_method_lookupsi
NN
[[^

f
v$$T2bd#3rcgdfd}t|D]\}}|j|||jtdz
y)N)sspam
seggs
sbeans
ctjd}|jdj|j	d|S)Nw+brrr)rrerrseek)rVliness r	make_filez3TestNamedTemporaryFile.test_iter.<locals>.make_files7++7A
GGCHHUO$
FF1IHrrd)	enumeraterNrJ)rrrlrs    @r	test_iterz TestNamedTemporaryFile.test_itersW3	
ik*	*DAqQa)	*CJN+rctj}|jtjj|jd|jzy)Nz$NamedTemporaryFile %s does not exist)rrerRrHr-existsrUrUs  rtest_creates_namedz)TestNamedTemporaryFile.test_creates_nameds<'')qvv.>G	Irctj}	tj|5}|jdddd|j	tj|g|jt
jjjd|jztj|y#1swYxYw#tj|wxYw)Nrrz(NamedTemporaryFile %s exists after close)rrhrerrNrHrrr-rrUr6rrVrVs   rtest_del_on_closez(TestNamedTemporaryFile.test_del_on_closes 	,,5
! 
!RZZ_b1RWW^^AFF3BQVVK
M
HHSM

!
!
HHSMs"CCA3CCCC*ctj}d}	tj|d}|j}|j	d|j|j
tjj|jd|jz|tj|tj|y#|tj|tj|wxYw)NF)rVrrz)NamedTemporaryFile %s missing after close)rrhrerUrrrRrHr-rrr6)rrVtmprVs    rtest_dis_del_on_closez,TestNamedTemporaryFile.test_dis_del_on_closes 
	++EBA&&C
GGG
GGIOOBGGNN1662CaffL
N		#HHSM		#HHSMsB
C.C=ctj}|jd|j|j|jyNabc
)rrerrrUs  rtest_multiple_closez*TestNamedTemporaryFile.test_multiple_closes7'')							rcntj5|jtjjjddd|jtjjjfd}|jt|y#1swY]xYw)Nc65	dddy#1swYyxYwr+r5rVsr
use_closedz?TestNamedTemporaryFile.test_context_manager.<locals>.use_closed



)
rrerRrHr-rrUrrrrrrVs  @rtest_context_managerz+TestNamedTemporaryFile.test_context_managersy

(
(
*	4aOOBGGNN16623	4/0		
*j1
	4	4s9B++B4ctj}	tj|dd5}|jd|j}|j|j
5|jtjj|jd|jddddddd|j
5|jtjjjd|jddddtj|y#1swYxYw#1swYxYw#1swY7xYw#tj|wxYw)NTFrVrdelete_on_closerNamedTemporaryFile z= is incorrectly deleted on closure when delete_on_close=Falsez" exists after context manager exit)
rrhrerrUrsubTestrRrHr-rrr6)rrVrVf_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=BD

NGH 	\\^NOOBGGNN166$:1!&&<LMNN

N
@  !7#6qvvjA>"?@
@
HHSMNN

N

N
@
@
HHSMsTE>E,AD:4E<EAEE:E	?EEEEEE5cftj}	tj|dd5}|jd|j	tj|jdddtj|y#1swYxYw#tj|wxYwNTFrr)	rrhrerrrHrrUr6rs   r&test_context_man_ok_to_delete_manuallyz=TestNamedTemporaryFile.test_context_man_ok_to_delete_manuallys 		,,48=BD
"GH 			!&&!
"
HHSM
"
"
HHSMs#BAB
/B
BBB0ctj}d}	tj|dd5}|jd|j}ddd|jtjjjd|jdt
j|t
j|y#1swY{xYw#t
j|t
j|wxYw)NrFTrrrz exists after close)rrhrerrUrRrHr-rrr6)rrVrrVs    r(test_context_man_not_del_if_delete_falsez?TestNamedTemporaryFile.test_context_man_not_del_if_delete_false.s 
	,,U=AC
 FG 
 
OOBGGNN1662-affZ7JK
M
IIfHHSM
 
 
IIfHHSMs#CCACC
C,Dc0d}tjtj}	||}|j	t
jj|d|dtj|y#tj|wxYw)Ncptj|dd}|j}|jd|Sr)rrerUrrVrVtmp_names   rmy_funcz=TestNamedTemporaryFile.test_del_by_finalizer.<locals>.my_funcAs6++D<ACAvvH
GGGOrrz exists after finalizer )	gccollectrrhrrHr-rr6)rrrVrs    rtest_del_by_finalizerz,TestNamedTemporaryFile.test_del_by_finalizer>su		

 	s|HRWW^^H5-h\:23
4
HHSMBHHSMs;A>>Bc@dtfd}tjy)Nreturnctj|dd}|j}|jd|j	tj||Sr)rrerUrrrHrrs   rrzVTestNamedTemporaryFile.test_correct_finalizer_work_if_already_deleted.<locals>.my_funcXsI++D<ACAvvH
GGG
GGIIIhOr)rrr)rrs  r.test_correct_finalizer_work_if_already_deletedzETestNamedTemporaryFile.test_correct_finalizer_work_if_already_deletedTs	#		

rctj}|jtj||jt5tjd|ddd|jt5tjd|ddd|jtj|gy#1swYdxYw#1swY;xYwNr)rrV)rrh
addCleanuprrrrrerrNrHrr7s  r
test_bad_modez$TestNamedTemporaryFile.test_bad_modecs 	((#.


z
*	<''Ts;	<


y
)	9''QC8	9C"-		<	<	9	9
C?CCCc:tj}|jtj||jt5tjdd|ddd|jtj|gy#1swY/xYwNwzbad-encoding)encodingrV)rrhrrrrLookupErrorrerNrHrr7s  rtest_bad_encodingz(TestNamedTemporaryFile.test_bad_encodinglsu 	((#.


{
+	O''n#N	OC"-	O	O
BBc`tj}|jtj|tjd5}tjdtj5}t|_	|jt5tj|dddddddddjj|jtj |gy#1swY^xYw#1swYbxYw#1swYfxYw)Nztempfile._TemporaryFileWrapperzio.openr)rrhrrrrpatch	mock_openKeyboardInterruptside_effectrrer
assert_calledrNrHr)rrVmock_ntfrs    rtest_unexpected_errorz,TestNamedTemporaryFile.test_unexpected_errorss 	((#.
ZZ8
9	5X
ZZ	4>>#3
4	58A#4#6H ""#45
5++4
5	5	5
	'')C"-
5
5	5	5	5	5s<
)D$3%DD/D7D$DDD!	D$$D-)NrrT)r2r3r4rrr"rrrrrrrrrrrrrrrr5rrrrs[$-$ ,I
 28
 ,
..	.rrc"eZdZdZddZdZdZdZdZdZ	e
jejd	d
ZdZdZd
ZdZdZdZdZdZdZdZdZdZdZdZdZe
jejd	dZdZy)TestSpooledTemporaryFilezTest SpooledTemporaryFile().Ncd|tj}tj||||}|S)N)max_sizerVrsr)rrlrp)rrrVrWrXrs      rrz"TestSpooledTemporaryFile.do_creates2;%%'C,,hCPS\_`rc|j}|j|j|jddd}|j|jy)Nrrr!)rrWrX)rr_rolledrUs  rr"z#TestSpooledTemporaryFile.test_basicsFNN#NNCSfN=#rc`|j|jtjyr+)rrioIOBasers rtest_is_iobasez'TestSpooledTemporaryFile.test_is_iobasesdnn.		:rc~hd}tttj}||z
}|j	|dy)N>rrtellrflushread1rcloseddetacherrorsfilenoisatty__exit____iter____next__r	newlinesreadablereadintoreadlineseekabletruncatewritable	__enter__	readinto1	readlines
writelineszMSpooledTemporaryFile missing attributes from IOBase/BufferedIOBase/TextIOBase)setrVrrpr)riobase_attrsspooledtempfile_attrs
missing_attrss    rtest_iobase_interfacez.TestSpooledTemporaryFile.test_iobase_interfacesB	
!$C(E(E$F G$'<<

/	
rcNtj}	tjd|}|j|j|jd|j
|j|j}|j|jtj|gt|ts2|jtjj|d|ztj |y#tj |wxYw)N
)rrVsblat blat blat blat blat z*SpooledTemporaryFile %s exists after close)rrhrprrrrRrUrrNrHrrLintr-rr6)rrVrVfilenames    rrz*TestSpooledTemporaryFile.test_del_on_closes 	--rsCAQYY'
GGL!OOAII&vvH
GGIRZZ_b1h,  !9@8KM
HHSMBHHSMsC!D

D$c|jd}|jd|j|jd|j	t
5|j
dddy#1swYyxYw)Nr<rr)rrrNrUassertWarnsResourceWarningrrUs  rtest_del_unrolled_filez/TestSpooledTemporaryFile.test_del_unrolled_files_
NNBN'	&


o
.	
IIK			sA//A8z&Emscripten cannot fstat renamed files.c|jd}|jd|j}|jtj
j
||jt5|jddd|jtj
j
|d|zy#1swY<xYw)Nrr@rz9Rolled SpooledTemporaryFile (name=%s) exists after delete)rrrUrRrHr-rrArBrr)rrVrUs   rtest_del_rolled_filez-TestSpooledTemporaryFile.test_del_rolled_files
NNAN&	vvt,-


o
.	
IIK	GGNN4 G$N	
		s3B??Cc|jd}|j|jtdD]%}|j	dd|jd'|j|jy)Nr@rxxxxxxxxxxxxxxxxxxxx)rrrrrr)rrVrs   rtest_rewrite_smallz+TestSpooledTemporaryFile.test_rewrite_smallsdNNBN'#q	A
FF1aL
GGI		
#rcf|jd}|j|j|jd|j|j|jd|j|j|jd|j	|jy)NrGr@rI
xxxxxxxxxxx)rrrrrRrUs  rtest_write_sequentialz.TestSpooledTemporaryFile.test_write_sequentials}
NNBN'#		#		#	
		"rc|j}|jd|jd}|j|d|j	}|j|dy)N)rMyzrsxyz)rr5rrNr)rrVposbufs    rtest_writelinesz(TestSpooledTemporaryFile.test_writelinessSNN	'(ffQia ffhf%rc|jd}|jd|j|j|j	d|j|jy)N#r@)rIrLsxxxxxrM)rr5rrrrRrUs  rtest_writelines_sequentialz3TestSpooledTemporaryFile.test_writelines_sequentialsN
NNBN'	56#	
		"rc4|jd}|j|j|jdd}|j	|d|j|j|jd|j
|jy)NrGr@rrrM)rrrrrNrrR)rrVrRs   rtest_sparsez$TestSpooledTemporaryFile.test_sparsesr
NNBN'#ffS!nc"#	
		"rc|jd}|j|j|j|j	dkD|j|jy)NrGr@r)rrrrRr&rUs  rtest_filenoz$TestSpooledTemporaryFile.test_fileno	sJNNBN'#
Q'		"rctj}|jd|j|j|j|j|jyr)rrprrrrrUs  r#test_multiple_close_before_rolloverz<TestSpooledTemporaryFile.test_multiple_close_before_rolloversI))+	#						rctjd}|jd|j|j|j|j|jy)Nrdr@r)rrprrRrrrUs  r"test_multiple_close_after_rolloverz;TestSpooledTemporaryFile.test_multiple_close_after_rolloversI))15			"						rc|jd}|j}|j}|j}|d|d|dd|j	|ddy)NrGr@s#aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaas#bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbrFsFaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb)rrrrrN)rrVrrrs     rtest_bound_methodsz+TestSpooledTemporaryFile.test_bound_methods"s]
NNBN'vvvv
i
iQ
b#45rcJtjd}|jd|j|j|j|jd|j|j|jt5|jddd|jt5|jddd|jt5|jddd|jd|j|j|j|jd|j|j|jt5|jddd|jt5|jddd|jt5|jdddy#1swY@xYw#1swY#xYw#1swYxYw#1swYxYw#1swYgxYw#1swYyxYw)Nr<r@rLrrMzrb+)rrprrrrNrrrUrrr+r	r%rRassertIsNotNonerUs  rtest_propertiesz(TestSpooledTemporaryFile.test_properties0s))26		#'!&&!


~
.	
JJ	


~
.	
JJ	


~
.	
HH		

		"'QVV$


~
.	
JJ	


~
.	
JJ	


~
.	
HH														sH
G9
G'#
G40
H
H

HG$'G14G>H

HH"ctjddd}|jd|jd|j	|jd|jd|jd|j	|jd|j
|j|j	|jd|j|j|j	|jtj|j	|jd|j	|jd	|jd
|jd|j	|jd|jd|jd|j	|jd
|j!|j|j	|jd|j#|j|j	|jtj|j	|jd|j	|jd	y)Nw+r<utf-8)rrr	zabc
rzdef
zabc
def
strictzxyzzy
zabc
def
xyzzy
zfoobar
zabc
def
xyzzy
foobar
)rrprrrNrrrrrrUr+rHlinesepr	r%rRrdrUs  rtest_text_modez'TestSpooledTemporaryFile.test_text_modeHs
))tb3:
<		q	7+		q	<0#&!&&!RZZ0W-8,			q	#67		q	#BC		"&QVV$RZZ0W-8,rctjddddd}|jd|jd|j	|jd|j
|j|j	|jd|j|j|j|j|j	|jd|j	|jd|jd	|jd
|jd|j	|jd|j|j|j	|jd|j|j|j|j|j	|jd|j	|jdy)Nrgr<rrhr;)rrnewliner	r%uΛ
ruΜΜΜΜΜΜΜΜΜΜ
u(ΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝuBΛ
ΜΜΜΜΜΜΜΜΜΜ
ΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝ)rrprrrNrrrrrrUrdr+r	r%rRrUs  rtest_text_newline_and_encodingz7TestSpooledTemporaryFile.test_text_newline_and_encodinghsm))tb24w19
;	
	q	<0#&!&&!QZZ(W-8,	&'	
	q	I	K		"&QVV$QZZ(W-8,rc4tjd5|jj|jjddd|jjfd}|j
t|y#1swY@xYw)Nrdr@c65	dddy#1swYyxYwr+r5rsrrzQTestSpooledTemporaryFile.test_context_manager_before_rollover.<locals>.use_closedrr)rrprrr#rRrrrs  @r$test_context_manager_before_rolloverz=TestSpooledTemporaryFile.test_context_manager_before_rolloversu

*
*A
6	'!QYY'QXX&	'	
!		
*j1	'	's7BBctjd5|jjj	dj|j
j|jjddd|j
jfd}|jt|y#1swY@xYw)Nrdr@rc65	dddy#1swYyxYwr+r5rsrrzQTestSpooledTemporaryFile.test_context_manager_during_rollover.<locals>.use_closedrr)
rrprrrr!rRr#rrrs  @r$test_context_manager_during_rolloverz=TestSpooledTemporaryFile.test_context_manager_during_rollovers

*
*A
6	'!QYY'
GGH
GGIOOAII&QXX&	'	
!		
*j1	'	'sA3C

Ccztjdjdj|j	j
5|j
jddd|j	jfd}|jt|y#1swY@xYw)Nrdr@rc65	dddy#1swYyxYwr+r5rsrrzPTestSpooledTemporaryFile.test_context_manager_after_rollover.<locals>.use_closedrr)
rrprr!rRrrr#rrrs  @r#test_context_manager_after_rolloverz<TestSpooledTemporaryFile.test_context_manager_after_rollovers))15					"
	'QXX&	'!		
*j1
	'	'sB11B:c8tjd}|jd|jd|j	|j|j|j|jjdtjd}|jd|j	d|j|j|j|jjdtjd}|jd|j	d|j|j|jtj|jjdy)	Nr<r@sabcdefg
rrsabcdr)rrprrr0rrrN_filegetvaluerRrHfstatr&st_sizerUs  r!test_truncate_with_size_parameterz:TestSpooledTemporaryFile.test_truncate_with_size_parameters

))26		q		

#))+S1))26		

1
#))+W5))26		

2		"!((*-55r:rcn|jtjttj
yr+)rrrprtypesGenericAliasrs rtest_class_getitemz+TestSpooledTemporaryFile.test_class_getitems&h;;EB((	*r)rNrr) r2r3r4rrr"rr:rrCrrrrrErJrNrTrWrYr[r]r_rbrerkrnrqrtrwr~rr5rrrrs&$;
*"X__G



$
#&#	##60-@-4	222X__G;;**rrc:eZdZdZdZdZdZdZdZdZ	dZ
y	)
TestTemporaryFilezTest TemporaryFile().c,tjyr+)rrfrs rr"zTestTemporaryFile.test_basics
""$rctj}tj|}|jd	t	j
|y#|j
t	j
|xYwr4)rrhrfrrHr6rrs   rtest_has_no_namez"TestTemporaryFile.test_has_no_namesZ""$C&&3/A
GGG


	
sA(A;ctj}|jd|j|j|jyr)rrfrrrUs  rrz%TestTemporaryFile.test_multiple_closes7&&(A
GGH
GGI
GGI
GGIrc`fd}|dd|dd|ddd|d	dd
y)Nctj|i|5}|j||jdj	||jdddy#1swYyxYwr)rrfrrrNr)inputrrfileobjrs    r	roundtripz;TestTemporaryFile.test_mode_and_encoding.<locals>.roundtripsZ++T<V<<MM%(LLO$$UGLLN;<<<sAA##A,s1234rzabdc
rguΛzutf-16)r	zfoo
r)rmr5)rrs` rtest_mode_and_encodingz(TestTemporaryFile.test_mode_and_encodings6
<
gu%h%hx8ir2rctj}|jtj||jt5tjd|ddd|jt5tjd|ddd|jtj|gy#1swYdxYw#1swY;xYwr)rrhrrrrrrfrrNrHrr7s  rrzTestTemporaryFile.test_bad_modes""$COOI,,c2"":.
;&&Dc:
;""9-
8&&A37
8RZZ_b1	
;
;
8
8rc:tj}|jtj||jt5tjdd|ddd|jtj|gy#1swY/xYwr)rrhrrrrr
rfrNrHrr7s  rrz#TestTemporaryFile.test_bad_encodingsu""$COOI,,c2"";/
N&&s^M
NRZZ_b1
N
Nrc
tj}|jtj|tjdd5tjd5}tjd5}tjd5}t|_|jt5tj|dddddddddddddddj|jtj|gy#1swY_xYw#1swYcxYw#1swYgxYw#1swYkxYw#1swYoxYw)Nztempfile._O_TMPFILE_WORKSFz	os.unlinkzos.openzos.closer)rrhrrrrrrrrrfrrNrHr)rrVmock_unlinkr
mock_closes     rrz'TestTemporaryFile.test_unexpected_errors""$COOI,,c27?
4K(
4,7I&
4*3J'
4,6*;*='&&'894**s34
4
4
4
4
$$&RZZ_b144
4
4
4
4
4
4
4
4slE!E7D?
%D3	2D'	D3	D?E!E'D0,D3	3D<
8D??EEE	EE N)r2r3r4rr"rrrrrrr5rrrrs(#	%
	 		3	2	2	2rrceZdZdZdZdZy)
NulledModulesc|Dcgc]}|jc}|_|jDcgc]}|jc}|_ycc}wcc}wr+)rsrefscopycontents)rmodulesmodrs    rr/zNulledModules.__init__s<-45cS\\5	/3yy99
69s
AAc>|jD]}|D]}d||<	yr+)r)rrvrxs   rr2zNulledModules.__enter__s-	A
#
	rct|j|jD]&\}}|j|j	|(yr+)ziprrclearupdate)rexc_inforvrs    rr(zNulledModules.__exit__s8		4==1	DAq
GGI
HHQK	rN)r2r3r4r/r2r(r5rrrrs:
rrceZdZdZ		ddZddZdZdZdZe	jdZejd	Zejd
ZdZdZd
ZdZdZdZdZej0eedddZdZy)TestTemporaryDirectoryzTest TemporaryDirectory().Nc|tj}tj||||}|j|j||||j|j||||S)N)rVrsrignore_cleanup_errors)rrlrqr^rU
do_create2)	rrVrWrXrecursedirsfilesrrs	         rrz TestTemporaryDirectory.do_create'sb;%%'C))C"79	
sxxc3/'47
rc|r_t|D]Q}tjj|d|z}tj||j||dz
||St|D]I}t
tjj|d|zd5}|jddddKy#1swYVxYw)Nzdir%drdz
test%d.txtrsHello world!)rrHr-rmkdirrrr)rr-rrrrrUrVs        rrz!TestTemporaryDirectory.do_create22s4[
>ww||D'A+6gaiu=
>u	)Abggll4)9:DA
)Q(
)
)	)
)
)sB::C	c@tj5}	ddd|jt5}tjddd|j	j
jtjy#1swYrxYw#1swYJxYwr)rrqrrrN	exceptionerrnoENOENT)rrcms   rtest_mkdtemp_failurez+TestTemporaryDirectory.test_mkdtemp_failure=s|
(
(
*	k	


0
1	9R''K8	9++U\\:				9	9sBBBBctj}	|j|}|jtj
j
|jd|jz|j|jtj
j
|jd|jzt	j|y#t	j|wxYw)Nrz$TemporaryDirectory %s does not exist*TemporaryDirectory %s exists after cleanup)rrhrrRrHr-rrUcleanuprr6)rrVrvs   rtest_explicit_cleanupz,TestTemporaryDirectory.test_explicit_cleanupGs 	3'AOOBGGNN1662BQVVK
M
IIKRWW^^AFF3DqvvM
O
HHSMBHHSMsB.CC1c
2tj5}|j|d}tj|j
}|j
|jd|dt|dzd5}|jd|jddd|jtt|jd	tt j"j%d
d||j|jt j"j%d
d|d|j|j'|jd|d
dddy#1swYxYw#1swYyxYw)z=Test that cleanup doesn't return an error when ignoring them.TrVrTemporaryDirectory  does not exist
a_file.txtw+t
Hello world!
N*win1Unexpected number of files in TemporaryDirectory  existence state unexpectedz exists after cleanup)rrqrr$r%rUrRrrrrrNrJr/globr=r?r@
startswithrrworking_dirtemp_dir	temp_path	open_files     r#test_explicit_cleanup_ignore_errorsz:TestTemporaryDirectory.test_explicit_cleanup_ignore_errorsTs{

(
(
*	Jk~~t&=HX]]3IOOI,,.1)oN
Pi,.6
#) 01  "
#
SinnS&9!:; !8!8!?@33<-A
B
  "''.%i]2MN
P
  "%i]2GH
J%	J	J
#
#
	J	Js%A&F
;"FCF
F
	F

Fcx|j}|jd}tj|jtjj|jd|j
|jtjj|jd|jz|jtjj|jd|jtj|jdgd|j
y)Nr)rfoorz-Directory pointed to by a symlink was deletedz	test0.txtz>Contents of the directory pointed to by a symlink were deleted)rrHsymlinkrUr-rrrrrRrNr)rd1d2s   r(test_cleanup_with_symlink_to_a_directoryz?TestTemporaryDirectory.test_cleanup_with_symlink_to_a_directoryls^^

^^A^
&	

277BGGLL%89	

0EO	Qrww/G	IBGG,{m(	)	

rc.tj}	|j|}|j}~|j	t
jj|d|ztj|y#tj|wxYw)Nr*TemporaryDirectory %s exists after __del__)	rrhrrUrrHr-rr6rrVrvrUs    rtest_del_on_collectionz-TestTemporaryDirectory.test_del_on_collectionsr 	3'A66DRWW^^D1DtK
M
HHSMBHHSMsAA==Bc
tj5}|j|d}tj|j
}|j
|jd|dt|dzd5}|jd~ddd|jtt|jd	ttj j#d
d||j|jtj j#d
d|ddddy#1swYxYw#1swYyxYw)
z@Test that ignoring errors works when TemporaryDirectory is gced.TrrrrrrNrrrr)rrqrr$r%rUrRrrrrNrJr/rr=r?r@rrs     r$test_del_on_collection_ignore_errorsz;TestTemporaryDirectory.test_del_on_collection_ignore_errorss>
(
(
*	Pk~~t&=HX]]3IOOI,,.1)oN
Pi,.6
) 01

SinnS&9!:; !8!8!?@33<-A
B
  "''.%i]2MN
P	P	P


	P	Ps%A&E
;D>B'E
>E	E

Ec|j5}dD]}dj||}tjd|\}}}|j	j}|j
tjj|d|z|j	dd}|jd||jd	|	dddy#1swYyxYw)
N)builtinsrHshutilr?rrBaif 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-crrhbackslashreplace
Exception 'ResourceWarning: Implicitly cleaning uprformatrassert_python_okrstriprrHr-rrr)rrVrcodercouterrrs        rtest_del_on_shutdownz+TestTemporaryDirectory.test_del_on_shutdowns
^^
	NR
N&3C0'( -==dDIC::<--/  !9H8SUjj*<=  s3

GM7
N	N	N	NsB;CCc
tj5}dj|}tjd|\}}}tj|jj}|jtt|jdttjj!dd||j|j#tjj!dd|d|jd	d
}|j%d||j%d||j'd
|dddy#1swYyxYw)z?Test ignoring errors works when a tempdir is gc'ed on shutdown.aif 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)
                )rrrrrrrrhr	ExceptionErrorrN)rrqrrrr$r%rrrNrJr/rr=r?r@rrrr)rrr__rrrs       r"test_del_on_shutdown_ignore_errorsz9TestTemporaryDirectory.test_del_on_shutdown_ignore_errorssB

(
(
*!	Jk$F{F3%
&)99$ELBSSZZ\%7%7%9:ISinnS&9!:; !8!8!?@33<-A
B
  "''.%i]2MN
P**W&89C[#.Wc*MMCSIC!	J!	J!	JsEE##E,c|j5}dj|}tjd|\}}}|j	j}|j
tjj|d|z|j	dd}|jd||jd|dddy#1swYyxYw)	Naif 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)
                rrrrhrrrr)rrVrrrrrs       rtest_exit_on_shutdownz,TestTemporaryDirectory.test_exit_on_shutdowns
^^
	JFsFO
)99$ELBSzz|))+HRWW^^H5DxO
Q**W&89C\3/MMCSI)	J	J	JsB3C

Cc|j5}|j|d}|j}tjdtfd5tjdt~tjddd|jtjj|d|zdddy#1swYDxYw#1swYyxYw)	N)rVr
ImplicitlyF)quietalways)r=r)
rrUrrArBrBrCrr5rrHr-rrs    rtest_warnings_on_cleanupz/TestTemporaryDirectory.test_warnings_on_cleanups
^^
	M32A66D!//1@1B6;=
%''?K""$
%
RWW^^D1DtK
M	M	M

%
%	M	Ms#=C1C?:CC	CCc|j}|j|j|jyr+)rrr}s  rrz*TestTemporaryDirectory.test_multiple_closes)NN									rcB|j}|5}|jtjj	||j||jddd|jtjj	y#1swY8xYwr+)rrRrHr-rrNrUr)rrvrUs   rrz+TestTemporaryDirectory.test_context_managersrNN
	+$OOBGGNN401T166*	+	
-.	+	+sABBcrtdD]}|dz}|jt|d5|jddd}|5t	j
|jd	D]W\}}}|D]6}t	jtjj|||8t	j||Y|jddd|jtjj|jdddy#1swYMxYw#1swY*xYw)
Nr<03orrrrrrFtopdown)
rrrrrHwalkrUrr-rrrr)rrrvrootrrrUs       r
test_modesz!TestTemporaryDirectory.test_modess!H	9DQJD6$#67	
9NN11AN> -/WWQVVU-K-)dE$)EDHHRWW\\$%=tDEt,-IIK
   !78	
9	
9	9  	
9	
9s%D,BD AD, D)%D,,D6	chflagszrequires os.chflagsc	tjtjz}tj}	t|dj
	tj||tj|dtj||jddd}|5tj|jdD]W\}}}|D]6}tjtjj!|||8tj||Y|j#ddd|j%tjj'|jy#t$r}|jd|Yd}~d}~wwxYw#tj|wxYw#1swYxYw)	Nrrz4chflags() doesn't support UF_IMMUTABLE|UF_NOUNLINK: rrrFr)rUF_IMMUTABLEUF_NOUNLINKrTESTFNrrrHrrrrrrrUr-rrrr)	rrr>excrvrrrrUs	         r
test_flagsz!TestTemporaryDirectory.test_flags-so!!D$4$44##	'3%%'
(

8U+

8Q'X&NN11AN6
	%'WWQVVU%C
(!dE!@DJJrww||D$7?@

4'
(
IIK
		
/0#
B

!;;>%ABB
B
X&		sBFE2$F%BF72	F;FFFFF47Gctjd5}	ddd|jtjjt
j|y#1swYMxYw)NFr)rrqrRrHr-rrr)rrs  rtest_delete_falsez(TestTemporaryDirectory.test_delete_falseJsO

(
(
6	+	{34

k"		sA%%A.)NrrrdrdrdF)rdrdrd)r2r3r4rrrrrrrskip_unless_symlinkrrcpython_onlyrrrrrrrrrrrfhasattrrHrrr5rrrr$s$KL(-		);J0""#(



PP(N@#JJJ0M /9XY/1FG1H18#rr__main__)9rrrrHr$r?r_rB
contextlibrrrrrrrtestrtest.supportrrrrrrirrgr@rrTestCaser
r9rbr{rrrcontextmanagerrrrrrkryrrrrrrerfrrrr2mainr5rr<module>rs		
		
"&(((H,C,CC
R
"
<<9%JJ.7H--.7d,28$$,2^7,7<;7\;7~")|")TILI@
 L
  2 % %Fn2~|n2b@+4\+4\[,,[,|M.,M`00|_.\_.FC*|C*J
h&<&<<I2LI2Z

 j#\j#X	zHMMOr