
    0hh
                    v   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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Jr  S SKJr  S SKJr  S SKJr  S SKJr  S SKJr  S SKJ r   S S	KJ!r!  S S
KJ"r"  S SK#J$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-J.r.  S SK/J0r0  S SK1J2r2J3r3  S SK4J5r5J6r6J7r7J8r8   S SK9r9S SK:r:S SK;r; S SK=r=\)R|                  " \R~                  S5      r@\)R|                  " \R                  " SS9S5      rB " S S\)R                  5      rD " S S\D5      rE " S S\D5      rFSrGSrHSrISrJSrKSrLS rMS!rNS"rOS#rP\Q" \P\GS$-   5      rR\GS%\HS&\IS'\JS(\KS)\LS*\MS+\NS,\OS-\PS.0
rS " S/ S0\ R                  5      rU " S1 S2\ R                  5      rV " S3 S4\D5      rWS5 rX " S6 S7\D5      rY " S8 S9\Z5      r[ " S: S;\ R                  5      r] " S< S=\Z5      r^ " S> S?\D5      r_ " S@ SA\"R                  5      ra " SB SC\Z5      rb " SD SE\b\-5      rc " SF SG\b\75      rd " SH SI\b\55      re\f" \SJ5      (       a   " SK SL\d5      rg " SM SN\e5      rh\R                  " 5       \R                  " 5        " SO SP\D5      5       5       rk " SQ SR\D5      rl " SS ST\ R                  5      rnSU ro " SV SW\D5      rp\R                  " 5       \R                  " 5        " SX SY\D5      5       5       rq\)R                  " \f" \SJ5      SZ5       " S[ S\\q5      5       rs\R                  " 5       \R                  " 5        " S] S^\D5      5       5       rt\)R                  " \f" \SJ5      SZ5       " S_ S`\t5      5       ru\R                  " 5       \R                  " 5        " Sa Sb\D5      5       5       rv\)R                  " \f" \SJ5      SZ5       " Sc Sd\v5      5       rw\)R                  " \R                  Se5       " Sf Sg\v5      5       ry\R                  " 5       \R                  " 5        " Sh Si\D5      5       5       rz " Sj Sk\D5      r{ " Sl Sm\D5      r| " Sn So\D5      r}SSp jr~ " Sq Sr5      rSs r " St Su\ R                  5      r " Sv Sw\ GR                  GR                  5      r " Sx Sy\GR
                  5      r " Sz S{5      r " S| S}\5      r " S~ S\5      r " S S5      rS rSS jr " S S\D5      r " S S\D5      r " S S\D5      r " S S\ GR                   5      r " S S\D5      r\R                  " 5        " S S\D5      5       r\f" \ GR                  S5      (       a.  S SKrS SK/J0r0  \B\R                  " 5        " S S\D5      5       5       r\GR,                  " S 5      r " S S\GR0                  5      r\" 5       r " S S5      r " S S\)R                  \5      r " S S\ GR:                  5      r " S S\)R                  5      r " S S\D5      r " S S\D5      r " S S5      r " S S\ GRF                  5      r " S S\D5      r " S S\D5      r " S S\D5      r " S S\)R                  5      r " S S\)R                  5      r " S S\ GRT                  5      r " S S5      r " S S\ GRT                  5      r " S S\D\5      r " S S\D5      r " S S\5      r " S S\5      r " S S\5      rS rSSSSSS\" SSS944 H8  u  rrS H,  r\\\4S jrS\-  r\S$:  a  \S-  r\\l        \" \\\5        M.     M:     \)R                  " \9S5       " S S\D5      5       r " S S\)R                  5      rS r\S:X  a  \)GR|                  " 5         gg! \< a
    S=r9=r:r; GNf = f! \< a     GNf = f)    N)assert_python_okassert_python_failure)support)import_helper)	os_helper)socket_helper)threading_helper)warnings_helper)asyncore)smtpd)TestHandler)
HTTPServerBaseHTTPRequestHandler)patch)urlparseparse_qs)ThreadingUDPServerDatagramRequestHandlerThreadingTCPServerStreamRequestHandlerz?libasan has a pthread_create() dead lock related to thread+forkT)threadz'TSAN doesn't support threads after forkc                   <    \ rS rSrSrSrSrS rS rSS jr	S	 r
S
rg)BaseTestY   z&%(name)s -> %(levelname)s: %(message)sz^([\w.]+) -> (\w+): (\d+)$r   c                    [         R                  " 5       U l        [        R                  " 5       R
                  R                  n[        R                     [        R                  R                  5       U l
        [        R                  S S  U l        UR                  5       =U l        n[        R                  R                  5       U l        [        R                   R                  5       U l        0 =U l        nU H  n['        X$   SS 5      X4'   M     S S S 5        [        R                  " S5      U l        [        R                  " S5      U l        [        R                  " S5      U l        U R,                  R/                  5       U l        [2        R4                  " 5       U l        U R,                  R9                  [        R:                  5        [        R<                  " U R6                  5      U l        [        R@                  " U RB                  5      U l"        U R>                  RG                  U RD                  5        U R(                  RI                  5       (       a;  U R(                  RJ                  U R,                  RJ                  -   n[M        SU-  5      eU R*                  RI                  5       (       a;  U R*                  RJ                  U R,                  RJ                  -   n[M        SU-  5      eU R,                  RO                  U R>                  5        U RQ                  U R(                  RI                  5       5        U RQ                  U R*                  RI                  5       5        g ! , (       d  f       GN]= f)Ndisabledu   «×»u   ĿÖG zUnexpected handlers: %s))r	   threading_setup_threading_keylogging	getLoggermanager
loggerDict_lock	_handlerscopysaved_handlers_handlerListsaved_handler_listsaved_loggers_nameToLevelsaved_name_to_level_levelToNamesaved_level_to_namelogger_statesgetattrlogger1logger2root_loggergetEffectiveLeveloriginal_logging_levelioStringIOstreamsetLevelDEBUGStreamHandler	root_hdlr	Formatter
log_formatroot_formattersetFormatterhasHandlershandlersAssertionError
addHandler
assertTrue)selflogger_dictr*   r/   namehlists         :/opt/python-3.13.8/usr/lib/python3.13/test/test_logging.pysetUpBaseTest.setUpa   sm    />>@'')11<<]]")"3"3"8"8":D&-&:&:1&=D#1<1A1A1CCD'.';';'@'@'BD$'.';';'@'@'BD$133D%&-m.A.8$'@# &  ((8(()=>",,R0&*&6&6&H&H&J#kkm!!'--0 ..t{{;%//@##D$7$78<<##%%LL))D,<,<,E,EEE !:U!BCC<<##%%LL))D,<,<,E,EEE !:U!BCC##DNN300230023? ]s   B<M&&
M5c                    U R                   R                  5         U R                  R                  U R                  5        U R                  R
                  (       aa  U R                  R
                  S   nU R                  R                  U5        UR                  5         U R                  R
                  (       a  Ma  U R                  R                  U R                  5        [        R                     [        R                  R                  5         [        R                  R                  U R                  5        [        R                  R                  5         [        R                  R                  U R                  5        [        R                   R                  5         [        R                   R                  U R"                  5        U R$                  [        R&                  S S & [        R(                  " 5       R*                  nSUl        UR.                  nUR                  5         UR                  U R0                  5        U R2                  nU R2                   H   nXE   c  M
  XE   U R0                  U   l        M"     S S S 5        U R7                  5         [8        R:                  " U R<                  6   g ! , (       d  f       N<= f)Nr   )r8   closer3   removeHandlerr<   rB   r9   r5   r    r$   r-   clearupdater.   r+   r,   r%   r'   r)   r(   r!   r"   disabler#   r*   r/   r   
doCleanupsr	   threading_cleanupr   )rF   hr"   r#   r/   rH   s         rJ   tearDownBaseTest.tearDown   s    	&&t~~6''  ))!,A**1-GGI ''' 	!!$"="=>]]  &&(  ''(@(@A  &&(  ''(@(@A##%$$T%8%89&*&=&=G  #'')11GGO ++Jd001 ..M** &28E8KD&&t,5 + $ 	**D,?,?@' ]s   1E.J3#J33
KNc                 .   U=(       d    U R                   n[        R                  " U=(       d    U R                  5      nUR	                  5       R                  5       nU R                  [        U5      [        U5      5        [        XA5       HZ  u  pVUR                  U5      nU(       d  U R                  SU-   5        U R                  [        UR                  5       5      U5        M\     UR                  5       nU(       a  U R                  SU-   5        g g )Nz*Log line does not match expected pattern:
z'Remaining output at end of log stream:
)r8   recompileexpected_log_patgetvalue
splitlinesassertEquallenzipsearchfailtuplegroupsread)	rF   expected_valuesr8   patactual_linesactualexpectedmatchss	            rJ   assert_log_linesBaseTest.assert_log_lines   s     &4;;jj5 5 56(335\*C,@A #L BFJJv&E		G"# $U5<<>2H= !C KKMII@1DE     c                 J    U =R                   S-  sl         SU R                   -  $ )N   z%d)message_numrF   s    rJ   next_messageBaseTest.next_message   s&     	Ad&&&&ro   )r   r1   r2   r/   r5   r?   r<   r3   r)   r'   r.   r*   r,   r8   NN)__name__
__module____qualname____firstlineno__r>   r[   rr   rK   rV   rm   rt   __static_attributes__ ro   rJ   r   r   Y   s+     :J4K%4NA>F$'ro   r   c                   >    \ rS rSrS rS rS rS rS rS r	S r
S	rg
)BuiltinLevelsTest   c                    U R                   n[        R                  " S5      nUR                  [        R                  5        [        R
                  " [        R                  " S5      0 5      nUR                  [        R                  5        [        R                  " S5      nUR                  [        R                  5        UR                  [        R                  U" 5       5        UR                  U" 5       5        UR                  [        R                  U" 5       5        UR                  U" 5       5        UR                  U" 5       5        UR                  U" 5       5        UR                  [        R                  U" 5       5        UR                  U" 5       5        UR                  U" 5       5        UR                  U" 5       5        UR                  U" 5       5        UR                  U" 5       5        UR                  U" 5       5        UR                  U" 5       5        UR                  U" 5       5        U R                  / SQ5        g )NERRINFDEB))r   CRITICAL1)r   ERROR2)r   r   3)r   r   4)r   WARNING5)r   INFO6)r   r   7)r   r   8)r   r   9)r   r   10)r   r:   11)rt   r    r!   r9   r   LoggerAdapterr   r:   logr   errorwarninginfodebugrm   )rF   mr   r   r   s        rJ   	test_flatBuiltinLevelsTest.test_flat   sr   &W]]###G$5$5e$<bAW\\"&W]]# 	  !#&		!#  !#&		!#AC  !#&		!#AC		!# 	AC		!#		!# 
 	ro   c                    U R                   n[        R                  " S5      nUR                  [        R                  5        [        R                  " S5      nUR                  [        R
                  5        UR                  [        R                  U" 5       5        UR                  U" 5       5        UR                  U" 5       5        UR                  U" 5       5        UR                  U" 5       5        U R                  SS/5        g )Nr   INF.ERR)r   r   r   )r   r   r   rt   r    r!   r9   r   r   r   r   r   r   r   r   rm   )rF   r   r   INF_ERRs       rJ   test_nested_explicit&BuiltinLevelsTest.test_nested_explicit   s    &W\\"$$Y/' 	G$$ac*ac 	QSac(%
 	ro   c                    U R                   n[        R                  " S5      nUR                  [        R                  5        [        R                  " S5      nUR                  [        R
                  5        [        R                  " S5      n[        R                  " S5      n[        R                  " S5      nUR                  [        R                  U" 5       5        UR                  U" 5       5        UR                  U" 5       5        UR                  U" 5       5        UR                  [        R                  U" 5       5        UR                  U" 5       5        UR                  U" 5       5        UR                  U" 5       5        UR                  U" 5       5        UR                  U" 5       5        U R                  / SQ5        g )Nr   r   	INF.UNDEFINF.ERR.UNDEFUNDEF))r   r   r   )r   r   r   )r   r   r   )r   r   r   )r   r   r   )r   r   r   r   )rF   r   r   r   	INF_UNDEFINF_ERR_UNDEFr   s          rJ   test_nested_inherited'BuiltinLevelsTest.test_nested_inherited	  s>   &W\\"$$Y/'%%k2	))/:!!'* 	g&&,!#qs'**AC0AC  	ac"13AC  
 	ro   c                 H   U R                   n[        R                  " S5      n[        R                  " S5      n[        R                  " S5      nUR                  [        R                  5        UR                  [        R                  U" 5       5        UR                  U" 5       5        UR                  [        R                  U" 5       5        UR                  U" 5       5        UR                  U" 5       5        UR                  U" 5       5        U R                  / SQ5        g )Nr   INF.BADPARENT.UNDEFINF.BADPARENT))r   r   r   )r   r   r   )r   r   r   )r   r   r   )
rt   r    r!   r9   r   r   FATALr   r   rm   )rF   r   r   
GRANDCHILDCHILDs        rJ   test_nested_with_virtual_parent1BuiltinLevelsTest.test_nested_with_virtual_parent,  s    &&&'<=
!!/2W\\" 	w}}ac*		'--%

13 	AC 
 	ro   c                     U R                  [        R                  " S5      [        R                  5        U R                  [        R                  " [        R                  5      S5        g )Nr   )r^   r    getLevelNamer   rs   s    rJ   test_regression_22386'BuiltinLevelsTest.test_regression_22386F  s@    --f5w||D--gll;VDro   c                 p    [         R                  " S5      nU R                  U[         R                  5        g )Nr   )r    r   r^   r   )rF   fatals     rJ   test_issue27935!BuiltinLevelsTest.test_issue27935K  s&    $$W-.ro   c                    [         R                  " [         R                  S5        U R                  [         R                  [         R                  S5        U R	                  [         R
                  " [         R                  5      S5        U R	                  [         R
                  " [         R                  5      S5        U R	                  [         R
                  " S5      [         R                  5        g )Nr   r   NOTSET)r    addLevelNamer   
addCleanupr^   r   r   rs   s    rJ   test_regression_29220'BuiltinLevelsTest.test_regression_29220O  s    W\\2.,,gllFC--gll;R@--gnn=xH--h7Hro   r|   N)rw   rx   ry   rz   r   r   r   r   r   r   r   r{   r|   ro   rJ   r~   r~      s)    -^.!F4E
/Iro   r~   c                   &    \ rS rSrS rS rS rSrg)BasicFilterTestiW  c                    [         R                  " S5      nU R                  R                  S   n UR	                  U5        [         R
                  " S5      n[         R
                  " S5      n[         R
                  " S5      n[         R
                  " S5      nUR                  U R                  5       5        UR                  U R                  5       5        UR                  U R                  5       5        UR                  U R                  5       5        U R                  SS/5        UR                  U5        g ! UR                  U5        f = f)N	spam.eggsr   spamspam.eggs.fishspam.bakedbeansr   r   r   r   r   r   )
r    Filterr3   rB   	addFilterr!   r   rt   rm   removeFilter)rF   filter_handlerr   	spam_eggsspam_eggs_fishspam_bakedbeanss          rJ   test_filterBasicFilterTest.test_filter[  s    ..-""++A.	*g&$$V,D))+6I$../?@N%//0ABOIId'')*NN4,,./ 1 1 34  !2!2!45!!*/# 
   )G  )s   C8D; ;Ec                 |   S nU R                   R                  S   n UR                  U5        [        R                  " S5      n[        R                  " S5      n[        R                  " S5      n[        R                  " S5      nUR                  U R                  5       5        UR                  U R                  5       5        UR                  U R                  5       5        UR                  U R                  5       5        U R                  SS/5        UR                  U5        g ! UR                  U5        f = f)	Nc                 j    U R                   R                  S5      nSR                  US S 5      nUS:H  $ )N.   r   )rH   splitjoin)recordpartsprefixs      rJ   
filterfunc8BasicFilterTest.test_callable_filter.<locals>.filterfuncw  s5    KK%%c*EXXeBQi(F[((ro   r   r   r   r   r   r   r   )	r3   rB   r   r    r!   r   rt   rm   r   )rF   r   r   r   r   r   r   s          rJ   test_callable_filter$BasicFilterTest.test_callable_filters  s   	)
 ""++A.	-j)$$V,D))+6I$../?@N%//0ABOIId'')*NN4,,./ 1 1 34  !2!2!45!!*/# 
   ,G  ,s   C8D( (D;c                     [         R                  " 5       n[         R                  " SS05      nU R                  UR	                  U5      5        g )NrH   r   )r    r   makeLogRecordrE   filter)rF   frs      rJ   test_empty_filter!BasicFilterTest.test_empty_filter  s7    NN!!6;"78$ro   r|   N)rw   rx   ry   rz   r   r   r   r{   r|   ro   rJ   r   r   W  s    *0-:%ro   r   x   w   v   u   t   s   r   q   p   o   rq   SilentTaciturnTerseEffusiveSociableVerbose	Talkative	Garrulous
ChatterboxBoringc                       \ rS rSrS rSrg)GarrulousFilteri  c                 (    UR                   [        :g  $ N)levelno	GARRULOUSrF   r   s     rJ   r   GarrulousFilter.filter  s    ~~**ro   r|   Nrw   rx   ry   rz   r   r{   r|   ro   rJ   r   r     s    +ro   r   c                       \ rS rSrS rSrg)VerySpecificFilteri  c                 4    UR                   [        [        4;  $ r   )r   SOCIABLETACITURNr  s     rJ   r   VerySpecificFilter.filter  s    ~~h%999ro   r|   Nr  r|   ro   rJ   r  r    s    :ro   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)CustomLevelsAndFiltersTesti  ^[\w.]+ -> (\w+): (\d+)$c                     [         R                  U 5        [        R                  5        H  u  p[        R
                  " X5        M     g r   )r   rK   my_logging_levelsitemsr    r   )rF   kvs      rJ   rK    CustomLevelsAndFiltersTest.setUp  s1    t%++-DA  & .ro   c                 \    [          H"  nUR                  X R                  5       5        M$     g r   )LEVEL_RANGEr   rt   )rF   loggerlvls      rJ   log_at_all_levels,CustomLevelsAndFiltersTest.log_at_all_levels  s!    CJJs--/0 ro   c                 z   S[         R                  4S jn[         R                  " S5      n[         R                  " S5      n[        R                  " 5       n[        R                  " 5       n[         R
                  " U5      n[         R
                  " U5      nUR                  U5        UR                  U5        UR                  U5        UR                  S5        UR                  5         UR                  5         U R                  UR                  5       S5        U R                  UR                  5       S5        g )Nr   c                 @    [         R                   " U 5      n SU l        U $ )Nznew message!)r&   msg)r   s    rJ   replace_messageWCustomLevelsAndFiltersTest.test_handler_filter_replaces_record.<locals>.replace_message  s    YYv&F'FJMro   parentzparent.childzoriginal messagezoriginal message
znew message!
)r    	LogRecordr!   r6   r7   r;   r   rD   r   flushr^   r\   )rF   r  r  childstream_1stream_2	handler_1	handler_2s           rJ   #test_handler_filter_replaces_record>CustomLevelsAndFiltersTest.test_handler_filter_replaces_record  s    	G$5$5 	 ""8,!!.1;;=;;=))(3	))(3	O,)$#

%&**,.BC**,.>?ro   c                 l  ^ [        5       m " U4S jS[        R                  5      n[        R                  " S5      nUR	                  [        R
                  5        UR                  U" 5       5        UR                  U" 5       5        UR                  S5        U R                  S[        T5      5        g )Nc                   >   > \ rS rSrS\R
                  4U 4S jjrSrg)WCustomLevelsAndFiltersTest.test_logging_filter_replaces_record.<locals>.RecordingFilteri  r   c                 d   > TR                  [        U5      5        [        R                  " U5      $ r   )addidr&   )rF   r   recordss     rJ   r   ^CustomLevelsAndFiltersTest.test_logging_filter_replaces_record.<locals>.RecordingFilter.filter  s"    BvJ'yy((ro   r|   N)rw   rx   ry   rz   r    r  r   r{   r.  s   rJ   RecordingFilterr*    s    )W%6%6 ) )ro   r1  r  r  r   )
setr    r   r!   r9   r   r   r   r^   r_   )rF   r1  r  r.  s      @rJ   #test_logging_filter_replaces_record>CustomLevelsAndFiltersTest.test_logging_filter_replaces_record  s~    %	)gnn 	)
 ""8,%*+*+ECL)ro   c                     U R                   R                  [        5        U R                  U R                   5        U R	                  / SQ5        g )N)r   r   r   r   r   r   r   r   r   r   r   r   )r3   r9   VERBOSEr  rm   rs   s    rJ   test_logger_filter-CustomLevelsAndFiltersTest.test_logger_filter  s=    !!'*t//0 
 	ro   c                    U R                   R                  S   R                  [        5         U R	                  U R                   5        U R                  / SQ5        U R                   R                  S   R                  [        R                  5        g ! U R                   R                  S   R                  [        R                  5        f = f)Nr   )r7  r8  r9  r:  r;  )r3   rB   r9   r  r  rm   r    r   rs   s    rJ   test_handler_filter.CustomLevelsAndFiltersTest.test_handler_filter  s    !!!$--h7	B""4#3#34!! #  %%a(11'..AD%%a(11'..As   .B 8Cc                 T   U R                   R                  S   nS n[        5       nUR                  U5         U R	                  U R                   5        / SQnU R                  U5        [        5       nU R                   R                  U5        U R	                  U R                   5        U R                  U/ SQ-   5        U(       a  U R                   R                  U5        UR                  U5        g ! U(       a  U R                   R                  U5        UR                  U5        f = f)Nr   )	)r   r   )r   r   )r   r   r6  r7  r8  r9  r:  r;  ))r   r   )r   12)r   14)r   15)r   17)r   18)r   20)r3   rB   r   r   r  rm   r  r   )rF   r   specific_filtergarrfirst_liness        rJ   test_specific_filters0CustomLevelsAndFiltersTest.test_specific_filters%  s     ""++A. $!	'""4#3#34K !!+.02O&&7""4#3#34!!+ 
1
 
#
 
   --o>  &   --o>  &s   BC2 25D'r|   N)rw   rx   ry   rz   r[   rK   r  r&  r3  r=  r@  rL  r{   r|   ro   rJ   r  r    s/    
 3'
1@8*"B ('ro   r  c                  b    [         R                  " U 0 UD6u  p#[        R                  " U5        U$ r   )tempfilemkstemposrN   )argskwargsfdfns       rJ   make_temp_filerV  P  s)    t.v.FBHHRLIro   c                   n   \ rS rSrS rS rS r\R                  " \	R                  S:H  S5      \R                  " \R                  S5      \R                  " 5       \R                  " S5      S	 5       5       5       5       r\R"                  " 5       \R                  " 5       \\S
 5       5       5       5       rSrg)HandlerTestiV  c                     [         R                  " 5       nSUl        U R                  UR                  S5        SUl        U R                  UR                  S5        U R	                  [
        UR                  S 5        g )Ngenericanothergeneric)r    HandlerrH   r^   assertRaisesNotImplementedErroremitrF   rU   s     rJ   	test_nameHandlerTest.test_nameW  s\    OO+!!12-qvvt<ro   c                    [         R                  S;   Ga2  S GH  n[        5       nU(       d  [        R                  " U5        [
        R                  R                  USSS9nU(       a  UR                  UR                  pTU R                  US5        U R                  US5        [
        R                  " SS05      nUR                  U5        [        R                  " U5        U R                  [        R                  R                  U5      5        UR                  U5        U R!                  [        R                  R                  U5      5        O8U R                  UR                  S5        U R                  UR                  S5        UR#                  5         U(       d  GM  [        R                  " U5        GM     [         R                  S	:X  a  S
nOSn [
        R                  R%                  U5      nU R                  UR&                  UR(                  5        U R!                  UR*                  5        UR#                  5         S Hm  nUS:X  a3  U R/                  [0        [
        R                  R2                  SSU5        M<  [
        R                  R3                  SSU5      nUR#                  5         Mo     [
        R                  R5                  S5      n[
        R                  " 0 5      nU R!                  UR7                  U5      5        UR#                  5         [
        R                  R5                  S5      nU R                  UR7                  U5      5        UR#                  5         g ! [,         a     GN5f = f)Nlinuxandroiddarwin)TFutf-8Tencodingdelayr  Testrg  z/var/run/syslogz/dev/log)GETPOSTPUTrp  	localhostz/logr   rq   )sysplatformrV  rQ  unlinkr    rB   WatchedFileHandlerdevinor^   r   handleassertFalsepathexistsrE   rN   SysLogHandlerfacilityLOG_USER
unixsocketOSErrorr]  
ValueErrorHTTPHandlerBufferingHandlershouldFlush)	rF   existingrU  rU   rv  rw  r   socknamemethods	            rJ   test_builtin_handlers!HandlerTest.test_builtin_handlers_  s|    <<99)#%IIbM$$77WTX7Y uuaee$$S"-$$S"---ufo>AHHQKIIbM$$RWW^^B%78HHQKOOBGGNN2$67$$QUUB/$$QUUB/	8IIbM- *. ||x',%$$228<  QZZ8-	 -F!!*g.>.>.J.J"-vv? $$00ffM	 - --a0!!"%a()		--a0q)*		  s   A0M0 0
M>=M>c                 H   [        5       n[        R                  " U5        [        R                  " U5      n[
        R                  US44[
        R                  R                  US44[
        R                  R                  US444n[        R                  S;   a"  U[
        R                  R                  US444-  nU Ha  u  pEU" USS06nU R                  [        R                  R                  U5      5        UR!                  5         [        R                  " U5        Mc     g )NwarU   rd  rj  rh  )rV  rQ  rt  r   FakePathr    FileHandlerrB   RotatingFileHandlerTimedRotatingFileHandlerrr  rs  ru  rE   rz  r{  rN   )rF   rU  pfncasesclsrR  rU   s          rJ   test_pathlike_objects!HandlerTest.test_pathlike_objects  s     
		"  $((3*5%%99C:F%%>>c
K
 <<99w''::S#JGIIEICT,G,AOOBGGNN2./GGIIIbM	 ro   ntz/WatchedFileHandler not appropriate for Windows.z'Emscripten cannot fstat unlinked files.walltimec           	      
  ^  U 4S jnSnSnS T l         S T l        S GHM  n[        SS5      n[        R                  " XU4S9nSUl        UR                  5         [        R                  R                  USUS	9n[        R                  " S
5      nUR                  U5         [        U5       H]  n	[        R                  " S5        [        R                  " SS05      n
 [        R                  " 5       T l         UR!                  U
5        M_     UR'                  5         UR)                  5         [*        R,                  R/                  U5      (       a  [*        R0                  " U5        GMM  GMP     g ! ["         a)    [%        ST R                  < ST R                   < 35        e f = f! UR'                  5         UR)                  5         [*        R,                  R/                  U5      (       a  [*        R0                  " U5        f f = f)Nc                   > [        U5       Hb  n [        R                  " U 5        [        R                  " 5       Tl        [        R                  " S[        R                  " SS5      -  5        Md     g ! [
         a     N?f = f)NgMbp?r      )	rangerQ  rt  timedeletion_timer  sleeprandomrandint)fnametries_rF   s      rJ   remove_loop*HandlerTest.test_race.<locals>.remove_loop  sb    5\IIe$)-D& 

56>>!Q#778 "  s   0A44
B B  FT.logztest_logging-3-targetrR  Trh  ri  z'%(asctime)s: %(levelname)s: %(message)s{Gzt?r  testingzDeleted at z, opened at )handle_timer  rV  	threadingThreaddaemonstartr    rB   ru  r=   r@   r  r  r  r   rx  	Exceptionprintr   rN   rQ  rz  r{  rt  )rF   r  	del_count	log_countrk  rU  removerrU   r   r  r   s   `          rJ   	test_raceHandlerTest.test_race  s   	9 		!"E(9:B&&kYPG!GNMMO  33BPU3VA!!"KLANN1"y)AJJu%--ui.ABA+/99;( * 	77>>"%%IIbM &/ # % 040B0B040@0@B C 	 	77>>"%%IIbM &s%    <F%+E/F%/3F""F%%AHc                 P  ^^^  " S S[         R                  5      nU R                  [        [         R                  5      S5        U" 5       mU R                  TR                  R                  R                  5        STl	        U R                  [        [         R                  5      S5        U R                  [        [         R                  5      S5        [         R                  " S5      nUR                  T5        UR                  [         R                  5        [         R"                  " 5       m[         R"                  " 5       mUUU4S jn[         R$                  " USS	9nUR'                  5         TR)                  5         [*        R,                  " 5       nUS:X  a)   UR/                  S
5        [*        R0                  " S5        g UR/                  S5        TR3                  5         UR5                  5         [6        R8                  " USS9  g ! [*        R0                  " S5        f = f)Nc                   .   ^  \ rS rSrU 4S jrS rSrU =r$ )AHandlerTest.test_post_fork_child_no_deadlock.<locals>._OurHandleri  c                 f   > [         TU ]  5         [        R                  " [	        SSSS9S9U l        g )Nz	/dev/nullwtrh  rj  r8   )super__init__r    r;   opensub_handlerrF   	__class__s    rJ   r  JHandlerTest.test_post_fork_child_no_deadlock.<locals>._OurHandler.__init__  s.     "#*#8#8TGD$F ro   c                     U R                   R                     U R                   R                  U5        S S S 5        g ! , (       d  f       g = fr   )r  lockr_  r  s     rJ   r_  FHandlerTest.test_post_fork_child_no_deadlock.<locals>._OurHandler.emit  s1    %%**$$))&1 +**s	   <
A
)r  rw   rx   ry   rz   r  r_  r{   __classcell__r  s   @rJ   _OurHandlerr    s    F
2 2ro   r  r   z*because we need at least one for this testrq    test_post_fork_child_no_deadlockc                     > [         R                     TR                     TR                  5         T R	                  S5        S S S 5        S S S 5        g ! , (       d  f       N= f! , (       d  f       g = f)N      ?)r    r$   r  r2  wait)+fork_happened__release_locks_and_end_threadlocks_held__ready_to_forkrefed_hs   rJ   lock_holder_thread_fnKHandlerTest.test_post_fork_child_no_deadlock.<locals>.lock_holder_thread_fn  s?    )--/ <@@E !-s"   A#"AA#
A 	A##
A1z,test_post_fork_child_no_deadlock lock holder)r  rH   z#Child process did not deadlock. \o/z&Parent process returned from fork. \o/)exitcode)r    r\  r^   r_   r%   r   r  r8   rN   rH   assertGreater_at_fork_reinit_lock_weaksetr!   rD   r9   r:   r  Eventr  r  r  rQ  forkr   _exitr2  r   r   wait_process)	rF   r  test_loggerr  lock_holder_threadpidr  r  r  s	         @@@rJ   r  ,HandlerTest.test_post_fork_child_no_deadlock  s   	2'// 	2 	W../3-++22889C3w001153wCCDaH''(JKw'W]]+$-OO$5!6?oo6G3	F$ '--,CE 	  "!&&(ggi!8  !GH FG7;;=##%  q1 s   H H%)r  r  N)rw   rx   ry   rz   ra  r  r  unittestskipIfrQ  rH   r   is_emscriptenr	   requires_working_threadingrequires_resourcer  requires_forkskip_if_asan_forkskip_if_tsan_forkr  r{   r|   ro   rJ   rX  rX  V  s    =3j, __RWW_&WX__H 002z*)" + 3 Y)"^ 002>2   3 >2ro   rX  c                       \ rS rSrS rSrg)	BadStreami$  c                     [        S5      e)Ndeliberate mistake)RuntimeError)rF   datas     rJ   writeBadStream.write%  s    /00ro   r|   N)rw   rx   ry   rz   r  r{   r|   ro   rJ   r  r  $  s    1ro   r  c                       \ rS rSrS rSrg)TestStreamHandleri(  c                     Xl         g r   error_recordr  s     rJ   handleErrorTestStreamHandler.handleError)  s    "ro   r  N)rw   rx   ry   rz   r  r{   r|   ro   rJ   r  r  (  s    #ro   r  c                   0    \ rS rSr\R
                  rSrSrg)StreamWithIntNamei,  r   r|   N)	rw   rx   ry   rz   r    r   levelrH   r{   r|   ro   rJ   r  r  ,  s    NNEDro   r  c                   &    \ rS rSrS rS rS rSrg)StreamHandlerTesti0  c                    [        [        5       5      n[        R                  " 0 5      n[        R                  n UR                  U5        U R                  UR                  U5        [        R                  " [        5       5      n[        R                  " 5        nUR                  U5        SnU R                  XTR                  5       5        S S S 5        S[        l        [        R                  " 5        nUR                  U5        U R                  SUR                  5       5        S S S 5        U[        l        g ! , (       d  f       Nt= f! , (       d  f       N+= f! U[        l        f = f)Nz"
RuntimeError: deliberate mistake
Fr   )r  r  r    r   raiseExceptionsrx  assertIsr  r;   r   captured_stderrassertInr\   r^   )rF   rU   r   	old_raisestderrr  s         rJ   test_error_handling%StreamHandlerTest.test_error_handling1  s    ik*!!"%++		0HHQKMM!..!,%%ik2A((*f<c??#45 +
 ',G#((*f  V__%67 + '0G# +* +* '0G#s<   A E 3D<(E 62E(E <
E
E 
EE E+c                 B   [         R                  " 5       n[        R                  " 5       nUR	                  U5      nU R                  U[        R                  5        UR	                  U5      nU R                  XB5        UR	                  U5      nU R                  U5        g r   )	r    r;   r6   r7   	setStreamr   rr  r  assertIsNone)rF   rU   r8   oldri   s        rJ   test_stream_setting%StreamHandlerTest.test_stream_settingG  ss     !!#kk&!c3::&S!f%S!&!ro   c                 v    [         R                  " [        5       5      nU R                  [	        U5      S5        g )Nz<StreamHandler 2 (NOTSET)>)r    r;   r  r^   reprr`  s     rJ   'test_can_represent_stream_with_int_name9StreamHandlerTest.test_can_represent_stream_with_int_nameU  s+    !!"3"56a">?ro   r|   N)rw   rx   ry   rz   r  r  r  r{   r|   ro   rJ   r  r  0  s    0,"@ro   r  c                   2    \ rS rSrS rS rS rS rS rSr	g)	TestSMTPServeri\  c                     [         R                  R                  XS USS9  U R                  R	                  5       S   U l        X l        S U l        SU l        X0l	        g )NT)mapdecode_datarq   F)
r   
SMTPServerr  socketgetsocknameport_handler_thread_quitpoll_interval)rF   addrr   r  sockmaps        rJ   r  TestSMTPServer.__init__q  sV    !!$d.2 	" 	4KK++-a0	
*ro   c                 (    U R                  XX45        g r   )r  )rF   peermailfromrcpttosr  s        rJ   process_messageTestSMTPServer.process_messagez  s     	dg4ro   c                     [         R                  " U R                  U R                  4S9=U l        nSUl        UR                  5         g Nr  Tr  r  serve_foreverr  r  r  r  rF   ts     rJ   r  TestSMTPServer.start  C     %++43E3E262D2D1FH 	Hq		ro   c                     U R                   (       d3  [        R                  " XR                  SS9  U R                   (       d  M2  g g )Nrq   )r  count)r  r   loop_map)rF   r  s     rJ   r*  TestSMTPServer.serve_forever  s(     **MM-YYa@ ***ro   c                     SU l         [        R                  " U R                  5        S U l        U R	                  5         [
        R                  " U R                  SS9  g )NT)r  
ignore_all)r  r	   join_threadr  rN   r   	close_allr2  rs   s    rJ   stopTestSMTPServer.stop  sA    
 
$$T\\2

tyyT:ro   )r  r  r  r  r  N)
rw   rx   ry   rz   r  r%  r  r*  r8  r{   r|   ro   rJ   r  r  \  s    *+
5	A	;ro   r  c                   :   ^  \ rS rSrS rS rU 4S jrS rSrU =r	$ )ControlMixini  c                 ^    S U l         X l        Xl        [        R                  " 5       U l        g r   )r  r  r  r  r  ready)rF   r   r  s      rJ   r  ControlMixin.__init__  s"    *__&
ro   c                     [         R                  " U R                  U R                  4S9=U l        nSUl        UR                  5         g r(  r)  r+  s     rJ   r  ControlMixin.start  r.  ro   c                 `   > U R                   R                  5         [        [        U ]  U5        g r   )r=  r2  r  r;  r*  )rF   r  r  s     rJ   r*  ControlMixin.serve_forever  s"    
 	

lD/>ro   c                     U R                  5         U R                  b'  [        R                  " U R                  5        S U l        U R	                  5         U R
                  R                  5         g r   )shutdownr  r	   r6  server_closer=  rP   rs   s    rJ   r8  ControlMixin.stop  sL     	<<#((6DL

ro   )r  r  r  r=  )
rw   rx   ry   rz   r  r  r*  r8  r{   r  r  s   @rJ   r;  r;    s     '?	 	ro   r;  c                   (    \ rS rSr  SS jrS rSrg)TestHTTPServeri  Nc                    ^^  " UU4S jS[         5      m[        R                  " XT5        [        R                  XU5        XPl        g )Nc                   >   >^  \ rS rSrSS jrS rUU U4S jrSrU =r$ )=TestHTTPServer.__init__.<locals>.DelegatingHTTPRequestHandleri  c                 \    UR                  S5      (       a  U R                  $ [        U5      e)Ndo_)
startswithprocess_requestAttributeError)rF   rH   defaults      rJ   __getattr__ITestHTTPServer.__init__.<locals>.DelegatingHTTPRequestHandler.__getattr__  s(    ??5))///$T**ro   c                 :    U R                   R                  U 5        g r   serverr  rs   s    rJ   rO  MTestHTTPServer.__init__.<locals>.DelegatingHTTPRequestHandler.process_request      $$T*ro   c                 :   > T(       a  [         TU ]   " U/UQ76   g g r   )r  log_message)rF   formatrR  DelegatingHTTPRequestHandlerr  r   s      rJ   rZ  ITestHTTPServer.__init__.<locals>.DelegatingHTTPRequestHandler.log_message  s1    6, +,,2;59; ro   r|   r   )	rw   rx   ry   rz   rR  rO  rZ  r{   r  )r  r\  r   s   @rJ   r\  rK    s    +
+; ;ro   r\  )r   r   r  r;  sslctx)rF   r  r   r  r   r^  r\  s       ` @rJ   r  TestHTTPServer.__init__  s=    	; 	;+A 	; 	D(DEd];ro   c                     U R                   R                  5       u  pU R                  (       a  U R                  R                  USS9nX4$ ! [         a(  n[
        R                  R                  SU-  5        e S nAff = f)NT)server_sidezGot an error:
%s
)r  acceptr^  wrap_socketr  rr  r  r  )rF   sockr  es       rJ   get_requestTestHTTPServer.get_request  sr    	++-JD{{{{..t.F
 z	  	JJ2Q67	s   AA 
A>#A99A>r^  )r  FN)rw   rx   ry   rz   r  rf  r{   r|   ro   rJ   rH  rH    s     58#'&	ro   rH  c                   :   ^  \ rS rSrSr  SS jrU 4S jrSrU =r$ )TestTCPServeri  Tc                 ~     " S S[         5      n[        R                  " XUU5        [        R                  XU5        g )Nc                       \ rS rSrS rSrg);TestTCPServer.__init__.<locals>.DelegatingTCPRequestHandleri  c                 :    U R                   R                  U 5        g r   rU  rs   s    rJ   rx  BTestTCPServer.__init__.<locals>.DelegatingTCPRequestHandler.handle  rX  ro   r|   N)rw   rx   ry   rz   rx  r{   r|   ro   rJ   DelegatingTCPRequestHandlerrm    s    +ro   rp  )r   r   r  r;  )rF   r  r   r  bind_and_activaterp  s         rJ   r  TestTCPServer.__init__  s7    	+*> 	+ 	##D0K$5	7d];ro   c                 n   > [         [        U ]  5         U R                  R	                  5       S   U l        g Nrq   )r  rj  server_bindr  r  r  r  s    rJ   ru  TestTCPServer.server_bind  )    mT.0KK++-a0	ro   )r  r  T)	rw   rx   ry   rz   allow_reuse_addressr  ru  r{   r  r  s   @rJ   rj  rj    s      47#'<1 1ro   rj  c                   B   ^  \ rS rSr  SS jrU 4S jrU 4S jrSrU =r$ )TestUDPServeri   c                    ^  " U4S jS[         5      m[        R                  " XTU5        [        R                  XU5        SU l        g )Nc                   2   >^  \ rS rSrS rUU 4S jrSrU =r$ );TestUDPServer.__init__.<locals>.DelegatingUDPRequestHandleri3  c                 :    U R                   R                  U 5        g r   rU  rs   s    rJ   rx  BTestUDPServer.__init__.<locals>.DelegatingUDPRequestHandler.handle5  rX  ro   c                    > U R                   R                  5       nU(       a   [        TU ]  5         g g ! [         a    U R
                  R                  (       d  e  g f = fr   )wfiler\   r  finishr  rV  _closed)rF   r  DelegatingUDPRequestHandlerr  s     rJ   r  BTestUDPServer.__init__.<locals>.DelegatingUDPRequestHandler.finish8  sV    zz**,"94GI  # "#{{22!  3"s   4 &AAr|   )rw   rx   ry   rz   rx  r  r{   r  )r  r  s   @rJ   r  r~  3  s    +" "ro   r  F)r   r   r  r;  r  )rF   r  r   r  rq  r  s        @rJ   r  TestUDPServer.__init__1  sA    	"*@ 	" 	##D$?$5	7 	d];ro   c                 n   > [         [        U ]  5         U R                  R	                  5       S   U l        g rt  )r  r{  ru  r  r  r  r  s    rJ   ru  TestUDPServer.server_bindG  rw  ro   c                 8   > [         [        U ]  5         SU l        g )NT)r  r{  rE  r  r  s    rJ   rE  TestUDPServer.server_closeK  s    mT/1ro   )r  r  rx  )	rw   rx   ry   rz   r  ru  rE  r{   r  r  s   @rJ   r{  r{     s    " 58#',1 ro   r{  AF_UNIXc                   ,    \ rS rSr\R
                  rSrg)TestUnixStreamServeriP  r|   Nrw   rx   ry   rz   r  r  address_familyr{   r|   ro   rJ   r  r  P      ro   r  c                   ,    \ rS rSr\R
                  rSrg)TestUnixDatagramServeriS  r|   Nr  r|   ro   rJ   r  r  S  r  ro   r  c                   8    \ rS rSr\R
                  rS rS rSr	g)SMTPHandlerTestiX  c                    0 n[        [        R                  S4U R                  SU5      nUR	                  5         [        R                  UR
                  4n[        R                  R                  USSSU R                  S9nU R                  UR                  S/5        / U l        [        R                  " SS05      n[        R                  " 5       U l        UR#                  U5        U R                   R%                  U R                  5        UR'                  5         U R)                  U R                   R+                  5       5        U R                  [-        U R                  5      S	5        U R                  S   u  pgpU R                  US5        U R                  US/5        U R/                  S
U	5        U R)                  U	R1                  S5      5        UR3                  5         g )Nr   MbP?meyouLogtimeoutr  u	   Hello ✓rq   z
Subject: Log
u   

Hello ✓)r  r   HOSTr%  r  r  r    rB   SMTPHandlerTIMEOUTr^   toaddrsmessagesr   r  r  handledrx  r  r8  rE   is_setr_   r  endswithrN   )
rF   r  rV  r  rU   r   r"  r#  r$  r  s
             rJ   
test_basicSMTPHandlerTest.test_basic^  sq   !3!3Q 79M9Mu ')""FKK0((tUE15 ) ?UG,!!5."9: (	$,,'++-.T]]+Q/(,a(8%4(5'*($/&89:		ro   c                 n    U R                   R                  U5        U R                  R                  5         g r   )r  appendr  r2  )rF   rR  s     rJ   r%  SMTPHandlerTest.process_messagev  s$    T"ro   )r  r  N)
rw   rx   ry   rz   r   LONG_TIMEOUTr  r  r%  r{   r|   ro   rJ   r  r  X  s     ""G0ro   r  c                   d    \ rS rSrSrS rS rS rS rS r	\
R                  " 5       S 5       rS	rg
)MemoryHandlerTestiz  r  c                 L   [         R                  U 5        [        R                  R	                  S[        R
                  U R                  5      U l        [        R                  " S5      U l	        SU R                  l
        U R                  R                  U R                  5        g )N
   memr   )r   rK   r    rB   MemoryHandlerr   r<   mem_hdlrr!   
mem_logger	propagaterD   rs   s    rJ   rK   MemoryHandlerTest.setUp  sj    t((66r7??7;~~G!++E2$%!""4==1ro   c                 b    U R                   R                  5         [        R                  U 5        g r   )r  rN   r   rV   rs   s    rJ   rV   MemoryHandlerTest.tearDown       $ro   c           	      ^   U R                   R                  U R                  5       5        U R                  / 5        U R                   R	                  U R                  5       5        U R                  / 5        U R                   R                  U R                  5       5        / SQnU R                  U5        S H  n[        S5       H,  nU R                   R                  U R                  5       5        M.     U R                  U5        U R                   R                  U R                  5       5        U[        X"S-   5       Vs/ s H  nS[        U5      4PM     sn-   nU R                  U5        M     U R                   R                  U R                  5       5        U R                  U5        g s  snf )N)r:   r   r   r   )r   r   )r     	   r  r:   )r  r   rt   rm   r   r   r  str)rF   linesnis       rJ   
test_flushMemoryHandlerTest.test_flush  sR    	d//12b!T..01b! 1 1 34

 	e$A1X%%d&7&7&9: !!%( OO!!$"3"3"56aR8HI8H1gs1v.8HIIE!!%(  	d//12e$	 Js   >F*c                    U R                   R                  U R                  5       5        U R                  / 5        U R                   R	                  U R                  5       5        U R                  / 5        U R                   R                  U R                  5        U R                  R                  5         SS/nU R                  U5        [        R                  R                  S[        R                  U R                  S5      U l        U R                   R                  U R                  5        U R                   R                  U R                  5       5        U R                  U5        U R                   R	                  U R                  5       5        U R                  U5        U R                   R                  U R                  5        U R                  R                  5         U R                  U5        g )Nr  r  r  F)r  r   rt   rm   r   rO   r  rN   r    rB   r  r   r<   rD   rF   r  s     rJ   test_flush_on_close%MemoryHandlerTest.test_flush_on_close  sa    	d//12b!T..01b!%%dmm4
 	e$((66r7??7;~~7<> 	""4==1d//12e$T..01e$%%dmm4e$ro   c                    U R                   R                  U R                  5       5        U R                  / 5        U R                   R	                  U R                  5       5        U R                  / 5        [
        R                  " [
        R                  R                  U R                  5      /S9  SS/nU R                  U5        [
        R                  R                  S[
        R                  U R                  S5      U l	        U R                   R                  U R                  5        U R                   R                  U R                  5       5        U R                  U5        U R                   R	                  U R                  5       5        U R                  U5        [
        R                  " [
        R                  R                  U R                  5      /S9  U R                  U5        g )NhandlerListr  r  r  F)r  r   rt   rm   r   r    rD  weakrefrefr  rB   r  r   r<   rD   r  s     rJ   test_shutdown_flush_on_close.MemoryHandlerTest.test_shutdown_flush_on_close  s]   
 	d//12b!T..01b!goo&9&9$--&H%IJ
 	e$((66r7??7;~~7<> 	""4==1d//12e$T..01e$goo&9&9$--&H%IJe$ro   c                     " S S5      nU" U R                   5      n U R                   R                  U5        [        S5       HO  n[        R                  " S5        U R
                  R                  S5        U R
                  R                  S5        MQ     UR                   H  n[        R                  " U5        M     g ! UR                   H  n[        R                  " U5        M     f = f)Nc                   &    \ rS rSrS rS rS rSrg)ZMemoryHandlerTest.test_race_between_set_target_and_flush.<locals>.MockRaceConditionHandleri  c                     Xl         / U l        g r   r  threads)rF   r  s     rJ   r  cMemoryHandlerTest.test_race_between_set_target_and_flush.<locals>.MockRaceConditionHandler.__init__  s     (!ro   c                 :    U R                   R                  S 5        g r   )r  	setTargetrs   s    rJ   removeTargetgMemoryHandlerTest.test_race_between_set_target_and_flush.<locals>.MockRaceConditionHandler.removeTarget  s    ''-ro   c                     [         R                  " U R                  S9nU R                  R	                  U5        UR                  5         g )N)r  )r  r  r  r  r  r  )rF   r  r   s      rJ   rx  aMemoryHandlerTest.test_race_between_set_target_and_flush.<locals>.MockRaceConditionHandler.handle  s3    "))1B1BC##F+ro   r  N)rw   rx   ry   rz   r  r  rx  r{   r|   ro   rJ   MockRaceConditionHandlerr    s    ".ro   r  r  r  znot flushedflushed)r  r  r  r  r  r  r   r   r  r	   r6  )rF   r  r  r  r   s        rJ   &test_race_between_set_target_and_flush8MemoryHandlerTest.test_race_between_set_target_and_flush  s    	 	 *$--8		5MM##F+2Y

5!$$]3''	2 
 !.. ,,V4 )&.. ,,V4 )s   A9C +C,)r  r  N)rw   rx   ry   rz   r[   rK   rV   r  r  r  r	   r  r  r{   r|   ro   rJ   r  r  z  s@    
 32 %8%<%: 0025 35ro   r  c                       \ rS rSrS rSrg)ExceptionFormatteri   c                 &    SUS   R                   -  $ )Nz
Got a [%s]r   )rw   )rF   eis     rJ   formatException"ExceptionFormatter.formatException  s    benn,,ro   r|   N)rw   rx   ry   rz   r  r{   r|   ro   rJ   r  r     s    -ro   r  c                 P    U R                  5         [        R                  " U5        g r   rN   rQ  remove)rU   rU  s     rJ   closeFileHandlerr    s    GGIIIbMro   c                   >   \ rS rSr\R
                  rSrSrSrSr	\R                  SS5      r\R                  SS	5      rS
\ -   S-   r\R                  SS5      rSrSrSrSrSrS rS rS r\4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&g&)'ConfigFileTesti	  ^(\w+) \+\+ (\w+)$aN  
    [loggers]
    keys=root

    [handlers]
    keys=hand1

    [formatters]
    keys=form1

    [logger_root]
    level=WARNING
    handlers=hand1

    [handler_hand1]
    class=StreamHandler
    level=NOTSET
    formatter=form1
    args=(sys.stdout,)

    [formatter_form1]
    format=%(levelname)s ++ %(message)s
    datefmt=
    a  
    [loggers]
    keys=root,parser

    [handlers]
    keys=hand1

    [formatters]
    keys=form1

    [logger_root]
    level=WARNING
    handlers=

    [logger_parser]
    level=DEBUG
    handlers=hand1
    propagate=1
    qualname=compiler.parser

    [handler_hand1]
    class=StreamHandler
    level=NOTSET
    formatter=form1
    args=(sys.stdout,)

    [formatter_form1]
    format=%(levelname)s ++ %(message)s
    datefmt=
    a  
    [loggers]
    keys=root,parser

    [handlers]
    keys=hand1

    [formatters]
    keys=form1

    [logger_root]
    level=WARNING
    handlers=hand1

    [logger_parser]
    level=DEBUG
    handlers=
    propagate=1
    qualname=compiler.parser

    [handler_hand1]
    class=StreamHandler
    level=NOTSET
    formatter=form1
    args=(sys.stdout,)

    [formatter_form1]
    format=%(levelname)s ++ %(message)s
    datefmt=
    z
sys.stdoutz
sys.stboutzformatter=form1zformatter=misspelled_namea  
    [loggers]
    keys=root

    [handlers]
    keys=hand1

    [formatters]
    keys=form1

    [logger_root]
    level=NOTSET
    handlers=hand1

    [handler_hand1]
    class=StreamHandler
    level=NOTSET
    formatter=form1
    args=(sys.stdout,)

    [formatter_form1]
    class=zS.ExceptionFormatter
    format=%(levelname)s:%(name)s:%(message)s
    datefmt=
    zclass=StreamHandlerzclass=logging.StreamHandlerag  
    [loggers]
    keys=root,parser

    [handlers]
    keys=hand1, hand2

    [formatters]
    keys=form1, form2

    [logger_root]
    level=WARNING
    handlers=

    [logger_parser]
    level=DEBUG
    handlers=hand1
    propagate=1
    qualname=compiler.parser

    [handler_hand1]
    class=StreamHandler
    level=NOTSET
    formatter=form1
    args=(sys.stdout,)

    [handler_hand2]
    class=StreamHandler
    level=NOTSET
    formatter=form1
    args=(sys.stderr,)

    [formatter_form1]
    format=%(levelname)s ++ %(message)s
    datefmt=

    [formatter_form2]
    format=%(message)s
    datefmt=
    a%  
    [loggers]
    keys=root,parser,compiler

    [handlers]
    keys=hand1

    [formatters]
    keys=form1

    [logger_root]
    level=WARNING
    handlers=hand1

    [logger_compiler]
    level=DEBUG
    handlers=
    propagate=1
    qualname=compiler

    [logger_parser]
    level=DEBUG
    handlers=
    propagate=1
    qualname=compiler.parser

    [handler_hand1]
    class=StreamHandler
    level=NOTSET
    formatter=form1
    kwargs={'stream': sys.stdout,}

    [formatter_form1]
    format=%(levelname)s ++ %(message)s
    datefmt=
    a  
    [loggers]
    keys=root

    [handlers]
    keys=file

    [formatters]
    keys=

    [logger_root]
    level=DEBUG
    handlers=file

    [handler_file]
    class=FileHandler
    level=DEBUG
    args=("{tempfile}",)
    kwargs={{"encoding": "utf-8"}}
    ap  
    [loggers]
    keys=root

    [handlers]
    keys=hand1

    [formatters]
    keys=form1

    [logger_root]
    level=WARNING
    handlers=hand1

    [handler_hand1]
    class=StreamHandler
    level=NOTSET
    formatter=form1
    args=(sys.stdout,)

    [formatter_form1]
    format=%(message)s ++ %(customfield)s
    defaults={"customfield": "defaultvalue"}
    z
    [loggers]
    keys=root

    [handlers]
    keys=screen

    [formatters]
    keys=

    [logger_root]
    level=DEBUG
    handlers=screen

    [handler_screen]
    level=DEBUG
    class=StreamHandler
    args=(sys.stdout,)
    formatter=
    c                     [         R                  " [        R                  " U5      5      n[        R
                  R                  " U4SS0UD6  g )Nrj  rh  )r6   r7   textwrapdedentr    config
fileConfig)rF   confrS  files       rJ   apply_configConfigFileTest.apply_config#  s5    {{8??401!!$CCFCro   c                    [         R                  " 5        nU R                  U R                  5        [        R
                  " 5       nUR                  U R                  5       5        UR                  U R                  5       5        U R                  S/US9  U R                  / 5        S S S 5        g ! , (       d  f       g = fNr   r   r  )
r   captured_stdoutr  config0r    r!   r   rt   r   rm   rF   outputr  s      rJ   test_config0_okConfigFileTest.test_config0_ok'  s    $$&&dll+&&(FKK))+,LL**,-!!# "  !!"% '&&s   BB00
B>c                 >   [         R                  " 5        n[        R                  " [        R
                  " U R                  5      5      n[        R                  " 5       nUR                  U5        [        R                  R                  U5        [        R                  " 5       nUR                  U R                  5       5        UR!                  U R                  5       5        U R#                  S/US9  U R#                  / 5        S S S 5        g ! , (       d  f       g = fr  )r   r  r6   r7   r  r  r  configparserConfigParser	read_filer    r  r  r!   r   rt   r   rm   )rF   r  r  cpr  s        rJ   test_config0_using_cp_ok'ConfigFileTest.test_config0_using_cp_ok6  s    $$&&;;xt||<=D**,BLLNN%%b)&&(FKK))+,LL**,-!!# "  !!"% '&&s   C/D
Dc                 r   [         R                  " 5        nU R                  U5        [        R                  " S5      nUR                  U R                  5       5        UR                  U R                  5       5        U R                  SS/US9  U R                  / 5        S S S 5        g ! , (       d  f       g = fNcompiler.parserr   r   r  r  	r   r  r  r    r!   r   rt   r   rm   rF   r  r  r  s       rJ   test_config1_okConfigFileTest.test_config1_okH      $$&&f%&&'89FKK))+,LL**,-!!#  " 
 !!"% '&&   B	B((
B6c                 Z    U R                  [        U R                  U R                  5        g r   r]  r  r  config2rs   s    rJ   test_config2_failure#ConfigFileTest.test_config2_failureW      )T%6%6Ero   c                 Z    U R                  [        U R                  U R                  5        g r   r]  r  r  config3rs   s    rJ   test_config3_failure#ConfigFileTest.test_config3_failure[  r  ro   c                    [         R                  " 5        nU R                  U R                  5        [        R
                  " 5       n [        5       e! [         a    [        R                  " S5         Of = f[        R                  R                  S5        U R                  UR                  5       S5        U R                  / 5        S S S 5        g ! , (       d  f       g = fNjust testingr   -ERROR:root:just testing
Got a [RuntimeError]
)r   r  r  config4r    r!   r  	exceptionrr  stdoutseekr^   r\   rm   r  s      rJ   test_config4_okConfigFileTest.test_config4_ok_  s    $$&&dll+&&(F2"n$ 2!!.12JJOOAV__.AC !!"% '&&s*   1C
A A52C4A55AC
Cc                 6    U R                  U R                  S9  g Nr  )r  config5rs   s    rJ   test_config5_okConfigFileTest.test_config5_okn      DLL1ro   c                 6    U R                  U R                  S9  g r%  )r  config6rs   s    rJ   test_config6_okConfigFileTest.test_config6_okq  r*  ro   c                    [         R                  " 5        nU R                  U R                  5        [        R
                  " S5      n[        R
                  " S5      nUR                  U R                  5       5        UR                  U R                  5       5        UR                  U R                  5       5        U R                  / SQUS9  U R                  / 5        S S S 5        [         R                  " 5        nU R                  U R                  5        [        R
                  " S5      nU R                  UR                  5        UR                  U R                  5       5        UR                  U R                  5       5        [        R
                  " S5      nUR                  U R                  5       5        UR                  U R                  5       5        WR                  U R                  5       5        U R                  / SQUS9  U R                  / 5        S S S 5        g ! , (       d  f       GNN= f! , (       d  f       g = f)Nr  compiler-hyphenatedr  r  )r   r   r  compiler.lexer)r   r   )r   r   )r   r   )r   r   )r   r  r  config1ar    r!   r   rt   r   criticalrm   config7ry  r   rF   r  r  
hyphenateds       rJ   test_config7_okConfigFileTest.test_config7_okt  s   $$&&dmm,&&'89F !**+@AJKK))+,LL**,- 1 1 34!! # 	 "  !!"%' '( $$&&dll+&&'89FV__-KK))+,LL**,-&&'78FKK))+,LL**,- 1 1 34!! #
  "  !!"%) '&) '&( '&s   CH%;D!H7%
H47
Ic                    U R                  5          [        SS5      n[        R                  S:X  a  UR	                  SS5      nU R
                  R                  US9nU R                  U5        U R                  U5        S S S 5        [        R                  R                  S   nU R                  [        UW5        g ! , (       d  f       NC= f)Nr  test_logging-X-r  \z\\)rO  r   )check_no_resource_warningrV  rQ  rH   replaceconfig8r[  r  r    rootrB   r   r  )rF   rU  r@  r   s       rJ   test_config8_okConfigFileTest.test_config8_ok  s    ++-(9:B ww$ZZf-ll))2)6Gg&g& . ,,''*('26 .-s   A.B<<
C
c                 n   U R                  U R                  5        [        R                  R                  S   R
                  nUR                  [        R                  " SS05      5      nU R                  US5        UR                  [        R                  " SSS.5      5      nU R                  US5        g )Nr   r  testztest ++ defaultvaluecustomvaluer  customfieldztest ++ customvalue)	r  config9r    rA  rB   	formatterr[  r   r^   )rF   rJ  results      rJ   test_config9_okConfigFileTest.test_config9_ok  s    $,,'LL))!,66	!!'"7"7"HI!78!!'"7"7=9#; <!67ro   c                 r   U R                  U R                  5        [        R                  " S5      nU R	                  UR
                  5        U R                  U R                  5        U R                  UR
                  5        U R                  U R                  SS9  U R	                  UR
                  5        g )Nsome_pristine_loggerF)disable_existing_loggers)r  disable_testr    r!   ry  r   rE   rF   r  s     rJ   test_logger_disabling$ConfigFileTest.test_logger_disabling  s    $++,""#9:)$++,($++eL)ro   c                     SnU R                  U5        U R                  [        R                  " 5       R                  S   R
                  S5        g )Naw  
            [loggers]
            keys=root

            [handlers]
            keys=hand1

            [formatters]
            keys=form1

            [logger_root]
            handlers=hand1

            [handler_hand1]
            class=StreamHandler
            formatter=form1

            [formatter_form1]
            format=%(levelname)s ++ %(message)s
            r   hand1)r  r^   r    r!   rB   rH   )rF   test_configs     rJ   test_config_set_handler_names,ConfigFileTest.test_config_set_handler_names  sC    ( 	+&**,55a8==wGro   c                     Sn[         R                  " [        R                  " U5      5      nU R	                  [
        [        R                  R                  U5        g )Na  
            [loggers]
            keys=root

            [handlers]
            keys=hand1

            [formatters]
            keys=form1

            [logger_root]
            handlers=hand1

            [handler_hand1]
            class=StreamHandler
            formatter=form1

            [formatter_form1]
            format=%(levelname)s ++ %(message)s

            prince
            )	r6   r7   r  r  r]  r  r    r  r  )rF   rW  r  s      rJ   'test_exception_if_confg_file_is_invalid6ConfigFileTest.test_exception_if_confg_file_is_invalid  s>    . {{8??;78,(A(A4Hro   c                     [         R                  " SSS9u  p[        R                  " U5        U R	                  [
        [        R                  R                  U5        [        R                  " U5        g )Ntest_empty_.inir   suffix)
rO  rP  rQ  rN   r]  r  r    r  r  r  )rF   rT  rU  s      rJ   %test_exception_if_confg_file_is_empty4ConfigFileTest.test_exception_if_confg_file_is_empty  sH    !!vF
,(A(A2F
		"ro   c                 b    U R                  [        [        R                  R                  S5        g )Nfilenotfound)r]  FileNotFoundErrorr    r  r  rs   s    rJ   ,test_exception_if_config_file_does_not_exist;ConfigFileTest.test_exception_if_config_file_does_not_exist  s    +W^^-F-FWro   c                    [         R                  " S5      R                  5       n[        R                  " SSS9u  p# [
        R                  " X!R                  S5      5        [
        R                  " U5        [        R                  R                  US[        SSS	S
SSS.0S9S9  [
        R                  " U5        g ! [
        R                  " U5        f = f)Nat  
            [formatters]
            keys=default

            [formatter_default]

            [handlers]
            keys=console

            [handler_console]
            class=logging.StreamHandler
            args=tuple()

            [loggers]
            keys=root

            [logger_root]
            formatter=default
            handlers=console
            test_logging_r_  r`  asciirh  rq   FrZ  z5%(asctime)s [%(process)d] [%(levelname)s] %(message)sz[%Y-%m-%d %H:%M:%S %z]zlogging.Formatter)r[  datefmtclass)versionrP  
