
    0hh.                       S SK r S SKrS SKrS SKrS SKrS SKrS SKrS SKrS SKrS SK	r	S SK
r
S SKrS SKrS SKrS SKrS SKJr  S SKrS SKJr  S SKJr  S SKJr  S SKJr  \ R.                  \ R0                  :g  r\" \S5      r\R8                  R;                  S5      (       a  S	rOS
r " S S\R>                  5      r  " S S\R>                  5      r! " S S\!5      r" " S S\!5      r# " S S\!5      r$ " S S\!5      r% " S S\!5      r&\RN                  S 5       r(S r) " S S5      r* " S S\*\!5      r+ " S S \!5      r, " S! S"\!5      r- " S# S$\!5      r. " S% S&\*\!5      r/ " S' S(\!5      r0 " S) S*\!5      r1 " S+ S,\!5      r2\ Rf                  \ Rh                  La   " S- S.\!5      r5 " S/ S05      r6 " S1 S2\!5      r7\8S3:X  a  \Rr                  " 5         gg)4    N)mock)support)	os_helper)script_helper)warnings_helperspawnlopenbsd0   d   c                   2    \ rS rSrS rS rS rS rS rSr	g)	TestLowLevelInternals(   c                     U R                  [        [        R                  " S5      5        U R                  [        [        R                  " S5      5        U R                  [        [        R                  " S 5      5        g N     )assertIsstrtempfile_infer_return_typebytesselfs    ;/opt/python-3.13.8/usr/lib/python3.13/test/test_tempfile.pytest_infer_return_type_singles4TestLowLevelInternals.test_infer_return_type_singles)   sM    c866r:;eX88=>c866t<=r   c                    U R                  [        [        R                  " SS5      5        U R                  [        [        R                  " SS5      5        U R                  [        5         [        R                  " SS5        S S S 5        U R                  [        5         [        R                  " SS5        S S S 5        g ! , (       d  f       ND= f! , (       d  f       g = fr   r   r   r   r   r   assertRaises	TypeErrorr   s    r    test_infer_return_type_multiples6TestLowLevelInternals.test_infer_return_type_multiples.   s    c866r2>?eX88cBCy)''C0 *y)''R0 *) *)))s   ,C!C
C
C!c                    U R                  [        [        R                  " S S5      5        U R                  [        [        R                  " SS 5      5        U R                  [        [        R                  " S S 5      5        U R                  [        [        R                  " SS 5      5        U R                  [        [        R                  " S S5      5        U R                  [        5         [        R                  " SS S5        S S S 5        U R                  [        5         [        R                  " SS S5        S S S 5        g ! , (       d  f       NE= f! , (       d  f       g = fr   r   r   s    r   )test_infer_return_type_multiples_and_none?TestLowLevelInternals.test_infer_return_type_multiples_and_none6   s    c866tR@Ac866r4@Ac866tTBCeX88dCDeX88sCDy)''D#6 *y)''T26 *) *)))s   -E#E
E
E$c                     U R                  [        [        R                  " [        R
                  " S5      5      5        g )N/)r   r   r   r   r   FakePathr   s    r   test_infer_return_type_pathlib4TestLowLevelInternals.test_infer_return_type_pathlibA   s&    c866y7I7I#7NOPr   c           	         [         R                  nU R                  [        [        R
                  " U" S5      5      5        U R                  [        [        R
                  " U" S5      5      5        U R                  [        [        R
                  " SU" S5      5      5        U R                  [        [        R
                  " SU" S5      5      5        U R                  [        [        R
                  " S U" S5      5      5        U R                  [        [        R
                  " S U" S5      5      5        U R                  [        5         [        R
                  " SU" S5      5        S S S 5        U R                  [        5         [        R
                  " SU" S5      5        S S S 5        g ! , (       d  f       NJ= f! , (       d  f       g = f)Nr'      /r   r   )	r   r(   r   r   r   r   r   r   r    )r   Paths     r   test_infer_return_type_pathlike5TestLowLevelInternals.test_infer_return_type_pathlikeD   s$   !!c866tCyABeX88dDEc866r48DEeX88d3iHIeX88tCyIJc866tT"XFGy)''DI6 *y)''T"X6 *) *)))s   
F,F=,
F:=
G N)
__name__
__module____qualname____firstlineno__r   r!   r$   r)   r.   __static_attributes__r0   r   r   r   r   (   s    >
1	7Q7r   r   c                   h    \ rS rSr\R
                  " S5      r\R
                  " S5      rS rS r	Sr
g)BaseTestCaseT   z^[a-z0-9_-]{8}$s   ^[a-z0-9_-]{8}$c                     U R                  [        R                  " 5       5        [        R                  " S[
        S[        S9  g )Nignoremktemp)categorymessagemodule)enterContextr   check_warningswarningsfilterwarningsRuntimeWarningr1   r   s    r   setUpBaseTestCase.setUpY   s1    /88:;>(0	Cr   c                    [         R                  R                  U5      u  pVUS [        U5       nU[        U5      [        U5      -
  S  nUbW  U R	                  [        U5      [        U5      [        L d  [        U[         R                  5      (       a  [        O[        S5        Ub8  U R	                  [        U5      [        U5      [        L a  [        O[        S5        Ub8  U R	                  [        U5      [        U5      [        L a  [        O[        S5        X#U4S:X  a   U R	                  [        U5      [        S5        U R                  [         R                  R                  U5      [         R                  R                  U5      SU< SU< 35        U R                  XsSU< SU< 35        U R                  XSU< SU< 35        U[        U5      [        U5      [        U5      -
   n[        U[        5      (       a  U R                  OU R                  n	U R                  U	R                  U5      SU< S	U	R                   < 35        g )
Nzunexpected return typeNNNzdefault return type must be strzfile z not in directory z does not begin with z does not end with zrandom 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   	nameCheckBaseTestCase.nameCheck^   s   d+is3x c%jS)*+?MMT
9#z#r{{'C'C ( ?MM$t*T#Y#-=c524?MM$t*T#Y#-=c524c?00MM$t*c+LM 	.0D:>D	Fs=BCH	Js;@#F	H c#hs5z#c(23",UC"8"8dllE* %--1	2r   r0   N)r1   r2   r3   r4   recompilerQ   rR   rD   r_   r5   r0   r   r   r7   r7   T   s+    

-.Ijj,-GC
"2r   r7   c                       \ rS rSrS rSrg)TestExports   c                     [         R                  nSSSSSSSSSSSSSSS.n/ nU H&  nUS   S:w  d  M  XB;  d  M  UR                  U5        M(     U R                  [	        U5      S:H  SU-  5        g )N   )NamedTemporaryFileTemporaryFilemkstempmkdtempr;   TMP_MAXgettempprefixgettempprefixb
gettempdirgettempdirbtempdirtemplateSpooledTemporaryFileTemporaryDirectoryr   _zunexpected keys: %s)r   __dict__appendrS   rK   )r   dictexpectedunexpkeys        r   test_exportsTestExports.test_exports   s       $% %&#$
" C1v}!4S!  	E
a-5	7r   r0   N)r1   r2   r3   r4   r|   r5   r0   r   r   rd   rd      s    7r   rd   c                   l   ^  \ rS rSrSrU 4S jrS rS rS r\	R                  " 5       S 5       rSrU =r$ )	TestRandomNameSequence   z6Test the internal iterator object _RandomNameSequence.c                 V   > [         R                  " 5       U l        [        TU ]  5         g N)r   _RandomNameSequencersuperrD   r   	__class__s    r   rD   TestRandomNameSequence.setUp   s    --/r   c                 V    [        U R                  5      nU R                  USSS5        g Nr   )nextr   r_   )r   ss     r   test_get_eight_char_str.TestRandomNameSequence.test_get_eight_char_str   s!    Lq"b"%r   c                     0 nU R                   n[        [        5       H7  n[        U5      nU R	                  USSS5        U R                  XA5        SX'   M9     g )Nr   rg   )r   range
TEST_FILESr   r_   assertNotIn)r   rx   r   ir   s        r   	test_many TestRandomNameSequence.test_many   sQ     FFz"AQANN1b"b)Q%DG	 #r   c                 L    SnU R                   nU H  nUS-  nUS:X  d  M    g    g )Nr   rg      r   )r   r   r   r   s       r   supports_iter$TestRandomNameSequence.supports_iter   s/     FFAFABw r   c                 :   [         R                  " 5       u  pS n [         R                  " 5       nU(       d{  [         R                  " U5        [         R                  " U[        U R                  5      R                  S5      5        [         R                  " U5        [         R                  " S5        [        U R                  5      n[         R                  " U[        U5      5      R                  S5      nU(       a  [        R                  " USS9  [         R                  " U5        [         R                  " U5        U R                  XT5        g ! U(       a  [        R                  " USS9  [         R                  " U5        [         R                  " U5        f = f)Nasciir   )exitcode)rH   pipeforkclosewriter   r   encode_exitreadrK   decoder   wait_processassertNotEqual)r   read_fdwrite_fdpidparent_valuechild_values         r   test_process_awareness-TestRandomNameSequence.test_process_awareness   s    GGI	'')C!4<#6#6w#?@"   <L'''3|+<=DDWMK$$S15HHWHHXK6 $$S15HHWHHXs   CE A
Fr   )r1   r2   r3   r4   __doc__rD   r   r   r   r   requires_forkr   r5   __classcell__r   s   @r   r   r      s7    @&
	 7 7r   r   c                   $    \ rS rSrSrS rS rSrg)TestCandidateTempdirList   z3Test the internal function _candidate_tempdir_list.c                     [         R                  " 5       nU R                  [        U5      S:H  5        U H  nU R	                  U[
        5        M     g Nr   )r   _candidate_tempdir_listassertFalserK   assertIsInstancer   )r   candcs      r   test_nonempty_list+TestCandidateTempdirList.test_nonempty_list   sB     //1Ta(A!!!S) r   c                 2   [         R                  " 5        nS HC  n[        R                  " U5      nU(       a  M"  [        R                  R                  U5      X'   ME     [        R                  " 5       nS H7  n[        R                  " U5      nU(       d  [        eU R                  X45        M9      [        R                  " 5       nU R                  X45        S S S 5        g ! [        [        4 a    [        R                  n N<f = f! , (       d  f       g = f)N)TMPDIRTEMPTMP)r   EnvironmentVarGuardrH   getenvrI   rP   r   r   
ValueErrorassertIngetcwdAttributeErrorOSErrorcurdir)r   envenvnamedirnamer   s        r   test_wanted_dirs)TestCandidateTempdirList.test_wanted_dirs   s     **,2))G,w#%77??7#;CL 3
 335D2))G,j 0g, 3
$))+ MM'(% -, #G, $))$ -,s5   !DA7D3C"D" DDDD
Dr0   N)r1   r2   r3   r4   r   r   r   r5   r0   r   r   r   r      s    =*)r   r   c                       \ rS rSrSrS rSrg)TestGetDefaultTempdiri
  zTest _get_default_tempdir().c           	        ^ [         R                  " 5        mU4S jn[        R                  " [         SU5         [         R                  " 5         U R                  [        R                  " T5      / 5        S n[        R                  " [        SU5         U R                  [        5         [         R                  " 5         S S S 5        U R                  [        R                  " T5      / 5        S S S 5        [        R                  " [        SU5         U R                  [        5         [         R                  " 5         S S S 5        U R                  [        R                  " T5      / 5        S S S 5        S S S 5        S S S 5        g ! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       No= f! , (       d  f       NR= f! , (       d  f       N[= f! , (       d  f       g = f)Nc                  
   > T /$ r   r0   )our_temp_directorys   r   our_candidate_listKTestGetDefaultTempdir.test_no_files_left_behind.<locals>.our_candidate_list  s    *++r   r   c                      [        5       er   )r   )argskwargss     r   raise_OSErrorFTestGetDefaultTempdir.test_no_files_left_behind.<locals>.raise_OSError  s	    !)Or   openr   )
r   rt   r   	swap_attr_get_default_tempdirrO   rH   listdirr   FileNotFoundError)r   r   r   r   s      @r   test_no_files_left_behind/TestGetDefaultTempdir.test_no_files_left_behind  sK   ((*.@, ""8-F#57 --/  ,>!?D$ &&r6=A**+<= 557 >$$RZZ0B%CRH	 B &&r7MB**+<= 557 >$$RZZ0B%CRH	 C7 +*  >= BA >= CB7 7 +*s   #GAG
F+F	.F/$G
F9)F(	?.F9-G
5G
FF
F%!G
(
F62F99
GG


G	G
G)r0   N)r1   r2   r3   r4   r   r   r5   r0   r   r   r   r   
  s    &Ir   r   c                   $    \ rS rSrSrS rS rSrg)TestGetCandidateNamesi*  z0Test the internal function _get_candidate_names.c                 n    [         R                  " 5       nU R                  U[         R                  5        g r   )r   _get_candidate_namesr   r   )r   objs     r   test_retval!TestGetCandidateNames.test_retval-  s&    ++-c8#?#?@r   c                 |    [         R                  " 5       n[         R                  " 5       nU R                  XL 5        g r   )r   r   rS   )r   abs      r   test_same_thing%TestGetCandidateNames.test_same_thing2  s,    ))+))+r   r0   N)r1   r2   r3   r4   r   r   r   r5   r0   r   r   r   r   *  s    :A
 r   r   c               #     #    [         R                  " 5       n  [        R                  " [         SU 5         S v   S S S 5        [        R
                  " U 5        g ! , (       d  f       N%= f! [        R
                  " U 5        f = f7f)Nrq   )r   rk   r   r   r   rmtreerW   s    r   _inside_empty_temp_dirr   :  s[     



CxC8 9 	 98 	s2   BA* AA* B
A'#A* *BBc                  D   ^  [         R                  " [        SU 4S j5      $ )Nr   c                     > [        T 5      $ r   )iternamess   r   <lambda>'_mock_candidate_names.<locals>.<lambda>G  s	    T%[r   )r   r   r   r   s   `r   _mock_candidate_namesr   D  s    X302 2r   c                   f    \ rS rSr\R
                  " \R                  S5      S 5       rS r	S r
Srg)TestBadTempdiriJ  z$Emscripten cannot remove write bits.c                 z   [        5          [        R                  " [        R                  5      R
                  =pU[        R                  [        R                  -  [        R                  -  ) -  n[        R                  " [        R                  U5         [        R                  " [        R                  [        R                  5      (       a  U R                  S5        U R                  [        5         U R                  5         S S S 5        U R!                  [        R"                  " [        R                  5      / 5        [        R                  " [        R                  U5         S S S 5        g ! , (       d  f       Nq= f! [        R                  " [        R                  U5        f = f! , (       d  f       g = f)Nz!can't set the directory read-only)r   rH   statr   rq   st_modeS_IWUSRS_IWGRPS_IWOTHchmodaccessW_OKskipTestr   PermissionError	make_temprO   r   )r   oldmodemodes      r   test_read_only_directory'TestBadTempdir.test_read_only_directoryL  s    $%WWX%5%56>>>GdllT\\1DLL@AADHHX%%t,499X--rww77MM"EF&&7NN$ 8  H,<,<!=rB))73 &% 87 ))73 &%s=   BF,AF5E1<F%F,1
E?	;F'F))F,,
F:c                    [        5          [        R                  R                  [        R
                  S5      n[        R                  " [        SU5         U R                  [        5         U R                  5         S S S 5        S S S 5        S S S 5        g ! , (       d  f       N= f! , (       d  f       N(= f! , (       d  f       g = f)Nnonexistentrq   )r   rH   rI   joinr   rq   r   r   r   r   r  r   rq   s     r   test_nonexisting_directory)TestBadTempdir.test_nonexisting_directory]  s|    #%ggll8#3#3]CG""8Y@&&'89NN$ : A &% :9 A@ &%s<   AB8B',B=B'B8
B$ B''
B5	1B88
Cc                    [        5          [        R                  R                  [        R
                  S5      n[        US5      R                  5         [        R                  " [        SU5         U R                  [        [        45         U R                  5         S S S 5        S S S 5        S S S 5        g ! , (       d  f       N= f! , (       d  f       N(= f! , (       d  f       g = f)Nfilewbrq   )r   rH   rI   r  r   rq   r   r   r   r   r   NotADirectoryErrorr   r  r  s     r   test_non_directory!TestBadTempdir.test_non_directoryd  s    #%ggll8#3#3V<G$%%'""8Y@&&(:<M'NONN$ P A &% PO A@ &%s<   A%C0CB6C%C6
C C
C	C
C&r0   N)r1   r2   r3   r4   unittestskipIfr   is_emscriptenr  r  r  r5   r0   r   r   r   r   J  s3    __E44%%r   r   c                      \ rS rSrSr " S S5      rSS jrS rS rS	 r	S
 r
\R                  S 5       r\R                  " \S5      \R$                  " 5       S 5       5       r\R                  " \S5      S 5       rS rS rS rSrg)TestMkstempInnerim  z*Test the internal function _mkstemp_inner.c                       \ rS rSr\R
                  r\R                  r\	R                  r\	R                  rS rS rS rSrg)TestMkstempInner.mkstempedip  c                     U(       a  U R                   nOU R                  n[        R                  " XU5      n[        R                  " XX5U5      u  U l        U l        g r   )_bflags_tflagsr   r   _mkstemp_innerfdrV   )r   rW   rX   rY   binflagsoutput_types          r   __init__#TestMkstempInner.mkstemped.__init__v  sF    DLLE LLE"55cDK#+#:#:3SQ\#] TWdir   c                 F    [         R                  " U R                  U5        g r   )rH   r   r$  )r   r   s     r   r    TestMkstempInner.mkstemped.write}  s    HHTWWc"r   c                 p    U R                  U R                  5        U R                  U R                  5        g r   )_closer$  _unlinkrV   r   s    r   __del__"TestMkstempInner.mkstemped.__del__  s"    KK LL#r   )r$  rV   N)r1   r2   r3   r4   r   _bin_openflagsr!  _text_openflagsr"  rH   r   r-  unlinkr.  r(  r   r/  r5   r0   r   r   	mkstempedr  p  s:    ))**))	^	#	$r   r4  Nc                 (   [         R                  " XU5      nUc4  U[        L a  [         R                  " 5       nO[         R                  " 5       nUc  U" 5       nUc  U" 5       nU R                  XX45      nU R                  UR                  XU5        U$ r   )r   r   r   ro   rp   r4  r_   rV   )r   rW   rX   rY   r%  r'  r  s          r   	do_createTestMkstempInner.do_create  s~    11#C@;c!))+**,;-C;-C~~c1tyy#C0r   c                 6   U R                  5       R                  S5        U R                  SS9R                  S5        U R                  SS9R                  S5        U R                  SSS9R                  S5        U R                  SSS9R                  S5        g )	N   blatr   rX   r   rY   rX   rY   aa.txt)r6  r   r   s    r   
test_basicTestMkstempInner.test_basic  s    w'3%%g.3%%g.3C(..w74V,227;r   c                 >   [         R                  " 5       nU R                  USS9R                  S5        U R                  USS9R                  S5        U R                  USS9R                  S5        U R                  USSS9R                  S5        U R                  USS	S9R                  S5        U R	                  [
        5         U R                  S
SS9R                  S5        S S S 5        U R	                  [
        5         U R                  US
S9R                  S5        S S S 5        U R	                  [
        5         U R                  USS
S9R                  S5        S S S 5        g ! , (       d  f       N= f! , (       d  f       N^= f! , (       d  f       g = f)Nr   rW   rY   r9     arW   rX      brW   rX   rY      aa   .txtr   )r   rp   r6  r   r   r    )r   dir_bs     r   test_basic_with_bytes_names,TestMkstempInner.test_basic_with_bytes_names  sC    $$&5c*0095d+11':5d+11':5d5;;GD5e9??Hy)NNrsN+11': *y)NNu"N-33G< *y)NNu#2N6<<WE *)	 *)))))s$    E, E=!F,
E:=
F
Fc                 h    [        [        [        5      5      nU H  nU R                  SS9X'   M     g Nr=  r:  )listr   r   r6  r   extantr   s      r   test_basic_many TestMkstempInner.test_basic_many  s-    eJ'(A40FI r   c                    [         R                  " 5       n U R                  US9R                  S5        U R                  [        R
                  " U5      S9R                  S5        [        R                  " 5         [        R                  " U5        g ! [        R                  " 5         [        R                  " U5        f = fNr   r9  )
r   rk   r6  r   r   r(   r   
gc_collectrH   rmdirr   rW   s     r   test_choose_directory&TestMkstempInner.test_choose_directory  s     	NNsN#))'2NNy11#6N7==gF HHSM  HHSMs   AB -C c                    U R                  5       n[        R                  " [        R                  " UR                  5      R
                  5      nSn[        R                  S:X  a
  US-	  nUS-  nU R                  X#5        g )N  win32   I   )	r6  r   S_IMODErH   rV   r   sysplatformrO   )r   r  r
  ry   users        r   test_file_modeTestMkstempInner.test_file_mode  se     ~~||BGGDII.667<<7" q=Dz*H(r   zos.spawnl not availablec                 &   [         R                  (       a  SnOSnU R                  5       nU R                  [        R
                  " UR                  5      S5        SUR                  -  n [        n[        R                  R                  [        R                  R                  [        R                  R                  U5      5      S5      n[        R                  S:X  a  S[        R                   -  nSU-  nO[        R                   n[        R"                  " [        R$                  [        R                   XeX5      nU R'                  US:  S	U* -  5        U R'                  US:  S
U-  5        g ! [         a    [        R                  S   n GNf = f)NvqFz%dr   ztf_inherit_check.pyr\  z"%s"z$child process caught fatal signal %dz child process reports failure %d)r   verboser6  rO   rH   get_inheritabler$  __file__	NameErrorr`  argvrI   r  r   rP   ra  
executabler   P_WAITr   )r   rf  r  r$  metester	decoratedretvals           r   test_noinheritTestMkstempInner.test_noinherit  s+   
 ??AA~~++DGG4e<DGG^	B bggoobggoob.AB35 <<7"/If_FI299cnniO!:fWD	F!%G%NO+  	!B	s   +E/ /FFztext mode not availablec                 (   U R                  SS9nUR                  S5        UR                  S5        [        R                  " UR                  S[        R
                  5        U R                  [        R                  " UR                  S5      S5        g )Nr   )r%  s   blats   extra
r   r9  )r6  r   rH   lseekr$  SEEK_SETrO   r   r   fs     r   test_textmodeTestMkstempInner.test_textmode  sc    
 NNqN!		

q"++&r*G4r   c                     [         R                  " [         R                  " 5       [         R                  " 5       S[         R                  [
        5      $ r   )r   r#  ro   rm   r1  r   r   s    r   r  TestMkstempInner.make_temp  s;    &&x':':'<'/'='='?')'/'>'>'*	, 	,r   c                    [        5          [        SSS5         U R                  5       u  p[        R                  " U5        U R                  UR                  S5      5        U R                  5       u  p4[        R                  " U5        U R                  UR                  S5      5        S S S 5        S S S 5        g ! , (       d  f       N= f! , (       d  f       g = fNaaabbb)r   r   r  rH   r   rS   endswith)r   fd1name1fd2name2s        r   !test_collision_with_existing_file2TestMkstempInner.test_collision_with_existing_file  s     $%"5%7>>+LSHHSMOOENN512>>+LSHHSMOOENN512 8 &%77 &%s#   CBB;*C;
C		C
Cc                    [        5          [        SSS5         [        R                  " 5       nU R	                  UR                  S5      5        U R                  5       u  p#[        R                  " U5        U R	                  UR                  S5      5        S S S 5        S S S 5        g ! , (       d  f       N= f! , (       d  f       g = fr  )	r   r   r   rk   rS   r  r  rH   r   )r   rW   r$  rV   s       r   &test_collision_with_existing_directory7TestMkstempInner.test_collision_with_existing_directory  s     $%"5%7""$COOCLL/0)JRHHRLOODMM%01 8 &%77 &%s#   B9A>B(B9(
B6	2B99
Cr0   )NNNrg   )r1   r2   r3   r4   r   r4  r6  r?  rJ  rQ  rX  r   skip_unless_working_chmodrc  r  
skipUnless
has_spawnlr   requires_subprocessrs  has_textmoderz  r  r  r  r5   r0   r   r   r  r  m  s    4$ $( <F"1 (() )) %>?  "#P # @#PJ '@A5 B5,3
2r   r  c                   $    \ rS rSrSrS rS rSrg)TestGetTempPrefixi  zTest gettempprefix().c                    [         R                  " 5       nU R                  U[        5        U R	                  [        U5      S5        [         R                  " 5       nU R                  U[        5        U R	                  [        U5      S5        g r   )r   rm   r   r   assertGreaterrK   rn   r   )r   ppbs      r   test_sane_template$TestGetTempPrefix.test_sane_template!  sf    ""$a%3q61%$$&b%(3r7A&r   c                    [         R                  " 5       S-   n[         R                  " SS9n [        R                  R                  X!5      n[        R                  " U[        R                  [        R                  -  5      n[        R                  " U5        [        R                  " U5        [        R                  " U5        g ! [        R                  " U5        f = f)Nz
xxxxxx.xxxr   prefix)r   rm   rk   rH   rI   r  r   O_RDWRO_CREATr   r3  rV  )r   r  dr$  s       r   test_usable_template&TestGetTempPrefix.test_usable_template-  s     ""$|3B'	Q"ABII

23BHHRLIIaLHHQKBHHQKs   BC Cr0   N)r1   r2   r3   r4   r   r  r  r5   r0   r   r   r  r    s    
'r   r  c                   0    \ rS rSrSrS rS rS rS rSr	g)	TestGetTempDiri>  zTest gettempdir().c                 b   [         R                  " 5       [         R                  " 5       4 H  nU R                  [        R
                  R                  U5      =(       d    U[        R                  :H  SU-  5        U R                  [        R
                  R                  U5      SU-  5        M     g )Nz%r is not an absolute pathz%r is not a directory)	r   ro   rp   rS   rH   rI   isabsr   isdirr   r  s     r   test_directory_exists$TestGetTempDir.test_directory_existsA  sy     %%')=)=)?@AOOBGGMM!,>RYY81<>OOBGGMM!,3a79 Ar   c                     [         R                  " 5        nUR                  S5        S S S 5        g ! , (       d  f       g = f)Nr9  )r   rh   r   )r   r  s     r   test_directory_writable&TestGetTempDir.test_directory_writableJ  s*     ((*dJJw +**s   1
?c                 :   [         R                  " 5       n[         R                  " 5       n[         R                  " 5       nU R                  XL 5        U R	                  [        U5      [        U5      5        U R                  U[        R                  " U5      5        g r   )	r   ro   rp   rS   r   rL   rO   rH   fsdecode)r   r   r   r   s       r   r   TestGetTempDir.test_same_thingS  sj    !!  "DGT!W-BKKN+r   c                    [         R                  " S5      n[         R                  S sn[         l         [        R                  " 5        nXS'   U R                  [         R                  " 5       U5        S S S 5        U[         l        [        R                  " U5        g ! , (       d  f       N0= f! U[         l        [        R                  " U5        f = f)Nz-Tempr   )r   rk   rq   r   r   rO   ro   rV  )r   case_sensitive_tempdir_tempdirr   s       r   test_case_sensitive"TestGetTempDir.test_case_sensitive]  s     "*!1!1'!:%-%5%5t"("	4..0C 6H  !4!4!68NO 1
  (HOO23 10
  (HOO23s#   B. 	*B3B. 
B+'B. .#Cr0   N)
r1   r2   r3   r4   r   r  r  r   r  r5   r0   r   r   r  r  >  s    9 ,4r   r  c                   :    \ rS rSrSrS
S jrS rS rS rS r	S	r
g)TestMkstempil  zTest mkstemp().Nc           	         [         R                  " XU5      nUc4  U[        L a  [         R                  " 5       nO[         R                  " 5       nUc  U" 5       nUc  U" 5       n[         R
                  " XUS9u  pV[        R                  R                  U5      u  px[        R                  R                  U5      n	U R                  XSU	< SU< S35         U R                  XaX#5        [        R                  " U5        [        R                  " U5        g ! [        R                  " U5        [        R                  " U5        f = f)NrW   r  suffixzDirectory 'z' incorrectly returned as '')r   r   r   ro   rp   rj   rH   rI   rJ   rP   rO   r_   r   r3  )
r   rW   rX   rY   r'  r$  rV   rZ   r[   adirs
             r   r6  TestMkstemp.do_createo  s    11#C@;c!))+**,;-C;-C%%##F
d+wws#t=A4H	J	NN4c/HHRLIIdO HHRLIIdOs   D .Ec                     U R                  5         U R                  SS9  U R                  SS9  U R                  SSS9  U R                  SSS9  U R                  SS	9  g )
Nr   r:  r   r;  r<  r=  r>  .r   r6  r   s    r   r?  TestMkstemp.test_basic  sV    333C(4V,3r   c                 p   [         R                  " 5       nU R                  USS9  U R                  USS9  U R                  USS9  U R                  USSS9  U R                  USSS9  U R                  S	S
9  U R                  [        5         U R                  SSSS9  S S S 5        U R                  [        5         U R                  S	SSS9  S S S 5        U R                  [        5         U R                  S	SSS9  S S S 5        g ! , (       d  f       Nm= f! , (       d  f       NO= f! , (       d  f       g = f)Nr   rB  rC  rD  rE  rF  rG  rH     .r   r  r=  r>  )r   rp   r6  r   r    r  s     r   rJ  'TestMkstemp.test_basic_with_bytes_names  s       "1#&1$'1$'1$D11%W54 y)NNs7N; *y)NNt7N; *y)NNtFN; *)	 *)))))s$   D;D*D'
D
D$'
D5c                     [         R                  " 5       n U R                  US9  U R                  [        R                  " U5      S9  [
        R                  " U5        g ! [
        R                  " U5        f = fNr   )r   rk   r6  r   r(   rH   rV  rW  s     r   rX  !TestMkstemp.test_choose_directory  sS     	NNsN#NNy11#6N7HHSMBHHSMs   2A   A8c                 |   [         R                  nU R                  [         R                  [        [	        S 5      45         [         R
                  " 5       u  p#[        R                  " U5        [        R                  " U5        U R                  U[        5        [         R                  " 5       [         l        U R                  [         R                  [        5        U R                  [         R                  " 5       [        5        U R                  [         R                  " 5       [        5        [         R
                  " 5       u  p#[        R                  " U5        [        R                  " U5        U R                  U[        5        [         R
                  " SS9u  p#[        R                  " U5        [        R                  " U5        U R                  U[        5        [         R
                  " SS9u  p#[        R                  " U5        [        R                  " U5        U R                  U[        5        [         R
                  " [         R                  " 5       S9u  p#[        R                  " U5        [        R                  " U5        U R                  U[        5        U[         l        g ! U[         l        f = f)Nr>  r  z
test-temp-r  r   )r   rq   r   r   rL   rj   rH   r   r3  rp   r   ro   )r   orig_tempdirr$  rI   s       r   .test_for_tempdir_is_bytes_issue40701_api_warts:TestMkstemp.test_for_tempdir_is_bytes_issue40701_api_warts  s   ''h..d4j0AB	,'')HBHHRLIIdO!!$,'335H!!("2"2E:!!("5"5"7=!!("6"6"8%@'')HBHHRLIIdO!!$.''v6HBHHRLIIdO!!$,''|<HBHHRLIIdO!!$,''H,?,?,ABHBHHRLIIdO!!$,+H|Hs   I!J. .J;r0   rG   )r1   r2   r3   r4   r   r6  r?  rJ  rX  r  r5   r0   r   r   r  r  l  s    . <$,r   r  c                       \ rS rSrSrS rSS jrS rS rS r	S	 r
\R                  S
 5       r\R                  " \R"                  S:H  S5      S 5       rS rS rS rS rSrg)TestMkdtempi  zTest mkdtemp().c                 ,    [         R                  " 5       $ r   )r   rk   r   s    r   r  TestMkdtemp.make_temp  s    !!r   Nc                 R   [         R                  " XU5      nUc4  U[        L a  [         R                  " 5       nO[         R                  " 5       nUc  U" 5       nUc  U" 5       n[         R
                  " XUS9n U R                  XQX#5        U$ !   [        R                  " U5        e = f)Nr  )	r   r   r   ro   rp   rk   r_   rH   rV  )r   rW   rX   rY   r'  rV   s         r   r6  TestMkdtemp.do_create  s    11#C@;c!))+**,;-C;-CCC@	NN4c/K	HHTNs   9B B&c                 h   [         R                  " U R                  5       5        [         R                  " U R                  SS95        [         R                  " U R                  SS95        [         R                  " U R                  SSS95        [         R                  " U R                  SSS95        g Nr   r:  r   r;  r<  r=  r>  )rH   rV  r6  r   s    r   r?  TestMkdtemp.test_basic  su    
!"
C()
C()
CS12
Df56r   c           	         [         R                  " 5       n[        R                  " U R	                  US95        [        R                  " U R	                  USS95        [        R                  " U R	                  USS95        [        R                  " U R	                  USSS95        [        R                  " U R	                  USSS95        U R                  [        5         [        R                  " U R	                  US	SS95        S S S 5        U R                  [        5         [        R                  " U R	                  USS
S95        S S S 5        U R                  [        5         [        R                  " U R	                  SSSS95        S S S 5        g ! , (       d  f       N= f! , (       d  f       Nc= f! , (       d  f       g = f)Nr   rC  rD  rE  rB  rF  rG  rH  r=  r>  r   )r   rp   rH   rV  r6  r   r    r  s     r   rJ  'TestMkdtemp.test_basic_with_bytes_names  s3     "
A&'
A401
A401
A4T:;
A5g>?y)HHT^^t^AB *y)HHT^^u&^AB *y)HHT^^7^CD *)	 *)))))s$    &F#&F&&&F7
F#&
F47
Gc                 L   [        [        [        5      5      n U H  nU R                  SS9X'   M     U H0  n[	        U[
        5      (       d  M  [        R                  " U5        M2     g ! U H0  n[	        U[
        5      (       d  M  [        R                  " U5        M2     f = frM  )rN  r   r   r6  rM   r   rH   rV  rO  s      r   rQ  TestMkdtemp.test_basic_many  sy    eJ'(	  NNtN4	  a%%HHQK Va%%HHQK s   A+ +B#B#c                 F   [         R                  " 5       n [        R                  " U R	                  US95        [        R                  " U R	                  [
        R                  " U5      S95        [        R                  " U5        g ! [        R                  " U5        f = fr  )r   rk   rH   rV  r6  r   r(   rW  s     r   rX  !TestMkdtemp.test_choose_directory  se     	HHT^^^,-HHT^^	(:(:3(?^@AHHSMBHHSMs   AB B c                 \   U R                  5       n [        R                  " [        R                  " U5      R                  5      nUS-  nSn[
        R                  S:X  a
  US-	  nUS-  nU R                  X#5        [        R                  " U5        g ! [        R                  " U5        f = f)Ni  i  r\  r]  r^  )	r6  r   r_  rH   r   r`  ra  rO   rV  )r   rW   r
  ry   rb  s        r   	test_modeTestMkdtemp.test_mode  s     nn	<< 4 45DEMDH||w&  1}:.T,HHSMBHHSMs   A*B B+ntOnly on Windows.c                    U R                  5       n [        R                  " SU/SS9R                  5       n[        R
                  " U5        UR                  5       n[        5       nSnUR                  5       R                  5        H  nS nUR                  U5      (       a   UR                  U5      R                  5       nO/U(       a(  US S R                  5       (       a  UR                  5       nU(       d  Ms  UR                  UR                  S5      S   5        M     U R                  SR                  5       U5        g ! [        R
                  " U5        f = f)	Nz
icacls.exeoemencodingFrg   :r   zBUILTIN\Users)r6  
subprocesscheck_outputcasefoldrH   rV  setstrip
splitlines
startswithremoveprefixisspaceadd	partitionr   )r   rW   outusers
found_userlineacls          r   test_mode_win32TestMkdtemp.test_mode_win32!  s	    nn	))<*=NWWYCHHSMlln
IIK**,DCs##'',224$r(**,,jjls		#--,Q/0 - 	)224e< HHSMs   %E Ec                    [        5          [        SSS5         [        R                  " SS9nUR	                  5         U R                  UR                  R                  S5      5        [        R                  " 5       nU R                  UR                  S5      5        S S S 5        S S S 5        g ! , (       d  f       N= f! , (       d  f       g = f)Nr  r  Fdelete)	r   r   r   rh   r   rS   rV   r  rk   )r   r  rW   s      r   r  -TestMkdtemp.test_collision_with_existing_file<  s     $%"5%7..e<DJJLOODII..u56""$COOCLL/0 8 &%77 &%s#   B?BB.B?.
B<	8B??
Cc                 n   [        5          [        SSS5         [        R                  " 5       nU R	                  UR                  S5      5        [        R                  " 5       nU R	                  UR                  S5      5        S S S 5        S S S 5        g ! , (       d  f       N= f! , (       d  f       g = fr  )r   r   r   rk   rS   r  )r   dir1dir2s      r   r  2TestMkdtemp.test_collision_with_existing_directoryG  sy     $%"5%7##%DOODMM%01##%DOODMM%01	 8 &%77 &%s#   B&A+BB&
B#	B&&
B4c                    [         R                  nU R                  [         R                  [        [	        S 5      45         [         R
                  " 5       n[        R                  " U5        U R                  U[        5        [         R                  " 5       [         l        U R                  [         R                  [        5        U R                  [         R                  " 5       [        5        U R                  [         R                  " 5       [        5        [         R
                  " 5       n[        R                  " U5        U R                  U[        5        [         R
                  " SS9n[        R                  " U5        U R                  U[        5        [         R
                  " SS9n[        R                  " U5        U R                  U[        5        [         R
                  " [         R                  " 5       S9n[        R                  " U5        U R                  U[        5        U[         l        g ! U[         l        f = f)Nz-dirr  ztest-mkdtemp-r  r   )r   rq   r   r   rL   rk   rH   rV  rp   r   ro   )r   r  rI   s      r   r  :TestMkdtemp.test_for_tempdir_is_bytes_issue40701_api_wartsQ  sw   ''h..d4j0AB	,##%DHHTN!!$,'335H!!("2"2E:!!("5"5"7=!!("6"6"8%@##%DHHTN!!$.##62DHHTN!!$,##?;DHHTN!!$,##(;(;(=>DHHTN!!$,+H|Hs   G)H6 6Ic                      [         R                  " SS9nU R                  [        R                  R                  U5      5        [        R                  " U5        g ! [        R                  " W5        f = f)Nr  r   )r   rk   rS   rH   rI   r  rV  )r   rI   s     r   test_path_is_absolute!TestMkdtemp.test_path_is_absolutek  sG    	##,DOOBGGMM$/0HHTNBHHTNs   AA A3r0   rG   )r1   r2   r3   r4   r   r  r6  r?  rJ  rQ  rX  r   r  r  r  r  rH   rV   r  r  r  r  r  r5   r0   r   r   r  r    s|    "(7E	  (( )" D*<== >=4	12,4r   r  c                   b   ^  \ rS rSrSrU 4S jrU 4S jr " S S5      rSS jrS r	S	 r
S
rU =r$ )
TestMktempiu  zTest mktemp().c                 V   > [         R                  " 5       U l        [        TU ]  5         g r   )r   rk   rW   r   rD   r   s    r   rD   TestMktemp.setUpz  s    ##%r   c                    > U R                   (       a'  [        R                  " U R                   5        S U l         [        TU ]  5         g r   )rW   rH   rV  r   tearDownr   s    r   r  TestMktemp.tearDown~  s,    88HHTXXDHr   c                   P    \ rS rSr\R
                  r\R                  r	S r
S rSrg)TestMktemp.mktempedi  c                     [         R                  " XUS9U l        [        R                  " [        R
                  " U R                  U R                  S5      5        g )Nr  r[  )r   r;   rV   rH   r   r   r!  )r   rW   rX   rY   s       r   r(  TestMktemp.mktemped.__init__  s7     CCHDI HHRWWTYYe<=r   c                 :    U R                  U R                  5        g r   )r.  rV   r   s    r   r/  TestMktemp.mktemped.__del__  s    LL#r   )rV   N)r1   r2   r3   r4   rH   r3  r.  r   r1  r!  r(  r/  r5   r0   r   r   mktempedr    s     ))))	>	$r   r  c                     U R                  U R                  X5      nU R                  UR                  U R                  X5        U$ r   )r  rW   r_   rV   )r   rX   rY   r  s       r   r6  TestMktemp.do_create  s3    }}TXXs0tyy$((C5r   c                     U R                  5         U R                  SS9  U R                  SS9  U R                  SSS9  U R                  SSS9  g r  r  r   s    r   r?  TestMktemp.test_basic  H    333C(4V,r   c                     [        [        [        5      5      nU H  nU R                  SS9X'   M     A[        R
                  " 5         g rM  )rN  r   r   r6  r   rU  rO  s      r   r   TestMktemp.test_many  s<    eJ'(A40FI r   r   )r   r   )r1   r2   r3   r4   r   rD   r  r  r6  r?  r   r5   r   r   s   @r   r  r  u  s.    $ $- r   r  c                       \ rS rSrSrSS jrS rS rS rS r	S	 r
S
 rS rS rS rS rS rS rS rS rS rS rSrg)TestNamedTemporaryFilei  zTest NamedTemporaryFile().Nc                     Uc  [         R                  " 5       n[         R                  " XUUS9nU R                  UR                  XU5        U$ )N)rW   r  r  r  )r   ro   rh   r_   rV   )r   rW   rX   rY   r  r  s         r   r6   TestNamedTemporaryFile.do_create  sG    ;%%'C**ss28: 	tyy#C0r   c                     U R                  5         U R                  SS9  U R                  SS9  U R                  SSS9  U R                  SSS9  g r  r  r   s    r   r?  !TestNamedTemporaryFile.test_basic  r  r   c                    U R                  5       n[        R                  " U5      nUR                  nUR                  nAU" S5        AU" S5        A[        R
                  " SS9(       a  U R                  U" 5       5        g g )N   foos   barT)cpython)r6  weakrefrefr   r   check_impl_detailassertIsNone)r   ry  wrr   write2s        r   test_method_lookup)TestNamedTemporaryFile.test_method_lookup  si     NN[[^fv$$T2bd# 3r   c                    ^ / SQmU4S jn[        U" 5       5       H  u  p#U R                  UTU   5        M     U R                  W[        T5      S-
  5        g )N)s   spam
s   eggs
s   beans
c                     > [         R                  " SS9n U R                  SR                  T5      5        U R	                  S5        U $ )Nw+br
  r   r   )r   rh   r   r  seek)ry  liness    r   	make_file3TestNamedTemporaryFile.test_iter.<locals>.make_file  s7    ++7AGGCHHUO$FF1IHr   rg   )	enumeraterO   rK   )r   r/  r   lr.  s       @r   	test_iter TestNamedTemporaryFile.test_iter  sP     3	
 ik*DAQa) +CJN+r   c                     [         R                  " 5       nU R                  [        R                  R                  UR                  5      SUR                  -  5        g )Nz$NamedTemporaryFile %s does not exist)r   rh   rS   rH   rI   existsrV   rx  s     r   test_creates_named)TestNamedTemporaryFile.test_creates_named  s<    '')qvv.>G	Ir   c                    [         R                  " 5       n [         R                  " US9 nUR                  S5        S S S 5        U R	                  [
        R                  " U5      / 5        U R                  [
        R                  R                  WR                  5      SUR                  -  5        [
        R                  " U5        g ! , (       d  f       N= f! [
        R                  " U5        f = f)Nr   r9  z(NamedTemporaryFile %s exists after close)r   rk   rh   r   rO   rH   r   r   rI   r6  rV   rV  r   rW   ry  s      r   test_del_on_close(TestNamedTemporaryFile.test_del_on_close  s     	,,5  6RZZ_b1RWW^^AFF3BQVVKM HHSM 65 HHSMs"   C CA4C 
CC C1c                 
   [         R                  " 5       nS n [         R                  " USS9nUR                  nUR	                  S5        UR                  5         U R                  [        R                  R                  UR                  5      SUR                  -  5        Ub  [        R                  " U5        [        R                  " U5        g ! Ub  [        R                  " U5        [        R                  " U5        f = f)NF)rW   r  r9  z)NamedTemporaryFile %s missing after close)r   rk   rh   rV   r   r   rS   rH   rI   r6  r3  rV  )r   rW   tmpry  s       r   test_dis_del_on_close,TestNamedTemporaryFile.test_dis_del_on_close  s     
	++EBA&&CGGGGGIOOBGGNN1662CaffLN 		#HHSM 		#HHSMs   BC 1Dc                     [         R                  " 5       nUR                  S5        UR                  5         UR                  5         UR                  5         g N   abc
)r   rh   r   r   rx  s     r   test_multiple_close*TestNamedTemporaryFile.test_multiple_close  s7    '')							r   c                 |  ^ [         R                  " 5        mU R                  [        R                  R                  TR                  5      5        S S S 5        U R                  [        R                  R                  TR                  5      5        U4S jnU R                  [        U5        g ! , (       d  f       Nc= f)Nc                  @   > T     S S S 5        g ! , (       d  f       g = fr   r0   ry  s   r   
use_closed?TestNamedTemporaryFile.test_context_manager.<locals>.use_closed          
)
r   rh   rS   rH   rI   r6  rV   r   r   r   r   rI  ry  s     @r   test_context_manager+TestNamedTemporaryFile.test_context_manager  sr    ((*aOOBGGNN16623 +/0	 	*j1 +*s   9B--
B;c                    [         R                  " 5       n [         R                  " USSS9 nUR                  S5        UR                  nUR                  5         U R                  5          U R                  [        R                  R                  UR                  5      SUR                  < S35        S S S 5        S S S 5        U R                  5          U R                  [        R                  R                  WR                  5      SUR                  < S35        S S S 5        [        R                  " U5        g ! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       NG= f! [        R                  " U5        f = f)NTFrW   r  delete_on_closer9  NamedTemporaryFile z= is incorrectly deleted on closure when delete_on_close=Falsez" exists after context manager exit)r   rk   rh   r   rV   r   subTestrS   rH   rI   r6  r   rV  )r   rW   ry  f_names       r   :test_context_man_not_del_on_close_if_delete_on_close_falseQTestNamedTemporaryFile.test_context_man_not_del_on_close_if_delete_on_close_false  s   
  	,,48=BDGH 	\\^OOBGGNN166$:1!&& <L MN $D   !7#6qvvj A> "?@   HHSM $^D D   HHSMsT   E/ >E+A	D<4E<E/ A	EE/ <
E
	E
EE/ 
E,(E/ /Fc                 t   [         R                  " 5       n [         R                  " USSS9 nUR                  S5        UR	                  5         [
        R                  " UR                  5        S S S 5        [
        R                  " U5        g ! , (       d  f       N%= f! [
        R                  " U5        f = fNTFrQ  r9  )	r   rk   rh   r   r   rH   r3  rV   rV  r:  s      r   &test_context_man_ok_to_delete_manually=TestNamedTemporaryFile.test_context_man_ok_to_delete_manually5  s      		,,48=BDGH 			!&&!D HHSMD D HHSMs#   B AB/B 
BB B7c                    [         R                  " 5       nSn [         R                  " USSS9 nUR                  S5        UR                  nS S S 5        U R                  [        R                  R                  WR                  5      SUR                  < S35        [        R                  " U5        [        R                  " U5        g ! , (       d  f       N= f! [        R                  " U5        [        R                  " U5        f = f)Nr   FTrQ  r9  rS  z exists after close)r   rk   rh   r   rV   rS   rH   rI   r6  r3  rV  )r   rW   rU  ry  s       r   (test_context_man_not_del_if_delete_false?TestNamedTemporaryFile.test_context_man_not_del_if_delete_falseD  s     
	,,U=ACFG C OOBGGNN1662-affZ7JKM IIfHHSMC C IIfHHSMs#   C C
AC 

CC .D	c                 :   S n[         R                  " 5         [        R                  " 5       n U" U5      nU R	                  [
        R                  R                  U5      SU< S35        [
        R                  " U5        g ! [
        R                  " U5        f = f)Nc                 l    [         R                  " U SSS9nUR                  nUR                  S5        U$ rY  )r   rh   rV   r   rW   ry  tmp_names      r   my_func=TestNamedTemporaryFile.test_del_by_finalizer.<locals>.my_funcW  s6    ++D<ACAvvHGGG Or   rS  z exists after finalizer )	gccollectr   rk   r   rH   rI   r6  rV  )r   rc  rW   rb  s       r   test_del_by_finalizer,TestNamedTemporaryFile.test_del_by_finalizerT  su    	 	

 	s|HRWW^^H5-h\ :2 34 HHSMBHHSMs   <B Bc                 D    S[         4S jn[        R                  " 5         g )Nreturnc                     [         R                  " U SSS9nUR                  nUR                  S5        UR	                  5         [
        R                  " U5        U$ rY  )r   rh   rV   r   r   rH   r3  ra  s      r   rc  VTestNamedTemporaryFile.test_correct_finalizer_work_if_already_deleted.<locals>.my_funcn  sI    ++D<ACAvvHGGGGGIIIhOr   )r   re  rf  )r   rc  s     r   .test_correct_finalizer_work_if_already_deletedETestNamedTemporaryFile.test_correct_finalizer_work_if_already_deletedj  s    	# 	 	

r   c                    [         R                  " 5       nU R                  [        R                  U5        U R                  [        5         [         R                  " SUS9  S S S 5        U R                  [        5         [         R                  " SUS9  S S S 5        U R                  [        R                  " U5      / 5        g ! , (       d  f       Nh= f! , (       d  f       NF= fNr%  )r
  rW      )r   rk   
addCleanupr   r   r   r   rh   r    rO   rH   r   rW  s     r   test_bad_mode$TestNamedTemporaryFile.test_bad_modey  s     	((#.z*''Ts; +y)''QC8 *C"-	 +*))   C>C
C
C"c                 D   [         R                  " 5       nU R                  [        R                  U5        U R                  [        5         [         R                  " SSUS9  S S S 5        U R                  [        R                  " U5      / 5        g ! , (       d  f       N5= fNwzbad-encoding)r  rW   )r   rk   rr  r   r   r   LookupErrorrh   rO   rH   r   rW  s     r   test_bad_encoding(TestNamedTemporaryFile.test_bad_encoding  sj     	((#.{+''n#N ,C"- ,+   B
Bc                    [         R                  " 5       nU R                  [        R                  U5        [
        R                  " S5       n[
        R                  " S[
        R                  " 5       5       n[        5       Ul	        U R                  [        5         [         R                  " US9  S S S 5        S S S 5        S S S 5        W" 5       R                  R                  5         U R                  [        R                   " U5      / 5        g ! , (       d  f       Nd= f! , (       d  f       Nm= f! , (       d  f       Nv= f)Nztempfile._TemporaryFileWrapperzio.openr   )r   rk   rr  r   r   r   patch	mock_openKeyboardInterruptside_effectr   rh   r   assert_calledrO   rH   r   )r   rW   mock_ntfr  s       r   test_unexpected_error,TestNamedTemporaryFile.test_unexpected_error  s     	((#.ZZ89XZZ	4>>#34	#4#6H ""#45++4 6 5 :
 	'')C"- 65 54 :9s<   +D17%D D1D 9D1
DD  
D.	*D11
D?r0   )Nr   r   T)r1   r2   r3   r4   r   r6  r?  r'  r3  r7  r;  r?  rD  rN  rV  rZ  r]  rg  rm  rs  rz  r  r5   r0   r   r   r  r    s[    $-$ ,I
 28 ,..	.r   r  c                   8   \ rS rSrSrS S jrS rS rS rS r	S	 r
\R                  " \R                  S
5      S 5       rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS r \R                  " \R                  S
5      S 5       r!S r"Sr#g)!TestSpooledTemporaryFilei  zTest SpooledTemporaryFile().Nc                 `    Uc  [         R                  " 5       n[         R                  " XX4S9nU$ )N)max_sizerW   r  r  )r   ro   rs   )r   r  rW   rX   rY   r  s         r   r6  "TestSpooledTemporaryFile.do_create  s-    ;%%'C,,hPS`r   c                     U R                  5       nU R                  UR                  5        U R                  SSSS9nU R                  UR                  5        g )Nr   r   r>  )r  rX   rY   )r6  r   _rolledrx  s     r   r?  #TestSpooledTemporaryFile.test_basic  sF    NN#NNCSfN=#r   c                 `    U R                  U R                  5       [        R                  5        g r   )r   r6  ioIOBaser   s    r   test_is_iobase'TestSpooledTemporaryFile.test_is_iobase  s    dnn.		:r   c                 |    1 Skn[        [        [        R                  5      5      nX-
  nU R	                  US5        g )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  rW   r   rs   r   )r   iobase_attrsspooledtempfile_attrsmissing_attrss       r   test_iobase_interface.TestSpooledTemporaryFile.test_iobase_interface  s?    	
 !$C(E(E$F G$</	
r   c                 \   [         R                  " 5       n [         R                  " SUS9nU R                  UR                  5        UR                  S5        U R                  UR                  5        UR                  nUR                  5         U R                  [        R                  " U5      / 5        [        U[        5      (       d2  U R                  [        R                  R                  U5      SU-  5        [        R                   " U5        g ! [        R                   " U5        f = f)N
   )r  rW   s   blat blat blat blat blat z*SpooledTemporaryFile %s exists after close)r   rk   rs   r   r  r   rS   rV   r   rO   rH   r   rM   intrI   r6  rV  )r   rW   ry  filenames       r   r;  *TestSpooledTemporaryFile.test_del_on_close  s     	--rsCAQYY'GGL!OOAII&vvHGGIRZZ_b1h,,  !9@8KM HHSMBHHSMs   C%D D+c                     U R                  SS9nUR                  S5        U R                  UR                  S 5        U R	                  [
        5         UR                  5         S S S 5        g ! , (       d  f       g = f)Nr  r  r  )r6  r   rO   rV   assertWarnsResourceWarningr/  rx  s     r   test_del_unrolled_file/TestSpooledTemporaryFile.test_del_unrolled_file  sV     NNBN'	&o.IIK /..s   A,,
A:z&Emscripten cannot fstat renamed files.c                    U R                  SS9nUR                  S5        UR                  nU R                  [        R
                  R                  U5      5        U R                  [        5         UR                  5         S S S 5        U R                  [        R
                  R                  U5      SU-  5        g ! , (       d  f       NA= f)Nrq  r  r  z9Rolled SpooledTemporaryFile (name=%s) exists after delete)r6  r   rV   rS   rH   rI   r6  r  r  r/  r   )r   ry  rV   s      r   test_del_rolled_file-TestSpooledTemporaryFile.test_del_rolled_file  s     NNAN&	vvt,-o.IIK /GGNN4 G$N	
 /.s   0B<<
C
c                     U R                  SS9nU R                  UR                  5        [        S5       H&  nUR	                  SS5        UR                  S5        M(     U R                  UR                  5        g )N   r     r      xxxxxxxxxxxxxxxxxxxx)r6  r   r  r   r-  r   )r   ry  r   s      r   test_rewrite_small+TestSpooledTemporaryFile.test_rewrite_small  s_    NNBN'#qAFF1aLGGI  	#r   c                 `   U R                  SS9nU R                  UR                  5        UR                  S5        U R                  UR                  5        UR                  S5        U R                  UR                  5        UR                  S5        U R	                  UR                  5        g )Nr  r  r  
   xxxxxxxxxx   x)r6  r   r  r   rS   rx  s     r   test_write_sequential.TestSpooledTemporaryFile.test_write_sequential  s}     NNBN'#		#		#			"r   c                     U R                  5       nUR                  S5        UR                  S5      nU R                  US5        UR	                  5       nU R                  US5        g )N)r     y   zr      xyzr6  r  r-  rO   r   r   ry  posbufs       r   test_writelines(TestSpooledTemporaryFile.test_writelines  sS    NN	'(ffQia ffhf%r   c                    ^ ^ T R                  SS9mUU 4S jnTR                  U" 5       5        TR                  S5      nT R                  US5        TR	                  5       nT R                  US5        g )Nrq  r  c               3      >#    Sv   TR                  T R                  5        Sv   TR                  T R                  5        g 7f)Ns   xyr  )r   r  rS   )ry  r   s   r   it=TestSpooledTemporaryFile.test_writelines_rollover.<locals>.it  s2     KQYY'JOOAII&s   A Ar   r  r  )r   r  r  r  ry  s   `   @r   test_writelines_rollover1TestSpooledTemporaryFile.test_writelines_rollover  s`    NNAN&	' 	
RTffQia ffhf%r   c                 *   U R                  SS9nUR                  S5        U R                  UR                  5        UR	                  / SQ5        UR                  S5      nU R                  US5        UR                  5       nU R                  US5        g )Nrq  r  s   abc)   d   e   fr   s   abcdef)r6  r   rS   r  r  r-  rO   r   r  s       r   test_writelines_fast_path2TestSpooledTemporaryFile.test_writelines_fast_path  sr    NNAN&			"	'(ffQia ffhi(r   c                     U R                  SS9nUR                  S5        U R                  UR                  5        UR	                  S5        U R                  UR                  5        g )N#   r  )r  r  s   xxxxxr  )r6  r  r   r  r   rS   rx  s     r   test_writelines_sequential3TestSpooledTemporaryFile.test_writelines_sequential'  sN     NNBN'	56#			"r   c                 .   U R                  SS9nU R                  UR                  5        UR                  SS5      nU R	                  US5        U R                  UR                  5        UR                  S5        U R                  UR                  5        g )Nr  r  r   r   r  )r6  r   r  r-  rO   r   rS   )r   ry  r  s      r   test_sparse$TestSpooledTemporaryFile.test_sparse0  sr     NNBN'#ffS!nc"#			"r   c                     U R                  SS9nU R                  UR                  5        U R                  UR	                  5       S:  5        U R                  UR                  5        g )Nr  r  r   )r6  r   r  rS   r  rx  s     r   test_fileno$TestSpooledTemporaryFile.test_fileno;  sJ    NNBN'#
Q'		"r   c                     [         R                  " 5       nUR                  S5        U R                  UR                  5        UR                  5         UR                  5         UR                  5         g rB  )r   rs   r   r   r  r   rx  s     r   #test_multiple_close_before_rollover<TestSpooledTemporaryFile.test_multiple_close_before_rolloverB  sI    ))+	#						r   c                     [         R                  " SS9nUR                  S5        U R                  UR                  5        UR                  5         UR                  5         UR                  5         g )Nrg   r  rC  )r   rs   r   rS   r  r   rx  s     r   "test_multiple_close_after_rollover;TestSpooledTemporaryFile.test_multiple_close_after_rolloverK  sI    ))15			"						r   c                     U R                  SS9nUR                  nUR                  nUR                  nU" S5        U" S5        U" SS5        U R	                  U" S5      S5        g )Nr  r  s#   aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaas#   bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbr   F   sF   aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb)r6  r   r   r-  rO   )r   ry  r   r   r-  s        r   test_bound_methods+TestSpooledTemporaryFile.test_bound_methodsT  s]     NNBN'vvvviiQ
b#45r   c                    [         R                  " SS9nUR                  S5        U R                  UR                  5        U R                  UR                  S5        U R                  UR                  5        U R                  [        5         UR                    S S S 5        U R                  [        5         UR                    S S S 5        U R                  [        5         UR                    S S S 5        UR                  S5        U R                  UR                  5        U R                  UR                  S5        U R                  UR                  5        U R                  [        5         UR                    S S S 5        U R                  [        5         UR                    S S S 5        U R                  [        5         UR                    S S S 5        g ! , (       d  f       GNE= f! , (       d  f       GN-= f! , (       d  f       GN= f! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       g = f)Nr  r  r  r+  r  zrb+)r   rs   r   r   r  rO   r
  r$  rV   r   r   r  r  r  rS   assertIsNotNonerx  s     r   test_properties(TestSpooledTemporaryFile.test_propertiesb  sf   ))26		#'!&&!~.JJ /~.JJ /~.HH / 	
		"'QVV$~.JJ /~.JJ /~.HH /. /..... /.....sH   G7G*!G<.HHH0
G'*
G9<
H
H
H-0
H>c                    [         R                  " SSSS9nUR                  S5        UR                  S5        U R	                  UR                  5       S5        UR                  S5        UR                  S5        U R	                  UR                  5       S5        U R                  UR                  5        U R	                  UR                  S5        U R                  UR                  5        U R	                  UR                  [        R                  5        U R	                  UR                  S5        U R	                  UR                  S	5        UR                  S
5        UR                  S5        U R	                  UR                  5       S5        UR                  S5        UR                  S5        U R	                  UR                  5       S5        U R!                  UR                  5        U R	                  UR                  S5        U R#                  UR                  5        U R	                  UR                  [        R                  5        U R	                  UR                  S5        U R	                  UR                  S	5        g )Nw+r  utf-8)r
  r  r  zabc
r   zdef
zabc
def
strictzxyzzy
zabc
def
xyzzy
zfoobar
zabc
def
xyzzy
foobar
)r   rs   r   r-  rO   r   r   r  r
  r$  rV   r  rH   linesepr  r  rS   r  rx  s     r   test_text_mode'TestSpooledTemporaryFile.test_text_modez  s    ))tb3:<		q	7+		q	<0#&!&&!RZZ0W-8,			q	#67		q	#BC		"&QVV$RZZ0W-8,r   c                    [         R                  " SSSSSS9nUR                  S5        UR                  S5        U R	                  UR                  5       S5        U R                  UR                  5        U R	                  UR                  S5        U R                  UR                  5        U R                  UR                  5        U R	                  UR                  S5        U R	                  UR                  S5        UR                  S	5        UR                  S
5        UR                  S5        U R	                  UR                  5       S5        U R                  UR                  5        U R	                  UR                  S5        U R                  UR                  5        U R                  UR                  5        U R	                  UR                  S5        U R	                  UR                  S5        g )Nr  r  r   r  r:   )r
  r  newliner  r  u   Λ
r   u   ΜΜΜΜΜΜΜΜΜΜ
u(   ΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝuB   Λ
ΜΜΜΜΜΜΜΜΜΜ
ΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝ)r   rs   r   r-  rO   r   r   r  r
  r$  rV   r  r  r  r  rS   rx  s     r   test_text_newline_and_encoding7TestSpooledTemporaryFile.test_text_newline_and_encoding  sm   ))tb24w19; 	
	q	<0#&!&&!QZZ(W-8,	&'		q	I	K		"&QVV$QZZ(W-8,r   c                 <  ^ [         R                  " SS9 mU R                  TR                  5        U R                  TR                  5        S S S 5        U R                  TR                  5        U4S jnU R                  [        U5        g ! , (       d  f       NF= f)Nrg   r  c                  @   > T     S S S 5        g ! , (       d  f       g = fr   r0   rH  s   r   rI  QTestSpooledTemporaryFile.test_context_manager_before_rollover.<locals>.use_closed  rK  rL  )r   rs   r   r  r  rS   r   r   rM  s     @r   $test_context_manager_before_rollover=TestSpooledTemporaryFile.test_context_manager_before_rollover  sn    **A6!QYY'QXX& 7 	!	 	*j1 76s   7B
Bc                   ^ [         R                  " SS9 mU R                  TR                  5        TR	                  S5        TR                  5         U R                  TR                  5        U R                  TR                  5        S S S 5        U R                  TR                  5        U4S jnU R                  [        U5        g ! , (       d  f       NF= f)Nrg   r  rC  c                  @   > T     S S S 5        g ! , (       d  f       g = fr   r0   rH  s   r   rI  QTestSpooledTemporaryFile.test_context_manager_during_rollover.<locals>.use_closed  rK  rL  )
r   rs   r   r  r   r  rS   r  r   r   rM  s     @r   $test_context_manager_during_rollover=TestSpooledTemporaryFile.test_context_manager_during_rollover  s    **A6!QYY'GGHGGIOOAII&QXX& 7 	!	 	*j1 76s   A3C		
Cc                   ^ [         R                  " SS9mTR                  S5        TR                  5         U R	                  TR
                  5        T   U R                  TR                  5        S S S 5        U R	                  TR                  5        U4S jnU R                  [        U5        g ! , (       d  f       NF= f)Nrg   r  rC  c                  @   > T     S S S 5        g ! , (       d  f       g = fr   r0   rH  s   r   rI  PTestSpooledTemporaryFile.test_context_manager_after_rollover.<locals>.use_closed  rK  rL  )
r   rs   r   r  rS   r  r   r  r   r   rM  s     @r   #test_context_manager_after_rollover<TestSpooledTemporaryFile.test_context_manager_after_rollover  s    ))15					"QXX& !	 	*j1 Qs   B00
B>c                 .   [         R                  " SS9nUR                  S5        UR                  S5        UR	                  5         U R                  UR                  5        U R                  UR                  R                  5       S5        [         R                  " SS9nUR                  S5        UR	                  S5        U R                  UR                  5        U R                  UR                  R                  5       S5        [         R                  " SS9nUR                  S5        UR	                  S5        U R                  UR                  5        U R                  [        R                  " UR                  5       5      R                  S5        g )	Nr  r  s   abcdefg
r   r      s   abcdr   )r   rs   r   r-  r  r   r  rO   _filegetvaluerS   rH   fstatr  st_sizerx  s     r   !test_truncate_with_size_parameter:TestSpooledTemporaryFile.test_truncate_with_size_parameter  s   
 ))26		q		

#))+S1))26		

1#))+W5))26		

2		"!((*-55r:r   c                 n    U R                  [        R                  [           [        R
                  5        g r   )r   r   rs   r   typesGenericAliasr   s    r   test_class_getitem+TestSpooledTemporaryFile.test_class_getitem  s&    h;;EB((	*r   r0   )r   Nr   r   )$r1   r2   r3   r4   r   r6  r?  r  r  r;  r  r  r  r   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r	  r  r  r  r5   r0   r   r   r  r    s    &$;
*" __G

$
#&& 	)#	##60-@-4	222 __G;;**r   r  c                   B    \ rS rSrSrS rS rS rS rS r	S r
S	 rS
rg)TestTemporaryFilei  zTest TemporaryFile().c                 .    [         R                  " 5         g r   )r   ri   r   s    r   r?  TestTemporaryFile.test_basic  s     ""$r   c                     [         R                  " 5       n[         R                  " US9nUR                  S5         [        R
                  " U5        g !   UR                  5         [        R
                  " U5        e = frT  )r   rk   ri   r   rH   rV  r   r:  s      r   test_has_no_name"TestTemporaryFile.test_has_no_name  sZ    ""$C&&3/AGGG	s   A )A<c                     [         R                  " 5       nUR                  S5        UR                  5         UR                  5         UR                  5         g rB  )r   ri   r   r   rx  s     r   rD  %TestTemporaryFile.test_multiple_close  s7    &&(AGGHGGIGGIGGIr   c                 V   ^  U 4S jnU" SS5        U" SS5        U" SSSS9  U" S	SS
S9  g )Nc                    > [         R                  " U0 UD6 nUR                  U 5        UR                  S5        TR	                  XR                  5       5        S S S 5        g ! , (       d  f       g = fr   )r   ri   r   r-  rO   r   )inputr   r   fileobjr   s       r   	roundtrip;TestTemporaryFile.test_mode_and_encoding.<locals>.roundtrip  sO    ++T<V<MM%(LLO$$ULLN; =<<s   AA##
A1s   1234r+  zabdc
r  u   Λzutf-16r  zfoo
r   )r  r0   )r   r*  s   ` r   test_mode_and_encoding(TestTemporaryFile.test_mode_and_encoding  s6    < gu%h%hx8ir2r   c                    [         R                  " 5       nU R                  [        R                  U5        U R                  [        5         [         R                  " SUS9  S S S 5        U R                  [        5         [         R                  " SUS9  S S S 5        U R                  [        R                  " U5      / 5        g ! , (       d  f       Nh= f! , (       d  f       NF= frp  )r   rk   rr  r   r   r   r   ri   r    rO   rH   r   rW  s     r   rs  TestTemporaryFile.test_bad_mode'  s    ""$COOI,,c2"":.&&Dc: /""9-&&A37 .RZZ_b1	 /.--ru  c                 D   [         R                  " 5       nU R                  [        R                  U5        U R                  [        5         [         R                  " SSUS9  S S S 5        U R                  [        R                  " U5      / 5        g ! , (       d  f       N5= frw  )r   rk   rr  r   r   r   ry  ri   rO   rH   r   rW  s     r   rz  #TestTemporaryFile.test_bad_encoding0  sj    ""$COOI,,c2"";/&&s^M 0RZZ_b1 0/r|  c           
          [         R                  " 5       nU R                  [        R                  U5        [
        R                  " SS5         [
        R                  " S5       n[
        R                  " S5       n[
        R                  " S5       n[        5       Ul        U R                  [        5         [         R                  " US9  S S S 5        S S S 5        S S S 5        S S S 5        S S S 5        WR                  5         U R                  [        R                  " U5      / 5        g ! , (       d  f       Ne= f! , (       d  f       Nn= f! , (       d  f       Nw= f! , (       d  f       N= f! , (       d  f       N= f)Nztempfile._O_TMPFILE_WORKSFz	os.unlinkzos.openzos.closer   )r   rk   rr  r   r   r   r~  r  r  r   ri   r  rO   rH   r   )r   rW   mock_unlinkr  
mock_closes        r   r  'TestTemporaryFile.test_unexpected_error7  s    ""$COOI,,c27?K(KI&)J':*;*='&&'89**s3 : ( ' ) @ $$&RZZ_b1 :9 (' '& )( @?sl   E/$E;E%D<	7D+D<	EE$E/+
D95D<	<
E
E
EE
E,	(E//
E=r0   N)r1   r2   r3   r4   r   r?  r"  rD  r,  rs  rz  r  r5   r0   r   r   r  r    s(    #	%
	 		3	2	2	2r   r  c                   &    \ rS rSrS rS rS rSrg)NulledModulesiF  c                     U Vs/ s H  o"R                   PM     snU l        U R                   Vs/ s H  o3R                  5       PM     snU l        g s  snf s  snf r   )rv   refscopycontents)r   modulesmodr"  s       r   r(  NulledModules.__init__G  s@    -45Wc\\W5	/3yy9yy9 69s
   AAc                 D    U R                    H  nU H  nS X'   M	     M     g r   )r9  )r   r  r{   s      r   r  NulledModules.__enter__K  s!    A  r   c                     [        U R                  U R                  5       H&  u  p#UR                  5         UR	                  U5        M(     g r   )zipr9  r;  clearupdate)r   exc_infor  r   s       r   r  NulledModules.__exit__P  s1    		4==1DAGGIHHQK 2r   )r;  r9  N)r1   r2   r3   r4   r(  r  r  r5   r0   r   r   r7  r7  F  s    :
r   r7  c                   >   \ rS rSrSr  SS jrS S jrS rS rS r	\
R                  " \R                  S	:H  S
5      S 5       r\
R                  " \R                  S	:H  S
5      S 5       r\R"                  S 5       r\R"                  S 5       r\
R                  " \" \S5      S5      \R"                  S 5       5       r\R.                  S 5       r\R.                  S 5       rS rS rS rS rS rS rS r S r!\
R                  " \" \S5      S5      S 5       r"S r#Sr$g)!TestTemporaryDirectoryiV  zTest TemporaryDirectory().Nc                     Uc  [         R                  " 5       n[         R                  " XUUS9nU R                  UR                  XU5        U R                  UR                  XEU5        U$ )N)rW   r  r  ignore_cleanup_errors)r   ro   rt   r_   rV   
do_create2)	r   rW   rX   rY   recursedirsfilesrJ  r>  s	            r   r6   TestTemporaryDirectory.do_createY  s\    ;%%'C))"79 	sxx3/'7
r   c                    U(       a`  [        U5       HQ  n[        R                  R                  USU-  5      n[        R                  " U5        U R                  XbS-
  X45        MS     [        U5       HJ  n[        [        R                  R                  USU-  5      S5       nUR                  S5        S S S 5        ML     g ! , (       d  f       M^  = f)Nzdir%drg   z
test%d.txtr  s   Hello world!)r   rH   rI   r  mkdirrK  r   r   )r   rI   rL  rM  rN  r   rV   ry  s           r   rK  !TestTemporaryDirectory.do_create2d  s    4[ww||D'A+6ai= ! uAbggll4)9:DAQ( BA AAs   #C
C	c                 R   [         R                  " 5        n S S S 5        U R                  [        5       n[         R                  " WS9  S S S 5        U R	                  WR
                  R                  [        R                  5        g ! , (       d  f       Nu= f! , (       d  f       NT= fr  )r   rt   r   r   rO   	exceptionerrnoENOENT)r   r  cms      r   test_mkdtemp_failure+TestTemporaryDirectory.test_mkdtemp_failureo  sl     ((*k +01R''K8 2++U\\:	 +*11s   BB
B
B&c                    [         R                  " 5       n U R                  US9nU R                  [        R
                  R                  UR                  5      SUR                  -  5        UR                  5         U R                  [        R
                  R                  UR                  5      SUR                  -  5        [        R                  " U5        g ! [        R                  " U5        f = f)Nr   z$TemporaryDirectory %s does not exist*TemporaryDirectory %s exists after cleanup)r   rk   r6  rS   rH   rI   r6  rV   cleanupr   rV  )r   rW   r  s      r   test_explicit_cleanup,TestTemporaryDirectory.test_explicit_cleanupy  s     	3'AOOBGGNN1662BQVVKMIIKRWW^^AFF3DqvvMO HHSMBHHSMs   B+C C1c           
      L   [         R                  " 5        nU R                  USS9n[        R                  " UR
                  5      nU R                  UR                  5       SU< S35        [        US-  S5       nUR                  S5        UR                  5         SSS5        U R                  [        [        UR                  S	5      5      5      [        [         R"                  R%                  S
5      5      SU< 35        U R                  UR                  5       [         R"                  R%                  S
5      SU< S35        UR                  5         U R'                  UR                  5       SU< S35        SSS5        g! , (       d  f       N= f! , (       d  f       g= f)z=Test that cleanup doesn't return an error when ignoring them.TrW   rJ  TemporaryDirectory  does not exist
a_file.txtw+tHello world!
N*win1Unexpected number of files in TemporaryDirectory  existence state unexpectedz exists after cleanup)r   rt   r6  pathlibr-   rV   rS   r6  r   r   r\  rO   rK   rN  globr  r`  ra  r  r   r   working_dirtemp_dir	temp_path	open_files        r   #test_explicit_cleanup_ignore_errors:TestTemporaryDirectory.test_explicit_cleanup_ignore_errors  sf   ((*k~~t & =HX]]3IOOI,,.1)oNPi,.6) 01  " 7 SinnS&9!:; !8!8!?@33<-AB   "''.%i]2MNP   "%i]2GHJ% +* 76 +*s%   A%F;"FCF
F	F
F#r  r  c                    [         R                  " 5        nU R                  US9n[        [        R
                  R                  UR                  S5      S5         U R                  [        5         UR                  5         S S S 5        S S S 5        S S S 5        g ! , (       d  f       N= f! , (       d  f       N(= f! , (       d  f       g = f)Nr   zexample.txtr  )r   rt   r6  r   rH   rI   r  rV   r   r  r\  )r   rm  rn  s      r   #test_explicit_cleanup_correct_error:TestTemporaryDirectory.test_explicit_cleanup_correct_error  s    ((*k~~+~6Hbggll8==-@$G &&7$$& 8 H +*
 87 HG +*s<   AB<B+0BB+	B<
B($B++
B9	5B<<
C
c                    [         R                  " 5        nU R                  US9n[        R                  R                  UR                  S5      n[        R                  " U5        [        R                  " U5         U R                  [        5         UR                  5         S S S 5        S S S 5        S S S 5        g ! , (       d  f       N= f! , (       d  f       N(= f! , (       d  f       g = f)Nr   subdir)r   rt   r6  rH   rI   r  rV   rQ  r   
change_cwdr   r  r\  )r   rm  rn  rw  s       r    test_cleanup_with_used_directory7TestTemporaryDirectory.test_cleanup_with_used_directory  s    ((*k~~+~6HWW\\(--:FHHV%%f- &&7$$& 8 .	 +* 87 .-	 +*s<   A&C<CB<#C+C<
C
C
C	C
C,c                 v   U R                  5       nU R                  SS9n[        R                  " UR                  [        R                  R                  UR                  S5      5        UR                  5         U R                  [        R                  R                  UR                  5      SUR                  -  5        U R                  [        R                  R                  UR                  5      S5        U R                  [        R                  " UR                  5      S/S5        UR                  5         g )Nr   rL  foor[  z-Directory pointed to by a symlink was deletedz	test0.txtz>Contents of the directory pointed to by a symlink were deleted)r6  rH   symlinkrV   rI   r  r\  r   r6  rS   rO   r   )r   d1d2s      r   (test_cleanup_with_symlink_to_a_directory?TestTemporaryDirectory.test_cleanup_with_symlink_to_a_directory  s     ^^^^A^& 	

277BGGLL%89 	

0EO	Qrww/G	IBGG,{m(	) 	

r   c                 ,  ^ ^ T R                  SS9 n[        R                  R                  US5      n[	        US5      R                  5         [        R                  R                  US5      n[        R                  " U5        [        S5       GH  mTS-  mT R                  [        TS5      S	9   UU 4S
 jnT R                  S5         U" SSS9  S S S 5        T R                  S5         U" SSS9  S S S 5        T R                  S5         [        R                  " UT5        [        R                  " U5      R                  nU" USS9  [        R                  " U5      R                  nT R                  XeSXe4-  5        S S S 5        T R                  S5         [        R                  " UT5        [        R                  " U5      R                  nU" USS9  [        R                  " U5      R                  nT R                  XeSXe4-  5        S S S 5        S S S 5        GM     S S S 5        g ! , (       d  f       GNb= f! , (       d  f       GNS= f! , (       d  f       N= f! , (       d  f       NY= f! , (       d  f       GM  = f! , (       d  f       g = f)Nr   r|  file1r  r     r]  03or,  c                   > TR                  SS9n[        R                  R                  UR                  S5      n[        R
                  " XUS9   [        R                  " UTSS9   [        R                  " UT5        [        R                  " UR                  T5        UR                  5         TR                  [        R                  R                  UR                  5      5        g ! [         a     Nf = f! [         a     Nf = fNr   r|  r~  target_is_directoryF)follow_symlinks)r6  rH   rI   r  rV   r~  r  NotImplementedErrorr   r\  r   r6  )targetr  r  r~  r
  r   s       r   testDTestTemporaryDirectory.test_cleanup_with_symlink_modes.<locals>.test  s    !^^A^6"$'',,rww	"B

64GI!HHWdEJ!HHWd3 $/

(()@A  3 ! !  1 ! !$   C) (C9 )
C65C69
DDnonexisting filenonexistingFr  nonexisting dirTexisting filez%03o != %03oexisting dir)r6  rH   rI   r  r   r   rQ  r   rT  formatr  r   r   rO   )r   r  r  r  r  old_modenew_moder
  s   `      @r   test_cleanup_with_symlink_modes6TestTemporaryDirectory.test_cleanup_with_symlink_modes  s    ^^A^&"GGLLW-E##%77<<F+DHHTNa
\\vdE':\;B" &89]F :&78]E 9 o6-#%775>#9#9U>#%775>#9#9(()78:N)NP 7 n5t,#%774=#8#8Tt<#%774=#8#8(()78:N)NP 6? <; ! '&2 :988 76 65? <; '&s   BJ0I2	H,	I2*H>	2I2A5I	 I2A5I!	I2J,
H;6I2>
II2
II2!
I/+I22
J<	J
Jchflagszrequires os.chflagsc                   ^ ^ [         R                  [         R                  -  mT R                  T5        T R	                  SS9 n[
        R                  R                  US5      n[        US5      R                  5         [
        R                  R                  US5      n[
        R                  " U5        UU 4S jnT R                  S5         U" SS	S
9  S S S 5        T R                  S5         U" SSS
9  S S S 5        T R                  S5         [
        R                  " UT5        [
        R                   " U5      R                  nU" US	S
9  [
        R                   " U5      R                  nT R                  Xe5        S S S 5        T R                  S5         [
        R                  " UT5        [
        R                   " U5      R                  nU" USS
9  [
        R                   " U5      R                  nT R                  Xe5        S S S 5        S S S 5        g ! , (       d  f       GNK= f! , (       d  f       GN<= f! , (       d  f       N= f! , (       d  f       NL= f! , (       d  f       g = f)Nr   r|  r  r  r  c                   > TR                  SS9n[        R                  R                  UR                  S5      n[        R
                  " XUS9   [        R                  " UTSS9   [        R                  " UT5        [        R                  " UR                  T5        UR                  5         TR                  [        R                  R                  UR                  5      5        g ! [         a     Nf = f! [         a     Nf = fr  )r6  rH   rI   r  rV   r~  r  r  r   r\  r   r6  )r  r  r  r~  r&  r   s       r   r  DTestTemporaryDirectory.test_cleanup_with_symlink_flags.<locals>.test  s    ^^A^.'',,rww	:

6/BDJJwuEJJw. 

277E*

  !89 +  ) r  r  r  Fr  r  Tr  r  )r   UF_IMMUTABLEUF_NOUNLINKcheck_flagsr6  rH   rI   r  r   r   rQ  rT  r  st_flagsrO   )r   r  r  r  r  	old_flags	new_flagsr&  s   `      @r   test_cleanup_with_symlink_flags6TestTemporaryDirectory.test_cleanup_with_symlink_flags  s    !!D$4$44^^A^&"GGLLW-E##%77<<F+DHHTN:" 01]> 2/0]= 1 o.

5%(GGEN33	U6GGEN33	  6 / n-

4'GGDM22	Tt4GGDM22	  6 .E '&, 2100 /. .-E '&so   B	IHI.H+6IA0H=?IA0II
H(	#I+
H:	5I=
I	I
I	I
I-c                 .   [         R                  " 5       n U R                  US9nUR                  nAU R	                  [
        R                  R                  U5      SU-  5        [
        R                  " U5        g ! [
        R                  " U5        f = f)Nr   *TemporaryDirectory %s exists after __del__)	r   rk   r6  rV   r   rH   rI   r6  rV  r   rW   r  rV   s       r   test_del_on_collection-TestTemporaryDirectory.test_del_on_collection*  sr      	3'A66DRWW^^D1DtKM HHSMBHHSMs   AA< <Bc           
         [         R                  " 5        nU R                  USS9n[        R                  " UR
                  5      nU R                  UR                  5       SU< S35        [        US-  S5       nUR                  S5        ASSS5        U R                  [        [        UR                  S	5      5      5      [        [        R                   R#                  S
5      5      SU< 35        U R                  UR                  5       [        R                   R#                  S
5      SU< S35        SSS5        g! , (       d  f       N= f! , (       d  f       g= f)z@Test that ignoring errors works when TemporaryDirectory is gced.Tr`  ra  rb  rc  rd  re  Nrf  rg  rh  ri  )r   rt   r6  rj  r-   rV   rS   r6  r   r   rO   rK   rN  rk  r  r`  ra  r  rl  s        r   $test_del_on_collection_ignore_errors;TestTemporaryDirectory.test_del_on_collection_ignore_errors7  s)    ((*k~~t & =HX]]3IOOI,,.1)oNPi,.6) 01 7 SinnS&9!:; !8!8!?@33<-AB   "''.%i]2MNP +* 76 +*s%   A%E;E B)E 
E	
E
Ec                    U R                  5        nS H  nSR                  XS9n[        R                  " SU5      u  pEnUR	                  5       R                  5       nU R                  [        R                  R                  U5      SU-  5        UR	                  SS5      nU R                  SU5        U R                  S	U5        M     S S S 5        g ! , (       d  f       g = f)
N)builtinsrH   shutilr`  r   rA   a  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)
                    )rW   r=  -cr[  r  backslashreplace
Exception 'ResourceWarning: Implicitly cleaning upr6  r  r   assert_python_okr   r  r   rH   rI   r6  r   r   )r   rW   r=  codercr  errrb  s           r   test_del_on_shutdown+TestTemporaryDirectory.test_del_on_shutdownL  s    ^^R& 30' (  -==dDI::<--/  !9H8SUjj*<=  s3GM7 S s   B9C
C!c           
         [         R                  " 5        nSR                  US9n[        R                  " SU5      u  p4n[
        R                  " UR                  5       R                  5       5      nU R                  [        [        UR                  S5      5      5      [        [        R                  R!                  S5      5      SU< 35        U R                  UR#                  5       [        R                  R!                  S5      SU< S35        UR                  S	S
5      nU R%                  SU5        U R%                  SU5        U R'                  SU5        SSS5        g! , (       d  f       g= f)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)
                )rm  r  rf  rg  rh  ra  ri  r  r  	ExceptionErrorr  N)r   rt   r  r   r  rj  r-   r   r  rO   rK   rN  rk  r  r`  ra  r  r6  r   r   )r   rm  r  __r  r  ro  s          r   "test_del_on_shutdown_ignore_errors9TestTemporaryDirectory.test_del_on_shutdown_ignore_errorsl  s3   ((*k$ F{F3% & )99$ELBSSZZ\%7%7%9:ISinnS&9!:; !8!8!?@33<-AB   "''.%i]2MNP **W&89C[#.Wc*MMCSIC +**s   EE$$
E2c                    U R                  5        nSR                  US9n[        R                  " SU5      u  p4nUR	                  5       R                  5       nU R                  [        R                  R                  U5      SU-  5        UR	                  SS5      nU R                  SU5        U R                  SU5        S S S 5        g ! , (       d  f       g = f)	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[  r  r  r  r  r  )r   rW   r  r  r  r  rb  s          r   test_exit_on_shutdown,TestTemporaryDirectory.test_exit_on_shutdown  s    ^^ FsFO  )99$ELBSzz|))+HRWW^^H5DxOQ**W&89C\3/MMCSI) s   B0C


Cc                    U R                  5        nU R                  USS9nUR                  n[        R                  " S[        4SS9   [
        R                  " S[        S9  A[        R                  " 5         S S S 5        U R                  [        R                  R                  U5      SU-  5        S S S 5        g ! , (       d  f       NI= f! , (       d  f       g = f)	N   )rW   rL  
ImplicitlyF)quietalways)r<   r  )r6  rV   r   r@   r  rA   rB   r   rU  r   rH   rI   r6  r  s       r   test_warnings_on_cleanup/TestTemporaryDirectory.test_warnings_on_cleanup  s    ^^32A66D !//1@1B6;= ''?K""$= RWW^^D1DtKM 
= = s#   8C	0B<9:C<
C
	C
Cc                     U R                  5       nUR                  5         UR                  5         UR                  5         g r   )r6  r\  r  s     r   rD  *TestTemporaryDirectory.test_multiple_close  s)    NN									r   c                 J   U R                  5       nU nU R                  [        R                  R	                  U5      5        U R                  X!R                  5        S S S 5        U R                  [        R                  R	                  W5      5        g ! , (       d  f       N== fr   )r6  rS   rH   rI   r6  rO   rV   r   )r   r  rV   s      r   rN  +TestTemporaryDirectory.test_context_manager  sh    NN$OOBGGNN401T66*  	-. Qs   A
B
B"c                    [        S5       GH  nUS-  nU R                  [        US5      S9   U R                  SSSS9nU   [        R
                  " UR                  SS	9 HY  u  p4nU H7  n[        R                  " [        R                  R                  X65      U5        M9     [        R                  " X15        M[     UR                  5         S S S 5        U R                  [        R                  R                  UR                  5      5        S S S 5        GM     g ! , (       d  f       NT= f! , (       d  f       GM2  = f)
Nr  r]  r  r,  r  rq  rL  rM  rN  Ftopdown)r   rT  r  r6  rH   walkrV   r  rI   r  r\  r   r6  )r   r
  r  rootrM  rN  rV   s          r   
test_modes!TestTemporaryDirectory.test_modes  s    !HDQJD6$#67NN11AN>-/WWQVVU-K)E$)DHHRWW\\$%=tD %*, .L IIK    !78 87  Q 87s%   D.BDA D.
D+'D..
D>	c                 v   [         R                  n [        US5      R                  5          [        R
                  " X!5        [        R
                  " US5        [         R                  " U5        g ! [         a"  nU R                  SUS SU 35         S nAN>S nAff = f! [         R                  " U5        f = f)Nrx  r   z chflags() doesn't support flags z#bz: )	r   TESTFNr   r   rH   r  r   r  r3  )r   r&  r  excs       r   r  "TestTemporaryDirectory.check_flags  s    ##	'3%%'(

8+ 

8Q'X&  4 @!&r
"SE3 4 44 X&s4   B  A1 B  1
B;BB  BB   B8c           	      J   [         R                  [         R                  -  nU R                  U5        U R	                  SSSS9nU   [
        R                  " UR                  SS9 HY  u  p4nU H7  n[
        R                  " [
        R                  R                  X65      U5        M9     [
        R                  " X15        M[     UR                  5         S S S 5        U R                  [
        R                  R                  UR                  5      5        g ! , (       d  f       NG= f)Nr  rq  r  Fr  )r   r  r  r  r6  rH   r  rV   r  rI   r  r\  r   r6  )r   r&  r  r  rM  rN  rV   s          r   
test_flags!TestTemporaryDirectory.test_flags  s    !!D$4$44NN11AN6%'WWQVVU%C!E!DJJrww||D7? "

4' &D IIK  	/0 Qs   BD
D"c                     [         R                  " SS9 n S S S 5        U R                  [        R                  R                  W5      5        [        R                  " U5        g ! , (       d  f       NS= f)NFr  )r   rt   rS   rH   rI   r6  r  r   )r   rm  s     r   test_delete_false(TestTemporaryDirectory.test_delete_false  sH    ((6+ 7{34k" 76s   A$$
A2r0   )Nr   r   rg   rg   rg   F)rg   rg   rg   )%r1   r2   r3   r4   r   r6  rK  rX  r]  rq  r  r  rH   rV   rt  ry  r   skip_unless_symlinkr  r  hasattrr  r   cpython_onlyr  r  r  r  r  r  rD  rN  r  r  r  r  r5   r0   r   r   rH  rH  V  s|   $KL(-		);J0 D*<=' >' D*<=	' >	' "" #( "".P #.P` Y/1FG"",7 # H,7\ 
 
 P P(N@#JJJ0M /9'  Y/1FG1 H1#r   rH  __main__):r   rU  r  rH   rj  r`  ra   rA   
contextlibr   r  r!  re  r  r  r  r   r  r   test.supportr   r   r   r2  r1  r  r  r  ra  r  r   TestCaser   r7   rd   r   r   r   r   contextmanagerr   r   r   r  r  r  r  r  r  r  r  rh   ri   r  r7  rH  r1   mainr0   r   r   <module>r     s     	 	  
 	      	      " & ( ((H,C,CCR"
 <<9%%JJ(7H-- (7X,28$$ ,2^7, 7<;7\ ;7~")| ")TIL I@ L     2 %  %Fn2~| n2b @+4\ +4\[,, [,|h., hV0 0|_.\ _.F_*| _*B h&<&<<I2L I2Z  c#\ c#J zMMO r   