formatters)rj  defaults)r  r  striprO  rP  rQ  r  encoderN   r    r  r  dictrt  )rF   inirT  rU  s       rJ   !test_defaults_do_no_interpolation0ConfigFileTest.test_defaults_do_no_interpolation   s    oo  & ' 	( !!H	HHRG,-HHRLNN%% -2!&]'?%8$ 
 &   IIbMBIIbMs   A)B= =Cr|   N)'rw   rx   ry   rz   r
   r>  r[   r  config1r4  r?  r  r  r  r'  r,  r6  r@  rI  rQ  r  r  r  r  r  r  r"  r(  r-  r9  rB  rL  rS  rX  r[  rb  rg  ru  r{   r|   ro   rJ   r  r  	  s    !0 I I,G4G@H@ oolL9G oo/1LMG* +*+G6 oo35RSG'GT#GLG,G2L*D&&$ &- &FF&22)&V7$8*H0I6X*ro   r  c                   :    \ rS rSr\rSrS rS rS r	S r
S rSrg	)
SocketHandlerTesti-  rq  r   c                 
   [         R                  U 5        S =U l        =U l        U l         U R                  U R                  U R                  S5      =U l        nUR                  5         UR                  R                  5         [        R                  R                  n[        UR                   ["        5      (       a  U" SUR$                  5      U l        OU" UR                   S 5      U l        SU l        U R(                  R+                  U R(                  R                  S   5        U R(                  R-                  U R                  5        [.        R0                  " S5      U l        g ! [         a  nX l         S nAg S nAff = fN{Gz?rq  r   r   )r   rK   rV  	sock_hdlrserver_exceptionserver_classaddresshandle_socketr  r  r=  r  r    rB   SocketHandler
isinstanceserver_addressrc   r  
log_outputr3   rO   rD   r  	Semaphorer  rF   rV  re  hclss       rJ   rK   SocketHandlerTest.setUp6  s-    	t?CCCdnt'<	#'#4#4T\\595G5G$O ODK&LLN 	--f++U33!+v{{;DN!&"7"7>DN&&t'7'7'@'@'CD##DNN3 **1-  	$%!	s   >E( (
F2E==Fc                 Z    U R                   (       a?  U R                  R                  U R                   5        U R                   R                  5         U R                  (       a  U R                  R                  5         [        R                  U 5        g ! [        R                  U 5        f = fr   )r~  r3   rO   rN   rV  r8  r   rV   rs   s    rJ   rV   SocketHandlerTest.tearDownP  sj    	$~~  ..t~~>$$&{{  "d#Hd#   A;B B*c                    UR                   n UR                  S5      n[        U5      S:  a  g [        R                  " SU5      S   nUR                  U5      n[        U5      U:  a0  X2R                  U[        U5      -
  5      -   n[        U5      U:  a  M0  [
        R                  " U5      n[        R                  " U5      nU =R                  UR                  S-   -  sl	        U R                  R                  5         M  )Nr  >Lr   
)
connectionrecvr_   structunpackpickleloadsr    r   r  r  r  release)rF   requestconnchunkslenobjr   s          rJ   r  SocketHandlerTest.handle_socket[  s    !!IIaLE5zA~==u-a0DIIdOEe*t#		$U*; << e*t#,,u%C**3/FOOvzzD00OLL  " ro   c                 l   U R                   (       a  U R                  U R                   5        [        R                  " S5      nUR	                  S5        U R
                  R                  5         UR                  S5        U R
                  R                  5         U R                  U R                  S5        g )Ntcpr   eggs
spam
eggs
)
r  skipTestr    r!   r   r  acquirer   r^   r  rR  s     rJ   test_outputSocketHandlerTest.test_outputj  sy      MM$//0""5)VV.9ro   c                 b   U R                   (       a  U R                  U R                   5        SU R                  l        U R                  R                  5          [        S5      e! [         a    U R                  R                  S5         Of = fU R                  R                  S5        [        R                  " 5       nU R                  U R                  R                  U5        [        R                  " U R                  R                  U-
  S-   5        U R                  R                  S5        g )Ng      @zDeliberate mistakez
Never sentzNever sent, eitherr  zNor this)r  r  r~  
retryStartrV  r8  r  r3   r  r   r  r  	retryTimer  )rF   nows     rJ   test_noserverSocketHandlerTest.test_noserveru  s      MM$//0 %(!	5344 	5&&|4	534iik4>>33S9

4>>++c1E9:z*s   A$ $%BBr  r  rV  r  r~  N)rw   rx   ry   rz   rj  r  r  rK   rV   r  r  r  r{   r|   ro   rJ   ry  ry  -  s'     !LG.4	$#	:+ro   ry  zUnix sockets requiredc                   :    \ rS rSr\" \S5      (       a  \rS rSr	g)UnixSocketHandlerTesti  r  c                     [         R                  " 5       U l        U R                  [        R
                  U R                  5        [        R                  U 5        g r   )r   create_unix_domain_namer  r   r   rt  ry  rK   rs   s    rJ   rK   UnixSocketHandlerTest.setUp  8    $<<>	(($,,7%ro   r  N)
rw   rx   ry   rz   hasattrr  r  r  rK   r{   r|   ro   rJ   r  r    s    
 vy!!+&ro   r  c                   4    \ rS rSr\rSrS rS rS r	S r
Srg)	DatagramHandlerTesti  rz  c                    [         R                  U 5        S =U l        =U l        U l         U R                  U R                  U R                  S5      =U l        nUR                  5         UR                  R                  5         [        R                  R                  n[        UR                   ["        5      (       a  U" SUR$                  5      U l        OU" UR                   S 5      U l        SU l        U R(                  R+                  U R(                  R                  S   5        U R(                  R-                  U R                  5        [.        R0                  " 5       U l        g ! [         a  nX l         S nAg S nAff = fr|  )r   rK   rV  r~  r  r  r  handle_datagramr  r  r=  r  r    rB   DatagramHandlerr  r  rc   r  r  r3   rO   rD   r  r  r  r  s       rJ   rK   DatagramHandlerTest.setUp  s)    	t?CCCdnt'<	#'#4#4T\\595I5I4$Q QDK&LLN 	//f++U33!+v{{;DN!&"7"7>DN&&t'7'7'@'@'CD##DNN3 (  	$%!	s   >E' '
F1E<<Fc                 Z    U R                   (       a  U R                   R                  5         U R                  (       a?  U R                  R	                  U R                  5        U R                  R                  5         [        R                  U 5        g ! [        R                  U 5        f = fr   )rV  r8  r~  r3   rO   rN   r   rV   rs   s    rJ   rV   DatagramHandlerTest.tearDown  sj    	${{  "~~  ..t~~>$$&d#Hd#r  c                 2   [         R                  " SS5      nUR                  [        U5      S  n[        R
                  " U5      n[        R                  " U5      nU =R                  UR                  S-   -  sl        U R                  R                  5         g )Nr  r   r  )r  packpacketr_   r  r  r    r   r  r  r  r2  )rF   r  r  r  r  r   s         rJ   r  #DatagramHandlerTest.handle_datagram  sk    {{4#D	
+ll6"&&s+6::,,ro   c                    U R                   (       a  U R                  U R                   5        [        R                  " S5      nUR	                  S5        U R
                  R                  5         U R
                  R                  5         UR	                  S5        U R
                  R                  5         U R                  U R                  S5        g )Nudpr   r  r  )
r  r  r    r!   r   r  r  rP   r^   r  rR  s     rJ   r  DatagramHandlerTest.test_output  s      MM$//0""5)VV.9ro   r  N)rw   rx   ry   rz   r{  r  r  rK   rV   r  r  r{   r|   ro   rJ   r  r    s"     !LG)4	$
:ro   r  c                   :    \ rS rSr\" \S5      (       a  \rS rSr	g)UnixDatagramHandlerTesti  r  c                     [         R                  " 5       U l        U R                  [        R
                  U R                  5        [        R                  U 5        g r   )r   r  r  r   r   rt  r  rK   rs   s    rJ   rK   UnixDatagramHandlerTest.setUp  s8    $<<>	(($,,7!!$'ro   r  N
rw   rx   ry   rz   r  r  r  r  rK   r{   r|   ro   rJ   r  r    s    
 vy!!-(ro   r  c                   :    \ rS rSr\rSrS rS rS r	S r
S rSrg	)
SysLogHandlerTesti  rz  c                 "   [         R                  U 5        S =U l        =U l        U l         U R                  U R                  U R                  S5      =U l        nUR                  5         UR                  R                  5         [        R                  R                  n[        UR                   ["        5      (       a'  U" UR                   S   UR$                  45      U l        OU" UR                   5      U l        SU l        U R(                  R+                  U R(                  R                  S   5        U R(                  R-                  U R                  5        [.        R0                  " 5       U l        g ! [         a  nX l         S nAg S nAff = f)Nr}  r   ro   )r   rK   rV  sl_hdlrr  r  r  r  r  r  r=  r  r    rB   r|  r  r  rc   r  r  r3   rO   rD   r  r  r  r  s       rJ   rK   SysLogHandlerTest.setUp  s5    	t=AAAdlT%:	#'#4#4T\\595I5I4$Q QDK&LLN 	--f++U33!6!6q!96;; GHDL 5 56DL&&t'7'7'@'@'CD##DLL1 (  	$%!	s   >E4 4
F>F		Fc                 Z    U R                   (       a  U R                   R                  5         U R                  (       a?  U R                  R	                  U R                  5        U R                  R                  5         [        R                  U 5        g ! [        R                  U 5        f = fr   )rV  r8  r  r3   rO   rN   r   rV   rs   s    rJ   rV   SysLogHandlerTest.tearDown
  sj    	${{  "||  ..t||<""$d#Hd#r  c                 Z    UR                   U l        U R                  R                  5         g r   )r  r  r  r2  )rF   r  s     rJ   r  !SysLogHandlerTest.handle_datagram  s    !..ro   c                 8   U R                   (       a  U R                  U R                   5        [        R                  " S5      nUR	                  S5        U R
                  R                  [        R                  5        U R                  U R                  S5        U R
                  R                  5         SU R                  l        UR	                  S5        U R
                  R                  [        R                  5        U R                  U R                  S5        U R
                  R                  5         SU R                  l        UR	                  S5        U R
                  R                  [        R                  5        U R                  U R                  S5        g )Nslh   späm
   <11>späm Fs	   <11>spämu   häm-s   <11>häm-späm)r  r  r    r!   r   r  r  r   r  r^   r  rP   r  
append_nulidentrR  s     rJ   r  SysLogHandlerTest.test_output  s     MM$//0""5)Y'../*@A"'Y'../*<=&Y'../*GHro   c                 D   [         R                  " S5      nU R                  R                  5         U R                  R                  5         UR                  S5        U R                  R                  [        R                  5        U R                  U R                  S5        g )Nr  r  r  )r    r!   r  rN   r  rP   r   r  r   r  r^   r  rR  s     rJ   test_udp_reconnection'SysLogHandlerTest.test_udp_reconnection,  sk    ""5)Y'../*@Aro   )r  r  rV  r  r  N)rw   rx   ry   rz   r{  r  r  rK   rV   r  r  r  r{   r|   ro   rJ   r  r    s)     !LG)4	$I&Bro   r  c                   :    \ rS rSr\" \S5      (       a  \rS rSr	g)UnixSysLogHandlerTesti4  r  c                     [         R                  " 5       U l        U R                  [        R
                  U R                  5        [        R                  U 5        g r   )r   r  r  r   r   rt  r  rK   rs   s    rJ   rK   UnixSysLogHandlerTest.setUp<  r  ro   r  Nr  r|   ro   rJ   r  r  4  s    
 vy!!-&ro   r  z$IPv6 support required for this test.c                   <   ^  \ rS rSr\rSrU 4S jrU 4S jrSr	U =r
$ )IPv6SysLogHandlerTestiB  )z::1r   c                 h   > [         R                  U R                  l        [        [
        U ]  5         g r   )r  AF_INET6r  r  r  r  rK   r  s    rJ   rK   IPv6SysLogHandlerTest.setUpK  s#    +1??(#T02ro   c                 h   > [         R                  U R                  l        [        [
        U ]  5         g r   )r  AF_INETr  r  r  r  rV   r  s    rJ   rV   IPv6SysLogHandlerTest.tearDownO  s#    +1>>(#T35ro   r|   )rw   rx   ry   rz   r{  r  r  rK   rV   r{   r  r  s   @rJ   r  r  B  s     !LG36 6ro   r  c                   &    \ rS rSrS rS rS rSrg)HTTPHandlerTestiS  c                 b    [         R                  U 5        [        R                  " 5       U l        g r   )r   rK   r  r  r  rs   s    rJ   rK   HTTPHandlerTest.setUpX  s     	t (ro   c                 ~   UR                   U l         [        UR                  5      U l        U R                   S:X  a9   [	        UR
                  S   5      nUR                  R                  U5      U l        UR                  S5        UR                  5         U R                  R                  5         g !   S U l         NG= f)Nro  zContent-Length   )commandr   rz  log_dataintheadersrfilere   	post_datasend_responseend_headersr  r2  )rF   r  rlens      rJ   handle_requestHTTPHandlerTest.handle_request^  s     .<<6!&7??+;<=!(!3!3D!9 	c"	&!%s   8B1 1	B<c           	         [         R                  " S5      nU R                  nUR                  U R                  R                  S   5        S GH  nSnU(       a   SS Kn[        R                  R                  [        5      n[        R                  R                  USS5      nUR                  UR                  5      nUR                  U5        UR                  US9n	OS nS n	[!        X@R"                  SUS	9=U l        n
U
R'                  5         U
R(                  R+                  5         S
U
R,                  -  nU=(       a    Un[         R                  R/                  USUW	SS9U l        S U l        UR5                  U R0                  5        S GHJ  nXR0                  l        U R8                  R;                  5         SnUR=                  U5        U R8                  R+                  [>        R@                  5      nU RC                  US5        U RE                  U R2                  R                  S5        U RE                  U RF                  U5        US:X  a   [I        U R2                  RJ                  5      nO$[I        U RL                  RO                  S5      5      nU RE                  US   S/5        U RE                  US   S/5        U RE                  US   U/5        GMM     U R$                  RQ                  5         U R                  R                  U R0                  5        U R0                  RS                  5         GM     g ! [         a    S n GNgf = f)Nhttpr   r  rz  certdatazkeycert.pem)cafiler}  rh  zlocalhost:%dz/frob)foobar)securecontextcredentials)rn  ro  r  zHTTP request timed outrn  rh  rH   funcNamer  r  )*r    r!   r3   rO   rB   sslrQ  rz  dirname__file__r   
SSLContextPROTOCOL_TLS_SERVERload_cert_chaincreate_default_contextImportErrorrH  r  rV  r  r=  r  server_portr  h_hdlrr  rD   r  r  rP   r   r   SHORT_TIMEOUTrE   r^   r  r   queryr  decoder8  rN   )rF   r  r3   r  r  r  herelocalhost_certr^  r   rV  hostsecure_clientr  r  r  ds                    rJ   r  HTTPHandlerTest.test_outputk  s   ""6*&&!!$"2"2";";A">?#F#D
P 77??84D%'WW\\$
M%RN ^^C,C,CDF**>:!888OG#1$8K8K48$I IDK&LLNLL!F$6$66D"-vM!**66tW>K?FCQ 7 SDK !DM""4;;/)%+"""$S!,,++G,A,AB)AB  !3!3W=  v6U? !4!45A !6!6w!?@A  6VH5  :@  5C51 *" KK**4;;7KKc $
 # "!F"s   L;;M
M)r  r  r  r  r  rV  N)rw   rx   ry   rz   rK   r  r  r{   r|   ro   rJ   r  r  S  s    
)6 ro   r  c                   ,    \ rS rSrS rS rS rS rSrg)
MemoryTesti  c                 <    [         R                  U 5        0 U l        g r   )r   rK   
_survivorsrs   s    rJ   rK   MemoryTest.setUp  s    tro   c                     U H<  n[        U5      [        U5      4n[        R                  " U5      U R                  U'   M>     g r   )r-  r  r  r  r  )rF   rR  r  keys       rJ   _watch_for_survivalMemoryTest._watch_for_survival  s7     CS'49$C#*;;s#3DOOC  ro   c                     [         R                  " 5         / nU R                  R                  5        H#  u  u  p#nU" 5       b  M  UR	                  U5        M%     U(       a/  U R                  S[        U5      SR                  U5      4-  5        g g )Nz;%d objects should have survived but have been destroyed: %sz, )gccollectr  r  r  rb   r_   r   )rF   deadid_repr_r  s        rJ   _assertTruesurvivalMemoryTest._assertTruesurvival  sy     	

!%!6!6!8LS#u}E" "9 II .14TDIIdO0LM N ro   c                 H   U R                   R                  [        R                  5        [        R                  " S5      nU R                  U5        UR                  [        R                  5        U R                   R                  U R                  5       5        UR                  U R                  5       5        U R                  S/5        AU R                  5         [        R                  " S5      nUR                  U R                  5       5        U R                  SS/5        g )Nr  )r  r:   r   )r  r:   r   )r3   r9   r    r   r!   r  r:   r   rt   rm   r%  )rF   r  r  s      rJ   test_persistent_loggers"MemoryTest.test_persistent_loggers  s     	!!',,/&  %W]]#t0023		$##%&!
 	   "&		$##%&!!
 	ro   )r  N)	rw   rx   ry   rz   rK   r  r%  r(  r{   r|   ro   rJ   r  r    s    
4
Nro   r  c                        \ rS rSrS rS rSrg)EncodingTesti  c                     [         R                  " S5      n[        SS5      nSn [         R                  " USS9nUR	                  U5         UR                  U5        UR                  U5        UR                  5         [        USS9n U R                  UR                  5       R                  5       U5        UR                  5          [        R                  R                  U5      (       a  [        R                  " U5        g g ! UR                  U5        UR                  5         f = f! UR                  5         f = f! [        R                  R                  U5      (       a  [        R                  " U5        f f = f)NrE  r  ztest_logging-1-u   foorh  r  )r    r!   rV  r  rD   r   rO   rN   r  r^   re   rstriprQ  rz  isfiler  )rF   r   rU  r  r   r   s         rJ   test_encoding_plain_file%EncodingTest.test_encoding_plain_file  s   'F$56	))"w?GNN7# D!!!'*R'*A  !2D9	ww~~b!!		" " !!'* 	ww~~b!!		" "s;   &E  D +E  
.D+ 8E  #D((E  +D==E   =E=c                    [         R                  " S5      nSn[        R                  " S5      nSUl        [
        R                  " 5       nU" US5      n[         R                  " U5      nUR                  U5         UR                  U5        UR                  U5        UR                  5         UR                  5       nU R                  US5        g ! UR                  U5        UR                  5         f = f)NrE  u   до свиданияcp1251stricts    
)r    r!   codecs	getwriterrj  r6   BytesIOr;   rD   r   rO   rN   r\   r^   )rF   r   messagewriter_classr8   writerr   rl   s           rJ   test_encoding_cyrillic_unicode+EncodingTest.test_encoding_cyrillic_unicode  s    'Q''1 (fh/''/w	KK g&MMOOOJK g&MMOs   <C #C4r|   N)rw   rx   ry   rz   r/  r:  r{   r|   ro   rJ   r+  r+    s    2Lro   r+  c                        \ rS rSrS rS rSrg)WarningsTesti	  c           	      @   [         R                  " 5          [        R                  " S5        U R	                  [        R                  S5        [         R
                  " S[        S9  [        R                  " 5       n[        R                  " U5      n[        R                  " S5      nUR                  U5        [         R                  " S5        UR                  U5        UR                  5       nUR                  5         U R!                  UR#                  S5      S5        [        R                  " 5       n[         R$                  " S	[        S
SUS5        UR                  5       nUR                  5         U R'                  US5        S S S 5        g ! , (       d  f       g = f)NTFalways)categorypy.warningszI'm warning you...z UserWarning: I'm warning you...
r   Explicitdummy.py*   z
Dummy linez0dummy.py:42: UserWarning: Explicit
  Dummy line
)warningscatch_warningsr    captureWarningsr   filterwarningsUserWarningr6   r7   r;   r!   rD   warnrO   r\   rN   r  findshowwarningr^   )rF   r8   rU   r  rl   a_files         rJ   test_warningsWarningsTest.test_warnings		  s    $$&##D)OOG33U;##H{C[[]F%%f-A&&}5Fa MM./  #!AGGIqvv&IJAN [[]F  [*b!'7!ALLNQDF) '&&s   E0F
Fc                    [         R                  " 5          [        R                  " S5        U R	                  [        R                  S5        [        R
                  " S5      nU R                  UR                  / 5        [         R                  " S[        SS5        U R                  [        UR                  5      S5        U R                  UR                  S   [        R                  5        S S S 5        g ! , (       d  f       g = f)	NTFrA  rB  rC  rD  rq   r   )rE  rF  r    rG  r   r!   r^   rB   rL  rI  r_   assertIsInstanceNullHandlerrR  s     rJ   test_warnings_no_handlers&WarningsTest.test_warnings_no_handlers!	  s    $$&##D)OOG33U; &&}5FV__b1  [*bIS115!!&//!"4g6I6IJ '&&s   CC77
Dr|   N)rw   rx   ry   rz   rN  rS  r{   r|   ro   rJ   r=  r=  	  s    F0Kro   r=  c                 .    [         R                  " X5      $ r   )r    r=   )r[  rl  s     rJ   
formatFuncrV  /	  s    V--ro   c                       \ rS rSrSS jrSrg)myCustomFormatteri2	  Nc                     g r   r|   )rF   fmtrl  s      rJ   r  myCustomFormatter.__init__3	      ro   r|   r   )rw   rx   ry   rz   r  r{   r|   ro   rJ   rX  rX  2	  s    ro   rX  c                  ,    [         R                  " 5       $ r   )r    r;   r|   ro   rJ   handlerFuncr^  6	  s      ""ro   c                       \ rS rSrSrg)CustomHandleri9	  r|   Nrw   rx   ry   rz   r{   r|   ro   rJ   r`  r`  9	      ro   r`  c                       \ rS rSrSrg)CustomListeneri<	  r|   Nra  r|   ro   rJ   rd  rd  <	  rb  ro   rd  c                       \ rS rSrSrg)CustomQueuei?	  r|   Nra  r|   ro   rJ   rf  rf  ?	  rb  ro   rf  c                   $    \ rS rSrSS jrS rSrg)CustomQueueProtocoliB	  c                 :    [         R                  " U5      U l         g r   queueQueue)rF   maxsizes     rJ   r  CustomQueueProtocol.__init__C	  s    [[)
ro   c                 D    [         R                  U S5      n[        X!5      $ )Nrk  )object__getattribute__r0   )rF   	attributerk  s      rJ   rR  CustomQueueProtocol.__getattr__F	  s    ''g6u((ro   )rk  N)r   )rw   rx   ry   rz   r  rR  r{   r|   ro   rJ   rh  rh  B	  s    *)ro   rh  c                       \ rS rSrS rSrg)CustomQueueFakeProtocoliJ	  c                     g r   r|   rs   s    rJ   
put_nowait"CustomQueueFakeProtocol.put_nowaitR	  r\  ro   r|   Nrw   rx   ry   rz   rw  r{   r|   ro   rJ   ru  ru  J	  s    ro   ru  c                       \ rS rSrSrSrg)CustomQueueWrongProtocoliU	  Nr|   ry  r|   ro   rJ   r{  r{  U	  s    Jro   r{  c                        \ rS rSrS rS rSrg)MinimalQueueProtocoliX	  c                     g r   r|   )rF   xs     rJ   rw  MinimalQueueProtocol.put_nowaitY	  s    Tro   c                     g r   r|   rs   s    rJ   getMinimalQueueProtocol.getZ	  s    4ro   r|   N)rw   rx   ry   rz   rw  r  r{   r|   ro   rJ   r}  r}  X	  s    !ro   r}  c                  ,    [         R                  " 5       $ r   rj  r|   ro   rJ   
queueMakerr  \	  s    ;;=ro   c                    ^ U4S jnU$ )Nc                 F   > UR                  ST5        [        U /UQ70 UD6$ )Nrespect_handler_level)
setdefaultrd  )rk  rB   rS  r  s      rJ   funclistenerMaker.<locals>.func`	  s*    13HIe9h9&99ro   r|   )arg1arg2r  r  s     ` rJ   listenerMakerr  _	  s    : Kro   c            
       
   \ rS rSr\R
                  rSrSSSS00SSSS	S
S.0SS/S.S.rSSSS00SSSS	S
S.0SSS/S.0SS0S.rSSSS00SSSS	S
S.0SSS00SS/S.S.r	SSSS00SSSS	SS.0SSS/S.0SS0S.r
SSSS00SSSSS
S.0SSS/S.0SS0S.rSSSS00SSSS	S
S.0SSS/S.0SS0S.rSSSS00SSSS	S
S.0SSS/S.0SS0S.rSS\ S-   SS.0SSSS	S
S.0S	S/S.S.rS\SS.\ S-   SS.\SS.S.SSS	S
S.S\0S.S	S/S.S.rSSSS00S\ S-   SS	S
S.0SSS/S.0SS0S.rSSSS00S\ S-   SS	S
SS .0SSS/S.0SS0S.rSSSS00SSSS	S
S.0S!SS/S.0SS0S.rSS"SSS00SSSS	S
S.0SS/S.0 S#.SS0S$.rSS%SSS00SSSS	S
S.0SS/S.0 S#.SS0S$.rSSSS00SSSSS
S.0SSS/S.0SS	0S.rSS%SSS00SSS&00S'.rSS%SSS&00SSS&00S'.rSSSS00S(S)S00SSSS	S
S(/S*.0SSS(/S+.0SS/S.S,.rSSSS00SSSS	S
S.0S-SS.0SSS/S.0SS0S/.rSSS00SSSS	S
S.0S-SS.0SSS/S.0SS0S0.rS1SSS00SSSS	S
S.0S-SS.0SSS/S.0SS0S/.rSSSS00SSSS	S
S2S3S4.S5.0SS/S.S.rSSS6S7S80S9.0SSSS	S
S.0SS/S.S.r  " S: S;\!RD                  5      r#SS<\#S=S>S?S@SA0SB.0SSS<S	S
S.0SS/S.S.r$SSSSC.SDSESFSSGSH.SI.SJSSK/SLSM.0SN.r%SSOSPSQSR.0SSSOSS.SDSESOSTSSU.SV.SJSSW/SLSM.0SX.r&SS\ S-   SS"SY.0SSSS	S
S.0SZSS/SLSM.0SX.r'SS\ S-   SS"S[.0SSSS	S
S.0SZSS/SLSM.0SX.r(SS\ S\-   SS"S[.0SSSS	S
S.0SZSS/SLSM.0SX.r)SS\SS"SY.0SSSS	S
S.0SZSS/SLSM.0SX.r*SS\S]S7S^0S_.0SSSS	S
S.0SZSS/SLSM.0SX.r+SS`Sa0SbSc/Sd.Se.SSf/S.Sg.r,Sh r-Si r.Sj r/\4Sk jr0Sl r1Sm r2Sn r3So r4Sp r5Sq r6Sr r7Ss r8St r9Su r:Sv r;Sw r<Sx r=Sy r>Sz r?S{ r@S| rAS} rBS~ rCS rDS rESS jrF\GR                  " 5       S 5       rI\GR                  " 5       S 5       rJ\GR                  " 5       S 5       rKS rLS rMS rNS rOS rPS rQS rRS rSS rTS rUS rVS rWS rXS rYS rZ\[R                  " 5       \GR                  " 5       S 5       5       r^S r_\[R                  " 5       \GR                  " 5       \`" S5      S 5       5       5       ra\`" S5      S 5       rb\c\GR                  " 5       \dR                  " \GR                  S5      S 5       5       5       rg\c\GR                  " 5       \dR                  " \GR                  S5      S 5       5       5       rh\iS 5       rj\c\GR                  " 5       S 5       5       rkS rlS rmS rnSrog)ConfigDictTestie	  r  rq   form1r[  z%(levelname)s ++ %(message)srV  logging.StreamHandlerr   zext://sys.stdout)rm  rJ  r  r8   r   r  rB   )rn  ro  rB   rA  r  r:   r  )rn  ro  rB   loggersrA  zext://sys.stdboutNTOSETWRANINGmisspelled_namez.ExceptionFormatterz"%(levelname)s:%(name)s:%(message)s)()r[  z.formatFunc)r  form2form3r  )rV  hand2z.CustomHandlerzinvalid parameter name)rm  rJ  r  r8   r   r2  F)compilerr2  )rn  rP  ro  rB   r  rA  Tr   )rn  incrementalrB   r  filt1rH   )rm  rJ  r  r8   filtersr  r  )rn  ro  r  rB   r  rA  zcfg://true_formatterszcfg://handler_configs[hand1])rn  true_formattershandler_configsro  rB   r  rA  )r  r  ro  rB   r  rA  r   r  !
)r  
terminator)rm  rJ  r  r8   r   z%(message)s ++ %(customfield)srH  defaultvalue)r[  rp  c                   ,   ^  \ rS rSrSrU 4S jrSrU =r$ )ConfigDictTest.CustomFormatteri  r   c                 "   > [         TU ]  U5      $ r   )r  r[  rF   r   r  s     rJ   r[  %ConfigDictTest.CustomFormatter.format  s    7>&))ro   r|   )rw   rx   ry   rz   custom_propertyr[  r{   r  r  s   @rJ   CustomFormatterr    s    	* 	*ro   r  custom{%Y-%m-%d %H:%M:%S	{message}r  value)r  stylerl  r[  r   )rm  r  zlogging.handlers.MemoryHandler   consoler   )rm  capacityr  r  
flushLevel)r  	bufferingmymoduler  true)r  rB   r  )rn  rB   r  mySimpleFormatterz1%(asctime)s (%(name)s) %(levelname)s: %(message)s$)r[  r  )rm  r  rJ  
fileGlobal)rm  r  rJ  r  r  )r  bufferGlobalr  )rn  ro  rB   r  )r  r[  validatemy_test_logger_custom_formatter)rm  r[  r  z.myCustomFormatterz2%(levelname)s:%(name)s:%(message)s:%(customfield)smyvalue)r  r[  rp  rm  logging.FileHandlerlogging.handlers.QueueHandlerh1)rm  rB   )r  ahr  rn  rB   rA  c                 B    [         R                  R                  U5        g r   )r    r  
dictConfig)rF   r  s     rJ   r  ConfigDictTest.apply_config  s    !!$'ro   c                 R    [         R                  " U5      nU R                  X25        g r   )r    getHandlerByNamerQ  )rF   rH   r  rU   s       rJ   check_handlerConfigDictTest.check_handler  s     $$T*a%ro   c                    [         R                  " 5        nU R                  U R                  5        U R	                  S[
        R                  5        [
        R                  " 5       nUR                  U R                  5       5        UR                  U R                  5       5        U R                  S/US9  U R                  / 5        S S S 5        g ! , (       d  f       g = f)NrV  r  r  )r   r  r  r  r  r    r;   r!   r   rt   r   rm   r  s      rJ   r  ConfigDictTest.test_config0_ok  s    $$&&dll+w(=(=>&&(FKK))+,LL**,-!!# "  !!"% '&&s   B1C
Cc                 r   [         R                  " 5        nU R                  U5        [        R                  " S5      nUR                  U R                  5       5        UR                  U R                  5       5        U R                  SS/US9  U R                  / 5        S S S 5        g ! , (       d  f       g = fr  r	  r
  s       rJ   r  ConfigDictTest.test_config1_ok  r  r  c                 Z    U R                  [        U R                  U R                  5        g r   r  rs   s    rJ   r  #ConfigDictTest.test_config2_failure  r  ro   c                 Z    U R                  [        U R                  U R                  5        g r   )r]  r  r  config2ars   s    rJ   test_config2a_failure$ConfigDictTest.test_config2a_failure      )T%6%6Fro   c                 Z    U R                  [        U R                  U R                  5        g r   )r]  r  r  config2brs   s    rJ   test_config2b_failure$ConfigDictTest.test_config2b_failure  r  ro   c                 Z    U R                  [        U R                  U R                  5        g r   r  rs   s    rJ   r  #ConfigDictTest.test_config3_failure  r  ro   c                    [         R                  " 5        nU R                  U R                  5        U R	                  S[
        R                  5         [        5       e! [         a    [
        R                  " S5         Of = f[        R                  R                  S5        U R                  UR                  5       S5        U R                  / 5        S S S 5        g ! , (       d  f       g = f)NrV  r  r   r  )r   r  r  r  r  r    r;   r  r  rr  r   r!  r^   r\   rm   rF   r  s     rJ   r"  ConfigDictTest.test_config4_ok  s    $$&&dll+w(=(=>2"n$ 2!!.12JJOOAV__.AC !!"% '&&s*   <C
A B =C?B  AC
C*c                    [         R                  " 5        nU R                  U R                  5         [	        5       e! [         a    [
        R                  " S5         Of = f[        R                  R                  S5        U R                  UR                  5       S5        U R                  / 5        S S S 5        g ! , (       d  f       g = fr  )r   r  r  config4ar  r    r  rr  r   r!  r^   r\   rm   r  s     rJ   test_config4a_okConfigDictTest.test_config4a_ok  s    $$&&dmm,2"n$ 2!!.12JJOOAV__.AC !!"% '&&s'   B<
= A B<A  AB<<
C
c                 b    U R                  U R                  S9  U R                  S[        5        g )Nr&  rV  )r  r'  r  r`  rs   s    rJ   r(  ConfigDictTest.test_config5_ok  s'    DLL17M2ro   c                 Z    U R                  [        U R                  U R                  5        g r   )r]  r  r  r,  rs   s    rJ   test_config6_failure#ConfigDictTest.test_config6_failure"  s    )T%6%6Ero   c                    [         R                  " 5        nU R                  U R                  5        [        R
                  " S5      nUR                  U R                  5       5        UR                  U R                  5       5        U R                  SS/US9  U R                  / 5        S S S 5        [         R                  " 5        nU R                  U R                  5        U R                  S[        R                  5        [        R
                  " S5      nU R                  UR                  5        [        R
                  " S5      nUR                  U R                  5       5        UR                  U R                  5       5        U R                  SS/US9  U R                  / 5        S S S 5        g ! , (       d  f       GN= f! , (       d  f       g = f)	Nr  r  r  r  rV  r2  r   r   r   r   )r   r  r  rw  r    r!   r   rt   r   rm   r6  r  r;   rE   r   r  s      rJ   r9  ConfigDictTest.test_config7_ok%  sv   $$&&dll+&&'89FKK))+,LL**,-!!#  " 
 !!"% ' $$&&dll+w(=(=>&&'89FOOFOO,&&'78FKK))+,LL**,-!!#  " 
 !!"% '& '& '&s   BF3C$G3
G
Gc                 (   [         R                  " 5        nU R                  U R                  5        [        R
                  " S5      nUR                  U R                  5       5        UR                  U R                  5       5        U R                  SS/US9  U R                  / 5        S S S 5        [         R                  " 5        nU R                  U R                  5        U R                  S[        R                  5        [        R
                  " S5      nU R                  UR                  5        UR                  U R                  5       5        UR                  U R                  5       5        [        R
                  " S5      nUR                  U R                  5       5        UR                  U R                  5       5        U R                  / SQUS9  U R                  / 5        S S S 5        g ! , (       d  f       GNO= f! , (       d  f       g = f)Nr  r  r  r  rV  r2  )r  r  r   r   r   r   )r   r  r  rw  r    r!   r   rt   r   rm   r@  r  r;   ry  r   r  s      rJ   test_config_8_okConfigDictTest.test_config_8_okC  s   $$&&dll+&&'89FKK))+,LL**,-!!#  " 
 !!"% ' $$&&dll+w(=(=>&&'89FV__-KK))+,LL**,-&&'78FKK))+,LL**,-!! #
  "  !!"%' '& '& '&s   BG1D"H1
H 
Hc                    [         R                  " 5        nU R                  U R                  5        U R	                  S[
        R                  5        [
        R                  " S5      n[
        R                  " S5      nUR                  U R                  5       5        UR                  U R                  5       5        UR                  U R                  5       5        U R                  / SQUS9  U R                  / 5        S S S 5        [         R                  " 5        nU R                  U R                  5        U R	                  S[
        R                  5        [
        R                  " S5      nU R                  UR                  5        UR                  U R                  5       5        UR                  U R                  5       5        [
        R                  " S5      nUR                  U R                  5       5        UR                  U R                  5       5        WR                  U R                  5       5        U R                  / SQUS9  U R                  / 5        S S S 5        g ! , (       d  f       GNn= f! , (       d  f       g = f)NrV  r  r0  r1  r  r2  r3  )r   r  r  r4  r  r    r;   r!   r   rt   r   r5  rm   config8ary  r   r7  s       rJ   test_config_8a_ok ConfigDictTest.test_config_8a_oke  s   $$&&dmm,w(=(=>&&'89F !**+@AJKK))+,LL**,- 1 1 34!! # 	 "  !!"%) '* $$&&dmm,w(=(=>&&'89FV__-KK))+,LL**,-&&'78FKK))+,LL**,- 1 1 34!! #
  "  !!"%+ '&+ '&* '&s   C(I%EI7%
I47
Jc                    [         R                  " 5        nU R                  U R                  5        U R	                  S[
        R                  5        [
        R                  " S5      nUR                  U R                  5       5        U R                  / US9  U R                  U R                  5        UR                  U R                  5       5        U R                  / US9  U R                  U R                  5        UR                  U R                  5       5        U R                  S/US9  S S S 5        g ! , (       d  f       g = f)NrV  r  r  r  )r   r  r  rI  r  r    r;   r!   r   rt   rm   config9aconfig9br  s      rJ   test_config_9_okConfigDictTest.test_config_9_ok  s    $$&&dll+w(=(=>&&'89FKK))+,!!"V!4dmm,KK))+,!!"V!4dmm,KK))+,!!# "  '&&s   DD55
Ec                    [         R                  " 5        nU R                  U R                  5        U R	                  S[
        R                  5        [
        R                  " S5      nUR                  U R                  5       5        [
        R                  " S5      nUR                  U R                  5       5        [
        R                  " S5      nUR                  U R                  5       5        [
        R                  " S5      nUR                  U R                  5       5        U R                  SS/US9  S S S 5        g ! , (       d  f       g = f	NrV  r  r  r2  zcompiler.parser.codegen)r   r   r  r  )r   r  r  config10r  r    r;   r!   r   rt   r   rm   r  s      rJ   test_config_10_ok ConfigDictTest.test_config_10_ok  s    $$&&dmm,w(=(=>&&'89FNN4,,./&&z2FNN4,,./&&'78FNN4,,./&&'@AFLL**,-!! #  "  '&&s   D"E
Ec                 :    U R                  U R                  5        g r   )r  config11rs   s    rJ   test_config11_okConfigDictTest.test_config11_ok  s    T]]+ro   c                 Z    U R                  [        U R                  U R                  5        g r   )r]  r  r  config12rs   s    rJ   test_config12_failure$ConfigDictTest.test_config12_failure      )T%6%6Fro   c                 Z    U R                  [        U R                  U R                  5        g r   )r]  r  r  config13rs   s    rJ   test_config13_failure$ConfigDictTest.test_config13_failure  r	  ro   c                    [         R                  " 5        nU R                  U R                  5        [        R
                  S   nU R                  UR                  S5        U R                  UR                  S5        [        R                  " S5        U R                  UR                  5       R                  S5      5        S S S 5        g ! , (       d  f       g = f)NrV  r  r  ExclamationzExclamation!
)r   r  r  config14r    r%   r^   r  r  r   rE   r\   r  )rF   r  rU   s      rJ   test_config14_okConfigDictTest.test_config14_ok  s    $$&&dmm,!!'*AQUUE*Q\\51OOM*OOFOO-667GHI '&&   B+C


Cc                 :   U R                  5          [        SS5      nSSSUSS.0SS/0S	.nU R                  U5        U R                  U5        S S S 5        [        R                  R
                  S
   nU R                  [        UW5        g ! , (       d  f       NC= f)Nr  r<  rq   r  r  rh  )rm  filenamerj  rB   r  r   )r>  rV  r  r    rA  rB   r   r  )rF   rU  r  r   s       rJ   test_config15_okConfigDictTest.test_config15_ok  s    ++-(9:B !6$&$+ F f%f%% .( ,,''*('26+ .-s   >B
Bc                 n   U R                  U R                  5        [        R                  S   nUR                  R                  [        R                  " SSS.5      5      nU R                  US5        UR                  R                  [        R                  " SS05      5      nU R                  US5        g )NrV  HellorF  rG  zHello ++ customvaluer  zHello ++ defaultvalue)r  config16r    r%   rJ  r[  r   r^   )rF   rU   rK  s      rJ   test_config16_okConfigDictTest.test_config16_ok  s    $--(g& ##G$9$9M:%< =!78 ##G$9$9G% !89ro   c                     U R                  U R                  5        [        R                  S   nU R	                  UR
                  R                  S5        g )NrV  r  )r  config17r    r%   r^   rJ  r  r`  s     rJ   test_config17_okConfigDictTest.test_config17_ok  s>    $--(g&44g>ro   c                     U R                  U R                  5        [        R                  " S5      R                  S   nU R                  UR                  [        R                  5        g )Nr  r   )r  config18r    r!   rB   r^   r  r   rF   r   s     rJ   test_config18_okConfigDictTest.test_config18_ok  sI    $--(##J/88;++W]];ro   Nc                    UR                  S5      n[        R                  R                  SU5      nUR	                  5         UR
                  R                  5         UR                  nUR
                  R                  5          [        R                  " [        R                  [        R                  5      nUR                  S5        UR                  SU45        [        R                  " S[!        U5      5      nXa-   nSn[!        U5      n	U	S:  a#  UR#                  XxS  5      n
X-  nX-  n	U	S:  a  M#  UR%                  5         UR
                  R                  S5        [        R                  R'                  5         [(        R*                  " U5        g ! UR
                  R                  S5        [        R                  R'                  5         [(        R*                  " U5        f = f)Nrh  r   g       @rq  r  )rr  r    r  listenr  r=  r  r  rP   r  r  SOCK_STREAM
settimeoutconnectr  r  r_   sendrN   stopListeningr	   r6  )rF   textverifyr,  r  rd  r  rl   	sentsofarleftsents              rJ   setup_via_listener!ConfigDictTest.setup_via_listener  sS   {{7#NN!!!V,			vv		,==1C1CDDOOC LL+t,-;;tSY/DAIq6D(yy:/!	 ( JJLGGLLNN((*((+ GGLLNN((*((+s   B/F 4F AG%c                    [         R                  " 5        nU R                  [        R                  " U R
                  5      5        U R                  S[        R                  5        [        R                  " S5      nUR                  U R                  5       5        [        R                  " S5      nUR                  U R                  5       5        [        R                  " S5      nUR                  U R                  5       5        [        R                  " S5      nUR                  U R                  5       5        U R                  SS/US9  S S S 5        g ! , (       d  f       g = fr  )r   r  r2  jsondumpsr  r  r    r;   r!   r   rt   r   rm   r  s      rJ   test_listen_config_10_ok'ConfigDictTest.test_listen_config_10_ok  s   $$&&##DJJt}}$=>w(=(=>&&'89FNN4,,./&&z2FNN4,,./&&'78FNN4,,./&&'@AFLL**,-!! #  "  '&&s   D6E
E#c                    [         R                  " 5        nU R                  [        R                  " [
        R                  5      5        [        R                  " S5      nUR                  U R                  5       5        UR                  U R                  5       5        U R                  SS/US9  U R                  / 5        S S S 5        g ! , (       d  f       g = fr  )r   r  r2  r  r  r  rw  r    r!   r   rt   r   rm   r  s      rJ   test_listen_config_1_ok&ConfigDictTest.test_listen_config_1_ok-  s    $$&&##HOON4J4J$KL&&'89FKK))+,LL**,-!!#  " 
 !!"% '&&r  c                    S nS n[         R                  " S5      n[        R                  " [        R
                  5      n[        R                  " 5        nU R                  XA5        UR                  U R                  5       5        UR                  U R                  5       5        S S S 5        U R                  / WS9  U R                  SS/SS9  [        R                  " 5        nU R                  U5        [         R                  " S5      nUR                  U R                  5       5        UR                  U R                  5       5        S S S 5        U R                  S	S
/US9  U R                  SS/SS9  [        R                  " 5        nU R                  US S S2   U5        [         R                  " S5      nUR                  U R                  5       5        UR                  U R                  5       5        S S S 5        U R                  SS/US9  U R                  SS/SS9  g ! , (       d  f       GN= f! , (       d  f       N= f! , (       d  f       NV= f)Nc                     g r   r|   stuffs    rJ   verify_fail6ConfigDictTest.test_listen_verify.<locals>.verify_fail?  s    ro   c                     U S S S2   $ )Nrl  r|   r>  s    rJ   verify_reverse9ConfigDictTest.test_listen_verify.<locals>.verify_reverseB  s    2;ro   r  r  r  r  r  )rg   r  r  rl  r  r  )r    r!   r  r  r  rw  r   r  r2  r   rt   r   rm   )rF   r@  rC  r  to_sendr  s         rJ   test_listen_verify!ConfigDictTest.test_listen_verify<  s.   		 ""#45//."8"89 $$&&##G9KK))+,LL**,-	 '
 	b0
 + 	 	, $$&&##G,&&'89FKK))+,LL**,- ' 	
  	 	
 	
 + 	 	, $$&&##GDbDM>B&&'89FKK))+,LL**,- ' 	
  	 	
 	
 + 	 	,Y '& '&$ '&s'   AH&%A&H8A-I	&
H58
I	
Ic                 Z    U R                  [        U R                  U R                  5        g r   )r]  r  r  
bad_formatrs   s    rJ   test_bad_formatConfigDictTest.test_bad_format{  s    *d&7&7Iro   c                    [         R                  " U R                  5      nSUS   S   S'   U R                  U5        [        R
                  " S5      R                  S   nU R                  UR                  [        R                  5        U R                  UR                  R                  [        R                  5        U R                  [        [        R                  " 5       5      SS/5        g )	Nz-${asctime} (${name}) ${levelname}: ${message}ro  r  r[  r  r   r  r  )r&   deepcopyrI  r  r    r!   rB   rQ  r  r\  rJ  _styleStringTemplateStyler^   sortedgetHandlerNamesrF   r  r   s      rJ   !test_bad_format_with_dollar_style0ConfigDictTest.test_bad_format_with_dollar_style~  s    t/>m|01(;&!##J/88;gnngoo>g//66%99	; 7 7 9:(,7	9ro   c                     U R                  U R                  5        [        R                  " S5      R                  S   nU R                  UR                  [        5        g Nr  r   )r  custom_formatter_class_validater    r!   rB   rQ  rJ  r  r#  s     rJ   )test_custom_formatter_class_with_validate8ConfigDictTest.test_custom_formatter_class_with_validate  sJ    $>>?##$EFOOPQRg//1CDro   c                     U R                  U R                  5        [        R                  " S5      R                  S   nU R                  UR                  [        5        g rV  )r   custom_formatter_class_validate2r    r!   rB   rQ  rJ  r  r#  s     rJ   *test_custom_formatter_class_with_validate29ConfigDictTest.test_custom_formatter_class_with_validate2  sJ    $??@##$EFOOPQRg//1CDro   c                     U R                   R                  5       nSUS   S   S'   U R                  U5        [        R                  " S5      R
                  S   nU R                  UR                  [        5        g )Nr  ro  r  r  r  r   )	rW  r&   r  r    r!   rB   rQ  rJ  r  rR  s      rJ   9test_custom_formatter_class_with_validate2_with_wrong_fmtHConfigDictTest.test_custom_formatter_class_with_validate2_with_wrong_fmt  sn    55::<14|W%g. 	&!##$EFOOPQRg//1CDro   c                 Z    U R                  [        U R                  U R                  5        g r   )r]  r  r   custom_formatter_class_validate3rs   s    rJ   *test_custom_formatter_class_with_validate39ConfigDictTest.test_custom_formatter_class_with_validate3  s     *d&7&79^9^_ro   c                 Z    U R                  [        U R                  U R                  5        g r   )r]  r  r  custom_formatter_with_functionrs   s    rJ   ,test_custom_formatter_function_with_validate;ConfigDictTest.test_custom_formatter_function_with_validate       *d&7&79\9\]ro   c                 Z    U R                  [        U R                  U R                  5        g r   )r]  r  r  custom_formatter_with_defaultsrs   s    rJ   ,test_custom_formatter_function_with_defaults;ConfigDictTest.test_custom_formatter_function_with_defaults  ri  ro   c                 	   S/ SQSSSSSSS	S
SSSSSSSSSSS.S.S.
SSSS/S// SQS.n[         R                  R                  U5      nU R                  UR	                  S5      S5        U R                  UR	                  S5      S5        U R                  UR	                  S5      S5        U R                  UR	                  S5      S5        U R                  UR	                  S5      S5        U R                  UR	                  S 5      S5        U R                  UR	                  S!5      S5        U R                  UR	                  S"5      S5        U R                  UR	                  S#5      S5        U R                  UR	                  S$5      S5        U R                  UR	                  S%5      S5        U R                  UR	                  S&5      S5        U R                  UR	                  S'5      S5        U R                  UR	                  S(5      S5        U R                  UR	                  S)5      S5        U R                  UR	                  S*5      S5        U R                  UR	                  S+5      S,5        U R                  UR	                  S-5      S5        U R                  UR	                  S.5      S/5        U R                  UR	                  S05      S15        U R                  UR	                  S25      S5        U R                  UR	                  S35      S5        U R                  UR	                  S45      S5        U R                  UR	                  S55      S5        U R                  UR	                  S65      S/5        U R                  UR	                  S75      S15        U R                  UR	                  S85      S5        U R                  UR	                  S95      S5        UR	                  S:5      nU R                  UR                  S5      / SQ5        U R                  [        UR                  S;5        U R                  [        UR                  S<5        U R                  [        UR                  S=5        U R                  [        UR                  S>5        U R                  [        UR                  S?5        U R                  [        UR                  S@5        g )AN)rq   r      )r  bcre  ro  r  r               r  )g)rU   r  jrq   r  )r  za with 1 and spaceza with ( and space)r  r   alpha numeric 1 with spaces   alpha numeric 1 %( - © ©ß¯r   somelistsomedict)
r  r   rx  ry  zalpha numeric ] 1 with spacesu"   alpha ]] numeric 1 %( - © ©ß¯]u#    alpha [ numeric 1 %( - © ©ß¯] z alpha r   nest4r  lr   r  )ozcfg://alistp)atuplealistadictnest1nest2nest3zcfg://atuple[1]r   zcfg://alist[1]rp  zcfg://nest1[1][0]rU   zcfg://nest2[1][1]zcfg://adict.dzcfg://adict[f]z(cfg://adict[alpha numeric 1 with spaces]u+   cfg://adict[alpha numeric 1 %( - © ©ß¯]zcfg://adict[]zcfg://adict.nest4.dzcfg://adict.nest4[d]zcfg://adict[nest4].dzcfg://adict[nest4][f]z/cfg://adict[nest4][alpha numeric 1 with spaces]u2   cfg://adict[nest4][alpha numeric 1 %( - © ©ß¯]zcfg://adict[nest4][]zcfg://adict[nest4][somelist][0]rv  z"cfg://adict[nest4][somelist][1][0]z"cfg://adict[nest4][somelist][1][1]r  zcfg://adict[nest4][somelist][2]rw  zcfg://adict[nest4].somedict.azcfg://adict[nest4].somedict[a]z/cfg://adict[nest4].somedict[a with 1 and space]z/cfg://adict[nest4].somedict[a with ( and space]z cfg://adict.nest4.somelist[1][1]zcfg://adict.nest4.somelist[2]zcfg://adict.nest4.somedict.azcfg://adict.nest4.somedict[a]zcfg://nest3zcfg://nosuchzcfg://!zcfg://adict[2]z*cfg://adict[alpha numeric ] 1 with spaces]u1   cfg://adict[ alpha ]] numeric 1 %( - © ©ß¯] ]u0   cfg://adict[ alpha [ numeric 1 %( - © ©ß¯] ])	r    r  BaseConfiguratorr^   convertpopr]  KeyErrorr  )rF   r  bcr  s       rJ   test_baseconfigConfigDictTest.test_baseconfig  s   $q013424798:14578"8/0/0", ,C:s+.7
: ^^,,Q/$56:$45s;$78#>$78#>O4c:$45q9$NOQRS$QRTUVO4b9$9:C@$:;SA$:;SA$;<a@$UVXYZ$XY[\]$:;R@$EFL$HI3O$HI3O$EFL$CDaH$DEqI$UVXYZ$UVXYZ$FGM$CDcJ$BCQG$CDaHJJ}%q?3(BJJ?*bjj)<(BJJ0@A(BJJ0\]*bjj2ef*bjj2dero   c                 z  ^ SSK Jm   " U4S jS[        R                  5      nT" SSS/5      nU" SS	/S
9nSSUUS.0SS/S.S.n[        R
                  " 5        nU R                  U5        [        R                  " S5        S S S 5        U R                  WR                  5       S5        g ! , (       d  f       N/= f)Nr   )
namedtuplec                   8   >^  \ rS rSrU U4S jrU 4S jrSrU =r$ )1ConfigDictTest.test_namedtuple.<locals>.MyHandleri  c                 2   > [         TU ]  " U0 UD6  Xl        g r   )r  r  resource)rF   r  rR  rS  r  r  s       rJ   r  :ConfigDictTest.test_namedtuple.<locals>.MyHandler.__init__  s     $1&1,4ro   c                 z   > U=R                   SU R                  R                   3-  sl         [        TU ]  U5      $ N )r  r  typer  r_  r  s     rJ   r_  6ConfigDictTest.test_namedtuple.<locals>.MyHandler.emit  s2    

$--"4"4!566
w|F++ro   )r  r  )r  r  s   @rJ   	MyHandlerr    s    5, ,ro   r  Resourcer  labelsmy_typer  )r  r  rq   	myhandler)r  r  r   r  r  zsome logzsome log my_type
)
collectionsr  r    r;   r   r  r  r   r^   r\   )rF   r  r  r  r  r  r  s         @rJ   test_namedtupleConfigDictTest.test_namedtuple  s    *	,-- 	, j68*<=C59 # (  &K=A	
 $$&&f%LL$ ' 	*,@A '&s   (B,,
B:c                 n    S nU R                  SSU/S.S.5        / [        R                  " 5       l        g )Nc                     grt  r|   )r  s    rJ   r   AConfigDictTest.test_config_callable_filter_works.<locals>.filter_
  s    ro   rq   r:   r  rn  rA  r  r    r!   r  rF   r   s     rJ   !test_config_callable_filter_works0ConfigDictTest.test_config_callable_filter_works	  s9    	G	"J
 	 ')#ro   c                     [         R                  " S5      nU R                  SSU/S.S.5        / [         R                  " 5       l        g )Nr   rq   r:   r  r  )r    r   r  r!   r  r  s     rJ   test_config_filter_works'ConfigDictTest.test_config_filter_works  sB    ..-G	"J
 	 ')#ro   c                      " S S5      nU" 5       nU R                  SSU/S.S.5        / [        R                  " 5       l        g )Nc                       \ rS rSrS rSrg)BConfigDictTest.test_config_filter_method_works.<locals>.FakeFilteri  c                     grt  r|   )rF   r  s     rJ   r   IConfigDictTest.test_config_filter_method_works.<locals>.FakeFilter.filter  s    ro   r|   Nr  r|   ro   rJ   
FakeFilterr    s    ro   r  rq   r:   r  r  r  )rF   r  r   s      rJ   test_config_filter_method_works.ConfigDictTest.test_config_filter_method_works  sG    	 	 ,G	"J
 	 ')#ro   c           	           " S S5      nS SU" 5       4 H+  nU R                  [        U R                  SSU/S.S.5        M-     g )Nc                       \ rS rSrSrg);ConfigDictTest.test_invalid_type_raises.<locals>.NotAFilteri&  r|   Nra  r|   ro   rJ   
NotAFilterr  &  s    $ro   r  rq   r:   r  r  )r]  r  r  )rF   r  r   s      rJ   test_invalid_type_raises'ConfigDictTest.test_invalid_type_raises%  sD    a.G!!gY'OP /ro   c                    [         R                  " U R                  5      n[        SS5      nXCS   S   S'   Ub
  XS   S   S'   Ub
  X#S   S   S'   S n U R	                  U5        [
        R                  " S5      nU R                  [        [
        R                  " 5       5      SS/5        U R                  UR                  5        UR                  R                  5         [
        R                  " S	5        [
        R                  " S
5        [
        R                  " S5        [         R"                  " [         R$                  S5      (       aV  UR                  R&                  R)                  5       (       a  O,[         R"                  " [         R$                  S5      (       a  MV  UR                  R&                  R+                  5         [-        USS9 nUR/                  5       R1                  5       nS S S 5        U R                  W/ SQ5        U(       a  UR                  R3                  5         [
        R                  " S5      nU(       a  U R5                  [6        X5        g U R5                  [8        R:                  U5        g ! , (       d  f       N= f! U(       a  UR                  R3                  5         [
        R                  " S5      nU(       a  U R5                  [6        X5        f U R5                  [8        R:                  U5        f = f)Nr  ztest_logging-cqh-rB   r  r  r  rk  listenerr  r  bazzqueue not emptyrh  r  )r  r  r  )r&   rM  config_queue_handlerrV  r  r    r  r^   rP  rQ  assertIsNotNoner  r  r   r   r   r   sleeping_retryr  rk  emptyr   r  re   r]   r8  r   r  rQ  r  )	rF   qspeclspeccdrU  qhr   r  rU   s	            rJ   do_queuehandler_configuration,ConfigDictTest.do_queuehandler_configuration.  s6   ]]4445F$78+-:tZ(,1zN4 )/4zN4 ,	/b!))$/BVG$;$;$=>tM  -KKMM% LLOOE" (()=)=):< <;;$$**,, (()=)=):< < KK""$b7+qvvx**, ,T#89  "((.A 0!8		2. ,+   "((.A 0!8		2.s,   EJ ".J J/J 
JJ A7L	c                    [        5       [        5       /nS Vs/ s H  n[         SU 3SS.PM     nn[        S-   S S SS.nS [        S-   [        S	-   /UQUQ7nS [        S
-   U[        4n[        R
                  " XV5       H  u  pxU R                  Xx5        M     S S[        SS4nS S[        SS4n[        R
                  " XV5       Hc  u  pxUc  Uc  M  U R                  [        5       n	U R                  Xx5        S S S 5        [        W	R                  5      n
U R                  U
S5        Me     g s  snf ! , (       d  f       N?= f)N)rf  rh  r   r  r  rm  z.listenerMakerT)r  r  r  r  z.queueMakerz.CustomQueuez.CustomListenerr  r   r  r  z Unable to configure handler 'ah')rf  rh  rw   rd  	itertoolsproductr  r  r]  r  r  r  r^   )rF   qsr  dqsdlqvalueslvaluesr  r  ctxr  s              rJ   test_config_queue_handler(ConfigDictTest.test_config_queue_handlerV  sU    m023@B@3 "
!C5)b9@ 	 B --%)	
 M18n3LXsXUWX$55r>J%--g?LE..u< @ CU+CU+%--g?LE}"":.#225@ /cmm$CS"DE @!B& /.s   D.(D33
E	c                 6    U R                  SSSUS.0S.5        g )Nrq   queue_listenerr  rm  rk  )rn  rB   )r  )rF   r  s     rJ   *_apply_simple_queue_listener_configuration9ConfigDictTest._apply_simple_queue_listener_configurationr  s+     <"#
 	ro   zmultiprocessing.Managerc                 (   SSS.[         R                  " 5       [         R                  " 5       [        5       [	        5       4 H<  nU R                  US9   U R                  U5        UR                  5         S S S 5        M>     g ! , (       d  f       MP  = f)Nzqueue.Queuerl  r  r  )rk  rl  SimpleQueueru  r}  subTestr  assert_not_calledrF   r"   r  s      rJ   Atest_config_queue_handler_does_not_create_multiprocessing_managerPConfigDictTest.test_config_queue_handler_does_not_create_multiprocessing_manager}  sv     !R0KKM $% "
E E*??F))+ +*
 +*s   "B
B	c                 .   [        5       [        5       4 HZ  nU R                  US9   U R                  [        5         U R                  U5        UR                  5         S S S 5        S S S 5        M\     g ! , (       d  f       N= f! , (       d  f       M  = f)Nr  )rp  r{  r  r]  r  r  r  r  s      rJ   Ptest_config_queue_handler_invalid_config_does_not_create_multiprocessing_manager_ConfigDictTest.test_config_queue_handler_invalid_config_does_not_create_multiprocessing_manager  sh     h 8 :;EE*D,=,=j,I??F))+ -J** <,I,I**s"   B"A4B4
B>B
B	z@requires a debug build for testing assertions in multiprocessingc                 p   SS K n[        R                  (       a  S/nO/ SQnU Hl  nU R                  US9   UR                  " U5      nUR                  5       nU R                  [        5         U R                  U5        S S S 5        S S S 5        Mn     g ! , (       d  f       N= f! , (       d  f       M  = f)Nr   spawnr  r  
forkserverstart_method)	multiprocessingr   
MS_WINDOWSr  get_contextr  r]  r  r  )rF   r  start_methodsr  r  r  s         rJ   ?test_config_reject_simple_queue_handler_multiprocessing_contextNConfigDictTest.test_config_reject_simple_queue_handler_multiprocessing_context  s     	$IM;M)L<8%11,?)&&z2CCEJ 3 98 * 32 98s#   8B&.B B&
B#B&&
B5	c           
      j   [         R                  (       a  S/nO/ SQnU H  nU R                  US9   [        R                  " U5      nUR                  5        nUR                  5       n/ nUR                  SU R                  US4SS9   UR                  UR                  SS95        S S S 5        U R                  UR                  5       5        S S S 5        U R                  [        W5      S5        S S S 5        M     g ! , (       d  f       N]= f! , (       d  f       NG= f! , (       d  f       GM  = f)	Nr  r  r  rq   r-  )initializerinitargsmaxtasksperchild<   r  )r   r  r  r  r  Managerrl  Pool_mpinit_issue121723r  r  rE   r  r^   r_   )rF   r  r  r  r"   qr.  s          rJ   1test_config_queue_handler_multiprocessing_context@ConfigDictTest.test_config_queue_handler_multiprocessing_context  s     $IM;M)L<8%11,?[[]gA G!1I1I,-v; " LquuRu'89L OOAGGI. #   Wq1 98 *L L	 #] 98s;   'D"1D
D 	)'D#D" 
D
D
DD""
D2	c                     [         R                  R                  SSSSU S.0S/SS.S.5        [         R                  " 5       R	                  U5        g )	Nrq   Tlog_to_parentr  r  r:   rB   r  )rn  rP  rB   rA  )r    r  r  r!   r   )r  message_to_logs     rJ   r  "ConfigDictTest._mpinit_issue121723  sZ     	!!(,<"" #2!2WE
#
 
	 	  0ro   c                    [         R                  " U R                  5      nSSKJnJn  U" 5       nU" 5       R	                  5       nU" 5       R                  5       nXEU4 GH1  n[        SS5      nXS   S   S'   XqS   S   S	'   S n	 U R                  U5        [        R                  " S5      n	U R                  [        [        R                  " 5       5      SS/5        U R                  U	R                  5        U R!                  U	R"                  U5        U R!                  U	R                  R"                  U5        [        R                  " S5      n
U
(       a  U R%                  [&        X5        GM  U R%                  [(        R*                  U5        GM4     g ! [        R                  " S5      n
U
(       a  U R%                  [&        X5        f U R%                  [(        R*                  U5        f = f)
Nr   )rl  r  r  ztest_logging-cmpqh-rB   r  r  r  rk  )r&   rM  r  r  rl  r  JoinableQueuerV  r  r    r  r^   rP  rQ  r  r  r   rk  r   r  rQ  r  )rF   r  MQMMq1q2q3r  rU  r  rU   s              rJ   test_multiprocessing_queues*ConfigDictTest.test_multiprocessing_queues  sn   
 ]]4445>TTZZ\T!b\E(=>B/1zN4 ,,1zN4 )B3!!"%--d3  (?(?(A!BT4LQ$$R[[1bhh.bkk//7,,T2OO$4a<OOBIIr2# " ,,T2OO$4a<OOBIIr2s   B4FAG+c                    SSSSSS.0SSS/S.0S	.n[         R                  " S5      nU R                  UR                  5        U R	                  U5        U R                  UR                  5        U R	                  S
S05        U R                  UR                  5        US	 U R	                  U5        U R                  UR                  5        g )Nrq   Fr  r:   r  )r  rm  r  r  )rn  rP  rB   r  rn  rP  )r    r!   ry  r   r  rE   )rF   r  r  s      rJ   
test_90195ConfigDictTest.test_90195  s     (-$4 $!*
  ""3')&!)9a.)(-.&!)ro   c                     [         R                  " S5        [         R                  " S5      nSSSUR                  S5      R                  5       S.0S/SS	.S
.n[        R
                  R                  U5        g )N_multiprocessingr  rq   sinkr  r  r  r:   r  r  )r   import_moduler  rl  r    r  r  )rF   mpr  s      rJ   test_111615ConfigDictTest.test_111615  sv    ##$67(():; <^^G4::< $H 
 	!!&)ro   c                     " S S[         R                  R                  5      nSS0nSSSU0UE0SS/S	.S
.n[         R                  R	                  U5        [         R
                  " S5      nU R                  UR                  U5        g )Nc                   (   ^  \ rS rSrU 4S jrSrU =r$ )>ConfigDictTest.test_kwargs_passing.<locals>.CustomQueueHandleri,  c                 V   > [         TU ]  [        R                  " 5       5        X l        g r   )r  r  rk  rl  custom_kwargsrF   rR  rS  r  s      rJ   r  GConfigDictTest.test_kwargs_passing.<locals>.CustomQueueHandler.__init__-  s     /%+"ro   )r  )rw   rx   ry   rz   r  r{   r  r  s   @rJ   CustomQueueHandlerr  ,  s    , ,ro   r  r  r  rq   r  rm  r:   r  r  )r    rB   QueueHandlerr  r  r  r^   r  )rF   r  r  r  r   s        rJ   test_kwargs_passing"ConfigDictTest.test_kwargs_passing+  s    	,!1!1!>!> 	,
  /# !%J
 	!!&)**84..>ro   r|   r   )prw   rx   ry   rz   r
   r>  r[   r  rw  r4  r  r  r  r  r  r  rV  r^  r  r'  r,  r6  r@  r  rI  r  r  r  r  r  r  r  r  r    r=   r  r  r"  rI  rW  r[  rb  rf  rk  r  r  r  r  r  r  r  r  r  r"  r  r(  r  r9  r  r  r  r  r  r  r  r  r  r  r  r$  r2  r   requires_working_socketr7  r:  rF  rJ  rS  rX  r\  r_  rc  rg  rl  r  r  r  r  r  r  r  r	   r  requires_subprocessr  r  r   r  r  r  r  
skipUnlessPy_DEBUGr  r  staticmethodr  r  r	  r  r  r{   r|   ro   rJ   r  r  e	  s1    !0 I I, 9
 1%".	
  !
G. 9
 1%".	
 !%Y!
 i
+G8 9
 1%".	
 '!
  !
)H8 9
 1%"/	
 !%Y!
 i
+G8 9
 1%".	
 !%Y!
 i
+H: 9
 1%".	
 !%Y!
 i
+H8 9
 1/".	
 !%Y!
 i
+G8 "77?
 1%".	
 %Y
!G0  *?
  -/?
 "?
  2%".	 {

 %Y
7HF 9
 "%55%".	
 !%Y!
 i
+G: 9
 "%55%"..
 !%Y!
 i
-G< 9
 1%".	
 !%Y 
 i
+G< %*9
 1%".	
 "%Y 
 i
1G> %)9
 1%".	
 "%Y 
 i
1H< 9
 1%#.	
 #%Y!
 h
+G6 )
 &!
H  &
 &!
H" 9
 *
 1%".$I
 !$I!
  !
7HF 9
 1%".	
 /4
 !%Y!
 i
3HB 9
 1%".	
 /4
 !%Y!
 i
1H> 9
 1%".	
 /4
 !%Y!
 i
3H@ 9
 1%". "'	
  !
'H8 ;*N;
 1%".	
  !
!H,*'++ * %.%%w

 1&".	
  !
+H8  1 
 :# %
  (M#
H2 M"
 1 0 :0& 
  +,#
-JB !66>!
 0$!,	
 . $I#0
#'#8 !$99>!
 0$!,	
 . $I#0
#($8 !$88>!
 0$!,	
 . $I#0
#($8  >!
 0$!,	
 . $I#0
#&"8  N*I6
 0$!,	
 . $I#0
#&"6  .
 9!F	
 
$(&&  &- &FGGF& &3F&< &D+&Z&(,GGJ72:?
<
,8 $$& '( $$&& '& $$&<, '<,|J
9E
E
E`^^BfHB>))	)&/P 002  "F # 3F4	 002  "
$%, & # 3,( $%, &,   ")) ,L MKM # K$   ")) ,L M2M # 2& 1 1    "3 # 36*<**?ro   r  c                        \ rS rSrS rS rSrg)ManagerTestiG  c                 p  ^ / m " U4S jS[         R                  5      n[         R                  " S 5      nU R                  [        UR
                  [        5        UR                  U5        UR                  S5      nUR                  S5        [         R                  " S5        U R                  TS/5        g )Nc                   &   > \ rS rSrSU 4S jjrSrg)6ManagerTest.test_manager_loggerclass.<locals>.MyLoggeriK  Nc                 (   > TR                  U5        g r   r  )rF   r  r  rR  exc_infoextraloggeds         rJ   _log;ManagerTest.test_manager_loggerclass.<locals>.MyLogger._logL  s    c"ro   r|   rv   )rw   rx   ry   rz   r,  r{   )r+  s   rJ   MyLoggerr&  K  s    # #ro   r.  rE  zshould appear in loggedzshould not appear in logged)
r    Loggerr  r]  	TypeErrorsetLoggerClassr  r!   r   r^   )rF   r.  manr  r+  s       @rJ   test_manager_loggerclass$ManagerTest.test_manager_loggerclassH  s    	#w~~ 	# ood#)S%7%7=8$v&0156";!<=ro   c                     [         R                  " S 5      n[        5       nUR                  U5        U R	                  UR
                  U5        g r   )r    r  rp  setLogRecordFactoryr^   logRecordFactory)rF   r2  rj   s      rJ   test_set_log_record_factory'ManagerTest.test_set_log_record_factoryX  s;    ood#8)--x8ro   r|   N)rw   rx   ry   rz   r3  r8  r{   r|   ro   rJ   r#  r#  G  s    > 9ro   r#  c                        \ rS rSrS rS rSrg)ChildLoggerTesti^  c                    [         R                  " 5       n[         R                  " S5      n[         R                  " S5      nUR                  S5      nUR                  S5      nU R                  U[         R                  " S5      5        U R                  U[         R                  " S5      5        UR                  S5      nUR                  S5      nUR                  S5      nU R                  U[         R                  " S5      5        U R                  U[         R                  " S5      5        U R                  XV5        g )	Nabczdef.ghixyzzuvw.xyzdefghiabc.defzabc.def.ghi)r    r!   getChildr   )rF   r   l1l2c1c2c3s          rJ   test_child_loggers"ChildLoggerTest.test_child_loggers_  s    u%y)ZZZZ	"b'++E23b'++I67[[[[[[#b'++I67b'++M:;bro   c                    [         R                  " 5       n[         R                  " S5      n[         R                  " S5      n[         R                  " S5      n[         R                  " S5      nUR                  5       nX%1nU R                  XvU-  5        U R	                  X75        UR                  5       nU R                  U1U5        UR                  5       nU R                  [        5       U5        g )Nr  foo.barzfoo.bar.baz.bozzr  )r    r!   getChildrenr^   assertNotInr2  )rF   r   rC  rD  l3l4kidsrj   s           rJ   test_get_children!ChildLoggerTest.test_get_childrenn  s    u%y)12u%}}8(?3&~~"t$~~%ro   r|   N)rw   rx   ry   rz   rH  rQ  r{   r|   ro   rJ   r;  r;  ^  s    &ro   r;  c                       \ rS rSrSrg)DerivedLogRecordi}  r|   Nra  r|   ro   rJ   rT  rT  }  rb  ro   rT  c                   &    \ rS rSrS rS rS rSrg)LogRecordFactoryTesti  c                      " S S[         R                  5      n[        R                  U 5        U" [        5      U l        U R                  R                  U R
                  5        [         R                  " 5       U l	        g )Nc                        \ rS rSrS rS rSrg)2LogRecordFactoryTest.setUp.<locals>.CheckingFilteri  c                     Xl         g r   r  )rF   r  s     rJ   r  ;LogRecordFactoryTest.setUp.<locals>.CheckingFilter.__init__  s    ro   c                 t    [        U5      nX R                  La  SU< SU R                  < 3n[        U5      eg)NzUnexpected LogRecord type z, expected T)r  r  r0  )rF   r   r,  r  s       rJ   r   9LogRecordFactoryTest.setUp.<locals>.CheckingFilter.filter  s3    LHH$IJ HH&C#C.(ro   r[  N)rw   rx   ry   rz   r  r   r{   r|   ro   rJ   CheckingFilterrY    s    ro   r_  )
r    r   r   rK   rT  r   r3   r   getLogRecordFactoryorig_factory)rF   r_  s     rJ   rK   LogRecordFactoryTest.setUp  sV    
	W^^ 
	 	t$%56""4;;/#779ro   c                     U R                   R                  U R                  5        [        R	                  U 5        [
        R                  " U R                  5        g r   )r3   r   r   r   rV   r    r6  ra  rs   s    rJ   rV   LogRecordFactoryTest.tearDown  s<    %%dkk2$##D$5$56ro   c                     U R                  [        U R                  R                  U R	                  5       5        [
        R                  " [        5        U R                  R                  U R	                  5       5        U R                  S/5        g )N)rA  r   r   )
r]  r0  r3   r   rt   r    r6  rT  r   rm   rs   s    rJ   test_logrecord_class)LogRecordFactoryTest.test_logrecord_class  sn    )T%5%5%=%=++-	/##$45t0023!
 	ro   )r   ra  N)rw   rx   ry   rz   rK   rV   rf  r{   r|   ro   rJ   rV  rV    s    :$7
ro   rV  c                   H    \ 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)QueueHandlerTesti  r  c                    [         R                  U 5        [        R                  " S5      U l        [        R
                  R                  U R                  5      U l        SU l        [        R                  " S5      U l
        SU R                  l        U R                  R                  [        R                  5        U R                  R                  U R                  5        g )Nrl  queF)r   rK   rk  rl  r    rB   r  que_hdlrrH   r!   
que_loggerr  r9   r   rD   rs   s    rJ   rK   QueueHandlerTest.setUp  s    t[[_
((55djjA	!++E2$)!  1""4==1ro   c                 b    U R                   R                  5         [        R                  U 5        g r   )rl  rN   r   rV   rs   s    rJ   rV   QueueHandlerTest.tearDown  r  ro   c                    U R                   R                  U R                  5       5        U R                  [        R
                  U R                  R                  5        U R                   R                  U R                  5       5        U R                  [        R
                  U R                  R                  5        U R                  5       nU R                   R                  U5        U R                  R                  5       nU R                  [        U[        R                  5      5        U R                  UR                  U R                   R                  5        U R                  UR                  UR                   4US 45        g r   )rm  r   rt   r]  rk  Empty
get_nowaitr   r   rE   r  r    r  r^   rH   r  rR  )rF   r  r  s      rJ   test_queue_handler#QueueHandlerTest.test_queue_handler  s    d//12%++tzz'<'<=T..01%++tzz'<'<=!$zz$$&
4):):;<DOO$8$89$((DII.d<ro   c                    U R                  5       n[        R                  " [        R                  5      nSnUR	                  U R
                  X!S9n[        R                  " U R                  5      nU R                  R                  U5        U R                  R                  U5        U R                  R                  5       nU R                  XFR                  5        U R                  XFR                   5        g )Nz {name} -> {levelname}: {message})rH   	levelnamer7  )rt   r    r   r   r[  rH   r=   r>   rl  r@   rm  r   rk  rs  r^   r  r7  )rF   r  rw  log_format_strformatted_msgrJ  
log_records          rJ   test_formatting QueueHandlerTest.test_formatting  s    !((9	;&--4998A . P%%doo6	""9-$ZZ**,
7(:(:;ro   c                    [        [        R                  " 5       5      n[        R                  R                  U R                  U5      nUR                  5          U R                  R                  U R                  5       5        U R                  R                  U R                  5       5        U R                  R                  U R                  5       5        UR                  5         UR                  5         U R                  UR                  [        R                   SS95        U R                  UR                  [        R"                  SS95        U R                  UR                  [        R$                  SS95        UR'                  5         [        [        R                  " 5       5      nUR)                  [        R$                  5        [        R                  R                  U R                  USS9nUR                  5          U R                  R                  U R                  5       5        U R                  R                  U R                  5       5        U R                  R                  U R                  5       5        UR                  5         U R+                  UR                  [        R                   SS95        U R+                  UR                  [        R"                  SS95        U R                  UR                  [        R$                  S	S95        UR'                  5         UR                  5         U R-                  UR.                  5        g ! UR                  5         UR                  5         f = f! UR                  5         f = f)
Nr   )r   r7  r   r   T)r  r   r   r   )r   r   Matcherr    rB   QueueListenerrk  r  rm  r   rt   r   r5  r8  rE   matchesr   r   r   rN   r9   ry  r	  r  rF   r   r  s      rJ   test_queue_listener$QueueHandlerTest.test_queue_listener  sa   goo/0##11$**gF	OO##D$5$5$78OO!!$"3"3"56OO$$T%6%6%89MMOMMOMNsKL0@0@#NO goo/0))*##11$**gHL 2 N	OO##D$5$5$78OO!!$"3"3"56OO$$T%6%6%89MMO#NOLM0@0@#NO 	(**+7 MMOMMO$ MMOs   A;M A;M6 "M36Nc                 J   [        [        R                  " 5       5      n[        R                  R                  U R                  U5      nUR                  5         U R                  [        UR                  5        UR                  5         U R                  UR                  5        g r   )r   r   r~  r    rB   r  rk  r  r]  r  r8  r	  r  r  s      rJ   test_queue_listener_multi_start0QueueHandlerTest.test_queue_listener_multi_start  sj    goo/0##11$**gF,7(**+ro   c                    [         R                  R                  U R                  U R                  5      nUR                  5          SS-    U R                  R                  U R                  5       SS9  UR                  5         U R                  U R                  R                  5       R                  5       R!                  S5      S5        U R                  U R                  R                  5       R                  5       R!                  S5      S5        g ! [         a5  nUnU R                  R                  U R                  5       US9   S nAGNS nAff = f)Nrq   r   r)  T
stack_info	TracebackStack)r    rB   r  rk  r<   r  ZeroDivisionErrorrm  r  rt   r   r8  r^   r8   r\   rq  r0  )rF   r  re  excs       rJ   &test_queue_listener_with_StreamHandler7QueueHandlerTest.test_queue_listener_with_StreamHandler  s    ##11$**dnnM	IE 	d//1dC--/557==kJAN--/557==gFJ ! 	ICOO%%d&7&7&9C%H	Is   D 
E*EEc                    U R                   R                  U R                  5        U R                  R	                  U R
                  5        [        R                  R                  U R                  U R                   5      nUR                  5         U R                  R                  S5        UR                  5         U R                  U R                  R                  5       R!                  5       S5        g )Nr   zque -> ERROR: error)rl  r@   r?   rm  rD   r<   r    rB   r  rk  r  r   r8  r^   r8   r\   rq  )rF   r  s     rJ   *test_queue_listener_with_multiple_handlers;QueueHandlerTest.test_queue_listener_with_multiple_handlers  s    ""4#6#67""4>>2##11$**dmmLg&--/5579NOro   )rH   rl  rm  rk  N)rw   rx   ry   rz   r[   rK   rV   rt  r{  r  r  r  r  r{   r|   ro   rJ   ri  ri    s5     32 
=<$,L,K	Pro   ri  r  c                       \ rS rSrSr\S 5       r\R                  " \	R                  R                  S5      S 5       r\R                  " \	R                  R                  S5      S 5       r\S 5       rS rS	 rS
rg)QueueListenerTesti     c                 >   [         R                  " SU-  5      nUR                  [         R                  5        [         R                  R                  U 5      nUR                  U5        [         R                  R                  U 5      nUR                  5         UR                  S5        UR                  S5        UR                  S5        UR                  S5        UR                  S5        UR                  5         UR                  U5        UR                  5         g )Nztest_logger_with_id_%sonetwothreefourfive)r    r!   r9   r:   rB   r  rD   r  r  r   r8  rO   rN   )	log_queuer  r  r   r  s        rJ   setup_and_logQueueListenerTest.setup_and_log$  s     &&'?%'GHFOOGMM*&&33I>Gg&''55i@HNNKKKKKK KKKKMMO  )MMOro   rx  c                    [        U R                  5       H>  n[        R                  " 5       nU R	                  X0R                  5       < SU< 35        M@     U R                  UR                  SU R                  -  S5        g Nr  r  z&correct number of handled log messages)r  repeatrk  rl  r  r-  r^   
call_countrF   mock_handler  r  s       rJ   #test_handle_called_with_queue_queue5QueueListenerTest.test_handle_called_with_queue_queue<  s_    4;;'!KKM	""9A.FG ( [33Q_EGro   c                 p   [         R                  " 5         [        U R                  5       H^  n[        R
                  " 5       nU R                  X0R                  5       < SU< 35        UR                  5         UR                  5         M`     U R                  UR                  SU R                  -  S5        g r  )r   *skip_if_broken_multiprocessing_synchronizer  r  r  rl  r  r-  rN   r6  r^   r  r  s       rJ    test_handle_called_with_mp_queue2QueueListenerTest.test_handle_called_with_mp_queueD  s     >>@4;;'+113	""9A.FG!%%'	 (
 [33Q_EGro   c              #   n   #      U R                  5       v   M  ! [        R                   a    / s $ f = f7fr   )rs  rk  rr  )r  s    rJ   get_all_from_queue$QueueListenerTest.get_all_from_queueQ  s8     #..00 ;; 	s   5 2525c                 N   [         R                  " 5         [        U R                  5       H  n[        R
                  " 5       nU R                  X R                  5       < SU< 35        [        U R                  U5      5      nUR                  " 5         UR                  " 5         / [        R                  R                  R                  //nU R!                  X4SU Vs/ s H0  n[#        U[        R$                  5      (       a  UR&                  OUPM2     sn-  5        M     g s  snf )Nr  z&Found unexpected messages in queue: %s)r   r  r  r  r  rl  r  r-  listr  rN   r6  r    rB   r  	_sentinelr  r  r  r  )rF   r  rk  r  rj   r   s         rJ   $test_no_messages_in_queue_after_stop6QueueListenerTest.test_no_messages_in_queue_after_stopY  s     >>@4;;''--/""5GGIq*ABT44U;<!!#!1!1!?!?!I!I JKeF5:%<5: /9G<M<M.N.NQUU*+&,5:%<=> (%<s   7D"c                 *   [         R                  " 5       n[        R                  R	                  U5      nUR                  5         UR                  5         U R                  [        5         UR                  5         S S S 5        g ! , (       d  f       g = fr   )
rk  rl  r    rB   r  r  r8  r]  r  	task_done)rF   r  r  s      rJ   test_calls_task_done_after_stop1QueueListenerTest.test_calls_task_done_after_stopq  s\    I''55i@HNNMMO"":.##% /..s   *B
Br|   N)rw   rx   ry   rz   r  r!  r  r   rp  r    rB   r  r  r  r  r  r  r{   r|   ro   rJ   r  r    s     		 
	. 
g&&44h	?	G 
@	G 
g&&44h	?
	G 
@
	G 
	 
		>0	&ro   r  c                   $    \ rS rSrS r\rS rSrg)UTCi~  c                     [         $ r   )ZEROrF   dts     rJ   	utcoffsetUTC.utcoffset  s    ro   c                     g)Nr  r|   r  s     rJ   tzname
UTC.tzname  s    ro   r|   N)rw   rx   ry   rz   r  dstr  r{   r|   ro   rJ   r  r  ~  s     Cro   r  c                       \ rS rSrS rSrg)AssertErrorMessagei  c                      U R                   " S/UQ70 UD6  g ! U a%  nU R                  U[        U5      5         S nAg S nAff = f)Nr|   )r]  r^   r  )rF   r  r7  rR  rS  re  s         rJ   assert_error_message'AssertErrorMessage.assert_error_message  sF    	.b24262 	.Wc!f--	.s    A?Ar|   N)rw   rx   ry   rz   r  r{   r|   ro   rJ   r  r    s    .ro   r  c                   f    \ 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g)FormatterTesti  c           	          S[         R                  [        R                  R	                  SSS5      SS S SSS.U l        S	S	S
00U l        g )Nzformatter.testrz  toz	dummy.extrD  zMessage with %d %s)r   placeholders)rH   r  pathnamelinenor)  r  r  rR  r  i  )r    r:   rQ  rz  r   commonvariantsrs   s    rJ   rK   FormatterTest.setUp  sP    $]]VT;?''	
 $
ro   Nc                     [        U R                  5      nUb  UR                  U R                  U   5        [        R
                  " U5      $ r   )rs  r  rQ   r  r    r   )rF   rH   rK  s      rJ   
get_recordFormatterTest.get_record  s<    dkk"MM$---.$$V,,ro   c                 |   U R                  5       n[        R                  " S5      nU R                  UR	                  U5      S5        [        R                  " S5      nU R                  [        UR                  U5        U R                  UR                  5       5        [        R                  " S5      nU R                  UR                  5       5        [        R                  " S5      nU R                  UR                  5       5        [        R                  " S5      nU R                  UR                  5       5        g )Nz${%(message)s}z${Message with 2 placeholders}z
%(random)s%(asctime)sz%(asctime)-15sz%(asctime)#15s
r  r    r=   r^   r[  r]  r  ry  usesTimerE   rF   r   r   s      rJ   test_percentFormatterTest.test_percent  s    OO./!&FGl+*ahh2&m,

%./

%./

%ro   c                    U R                  5       n[        R                  " SSS9nU R                  UR	                  U5      S5        [        R                  " SSS9nU R                  [        UR                  U5        [        R                  " SSS9nU R                  UR                  5       5        [        R                  " SSS9nU R                  UR                  5       5        [        R                  " SSS9nU R                  UR                  5       5        [        R                  " S	SS9nU R                  UR                  5       5        g )
Nz$%{message}%$r  r  $%Message with 2 placeholders%$z{random}r  	{asctime}z{asctime!s:15}z{asctime:15}r  r  s      rJ   test_bracesFormatterTest.test_braces  s    OOoS9!&GHj4*ahh2k5&k5

%.c:

%nC8

%ro   c                    U R                  5       n[        R                  " SSS9nU R                  UR	                  U5      S5        [        R                  " SSS9nU R                  UR	                  U5      S5        [        R                  " SSS9nU R                  UR	                  U5      S5        [        R                  " SSS9nU R                  [        UR                  U5        U R                  UR                  5       5        [        R                  " S	SS9nU R                  UR                  5       5        [        R                  " S
SS9nU R                  UR                  5       5        [        R                  " SSS9nU R                  UR                  5       5        [        R                  " SSS9nU R                  UR                  5       5        g )N
${message}r  r  zMessage with 2 placeholdersz$messagez$$%${message}%$$r  z	${random}z
${asctime}z$asctimez${asctime}--r  r  s      rJ   test_dollarsFormatterTest.test_dollars  s^   OOl#6!&CDj4!&CD0<!&GHk5*ahh2&l#6

%j4

%l#6&nC8

%ro   c                    [         R                  " S5      nU R                  UR                  S5        [         R                  " S5      nU R                  UR                  S5        [         R                  " S5      nU R                  UR                  S5        [         R                  " S5      nU R                  UR                  S5        [         R                  " SSS9nU R                  UR                  S5        [         R                  " SSS9nU R                  UR                  S5        [         R                  " S	SS9nU R                  UR                  S	5        [         R                  " S
SS9nU R                  UR                  S
5        [         R                  " SSS9nU R                  UR                  S5        [         R                  " SSS9nU R                  UR                  S5        [         R                  " SSS9nU R                  UR                  S5        [         R                  " SSS9nU R                  UR                  S5        [         R                  " SSS9nU R                  UR                  S5        [         R                  " SSS9nU R                  UR                  S5        [         R                  " SSS9nU R                  UR                  S5        [         R                  " SSS9nU R                  UR                  S5        [         R                  " SSS9nU R                  UR                  S5        [         R                  " SSS9nU R                  UR                  S5        [         R                  " SSS9nU R                  UR                  S5        [         R                  " SSS9nU R                  UR                  S5        [         R                  " SSS9nU R                  UR                  S5        U R	                  [
        [         R                  S5        U R	                  [
        [         R                  S5        U R	                  [
        [         R                  S5        U R	                  [
        [         R                  S5        U R	                  [
        [         R                  S5        U R	                  [
        [         R                  S5        U R	                  [
        [         R                  S5        U R	                  [
        [         R                  S 5        U R	                  [
        [         R                  S!5        U R                  [
        S"[         R                  S#SS9  U R                  [
        S$[         R                  S%SS9  U R                  [
        S&5        U R	                  [
        [         R                  S'SS9  U R                  [
        S([         R                  S)SS9  U R                  [
        S*[         R                  S+SS9  U R	                  [
        [         R                  S,SS9  U R	                  [
        [         R                  S-SS9  U R	                  [
        [         R                  S.SS9  U R	                  [
        [         R                  S/SS9  U R                  [
        S0[         R                  S1SS9  U R                  [
        S2[         R                  S3SS9  U R	                  [
        [         R                  S4SS9  U R	                  [
        [         R                  S5SS9  U R	                  [
        [         R                  S6SS9  U R	                  [
        [         R                  S7SS9  U R	                  [
        [         R                  S8SS9  U R	                  [
        [         R                  S9SS9  U R	                  [
        [         R                  S:SS9  U R	                  [
        [         R                  S;SS9  U R	                  [
        [         R                  S<SS9  U R                  [
        S=[         R                  S>SS9  U R                  [
        S=[         R                  S?SS9  U R                  [
        S=[         R                  S@SS9  U R                  [
        S$[         R                  SSS9  U R	                  [
        [         R                  S%SS9  U R                  [
        S$[         R                  SASS9  U R	                  [
        [         R                  SBSS9  g )CNzM%(levelname)-15s - %(message) 5s - %(process)03d - %(module) - %(asctime)*.3sz1%(asctime)*s - %(asctime)*.3s - %(process)-34.33oz%(process)#+027.23Xz
%(foo)#.*gz5$%{message}%$ - {asctime!a:15} - {customfield['key']}r  r  z{process:.2f} - {custom.f:.4f}z{customfield!s:#<30}z{message!r}z{message!s}z{message!a}z{process!r:4.2}z8{process!s:<#30,.12f}- {custom:=+#30,.1d} - {module:^30}z{process!s:{w},.{p}}z{foo:12.{p}}z{foo:{w}.6}z{foo[0].bar[1].baz}z{foo[k1].bar[k2].baz}z{12[k1].bar[k2].baz}z${asctime} - $messager  z$bar $$z	$bar $$$$z%(asctime)Zz%(asctime)bz%(asctime)*z%(asctime)*3sz%(asctime)_r  r  z%(foo)#12.3*fz%(foo)0*.8*fz;invalid format: invalid field name/expression: 'name-thing'z{name-thing}zinvalid format: no fieldsr  zinvalid conversion: 'Z'z{asctime!s:#30,15f}z7invalid format: expected ':' after conversion specifierz{asctime!aa:15}z%invalid format: bad specifier: '.2ff'z{process:.2ff}z{process:.2Z}z{process!s:<##30,12g}z{process!s:<#30#,12g}z{process!s:{{w}},{{p}}}z1invalid format: expected '}' before end of stringz{processz7invalid format: Single '}' encountered in format stringzprocess}z{{foo!r:4.2}z{{foo!r:4.2}}z	{foo/bar}z{foo:{{w}}.{{p}}}}z{foo!X:{{w}}.{{p}}}z{foo!a:random}z{foo!a:ran{dom}z{foo!a:ran{d}om}z
{foo.!a:d}z$invalid format: bare '$' not allowedz$bar $$$zbar $zfoo $.r  z	${asctime)r    r=   r^   _fmtr]  r  r  rF   r   s     rJ   test_format_validate"FormatterTest.test_format_validate  s    mn!pqQR!TU34!67l+. U]`a!XY>cJ!AB4C@!78m37/m37/m37//s;!23X`cd![\4C@!78nC80m37/33?!675SA!894C@!78 5SA!89is3+k5- 	*g&7&7G*g&7&7G*g&7&7G*g&7&7I*g&7&7G*g&7&7E*g&7&7F*g&7&7I*g&7&7H 	!!I~S 	" 	
 	!!'}C 	" 	
 	!!%	
 	*g&7&79NVYZ!!E0 	" 	
 	!!3/s 	" 	

 	*g&7&7PST*g&7&79PX[\*g&7&79PX[\*g&7&79RZ]^!!?z 	" 	

 	!!Ez 	" 	

 	*g&7&7sS*g&7&7PST*g&7&7CP*g&7&79MUXY*g&7&79NVYZ*g&7&79IQTU*g&7&79JRUV*g&7&79KSVW*g&7&7SQ 	!!4z 	" 	

 	!!4wc 	" 	

 	!!4xs 	" 	
 	!!'{# 	" 	

 	*g&7&7cR 	!!'uC 	" 	

 	*g&7&7CPro   c                 P   / SQn/ SQn[        X5       GH  u  p4[        R                  " X4SS0S9nU R                  5       nU R	                  UR                  U5      S5        U R                  S5      nU R	                  UR                  U5      S5        [        R                  " X4S9nU R                  5       nU R                  [        UR
                  U5        [        R                  " X4S	S0S9nU R                  S5      nU R	                  UR                  U5      S5        GM     g )
N)z%(custom)s %(message)sz{custom} {message}z$custom $message)%r  r  r  Default)r  rp  z#Default Message with 2 placeholdersz 1234 Message with 2 placeholdersr  zNon-existing)r`   r    r=   r  r^   r[  r]  r  )rF   fmtsstylesrZ  r  r   r   s          rJ   test_defaults_parameter%FormatterTest.test_defaults_parameters  s    S d+JC!!#h	=RSA!AQXXa[*OP)AQXXa[*LM !!#3A!Aj!((A6 !!#ni=XYA)AQXXa[*LM ,ro   c                 R    U R                  [        [        R                  S S S5        g )Nr  )r]  r  r    r=   rs   s    rJ   test_invalid_style FormatterTest.test_invalid_style  s    *g&7&7tSIro   c           
         U R                  5       n[        R                  " SSSSSSS[        5      n[        R                  " UR                  S 5      R                  5       5      Ul        SUl        [        R                  " S5      n[        R                  Ul        U R                  UR                  U5      S	5        U R                  UR                  US
5      S5        UR                  U5        U R                  UR                   S	5        g )N  r        ro  r   {   %(asctime)s %(message)sz1993-04-21 08:03:00,123z%Y:%dz1993:21)r  datetimeutcr  mktime
astimezone	timetuplecreatedmsecsr    r=   gmtime	converterr^   
formatTimer[  asctime)rF   r   r  r   s       rJ   	test_timeFormatterTest.test_time  s    OOtQAq!Q< KKd 3 = = ?@	78kka*CDa19=	$=>ro   c           
          " S S[         R                  5      nU R                  5       n[        R                  " SSSSSSS	[        5      n[
        R                  " UR                  S 5      R                  5       5      Ul	        U" 5       n[
        R                  Ul        U R                  UR                  U5      S
5        g )Nc                       \ rS rSrSrSrSrg)DFormatterTest.test_default_msec_format_none.<locals>.NoMsecFormatteri  Nz%d/%m/%Y %H:%M:%Sr|   )rw   rx   ry   rz   default_msec_formatdefault_time_formatr{   r|   ro   rJ   NoMsecFormatterr    s    "&"5ro   r  r  r  r  r  ro  r   r  z21/04/1993 08:03:00)r    r=   r  r  r  r  r  r  r   r  r  r  r^   r  )rF   r  r   r  r   s        rJ   test_default_msec_format_none+FormatterTest.test_default_msec_format_none  s    	6g// 	6 OOtQAq!S#>KKd 3 = = ?@	kka*?@ro   c                    [         R                  " SSSS9n[        S5       HZ  n[        R                  " S5        [         R
                  " SSUS	-   -  05      nUR                  U5      nU R                  S
U5        M\     g )Nz!{asctime}.{msecs:03.0f} {message}r  r  )rZ  r  rl  i	  g-C6:?r  z
Message %drq   z.1000)r    r=   r  r  r  r   r[  rM  )rF   r   r  r   rl   s        rJ   test_issue_89047FormatterTest.test_issue_89047  sm    "ESZmntAJJv%%ula!e.D&EFAAWa(	 ro   c                    SnU H  u  p#[        S5       nX$l        [        R                  " SS05      nS S S 5        U R	                  U5         U R                  WR                  U5        U R                  UR                  US-  5        U R                  UR                  [        UR                  5      -
  UR                  S-  SS9  S S S 5        M     g ! , (       d  f       N= f! , (       d  f       M  = f)	N))l    $lH: g      Y@)l   '$TrH: g     8@)   g]rH:         )l   )TrH: r  ztime.time_nsr  rE      eAg     @@r  )delta)
r   return_valuer    r   r  r^   r  r  assertAlmostEqualr  )rF   testsnswant
patched_nsr   s         rJ   /test_msecs_has_no_floating_point_precision_loss=FormatterTest.test_msecs_has_no_floating_point_precision_loss  s    
 HB~&**,' ..v? ' b!  t4  c:&&v~~FNN8K'K'-||c'9-1 ' 3 "!	 && "!s   CA:C%
C"	%
C4	c                    SnSn[         R                  " SU< SU< S35      n[        SU5      u  pEnUR                  5       n[	        X%R                  5       SS9 Hf  u  pxU R                  US	9   [        [        UR                  5       5      u  pU R                  XU-   S
-  SS9  U R                  XS-  SS9  S S S 5        Mh     g ! , (       d  f       Mz  = f)Nr  )r  r  iB0  i l    *C7qH: z
            start_ns = z
            offsets_ns = a  
            start_monotonic_ns = start_ns - 1

            import time
            # Only time.time_ns needs to be patched for the current
            # implementation, but patch also other functions to make
            # the test less implementation depending.
            old_time_ns = time.time_ns
            old_time = time.time
            old_monotonic_ns = time.monotonic_ns
            old_monotonic = time.monotonic
            time_ns_result = start_ns
            time.time_ns = lambda: time_ns_result
            time.time = lambda: time.time_ns()/1e9
            time.monotonic_ns = lambda: time_ns_result - start_monotonic_ns
            time.monotonic = lambda: time.monotonic_ns()/1e9
            try:
                import logging

                for offset_ns in offsets_ns:
                    # mock for log record creation
                    time_ns_result = start_ns + offset_ns
                    record = logging.makeLogRecord({'msg': 'test'})
                    print(record.created, record.relativeCreated)
            finally:
                time.time_ns = old_time_ns
                time.time = old_time
                time.monotonic_ns = old_monotonic_ns
                time.monotonic = old_monotonic
        -cT)r3  )	offset_nsr     )places    .A   )r  r  r   r  r`   r]   r  r  floatr   r  )rF   start_ns
offsets_nscodercouterrr#  liner  relativeCreateds              rJ   )test_relativeCreated_has_higher_precision7FormatterTest.test_relativeCreated_has_higher_precision  s     -J
 $ | $$ (	  @ (d3jjl":~~/?MOI	2+.udjjl+C(&&wI1E0LUV&W&&CPQ&R	 32  N22s   /A
C
C	)r  r  r   )rw   rx   ry   rz   rK   r  r  r  r  r  r  r  r  r  r  r  r1  r{   r|   ro   rJ   r  r    sJ    
"-&& &*TQlN(J?
A)3*0Sro   r  c                        \ rS rSrS rS rSrg)TestBufferingFormatteri  c                     S[        U5      -  $ )Nz[(%d)r_   rF   r.  s     rJ   formatHeader#TestBufferingFormatter.formatHeader      W%%ro   c                     S[        U5      -  $ )Nz(%d)]r6  r7  s     rJ   formatFooter#TestBufferingFormatter.formatFooter  r:  ro   r|   N)rw   rx   ry   rz   r8  r<  r{   r|   ro   rJ   r4  r4    s    &&ro   r4  c                   &    \ rS rSrS rS rS rSrg)BufferingFormatterTesti  c                 n    [         R                  " SS05      [         R                  " SS05      /U l        g )Nr  r  r  )r    r   r.  rs   s    rJ   rK   BufferingFormatterTest.setUp  s/    !!5%.1!!5%.1
ro   c                     [         R                  " 5       nU R                  SUR                  / 5      5        U R                  SUR                  U R                  5      5        g )Nr   onetwo)r    BufferingFormatterr^   r[  r.  r  s     rJ   test_default#BufferingFormatterTest.test_default  sE    &&(QXXb\*188DLL#9:ro   c                    [        5       nU R                  SUR                  U R                  5      5        [        R
                  " S5      n[        U5      nU R                  SUR                  U R                  5      5        g )Nz[(2)onetwo(2)]z<%(message)s>z[(2)<one><two>(2)])r4  r^   r[  r.  r    r=   )rF   r   lfs      rJ   test_custom"BufferingFormatterTest.test_custom  s`    "$)188DLL+AB/"2&-qxx/EFro   r0  N)rw   rx   ry   rz   rK   rE  rI  r{   r|   ro   rJ   r?  r?    s    
;
Gro   r?  c                       \ rS rSrS rSrg)ExceptionTesti  c                 R   U R                   n[        5       nUR                  U5         [        S5      e!   [        R
                  " SSS9   O= fUR                  U5        UR                  5         UR                  S   nU R                  UR                  R                  S5      5        U R                  UR                  R                  S5      5        U R                  UR                  R                  S5      5        U R                  UR                  R                  S	5      5        g )
Nr  failedTr  r   z#Traceback (most recent call last):
z!
RuntimeError: deliberate mistakeStack (most recent call last):
z,logging.exception('failed', stack_info=True))r3   RecordingHandlerrD   r  r    r  rO   rN   r.  rE   exc_textrN  r  r  )rF   r   rU   s      rJ   r{  ExceptionTest.test_formatting  s    	Q	9344	9h48			IIaL

-- /> ? 	@

++ -A B 	C// 1> ? 	@-- /? @ 	As	   4 Ar|   N)rw   rx   ry   rz   r{  r{   r|   ro   rJ   rL  rL    s    Aro   rL  c                       \ rS rSrS rSrg)LastResortTesti$  c                    U R                   nUR                  U R                  5        [        R                  n[        R
                  n [        R                  " 5        nUR                  S5        U R                  UR                  5       S5        UR                  S5        U R                  UR                  5       S5        S S S 5        S [        l        [        R                  " 5        nUR                  S5        SnU R                  UR                  5       U5        S S S 5        [        R                  " 5        nUR                  S5        U R                  UR                  5       S5        S S S 5        SUR                  l        S[        l        [        R                  " 5        nUR                  S5        U R                  UR                  5       S5        S S S 5        UR                  U R                  5        U[        l        U[        l        g ! , (       d  f       GNW= f! , (       d  f       GN= f! , (       d  f       N= f! , (       d  f       Nu= f! UR                  U R                  5        U[        l        U[        l        f = f)NzThis should not appearr   zFinal chance!zFinal chance!
z-No handlers could be found for logger "root"
F)r3   rO   r<   r    
lastResortr  r   r  r   r^   r\   r   r"   emittedNoHandlerWarningrD   )rF   rA  old_lastresortold_raise_exceptionsr  r  s         rJ   test_last_resortLastResortTest.test_last_resort%  s   4>>* ++&66	;((*f

34  !2B7_-  !24EF	 + "&G((*f_-F  !2C8 + ((*f_-  !2B7 +
 49DLL0&+G#((*f_-  !2B7 + OODNN+!/G&:G#7 +* +* +* +* OODNN+!/G&:G#sm   	I A#H(I )4H#I :2H5,9I %2II 
H I #
H2-I 5
I?I 
II 3J
r|   N)rw   rx   ry   rz   rZ  r{   r|   ro   rJ   rT  rT  $  s    #;ro   rT  c                        \ rS rSrS rS rSrg)FakeHandleriK  c           
      N    S H  n[        XU R                  XU5      5        M!     g )N)r  r   rN   r  )setattrrecord_call)rF   
identifiercalledr  s       rJ   r  FakeHandler.__init__M  s#    >FD$"2"2:v"NO ?ro   c                    ^^^ UUU4S jnU$ )Nc                  H   > T R                  SR                  TT5      5        g )Nz{} - {})r  r[  )rb  ra  method_names   rJ   inner&FakeHandler.record_call.<locals>.innerR  s    MM)**:{CDro   r|   )rF   ra  rf  rb  rg  s    ``` rJ   r`  FakeHandler.record_callQ  s    	Ero   r|   N)rw   rx   ry   rz   r  r`  r{   r|   ro   rJ   r]  r]  K  s    Pro   r]  c                   .   ^  \ rS rSrU 4S jrS rSrU =r$ )rP  iW  c                 <   > [         [        U ]
  " U0 UD6  / U l        g r   )r  rP  r  r.  r  s      rJ   r  RecordingHandler.__init__Y  s    .??ro   c                 :    U R                   R                  U5        g r   )r.  r  r  s     rJ   rx  RecordingHandler.handle]  s    F#ro   r0  )rw   rx   ry   rz   r  rx  r{   r  r  s   @rJ   rP  rP  W  s    $ $ro   rP  c                      ^  \ rS rSrU 4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U =r$ )ShutdownTestib  c                    > [         [        U ]  5         / U l        [        R
                  nU R                  [        [        SU5        g )Nr  )r  rp  rK   rb  r    r  r   r_  )rF   raise_exceptionsr  s     rJ   rK   ShutdownTest.setUpf  s7    lD')"22*;=MNro   c                    ^ U4S jnU$ )Nc                     > T " 5       er   r|   )r   s   rJ   rg  'ShutdownTest.raise_error.<locals>.innern  s
    'Mro   r|   )rF   r   rg  s    ` rJ   raise_errorShutdownTest.raise_errorm  s    	ro   c                 L   [        SU R                  5      n[        SU R                  5      n[        SU R                  5      n[        [        R                  R
                  XU/5      n[        R                  " [        U5      S9  / SQnU R                  XPR                  5        g )Nr   rq   r   r  )z2 - acquirez	2 - flushz	2 - closez2 - releasez1 - acquirez	1 - flushz	1 - closez1 - releasez0 - acquirez	0 - flushz	0 - close0 - release)	r]  rb  r  r    r  r  rD  r  r^   )rF   handler0handler1handler2rB   rj   s         rJ   test_no_failureShutdownTest.test_no_failurer  s}    q$++.q$++.q$++. w**X,JKT(^4L 	;;/ro   c                    [        SU R                  5      n[        X1U R                  U5      5        [        R
                  R                  U5      /n[        R                  " [        U5      S9  U R                  SU R                  S   5        g )Nr   r  rz  rl  )
r]  rb  r_  rw  r    r  r  rD  r  r^   )rF   r  r   r   rB   s        rJ   _test_with_failure_in_method)ShutdownTest._test_with_failure_in_method  sh    a-!1!1%!89OO''01T(^4B8ro   c                 0    U R                  S[        5        g Nr  r  r  rs   s    rJ   test_with_ioerror_in_acquire)ShutdownTest.test_with_ioerror_in_acquire  s    )))W=ro   c                 0    U R                  S[        5        g Nr   r  rs   s    rJ   test_with_ioerror_in_flush'ShutdownTest.test_with_ioerror_in_flush      ))'7;ro   c                 0    U R                  S[        5        g NrN   r  rs   s    rJ   test_with_ioerror_in_close'ShutdownTest.test_with_ioerror_in_close  r  ro   c                 0    U R                  S[        5        g r  r  r  rs   s    rJ   test_with_valueerror_in_acquire,ShutdownTest.test_with_valueerror_in_acquire  s    )))Z@ro   c                 0    U R                  S[        5        g r  r  rs   s    rJ   test_with_valueerror_in_flush*ShutdownTest.test_with_valueerror_in_flush      ))':>ro   c                 0    U R                  S[        5        g r  r  rs   s    rJ   test_with_valueerror_in_close*ShutdownTest.test_with_valueerror_in_close  r  ro   c                 F    S[         l        U R                  S[        5        g )NFr  r    r  r  
IndexErrorrs   s    rJ   .test_with_other_error_in_acquire_without_raise;ShutdownTest.test_with_other_error_in_acquire_without_raise  s    "')))Z@ro   c                 F    S[         l        U R                  S[        5        g )NFr   r  rs   s    rJ   ,test_with_other_error_in_flush_without_raise9ShutdownTest.test_with_other_error_in_flush_without_raise      "'))':>ro   c                 F    S[         l        U R                  S[        5        g )NFrN   r  rs   s    rJ   ,test_with_other_error_in_close_without_raise9ShutdownTest.test_with_other_error_in_close_without_raise  r  ro   c                 f    S[         l        U R                  [        U R                  S[        5        g )NTr  r    r  r]  r  r  rs   s    rJ   +test_with_other_error_in_acquire_with_raise8ShutdownTest.test_with_other_error_in_acquire_with_raise  s'    "&*d&G&G#Z	1ro   c                 f    S[         l        U R                  [        U R                  S[        5        g )NTr   r  rs   s    rJ   )test_with_other_error_in_flush_with_raise6ShutdownTest.test_with_other_error_in_flush_with_raise  '    "&*d&G&G!:	/ro   c                 f    S[         l        U R                  [        U R                  S[        5        g )NTrN   r  rs   s    rJ   )test_with_other_error_in_close_with_raise6ShutdownTest.test_with_other_error_in_close_with_raise  r  ro   )rb  )rw   rx   ry   rz   rK   rw  r~  r  r  r  r  r  r  r  r  r  r  r  r  r  r{   r  r  s   @rJ   rp  rp  b  s[    O
0 9><<A??A??1
/
/ /ro   rp  c                   l    \ 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g)ModuleLevelMiscTesti  c                    [         R                  R                  R                  nU R	                  US5        U R                  [         R                  U5        [         R                  " S5        U R	                  [         R                  R                  R                  S5        U R                  [        [         R                  S5         " S S5      nU R                  [        [         R                  U" 5       5        [         R                  " S5        [         R                  " 5         U R	                  [         R                  R                  R                  [         R                  5        g )Nr   S   doesnotexistsc                       \ rS rSrSrg);ModuleLevelMiscTest.test_disable.<locals>._NotAnIntOrStringi  r|   Nra  r|   ro   rJ   _NotAnIntOrStringr        ro   r  WARN)
r    rA  r"   rR   r^   r   r]  r  r0  r   )rF   old_disabler  s      rJ   test_disable ModuleLevelMiscTest.test_disable  s    ll**22a(5--55r:*gooG	 	 	)W__6G6IJ 	--55w7G7GHro   Nc                 <  ^ / m[         R                  " U [        SU4S j5        [        5       n[        R                  R                  U5        [        [        U5      nUb  U" USU5        O	U" SU5        U R                  [        UR                  5      S5        UR                  S   nU R                  UR                  5       SU-  5        Ub  UO[        [        UR                  5       5      nU R                  UR                  U5        U R                  T/ 5        g )NbasicConfigc                  (   > TR                  X45      $ r   r(  )r  kwrb  s     rJ   <lambda>/ModuleLevelMiscTest._test_log.<locals>.<lambda>  s    v}}aW'=ro   ztest me: %rrq   r   )r   r   r    rP  rA  rD   r0   r^   r_   r.  
getMessageupperr   )rF   r  r  	recording
log_methodr   expected_levelrb  s          @rJ   	_test_logModuleLevelMiscTest._test_log  s    dG]=	? %&		*Wf-
umY7}i0Y../3""1%**,mi.GH"'"3&,,.9Y8 	$ro   c                 D    U R                  S[        R                  5        g Nr   )r  r    r   rs   s    rJ   test_logModuleLevelMiscTest.test_log  s    ugmm,ro   c                 &    U R                  S5        g Nr   r  rs   s    rJ   
test_debugModuleLevelMiscTest.test_debug      wro   c                 &    U R                  S5        g Nr   r  rs   s    rJ   	test_infoModuleLevelMiscTest.test_info      vro   c                 &    U R                  S5        g Nr   r  rs   s    rJ   test_warning ModuleLevelMiscTest.test_warning      y!ro   c                 &    U R                  S5        g Nr   r  rs   s    rJ   
test_errorModuleLevelMiscTest.test_error  r  ro   c                 &    U R                  S5        g Nr5  r  rs   s    rJ   test_critical!ModuleLevelMiscTest.test_critical      z"ro   c                    U R                  [        [        R                  [        5         " S S[        R
                  5      n[        R                  " U5        U R                  [        R                  " 5       U5        [        R                  " [        R
                  5        U R                  [        R                  " 5       [        R
                  5        g )Nc                       \ rS rSrSrg);ModuleLevelMiscTest.test_set_logger_class.<locals>.MyLoggeri  r|   Nra  r|   ro   rJ   r.  r    r  ro   r.  )r]  r0  r    r1  rp  r/  r^   getLoggerClass)rF   r.  s     rJ   test_set_logger_class)ModuleLevelMiscTest.test_set_logger_class  s    )W%;%;VD	w~~ 	 	x(//18<w~~.//17>>Bro   c                   ^ / m " U4S jS[         R                  " 5       5      n[         R                  " U5        [         R                  " S5      nU R	                  TS/5        [
        R                  " 5       n[         R                  " U5      nUR                  U5         UR                  [         R                  5        UR                  S5        U R	                  UR                  5       R                  5       S5        UR                  S5        UR                  S5        UR                  [         R                   5        UR                  S5        U R	                  UR                  5       S5        UR#                  U5        UR%                  5         [         R                  " [         R&                  5        g ! UR#                  U5        UR%                  5         [         R                  " [         R&                  5        f = f)Nc                   H   >^  \ rS rSrS\R
                  4U U4S jjrSrU =r$ )@ModuleLevelMiscTest.test_subclass_logger_cache.<locals>.MyLoggeri  r.  c                 F   > [         TU ]  X5        TR                  S5        g )Ninitialized)r  r  r  )rF   rH   r  r  r7  s      rJ   r  IModuleLevelMiscTest.test_subclass_logger_cache.<locals>.MyLogger.__init__  s     -}-ro   r|   )	rw   rx   ry   rz   r    r   r  r{   r  )r  r7  s   @rJ   r.  r    s    $.gnn . .ro   r.  just_some_loggerr  hellor   r   )r    r  r1  r!   r^   r6   r7   r;   rD   r9   r:   r   r\   rq  truncater!  r   rO   rN   r/  )rF   r.  r  r8   rU   r7  s        @rJ   test_subclass_logger_cache.ModuleLevelMiscTest.test_subclass_logger_cache
  sZ   	.w--/ 	.
 	x(""#56=/2!!&)!	3OOGMM*LL!V__.446@OOAKKNOOGLL)LL!V__.3  #GGI""7>>2   #GGI""7>>2s   !CF7 7AG>c                     [         R                  " S5      n[        SU5      u  p#nUR                  5       nU R	                  SU5        U R	                  SU5        g )Na*  
            import logging

            class A:
                def __del__(self):
                    try:
                        raise ValueError("some error")
                    except Exception:
                        logging.exception("exception in __del__")

            a = A()
        r"  zexception in __del__zValueError: some error)r  r  r   r  r  rF   r+  r,  r-  r.  s        rJ   test_logging_at_shutdown,ModuleLevelMiscTest.test_logging_at_shutdown)  sP        (d3jjl,c2.4ro   c                 V   [         R                  nU R                  [         R                  U5        [        R
                  " SU< S35      n[        SU5        [        USS9 nU R                  UR                  5       R                  5       S5        S S S 5        g ! , (       d  f       g = f)Na  
            import builtins
            import logging

            class A:
                def __del__(self):
                    logging.error("log in __del__")

            # basicConfig() opens the file, but logging.shutdown() closes
            # it at Python exit. When A.__del__() is called,
            # FileHandler._open() must be called again to re-open the file.
            logging.basicConfig(filename=z, encoding="utf-8")

            a = A()

            # Simulate the Python finalization which removes the builtin
            # open() function.
            del builtins.open
        r"  rh  r  zERROR:root:log in __del__)r   TESTFNr   rt  r  r  r   r  r^   re   r-  )rF   r  r+  fps       rJ   test_logging_at_shutdown_open1ModuleLevelMiscTest.test_logging_at_shutdown_open<  s     ##	(((3 $* +3 6	  & 	t$(W-RWWY--/1LM .--s   "/B
B(c                     [         R                  " S5      n[        SU5      u  p#nUR                  5       nU R	                  SU5        U R                  US5        g )Nz
            import logging

            def rec():
                logging.error("foo")
                rec()

            rec()
        r"  z#Cannot recover from stack overflow.rq   )r  r  r   r  rM  r^   r  s        rJ   test_recursion_error(ModuleLevelMiscTest.test_recursion_error[  sS        -T48jjl>DQro   c                    [         R                  " 5       nU R                  [         R                  U5        U R	                  [         R                  U5        [         R                  " 5       nU R	                  X5        U R                  X5        g r   )r    getLevelNamesMappingr^   r+   assertIsNot)rF   mappingnew_mappings      rJ   test_get_level_names_mapping0ModuleLevelMiscTest.test_get_level_names_mappingk  sf    ..0--w7--w7224..ro   r|   r   )rw   rx   ry   rz   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r{   r|   ro   rJ   r  r    sK    I.%0- " #
C3>5&N>  /ro   r  c                       \ rS rSrS rS r\SS j5       r\S 5       r	S r
S r\R                  " 5       S	 5       r\R                  " 5       S
 5       rSrg)LogRecordTestit  c                     [         R                  " 0 5      n[        U5      nU R                  UR	                  S5      5        U R                  UR                  S5      5        g )Nz<LogRecord: >)r    r   r  rE   rN  r  )rF   r   rl   s      rJ   test_str_repLogRecordTest.test_str_repu  sD    !!"%F^45

3(ro   c                    [        5       n[        R                  " 5       nUR                  U5        SS0n[        R                  " SU5        U R                  UR                  S   R                  U5        U R                  UR                  S   R                  S5        UR                  U5        UR                  5         g )Nlessmorezless is %(less)sr   zless is more)rP  r    r!   rD   r   r   r.  rR  r^   r7  rO   rN   )rF   rU   r   r  s       rJ   test_dict_argLogRecordTest.test_dict_arg{  s    	Qf*A.aiil''+1--~>			ro   Nc                    [         R                  nU[         l         SS KnUR                  5       R                  n[         R
                  " SSU  305      n[        R                  " [        R                  SS 5         [         R
                  " SSU  305      nS S S 5        UUR                  WR                  S.nU[         l        U(       a  UR                  U5        g U$ ! , (       d  f       NN= f! U[         l        f = f)Nr   r  msg1_r  msg2_)processNamer1.processNamer2.processName)r    logMultiprocessingr  current_processrH   r   r   	swap_itemrr  modulesr  r+  )	r  r  r  prev_logMultiprocessingr  rH   r1r2resultss	            rJ   _extract_logrecord_process_name-LogRecordTest._extract_logrecord_process_name  s    ")"<"<%7"	A(%%',,D&&se}'=>B ""3;;0A4H**EU3%=+AB I )-)+)+G
 *AG&IIgN IH *AG&s$   AC1 <C "C1  
C.*C1 1C>c                 &   [         R                  " 5         S[        R                  ;   n U R	                  [
        R                  S5        Sn[
        R                  " 0 5      nU R	                  UR                  S5        U R                  SU5      nU R	                  SUS   5        U R	                  SUS   5        U R	                  SUS   5        SS K
nUR                  " 5       u  pgUR                  " U R                  S	X'4S
9nUR                  5         UR                  5       nU R                  SUS   5        U R	                  US   US   5        U R	                  SUS   5        UR!                  5         U(       a  SS K
ng g ! U(       a  SS K
nf f = f)Nr  TMainProcessrq   r  r  r  r   r   r  )r   r  rr  r"  r^   r    r  r   r  r'  r  PipeProcessr  r  assertNotEqualr   )	rF   multiprocessing_importedLOG_MULTI_PROCESSINGr   r&  r  parent_conn
child_connr  s	            rJ   test_multiprocessing"LogRecordTest.test_multiprocessing  sr   ::<#4#C  	'W77>#'  %%b)AQ]]M:::1>RSG]GM,BC]G4D,EF]G4D,EF #&5&:&:&<#K'';;-;A GGI!&&(Gw}/EFW]3W=M5NO]G4D,EFFFH (& ('& (s   EF Fc                    U R                   nU R                  n[        R                  " 0 5      nU" UR                  5        U" UR
                  5        U" UR                  5        U" UR                  5        U" UR                  5        [        R                  n[        R                  n[        R                  n[        R                  n S[        l	        S[        l
        S[        l        S[        l        [        R                  " 0 5      nU" UR                  5        U" UR
                  5        U" UR                  5        U" UR                  5        U" UR                  5        U[        l	        U[        l
        U[        l        U[        l        g ! U[        l	        U[        l
        U[        l        U[        l        f = f)NF)r	  r  r    r   r   
threadNameprocessr  taskName
logThreadslogProcessesr  logAsyncioTasks)rF   NONENOT_NONEr   log_threadslog_processeslog_multiprocessinglog_asyncio_taskss           rJ   test_optionalLogRecordTest.test_optional  sE     ''!!"%QZZ((,,%88#33	8!&G#(G ).G&&+G#%%b)ANO!,G#0G )<G&&7G# "-G#0G )<G&&7G#s   
BF .Gc                 \   #    [         R                  " 0 5      nU" UR                  5        g 7fr   )r    r   r7  )rF   	assertionr   s      rJ   _make_record_async LogRecordTest._make_record_async  s!     !!"%!**s   *,c                     U R                   n[        R                  " 5        nS[        l        UR                  U" U R                  5      5        S[        l        UR                  U" U R                  5      5        S S S 5        [        R                  " S 5        g ! , (       d  f       N%= f! [        R                  " S 5        f = f)NTF)	rE  asyncioRunnerr    r:  runr  r	  set_event_loop_policyrF   make_recordrunners      rJ   #test_taskName_with_asyncio_imported1LogRecordTest.test_taskName_with_asyncio_imported  s    	011K!V*.'

;t';';<=*/'

;t'8'89:	 " ))$/ "! ))$/s#   !B, AB<B, 
B)%B, ,Cc                     U R                   n[        R                  " 5        n[        R                  " [
        R                  SS 5         S[        l        UR                  U" U R                  5      5        S[        l        UR                  U" U R                  5      5        S S S 5        S S S 5        [        R                  " S 5        g ! , (       d  f       N-= f! , (       d  f       N6= f! [        R                  " S 5        f = f)NrH  TF)rE  rH  rI  r   r!  rr  r"  r    r:  rJ  r	  rK  rL  s      rJ   &test_taskName_without_asyncio_imported4LogRecordTest.test_taskName_without_asyncio_imported  s    	011K!VW->->s{{IW[-\*.'

;t'8'89:*/'

;t'8'89:	 .]! ))$/ .]-\!! ))$/s;   !C, 'C
AC
#C+C, 

C	C
C)%C, ,Dr|   r   )rw   rx   ry   rz   r  r  r!  r'  r  r2  rA  rE  r   r  rO  rR  r{   r|   ro   rJ   r  r  t  sz    )	  0 #' #'J8@ $$&	0 '	0 $$&	0 '	0ro   r  c                      ^  \ rS rSrU 4S jrU 4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S r\R2                  " 5       S 5       rSS jrS rS rS rS rS r S r!Sr"U =r#$ ) BasicConfigTesti  c                 |  > [         [        U ]  5         [        R                  R
                  U l        [        R                  R                  5       U l        [        R                  S S  U l
        [        R                  R                  U l        U R                  U R                  5        / [        R                  l        g r   )r  rU  rK   r    rA  rB   r%   r&   r'   r(   r)   r  r5   r   cleanupr  s    rJ   rK   BasicConfigTest.setUp  sy    ot*,--%//446")"6"6q"9&-ll&8&8#% "ro   c                    > [         R                  R                  S S   H2  n[         R                  R                  U5        UR	                  5         M4     [
        [        U ]  5         g r   )r    rA  rB   rO   rN   r  rU  rV   )rF   rU   r  s     rJ   rV   BasicConfigTest.tearDown  sF    &&q)ALL&&q)GGI * 	ot-/ro   c                 h   [        [        R                  SU R                  5        [        R                  R                  5         [        R                  R                  U R                  5        U R                  [        R                  S S & [        R                  R                  U R                  5        g )NrB   )r_  r    rA  rB   r%   rP   rQ   r'   r)   r(   r9   r5   rs   s    rJ   rW  BasicConfigTest.cleanup  sp    j$--8!  !4!45"&"9"9Qd99:ro   c                    [         R                  " 5         U R                  [        [         R                  R
                  5      S5        [         R                  R
                  S   nU R                  U[         R                  5        U R                  UR                  [        R                  5        UR                  nU R                  UR                  R                  [         R                  5        U R                  UR                   5        U R                  UR                  [         R"                  5        U R                  [         R                  R$                  U R&                  5        g )Nrq   r   )r    r  r^   r_   rA  rB   rQ  r;   r8   rr  r  rJ  rN  r  BASIC_FORMATr	  rl  PercentStyler  r5   )rF   r   rJ  s      rJ   test_no_kwargsBasicConfigTest.test_no_kwargs  s     	W\\223Q7,,''*gw'<'<=4%%	))..0D0DE)++,i..0D0DE 	++T-H-HIro   c                 n   [         R                  " 5        n[        R                  " [        R
                  SS9  [        R                  " S5        [        R
                  R                  S5        U R                  UR                  5       R                  5       S5        S S S 5        g ! , (       d  f       g = f)Nr  r8   r  Log an errorr   ERROR:root:Log an errorr   r  r    r  rr  r   r   r!  r^   r\   rq  r  s     rJ   test_strformatstyle#BasicConfigTest.test_strformatstyle0  o    $$&&szz=MM.)JJOOAV__.446)+	 '&&   BB&&
B4c                 n   [         R                  " 5        n[        R                  " [        R
                  SS9  [        R                  " S5        [        R
                  R                  S5        U R                  UR                  5       R                  5       S5        S S S 5        g ! , (       d  f       g = f)Nr  rc  rd  r   re  rf  r  s     rJ   test_stringtemplatestyle(BasicConfigTest.test_stringtemplatestyle8  ri  rj  c                 N   S n[         R                  " SSS9  U R                  [        [         R                  R
                  5      S5        [         R                  R
                  S   nU R                  U[         R                  5        [         R                  " SSSS9nU R                  UR                  R                  UR                  R                  5        U R                  UR                  R                  UR                  R                  5        U R                  XUS5        g )	Nc                 p    U R                  5         UR                  5         [        R                  " U5        g r   r  r  h2rU  s      rJ   rW  .BasicConfigTest.test_filename.<locals>.cleanupB      HHJHHJIIbMro   test.logrh  )r  rj  rq   r   r  r  )r    r  r^   r_   rA  rB   rQ  r  r8   moderH   r   rF   rW  r   rj   s       rJ   test_filenameBasicConfigTest.test_filename@  s    	
 	Z'BW\\223Q7,,''*gw':':;&&z3I,,hoo.B.BC,,hoo.B.BC(J?ro   c                 6   S n[         R                  " SSS9  [         R                  R                  S   n[         R                  " SS5      nU R                  UR                  R                  UR                  R                  5        U R                  XUS5        g )Nc                 p    U R                  5         UR                  5         [        R                  " U5        g r   r  rp  s      rJ   rW  .BasicConfigTest.test_filemode.<locals>.cleanupT  rs  ro   rt  wbr  filemoder   )	r    r  rA  rB   r  r^   r8   ru  r   rv  s       rJ   test_filemodeBasicConfigTest.test_filemodeR  ss    	
 	Z$?,,''*&&z48,,hoo.B.BC(J?ro   c                    [         R                  " 5       nU R                  UR                  5        [        R
                  " US9  U R                  [        [        R                  R                  5      S5        [        R                  R                  S   nU R                  U[        R                  5        U R                  UR                  U5        g )Nr  rq   r   )r6   r7   r   rN   r    r  r^   r_   rA  rB   rQ  r;   r8   )rF   r8   r   s      rJ   test_streamBasicConfigTest.test_stream`  s    %6*W\\223Q7,,''*gw'<'<=0ro   c                     [         R                  " SS9  [         R                  R                  S   R                  nU R                  UR                  R                  S5        g )Nz%(asctime)s - %(message)s)r[  r   )r    r  rA  rB   rJ  r^   rN  r  rF   rJ  s     rJ   test_formatBasicConfigTest.test_formatj  sH    #>?LL))!,66	))..0KLro   c                     [         R                  " SS9  [         R                  R                  S   R                  nU R                  UR                  S5        g )Nr  )rl  r   )r    r  rA  rB   rJ  r^   rl  r  s     rJ   test_datefmtBasicConfigTest.test_datefmtp  s@    E*LL))!,66	**E2ro   c                     [         R                  " SS9  [         R                  R                  S   R                  nU R                  UR                  [         R                  5        g )Nr  r  r   )r    r  rA  rB   rJ  rQ  rN  rO  r  s     rJ   
test_styleBasicConfigTest.test_stylev  sF    #&LL))!,66	i..0K0KLro   c                    [         R                  R                  nU R                  [         R                  R                  U5        [         R
                  " SS9  U R                  [         R                  R                  S5        [         R
                  " SS9  U R                  [         R                  R                  S5        g )N9   )r  :   )r    rA  r  r   r9   r  r^   )rF   	old_levels     rJ   
test_levelBasicConfigTest.test_level|  sy    LL&&	--y9"%++R0"%++R0ro   c                    U R                   n[        R                  " 5       /n[        R                  nU" [
        [        R                  SUS9  U" [
        [        R                  SUS9  U" [
        [        R                  UUS9  U" [
        [        R                  [        R                  S9  [        R                  " S SS9  g )Nrt  )r  r8   )r  rB   )r8   rB   )loglevelr  r}  )r]  r    r;   rr  r  r  r  r   )rF   r]  rB   r8   s       rJ   test_incompatible!BasicConfigTest.test_incompatible  s    (())+,Z!4!4z=C	EZ!4!4z?G	IZ!4!4V?G	I 	Z!4!4w||LTC8ro   c                 F   [         R                  " 5       [         R                  " [        R                  5      [         R                  " 5       /n[         R                  " 5       nUS   R                  U5        [         R                  " US9  U R                  US   [         R                  R                  S   5        U R                  US   [         R                  R                  S   5        U R                  US   [         R                  R                  S   5        U R                  US   R                  5        U R                  US   R                  5        U R                  US   R                  U5        U R                  US   R                  US   R                  5        g )Nr   )rB   r   rq   )r    r;   rr  r   r=   r@   r  r   rA  rB   r  rJ  )rF   rB   r   s      rJ   test_handlersBasicConfigTest.test_handlers  s0   !!#!!#**-!!#

   #X.hqk7<<#8#8#;<hqk7<<#8#8#;<hqk7<<#8#8#;<Xa[223Xa[223hqk++Q/hqk++Xa[-B-BCro   c                    [         R                  " 5       n[         R                  " 5       n[        R                  " U5      /n[        R                  " U5      /n[        R                  " [        R
                  US9  [        R                  " S5        [        R                  " S5        [        R                  " S5        U R                  [        [        R                  R                  5      S5        [        R                  " [        R                  USS9  [        R                  " S5        [        R                  " S5        [        R                  " S5        U R                  [        [        R                  R                  5      S5        U R                  UR                  5       R                  5       S5        U R                  UR                  5       R                  5       S	5        g )
Nr  rJ  r   r   rq   T)r  rB   forcezWARNING:root:warnz WARNING:root:warn
INFO:root:info)r6   r7   r    r;   r  r   r   r   r   r^   r_   rA  rB   r   r\   rq  )rF   old_string_ionew_string_ioold_handlersnew_handlerss        rJ   
test_forceBasicConfigTest.test_force  s;   --m<=--m<='//LIVgW\\223Q7',,"&	(VgW\\223Q7//1779,	.//1779<	>ro   c                     Sn[         R                  " SUSS[         R                  S9  U R                  [	        [         R
                  R                  5      S5        [         R
                  R                  S   nU R                  U[         R                  5        U R                  UR                  U5        [         R                  " S5        UR                  5         [        SSS	9 nUR                  5       R                  5       nS S S 5        [        R                   " S5        U R                  WS5        g ! , (       d  f       N7= f! WR                  5         [        SSS	9 nUR                  5       R                  5       nS S S 5        O! , (       d  f       O= f[        R                   " S5        U R                  WS5        f = f)
Nrh  rt  r3  %(message)sr  rj  errorsr[  r  rq   r   .   The Øresund Bridge joins Copenhagen to Malmör  r    r  r:   r^   r_   rA  rB   rQ  r  rj  r   rN   r  re   rq  rQ  r  rF   rj  r   r   r  s        rJ   test_encodingBasicConfigTest.test_encoding  sE   	OHh'/'4GMMK S!6!67;ll++A.G!!'7+>+>?W--x8MMJKMMOj73qvvx~~' 4IIj!TMO 43 MMOj73qvvx~~' 433IIj!TMO0   C
E &D66
EG"F
	G

F0Gc                     Sn[         R                  " SUSS[         R                  S9  U R                  [	        [         R
                  R                  5      S5        [         R
                  R                  S   nU R                  U[         R                  5        U R                  UR                  U5        [         R                  " S5        UR                  5         [        SS	S
9 nUR                  5       R                  5       nS S S 5        [        R                   " S5        U R                  WS5        g ! , (       d  f       N7= f! WR                  5         [        SS	S
9 nUR                  5       R                  5       nS S S 5        O! , (       d  f       O= f[        R                   " S5        U R                  WS5        f = f)Nrk  rt  ignorer  r  rq   r   r  rh  r  z*The resund Bridge joins Copenhagen to Malmr  r  s        rJ   test_encoding_errors$BasicConfigTest.test_encoding_errors  s?   	QHh'/'4GMMK S!6!67;ll++A.G!!'7+>+>?W--x8MMJKMMOj73qvvx~~' 4IIj!T#OP 43 MMOj73qvvx~~' 433IIj!T#OPr  c                     Sn[         R                  " SUS[         R                  S9  U R                  [	        [         R
                  R                  5      S5        [         R
                  R                  S   nU R                  U[         R                  5        U R                  UR                  U5        U R                  UR                  S5        [         R                  " S5        UR                  5         [        SS	S
9 nUR                  5       R                  5       nS S S 5        [         R"                  " S5        U R                  WS5        g ! , (       d  f       N7= f! WR                  5         [        SS	S
9 nUR                  5       R                  5       nS S S 5        O! , (       d  f       O= f[         R"                  " S5        U R                  WS5        f = f)Nrk  rt  r  )r  rj  r[  r  rq   r   backslashreplaceu<   😂: ☃️: The Øresund Bridge joins Copenhagen to Malmörh  r  zL\U0001f602: \u2603\ufe0f: The \xd8resund Bridge joins Copenhagen to Malm\xf6)r    r  r:   r^   r_   rA  rB   rQ  r  rj  r  r   rN   r  re   rq  rQ  r  r  s        rJ   test_encoding_errors_default,BasicConfigTest.test_encoding_errors_default  s]   	KHh'4GMMK S!6!67;ll++A.G!!'7+>+>?W--x8W^^-?@MMXYMMOj73qvvx~~' 4IIj!T $J K 43 MMOj73qvvx~~' 433IIj!T $J Ks0   C%E" E
E"G=F%	G%
F3/0Gc                 .  ^  Sn[         R                  " SUS S[         R                  S9  U R                  [	        [         R
                  R                  5      S5        [         R
                  R                  S   nU R                  U[         R                  5        U R                  UR                  U5        U R                  UR                  5        / mU4S jnX2l        [         R                  " S5        U R                  T5        U R                  S	TS   5        UR!                  5         [#        SS
S9 nUR%                  5       R'                  5       nS S S 5        [(        R*                  " S5        U R                  WS5        g ! , (       d  f       N7= f! WR!                  5         [#        SS
S9 nUR%                  5       R'                  5       nS S S 5        O! , (       d  f       O= f[(        R*                  " S5        U R                  WS5        f = f)Nrk  rt  r  r  rq   r   c                 `   > TR                  [        [        R                  " 5       5      5        g r   )r  r  rr  r  )r   r7  s    rJ   dummy_handle_errorEBasicConfigTest.test_encoding_errors_none.<locals>.dummy_handle_error  s    s3==?34ro   r  z:'ascii' codec can't encode character '\xd8' in position 4:rh  r  r   )r    r  r:   r^   r_   rA  rB   rQ  r  rj  r	  r  r  r   rE   r  rN   r  re   rq  rQ  r  )rF   rj  r   r  r   r  r7  s         @rJ   test_encoding_errors_none)BasicConfigTest.test_encoding_errors_none  s   	(Hh'+'4GMMK S!6!67;ll++A.G!!'7+>+>?W--x8gnn-G5 #5MMJKOOG$MM =>EajJ MMOj73qvvx~~' 4IIj!T3'	 43 MMOj73qvvx~~' 433IIj!T3's0   DF 6F
FH2G	H
G($0Hc                    S nS n[        SS5      nU R                  [        R                  U5         Sn[        R
                  " USU[        R                  SS9  U R                  [        [        R                  R                  5      S5        [        R                  R                  S	   nU R                  U[        R                  5        [        R                  " S
S9 nS
[        l        UR!                  U" 5       5        S S S 5        [#        USS9 nUR%                  5       R'                  5       nS S S 5        U R)                  WS5        [        R*                  " S 5        U(       a  UR-                  5         g g ! , (       d  f       N= f! , (       d  f       N`= f! [        R*                  " S 5        U(       a  UR-                  5         f f = f)Nc                  8   #    [         R                  " S5        g 7f)Nzhello world)r    r   r|   ro   rJ   rz  5BasicConfigTest.test_log_taskName.<locals>.log_record  s     OOM*s   r  ztest-logging-taskname-rh  r3  z%(taskName)s - %(message)s)r  r  rj  r  r[  rq   r   T)r   r  zTask-\d+ - hello world)rV  r   rQ  r  r    r  r   r^   r_   rA  rB   rQ  r  rH  rI  r:  rJ  r  re   rq  assertRegexrK  rN   )rF   rz  r   log_filenamerj  rN  r   r  s           rJ   test_log_taskName!BasicConfigTest.test_log_taskName  sS   	+ %f.FG		<0	 Hh)1'CE S!6!67;ll++A.G!!'7+>+>?d+v*.'

:<( , lW5vvx~~' 6T#<=))$/  ,+ 65 ))$/ s<   B,F "E;F F2F ;
F	F 
FF 0Gc                    ^ ^^ / m[         R                  mUUU 4S jn[        R                  " T [         SU5        [	        [         U5      nUb
  U" US5        OU" S5        T R                  TS0 4/5        g )Nc                     > T" 5         [         R                  R                  n[         R                  R                  S5        TR	                  [         R                  R                  U5        TR                  X45        g )Nd   )r    rA  r  r9   r   r  )r  r  r  rb  old_basic_configrF   s      rJ   my_basic_config2BasicConfigTest._test_log.<locals>.my_basic_config9  sP    **ILL!!#&OOGLL119=MM1'"ro   r  ztest mer|   )r    r  r   r   r0   r^   )rF   r  r  r  r  rb  r  s   `    @@rJ   r  BasicConfigTest._test_log4  si    "..	# 	dG]ODWf-
ui(y! 	2r(,ro   c                 D    U R                  S[        R                  5        g r  )r  r    r   rs   s    rJ   r  BasicConfigTest.test_logK  s    ugoo.ro   c                 &    U R                  S5        g r  r  rs   s    rJ   r  BasicConfigTest.test_debugN  r  ro   c                 &    U R                  S5        g r  r  rs   s    rJ   r  BasicConfigTest.test_infoQ  r  ro   c                 &    U R                  S5        g r  r  rs   s    rJ   r  BasicConfigTest.test_warningT  r  ro   c                 &    U R                  S5        g r  r  rs   s    rJ   r  BasicConfigTest.test_errorW  r  ro   c                 &    U R                  S5        g r  r  rs   s    rJ   r  BasicConfigTest.test_criticalZ  r  ro   )rB   r5   r)   r'   r   )$rw   rx   ry   rz   rK   rV   rW  r`  rg  rl  rw  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  s   @rJ   rU  rU    s    #0;J(++@$@1M3M19D">*O(Q&K((@ $$&  ' :-./ " # #ro   rU  c                   v   ^  \ rS rSrU 4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U =r$ )LoggerAdapterTesti^  c                 B  >^ [         [        U ]  5         [        R                  S S  m[        5       U l        [        R                  U l        U R                  R                  U R                  5        U R                  U R                  R                  U R                  5        U R                  U R                  R                  5        U4S jnU R                  U5        U R                  [        R                  5        [        R                  " U R                  S S9U l        g )Nc                  ,   > T [         R                  S S & g r   )r    r(   )old_handler_lists   rJ   rW  (LoggerAdapterTest.setUp.<locals>.cleanupi  s    &6G  #ro   r  r*  )r  r  rK   r    r(   rP  r  rA  r  rD   r   rO   rN   rD  r   adapter)rF   rW  r  r  s     @rJ   rK   LoggerAdapterTest.setUp_  s    ,."//2)+llt~~.114>>B,,-	7 	 ((),,DKKtLro   c                 d   SnS n SS-    U R	                  [        U R                  R                  5      S5        U R                  R                  S   nU R	                  UR                  [        R                  5        U R	                  UR                  U5        U R	                  UR                  U R                  45        U R	                  UR                  UR                  X"R                  45        g ! [          a2  nUnU R                  R                  XR                  5         S nAGNS nAff = fNztesting exception: %rrq   r   )r  r  r  r  r^   r_   r.  r   r    r   r  rR  r)  r  __traceback__rF   r  r  re  r   s        rJ   test_exception LoggerAdapterTest.test_exceptionp  s    %	8E
 	T^^334a8''*7S)t~~&78--.?.?@	B ! 	8CLL""377	8   C3 3
D/='D**D/c                 j    SS-    U R                  R                  SWS9  U R                  [	        U R
                  R                  5      S5        U R
                  R                  S   nU R                  UR                  UR                  X"R                  45        g ! [          a  nUn S nANS nAff = f)Nrq   r   zexc_info testr  )
r  r  r  r^   r_   r  r.  r)  r  r  )rF   re  r  r   s       rJ   test_exception_excinfo(LoggerAdapterTest.test_exception_excinfo  s    	E 	=T^^334a8''*--.?.?@	B ! 	C	s   B 
B2&B--B2c                    SnU R                   R                  XR                  5        U R                  [	        U R                  R
                  5      S5        U R                  R
                  S   nU R                  UR                  [        R                  5        U R                  UR                  U5        U R                  UR                  U R                  45        U R                  UR                  S5        g )Nzcritical test! %rrq   r   r  )r  r5  r  r^   r_   r.  r   r    r   r  rR  r  )rF   r  r   s      rJ   r  LoggerAdapterTest.test_critical  s    !c>>2T^^334a8''*)9)9:S)t~~&78/:ro   c                 b   U R                   R                  R                  R                  nSU R                   R                  R                  l        U R	                  [
        U R                   R                  R                  SU5        U R                  U R                   R                  S5      5        g )N!   rR   ru  )r  r  r"   rR   r   r_  ry  isEnabledForrF   r  s     rJ   test_is_enabled_for%LoggerAdapterTest.test_is_enabled_for  sw    ll))1199.0##+!4!4!<!<i#	%22267ro   c                 j   U R                  U R                  R                  5       5        U R                  R                   H  nU R                  R                  U5        M      U R                  U R                  R                  5       5        U R                  U R                  R                  5       5        g r   )rE   r  rA   r  rB   rO   ry  r#  s     rJ   test_has_handlers#LoggerAdapterTest.test_has_handlers  sy    0023{{++GKK%%g. , 	00231134ro   c                    Sn[        U R                  S S9n[        US S9nSUl        U R                  [	        U5      [	        U5      5        UR                  [        R                  XR                  5        U R                  [        U R                  R                  5      S5        U R                  R                  S   nU R                  UR                  [        R                  5        U R                  UR                  SU 35        U R                  UR                  U R                  45        U R                  UR                  S5        UR                  nU R!                  UR                  U5        U R!                  U R                  R                  U5        [#        5       n Xcl        U R!                  UR                  U5        U R!                  UR                  U5        U R!                  U R                  R                  U5        XSl        U R!                  UR                  U5        U R!                  UR                  U5        U R!                  U R                  R                  U5        g ! XSl        f = f)NzAdapters can be nested, yo.r  AdapterAdapterrq   r   zAdapter AdapterAdapter test_nested)PrefixAdapterr  r   r^   r  r   r    r   r  r_   r.  r   r  rR  r  r"   r   rp  )rF   r  r  adapter_adapterr   orig_managertemp_managers          rJ   r  LoggerAdapterTest.test_nested  s   +t{{$?'wdC!1g_(=>G,,c>>BT^^334a8''*)9)9:'>se%DEt~~&78-8&..goo|4dkk))<8x	3&2#MM/11<@MM'//<8MM$++--|<&2#o--|<goo|4dkk))<8 '3#s   #A$I, ,I4c                    U R                   R                  n[        U R                  5      nUR	                  SS5        U R                  [        US   R                  5      S5        U R                  US   R                  S5        UR                  [        R                  SS5        U R                  [        US   R                  5      S5        U R                  US   R                  S5        g )N
Hello, {}!worldrl  zHello, world!test_styled_adapterGoodbye {}.zGoodbye world.)r  r.  StyleAdapterr  r   r^   r  r  r  r   r    r   )rF   r.  r  s      rJ   r  %LoggerAdapterTest.test_styled_adapter  s    ..((t{{+g.WR[__-?--/DEGOO]G<WR[__-/?@--/DEro   c                     U R                   R                  n[        U R                  5      nSUl        [        U5      nUR                  SS5        U R                  [        US   R                  5      S5        U R                  US   R                  S5        UR                  [        R                  SS5        U R                  [        US   R                  5      S5        U R                  US   R                  S5        g )	Nz{}r  r  rl  z{} Hello, world!test_nested_styled_adapterr  z{} Goodbye world.)r  r.  r  r  r   r 	  r   r^   r  r  r  r   r    r   )rF   r.  r  adapter2s       rJ   r	  ,LoggerAdapterTest.test_nested_styled_adapter  s    ..((,(w/WR[__-/AB--/KLW__mW=WR[__-/BC--/KLro   c                   ^^^^ SmU R                   R                  mUU4S jmU4S jmU4S jnU R                  R                  nU" 5         U R	                  US   R
                  S5        US   R                  nTS-  mU" 5         U R	                  US   R
                  S5        U R                  US   R                  U5        US   R                  nTS-  mU" 5         U R	                  US   R
                  S5        U R                  US   R                  U5        US   R                  nTS-  mU" 5         U R	                  US   R
                  S	5        U R                  US   R                  U5        g )
Nrq   c                     > T" ST S9  g NrE  
stacklevelr|   	the_leveltriggers   rJ   	innermostELoggerAdapterTest.test_find_caller_with_stacklevel.<locals>.innermost      Fy1ro   c                     > T " 5         g r   r|   r	  s   rJ   rg  ALoggerAdapterTest.test_find_caller_with_stacklevel.<locals>.inner      Kro   c                     > T " 5         g r   r|   rg  s   rJ   outerALoggerAdapterTest.test_find_caller_with_stacklevel.<locals>.outer      Gro   rl  r	  rg  r	   test_find_caller_with_stacklevel)r  r   r  r.  r^   r  r  r  )rF   r	  r.  r  rg  r	  r	  r	  s       @@@@rJ   r	  2LoggerAdapterTest.test_find_caller_with_stacklevel  sJ   	,,&&	2		 ..((--{;##Q	--w772;--v6##Q	--w772;--v6##Q	--/QR72;--v6ro   c                    [         R                  " U R                  SS0S9U l        U R                  R	                  S5        U R                  [        U R                  R                  5      S5        U R                  R                  S   nU R                  [        US5      5        U R                  UR                  S5        g )Nr  r   r  zfoo should be hererq   r   r    r   r  r  r5  r^   r_   r  r.  rE   r  r  r  s     rJ   test_extra_in_records'LoggerAdapterTest.test_extra_in_records  s    ,,DKK493<A 	23T^^334a8''*./S)ro   c                    U R                   R                  SSS0S9  U R                  [        U R                  R
                  5      S5        U R                  R
                  S   nU R                  [        US5      5        g )Nzfoo should NOT be herer  noper*  rq   r   )r  r5  r^   r_   r  r.  ry  r  r  s     rJ    test_extra_not_merged_by_default2LoggerAdapterTest.test_extra_not_merged_by_default  sf    6ufoNT^^334a8''*/0ro   c                    [         R                  " U R                  SS0SS9U l        U R                  R	                  SSS0S9  U R                  [        U R                  R                  5      S	5        U R                  R                  S
   nU R                  [        US5      5        U R                  [        US5      5        U R                  UR                  S5        U R                  UR                  S5        g )Nr  r   Tr  r*  merge_extrazfoo and bar should be herer  r   r"	  rq   r   )r    r   r  r  r5  r^   r_   r  r.  rE   r  r  r  r  s     rJ   test_extra_merged#LoggerAdapterTest.test_extra_merged  s    ,,DKK493<9=? 	:5#,OT^^334a8''*././S)S)ro   c                    [         R                  " U R                  SS0SS9U l        U R                  R	                  SSS0S9  U R                  [        U R                  R                  5      S5        U R                  R                  S	   nU R                  [        US5      5        U R                  UR                  S5        g )
Nr  r   Tr&	  zfoo shall be minr   r"	  rq   r   r	  r  s     rJ   )test_extra_merged_log_call_has_precedence;LoggerAdapterTest.test_extra_merged_log_call_has_precedence  s    ,,DKK493<9=? 	0ET^^334a8''*./S)ro   )r  r  r  )rw   rx   ry   rz   rK   r  r  r  r  r  r  r  r	  r	  r	  r#	  r(	  r+	  r{   r  r  s   @rJ   r  r  ^  sT    M"B"B	;8598	F
M7@*1*	* 	*ro   r  c                       \ rS rSrSrS rSrg)r  i%  Adapterc                 (    U R                    SU 3U4$ r  r   )rF   r  rS  s      rJ   r6  PrefixAdapter.process(  s    ++au%v--ro   r|   N)rw   rx   ry   rz   r   r6  r{   r|   ro   rJ   r  r  %  s    F.ro   r  c                        \ rS rSrS rS rSrg)Messagei,  c                     Xl         X l        g r   )rZ  rR  )rF   rZ  rR  s      rJ   r  Message.__init__-  s    	ro   c                 H    U R                   R                  " U R                  6 $ r   )rZ  r[  rR  rs   s    rJ   __str__Message.__str__1  s    xx		**ro   )rR  rZ  N)rw   rx   ry   rz   r  r7	  r{   r|   ro   rJ   r3	  r3	  ,  s    +ro   r3	  c                   "    \ rS rSrSS.S jrSrg)r 	  i5  rq   r		  c                   U R                  U5      (       aB  U R                  X%5      u  p%U R                  R                  " U[	        X$5      40 UDSUS-   0D6  g g )Nr
	  rq   )r  r6  r  r   r3	  )rF   r  r  r
	  rR  rS  s         rJ   r   StyleAdapter.log6  sT    U##,,s3KCKKOOE73#5 5 5'1!|5 $ro   r|   N)rw   rx   ry   rz   r   r{   r|   ro   rJ   r 	  r 	  5  s    34 5 5ro   r 	  c                      ^  \ rS rSrU 4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U =r$ )
LoggerTesti=  c                   > [         [        U ]  5         [        5       U l        [
        R                  " SS9U l        U R                  R                  U R                  5        U R                  U R                  R                  U R                  5        U R                  U R                  R                  5        U R                  [
        R                  5        g )NblahrH   )r  r=	  rK   rP  r  r    r/  r  rD   r   rO   rN   rD  r  s    rJ   rK   LoggerTest.setUp?  s    j$%')+nn&1t~~.114>>B,,-(()ro   c                     U R                  [        SU R                  R                  S 5        U R                  [        SU R                  R                  S5        g )Nz,Level not an integer or a valid string: Nonez.Level not an integer or a valid string: (0, 0))r   r   )r  r0  r  r9   rs   s    rJ   test_set_invalid_level!LoggerTest.test_set_invalid_levelH  sJ    !!EKK  $	( 	!!GKK  &	*ro   c                 d   SnS n SS-    U R	                  [        U R                  R                  5      S5        U R                  R                  S   nU R	                  UR                  [        R                  5        U R	                  UR                  U5        U R	                  UR                  U R                  45        U R	                  UR                  UR                  X"R                  45        g ! [          a2  nUnU R                  R                  XR                  5         S nAGNS nAff = fr  )r  r  r  r  r^   r_   r.  r   r    r   r  rR  r)  r  r  r  s        rJ   r  LoggerTest.test_exceptionP  s    %	7E
 	T^^334a8''*7S)t~~&78--.?.?@	B ! 	7CKK!!#~~66	7r  c                     [         R                  " [        SS5         U R                  [        U R
                  R                  SS5        S S S 5        g ! , (       d  f       g = f)Nr  Tr   test message)r   	swap_attrr    r]  r0  r  r   rs   s    rJ   !test_log_invalid_level_with_raise,LoggerTest.test_log_invalid_level_with_raisea  s>    w(94@i$O A@@s   -A
A!c                     [         R                  " [        SS5         U R                  R	                  SS5        S S S 5        g ! , (       d  f       g = f)Nr  Fr   rH	  )r   rI	  r    r  r   rs   s    rJ   test_log_invalid_level_no_raise*LoggerTest.test_log_invalid_level_no_raisee  s4    w(95AKKOOD.1 BAAs   A
Ac                    ^ / m[         R                  " U [        R                  SU4S j5        U R                  R                  SS9  U R                  [        T5      S5        U R                  STS   5        g )Nprint_stackc                 B   > TR                  UR                  5       5      $ r   )r  r\   )r   r  rb  s     rJ   r  =LoggerTest.test_find_caller_with_stack_info.<locals>.<lambda>l  s    fmmDMMO&Dro   Tr  rq   rO  r   )r   r   r    	tracebackr  
findCallerr^   r_   )rF   rb  s    @rJ    test_find_caller_with_stack_info+LoggerTest.test_find_caller_with_stack_infoi  sd    dG--}D	F 	$/Va(;VAYGro   c                   ^^^^ SmU R                   R                  mUU4S jmU4S jmU4S jnU R                  R                  nU" 5         U R	                  US   R
                  S5        US   R                  nTS-  mU" 5         U R	                  US   R
                  S5        U R                  US   R                  U5        US   R                  nTS-  mU" 5         U R	                  US   R
                  S5        U R                  US   R                  U5        US   R                  n[        R                  " 5       nUR                  U R                  5        [        R                  mU" 5         U R	                  US   R
                  S5        UR                  U R                  5        U R                   R                  mTS-  mU" 5         U R	                  US   R
                  S	5        U R                  US   R                  U5        g )
Nrq   c                     > T" ST S9  g r	  r|   r	  s   rJ   r	  >LoggerTest.test_find_caller_with_stacklevel.<locals>.innermostw  r	  ro   c                     > T " 5         g r   r|   r	  s   rJ   rg  :LoggerTest.test_find_caller_with_stacklevel.<locals>.innerz  r	  ro   c                     > T " 5         g r   r|   r	  s   rJ   r	  :LoggerTest.test_find_caller_with_stacklevel.<locals>.outer}  r	  ro   rl  r	  rg  r	  r	  )r  r   r  r.  r^   r  r  r  r    r!   rD   rO   )	rF   r	  r.  r  r3   rg  r	  r	  r	  s	        @@@@rJ   r	  +LoggerTest.test_find_caller_with_stacklevels  s   	++%%	2		 ..((--{;##Q	--w772;--v6##Q	--w772;--v6##'')t~~.//--w7!!$..1++%%Q	--/QR72;--v6ro   c                    SnSnS =n=n=n=n=n=p[         R                  " XX4XVXxU	5	      n
S[        U
R                  R	                  5       5      -    H4  nUS0nU R                  [        U R                  R                  XX4XVUXS9  M6     g )N	my record   )r7  r  
some valuer*  sinfo)	r    _logRecordFactoryrc   __dict__keysr]  r  r  
makeRecord)rF   rH   r  rU  lnor  rR  r)  r  rd	  rvr  r*  s                rJ   %test_make_record_with_extra_overwrite0LoggerTest.test_make_record_with_extra_overwrite  s    :>>>S>3>>>4&&tBS'/u> *E"++2B2B2D,EEC,'Eh(>(> s($)  8 Fro   c                     SnSnS =n=n=n=n=n=pSS0n
U R                   R                  XX4XVXzU	S9	nU R                  SUR                  5        g )Nr`	  ra	  	valid_keyrb	  rc	  )r  rh	  r  rf	  )rF   rH   r  rU  ri	  r  rR  r)  r  rd	  r*  rK  s               rJ   (test_make_record_with_extra_no_overwrite3LoggerTest.test_make_record_with_extra_no_overwrite  sn    :>>>S>3>>>4l+''Rc(0U ( Lk6??3ro   c                    U R                  U R                  R                  5       5        U R                  R                   H  nU R                  R	                  U5        M      U R                  U R                  R                  5       5        g r   )rE   r  rA   rB   rO   ry  r#  s     rJ   r  LoggerTest.test_has_handlers  s\    //12{{++GKK%%g. ,0023ro   c                 |    [         R                  " S5      nSUl        U R                  UR	                  5       5        g )Nz
blah.childF)r    r!   r  ry  rA   )rF   child_loggers     rJ   test_has_handlers_no_propagate)LoggerTest.test_has_handlers_no_propagate  s1    ((6!&1134ro   c                 &   U R                   R                  R                  nSU R                   R                  l        U R                  [        U R                   R                  SU5        U R                  U R                   R                  S5      5        g )N   rR      )r  r"   rR   r   r_  ry  r  r  s     rJ   r  LoggerTest.test_is_enabled_for  sb    kk))11&(#!4!4iM11"56ro   c                    U R                   R                  nU R                   R                  R                  nSU R                   l        SU R                   R                  l        U R	                  [
        U R                   SU5        U R	                  [
        U R                   R                  SU5        U R                  U R                   R                  S5      5        g )NTr  r   rR   ry	  )r  r   r"   rR   r   r_  ry  r  )rF   old_disabledr  s      rJ   #test_is_enabled_for_disabled_logger.LoggerTest.test_is_enabled_for_disabled_logger  s    {{++kk))11#&(#j,G!4!4iM11"56ro   c                    [         R                  " 5       nU R                  U[         R                  5        U R                  U[         R                  " S 5      5        U R                  U[         R                  " S5      5        U R                  U[         R                  " S5      5        U R                  U[         R                  " S5      R                  5        U R                  U[         R                  " S5      R                  5        U R                  U[         R                  " S5      R                  5        U R                  U[         R                  " S5      5        U R                  U[         R                  " S5      R                  5        g )Nr   rA  r  rK   )r    r!   r   rA  r  r	  )rF   rA  s     rJ   test_root_logger_aliases#LoggerTest.test_root_logger_aliases  s     "dGLL)dG--d34dG--b12dG--f56dG--e499:dG--i8==>dG--e4;;<w0067w00;BBCro   c                     U R                  [        [        R                  [        5        U R                  [        [        R                  S5        g )Ns   foo)r]  r0  r    r!   anyrs   s    rJ   test_invalid_namesLoggerTest.test_invalid_names  s2    )W%6%6<)W%6%6?ro   c                    [        [        R                  S-   5       H_  nS HV  n[        R                  " U5      n[        R
                  " X15      n[        R                  " U5      nU R                  XS5        MX     Ma     g )Nrq   )r   rA  r  rK  zbaz.bar)r  r  HIGHEST_PROTOCOLr    r!   r6  r  r   )rF   protorH   r  rl   	unpickleds         rJ   test_picklingLoggerTest.test_pickling  s^    622Q67EA **40LL/"LLO	i0	 B 8ro   c                 t
   U R                   n[        R                  " S5      n[        R                  " S5      nUR                  [        R                  5        U R                  UR                  5       [        R                  5        U R                  UR                  0 5        U R                  UR                  [        R                  5      5        U R                  UR                  [        R                  5      5        U R                  UR                  [        R                  S[        R                  S05        U R                  UR                  0 5        U R                  UR                  [        R                  5      5        U R                  UR                  0 5        U R                  UR                  [        R                  5      5        U R                  UR                  [        R                  S05        UR                  [        R                  5        U R                  UR                  5       [        R                  5        U R                  UR                  0 5        U R                  UR                  [        R                  5      5        UR                  [        R                  5        U R                  UR                  5       [        R                  5        U R                  UR                  0 5        U R                  UR                  0 5        U R                  UR                  0 5        U R                  UR                  [        R                  5      5        U R                  UR                  [        R                  5      5        U R                  UR                  [        R                  5      5        U R                  UR                  [        R                  5      5        U R                  UR                  [        R                  5      5        [        R                  " 5         U R                  UR                  5       [        R                  5        U R                  UR                  0 5        U R                  UR                  0 5        U R                  UR                  0 5        U R                  UR                  [        R                  5      5        U R                  UR                  [        R                  5      5        U R                  UR                  [        R                  5      5        g )Nr=  rA  TF)r3   r    r!   r9   r   r^   r4   _cacherE   r  ry  r:   r   r   rR   )rF   rA  r1   r2   s       rJ   test_cachingLoggerTest.test_caching  sz   ##E*##I. 	gmm$224gmmD, 	,,W]];<--gmm<='--w}}e)TUb),,W]];< 	b)))'--89w}}d&;< 	))*224g6F6FG, 	--gmm<= 	(224g6F6FG,,b) 	--gmm<=,,W-=-=>?--gmm<=,,W-=-=>?))'--89 	224g6F6FG,,b) 	--g.>.>?@--g.>.>?@**7+;+;<=ro   )r  r  )rw   rx   ry   rz   rK   rC	  r  rJ	  rM	  rU	  r	  rk	  ro	  r  ru	  r  r}	  r	  r	  r	  r	  r{   r  r  s   @rJ   r=	  r=	  =  sc    **B"P2H%7N8445
7
7D@16> 6>ro   r=	  c                   ,    \ rS rSrS rS rS rS rSrg)BaseFileTesti   c                 ^    [         R                  U 5        [        SS5      U l        / U l        g )Nr  ztest_logging-2-)r   rK   rV  rU  rmfilesrs   s    rJ   rK   BaseFileTest.setUp#  s$    t ):;ro   c                    U R                    H  n[        R                  " U5        M     [        R                  R	                  U R
                  5      (       a   [        R                  " U R
                  5        [        R                  U 5        g r   )r	  rQ  rt  rz  r{  rU  r   rV   )rF   rU  s     rJ   rV   BaseFileTest.tearDown(  sP    ,,BIIbM 77>>$''""IIdgg$ro   c                     U R                  [        R                  R                  U5      SU-  S9  U R                  R                  U5        g )NzLog file %r does not existr  )rE   rQ  rz  r{  r	  r  )rF   r  s     rJ   assertLogFileBaseFileTest.assertLogFile/  s=    x088C 	 	EH%ro   c           
      t    [         R                  " S[         R                  SSU R                  5       S S S 5      $ )Nr  r  rq   )r    r  r:   rt   rs   s    rJ   next_recBaseFileTest.next_rec5  s5      gmmS!!%!2!2!4dD$H 	Hro   )rU  r	  N)	rw   rx   ry   rz   rK   rV   r	  r	  r{   r|   ro   rJ   r	  r	     s    
 &Hro   r	  c                        \ rS rSrS rS rSrg)FileHandlerTesti9  c                 :   [         R                  " U R                  5        [        R                  " U R                  SSS9nU R                  UR                  5        U R                  [         R                  R                  U R                  5      5        UR                  [        R                  " 0 5      5        U R                  UR                  5        U R                  [         R                  R                  U R                  5      5        UR                  5         g )Nrh  Tri  )rQ  rt  rU  r    r  r	  r8   ry  rz  r{  rx  r   r  rE   rN   )rF   fhs     rJ   
test_delayFileHandlerTest.test_delay:  s    
		$''  7$G"))$01
		'''+,RYY'tww/0

ro   c                 $   [         R                  " U R                  5        [        R                  " U R                  SSS9nUR                  [        R                  " S5      5        UR                  U R                  5       5        UR                  5         UR                  U R                  5       5        [        U R                  5       nU R                  UR                  5       R                  5       S5        S S S 5        g ! , (       d  f       g = f)Nrh  r  )rj  ru  r  r   )rQ  rt  rU  r    r  r@   r=   r_  r	  rN   r  r^   re   rq  )rF   r	  r  s      rJ   %test_emit_after_closing_in_write_mode5FileHandlerTest.test_emit_after_closing_in_write_modeD  s    
		$''  7E
))-89
 


 $'']bRWWY__.4 ]]s   	/D
Dr|   N)rw   rx   ry   rz   r	  r	  r{   r|   ro   rJ   r	  r	  9  s    	5ro   r	  c                       \ rS rSrS r\R                  " \R                  S5      S 5       r	S r
S rSS jrS rS	 rS
 r\R                   " 5       S 5       rSrg)RotatingFileHandlerTestiO  c                    [         R                  R                  U R                  SSS9nU R	                  UR                  S 5      5        UR                  5         [         R                  R                  U R                  SSS9nU R	                  UR                  S 5      5        UR                  5         [        U R                  S5       nUR                  S5        S S S 5        [         R                  R                  U R                  SSS9nU R	                  UR                  S 5      5        UR                  5         g ! , (       d  f       Nh= f)Nrh  rq   rj  maxBytesr   r|     
)	r    rB   r  rU  ry  shouldRolloverrN   r  r  )rF   rhr   s      rJ   test_should_not_rollover0RotatingFileHandlerTest.test_should_not_rolloverP  s   11GGg 2 3**401

 11'A 2 7**401

$''4 AGGEN !11'A 2 7**401

 ! s   	D==
EWASI does not have /dev/null.c                     [         R                  R                  [        R                  SSS9nU R                  UR                  U R                  5       5      5        UR                  5         g )Nrh  rq   r	  )	r    rB   r  rQ  devnullry  r	  r	  rN   rF   r	  s     rJ   !test_should_not_rollover_non_file9RotatingFileHandlerTest.test_should_not_rollover_non_filed  sR    
 11

Wq 2 :**4==?;<

ro   c                 T   [        U R                  S5       nUR                  S5        S S S 5        [        R                  R                  U R                  SSS9nU R                  UR                  U R                  5       5      5        UR                  5         g ! , (       d  f       Nv= f)Nr|  r	  rh  r   r	  )
r  rU  r  r    rB   r  rE   r	  r	  rN   )rF   r   r	  s      rJ   test_should_rollover,RotatingFileHandlerTest.test_should_rollovern  ss    $''4 AGGEN !11$''GVW1X))$--/:;

	 ! s   B
B'c                 (   [         R                  " U R                  5        [        R                  R                  U R                  SS9nUR                  U R                  5       5        U R                  U R                  5        UR                  5         g )Nrh  r  )
rQ  rt  rU  r    rB   r  r_  r	  r	  rN   r	  s     rJ   test_file_created)RotatingFileHandlerTest.test_file_createdu  s`     			$''11$''G1L
 477#

ro   c                 J   U(       a  SU0O0 n[         R                  " U R                  5        [        R                  R
                  " U R                  4SSSS.UD6nU R                  [         R                  R                  U R                  5      U(       + 5        [        R                  " SS05      n[        R                  " SS05      nU R                  UR                  U5      5        U R                  UR                  U5      5        UR                  U5        U R                  U R                  5        U R                  [         R                  R                  U R                  S	-   5      5        U R                  UR                  U5      5        U R                  UR                  U5      5        UR                  U5        U R                  [         R                  R                  U R                  5      5        U R                  U R                  S	-   5        U R                  [         R                  R                  U R                  S
-   5      5        U R                  UR                  U5      5        U R                  UR                  U5      5        UR                  5         g )Nrk  rh  r   r  rj  backupCountr	  r  r  dbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb.1.2)rQ  rt  rU  r    rB   r  r   rz  r{  r   ry  r	  r_  r	  rE   rN   )rF   rk  rS  r	  smalllarges         rJ   test_max_bytes&RotatingFileHandlerTest.test_max_bytes~  s   %*'5!
		$''11GGN%1sNFLNbggnnTWW-5y9%%ucl3%%ug&67**512**512
477#$78**512))%01
tww/0477T>*$78))%01))%01

ro   c                 "    U R                  SS9  g )NT)rk  )r	  rs   s    rJ   test_max_bytes_delay,RotatingFileHandlerTest.test_max_bytes_delay  s    $'ro   c                 P   S n[         R                  R                  U R                  SSSS9nXl        UR                  U R                  5       5        U R                  U R                  5        U R                  [        R                  R                  U" U R                  S-   5      5      5        UR                  U R                  5       5        U R                  U" U R                  S-   5      5        U R                  [        R                  R                  U" U R                  S-   5      5      5        UR                  U R                  5       5        U R                  U" U R                  S-   5      5        U R                  [        R                  R                  U" U R                  S-   5      5      5        UR                  U R                  5       5        U R                  [        R                  R                  U" U R                  S-   5      5      5        UR                  5         g )	Nc                     U S-   $ N.testr|   r@	  s    rJ   namer>RotatingFileHandlerTest.test_rollover_filenames.<locals>.namer  s    '>!ro   rh  r   rq   r	  r	  r	  .3)r    rB   r  rU  r	  r_  r	  r	  ry  rQ  rz  r{  rN   )rF   r	  r	  s      rJ   test_rollover_filenames/RotatingFileHandlerTest.test_rollover_filenames  sn   	"11GGg1q 2 B
 477#dggn(=>?
 5401dggn(=>?
 5401dggn(=>?
 dggn(=>?

ro   c                     " S S[         R                  R                  5      nU" U R                  SSSS9nU R	                  UR                  U R                  5      U R                  S-   5        UR                  U R                  5       5        U R                  U R                  5        UR                  U R                  5       5        U R                  UR                  U R                  S-   5      S	-   5        U R                  [        R                  R                  UR                  U R                  S-   5      5      5        UR                  5         g )
Nc                        \ rS rSrS rS rSrg)ZRotatingFileHandlerTest.test_namer_rotator_inheritance.<locals>.HandlerWithNamerAndRotatori  c                     US-   $ r	  r|   )rF   rH   s     rJ   r	  `RotatingFileHandlerTest.test_namer_rotator_inheritance.<locals>.HandlerWithNamerAndRotator.namer  s    g~%ro   c                     [         R                  R                  U5      (       a  [         R                  " XS-   5        g g )N.rotated)rQ  rz  r{  r?  )rF   sourcedests      rJ   rotatorbRotatingFileHandlerTest.test_namer_rotator_inheritance.<locals>.HandlerWithNamerAndRotator.rotator  s+    77>>&))JJvj'89 *ro   r|   N)rw   rx   ry   rz   r	  r	  r{   r|   ro   rJ   HandlerWithNamerAndRotatorr	    s    &:ro   r	  rh  r   rq   r	  r	  r	  r	  )r    rB   r  rU  r^   r	  r_  r	  r	  ry  rQ  rz  r{  rN   )rF   r	  r	  s      rJ   test_namer_rotator_inheritance6RotatingFileHandlerTest.test_namer_rotator_inheritance  s    	:)9)9)M)M 	: (GGg1qB$''*DGGg,=>
 477#
 288DGGdN3j@A4(@AB

ro   c                    S nS n[         R                  R                  U R                  SSSS9nX#l        Xl        U R                  5       nUR                  U5        U R                  U R                  5        U R                  5       nUR                  U5        U" U R                  S-   5      nU R                  U5        [        R                  n[        US5       nUR                  5       n	[        R                  " U	5      n
U R                  U
R!                  S	5      UR"                  U-   5        S S S 5        UR                  U R                  5       5        U" U R                  S
-   5      nU R                  U5        [        US5       nUR                  5       n	[        R                  " U	5      n
U R                  U
R!                  S	5      UR"                  U-   5        S S S 5        UR                  U R                  5       5        U" U R                  S
-   5      n[        US5       nUR                  5       n	[        R                  " U	5      n
U R                  U
R!                  S	5      UR"                  U-   5        S S S 5        U R%                  [        R&                  R)                  U" U R                  S-   5      5      5        UR+                  5         g ! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       N= f)Nc                     U S-   $ )Nz.gzr|   r@	  s    rJ   r	  3RotatingFileHandlerTest.test_rotator.<locals>.namer  s    %<ro   c                 8   [        U S5       nUR                  5       n[        R                  " US5      n[        US5       nUR	                  U5        S S S 5        S S S 5        [
        R                  " U 5        g ! , (       d  f       N-= f! , (       d  f       N6= f)Nrbr  r|  )r  re   zlibcompressr  rQ  r  )r	  r	  sfr  
compresseddfs         rJ   r	  5RotatingFileHandlerTest.test_rotator.<locals>.rotator  sk    fd#rwwy!]]43
$%HHZ( & $
 IIf &% $#s#   4BA:B:
B	B
Brh  r   rq   r	  r	  r	  rk  r	  r	  )r    rB   r  rU  r	  r	  r	  r_  r	  rQ  linesepr  re   r	  
decompressr^   r  r  ry  rz  r{  rN   )rF   r	  r	  r	  m1m2rU  newliner   r	  r  s              rJ   test_rotator$RotatingFileHandlerTest.test_rotator  s.   	 	 11GGg1q 2 B
]]_
477#]]_
477T>"2**"d^qJ??:.DT[[1266G3CD  	 477T>"2"d^qJ??:.DT[[1266G3CD  	 477T>""d^qJ??:.DT[[1266G3CD  	dggn(=>?

% ^ ^ ^s'   AK
AK('AK:
K%(
K7:
Lr|   NF)rw   rx   ry   rz   r	  r  r  r   is_wasir	  r	  r	  r	  r	  r	  r	  requires_zlibr	  r{   r|   ro   rJ   r	  r	  O  sg    ( __W__&EF G.(&& * *ro   r	  c                   N   \ rS rSr\R
                  " \R                  S5      S 5       rS r	SS jr
S rS rS rS	 rS
 rS r\R"                  " S5      S 5       r\R"                  " S5      S 5       r\R"                  " S5      S 5       r\R"                  " S5      S 5       rSrg)TimedRotatingFileHandlerTesti  r	  c                    [         R                  R                  [        R                  SSSS9n[
        R                  " S5        [         R                  " SS05      nU R                  UR                  U5      5        UR                  5         g )NSrh  rq   rj  r	  皙?r  ztesting - device file)r    rB   r  rQ  r	  r  r  r   ry  r	  rN   )rF   r	  r   s      rJ   r	  5TimedRotatingFileHandlerTest.test_should_not_rollover  sp     66

C'q 7 B

3!!5*A"BC**1-.

ro   c                    [         R                  R                  U R                  SSSS9n[         R                  " S5      nUR                  U5        [         R                  " SS05      nUR                  U5        U R                  U R                  5        [        R                  " S5        [         R                  " SS	05      nUR                  U5        UR                  5         S
n[        R                  R                  5       nSn[        U5       H{  nU[        R                  " US9-
  n	U R                  U	R!                  S5      -   n
["        R$                  R'                  U
5      nU(       d  M`  U R(                  R+                  U
5          O   SU-  nU(       Gd  ["        R$                  R-                  U R                  5      u  p["        R.                  " U5       Vs/ s H  oR1                  U
5      (       d  M  UPM     nn[3        SUR!                  S5      -  [4        R6                  S9  [3        SU-  [4        R6                  S9  U H^  n[3        SU-  5        ["        R$                  R9                  X5      n[;        US5       n[3        UR=                  5       5        S S S 5        M`     U R?                  X[S9  g s  snf ! , (       d  f       M  = f)Nr	  rh  rq   r	  r  r  ztesting - initialr	  ztesting - after delayFi,  secondsz.%Y-%m-%d_%H-%M-%Sz,No rotated files found, went back %d secondszTest time: %sz%Y-%m-%d %H-%M-%Sr  zThe only matching files are: %szContents of %s:r   r	  ) r    rB   r  rU  r=   r@   r   r_  r	  r  r  rN   r  r  r  	timedeltastrftimerQ  rz  r{  r	  r  r   listdirrN  r  rr  r  r   r  re   rE   )rF   r	  rZ  r$  r%  foundr  GO_BACKsecsprevrU  r  dnr   filesrz  tfs                    rJ   test_rollover*TimedRotatingFileHandlerTest.test_rollover  s   66wA 7 ? 9:
""E+>#?@
477#

3""E+B#CD


 ##%'ND++D99D4==)=>>BGGNN2&Eu##B' # =wFWW]]477+FB "

2C1,,r2BQEC/CLL1D$EECJJW3e;#**M'!+,ww||B*$_"'')$ %_ 
 	' D %_s   !J?>J?	K
K	c                 H   [         R                  " U R                  5        [        R                  R	                  5       nUR                  5       nSUR                  S-  s=:  a  S:  dY  O  [
        R                  " SUR                  S-  -
  S-  5        [        R                  R	                  5       nUR                  5       nUR                  SS9n[        R                  " S5      nU(       a  SUR                  5        3OS	n[        S
5       Hy  n[        R                  R                  U R                  SXSS9nUR                  U5        [        R                   " SSU 305      nUR#                  U5        UR%                  5         M{     U R'                  U R                  5        [)        U R                  SS9 n	[+        U	5       H  u  pjU R-                  SU 3U
5        M     S S S 5        [.        R0                  " U R                  UR3                  5       S-
  4S-  5        [        S5       Hy  n[        R                  R                  U R                  SXSS9nUR                  U5        [        R                   " SSU 305      nUR#                  U5        UR%                  5         M{     U[        R4                  " U(       a  SOSS9-
  nU R                   SUS 3nU R'                  U5        [)        U R                  SS9 n	[+        U	5       H  u  pjU R-                  SU 3U
5        M     S S S 5        [)        USS9 n	[+        U	5       H  u  pjU R-                  SU 3U
5        M     S S S 5        g ! , (       d  f       GN= f! , (       d  f       N]= f! , (       d  f       g = f)Ng?r&  g?g      ?r   )microsecondr  WMIDNIGHTro  rh  )rj  whenatTimer  z	testing1 r  rq   r   z	testing2 r'  daysr   z%Y-%m-%d)r   rt  rU  r  r  r  r
  r  r?  r    r=   weekdayr  rB   r  r@   r   r_  rN   r	  r  	enumerater  rQ  utime	timestampr
  )rF   weeklyr  r
  rZ  r
  r  r	  r%  r   r/  rolloverDateotherfns                rJ   test_rollover_at_midnight6TimedRotatingFileHandlerTest.test_rollover_at_midnight!  s   !##%V''+1c1 JJf0044;<##'')CXXZFA. 9:&,3;;=/"*qA!!::' ; EBOOC &&1#'?@BGGBKHHJ  	477#$''G,$Q<	!ot4 ( - 	3==?Q.023qA!!::' ; EBOOC &&1#'?@BGGBKHHJ  X//&QaHHWWIQ|H567#$''G,$Q<	!ot4 ( - 'G,$Q<	!ot4 ( -,% -, -, -,s$   :*M0*N=*N0
M?
N
N!c                 "    U R                  SS9  g )NT)r
  )r
  rs   s    rJ   test_rollover_at_weekday5TimedRotatingFileHandlerTest.test_rollover_at_weekdayL  s    &&d&3ro   c           	      B   U R                   nU" [        [        R                  R                  U R
                  SSSS9  U" [        [        R                  R                  U R
                  SSSS9  U" [        [        R                  R                  U R
                  SSSS9  g )NXrh  Tri  r
  W7)r]  r  r    rB   r  rU  )rF   r]  s     rJ   test_invalid)TimedRotatingFileHandlerTest.test_invalidO  s    ((Z!1!1!J!JWWcG4	AZ!1!1!J!JWWcG4	AZ!1!1!J!JWWdWD	Bro   c                    Sn[         R                  R                  U R                  SSSS S9n UR	                  U5      nU R                  X1S-   5        UR	                  US-   S-
  5      nU R                  X1S-   5        UR	                  US-   5      nU R                  X1S-   5        UR	                  US	-   5      nU R                  X1S-   5        UR                  5         [        R                  " S
SS5      n[         R                  R                  U R                  SSSUS9n UR	                  U5      nU R                  X1S-   5        UR	                  US-   S-
  5      nU R                  X1S-   5        UR	                  US-   5      nU R                  X1S-   5        UR	                  US-   5      nU R                  X1S-   5        UR                  5         g ! UR                  5         f = f! UR                  5         f = f)Nr   rh  r
  Trj  r
  r  r
  Q rq   i  i_      i@ ж  )	r    rB   r  rU  computeRolloverr^   rN   r  r  )rF   currentTimer	  ri   r
  s        rJ   "test_compute_rollover_daily_attime?TimedRotatingFileHandlerTest.test_compute_rollover_daily_attimeY  s   66GGgJT 7 #	''4FV<%?@''l(BQ(FGFV<%?@''l(BCFV<%?@''l(BCFV<%?@HHJr1a(66GGgJV 7 %	''4FV<%?@''l(BQ(FGFV<%?@''l(BCFV<%?@''l(BCFV<%?@HHJ' HHJ& HHJs   B G #B G) G&)G;c                    [        [        R                  " 5       5      nXS-  -
  n[        R                  " SSS5      n[        R                  " U5      R                  n[        S5       GH  n[        R                  R                  U R                  SSU-  SSSUS	9n XE:  a	  SU-
  U-   nOXT-
  nUS-  nUS
-  nXr-  nUR                  U5      nX:w  a2  [        S[        R                  -  5        [        S[        5       -  5        U R                  X5        UR                  US
-   S-
  5      nX:w  a2  [        S[        R                  -  5        [        S[        5       -  5        U R                  X5        XT:X  a  US-  nUR                  US
-   5      nX:w  a2  [        S[        R                  -  5        [        S[        5       -  5        U R                  X5        UR                  US-   5      nX:w  a2  [        S[        R                  -  5        [        S[        5       -  5        U R                  X5        UR                  5         GM     g ! UR                  5         f = f)Nr)
  r*
  r   r'  rh  zW%drq   T)rj  r
  intervalr	  r  r
  r+
  zfailed in timezone: %dzlocal vars: %si:	 r,
  )r  r  r  r  tm_wdayr  r    rB   r  rU  r-
  r  timezonelocalsr^   rN   )	rF   r.
  todayr
  wdaydayr	  rj   ri   s	            rJ   #test_compute_rollover_weekly_attime@TimedRotatingFileHandlerTest.test_compute_rollover_weekly_attime  s   $))+&E11r1a({{5!))8C!!::'aUV ; )B): !"D3H #
HL(L(!++E2%2T]]BC*VX56  2++EL,@1,DE%2T]]BC*VX56  2; 00H++EL,@A%2T]]BC*VX56  2++EL,@A%2T]]BC*VX56  2
[ Z 
s   FII c           	         [         R                  " SS9nU R                  [        R                  U5        / n[
        R
                  R                  5       n[        S5       H:  nUR                  UR                  S5      5        U[
        R                  " SS9-  nM<     Sn/ n/ nU GH  n[        R                  R                  USU-  5      n	[        R                  R!                  U	S	SS
SS9n
UR                  U
5        UR#                  S5      (       a#  U H  nUR                  U< SU< 35        M     M  UR#                  S5      (       a-  S nXl        U H  nUR                  U< SU< S35        M     M  US:X  d  M  S nXl        U H  nUR                  SU-  5        M     GM     U H8  n[        R                  R                  X5      n	['        U	S5       n S S S 5        M:     [)        U5       GH  u  pHXt   n
U
R+                  5       nU R-                  [/        U5      SU5        UR#                  S5      (       aR  SU-  n	U HE  n[        R                  R1                  U5      u  nnU R3                  UR#                  U	5      5        MG     M  UR#                  S5      (       a  U H  n[        R                  R1                  U5      u  nnU R3                  UR5                  S5      U5        U R3                  UR#                  US-   5      =(       a    U[/        U5      S-      R7                  5       5        M     GML  US:X  d  GMU  U H  n[        R                  R1                  U5      u  nnU R3                  UR5                  S5      5        U R3                  UR#                  S5      =(       a    US   R7                  5       5        M     GM     g ! , (       d  f       GM7  = f)Nrj  r0	  r  %Y-%m-%d_%H-%M-%Sr  r	  )a.bza.b.cd.ezd.e.frv  z%s.logrl   r'  Tr
  r2
  r	  rk  r=
  z.log.r>
  c                     [         R                  R                  U 5      u  pUR                  SS5      S-   n[         R                  R	                  X5      $ )Nr  r   )rQ  rz  r   r?  r   r  r  basenames      rJ   r	  HTimedRotatingFileHandlerTest.test_compute_files_to_delete.<locals>.namer  sA    (*h(?%G'//;fDH77<<::ro   r   r  rv  c                     [         R                  R                  U 5      u  pSUSS  -   S-   n[         R                  R                  X5      $ )Nrv  r$  .oldlog)rQ  rz  r   r   rA
  s      rJ   r	  rC
    s?    (*h(?%G"Xab\1I=H77<<::ro   z
g%s.oldlogr|  ro  z%s.log.r   rE
  rq   )rO  mkdtempr   shutilrmtreer  r  r  r  r
  r
  rQ  rz  r   r    rB   r  rN  r	  r  r
  getFilesToDeleter^   r_   r   rE   r  isdigit)rF   wdtimesr  r  prefixesr

  rotatorsr   r  r	  r,  r	  rU  r   
candidatesrq  r  s                     rJ   test_compute_files_to_delete9TimedRotatingFileHandlerTest.test_compute_files_to_delete  s$   _5r*""$rALL%89:($$Q//B  9FRF!23A&&??IJLMFJ @ LG OOG$  ''ALL!:; ""5)); !&ALL!:; 3; !&ALL!12 1 6 BR$Aa!  
 #8,IAkG 113JS_a<  ''&#AGGMM!,EArOOBMM!$45 $ ""5))#AGGMM!,EArOOBKK$7<OOBMM&3,$? %B$&s6{Q$7$?$?$AC $
 3#AGGMM!,EArOOBKK	$:;OOBMM#$6$J2a5==?K $! - s   O
O'	c           	      f   [         R                  " [        R                  " SS95      nU R	                  [
        R                  U5        / n[        R                  R                  5       nSn[        U5       H:  nUR                  UR                  S5      5        U[        R                  " SS9-  nM<     Sn/ n/ n[        U5       H_  u  pU	S-   n[        R                  R!                  X-  S	SUS
S9nUR                  U5        U H  nUR                  U
< SU< 35        M     Ma     U H  nUR                  SU-  5        M     U H  nX-  R#                  5         M     [        U5       H  u  pU	S-   nX   nUR%                  5       nU R'                  [)        U5      XK-
  U5        [*        R,                  " S5      nU Hk  n[.        R0                  R3                  U5      u  nnU R5                  UR7                  U
S-   5      5        U[)        U
5      S-   S  nU R9                  UU5        Mm     M     g )Nrj  r0	  r  r<
  r  r	  )za.logza.log.brq   rl   Tr?
  r   z
a.log.%s.cz&^\d{4}-\d{2}-\d{2}_\d{2}-\d{2}-\d{2}\Z)pathlibPathrO  rF
  r   rG
  rH
  r  r  r  r  r
  r
  r
  r    rB   r  touchrI
  r^   r_   rY   rZ   rQ  rz  r   rE   rN  r  )rF   rK
  rL
  r  n_filesr  rM
  r

  rN
  r  r   r	  r	  r,  r   rO
  matcherrq  r  rU  ra  s                        rJ   ?test_compute_files_to_delete_same_filename_different_extensions\TimedRotatingFileHandlerTest.test_compute_files_to_delete_same_filename_different_extensions  s   \\(**/BCr*""$wALL%89:($$Q//B   ("8,IAA#K&&??RUIJLWFJ @ LG OOG$23  - ALL)*  AVNN  #8,IAA#KkG 113JS_g.CZPjj!JKGa(2fSj 9:S[],-  1	   -ro   zEST+05EDT,M3.2.0,M11.1.0c                 b  ^ ^ [         R                   nUU 4S jn[        R                  R                  T R                  SSSS9mU" U" SSSS	S
S
5      U" SSSSS5      5        U" U" SSSSS5      U" SSSSS5      5        U" U" SSSSS5      U" SSSSS5      5        U" U" SSSS	S
S
5      U" SSSSS5      5        U" U" SSSSS5      U" SSSSS5      5        U" U" SSSSS5      U" SSSSS5      5        TR                  5         [        R                  R                  T R                  SSS[         R                  " SSS5      S9mU" U" SSSSS
S
5      U" SSSSS5      5        U" U" SSSSS5      U" SSSSS5      5        U" U" SSSSS5      U" SSSSS5      5        U" U" SSSSS
S
5      U" SSSSS5      5        U" U" SSSSS5      U" SSSSS5      5        U" U" SSSSS5      U" SSSSS5      5        TR                  5         [        R                  R                  T R                  SSS[         R                  " SSS5      S9mU" U" SSSSS
S
5      U" SSSSS5      5        U" U" SSSSS5      U" SSSSS5      5        U" U" SSSSS5      U" SSSSS5      5        U" U" SSSSS
S
5      U" SSSSS5      5        U" U" SSSSS5      U" SSSSS5      5        U" U" SSSSS5      U" SSSSS5      5        U" U" SSSSS
S
5      U" SSSSS5      5        U" U" SSSSS5      U" SSSSS5      5        U" U" SSSSS5      U" SSSSS5      5        U" U" SSSSS
S
5      U" SSSSS5      5        U" U" SSSSS
S
SS9U" SSSSS5      5        U" U" SSSSS5      U" SSSSS5      5        U" U" SSSSS5      U" SSSSS5      5        TR                  5         [        R                  R                  T R                  SSS[         R                  " SSS5      S9mU" U" SSSSSS
5      U" SSSSS5      5        U" U" SSSSS5      U" SSSSS5      5        U" U" SSSSS5      U" SSSSS5      5        U" U" SSSSS
S
5      U" SSSSS5      5        U" U" SSSSS5      U" SSSSS5      5        U" U" SSSSS5      U" SSSSS5      5        U" U" SSSSSS
5      U" SSSSS5      5        U" U" SSSSS5      U" SSSSS5      5        U" U" SSSSS5      U" SSSSS5      5        TR                  5         [        R                  R                  T R                  SSS[         R                  " SSS5      S9mU" U" SSSSSS
5      U" SSSSS5      5        U" U" SSSSS5      U" SSSSS5      5        U" U" SSSSS
S
5      U" SSSSS5      5        U" U" SSSSS5      U" SSSSS5      5        U" U" SSSSS5      U" SSSSS5      5        U" U" SSSSS5      U" SSSSS5      5        U" U" SSSSSS
5      U" SSSSS5      5        U" U" SSSSS5      U" SSSSS5      5        U" U" SSSSS
S
5      U" SSSSS5      5        U" U" SSSSSSS9U" SSSSSSS95        U" U" SSSSSS
SS9U" SSSSSSS95        U" U" SSSSSSS9U" SSSSS5      5        U" U" SSSSS
S
SS9U" SSSSS5      5        U" U" SSSSS5      U" SSSSS5      5        U" U" SSSSS5      U" SSSSS5      5        TR                  5         g )Nc                    > TR                  U R                  5       5      nX!R                  5       -
  nU(       a&  TR                  US[        R                  " US95        g g Nr   r	  r-
  r
  r^   r  r
  currentrj   ri   diffr	  rF   s       rJ   rE  OTimedRotatingFileHandlerTest.test_compute_rollover_MIDNIGHT_local.<locals>.test&  R    ''(9(9(;<F..00D  q(*<*<T*JK ro   rh  r
  Frj  r
  r    ro  r  rx	  ;   rt  r   r*
  rq   r  r  r(
  ra	  r   fold      r  r    rB   r  rU  rN   r  rF   DTrE  r	  s   `  @rJ   $test_compute_rollover_MIDNIGHT_localATimedRotatingFileHandlerTest.test_compute_rollover_MIDNIGHT_local"  st    	L 66GGgJE 7 C 	RaRR("T1b!Q*?@RaQ"BtQAq$9:RaQ"BtQAq$9:Rb!RR("T2q!Q*?@Rb!Q"BtRAq$9:Rb!Q"BtRAq$9:

66GGgJE==Q* 7 , 	RaRR("T1b"a*@ARaR#RaR%;<RaR#RaR%;<Rb!RR("T2q"a*@ARb!R#Rb!R%;<Rb!R#Rb!R%;<

66GGgJE==Aq) 7 + 	RaQB'D!RA)>?RaQ"BtQAq$9:RaQ"BtQAq$9:RaQB'D!RA)>?RaQ"BtQAq$9:RaQ"BtQAq$9:Rb!QB'D"aA)>?Rb!Q"BtRAq$9:Rb!Q"BtRAq$9: 	Rb!QB'D"aA)>?Rb!QBQ/D"aA1FGRb!Q"BtRAq$9:Rb!Q"BtRAq$9:

66GGgJE==B* 7 , 	RaQB'D!RB)?@RaQ#RaQ%;<RaQ"BtQAr$:;RaQB'D!RB)?@RaQ"BtQAr$:;RaQ#RaQ%;<Rb!QB'D"aB)?@Rb!Q#Rb!Q%;<Rb!Q"BtRAr$:;

66GGgJE==B* 7 , 	RaQB'D!RB)?@RaQ#RaQ%;<RaQB'D!RB)?@RaQ"BtQAr$:;RaQ#RaQ%;< 	Rb!Q"BtRAr$:;Rb!QB'D"aB)?@Rb!Q#Rb!Q%;<Rb!QB'D"aB)?@ 	Rb!Q*BtRAr,JKRb!QBQ/D"aBQ1OPRb!Q+Rb!Q-CDRb!QBQ/D"aB1GHRb!Q"BtRAr$:;Rb!Q#Rb!Q%;<

ro   c                 d  ^ ^ [         R                   nUU 4S jn[        R                  R                  T R                  SSSS9mU" U" SSSS	S
S
5      U" SSSSS5      5        U" U" SSSSS5      U" SSSSS5      5        U" U" SSSSS5      U" SSSSS5      5        U" U" SSSS	S
S
5      U" SSSSS5      5        U" U" SSSSS5      U" SSSSS5      5        U" U" SSSSS5      U" SSSSS5      5        TR                  5         [        R                  R                  T R                  SSS[         R                  " SSS5      S9mU" U" SSSS	S
S
5      U" SSSSS5      5        U" U" SSSSS5      U" SSSSS5      5        U" U" SSSSS5      U" SSSSS5      5        U" U" SSSS	S
S
5      U" SSSSS5      5        U" U" SSSSS5      U" SSSSS5      5        U" U" SSSSS5      U" SSSSS5      5        TR                  5         [        R                  R                  T R                  SSS[         R                  " SSS5      S9mU" U" SSSSS
S
5      U" SSSSS5      5        U" U" SSSSS5      U" SSSSS5      5        U" U" SSSSS5      U" SSSSS5      5        U" U" SSSSS
S
5      U" SSSSS5      5        U" U" SSSSS5      U" SSSSS5      5        U" U" SSSSS5      U" SSSSS5      5        TR                  5         [        R                  R                  T R                  SSS[         R                  " SSS5      S9mU" U" SSSSS
S
5      U" SSSSS5      5        U" U" SSSSS5      U" SSSSS5      5        U" U" SSSSS5      U" SSSSS5      5        U" U" SSSSS
S
5      U" SSSSS5      5        U" U" SSSSS5      U" SSSSS5      5        U" U" SSSSS5      U" SSSSS5      5        U" U" SSSSS
S
5      U" SSSSS5      5        U" U" SSSSS5      U" SSSSS5      5        U" U" SSSSS5      U" SSSSS5      5        U" U" SSSSS
S
5      U" SSSSS5      5        U" U" SSSSS
S
SS9U" SSSSS5      5        U" U" SSSSS5      U" SSSSS5      5        U" U" SSSSS5      U" SSSSS5      5        TR                  5         [        R                  R                  T R                  SSS[         R                  " SSS5      S9mU" U" SSSSSS
5      U" SSSSS5      5        U" U" SSSSS5      U" SSSSS5      5        U" U" SSSSS5      U" SSSSS5      5        U" U" SSSSS
S
5      U" SSSSS5      5        U" U" SSSSS5      U" SSSSS5      5        U" U" SSSSS5      U" SSSSS5      5        U" U" SSSSSS
5      U" SSSSS5      5        U" U" SSSSS5      U" SSSSS5      5        U" U" SSSSS5      U" SSSSS5      5        TR                  5         [        R                  R                  T R                  SSS[         R                  " SSS5      S9mU" U" SSSSSS
5      U" SSSSS5      5        U" U" SSSSS5      U" SSSSS5      5        U" U" SSSSS
S
5      U" SSSSS5      5        U" U" SSSSS5      U" SSSSS5      5        U" U" SSSSS5      U" SSSSS5      5        U" U" SSSSS5      U" SSSSS5      5        U" U" SSSSSS
5      U" SSSSS5      5        U" U" SSSSS5      U" SSSSS5      5        U" U" SSSSS
S
5      U" SSSSS5      5        U" U" SSSSSSS9U" SSSSSSS95        U" U" SSSSSS
SS9U" SSSSSSS95        U" U" SSSSSSS9U" SSSSS5      5        U" U" SSSSS
S
SS9U" SSSSS5      5        U" U" SSSSS5      U" SSSSS5      5        U" U" SSSSS5      U" SSSSS5      5        TR                  5         g )Nc                    > TR                  U R                  5       5      nX!R                  5       -
  nU(       a&  TR                  US[        R                  " US95        g g r\
  r]
  r^
  s       rJ   rE  ITimedRotatingFileHandlerTest.test_compute_rollover_W6_local.<locals>.test  rb
  ro   rh  W6Frc
  rd
  ro  r  rx	  re
  r  r   r*
  rq   r     ri
  rt  r(
     ra	  r   rf
  rh
  rj
  rk
  s   `  @rJ   test_compute_rollover_W6_local;TimedRotatingFileHandlerTest.test_compute_rollover_W6_local  s	    	L 66GGgDe 7 = 	RaBB'D!Q1)=>RaAq!2dAr1a#89RaAq!2dAr1a#89Rb"b"b)2dBAq+ABRb"a#Rb!Q%:;Rb"a#Rb!Q%:;

66GGgDe==Aq) 7 + 	RaRR("T1b!Q*?@RaQ"BtQAq$9:RaQ"BtQAq$9:Rb!RR("T2q!Q*?@Rb!Q"BtRQ$:;Rb!Q"BtRQ$:;

66GGgDe==Q* 7 , 	RaBB'D!QA)>?RaB"BtQB$:;RaB"BtQB$:;Rb"b"b)2dBB+BCRb"b!$br1b!&<=Rb"b!$br1b!&<=

66GGgDe==Aq) 7 + 	RaAr2&4Aq!(<=RaAq!2dAr1a#89RaAq!2dAr1a#89RaQB'D!RA)>?RaQ"BtQAq$9:RaQ"BtQAq$9:Rb"aR("T2r1a*@ARb"a#Rb!Q%:;Rb"a#Rb!Q%:; 	Rb!QB'D"aA)>?Rb!QBQ/D"aA1FGRb!Q"BtRQ$:;Rb!Q"BtRQ$:;

66GGgDe==B* 7 , 	RaAr2&4Aq"(=>RaAr"BtQAr$:;RaAq!2dAr1b#9:RaQB'D!RB)?@RaQ"BtQAr$:;RaQ#RaQ%;<Rb"aR("T2r1b*ABRb"a$br1a&<=Rb"a#Rb!Q%;<

66GGgDe==B* 7 , 	RaQB'D!RB)?@RaQ#RaQ%;<RaQB'D!RB)?@RaQ"BtQAr$:;RaQ#RaQ%;< 	Rb!Q"BtRAr$:;Rb!QB'D"aB)?@Rb!Q#Rb"a%<=Rb!QB'D"b!R)@A 	Rb!Q*BtRAr,JKRb!QBQ/D"aBQ1OPRb!Q+Rb"a-DERb!QBQ/D"b!R1HIRb!Q"BtRQ$;<Rb!Q#Rb"a%<=

ro   c                   ^ ^ [         R                   nUU 4S jn[        R                  R                  T R                  SSSSS9mU" U" SSSS	S
S
5      U" SSSSS5      5        U" U" SSSSS5      U" SSSSS5      5        U" U" SSSSS5      U" SSSSS5      5        U" U" SSSS	S
S
5      U" SSSSS5      5        U" U" SSSSS5      U" SSSSS5      5        U" U" SSSSS5      U" SSSSS5      5        U" U" SSSS	S
S
5      U" SSSSS5      5        U" U" SSSSS5      U" SSSSS5      5        U" U" SSSSS5      U" SSSSS5      5        U" U" SSSS	S
S
5      U" SSSSS5      5        U" U" SSSSS5      U" SSSSS5      5        U" U" SSSSS5      U" SSSSS5      5        TR                  5         [        R                  R                  T R                  SSSS[         R                  " SSS5      S9mU" U" SSSSS
S
5      U" SSSSS5      5        U" U" SSSSS5      U" SSSSS5      5        U" U" SSSSS5      U" SSSSS5      5        U" U" SSSSS
S
5      U" SSSSS5      5        U" U" SSSSS5      U" SSSSS5      5        U" U" SSSSS5      U" SSSSS5      5        U" U" SSSSS
S
5      U" SSSSS5      5        U" U" SSSSS5      U" SSSSS5      5        U" U" SSSSS5      U" SSSSS5      5        U" U" SSSSS
S
5      U" SSSSS5      5        U" U" SSSSS5      U" SSSSS5      5        U" U" SSSSS5      U" SSSSS5      5        TR                  5         g )Nc                    > TR                  U R                  5       5      nX!R                  5       -
  nU(       a&  TR                  US[        R                  " US95        g g r\
  r]
  r^
  s       rJ   rE  XTimedRotatingFileHandlerTest.test_compute_rollover_MIDNIGHT_local_interval.<locals>.test  rb
  ro   rh  r
  Fro  rj  r
  r  r2
  rd
  r  rx	  re
  rt  r   r  r*
  rq   r  ra	  r  r  r   r  r$  r'  rj  r
  r  r2
  r
  rj
  rk
  s   `  @rJ   -test_compute_rollover_MIDNIGHT_local_intervalJTimedRotatingFileHandlerTest.test_compute_rollover_MIDNIGHT_local_interval  s    	L 66GGgJEA 7 O 	RaBB'D!RA)>?RaAq!2dAr1a#89RaAq!2dAr1a#89RaRR("T1b!Q*?@RaQ"BtQAq$9:RaQ"BtQAq$9:Rb!RR("T2q!Q*?@Rb!Q"BtRAq$9:Rb!Q"BtRAq$9:Rb!RR("T2q!Q*?@Rb!Q"BtRAq$9:Rb!Q"BtRAq$9:

66GGgJEA==Q* 7 , 	RaBB'D!RQ)?@RaB"BtQB$:;RaB"BtQB$:;RaRR("T1b"a*@ARaR#RaR%;<RaR#RaR%;<Rb!RR("T2q"a*@ARb!R#Rb!R%;<Rb!R#Rb!R%;<Rb!RR("T2q"a*@ARb!R#Rb!R%;<Rb!R#Rb!R%;<

ro   c                 4
  ^ ^ [         R                   nUU 4S jn[        R                  R                  T R                  SSSSS9mU" U" SSS	S
SS5      U" SSSSS5      5        U" U" SSSSS5      U" SSSSS5      5        U" U" SSSSS5      U" SSSSS5      5        U" U" SSSS
SS5      U" SSS	SS5      5        U" U" SSSSS5      U" SSSSS5      5        U" U" SSSSS5      U" SSSSS5      5        U" U" SSSS
SS5      U" SSSSS5      5        U" U" SSSSS5      U" SSSSS5      5        U" U" SSSSS5      U" SSSSS5      5        U" U" SSSS
SS5      U" SSSSS5      5        U" U" SSSSS5      U" SSS	SS5      5        U" U" SSSSS5      U" SSS	SS5      5        TR                  5         [        R                  R                  T R                  SSSS[         R                  " SSS5      S9mU" U" SSSS
SS5      U" SSSSS5      5        U" U" SSSSS5      U" SSSSS5      5        U" U" SSSSS5      U" SSSSS5      5        U" U" SSSS
SS5      U" SSSSS5      5        U" U" SSSSS5      U" SSSSS5      5        U" U" SSSSS5      U" SSSSS5      5        U" U" SSSS
SS5      U" SSSSS5      5        U" U" SSSSS5      U" SSSSS5      5        U" U" SSSSS5      U" SSSSS5      5        U" U" SSSS
SS5      U" SSSSS5      5        U" U" SSSSS5      U" SSSSS5      5        U" U" SSSSS5      U" SSSSS5      5        TR                  5         [        R                  R                  T R                  SSSS[         R                  " SSS5      S9mU" U" SSSSSS5      U" SSSSS5      5        U" U" SSS	SS5      U" SSSSS5      5        U" U" SSS	SS5      U" SSSSS5      5        U" U" SSSSSS5      U" SSSSS5      5        U" U" SSSSS5      U" SSSSS5      5        U" U" SSSSS5      U" SSSSS5      5        U" U" SSSSSS5      U" SSSSS5      5        U" U" SSSSS5      U" SSSSS5      5        U" U" SSSSS5      U" SSSSS5      5        U" U" SSSSSS5      U" SSSSS5      5        U" U" SSSSS5      U" SSSSS5      5        U" U" SSSSS5      U" SSSSS5      5        TR                  5         g )Nc                    > TR                  U R                  5       5      nX!R                  5       -
  nU(       a&  TR                  US[        R                  " US95        g g r\
  r]
  r^
  s       rJ   rE  RTimedRotatingFileHandlerTest.test_compute_rollover_W6_local_interval.<locals>.testG  rb
  ro   rh  rr
  Fro  rz
  rd
  r   rs  rx	  re
  r  r   r  r*
  rq   r     r  r  ri
  rr  rt  rs
  r{
     rt
  r  ra	  rj
  rk
  s   `  @rJ   'test_compute_rollover_W6_local_intervalDTimedRotatingFileHandlerTest.test_compute_rollover_W6_local_intervalC  s     	L 66GGgDea 7 I 	RaRR("T1aA*>?RaQ"BtQAq$9:RaQ"BtQAq$9:RaBB'D!RA)>?RaAq!2dAr1a#89RaAq!2dAr1a#89Rb"b"b)2dBAq+ABRb"a#Rb!Q%:;Rb"a#Rb!Q%:;Rb"b"b)2dBAq+ABRb"a#Rb"a%;<Rb"a#Rb"a%;<

66GGgDea==Aq) 7 + 	RaRR("T1b!Q*?@RaQ"BtQAq$9:RaQ"BtQAq$9:RaRR("T1b!Q*?@RaQ"BtQ1a$89RaQ"BtQ1a$89Rb"b"b)2dB1a+@ARb"a#Rb"a%;<Rb"a#Rb"a%;<Rb!RR("T2r1a*@ARb!Q"BtRQ$:;Rb!Q"BtRQ$:;

66GGgDea==Q* 7 , 	RaRR("T1aQ*?@RaR#RaR%;<RaR#RaR%;<RaBB'D!RQ)?@RaB"BtQB$:;RaB"BtQB$:;Rb"b"b)2dBB+BCRb"b!$br1b!&<=Rb"b!$br1b!&<=Rb"b"b)2dBB+BCRb"b!$br2r1&=>Rb"b!$br2r1&=>

ro   r|   Nr	  )rw   rx   ry   rz   r  r  r   r	  r	  r
  r
  r 
  r%
  r/
  r9
  rP
  rX
  run_with_tzrm
  ru
  r|
  r
  r{   r|   ro   rJ   r	  r	    s    __W__&EF G((T)5V4B%P4l?LB&2T 34k 5k^ 34y 5yz 34. 5.d 34B 5Bro   r	  c                  X    [         R                  " S0 U D6[         R                  " SS9-  $ )Nrq   r	  r|   )r  r
  )r  s    rJ   r
  r
    s&    ##x'9'9!'DDDro   )r	  rq   )Mr  )Hi  )Dr)
  )r
  r)
  W0r     )r
  hours)rq   ro  c           	         [         R                  R                  U R                  SXSSS9nSnUR	                  U5      nUR                  S5      (       a  U[        SUS-
  -  S	9-  nOX2-  nX6:w  Ga4  US
:X  Ga-   UR                  (       a  [        R                  " U5      nO[        R                  " U5      nUS   nUS   n	US   n
[         R                  R                  US-  U	-   S-  U
-   -
  nX[-   n[        SU< SUR                  < S3[        R                  S9  [        SU-  [        R                  S9  [        SU	-  [        R                  S9  [        SU
-  [        R                  S9  [        SU-  [        R                  S9  [        SU-  [        R                  S9  U R!                  X65        UR#                  5         g ! [         a%  n[        SU-  [        R                  S9   S nANLS nAff = f)Nrh  r   T)rj  r
  r2
  r	  r  r  r
  r'  rq   r
  r
  ro  r  r  r  zt: z ()r
  zcurrentHour: %szcurrentMinute: %szcurrentSecond: %szr: %sz
result: %sz exception in diagnostic code: %s)r    rB   r  rU  r-
  rN  r
  r  r  r  	localtime	_MIDNIGHTr  rr  r  r  r^   rN   )rF   r
  r2
  expr	  r.
  ri   r,  currentHourcurrentMinutecurrentSecondr   rK  re  s                 rJ   test_compute_rolloverr
    s   !!::'UV\` ; bBK''4Fs##tHQJ00} :%W66 $K 8A ${ ;A&'d()!()!#,,66;;K8E<FIK;L -;. / "-a8szzJ/+=CJJO1MA

S1MA

Sgk

;lV3#**E S)HHJ % W@1D3::VWs   :D,G 
G7G22G7ztest_compute_rollover_%s	_intervalz>win32evtlog/win32evtlogutil/pywintypes required for this test.c                       \ rS rSrS rSrg)NTEventLogHandlerTesti  c                    Sn[         R                  " S U5      n[         R                  " U5      n [        R                  R                  S5      n[        R                  " SS05      nUR                  U5        UR                  5         U R                  U[         R                  " U5      5        [         R                  [         R                   -  nSnSn	[         R"                  " X'U	5      n
U
 H5  nUR$                  S:w  a  M  [&        R(                  " XQ5      nUS	:w  a  M3  S
n  O   SU	-  nU R+                  XS9  g ! [        R                   a,  nUR                  S:X  a  [        R                  " S5      ee S nAff = f)NApplicationtest_loggingr  z#Insufficient privileges to run testr  zTest Log MessageFr  zTest Log Message
Tz3Record not found in event log, went back %d recordsr	  )win32evtlogOpenEventLogGetNumberOfEventLogRecordsr    rB   NTEventLogHandler
pywintypesr   winerrorr  SkipTestr   rx  rN   
assertLessEVENTLOG_BACKWARDS_READEVENTLOG_SEQUENTIAL_READReadEventLog
SourceNamewin32evtlogutilSafeFormatMessagerE   )rF   logtypeelhnum_recsrU   re  r   flagsr
  r
  eventsr  s               rJ   r   NTEventLogHandlerTest.test_basic  sN   &&tW599#>	  22>BA !!5*<"=>			+"H"H"MN33445))#g>A||~-!33A?C,,E  DgM'1  	zzQ''(MNN	s   D; ;E;'E66E;r|   N)rw   rx   ry   rz   r  r{   r|   ro   rJ   r
  r
    s    (ro   r
  c                       \ rS rSrS rSrg)MiscTestCasei  c                 @    1 Skn[         R                  " U [        US9  g )N>   rA  r  Filtererr  
RootLoggerr8  PlaceHolderr_  currentframer9  StrFormatStyler:  r  rO  )not_exported)r   check__all__r    )rF   r
  s     rJ   test__all__MiscTestCase.test__all__  s    ,
 	T7Fro   r|   N)rw   rx   ry   rz   r
  r{   r|   ro   rJ   r
  r
    s    Gro   r
  c                  Z    [         R                  " [        R                  " SS5      5        g )NLC_ALLr   )r  enterModuleContextr   run_with_localer|   ro   rJ   setUpModuler
    s     7 7" EFro   __main__r   r	  )r    logging.handlerslogging.configr4  r  r&   r  rS
  r  r6   r  r   r5  rQ  rk  r  rY   rG
  r  r  rr  rO  test.support.script_helperr   r   rE  r   test.supportr   r   r   r	   r
   r   r   test.support.logging_helperr   r  r  rH  r  r  rE  r  http.serverr   r   unittest.mockr   urllib.parser   r   socketserverr   r   r   r   r
  r
  r
  r
  r	  r  HAVE_ASAN_FORK_BUGr  check_sanitizerr  TestCaser   r~   r   SILENTr  TERSEEFFUSIVEr  r<  	TALKATIVEr   
CHATTERBOXBORINGr  r  r  r   r   r  r  rV  rX  rp  r  r;   r  r  r  r  r  r;  rH  rj  r{  r  r  r  r  r  r  r  r=   r  r  r  ry  r  r  r  r  r  r  IPV6_ENABLEDr  r  r  r+  r=  rV  rX  r^  r`  rB   r  rd  rl  rf  rh  ru  r{  r}  r  r  r  r#  r;  r  rT  rV  ri  r  r  r
  r  tzinfor  r  r  r  rD  r4  r?  rL  rT  r]  rR  rP  rp  r  r  rU  r  r   r  r3	  r 	  r=	  r	  r	  r	  r	  r
  r
  r
  r2
  r
  rH   rw   r_  r
  r
  r
  mainr|   ro   rJ   <module>r
     s  *          	  	  	   	    
  N  & " & ) ( !  3        :  +D D633	 OOEG  OO4(-/ 
d'x   d'NUI UIn<%h <%L 		
FFQJ' (*	'**)++,
( +gnn +: :C' C'LK2( K2\1 1#-- # '@ '@XG;U%% G;T06 0d'\: 'R1L"4 1>-L"4 -^ 69(} (( (
 	  ",,.h  / #@C5 C5L-** -
aX aH 	  ",,.W+ W+ / #W+t 
WVY/1HI&- & J& 	  ",,.>:( >: / #>:@ 
WVY/1HI(1 ( J( 	  ",,.IB IB / #IBV 
WVY/1HI&- & J& 
]//;=6- 6=6 	  ",,.L h L  / #L \1 1h-L8 -L`%K8 %KP. #	G)) 		W%%33 		%++ 	) )	1 	2  _?X _?D79( 9.&h &>	w(( 	 8  F ,,.pPx pP /pPd 7_--#002]&H ]& 3 ]&@ !(//  
e. .`SH%%'9 `SF&W77 &GX.. G&AH A,$;X $;N	 	$w** $T/8 T/nx/( x/vK0H K0\Y#h'' Y#x
D*)) D*N.G)) .+ +57(( 5`>- `>FH8 H25l 5,Zl Zx[
< [
|E  %,1B/0ID# -1H# $	J *D0a<KD)-&,d4IJU j 
["bc (H  ( d (FG8$$ GG zMMO a]  6155K5/J6
  		s$   ^ #^. ^+*^+.^87^8