+
    Bi                       R t ^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt^ RI	t	^ RI
t
^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt^ RIHtHt ^ RIHt ^ RIHt ^ RIHt ^ RIHt ^ RIH t  ^ RIH!t! ^ R	IH"t" ^ R
IH#t# ^ RI$H%t% ^ RI&t&^ RI't'^ RI(t(^ RI)t)^ RI*t*^ RI+t+^ RI,t,^ RI-H.t.H/t/ ^ RI0H1t1 ^ RI2H3t3H4t4 ^ RI5H6t6H7t7H8t8H9t9  ^ RI:t:^ RI;t;^ RI<t< ^ RI>t>]*P~                  ! ]P                  R4      tA]*P~                  ! ]P                  ! RR7      R4      tC ! R R]*P                  4      tE ! R R]E4      tF ! R R]E4      tG^xtH^wtI^vtJ^utK^ttL^stM^rtN^qtO^ptP^otQ]R! ]Q]H^,           4      tS]HR]IR]JR]KR]LR]MR]NR ]OR!]PR"]QR#/
tT ! R$ R%]P                  4      tV ! R& R']P                  4      tW ! R( R)]E4      tXR* tY ! R+ R,]E4      tZ ! R- R.][4      t\ ! R/ R0]P                  4      t^ ! R1 R2][4      t_ ! R3 R4]E4      t` ! R5 R6]#P                  4      tb ! R7 R8][4      tc ! R9 R:]c].4      td ! R; R<]c]84      te ! R= R>]c]64      tf]g! ]R?4      '       d    ! R@ RA]e4      th ! RB RC]f4      ti]P                  ! 4       ] P                  ! 4        ! RD RE]E4      4       4       tl ! RF RG]E4      tm ! RH RI]P                  4      toRJ tp ! RK RL]E4      tq]P                  ! 4       ] P                  ! 4        ! RM RN]E4      4       4       tr]*P                  ! ]g! ]R?4      RO4       ! RP RQ]r4      4       tt]P                  ! 4       ] P                  ! 4        ! RR RS]E4      4       4       tu]*P                  ! ]g! ]R?4      RO4       ! RT RU]u4      4       tv]P                  ! 4       ] P                  ! 4        ! RV RW]E4      4       4       tw]*P                  ! ]g! ]R?4      RO4       ! RX RY]w4      4       tx]*P                  ! ]P                  RZ4       ! R[ R\]w4      4       tz]P                  ! 4       ] P                  ! 4        ! R] R^]E4      4       4       t{ ! R_ R`]E4      t| ! Ra Rb]E4      t} ! Rc Rd]E4      t~RRe lt ! Rf Rg4      tRh t ! Ri Rj]P                  4      t ! Rk Rl]EP                  EP                  4      t ! Rm Rn]EP                  4      t ! Ro Rp4      t ! Rq Rr]4      t ! Rs Rt]4      t ! Ru Rv4      tRw tRRx lt ! Ry Rz]E4      t ! R{ R|]E4      t ! R} R~]E4      t ! R R]EP"                  4      t ! R R]E4      t] P                  ! 4        ! R R]E4      4       t]g! ]EP                  R4      '       d/   ^ RIt^ RI0H1t1 ]C] P                  ! 4        ! R R]E4      4       4       t]EP.                  ! ^ 4      t ! R R]EP2                  4      t]! 4       t ! R R4      t ! R R]*P                  ]4      t ! R R]EP<                  4      t ! R R]*P                  4      t ! R R]E4      t ! R R]E4      t ! R R4      t ! R R]EPH                  4      t ! R R]E4      t ! R R]E4      t ! R R]E4      t ! R R]*P                  4      t ! R R]*P                  4      t ! R R]EPV                  4      t ! R R4      t ! R R]EPV                  4      t ! R R]E]4      t ! R R]E4      t ! R R]4      t ! R R]4      t ! R R]4      tR tRRRRRR]! ^^R7      33 FA  w  ttR F5  t]]]3R ltR],          t]^8  d
   ]R,          t]]n        ]! ]]]4       K7  	  KC  	  ]*P                  ! ]:R4       ! R R]E4      4       t ! R R]*P                  4      tR t]R8X  d   ]*EP~                  ! 4        R# R#   ]= d    R;t:;t;t< ELi ; i  ]= d     ELi ; i)zoTest harness for the logging module. Run all tests.

Copyright (C) 2001-2022 Vinay Sajip. All Rights Reserved.
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                   L   a  ] tR t^Zt o RtRtRt^ tR tR t	R
R lt
R tR	tV tR# )BaseTestzBase class for logging tests.z&%(name)s -> %(levelname)s: %(message)sz^([\w.]+) -> (\w+): (\d+)$c                :   \         P                  ! 4       V n        \        P                  ! 4       P
                  P                  p\        P                  ;_uu_ 4        \        P                  P                  4       V n
        \        P                  R,          V n        VP                  4       ;V n        p\        P                  P                  4       V n        \        P                   P                  4       V n        / ;V n        pV F  p\'        W$,          RR4      W4&   K  	  RRR4       \        P                  ! R4      V n        \        P                  ! R4      V n        \        P                  ! R4      V n        V P,                  P/                  4       V n        \2        P4                  ! 4       V n        V P,                  P9                  \        P:                  4       \        P<                  ! V P6                  4      V n        \        P@                  ! V PB                  4      V n"        V P>                  PG                  V PD                  4       V P(                  PI                  4       '       dD   V P(                  PJ                  V P,                  PJ                  ,           p\M        RV,          4      hV P*                  PI                  4       '       dD   V P*                  PJ                  V P,                  PJ                  ,           p\M        RV,          4      hV P,                  PO                  V P>                  4       V PQ                  V P(                  PI                  4       4       V PQ                  V P*                  PI                  4       4       R#   + '       g   i     ELr; i)zpSetup the default logging stream to an internal StringIO instance,
so that we can examine log output as we want.NNNdisabledNu   «×»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   &     (/usr/lib/python3.14/test/test_logging.pysetUpBaseTest.setUpb   sq    />>@'')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   CN		N	c                   V P                   P                  4        V P                  P                  V P                  4       V P                  P
                  '       dK   V P                  P
                  ^ ,          pV P                  P                  V4       VP                  4        Kf  V P                  P                  V P                  4       \        P                  ;_uu_ 4        \        P                  P                  4        \        P                  P                  V P                  4       \        P                  P                  4        \        P                  P                  V P                  4       \        P                   P                  4        \        P                   P                  V P"                  4       V P$                  \        P&                  R&   \        P(                  ! 4       P*                  p^ Vn        VP.                  pVP                  4        VP                  V P0                  4       V P2                  pV P2                   F-  pWE,          f   K  WE,          V P0                  V,          n        K/  	  RRR4       V P7                  4        \8        P:                  ! V P<                  !   R#   + '       g   i     L@; i)zBRemove our logging stream, and restore the original logging
level.r   N)r7   closer2   removeHandlerr;   rA   r8   r4   r   r#   r,   clearupdater-   r*   r+   r$   r&   r(   r'   r    r!   disabler"   r)   r.   r   
doCleanupsr   threading_cleanupr   )rE   hr!   r"   r.   rG   s   &     rI   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   #E2J4"J44K	Nc                J   T;'       g    V P                   p\        P                  ! T;'       g    V P                  4      pVP	                  4       P                  4       pV P                  \        V4      \        V4      4       \        WA4       F_  w  rVVP                  V4      pV'       g   V P                  RV,           4       V P                  \        VP                  4       4      V4       Ka  	  VP                  4       pV'       d   V P                  RV,           4       R# R# )zMatch the collected log lines against the regular expression
self.expected_log_pat, and compare the extracted group values to
the expected_values list of tuples.z*Log line does not match expected pattern:
z'Remaining output at end of log stream:
N)r7   recompileexpected_log_patgetvalue
splitlinesassertEquallenzipsearchfailtuplegroupsread)	rE   expected_valuesr7   patactual_linesactualexpectedmatchss	   &&&&     rI   assert_log_linesBaseTest.assert_log_lines   s     &&4;;jj55 5 56(335\*C,@A #L BFJJv&E		G"# $U5<<>2H= !C KKMII@1DE     c                Z    V ;P                   ^,          un         RV P                   ,          # )zEGenerate a message consisting solely of an auto-incrementing
integer.z%d)message_numrE   s   &rI   next_messageBaseTest.next_message   s&     	Ad&&&&rn   )r   r0   r1   r.   r4   r>   r;   r2   r(   r&   r-   r)   r+   r7   NN)__name__
__module____qualname____firstlineno____doc__r=   rZ   rp   rJ   rU   rl   rr   __static_attributes____classdictcell____classdict__s   @rI   r   r   Z   s4     '9J4K%4NA>F$' 'rn   r   c                   N   a  ] tR t^t o RtR tR tR tR tR t	R t
R tR	tV tR
# )BuiltinLevelsTestz*Test builtin levels and their inheritance.c                   V P                   p\        P                  ! R 4      pVP                  \        P                  4       \        P
                  ! \        P                  ! R4      / 4      pVP                  \        P                  4       \        P                  ! R4      pVP                  \        P                  4       VP                  \        P                  V! 4       4       VP                  V! 4       4       VP                  \        P                  V! 4       4       VP                  V! 4       4       VP                  V! 4       4       VP                  V! 4       4       VP                  \        P                  V! 4       4       VP                  V! 4       4       VP                  V! 4       4       VP                  V! 4       4       VP                  V! 4       4       VP                  V! 4       4       VP                  V! 4       4       VP                  V! 4       4       VP                  V! 4       4       V P                  . RO4       R# )ERRINFDEBN))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   r9   11)rr   r   r    r8   r   LoggerAdapterr   r9   logr   errorwarninginfodebugrl   )rE   mr   r   r   s   &    rI   	test_flatBuiltinLevelsTest.test_flat   sr   &W]]###G$5$5e$<bAW\\"&W]]# 	  !#&		!#  !#&		!#AC  !#&		!#AC		!# 	AC		!#		!# 
 	rn   c                   V P                   p\        P                  ! R 4      pVP                  \        P                  4       \        P                  ! R4      pVP                  \        P
                  4       VP                  \        P                  V! 4       4       VP                  V! 4       4       VP                  V! 4       4       VP                  V! 4       4       VP                  V! 4       4       V P                  RR.4       R# )r   INF.ERRN)r   r   r   )r   r   r   rr   r   r    r8   r   r   r   r   r   r   r   r   rl   )rE   r   r   INF_ERRs   &   rI   test_nested_explicit&BuiltinLevelsTest.test_nested_explicit   s    &W\\"$$Y/' 	G$$ac*ac 	QSac(%
 	rn   c                   V P                   p\        P                  ! R 4      pVP                  \        P                  4       \        P                  ! R4      pVP                  \        P
                  4       \        P                  ! R4      p\        P                  ! R4      p\        P                  ! R4      pVP                  \        P                  V! 4       4       VP                  V! 4       4       VP                  V! 4       4       VP                  V! 4       4       VP                  \        P                  V! 4       4       VP                  V! 4       4       VP                  V! 4       4       VP                  V! 4       4       VP                  V! 4       4       VP                  V! 4       4       V P                  . RO4       R# )r   r   	INF.UNDEFINF.ERR.UNDEFUNDEFN))r   r   r   )r   r   r   )r   r   r   )r   r   r   )r   r   r   )r   r   r   r   )rE   r   r   r   	INF_UNDEFINF_ERR_UNDEFr   s   &      rI   test_nested_inherited'BuiltinLevelsTest.test_nested_inherited
  s>   &W\\"$$Y/'%%k2	))/:!!'* 	g&&,!#qs'**AC0AC  	ac"13AC  
 	rn   c                J   V P                   p\        P                  ! R 4      p\        P                  ! R4      p\        P                  ! R4      pVP                  \        P                  4       VP                  \        P                  V! 4       4       VP                  V! 4       4       VP                  \        P                  V! 4       4       VP                  V! 4       4       VP                  V! 4       4       VP                  V! 4       4       V P                  . RO4       R# )r   INF.BADPARENT.UNDEFINF.BADPARENTN))r   r   r   )r   r   r   )r   r   r   )r   r   r   )
rr   r   r    r8   r   r   FATALr   r   rl   )rE   r   r   
GRANDCHILDCHILDs   &    rI   test_nested_with_virtual_parent1BuiltinLevelsTest.test_nested_with_virtual_parent-  s    &&&'<=
!!/2W\\" 	w}}ac*		'--%

13 	AC 
 	rn   c                    V P                  \        P                  ! R4      \        P                  4       V P                  \        P                  ! \        P                  4      R4       R# )z&See issue #22386 for more information.r   N)r]   r   getLevelNamer   rq   s   &rI   test_regression_22386'BuiltinLevelsTest.test_regression_22386G  s@    --f5w||D--gll;VDrn   c                r    \         P                  ! R 4      pV P                  V\         P                  4       R# )r   N)r   r   r]   r   )rE   fatals   & rI   test_issue27935!BuiltinLevelsTest.test_issue27935L  s&    $$W-.rn   c                   \         P                  ! \         P                  R4       V P                  \         P                  \         P                  R4       V P	                  \         P
                  ! \         P                  4      R4       V P	                  \         P
                  ! \         P                  4      R4       V P	                  \         P
                  ! R4      \         P                  4       R# )z&See issue #29220 for more information.r   r   NOTSETN)r   addLevelNamer   
addCleanupr]   r   r   rq   s   &rI   test_regression_29220'BuiltinLevelsTest.test_regression_29220P  s    W\\2.,,gllFC--gll;R@--gnn=xH--h7Hrn    N)ru   rv   rw   rx   ry   r   r   r   r   r   r   r   rz   r{   r|   s   @rI   r   r      s5     4-^.!F4E
/I Irn   r   c                   6   a  ] tR tRt o RtR tR tR tRtV t	R# )BasicFilterTestiX  zTest the bundled Filter class.c                   \         P                  ! R 4      pV P                  P                  ^ ,          p VP	                  V4       \         P
                  ! R4      p\         P
                  ! R 4      p\         P
                  ! R4      p\         P
                  ! R4      pVP                  V P                  4       4       VP                  V P                  4       4       VP                  V P                  4       4       VP                  V P                  4       4       V P                  RR.4       VP                  V4       R#   TP                  T4       i ; i)	spam.eggsspamspam.eggs.fishspam.bakedbeansNr   r   r   r   r   r   )
r   Filterr2   rA   	addFilterr    r   rr   rl   removeFilter)rE   filter_handlerr   	spam_eggsspam_eggs_fishspam_bakedbeanss   &      rI   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   C8E   Ec                   R  pV P                   P                  ^ ,          p VP                  V4       \        P                  ! R4      p\        P                  ! R4      p\        P                  ! R4      p\        P                  ! R4      pVP                  V P                  4       4       VP                  V P                  4       4       VP                  V P                  4       4       VP                  V P                  4       4       V P                  RR.4       VP                  V4       R#   TP                  T4       i ; i)c                 r    V P                   P                  R 4      pR P                  VR,          4      pVR8H  # ).:N   Nr   )rG   splitjoin)recordpartsprefixs   &  rI   
filterfunc8BasicFilterTest.test_callable_filter.<locals>.filterfuncx  s3    KK%%c*EXXeBi(F[((rn   r   r   r   r   Nr   r   )	r2   rA   r   r   r    r   rr   rl   r   )rE   r   r   r   r   r   r   s   &      rI   test_callable_filter$BasicFilterTest.test_callable_filtert  s   	)
 ""++A.	-j)$$V,D))+6I$../?@N%//0ABOIId'')*NN4,,./ 1 1 34  !2!2!45!!*/# 
   ,G  ,s   C8D- -E c                    \         P                  ! 4       p\         P                  ! R R/4      pV P                  VP	                  V4      4       R# )rG   r   N)r   r   makeLogRecordrD   filter)rE   frs   &  rI   test_empty_filter!BasicFilterTest.test_empty_filter  s7    NN!!6;"78$rn   r   N)
ru   rv   rw   rx   ry   r   r   r   rz   r{   r|   s   @rI   r   r   X  s     (*0-:% %rn   r   SilentTaciturnTerseEffusiveSociableVerbose	Talkative	Garrulous
ChatterboxBoringc                   *   a  ] tR tRt o RtR tRtV tR# )GarrulousFilteri  z)A filter which blocks garrulous messages.c                (    VP                   \        8g  # N)levelno	GARRULOUSrE   r   s   &&rI   r   GarrulousFilter.filter  s    ~~**rn   r   Nru   rv   rw   rx   ry   r   rz   r{   r|   s   @rI   r   r     s     3+ +rn   r   c                   *   a  ] tR tRt o RtR tRtV tR# )VerySpecificFilteri  z5A filter which blocks sociable and taciturn messages.c                4    VP                   \        \        39  # r   )r   SOCIABLETACITURNr   s   &&rI   r   VerySpecificFilter.filter  s    ~~h%999rn   r   Nr   r|   s   @rI   r   r     s     ?: :rn   r   c                   R   a  ] tR tRt o RtRtR tR tR tR t	R t
R	 tR
 tRtV tR# )CustomLevelsAndFiltersTesti  z@Test various filtering possibilities with custom logging levels.^[\w.]+ -> (\w+): (\d+)$c                    \         P                  V 4       \        P                  4        F  w  r\        P
                  ! W4       K  	  R # r   )r   rJ   my_logging_levelsitemsr   r   )rE   kvs   &  rI   rJ    CustomLevelsAndFiltersTest.setUp  s1    t%++-DA  & .rn   c                ^    \          F"  pVP                  W P                  4       4       K$  	  R # r   )LEVEL_RANGEr   rr   )rE   loggerlvls   && rI   log_at_all_levels,CustomLevelsAndFiltersTest.log_at_all_levels  s!    CJJs--/0 rn   c                ^   R  R lp\         P                  ! R4      p\         P                  ! R4      p\        P                  ! 4       p\        P                  ! 4       p\         P                  ! V4      p\         P                  ! V4      pVP                  V4       VP                  V4       VP                  V4       VP                  R4       VP                  4        VP                  4        V P                  VP                  4       R4       V P                  VP                  4       R4       R# )c                8    V ^8  d   QhR\         P                  /# r   r   r   	LogRecord)formats   "rI   __annotate__TCustomLevelsAndFiltersTest.test_handler_filter_replaces_record.<locals>.__annotate__  s     	 	G$5$5 	rn   c                 @    \         P                   ! V 4      p R V n        V # )znew message!)r%   msg)r   s   &rI   replace_messageWCustomLevelsAndFiltersTest.test_handler_filter_replaces_record.<locals>.replace_message  s    YYv&F'FJMrn   parentzparent.childzoriginal messagezoriginal message
znew message!
N)r   r    r5   r6   r:   r   rC   r   flushr]   r[   )rE   r  r  childstream_1stream_2	handler_1	handler_2s   &       rI   #test_handler_filter_replaces_record>CustomLevelsAndFiltersTest.test_handler_filter_replaces_record  s    	 ""8,!!.1;;=;;=))(3	))(3	O,)$#

%&**,.BC**,.>?rn   c                n  a \        4       o ! V3R  lR\        P                  4      p\        P                  ! R4      pVP	                  \        P
                  4       VP                  V! 4       4       VP                  V! 4       4       VP                  R4       V P                  ^\        S4      4       R# )c                   :   <a  ] tR tRt o V 3R lV3R lltRtV tR# )WCustomLevelsAndFiltersTest.test_logging_filter_replaces_record.<locals>.RecordingFilteri  c                4   < V ^8  d   QhRS[ P                  /# r  r  )r  r}   s   "rI   r  dCustomLevelsAndFiltersTest.test_logging_filter_replaces_record.<locals>.RecordingFilter.__annotate__  s     ) )W%6%6 )rn   c                d   < SP                  \        V4      4       \        P                  ! V4      # r   )addidr%   )rE   r   recordss   &&rI   r   ^CustomLevelsAndFiltersTest.test_logging_filter_replaces_record.<locals>.RecordingFilter.filter  s"    BvJ'yy((rn   r   Nru   rv   rw   rx   r   rz   r{   )r}   r-  s   @rI   RecordingFilterr'    s     ) ) )rn   r0  r  r  N)
setr   r   r    r8   r   r   r   r]   r^   )rE   r0  r  r-  s   &  @rI   #test_logging_filter_replaces_record>CustomLevelsAndFiltersTest.test_logging_filter_replaces_record  s~    %	)gnn 	)
 ""8,%*+*+ECL)rn   c                    V P                   P                  \        4       V P                  V P                   4       V P	                  . RO4       R# )r   N)r   r   r   r   r   r   r   r   r   r   r   r   )r2   r8   VERBOSEr  rl   rq   s   &rI   test_logger_filter-CustomLevelsAndFiltersTest.test_logger_filter  s=    !!'*t//0 
 	rn   c                   V P                   P                  ^ ,          P                  \        4        V P	                  V P                   4       V P                  . RO4       V P                   P                  ^ ,          P                  \        P                  4       R#   T P                   P                  ^ ,          P                  \        P                  4       i ; i)    N)r6  r7  r8  r9  r:  )r2   rA   r8   r   r  rl   r   r   rq   s   &rI   test_handler_filter.CustomLevelsAndFiltersTest.test_handler_filter  s    !!!$--h7	B""4#3#34!! #  %%a(11'..AD%%a(11'..As   .B <Cc                j   V P                   P                  ^ ,          pRp\        4       pVP                  V4        V P	                  V P                   4       . ROpV P                  V4       \        4       pV P                   P                  V4       V P	                  V P                   4       V P                  V. RO,           4       V'       d   V P                   P                  V4       VP                  V4       R#   T'       d   T P                   P                  T4       TP                  T4       i ; i)r?  N)	)r   r   )r   r   )r   r   r5  r6  r7  r8  r9  r:  ))r   r   )r   12)r   14)r   15)r   17)r   18)r   20)r2   rA   r   r   r  rl   r   r   )rE   r   specific_filtergarrfirst_liness   &    rI   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
C< C< <6D2r   N)ru   rv   rw   rx   ry   rZ   rJ   r  r#  r2  r<  r@  rL  rz   r{   r|   s   @rI   r  r    s:     J 3'
1@8*"B (' ('rn   r  c                  b    \         P                  ! V / VB w  r#\        P                  ! V4       V# r   )tempfilemkstemposrM   )argskwargsfdfns   *,  rI   make_temp_filerV  Q  s)    t.v.FBHHRLIrn   c                   :  a  ] tR tRt o R tR tR t]P                  ! ]	P                  R8H  R4      ]P                  ! 4       ]P                  ! R4      R 4       4       4       t]P                   ! 4       ]P                  ! 4       ]]R	 4       4       4       4       tR
tV tR# )HandlerTestiW  c                    \         P                  ! 4       pR Vn        V P                  VP                  R 4       RVn        V P                  VP                  R4       V P	                  \
        VP                  R4       R# )genericanothergenericN)r   HandlerrG   r]   assertRaisesNotImplementedErroremitrE   rT   s   & rI   	test_nameHandlerTest.test_nameX  s\    OO+!!12-qvvt<rn   c                   \         P                  R9   Ed:   R EF  p\        4       pV'       g   \        P                  ! V4       \
        P                  P                  VRRR7      pV'       d   VP                  VP                  rTV P                  VR4       V P                  VR4       \
        P                  ! RR/4      pVP                  V4       \        P                  ! V4       V P                  \        P                  P                  V4      4       VP                  V4       V P!                  \        P                  P                  V4      4       M8V P                  VP                  R4       V P                  VP                  R4       VP#                  4        V'       g   EK  \        P                  ! V4       EK  	  \         P                  R8X  d   RpMRp \
        P                  P%                  V4      pV P                  VP&                  VP(                  4       V P!                  VP*                  4       VP#                  4        R Fn  pVR	8X  d4   V P/                  \0        \
        P                  P2                  R
RV4       K=  \
        P                  P3                  R
RV4      pVP#                  4        Kp  	  \
        P                  P5                  ^ 4      p\
        P                  ! / 4      pV P!                  VP7                  V4      4       VP#                  4        \
        P                  P5                  ^4      pV P                  VP7                  V4      4       VP#                  4        R#   \,         d     EL8i ; i)linuxdarwinTutf-8encodingdelayr  Testz/var/run/syslogz/dev/logPUT	localhostz/logNrd  androidre  )TF)GETPOSTrk  )sysplatformrV  rQ  unlinkr   rA   WatchedFileHandlerdevinor]   r   handleassertFalsepathexistsrD   rM   SysLogHandlerfacilityLOG_USER
unixsocketOSErrorr]  
ValueErrorHTTPHandlerBufferingHandlershouldFlush)	rE   existingrU  rT   rv  rw  r   socknamemethods	   &        rI   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    A0M: :N	N	c                T   \        4       p\        P                  ! V4       \        P                  ! V4      p\
        P                  VR33\
        P                  P                  VR33\
        P                  P                  VR333p\        P                  R9   d'   V\
        P                  P                  VR333,          pV Fa  w  rEV! VRR/ pV P                  \        P                  P                  V4      4       VP!                  4        \        P                  ! V4       Kc  	  R# )z`
Test that path-like objects are accepted as filename arguments to handlers.

See Issue #27493.
warT   rh  rf  Nrm  )rV  rQ  rt  r   FakePathr   FileHandlerrA   RotatingFileHandlerTimedRotatingFileHandlerrr  rs  ru  rD   rz  r{  rM   )rE   rU  pfncasesclsrR  rT   s   &      rI   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	 rn   ntz/WatchedFileHandler not appropriate for Windows.walltimec           	       a  V 3R  lpRpRpRS n         RS n        R EFT  p\        RR4      p\        P                  ! WV3R7      pRVn        VP                  4        \        P                  P                  VRVR7      p\        P                  ! R	4      pVP                  V4        \        V4       F]  p	\        P                  ! R
4       \        P                  ! RR/4      p
 \        P                  ! 4       S n         VP!                  V
4       K_  	  VP'                  4        VP)                  4        \*        P,                  P/                  V4      '       d   \*        P0                  ! V4       EKT  EKW  	  R#   \"         d*    \%        RS P                  : RS P                   : 24       h i ; i  TP'                  4        TP)                  4        \*        P,                  P/                  T4      '       d   \*        P0                  ! T4       i i ; i)c                   < \        V4       Ff  p \        P                  ! V 4       \        P                  ! 4       Sn        \        P                  ! R \        P                  ! ^ ^4      ,          4       Kh  	  R#   \
         d     LEi ; i)gMbp?N)	rangerQ  rt  timedeletion_timer  sleeprandomrandint)fnametries_rE   s   && rI   remove_loop*HandlerTest.test_race.<locals>.remove_loop  sb    5\IIe$)-D& 

56>>!Q#778 "  s   0A99BB  NT.logztest_logging-3-targetrR  rf  rg  z'%(asctime)s: %(levelname)s: %(message)s{Gzt?r  testingzDeleted at z, opened at FT)handle_timer  rV  	threadingThreaddaemonstartr   rA   ru  r<   r?   r  r  r  r   rx  	Exceptionprintr   rM   rQ  rz  r{  rt  )rE   r  	del_count	log_countri  rU  removerrT   r   r  r   s   f          rI   	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.#+E7F.74F++F..AHc                b  aaa  ! R R\         P                  4      pV P                  \        \         P                  4      ^ 4       V! 4       oV P                  SP                  P                  P                  4       RSn	        V P                  \        \         P                  4      ^ 4       V P                  \        \         P                  4      ^4       \         P                  ! R4      pVP                  S4       VP                  \         P                  4       \         P"                  ! 4       o\         P"                  ! 4       oVVV3R lp\         P$                  ! VRR7      pVP'                  4        SP)                  4        \*        P,                  ! 4       pV^ 8X  d+    VP/                  R4       \*        P0                  ! ^ 4       R# VP/                  R	4       SP3                  4        VP5                  4        \6        P8                  ! V^ R
7       R#   \*        P0                  ! ^ 4       i ; i)z>Ensure child logging locks are not held; bpo-6721 & bpo-36533.c                   8   a a ] tR tRt oV 3R ltR tRtVtV ;t# )AHandlerTest.test_post_fork_child_no_deadlock.<locals>._OurHandleri  c                t   < \         SV `  4        \        P                  ! \	        R RRR7      R7      V n        R# )z	/dev/nullwtrf  rh  r7   N)super__init__r   r:   opensub_handlerrE   	__class__s   &rI   r  JHandlerTest.test_post_fork_child_no_deadlock.<locals>._OurHandler.__init__  s.     "#*#8#8TGD$F rn   c                    V P                   P                  ;_uu_ 4        V P                   P                  V4       R R R 4       R #   + '       g   i     R # ; ir   )r  lockr_  r   s   &&rI   r_  FHandlerTest.test_post_fork_child_no_deadlock.<locals>._OurHandler.emit  s7    %%***$$))&1 +***s   AA	)r  	ru   rv   rw   rx   r  r_  rz   r{   __classcell__r  r}   s   @@rI   _OurHandlerr    s     F
2 2rn   r  z*because we need at least one for this test test_post_fork_child_no_deadlockc            	        < \         P                  ;_uu_ 4        SP                  ;_uu_ 4        SP                  4        S P	                  R 4       RRR4       RRR4       R#   + '       g   i     L; i  + '       g   i     R# ; i)      ?N)r   r#   r  r1  wait)+fork_happened__release_locks_and_end_threadlocks_held__ready_to_forkrefed_hs   rI   lock_holder_thread_fnKHandlerTest.test_post_fork_child_no_deadlock.<locals>.lock_holder_thread_fn  sE    )--/ <@@E !-s"   A6"A#	A6#A3.A66B	z,test_post_fork_child_no_deadlock lock holder)r  rG   z#Child process did not deadlock. \o/z&Parent process returned from fork. \o/)exitcodeN)r   r\  r]   r^   r$   r   r  r7   rM   rG   assertGreater_at_fork_reinit_lock_weaksetr    rC   r8   r9   r  Eventr  r  r  rQ  forkr   _exitr1  r   r   wait_process)	rE   r  test_loggerr  lock_holder_threadpidr  r  r  s	   &     @@@rI   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)ru   rv   rw   rx   ra  r  r  unittestskipIfrQ  rG   r   requires_working_threadingr   requires_resourcer  requires_forkskip_if_asan_forkskip_if_tsan_forkr  rz   r{   r|   s   @rI   rX  rX  W  s     =3j, __RWW_&WX002z*)" + 3 Y)"^ 002>2   3 >2rn   rX  c                   &   a  ] tR tRt o R tRtV tR# )	BadStreami"  c                    \        R 4      h)deliberate mistake)RuntimeError)rE   datas   &&rI   writeBadStream.write#  s    /00rn   r   N)ru   rv   rw   rx   r  rz   r{   r|   s   @rI   r  r  "  s     1 1rn   r  c                   &   a  ] tR tRt o R tRtV tR# )TestStreamHandleri&  c                    Wn         R # r   error_recordr   s   &&rI   handleErrorTestStreamHandler.handleError'  s    "rn   r  N)ru   rv   rw   rx   r  rz   r{   r|   s   @rI   r  r  &  s     # #rn   r  c                   2    ] tR tRt]P
                  t^tRtR# )StreamWithIntNamei*  r   N)	ru   rv   rw   rx   r   r   levelrG   rz   r   rn   rI   r  r  *  s    NNEDrn   r  c                   2   a  ] tR tRt o R tR tR tRtV tR# )StreamHandlerTesti.  c                   \        \        4       4      p\        P                  ! / 4      p\        P                  p VP                  V4       V P                  VP                  V4       \        P                  ! \        4       4      p\        P                  ! 4       ;_uu_ 4       pVP                  V4       R pV P                  WTP                  4       4       RRR4       R\        n        \        P                  ! 4       ;_uu_ 4       pVP                  V4       V P                  RVP                  4       4       RRR4       V\        n        R#   + '       g   i     L; i  + '       g   i     L0; i  T\        n        i ; i)z"
RuntimeError: deliberate mistake
NFr   )r  r  r   r   raiseExceptionsrx  assertIsr  r:   r   captured_stderrassertInr[   r]   )rE   rT   r   	old_raisestderrr  s   &     rI   test_error_handling%StreamHandlerTest.test_error_handling/  s    ik*!!"%++		0HHQKMM!..!,%%ik2A((**f<c??#45 +
 ',G#((**f  V__%67 + '0G# +* +* '0G#s<   A(E3 #3E0E3 2E 8E3 E	E3  E0	+E3 3F c                D   \         P                  ! 4       p\        P                  ! 4       pVP	                  V4      pV P                  V\        P                  4       VP	                  V4      pV P                  WB4       VP	                  V4      pV P                  V4       R# )z#
Test setting the handler's stream
N)	r   r:   r5   r6   	setStreamr  rr  r  assertIsNone)rE   rT   r7   oldrh   s   &    rI   test_stream_setting%StreamHandlerTest.test_stream_settingE  ss     !!#kk&!c3::&S!f%S!&!rn   c                x    \         P                  ! \        4       4      pV P                  \	        V4      R 4       R# )z<StreamHandler 2 (NOTSET)>N)r   r:   r  r]   reprr`  s   & rI   'test_can_represent_stream_with_int_name9StreamHandlerTest.test_can_represent_stream_with_int_nameS  s+    !!"3"56a">?rn   r   N)	ru   rv   rw   rx   r  r	  r  rz   r{   r|   s   @rI   r  r  .  s     0,"@ @rn   r  c                   B   a  ] tR tRt o RtR tR tR tR tR t	Rt
V tR	# )
TestSMTPServeriZ  a  
This class implements a test SMTP server.

:param addr: A (host, port) tuple which the server listens on.
             You can specify a port value of zero: the server's
             *port* attribute will hold the actual port number
             used, which can be used in client connections.
:param handler: A callable which will be called to process
                incoming messages. The handler will be passed
                the client address tuple, who the message is from,
                a list of recipients and the message data.
:param poll_interval: The interval, in seconds, used in the underlying
                      :func:`select` or :func:`poll` call by
                      :func:`asyncore.loop`.
:param sockmap: A dictionary which will be used to hold
                :class:`asyncore.dispatcher` instances used by
                :func:`asyncore.loop`. This avoids changing the
                :mod:`asyncore` module's global state.
c                    \         P                  P                  WR VRR7       V P                  P	                  4       ^,          V n        W n        R V n        RV n        W0n	        R # )NT)mapdecode_dataF)
r   
SMTPServerr  socketgetsocknameport_handler_thread_quitpoll_interval)rE   addrr   r  sockmaps   &&&&&rI   r  TestSMTPServer.__init__o  sV    !!$d.2 	" 	4KK++-a0	
*rn   c                *    V P                  WW44       R# )a  
Delegates to the handler passed in to the server's constructor.

Typically, this will be a test case method.
:param peer: The client (host, port) tuple.
:param mailfrom: The address of the sender.
:param rcpttos: The addresses of the recipients.
:param data: The message.
N)r  )rE   peermailfromrcpttosr  s   &&&&&rI   process_messageTestSMTPServer.process_messagex  s     	dg4rn   c                    \         P                  ! V P                  V P                  3R7      ;V n        pRVn        VP                  4        R# )z7
Start the server running on a separate daemon thread.
r  TNr  r  serve_foreverr  r  r  r  rE   ts   & rI   r  TestSMTPServer.start  C     %++43E3E262D2D1FH 	Hq		rn   c                r    V P                   '       g%   \        P                  ! WP                  ^R7       K6  R# )z
Run the :mod:`asyncore` loop until normal termination
conditions arise.
:param poll_interval: The interval, in seconds, used in the underlying
                      :func:`select` or :func:`poll` call by
                      :func:`asyncore.loop`.
)r  countN)r  r
   loop_map)rE   r  s   &&rI   r'  TestSMTPServer.serve_forever  s$     ***MM-YYa@ rn   c                    RV n         \        P                  ! V P                  4       RV n        V P	                  4        \
        P                  ! V P                  RR7       R# )zZ
Stop the thread by closing the server instance.
Wait for the server thread to terminate.
TN)r  
ignore_all)r  r   join_threadr  rM   r
   	close_allr/  rq   s   &rI   stopTestSMTPServer.stop  sA    
 
$$T\\2

tyyT:rn   )r  r  r  r  r  N)ru   rv   rw   rx   ry   r  r#  r  r'  r5  rz   r{   r|   s   @rI   r  r  Z  s)     (+
5	A	; 	;rn   r  c                   H   a a ] tR tRt oRtR tR tV 3R ltR tRt	Vt
V ;t# )ControlMixini  a  
This mixin is used to start a server on a separate thread, and
shut it down programmatically. Request handling is simplified - instead
of needing to derive a suitable RequestHandler subclass, you just
provide a callable which will be passed each received request to be
processed.

:param handler: A handler callable which will be called with a
                single parameter - the request - in order to
                process the request. This handler is called on the
                server thread, effectively meaning that requests are
                processed serially. While not quite web scale ;-),
                this should be fine for testing applications.
:param poll_interval: The polling interval in seconds.
c                `    R V n         W n        Wn        \        P                  ! 4       V n        R # r   )r  r  r  r  r  ready)rE   r   r  s   &&&rI   r  ControlMixin.__init__  s"    *__&
rn   c                    \         P                  ! V P                  V P                  3R7      ;V n        pRVn        VP                  4        R# )z9
Create a daemon thread to run the server, and start it.
r  TNr&  r(  s   & rI   r  ControlMixin.start  r+  rn   c                b   < V P                   P                  4        \        \        V `  V4       R# )zF
Run the server. Set the ready flag before entering the
service loop.
N)r:  r1  r  r8  r'  )rE   r  r  s   &&rI   r'  ControlMixin.serve_forever  s"    
 	

lD/>rn   c                    V P                  4        V P                  e(   \        P                  ! V P                  4       RV n        V P	                  4        V P
                  P                  4        R# )z;
Tell the server thread to stop, and wait for it to do so.
N)shutdownr  r   r3  server_closer:  rO   rq   s   &rI   r5  ControlMixin.stop  sL     	<<#((6DL

rn   )r  r  r  r:  )ru   rv   rw   rx   ry   r  r  r'  r5  rz   r{   r  r  s   @@rI   r8  r8    s#     '?	 	rn   r8  c                   4   a  ] tR tRt o RtRR ltR tRtV tR# )TestHTTPServeri  a  
An HTTP server which is controllable using :class:`ControlMixin`.

:param addr: A tuple with the IP address and port to listen on.
:param handler: A handler callable which will be called with a
                single parameter - the request - in order to
                process the request.
:param poll_interval: The polling interval in seconds.
:param log: Pass ``True`` to enable log messages.
Nc                   aa  ! VV3R  lR\         4      o\        P                  ! WS4       \        P                  WV4       WPn        R# )c                   H   <a a ] tR tRt oRR ltR tVV V3R ltRtVtV ;t	# )=TestHTTPServer.__init__.<locals>.DelegatingHTTPRequestHandleri  c                ^    VP                  R 4      '       d   V P                  # \        V4      h)do_)
startswithprocess_requestAttributeError)rE   rG   defaults   &&&rI   __getattr__ITestHTTPServer.__init__.<locals>.DelegatingHTTPRequestHandler.__getattr__  s(    ??5))///$T**rn   c                <    V P                   P                  V 4       R # r   serverr  rq   s   &rI   rL  MTestHTTPServer.__init__.<locals>.DelegatingHTTPRequestHandler.process_request      $$T*rn   c                B   < S'       d   \         SV `   ! V.VO5!   R # R # r   )r  log_message)rE   r  rR  DelegatingHTTPRequestHandlerr  r   s   &&*rI   rW  ITestHTTPServer.__init__.<locals>.DelegatingHTTPRequestHandler.log_message  s1    6, +,,2;59; rn   r   r   )
ru   rv   rw   rx   rO  rL  rW  rz   r{   r  )r  r}   rX  r   s   @@rI   rX  rH    s     +
+; ;rn   rX  N)r   r   r  r8  sslctx)rE   r  r   r  r   rZ  rX  s   &&&&f&@rI   r  TestHTTPServer.__init__  s=    	; 	;+A 	; 	D(DEd];rn   c                    V P                   P                  4       w  rV P                  '       d   V P                  P                  VR R7      pW3#   \         d-   p\
        P                  P                  RT,          4       h Rp?ii ; i)T)server_sidezGot an error:
%s
N)r  acceptrZ  wrap_socketr  rr  r  r  )rE   sockr  es   &   rI   get_requestTestHTTPServer.get_request  st    	++-JD{{{{{..t.F
 z	  	JJ2Q67	s   AA B'BBrZ  )r  FN)	ru   rv   rw   rx   ry   r  rb  rz   r{   r|   s   @rI   rE  rE    s     	&	 	rn   rE  c                   H   a a ] tR tRt oRtRtRtRR ltV 3R ltRt	Vt
V ;t# )	TestTCPServeri  a  
A TCP server which is controllable using :class:`ControlMixin`.

:param addr: A tuple with the IP address and port to listen on.
:param handler: A handler callable which will be called with a single
                parameter - the request - in order to process the request.
:param poll_interval: The polling interval in seconds.
:bind_and_activate: If True (the default), binds the server and starts it
                    listening. If False, you need to call
                    :meth:`server_bind` and :meth:`server_activate` at
                    some later time before calling :meth:`start`, so that
                    the server will set up the socket and listen on it.
TFc                     ! R  R\         4      p\        P                  ! WVV4       \        P                  WV4       R# )c                   &   a  ] tR tRt o R tRtV tR# );TestTCPServer.__init__.<locals>.DelegatingTCPRequestHandleri  c                <    V P                   P                  V 4       R # r   rR  rq   s   &rI   rx  BTestTCPServer.__init__.<locals>.DelegatingTCPRequestHandler.handle  rU  rn   r   N)ru   rv   rw   rx   rx  rz   r{   r|   s   @rI   DelegatingTCPRequestHandlerri    s     + +rn   rl  N)r   r   r  r8  )rE   r  r   r  bind_and_activaterl  s   &&&&& rI   r  TestTCPServer.__init__  s7    	+*> 	+ 	##D0K$5	7d];rn   c                x   < \         \        V `  4        V P                  P	                  4       ^,          V n        R#    N)r  rf  server_bindr  r  r  r  s   &rI   rr  TestTCPServer.server_bind  )    mT.0KK++-a0	rn   )r  r  T)ru   rv   rw   rx   ry   allow_reuse_addressallow_reuse_portr  rr  rz   r{   r  r  s   @@rI   rf  rf    s'      <1 1rn   rf  c                   L   a a ] tR tRt oRtRR ltV 3R ltV 3R ltRtVt	V ;t
# )TestUDPServeri  a  
A UDP server which is controllable using :class:`ControlMixin`.

:param addr: A tuple with the IP address and port to listen on.
:param handler: A handler callable which will be called with a
                single parameter - the request - in order to
                process the request.
:param poll_interval: The polling interval for shutdown requests,
                      in seconds.
:bind_and_activate: If True (the default), binds the server and
                    starts it listening. If False, you need to
                    call :meth:`server_bind` and
                    :meth:`server_activate` at some later time
                    before calling :meth:`start`, so that the server will
                    set up the socket and listen on it.
c                   a  ! V3R  lR\         4      o\        P                  ! WSV4       \        P                  WV4       RV n        R# )c                   <   <a a ] tR tRt oR tVV 3R ltRtVtV ;t# );TestUDPServer.__init__.<locals>.DelegatingUDPRequestHandleri2  c                <    V P                   P                  V 4       R # r   rR  rq   s   &rI   rx  BTestUDPServer.__init__.<locals>.DelegatingUDPRequestHandler.handle4  rU  rn   c                   < V P                   P                  4       pV'       d    \        SV `  4        R # R #   \         d"    T P
                  P                  '       g   h  R # i ; ir   )wfiler[   r  finishr  rS  _closed)rE   r  DelegatingUDPRequestHandlerr  s   & rI   r  BTestUDPServer.__init__.<locals>.DelegatingUDPRequestHandler.finish7  sY    zz**,"94GI  # "#{{222!  3"s   7 &A#A#"A#r   )	ru   rv   rw   rx   rx  r  rz   r{   r  )r  r}   r  s   @@rI   r  r|  2  s     +" "rn   r  FN)r   r   r  r8  r  )rE   r  r   r  rm  r  s   &&&&&@rI   r  TestUDPServer.__init__0  sA    	"*@ 	" 	##D$?$5	7 	d];rn   c                x   < \         \        V `  4        V P                  P	                  4       ^,          V n        R# rp  )r  ry  rr  r  r  r  r  s   &rI   rr  TestUDPServer.server_bindF  rt  rn   c                :   < \         \        V `  4        R V n        R# )TN)r  ry  rB  r  r  s   &rI   rB  TestUDPServer.server_closeJ  s    mT/1rn   )r  r  ru  )ru   rv   rw   rx   ry   r  rr  rB  rz   r{   r  r  s   @@rI   ry  ry    s      ,1 rn   ry  AF_UNIXc                   .    ] tR tRt]P
                  tRtR# )TestUnixStreamServeriO  r   Nru   rv   rw   rx   r  r  address_familyrz   r   rn   rI   r  r  O      rn   r  c                   .    ] tR tRt]P
                  tRtR# )TestUnixDatagramServeriR  r   Nr  r   rn   rI   r  r  R  r  rn   r  c                   D   a  ] tR tRt o ]P
                  tR tR tRt	V t
R# )SMTPHandlerTestiW  c                   / p\        \        P                  ^ 3V P                  RV4      pVP	                  4        \        P                  VP
                  3p\        P                  P                  VRRRV P                  R7      pV P                  VP                  R.4       . V n        \        P                  ! RR/4      p\        P                  ! 4       V n        VP#                  V4       V P                   P%                  V P                  4       VP'                  4        V P)                  V P                   P+                  4       4       V P                  \-        V P                  4      ^4       V P                  ^ ,          w  rgrV P                  VR4       V P                  VR.4       V P/                  RV	4       V P1                  V	R	4       VP3                  4        R
# )r?  MbP?meyouLogtimeoutr  u	   Hello ✓z
Subject: Log
u   

Hello ✓N)r  r   HOSTr#  r  r  r   rA   SMTPHandlerTIMEOUTr]   toaddrsmessagesr   r  r  handledrx  r  r5  rD   is_setr^   r   assertEndsWithrM   )
rE   r  rS  r  rT   r   r   r!  r"  r  s
   &         rI   
test_basicSMTPHandlerTest.test_basic]  sl   !3!3Q 79M9Mu ')""FKK0((tUE15 ) ?UG,!!5."9: (	$,,'++-.T]]+Q/(,a(8%4(5'*($/D"45		rn   c                p    V P                   P                  V4       V P                  P                  4        R # r   )r  appendr  r1  )rE   rR  s   &*rI   r#  SMTPHandlerTest.process_messageu  s$    T"rn   )r  r  N)ru   rv   rw   rx   r   LONG_TIMEOUTr  r  r#  rz   r{   r|   s   @rI   r  r  W  s!      ""G0 rn   r  c                   t   a  ] tR tRt o RtRtR tR tR tR t	R t
]P                  ! 4       R	 4       tR
tV tR# )MemoryHandlerTestiy  zTests for the MemoryHandler.r  c                N   \         P                  V 4       \        P                  P	                  ^
\        P
                  V P                  4      V n        \        P                  ! R4      V n	        ^ V P                  n
        V P                  P                  V P                  4       R# )
   memN)r   rJ   r   rA   MemoryHandlerr   r;   mem_hdlrr    
mem_logger	propagaterC   rq   s   &rI   rJ   MemoryHandlerTest.setUp  sj    t((66r7??7;~~G!++E2$%!""4==1rn   c                d    V P                   P                  4        \        P                  V 4       R # r   )r  rM   r   rU   rq   s   &rI   rU   MemoryHandlerTest.tearDown       $rn   c           	     n   V P                   P                  V P                  4       4       V P                  . 4       V P                   P	                  V P                  4       4       V P                  . 4       V P                   P                  V P                  4       4       . ROpV P                  V4       R F  p\        ^	4       F,  pV P                   P                  V P                  4       4       K.  	  V P                  V4       V P                   P                  V P                  4       4       T\        W"^
,           4       Uu. uF  pR \        V4      3NK  	  up,           pV P                  V4       K  	  V P                   P                  V P                  4       4       V P                  V4       R# u upi )r9   N)r9   r   r   r   )r   r   )      )r  r   rr   rl   r   r   r  str)rE   linesnis   &   rI   
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   F2c                   V P                   P                  V P                  4       4       V P                  . 4       V P                   P	                  V P                  4       4       V P                  . 4       V P                   P                  V P                  4       V P                  P                  4        RR.pV P                  V4       \        P                  P                  ^
\        P                  V P                  R4      V n        V P                   P                  V P                  4       V P                   P                  V P                  4       4       V P                  V4       V P                   P	                  V P                  4       4       V P                  V4       V P                   P                  V P                  4       V P                  P                  4        V P                  V4       R# )z?
Test that the flush-on-close configuration works as expected.
FNr  r  )r  r   rr   rl   r   rN   r  rM   r   rA   r  r   r;   rC   rE   r  s   & rI   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$rn   c                   V P                   P                  V P                  4       4       V P                  . 4       V P                   P	                  V P                  4       4       V P                  . 4       \
        P                  ! \
        P                  P                  V P                  4      .R7       RR.pV P                  V4       \
        P                  P                  ^
\
        P                  V P                  R4      V n	        V P                   P                  V P                  4       V P                   P                  V P                  4       4       V P                  V4       V P                   P	                  V P                  4       4       V P                  V4       \
        P                  ! \
        P                  P                  V P                  4      .R7       V P                  V4       R# )zQ
Test that the flush-on-close configuration is respected by the
shutdown method.
handlerListFNr  r  )r  r   rr   rl   r   r   rA  weakrefrefr  rA   r  r   r;   rC   r  s   & rI   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$rn   c                    ! R  R4      pV! V P                   4      p V P                   P                  V4       \        ^
4       FO  p\        P                  ! R4       V P
                  P                  R4       V P
                  P                  R4       KQ  	  VP                   F  p\        P                  ! V4       K  	  R#   TP                   F  p\        P                  ! T4       K  	  i ; i)c                   2   a  ] tR tRt o R tR tR tRtV tR# )ZMemoryHandlerTest.test_race_between_set_target_and_flush.<locals>.MockRaceConditionHandleri  c                     Wn         . V n        R # r   r  threads)rE   r  s   &&rI   r  cMemoryHandlerTest.test_race_between_set_target_and_flush.<locals>.MockRaceConditionHandler.__init__  s     (!rn   c                <    V P                   P                  R 4       R # r   )r  	setTargetrq   s   &rI   removeTargetgMemoryHandlerTest.test_race_between_set_target_and_flush.<locals>.MockRaceConditionHandler.removeTarget  s    ''-rn   c                    \         P                  ! V P                  R 7      pV P                  P	                  V4       VP                  4        R# ))r  N)r  r  r  r  r  r  )rE   r  r   s   && rI   rx  aMemoryHandlerTest.test_race_between_set_target_and_flush.<locals>.MockRaceConditionHandler.handle  s3    "))1B1BC##F+rn   r  N)	ru   rv   rw   rx   r  r  rx  rz   r{   r|   s   @rI   MockRaceConditionHandlerr    s     ". rn   r  r  znot flushedflushedN)r  r  r  r  r  r  r   r   r  r   r3  )rE   r  r  r  r   s   &    rI   &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)ru   rv   rw   rx   ry   rZ   rJ   rU   r  r  r  r   r  r  rz   r{   r|   s   @rI   r  r  y  sF     & 32 %8%<%: 0025 35rn   r  c                   *   a  ] tR tRt o RtR tRtV tR# )ExceptionFormatteri  zA special exception formatter.c                6    R V^ ,          P                   ,          # )z
Got a [%s])ru   )rE   eis   &&rI   formatException"ExceptionFormatter.formatException  s    benn,,rn   r   N)ru   rv   rw   rx   ry   r  rz   r{   r|   s   @rI   r  r    s     (- -rn   r  c                 R    V P                  4        \        P                  ! V4       R # r   rM   rQ  remove)rT   rU  s   &&rI   closeFileHandlerr    s    GGIIIbMrn   c                   ^  a  ] tR tRt o Rt]P                  tRtRtRt	Rt
]	P                  RR4      t]	P                  R	R
4      tR] ,           R,           t]	P                  RR4      tRtRtRtRtRtR tR tR t]	3R ltR tR tR tR tR tR tR tR t R  t!R! t"R" t#R# t$R$ t%R% t&R&t'V t(R'# )(ConfigFileTesti  z5Reading logging config from a .ini-style config file.^(\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                    \         P                  ! \        P                  ! V4      4      p\        P
                  P                  ! V3R R/VB  R# )rh  rf  N)r5   r6   textwrapdedentr   config
fileConfig)rE   confrS  files   &&, rI   apply_configConfigFileTest.apply_config"  s5    {{8??401!!$CCFCrn   c                   \         P                  ! 4       ;_uu_ 4       pV P                  V P                  4       \        P
                  ! 4       pVP                  V P                  4       4       VP                  V P                  4       4       V P                  R.VR7       V P                  . 4       RRR4       R#   + '       g   i     R# ; ir   r  Nr   r   )
r   captured_stdoutr  config0r   r    r   rr   r   rl   rE   outputr  s   &  rI   test_config0_okConfigFileTest.test_config0_ok&  s    $$&&&dll+&&(FKK))+,LL**,-!!# "  !!"% '&&&s   BB<<C	c                \   \         P                  ! 4       ;_uu_ 4       p\        P                  ! \        P
                  ! V P                  4      4      p\        P                  ! 4       pVP                  V4       \        P                  P                  V4       \        P                  ! 4       pVP                  V P                  4       4       VP!                  V P                  4       4       V P#                  R.VR7       V P#                  . 4       RRR4       R#   + '       g   i     R# ; ir  )r   r  r5   r6   r  r  r  configparserConfigParser	read_filer   r  r  r    r   rr   r   rl   )rE   r  r  cpr  s   &    rI   test_config0_using_cp_ok'ConfigFileTest.test_config0_using_cp_ok5  s    $$&&&;;xt||<=D**,BLLNN%%b)&&(FKK))+,LL**,-!!# "  !!"% '&&&s   C2DD+	c                   \         P                  ! 4       ;_uu_ 4       pV P                  V4       \        P                  ! R 4      pVP                  V P                  4       4       VP                  V P                  4       4       V P                  RR.VR7       V P                  . 4       RRR4       R#   + '       g   i     R# ; icompiler.parserr  Nr   r   r  	r   r  r  r   r    r   rr   r   rl   rE   r  r  r  s   &&  rI   test_config1_okConfigFileTest.test_config1_okG      $$&&&f%&&'89FKK))+,LL**,-!!#  " 
 !!"% '&&&   BB44C	c                \    V P                  \        V P                  V P                  4       R # r   r]  r  r  config2rq   s   &rI   test_config2_failure#ConfigFileTest.test_config2_failureV      )T%6%6Ern   c                \    V P                  \        V P                  V P                  4       R # r   r]  r  r  config3rq   s   &rI   test_config3_failure#ConfigFileTest.test_config3_failureZ  r  rn   c                   \         P                  ! 4       ;_uu_ 4       pV P                  V P                  4       \        P
                  ! 4       p \        4       h  \         d    \        P                  ! R 4        Mi ; i\        P                  P                  ^ 4       T P                  TP                  4       R4       T P                  . 4       RRR4       R#   + '       g   i     R# ; ijust testing-ERROR:root:just testing
Got a [RuntimeError]
N)r   r  r  config4r   r    r  	exceptionrr  stdoutseekr]   r[   rl   r  s   &  rI   test_config4_okConfigFileTest.test_config4_ok^  s    $$&&&dll+&&(F2"n$ 2!!.12JJOOAV__.AC !!"% '&&&s*   1C
A!A>;C=A>>ACC,	c                >    V P                  V P                  R 7       R# r  N)r	  config5rq   s   &rI   test_config5_okConfigFileTest.test_config5_okm      DLL1rn   c                >    V P                  V P                  R 7       R# r#  )r	  config6rq   s   &rI   test_config6_okConfigFileTest.test_config6_okp  r(  rn   c                   \         P                  ! 4       ;_uu_ 4       pV P                  V P                  4       \        P
                  ! R 4      p\        P
                  ! R4      pVP                  V P                  4       4       VP                  V P                  4       4       VP                  V P                  4       4       V P                  . ROVR7       V P                  . 4       RRR4       \         P                  ! 4       ;_uu_ 4       pV P                  V P                  4       \        P
                  ! R 4      pV P                  VP                  4       VP                  V P                  4       4       VP                  V P                  4       4       \        P
                  ! R4      pVP                  V P                  4       4       VP                  V P                  4       4       XP                  V P                  4       4       V P                  . ROVR7       V P                  . 4       RRR4       R#   + '       g   i     EL\; i  + '       g   i     R# ; i)r  compiler-hyphenatedr  Ncompiler.lexerr  r  )r   r   )r   r   )r   r   )r   r   )r   r   )r   r  r  config1ar   r    r   rr   r   criticalrl   config7ry  r   rE   r  r  
hyphenateds   &   rI   test_config7_okConfigFileTest.test_config7_oks  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$I<I	I!	c                   V P                  4       ;_uu_ 4        \        R R4      p\        P                  R8X  d   VP	                  RR4      pV P
                  P                  VR7      pV P                  V4       V P                  V4       RRR4       \        P                  P                  ^ ,          pV P                  \        VX4       R#   + '       g   i     LJ; i)r  test_logging-X-r  \z\\)rO  N)check_no_resource_warningrV  rQ  rG   replaceconfig8r  r  r   rootrA   r   r  )rE   rU  r>  r   s   &   rI   test_config8_okConfigFileTest.test_config8_ok  s    ++--(9:B ww$ZZf-ll))2)6Gg&g& . ,,''*('26 .-s   A2CC	c                z   V P                  V P                  4       \        P                  P                  ^ ,          P
                  pVP                  \        P                  ! RR/4      4      pV P                  VR4       VP                  \        P                  ! RRRR/4      4      pV P                  VR4       R# )r?  r  testztest ++ defaultvaluecustomfieldcustomvalueztest ++ customvalueN)	r  config9r   r?  rA   	formatterr  r   r]   )rE   rG  results   &  rI   test_config9_okConfigFileTest.test_config9_ok  s    $,,'LL))!,66	!!'"7"7"HI!78!!'"7"7FM=9#; <!67rn   c                z   V P                  V P                  4       \        P                  ! R 4      pV P	                  VP
                  4       V P                  V P                  4       V P                  VP
                  4       V P                  V P                  RR7       V P	                  VP
                  4       R# )some_pristine_loggerF)disable_existing_loggersN)r  disable_testr   r    ry  r   rD   rE   r  s   & rI   test_logger_disabling$ConfigFileTest.test_logger_disabling  s    $++,""#9:)$++,($++eL)rn   c                    R pV P                  V4       V P                  \        P                  ! 4       P                  ^ ,          P
                  R4       R# )aw  
            [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
            hand1N)r  r]   r   r    rA   rG   )rE   test_configs   & rI   test_config_set_handler_names,ConfigFileTest.test_config_set_handler_names  sC    ( 	+&**,55a8==wGrn   c                    R p\         P                  ! \        P                  ! V4      4      pV P	                  \
        \        P                  P                  V4       R# )a  
            [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
            N)	r5   r6   r  r  r]  r  r   r  r  )rE   rT  r  s   &  rI   'test_exception_if_confg_file_is_invalid6ConfigFileTest.test_exception_if_confg_file_is_invalid  s>    . {{8??;78,(A(A4Hrn   c                    \         P                  ! R RR7      w  r\        P                  ! V4       V P	                  \
        \        P                  P                  V4       \        P                  ! V4       R# )test_empty_.inir   suffixN)
rO  rP  rQ  rM   r]  r  r   r  r  r  )rE   rT  rU  s   &  rI   %test_exception_if_confg_file_is_empty4ConfigFileTest.test_exception_if_confg_file_is_empty  sH    !!vF
,(A(A2F
		"rn   c                d    V P                  \        \        P                  P                  R 4       R# )filenotfoundN)r]  FileNotFoundErrorr   r  r  rq   s   &rI   ,test_exception_if_config_file_does_not_exist;ConfigFileTest.test_exception_if_config_file_does_not_exist  s    +W^^-F-FWrn   c                   \         P                  ! R4      P                  4       p\        P                  ! RRR7      w  r# \
        P                  ! W!P                  R4      4       \
        P                  ! V4       \        P                  P                  VR\        ^RRR	R
RRRR//R7      R7       \
        P                  ! V4       R#   \
        P                  ! T4       i ; i)z.bpo-33802 defaults should not get interpolatedat  
            [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]  asciirf  FrZ  r  z5%(asctime)s [%(process)d] [%(levelname)s] %(message)sdatefmtz[%Y-%m-%d %H:%M:%S %z]classzlogging.Formatter)versionrM  
formatters)rh  defaultsN)r  r  striprO  rP  rQ  r  encoderM   r   r  r  dictrt  )rE   inirT  rU  s   &   rI   !test_defaults_do_no_interpolation0ConfigFileTest.test_defaults_do_no_interpolation  s    oo  & ' 	( !!H	HHRG,-HHRLNN%% -2!$&]%'?#%8$ 
 &   IIbMBIIbMs    A1C	 	C!r   N))ru   rv   rw   rx   ry   r	   r<  rZ   r  config1r2  r=  r  r  r  r%  r*  r4  r>  rF  rN  r  r  r  r	  r  r  r   r&  r+  r7  r@  rI  rP  rU  rX  r_  rd  rr  rz   r{   r|   s   @rI   r  r    s    ? / 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* *rn   r  c                   J   a  ] tR tRt o Rt]tR
tR tR t	R t
R tR tRtV tR	# )SocketHandlerTesti,  zTest for SocketHandler objects.c                   \         P                  V 4       R;V n        ;V n        V n         V P                  V P                  V P                  R4      ;V n        pVP                  4        TP                  P                  4        \        P                  P                  p\        TP                   \"        4      '       d   T! RTP$                  4      T n        MT! TP                   R4      T n        RT n        T P(                  P+                  T P(                  P                  ^ ,          4       T P(                  P-                  T P                  4       \.        P0                  ! ^ 4      T n        R#   \         d   pY n         Rp?R# Rp?ii ; i)zlSet up a TCP server to receive log messages, and a SocketHandler
pointing to that server's address and port.N{Gz?rl  r   )r   rJ   rS  	sock_hdlrserver_exceptionserver_classaddresshandle_socketr  r  r:  r  r   rA   SocketHandler
isinstanceserver_addressrb   r  
log_outputr2   rN   rC   r  	Semaphorer  rE   rS  ra  hclss   &   rI   rJ   SocketHandlerTest.setUp5  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
9FF
c                `    V P                   '       d@   V P                  P                  V P                   4       V P                   P                  4        V P                  '       d   V P                  P                  4        \        P                  V 4       R#   \        P                  T 4       i ; i)zShutdown the TCP server.N)ry  r2   rN   rM   rS  r5  r   rU   rq   s   &rI   rU   SocketHandlerTest.tearDownO  sn    	$~~~  ..t~~>$$&{{{  "d#Hd#s   B AB %B B-c                   VP                   p VP                  ^4      p\        V4      ^8  d   R# \        P                  ! RV4      ^ ,          pVP                  V4      p\        V4      V8  d*   W2P                  V\        V4      ,
          4      ,           pK9  \
        P                  ! V4      p\        P                  ! V4      pV ;P                  VP                  R,           ,          un	        V P                  P                  4        K  )T>L
N)
connectionrecvr^   structunpackpickleloadsr   r   r  r  r  release)rE   requestconnchunkslenobjr   s   &&     rI   r}  SocketHandlerTest.handle_socketZ  s    !!IIaLE5zA~==u-a0DIIdOEe*t#		$U*; <<,,u%C**3/FOOvzzD00OLL  "rn   c                p   V P                   '       d   V P                  V P                   4       \        P                  ! R 4      pVP	                  R4       V P
                  P                  4        VP                  R4       V P
                  P                  4        V P                  V P                  R4       R# )tcpr   eggs
spam
eggs
N)
rz  skipTestr   r    r   r  acquirer   r]   r  rO  s   & rI   test_outputSocketHandlerTest.test_outputi  s|       MM$//0""5)VV.9rn   c                x   V P                   '       d   V P                  V P                   4       R V P                  n        V P                  P                  4         \        R4      h  \         d    T P                  P                  R4        Mi ; iT P                  P                  R4       \        P                  ! 4       pT P                  T P                  P                  T4       \        P                  ! T P                  P                  T,
          R,           4       T P                  P                  R4       R# )g      @zDeliberate mistakez
Never sentzNever sent, eitherr  zNor thisN)rz  r  ry  
retryStartrS  r5  r  r2   r  r   r  r  	retryTimer  )rE   nows   & rI   test_noserverSocketHandlerTest.test_noservert  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  rS  rz  ry  Nrl  r?  )ru   rv   rw   rx   ry   rf  r{  r|  rJ   rU   r}  r  r  rz   r{   r|   s   @rI   rv  rv  ,  s2      * LG.4	$#	:+ +rn   rv  zUnix sockets requiredc                   L   a  ] tR tRt o Rt]! ]R4      '       d   ]tR t	Rt
V tR# )UnixSocketHandlerTesti  z)Test for SocketHandler with unix sockets.r  c                    \         P                  ! 4       V n        V P                  \        P
                  V P                  4       \        P                  V 4       R # r   )r   create_unix_domain_namer|  r   r   rt  rv  rJ   rq   s   &rI   rJ   UnixSocketHandlerTest.setUp  8    $<<>	(($,,7%rn   r|  N)ru   rv   rw   rx   ry   hasattrr  r  r{  rJ   rz   r{   r|   s   @rI   r  r    s&      4vy!!+& &rn   r  c                   D   a  ] tR tRt o Rt]tR	tR tR t	R t
R tRtV tR# )
DatagramHandlerTesti  zTest for DatagramHandler.c                   \         P                  V 4       R;V n        ;V n        V n         V P                  V P                  V P                  R4      ;V n        pVP                  4        TP                  P                  4        \        P                  P                  p\        TP                   \"        4      '       d   T! RTP$                  4      T n        MT! TP                   R4      T n        RT n        T P(                  P+                  T P(                  P                  ^ ,          4       T P(                  P-                  T P                  4       \.        P0                  ! 4       T n        R#   \         d   pY n         Rp?R# Rp?ii ; i)znSet up a UDP server to receive log messages, and a DatagramHandler
pointing to that server's address and port.Nrx  rl  r   )r   rJ   rS  ry  rz  r{  r|  handle_datagramr  r  r:  r  r   rA   DatagramHandlerr  r  rb   r  r  r2   rN   rC   r  r  r  r  s   &   rI   rJ   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	8FF	c                `    V P                   '       d   V P                   P                  4        V P                  '       d@   V P                  P	                  V P                  4       V P                  P                  4        \        P                  V 4       R#   \        P                  T 4       i ; i)zShutdown the UDP server.N)rS  r5  ry  r2   rN   rM   r   rU   rq   s   &rI   rU   DatagramHandlerTest.tearDown  sn    	${{{  "~~~  ..t~~>$$&d#Hd#   B +B  ?B B-c                D   \         P                  ! R ^ 4      pVP                  \        V4      R p\        P
                  ! V4      p\        P                  ! V4      pV ;P                  VP                  R,           ,          un        V P                  P                  4        R# )r  Nr  )r  packpacketr^   r  r  r   r   r  r  r  r1  )rE   r  r  r  r  r   s   &&    rI   r  #DatagramHandlerTest.handle_datagram  sk    {{4#D	
+ll6"&&s+6::,,rn   c                   V P                   '       d   V P                  V P                   4       \        P                  ! R 4      pVP	                  R4       V P
                  P                  4        V P
                  P                  4        VP	                  R4       V P
                  P                  4        V P                  V P                  R4       R# )udpr   r  r  N)
rz  r  r   r    r   r  r  rO   r]   r  rO  s   & rI   r  DatagramHandlerTest.test_output  s       MM$//0""5)VV.9rn   r  Nr  )ru   rv   rw   rx   ry   ry  r{  r|  rJ   rU   r  r  rz   r{   r|   s   @rI   r  r    s-      $ LG)4	$
: 
:rn   r  c                   L   a  ] tR tRt o Rt]! ]R4      '       d   ]tR t	Rt
V tR# )UnixDatagramHandlerTesti  z,Test for DatagramHandler using Unix sockets.r  c                    \         P                  ! 4       V n        V P                  \        P
                  V P                  4       \        P                  V 4       R # r   )r   r  r|  r   r   rt  r  rJ   rq   s   &rI   rJ   UnixDatagramHandlerTest.setUp  s8    $<<>	(($,,7!!$'rn   r  Nru   rv   rw   rx   ry   r  r  r  r{  rJ   rz   r{   r|   s   @rI   r  r    s&      7vy!!-( (rn   r  c                   f   a  ] tR tRt o Rt]tRtR tR t	R t
R tR t]! R4      R	 4       tR
tV tR# )SysLogHandlerTesti  z!Test for SysLogHandler using UDP.c                :   \         P                  V 4       R;V n        ;V n        V n         V P                  V P                  V P                  R4      ;V n        pVP                  4        TP                  P                  4        \        P                  P                  p\        TP                   \"        4      '       d,   T! TP                   ^ ,          TP$                  34      T n        MT! TP                   4      T n        RT n        T P(                  P+                  T P(                  P                  ^ ,          4       T P(                  P-                  T P                  4       \.        P0                  ! 4       T n        R#   \         d   pY n         Rp?R# Rp?ii ; i)zlSet up a UDP server to receive log messages, and a SysLogHandler
pointing to that server's address and port.Nrx  rn   )r   rJ   rS  sl_hdlrrz  r{  r|  r  r  r  r:  r  r   rA   r|  r  r  rb   r  r  r2   rN   rC   r  r  r  r  s   &   rI   rJ   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   >E> >F	FFc                `    V P                   '       d   V P                   P                  4        V P                  '       d@   V P                  P	                  V P                  4       V P                  P                  4        \        P                  V 4       R#   \        P                  T 4       i ; i)zShutdown the server.N)rS  r5  r  r2   rN   rM   r   rU   rq   s   &rI   rU   SysLogHandlerTest.tearDown	  sn    	${{{  "|||  ..t||<""$d#Hd#r  c                \    VP                   V n        V P                  P                  4        R # r   )r  r  r  r1  )rE   r  s   &&rI   r  !SysLogHandlerTest.handle_datagram  s    !..rn   c                <   V P                   '       d   V P                  V P                   4       \        P                  ! R 4      pVP	                  R4       V P
                  P                  \        P                  4       V P                  V P                  R4       V P
                  P                  4        RV P                  n        VP	                  R4       V P
                  P                  \        P                  4       V P                  V P                  R4       V P
                  P                  4        RV P                  n        VP	                  R4       V P
                  P                  \        P                  4       V P                  V P                  R4       R# )slh   späm
   <11>späm Fs	   <11>spämu   häm-s   <11>häm-spämN)rz  r  r   r    r   r  r  r   r  r]   r  rO   r  
append_nulidentrO  s   & rI   r  SysLogHandlerTest.test_output  s      MM$//0""5)Y'../*@A"'Y'../*<=&Y'../*GHrn   c                F   \         P                  ! R 4      pV P                  P                  4        V P                  P                  4        VP                  R4       V P                  P                  \        P                  4       V P                  V P                  R4       R# )r  r  r  N)r   r    r  rM   r  rO   r   r  r   r  r]   r  rO  s   & rI   test_udp_reconnection'SysLogHandlerTest.test_udp_reconnection+  sk    ""5)Y'../*@Arn   zsocket.socketc                v   VP                   p\        P                  VP                  n        V P                  \        P                  4      ;_uu_ 4        \        P                  P                  R\        P                  ^R7       RRR4       VP                  P                  4        R#   + '       g   i     L,; i)rl  )r|  socktyper  N)rl  i  )return_valuer  r  connectside_effectr]  r   rA   r|  SOCK_STREAMrM   assert_called)rE   mock_socketinstance_mock_socks   && rI   test_tcp_timeout"SysLogHandlerTest.test_tcp_timeout3  s    (5517"".v~~..**3E4:4F4F34 + 6 /
 	  ..0 /.s   1B((B8	)r  r  rS  rz  r  Nr  )ru   rv   rw   rx   ry   ry  r{  r|  rJ   rU   r  r  r  r   r  rz   r{   r|   s   @rI   r  r    sH      , LG)4	$I&B ?	1 	1rn   r  c                   L   a  ] tR tRt o Rt]! ]R4      '       d   ]tR t	Rt
V tR# )UnixSysLogHandlerTesti?  z)Test for SysLogHandler with Unix sockets.r  c                    \         P                  ! 4       V n        V P                  \        P
                  V P                  4       \        P                  V 4       R # r   )r   r  r|  r   r   rt  r  rJ   rq   s   &rI   rJ   UnixSysLogHandlerTest.setUpG  r  rn   r  Nr  r|   s   @rI   r  r  ?  s&      4vy!!-& &rn   r  z$IPv6 support required for this test.c                   J   a a ] tR tRt oRt]tRtV 3R ltV 3R lt	Rt
VtV ;t# )IPv6SysLogHandlerTestiM  z&Test for SysLogHandler with IPv6 host.c                j   < \         P                  V P                  n        \        \
        V `  4        R # r   )r  AF_INET6r{  r  r  r  rJ   r  s   &rI   rJ   IPv6SysLogHandlerTest.setUpV  s#    +1??(#T02rn   c                j   < \         P                  V P                  n        \        \
        V `  4        R # r   )r  AF_INETr{  r  r  r  rU   r  s   &rI   rU   IPv6SysLogHandlerTest.tearDownZ  s#    +1>>(#T35rn   r   )z::1r?  )ru   rv   rw   rx   ry   ry  r{  r|  rJ   rU   rz   r{   r  r  s   @@rI   r  r  M  s#      1 LG36 6rn   r  c                   6   a  ] tR tRt o RtR tR tR tRtV t	R# )HTTPHandlerTesti^  zTest for HTTPHandler.c                d    \         P                  V 4       \        P                  ! 4       V n        R# )zlSet up an HTTP server to receive log messages, and a HTTPHandler
pointing to that server's address and port.N)r   rJ   r  r  r  rq   s   &rI   rJ   HTTPHandlerTest.setUpc  s     	t (rn   c                   VP                   V n         \        VP                  4      V n        V P                   R 8X  d>    \	        VP
                  R,          4      pVP                  P                  V4      V n        VP                  ^4       VP                  4        V P                  P                  4        R#    RT n         LH; i)rq  zContent-LengthN)commandr   rz  log_dataintheadersrfilerd   	post_datasend_responseend_headersr  r1  )rE   r  rlens   && rI   handle_requestHTTPHandlerTest.handle_requesti  s     .<<6!&7??+;<=!(!3!3D!9 	c"	&!%s   <B7 7	Cc           	        \         P                  ! R 4      pV P                  pVP                  V P                  P                  ^ ,          4       R EF  pRpV'       d    ^ RIp\        P                  P                  \        4      p\        P                  P                  VRR4      pVP                  VP                  4      pVP                  V4       VP                  VR7      p	MRpRp	\!        W@P"                  RVR7      ;V n        p
V
P'                  4        V
P(                  P+                  4        RV
P,                  ,          pT;'       d    Tp\         P                  P/                  VRVX	RR	7      V n        RV n        VP5                  V P0                  4       R EFW  pWP0                  n        V P8                  P;                  4        RpVP=                  V4       V P8                  P+                  \>        P@                  4      pV PC                  VR4       V PE                  V P2                  P                  R4       V PE                  V PF                  V4       VR
8X  d!   \I        V P2                  PJ                  4      pM$\I        V PL                  PO                  R4      4      pV PE                  VR,          R .4       V PE                  VR,          R.4       V PE                  VR,          V.4       EKZ  	  V P$                  PQ                  4        V P                  P                  V P0                  4       V P0                  PS                  4        EK  	  R#   \         d    Rp ELi ; i)httpNcertdatazkeycert.pem)cafilerx  rd  zlocalhost:%dz/frob)securecontextcredentialsrp  r  zHTTP request timed outrf  rG   funcNamer  r  r  r  )foobar)rp  rq  )*r   r    r2   rN   rA   sslrQ  rz  dirname__file__r   
SSLContextPROTOCOL_TLS_SERVERload_cert_chaincreate_default_contextImportErrorrE  r  rS  r  r:  r  server_portr  h_hdlrr  rC   r  r  rO   r   r   SHORT_TIMEOUTrD   r]   r  r   queryr  decoder5  rM   )rE   r  r2   r  r  r	  herelocalhost_certrZ  r  rS  hostsecure_clientr  r  r  ds   &                rI   r  HTTPHandlerTest.test_outputv  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    MM-,M-)r  r  r  r  r  rS  N)
ru   rv   rw   rx   ry   rJ   r  r  rz   r{   r|   s   @rI   r  r  ^  s       )6  6 rn   r  c                   <   a  ] tR tRt o RtR tR tR tR tRt	V t
R# )	
MemoryTesti  z*Test memory persistence of logger objects.c                >    \         P                  V 4       / V n        R# )z8Create a dict to remember potentially destroyed objects.N)r   rJ   
_survivorsrq   s   &rI   rJ   MemoryTest.setUp  s    trn   c                    V F<  p\        V4      \        V4      3p\        P                  ! V4      V P                  V&   K>  	  R# )zCWatch the given objects for survival, by creating weakrefs to
them.N)r,  r  r  r  r  )rE   rR  r  keys   &*  rI   _watch_for_survivalMemoryTest._watch_for_survival  s7     CS'49$C#*;;s#3DOOC  rn   c                0   \         P                  ! 4        . pV P                  P                  4        F$  w  w  r#pV! 4       e   K  VP	                  V4       K&  	  V'       d5   V P                  R\        V4      RP                  V4      3,          4       R# R# )z;Assert that all objects watched for survival have survived.Nz;%d objects should have survived but have been destroyed: %sz, )gccollectr  r  r  ra   r^   r   )rE   deadid_repr_r  s   &    rI   _assertTruesurvivalMemoryTest._assertTruesurvival  sy     	

!%!6!6!8LS#u}E" "9 II .14TDIIdO0LM N rn   c                J   V P                   P                  \        P                  4       \        P                  ! R 4      pV P                  V4       VP                  \        P                  4       V P                   P                  V P                  4       4       VP                  V P                  4       4       V P                  R.4       ?V P                  4        \        P                  ! R 4      pVP                  V P                  4       4       V P                  RR.4       R# )r  N)r  r9   r   )r  r9   r   )r2   r8   r   r   r    r#  r9   r   rr   rl   r+  )rE   r  r  s   &  rI   test_persistent_loggers"MemoryTest.test_persistent_loggers  s     	!!',,/&  %W]]#t0023		$##%&!
 	   "&		$##%&!!
 	rn   )r  N)ru   rv   rw   rx   ry   rJ   r#  r+  r.  rz   r{   r|   s   @rI   r  r    s"     4
4
N rn   r  c                   ,   a  ] tR tRt o R tR tRtV tR# )EncodingTesti  c                   \         P                  ! R 4      p\        RR4      pRp \         P                  ! VRR7      pVP	                  V4        VP                  V4       VP                  V4       VP                  4        \        VRR7      p V P                  VP                  4       P                  4       V4       VP                  4         \        P                  P                  V4      '       d   \        P                  ! V4       R# R#   TP                  T4       TP                  4        i ; i  TP                  4        i ; i  \        P                  P                  T4      '       d   \        P                  ! T4       i i ; i)rC  r  ztest_logging-1-u   foorf  r  N)r   r    rV  r  rC   r   rN   rM   r  r]   rd   rstriprQ  rz  isfiler  )rE   r   rU  r  r   r   s   &     rI   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	 .D4 >E	 #D11E	 4EE	 	>Fc                   \         P                  ! R 4      pRp\        P                  ! R4      pRVn        \
        P                  ! 4       pV! VR4      p\         P                  ! V4      pVP                  V4        VP                  V4       VP                  V4       VP                  4        VP                  4       pV P                  VR4       R#   TP                  T4       TP                  4        i ; i)rC  u   до свиданияcp1251stricts    
N)r   r    codecs	getwriterrh  r5   BytesIOr:   rC   r   rN   rM   r[   r]   )rE   r   messagewriter_classr7   writerr   rk   s   &       rI   test_encoding_cyrillic_unicode+EncodingTest.test_encoding_cyrillic_unicode  s    'Q''1 (fh/''/w	KK g&MMOOOJK g&MMOs   <C #C5r   N)ru   rv   rw   rx   r5  r@  rz   r{   r|   s   @rI   r1  r1    s     2L Lrn   r1  c                   ,   a  ] tR tRt o R tR tRtV tR# )WarningsTesti	  c           
     ^   \         P                  ! 4       ;_uu_ 4        \        P                  ! R 4       V P	                  \        P                  R4       \         P
                  ! R\        R7       \        P                  ! 4       p\        P                  ! V4      p\        P                  ! R4      pVP                  V4       \         P                  ! R4       VP                  V4       VP                  4       pVP                  4        V P!                  VP#                  R4      ^ 4       \        P                  ! 4       p\         P$                  ! R\        R^*VR	4       VP                  4       pVP                  4        V P'                  VR
4       RRR4       R#   + '       g   i     R# ; i)TFalways)categorypy.warningszI'm warning you...z UserWarning: I'm warning you...
Explicitdummy.pyz
Dummy linez0dummy.py:42: UserWarning: Explicit
  Dummy line
N)warningscatch_warningsr   captureWarningsr   filterwarningsUserWarningr5   r6   r:   r    rC   warnrN   r[   rM   r  findshowwarningr]   )rE   r7   rT   r  rk   a_files   &     rI   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   E3FF,	c                0   \         P                  ! 4       ;_uu_ 4        \        P                  ! R 4       V P	                  \        P                  R4       \        P
                  ! R4      pV P                  VP                  . 4       \         P                  ! R\        R^*4       V P                  \        VP                  4      ^4       V P                  VP                  ^ ,          \        P                  4       RRR4       R#   + '       g   i     R# ; i)TFrG  rH  rI  N)rJ  rK  r   rL  r   r    r]   rA   rQ  rN  r^   assertIsInstanceNullHandlerrO  s   & rI   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DD	r   N)ru   rv   rw   rx   rS  rX  rz   r{   r|   s   @rI   rC  rC  	  s     F0K Krn   rC  c                 .    \         P                  ! W4      # r   )r   r<   )r  ri  s   &&rI   
formatFuncr[  :	  s    V--rn   c                   *   a  ] tR tRt o RR ltRtV tR# )myCustomFormatteri=	  Nc                    R # r   r   )rE   fmtri  s   &&&rI   r  myCustomFormatter.__init__>	      rn   r   r   )ru   rv   rw   rx   r  rz   r{   r|   s   @rI   r]  r]  =	  s      rn   r]  c                  ,    \         P                  ! 4       # r   )r   r:   r   rn   rI   handlerFuncrc  A	  s      ""rn   c                       ] tR tRtRtR# )CustomHandleriD	  r   Nru   rv   rw   rx   rz   r   rn   rI   re  re  D	      rn   re  c                       ] tR tRtRtR# )CustomListeneriG	  r   Nrf  r   rn   rI   ri  ri  G	  rg  rn   ri  c                       ] tR tRtRtR# )CustomQueueiJ	  r   Nrf  r   rn   rI   rk  rk  J	  rg  rn   rk  c                   0   a  ] tR tRt o RR ltR tRtV tR# )CustomQueueProtocoliM	  c                <    \         P                  ! V4      V n         R # r   queueQueue)rE   maxsizes   &&rI   r  CustomQueueProtocol.__init__N	  s    [[)
rn   c                D    \         P                  V R 4      p\        W!4      # rp  )object__getattribute__r/   )rE   	attributerp  s   && rI   rO  CustomQueueProtocol.__getattr__Q	  s    ''g6u((rn   ru  N)r?  )ru   rv   rw   rx   r  rO  rz   r{   r|   s   @rI   rm  rm  M	  s     *) )rn   rm  c                   &   a  ] tR tRt o R tRtV tR# )CustomQueueFakeProtocoliU	  c                    R # r   r   rq   s   &rI   
put_nowait"CustomQueueFakeProtocol.put_nowait]	  ra  rn   r   N)ru   rv   rw   rx   r}  rz   r{   r|   s   @rI   r{  r{  U	  s      rn   r{  c                       ] tR tRtRtRtR# )CustomQueueWrongProtocoli`	  Nr   )ru   rv   rw   rx   r}  rz   r   rn   rI   r  r  `	  s    Jrn   r  c                   ,   a  ] tR tRt o R tR tRtV tR# )MinimalQueueProtocolic	  c                    R # r   r   )rE   xs   &&rI   r}  MinimalQueueProtocol.put_nowaitd	  s    Trn   c                    R # r   r   rq   s   &rI   getMinimalQueueProtocol.gete	  s    4rn   r   N)ru   rv   rw   rx   r}  r  rz   r{   r|   s   @rI   r  r  c	  s     !rn   r  c                  ,    \         P                  ! 4       # r   ro  r   rn   rI   
queueMakerr  g	  s    ;;=rn   c                    a V3R  lpV# )c                 F   < VP                  R S4       \        V .VO5/ VB # respect_handler_level)
setdefaultri  )rp  rA   rS  r  s   &*,rI   funclistenerMaker.<locals>.funck	  s*    13HIe9h9&99rn   r   )arg1arg2r  r  s   &&f rI   listenerMakerr  j	  s    : Krn   c                     a  ] tR tRt o Rt]P                  tRtR^RRRR//R	R
RRRRRRRR//RRRR	R
.//tR^RRRR//R	R
RRRRRRRR//RRRRR	R
.//RRR//t	R^RRRR//R	R
RRRRRRRR//RRRR//RRRR	R
.//t
R^RRRR//R	R
RRRRRRRR//RRRRR	R
.//RRR//tR^RRRR//R	R
RRRRRRRR//RRRRR	R
.//RRR//tR^RRRR//R	R
RRRRRRRR//RRRRR	R
.//RRR//tR^RRRR//R	R
RRRRRRRR//RRRRR	R
.//RRR//tR^RRR] R,           RR//R	R
RRRRRRRR//RRRR	R
.//tR^RRR]RR/RR] R,           RR/R R]RR//R	R
RRRRRRRR/R!R]//RRRR	R
.//tR^RRRR//R	R
R] R",           RRRRRR//RRRRR	R
.//RRR//t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//tR^RRRR//R	R
RRRRRRRR//RR%RRR	R
.//RRR//tR^R&R'RRRR//R	R
RRRRRRRR//RR(RRR	R
./R%/ /RRR//tR^R&R)RRRR//R	R
RRRRRRRR//RR(RRR	R
./R%/ /RRR//tR^RRRR//R	R
RRRRRRRR//RRRRR	R
.//RRR//tR^R*R)R	R
RR//RRRR+///tR^R*R)R	R
RR+//RRRR+///tR^RRRR//R,R-R.R//R	R
RRRRRRRRR,R-.//RRRRR,R-.//RRRR	R
.//tR^R/RRR//R0R
RRRRRRRR//RR1R	R
R2/RRRRR	R
.//RRR//tR/RRR//R0R
RRRRRRRR//RR1R	R
R2/RRRRR	R
.//RRR//tR^R/RRR//R0R
RRRRRRRR//RR1R	R
R2/RRRRR	R
.//RRR//tR^RRRR//R	R
RRRRRRRRR3R4R5R6R7///RRRR	R
.//t R^RRRR8R9R:R;///R	R
RRRRRRRR//RRRR	R
.//t! ! R< R=]"PF                  4      t$R^RR>R]$R?R@RARBRRCR3RDRE///R	R
RRRR>RRRR//RRRR	R
.//t%R^R	RFRRRR/RGRRHRI^RJRFRRRKRL//RRMRRR	RG.RNRO///t&R^RRPRRQR?RR//R	RSRRRRRRP/RTRRHRI^RRPRJRSRR//RRMRRR	RT.RNRO///t'R^RRR] R,           RRRUR'//R	R
RRRRRRRR//RRVRRR	R
.RNRO///t(R^RRR] R,           RRRUR'//R	R
RRRRRRRR//RRVRRR	R
.RNRO///t)R^RRR] RW,           RRRUR'//R	R
RRRRRRRR//RRVRRR	R
.RNRO///t*R^RRR]RRRUR'//R	R
RRRRRRRR//RRVRRR	R
.RNRO///t+R^RRR]RRXR9R:RY///R	R
RRRRRRRR//RRVRRR	R
.RNRO///t,R^R	RZRR[/R\RR]R	RZ.//RRRR	R\.//t- ! R^ R_]"P\                  4      t/R^RRRR//R	R
R]/RRRRRR//RRRRR	R
.//RRR//t0R` t1Ra t2Rb t3]	3Rc lt4Rd t5Re t6Rf t7Rg t8Rh t9Ri t:Rj t;Rk t<Rl t=Rm t>Rn t?Ro t@Rp tARq tBRr tCRs tDRt tERu tFRv tGRw tHRx tIRy tJRR{ ltK]LP                  ! 4       R| 4       tN]LP                  ! 4       R} 4       tO]LP                  ! 4       R~ 4       tPR tQR tRR tSR tTR tUR tVR tWR tXR tYR tZR t[R t\R t]R t^R t_]`P                  ! 4       ]LP                  ! 4       R 4       4       tcR td]`P                  ! 4       ]LP                  ! 4       ]e! R4      R 4       4       4       tf]e! R4      R 4       tg]h]LP                  ! 4       ]iP                  ! ]LP                  R4      R 4       4       4       tl]h]LP                  ! 4       ]iP                  ! ]LP                  R4      R 4       4       4       tm]nR 4       to]h]LP                  ! 4       R 4       4       tpR tqR trR tsRttV tuRz# )ConfigDictTestip	  z)Reading logging config from a dictionary.r  rk  rl  form1r  z%(levelname)s ++ %(message)srA   rS  rj  logging.StreamHandlerrG  r  r   r7   zext://sys.stdoutr?  r   loggersr  r9   zext://sys.stdboutNTOSETWRANINGmisspelled_name()z.ExceptionFormatterz"%(levelname)s:%(name)s:%(message)sform2z.formatFuncform3hand2z.CustomHandlerr   zinvalid parameter namer/  rM  FcompilerTincrementalr   filtersfilt1rG   true_formattershandler_configszcfg://true_formatterszcfg://handler_configs[hand1]r   r  r  
terminator!
z%(message)s ++ %(customfield)srm  rD  defaultvaluec                   6   a a ] tR tRt oRtV 3R ltRtVtV ;t# )ConfigDictTest.CustomFormatteri  r   c                "   < \         SV `  V4      # r   )r  r  rE   r   r  s   &&rI   r  %ConfigDictTest.CustomFormatter.format  s    7>&))rn   r   )	ru   rv   rw   rx   custom_propertyr  rz   r{   r  r  s   @@rI   CustomFormatterr    s     	* 	*rn   r  customstyle{ri  %Y-%m-%d %H:%M:%S	{message}r  valueconsole	bufferingzlogging.handlers.MemoryHandlercapacityr  
flushLevelr   mymoduler  truemySimpleFormatterz1%(asctime)s (%(name)s) %(levelname)s: %(message)s$
fileGlobalbufferGlobalvalidatemy_test_logger_custom_formatterz.myCustomFormatterz2%(levelname)s:%(name)s:%(message)s:%(customfield)smyvalueh1logging.FileHandlerahlogging.handlers.QueueHandlerc                   6   a a ] tR tRt oRV 3R lltRtVtV ;t# )$ConfigDictTest.DeprecatedStrmHandleri  c                (   < \         SV `  VR 7       R# r  N)r  r  )rE   strmr  s   &&rI   r  -ConfigDictTest.DeprecatedStrmHandler.__init__  s    GD)rn   r   r   ru   rv   rw   rx   r  rz   r{   r  r  s   @@rI   DeprecatedStrmHandlerr    s     	* 	*rn   r  c                D    \         P                  P                  V4       R # r   )r   r  
dictConfig)rE   r  s   &&rI   r  ConfigDictTest.apply_config  s    !!$'rn   c                T    \         P                  ! V4      pV P                  W24       R # r   )r   getHandlerByNamerV  )rE   rG   r  rT   s   &&& rI   check_handlerConfigDictTest.check_handler  s     $$T*a%rn   c                   \         P                  ! 4       ;_uu_ 4       pV P                  V P                  4       V P	                  R \
        P                  4       \
        P                  ! 4       pVP                  V P                  4       4       VP                  V P                  4       4       V P                  R.VR7       V P                  . 4       RRR4       R#   + '       g   i     R# ; i)rS  r  Nr  )r   r  r  r  r  r   r:   r    r   rr   r   rl   r  s   &  rI   r  ConfigDictTest.test_config0_ok  s    $$&&&dll+w(=(=>&&(FKK))+,LL**,-!!# "  !!"% '&&&s   B4CC-	c                   \         P                  ! 4       ;_uu_ 4       pV P                  V4       \        P                  ! R 4      pVP                  V P                  4       4       VP                  V P                  4       4       V P                  RR.VR7       V P                  . 4       RRR4       R#   + '       g   i     R# ; ir  r  r  s   &&  rI   r	  ConfigDictTest.test_config1_ok
  r  r  c                \    V P                  \        V P                  V P                  4       R # r   r  rq   s   &rI   r  #ConfigDictTest.test_config2_failure  r  rn   c                \    V P                  \        V P                  V P                  4       R # r   )r]  r  r  config2arq   s   &rI   test_config2a_failure$ConfigDictTest.test_config2a_failure      )T%6%6Frn   c                \    V P                  \        V P                  V P                  4       R # r   )r]  r  r  config2brq   s   &rI   test_config2b_failure$ConfigDictTest.test_config2b_failure!  r  rn   c                \    V P                  \        V P                  V P                  4       R # r   r  rq   s   &rI   r  #ConfigDictTest.test_config3_failure%  r  rn   c                   \         P                  ! 4       ;_uu_ 4       pV P                  V P                  4       V P	                  R \
        P                  4        \        4       h  \         d    \
        P                  ! R4        Mi ; i\        P                  P                  ^ 4       T P                  TP                  4       R4       T P                  . 4       RRR4       R#   + '       g   i     R# ; i)rS  r  r  N)r   r  r  r  r  r   r:   r  r  rr  r  r  r]   r[   rl   rE   r  s   & rI   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&&C7	c                   \         P                  ! 4       ;_uu_ 4       pV P                  V P                  4        \	        4       h  \         d    \
        P                  ! R 4        Mi ; i\        P                  P                  ^ 4       T P                  TP                  4       R4       T P                  . 4       RRR4       R#   + '       g   i     R# ; ir  )r   r  r  config4ar  r   r  rr  r  r  r]   r[   rl   r  s   & rI   test_config4a_okConfigDictTest.test_config4a_ok9  s    $$&&&dmm,2"n$ 2!!.12JJOOAV__.AC !!"% '&&&s)   C
A!A)&C(A))ACC	c                j    V P                  V P                  R 7       V P                  R\        4       R# )r$  rS  N)r	  r%  r  re  rq   s   &rI   r&  ConfigDictTest.test_config5_okH  s'    DLL17M2rn   c                    R pV P                  \        V4      ;_uu_ 4        V P                  V P                  R7       RRR4       R#   + '       g   i     R# ; i)zSupport for custom logging handlers with the 'strm' argument is deprecated and scheduled for removal in Python 3.16. Define handlers with the 'stream' argument instead.r$  N)assertWarnsRegexDeprecationWarningr	  .config_custom_handler_with_deprecated_strm_arg)rE   r  s   & rI   5test_deprecation_warning_custom_handler_with_strm_argDConfigDictTest.test_deprecation_warning_custom_handler_with_strm_argL  sI    B 	
 ""#5s;;  ([([ \ <;;;s   AA	c                \    V P                  \        V P                  V P                  4       R # r   )r]  r  r  r*  rq   s   &rI   test_config6_failure#ConfigDictTest.test_config6_failureU  s    )T%6%6Ern   c                   \         P                  ! 4       ;_uu_ 4       pV P                  V P                  4       \        P
                  ! R 4      pVP                  V P                  4       4       VP                  V P                  4       4       V P                  RR.VR7       V P                  . 4       RRR4       \         P                  ! 4       ;_uu_ 4       pV P                  V P                  4       V P                  R\        P                  4       \        P
                  ! R 4      pV P                  VP                  4       \        P
                  ! R4      pVP                  V P                  4       4       VP                  V P                  4       4       V P                  RR.VR7       V P                  . 4       RRR4       R#   + '       g   i     EL; i  + '       g   i     R# ; i)	r  r  NrS  r/  r  r  r   r   r   r   )r   r  r  rt  r   r    r   rr   r   rl   r4  r  r:   rD   r   r  s   &  rI   r7  ConfigDictTest.test_config7_okX  s   $$&&&dll+&&'89FKK))+,LL**,-!!#  " 
 !!"% ' $$&&&dll+w(=(=>&&'89FOOFOO,&&'78FKK))+,LL**,-!!#  " 
 !!"% '& '&& '&&s   BG
C'G
G	G/	c                `   \         P                  ! 4       ;_uu_ 4       pV P                  V P                  4       \        P
                  ! R 4      pVP                  V P                  4       4       VP                  V P                  4       4       V P                  RR.VR7       V P                  . 4       RRR4       \         P                  ! 4       ;_uu_ 4       pV P                  V P                  4       V P                  R\        P                  4       \        P
                  ! R 4      pV P                  VP                  4       VP                  V P                  4       4       VP                  V P                  4       4       \        P
                  ! R4      pVP                  V P                  4       4       VP                  V P                  4       4       V P                  . ROVR7       V P                  . 4       RRR4       R#   + '       g   i     EL]; i  + '       g   i     R# ; i)r  r  NrS  r/  r  r  )r  r  r   r   r   r   )r   r  r  rt  r   r    r   rr   r   rl   r>  r  r:   ry  r   r  s   &  rI   test_config_8_okConfigDictTest.test_config_8_okv  s   $$&&&dll+&&'89FKK))+,LL**,-!!#  " 
 !!"% ' $$&&&dll+w(=(=>&&'89FV__-KK))+,LL**,-&&'78FKK))+,LL**,-!! #
  "  !!"%' '& '&& '&&s   BHD%HH	H-	c                H   \         P                  ! 4       ;_uu_ 4       pV P                  V P                  4       V P	                  R \
        P                  4       \
        P                  ! R4      p\
        P                  ! R4      pVP                  V P                  4       4       VP                  V P                  4       4       VP                  V P                  4       4       V P                  . ROVR7       V P                  . 4       RRR4       \         P                  ! 4       ;_uu_ 4       pV P                  V P                  4       V P	                  R \
        P                  4       \
        P                  ! R4      pV P                  VP                  4       VP                  V P                  4       4       VP                  V P                  4       4       \
        P                  ! R4      pVP                  V P                  4       4       VP                  V P                  4       4       XP                  V P                  4       4       V P                  . ROVR7       V P                  . 4       RRR4       R#   + '       g   i     EL|; i  + '       g   i     R# ; i)rS  r  r.  r  Nr/  r0  r1  )r   r  r  r2  r  r   r:   r    r   rr   r   r3  rl   config8ary  r   r5  s   &   rI   test_config_8a_ok ConfigDictTest.test_config_8a_ok  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J<J	J!	c                   \         P                  ! 4       ;_uu_ 4       pV P                  V P                  4       V P	                  R \
        P                  4       \
        P                  ! R4      pVP                  V P                  4       4       V P                  . VR7       V P                  V P                  4       VP                  V P                  4       4       V P                  . VR7       V P                  V P                  4       VP                  V P                  4       4       V P                  R.VR7       RRR4       R#   + '       g   i     R# ; i)rS  r  r  Nr  )r   r  r  rF  r  r   r:   r    r   rr   rl   config9aconfig9br  s   &  rI   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EE	c                   \         P                  ! 4       ;_uu_ 4       pV P                  V P                  4       V P	                  R \
        P                  4       \
        P                  ! R4      pVP                  V P                  4       4       \
        P                  ! R4      pVP                  V P                  4       4       \
        P                  ! R4      pVP                  V P                  4       4       \
        P                  ! R4      pVP                  V P                  4       4       V P                  RR.VR7       RRR4       R#   + '       g   i     R# ; i	rS  r  r  r/  zcompiler.parser.codegenr  N)r   r   r  )r   r  r  config10r  r   r:   r    r   rr   r   rl   r  s   &  rI   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                <    V P                  V P                  4       R # r   )r	  config11rq   s   &rI   test_config11_okConfigDictTest.test_config11_ok  s    T]]+rn   c                \    V P                  \        V P                  V P                  4       R # r   )r]  r  r  config12rq   s   &rI   test_config12_failure$ConfigDictTest.test_config12_failure      )T%6%6Frn   c                \    V P                  \        V P                  V P                  4       R # r   )r]  r  r  config13rq   s   &rI   test_config13_failure$ConfigDictTest.test_config13_failure  r  rn   c                   \         P                  ! 4       ;_uu_ 4       pV P                  V P                  4       \        P
                  R ,          pV P                  VP                  R4       V P                  VP                  R4       \        P                  ! R4       V P                  VP                  4       R4       RRR4       R#   + '       g   i     R# ; i)rS  r  r  ExclamationzExclamation!
N)r   r  r  config14r   r$   r]   r  r  r   r  r[   )rE   r  rT   s   &  rI   test_config14_okConfigDictTest.test_config14_ok  s    $$&&&dmm,!!'*AQUUE*Q\\51OOM* 13CD '&&&s   B!C		C	c                `   V P                  4       ;_uu_ 4        \        R R4      pR^RRRRRVRR	//R
RR.//pV P                  V4       V P                  V4       RRR4       \        P                  P
                  ^ ,          pV P                  \        VX4       R#   + '       g   i     LJ; i)r  r:  rk  rA   r  rj  r  filenamerh  rf  r?  N)r<  rV  r  r   r?  rA   r   r  )rE   rU  r  r   s   &   rI   test_config15_okConfigDictTest.test_config15_ok  s    ++--(9:B 1!6"B"G F f%f%% .( ,,''*('26+ .-s   ABB-	c                z   V P                  V P                  4       \        P                  R ,          pVP                  P                  \        P                  ! RRRR/4      4      pV P                  VR4       VP                  P                  \        P                  ! RR/4      4      pV P                  VR4       R# )rS  r  HellorD  rE  zHello ++ customvaluezHello ++ defaultvalueN)r  config16r   r$   rG  r  r   r]   )rE   rT   rH  s   &  rI   test_config16_okConfigDictTest.test_config16_ok  s    $--(g& ##G$9$9G]M:%< =!78 ##G$9$9G% !89rn   c                    V P                  V P                  4       \        P                  R ,          pV P	                  VP
                  P                  R4       R# )rS  r  N)r  config17r   r$   r]   rG  r  r`  s   & rI   test_config17_okConfigDictTest.test_config17_ok%  s>    $--(g&44g>rn   c                    V P                  V P                  4       \        P                  ! R 4      P                  ^ ,          pV P                  VP                  \        P                  4       R# )r  N)r  config18r   r    rA   r]   r  r   rE   r   s   & rI   test_config18_okConfigDictTest.test_config18_ok*  sI    $--(##J/88;++W]];rn   Nc                   VP                  R 4      p\        P                  P                  ^ V4      pVP	                  4        VP
                  P                  4        VP                  pVP
                  P                  4         \        P                  ! \        P                  \        P                  4      pVP                  R4       VP                  RV34       \        P                  ! R\!        V4      4      pWa,           p^ p\!        V4      p	V	^ 8  d&   VP#                  WxR 4      p
W,          pW,          p	K,  VP%                  4        VP
                  P                  R4       \        P                  P'                  4        \(        P*                  ! V4       R#   TP
                  P                  R4       \        P                  P'                  4        \(        P*                  ! T4       i ; i)rf  g       @rl  r  N)ro  r   r  listenr  r:  r  r  rO   r  r  r  
settimeoutr  r  r  r^   sendrM   stopListeningr   r3  )rE   textverifyr)  r  r`  r  rk   	sentsofarleftsents   &&&        rI   setup_via_listener!ConfigDictTest.setup_via_listener/  sH   {{7#NN!!!V,			vv		,==1C1CDDOOC LL+t,-;;tSY/DAIq6D(yy:/!	JJLGGLLNN((*((+ GGLLNN((*((+s   CF AG-c                   \         P                  ! 4       ;_uu_ 4       pV P                  \        P                  ! V P
                  4      4       V P                  R \        P                  4       \        P                  ! R4      pVP                  V P                  4       4       \        P                  ! R4      pVP                  V P                  4       4       \        P                  ! R4      pVP                  V P                  4       4       \        P                  ! R4      pVP                  V P                  4       4       V P                  RR.VR7       RRR4       R#   + '       g   i     R# ; ir  )r   r  r?  jsondumpsr  r  r   r:   r    r   rr   r   rl   r  s   &  rI   test_listen_config_10_ok'ConfigDictTest.test_listen_config_10_okK  s   $$&&&##DJJt}}$=>w(=(=>&&'89FNN4,,./&&z2FNN4,,./&&'78FNN4,,./&&'@AFLL**,-!! #  "  '&&&s   D9E!!E2	c                   \         P                  ! 4       ;_uu_ 4       pV P                  \        P                  ! \
        P                  4      4       \        P                  ! R 4      pVP                  V P                  4       4       VP                  V P                  4       4       V P                  RR.VR7       V P                  . 4       RRR4       R#   + '       g   i     R# ; ir  )r   r  r?  r  r  r  rt  r   r    r   rr   r   rl   r  s   &  rI   test_listen_config_1_ok&ConfigDictTest.test_listen_config_1_ok`  s    $$&&&##HOON4J4J$KL&&'89FKK))+,LL**,-!!#  " 
 !!"% '&&&s   B.CC'	c                    R  pR p\         P                  ! R4      p\        P                  ! \        P
                  4      p\        P                  ! 4       ;_uu_ 4       pV P                  WA4       VP                  V P                  4       4       VP                  V P                  4       4       RRR4       V P                  . XR7       V P                  RR.RR7       \        P                  ! 4       ;_uu_ 4       pV P                  V4       \         P                  ! R4      pVP                  V P                  4       4       VP                  V P                  4       4       RRR4       V P                  R	R
.VR7       V P                  RR.RR7       \        P                  ! 4       ;_uu_ 4       pV P                  VRRR1,          V4       \         P                  ! R4      pVP                  V P                  4       4       VP                  V P                  4       4       RRR4       V P                  RR.VR7       V P                  RR.RR7       R#   + '       g   i     EL; i  + '       g   i     EL; i  + '       g   i     Ld; i)c                     R # r   r   stuffs   &rI   verify_fail6ConfigDictTest.test_listen_verify.<locals>.verify_failr  s    rn   c                     V R R R1,          # )Nro  r   rK  s   &rI   verify_reverse9ConfigDictTest.test_listen_verify.<locals>.verify_reverseu  s    2;rn   r  Nr  r  )rf   r  r  r  r  ro  r  r   )r   r    r  r  r  rt  r   r  r?  r   rr   r   rl   )rE   rM  rP  r  to_sendr  s   &     rI   test_listen_verify!ConfigDictTest.test_listen_verifyo  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I;A&I)0A1I=I&	)I:	=J	c                \    V P                  \        V P                  V P                  4       R # r   )r]  r  r  
bad_formatrq   s   &rI   test_bad_formatConfigDictTest.test_bad_format  s    *d&7&7Irn   c                   \         P                  ! V P                  4      pR VR,          R,          R&   V P                  V4       \        P
                  ! R4      P                  ^ ,          pV P                  VP                  \        P                  4       V P                  VP                  P                  \        P                  4       V P                  \        \        P                  ! 4       4      RR.4       R# )z-${asctime} (${name}) ${levelname}: ${message}rl  r  r  r  r  r  N)r%   deepcopyrV  r  r   r    rA   rV  r  r\  rG  _styleStringTemplateStyler]   sortedgetHandlerNamesrE   r  r   s   &  rI   !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	9rn   c                    V P                  V P                  4       \        P                  ! R 4      P                  ^ ,          pV P                  VP                  \        4       R# r  N)r  custom_formatter_class_validater   r    rA   rV  rG  r  r2  s   & rI   )test_custom_formatter_class_with_validate8ConfigDictTest.test_custom_formatter_class_with_validate  sJ    $>>?##$EFOOPQRg//1CDrn   c                    V P                  V P                  4       \        P                  ! R 4      P                  ^ ,          pV P                  VP                  \        4       R# rc  )r   custom_formatter_class_validate2r   r    rA   rV  rG  r  r2  s   & rI   *test_custom_formatter_class_with_validate29ConfigDictTest.test_custom_formatter_class_with_validate2  sJ    $??@##$EFOOPQRg//1CDrn   c                   V P                   P                  4       pR VR,          R,          R&   V P                  V4       \        P                  ! R4      P
                  ^ ,          pV P                  VP                  \        4       R# )r  rl  r  r  r  N)	rd  r%   r  r   r    rA   rV  rG  r  r_  s   &  rI   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Drn   c                \    V P                  \        V P                  V P                  4       R # r   )r]  r  r   custom_formatter_class_validate3rq   s   &rI   *test_custom_formatter_class_with_validate39ConfigDictTest.test_custom_formatter_class_with_validate3  s     *d&7&79^9^_rn   c                \    V P                  \        V P                  V P                  4       R # r   )r]  r  r  custom_formatter_with_functionrq   s   &rI   ,test_custom_formatter_function_with_validate;ConfigDictTest.test_custom_formatter_function_with_validate       *d&7&79\9\]rn   c                \    V P                  \        V P                  V P                  4       R # r   )r]  r  r  custom_formatter_with_defaultsrq   s   &rI   ,test_custom_formatter_function_with_defaults;ConfigDictTest.test_custom_formatter_function_with_defaults  rv  rn   c           +     	   R RCR. RDORRRR^R^R	^	R
^R^R^R^ R^
RRRR^R^R	^	R^
RRERR^R^R^///
RRERRRR.R.R. RFO/p\         P                  P                  V4      pV P                  VP	                  R4      ^4       V P                  VP	                  R 4      R4       V P                  VP	                  R!4      R4       V P                  VP	                  R"4      R4       V P                  VP	                  R#4      R4       V P                  VP	                  R$4      ^4       V P                  VP	                  R%4      ^4       V P                  VP	                  R&4      ^	4       V P                  VP	                  R'4      ^
4       V P                  VP	                  R(4      R4       V P                  VP	                  R)4      R4       V P                  VP	                  R*4      R4       V P                  VP	                  R+4      ^4       V P                  VP	                  R,4      ^4       V P                  VP	                  R-4      ^	4       V P                  VP	                  R.4      ^
4       V P                  VP	                  R/4      R4       V P                  VP	                  R04      R4       V P                  VP	                  R14      R4       V P                  VP	                  R24      R4       V P                  VP	                  R34      ^4       V P                  VP	                  R44      ^4       V P                  VP	                  R54      ^4       V P                  VP	                  R64      ^4       V P                  VP	                  R74      R4       V P                  VP	                  R84      R4       V P                  VP	                  R94      ^4       V P                  VP	                  R:4      ^4       VP	                  R;4      pV P                  VP                  ^4      . RDO4       V P                  \        VP                  R<4       V P                  \        VP                  R=4       V P                  \        VP                  R>4       V P                  \        VP                  R?4       V P                  \        VP                  R@4       V P                  \        VP                  RA4       RB# )Gatuplealistr  badictr  ra  r   zalpha numeric 1 with spacesu   alpha numeric 1 %( - © ©ß¯zalpha numeric ] 1 with spacesu"   alpha ]] numeric 1 %( - © ©ß¯]u#    alpha [ numeric 1 %( - © ©ß¯] z alpha r   nest4somelistgrT   r  jsomedictza with 1 and spaceza with ( and spacenest1nest2r  lr   r  nest3zcfg://atuple[1]zcfg://alist[1]zcfg://nest1[1][0]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]z"cfg://adict[nest4][somelist][1][0]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://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 %( - © ©ß¯] ]N)rq  r      )r  r~  c)r  )rT   r  r  )ozcfg://alistp)	r   r  BaseConfiguratorr]   convertpopr]  KeyErrorr  )rE   r  bcr  s   &   rI   test_baseconfigConfigDictTest.test_baseconfig  sB   i_S#q-01/"4r5BRc11A4q"8a,q,q", +cC: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ern   c           	        ^ RI Hp  ! R R\        P                  4      pV! RRR.4      pV! RR.R	7      pR
^RRRVRV//RRRRR.//p\        P
                  ! 4       ;_uu_ 4       pV P                  V4       \        P                  ! R4       RRR4       V P                  XP                  4       R4       R#   + '       g   i     L2; i)r?  )
namedtuplec                   >   a a ] tR tRt oV 3R ltV 3R ltRtVtV ;t# )1ConfigDictTest.test_namedtuple.<locals>.MyHandleri!  c                4   < \         SV `  ! V/ VB  Wn        R # r   )r  r  resource)rE   r  rR  rS  r  s   &&*,rI   r  :ConfigDictTest.test_namedtuple.<locals>.MyHandler.__init__"  s     $1&1,4rn   c                   < V;P                   R V P                  P                   2,          un         \        SV `  V4      #  )r  r  typer  r_  r  s   &&rI   r_  6ConfigDictTest.test_namedtuple.<locals>.MyHandler.emit&  s2    

$--"4"4!566
w|F++rn   )r  r  r  s   @@rI   	MyHandlerr  !  s     5, ,rn   r  Resourcer  labelsmy_typer  )r  r  rk  rA   	myhandlerr  r  r?  r  r   zsome logNzsome log my_type
)
collectionsr  r   r:   r   r  r  r   r]   r[   )rE   r  r  r  r  r  r  s   &      rI   test_namedtupleConfigDictTest.test_namedtuple  s    *	,-- 	, j68*<=C59 q) gvzK=A	
 $$&&&f%LL$ ' 	*,@A '&s   &(B88C	c           	         R  pV P                  R^RRRRV.//4       \        P                  ! 4       P                  ^ ,          VJ g   Q h. \        P                  ! 4       n        R# )c                     ^# rq  r   )r  s   &rI   r   AConfigDictTest.test_config_callable_filter_works.<locals>.filter_=  s    rn   rk  r?  r  r9   r  Nr  r   r    r  rE   r   s   & rI   !test_config_callable_filter_works0ConfigDictTest.test_config_callable_filter_works<  sc    	q&7GY	"J
 	   "**1-888&(#rn   c           	         \         P                  ! R 4      pV P                  R^RRRRV.//4       \         P                  ! 4       P                  ^ ,          VJ g   Q h. \         P                  ! 4       n        R# )r   rk  r?  r  r9   r  N)r   r   r  r    r  r  s   & rI   test_config_filter_works'ConfigDictTest.test_config_filter_worksE  sl    ..-q&7GY	"J
 	   "**1-888&(#rn   c           	          ! R  R4      pV! 4       pV P                  R^RRRRV.//4       \        P                  ! 4       P                  ^ ,          VJ g   Q h. \        P                  ! 4       n        R# )c                   &   a  ] tR tRt o R tRtV tR# )BConfigDictTest.test_config_filter_method_works.<locals>.FakeFilteriN  c                    ^# r  r   )rE   r  s   &&rI   r   IConfigDictTest.test_config_filter_method_works.<locals>.FakeFilter.filterO  s    rn   r   Nr/  r|   s   @rI   
FakeFilterr  N  s      rn   r  rk  r?  r  r9   r  Nr  )rE   r  r   s   &  rI   test_config_filter_method_works.ConfigDictTest.test_config_filter_method_worksM  sq    	 	 ,q&7GY	"J
 	   "**1-888&(#rn   c                     ! R  R4      pR^V! 4       3 F-  pV P                  \        V P                  R^RRRRV.//4       K/  	  R# )c                       ] tR tRtRtR# );ConfigDictTest.test_invalid_type_raises.<locals>.NotAFilteriY  r   Nrf  r   rn   rI   
NotAFilterr  Y  s    $rn   r  Nrk  r?  r  r9   r  )r]  r  r  )rE   r  r   s   &  rI   test_invalid_type_raises'ConfigDictTest.test_invalid_type_raisesX  sL    a.G!!Av)gY'OP /rn   c                "   \         P                  ! V P                  4      p\        R R4      pWCR,          R,          R&   Ve   WR,          R,          R&   Ve   W#R,          R,          R&   Rp V P	                  V4       \
        P                  ! R4      pV P                  \        \
        P                  ! 4       4      RR.4       V P                  VP                  4       VP                  P                  4        \
        P                  ! R	4       \
        P                  ! R
4       \
        P                  ! R4       \         P"                  ! \         P$                  R4      '       d.   VP                  P&                  P)                  4       '       g   KW   VP                  P&                  P+                  4        \-        VRR7      ;_uu_ 4       pVP/                  4       P1                  4       pRRR4       V P                  X. RO4       V'       d   VP                  P3                  4        \
        P                  ! R4      pV'       d   V P5                  \6        W4       R# V P5                  \8        P:                  V4       R#   + '       g   i     L; i  T'       d   TP                  P3                  4        \
        P                  ! R4      pT'       d   T P5                  \6        Y4       i T P5                  \8        P:                  T4       i ; i)r  ztest_logging-cqh-rA   r  r$  Nr  rp  listenerr  r  bazzqueue not emptyrf  r  )r  r  r  )r%   rZ  config_queue_handlerrV  r  r   r  r]   r]  r^  assertIsNotNoner  r  r   r   r   r   sleeping_retryr  rp  emptyr   r  rd   r\   r5  r   r  rQ  r  )	rE   qspeclspeccdrU  qhr   r  rT   s	   &&&      rI   do_queuehandler_configuration,ConfigDictTest.do_queuehandler_configurationa  s   ]]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.s8   .C8J ''J :J J,J J	J A L8Lc                   \        4       \        4       .pR Uu. uF  pR\         RV 2R^
/NK  	  ppR\        R,           RRRRRR	/pR\        R
,           \        R,           .VOVO5pR\        R,           V\        3p\        P
                  ! WV4       F  w  rxV P                  Wx4       K  	  R^\        RR3pR^\        RR3p\        P
                  ! WV4       Fm  w  rxVf   Vf   K  V P                  \        4      ;_uu_ 4       p	V P                  Wx4       RRR4       \        X	P                  4      p
V P                  V
R4       Ko  	  R# u upi   + '       g   i     LB; i)rk  r  r   rr  z.listenerMakerr  Nr  r  Tz.queueMakerz.CustomQueuez.CustomListenerr   r  r  z Unable to configure handler 'ah')rk  rm  )rk  rm  ru   ri  	itertoolsproductr  r  r]  r  r  r  r]   )rE   qsr  dqsdlqvalueslvaluesr  r  ctxr  s   &          rI   test_config_queue_handler(ConfigDictTest.test_config_queue_handler  sd    m023@B@3 
!C5)9b9@ 	 B (--DD#T	
 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   EEE!c           
     <    V P                  R ^RRRRRV///4       R# )rk  rA   queue_listenerrj  r  rp  N)r  )rE   r  s   &&rI   *_apply_simple_queue_listener_configuration9ConfigDictTest._apply_simple_queue_listener_configuration  s5    q <U#
 	rn   zmultiprocessing.Managerc                F   R RRR/\         P                  ! 4       \         P                  ! 4       \        4       \	        4       3 FG  pV P                  VR7      ;_uu_ 4        V P                  V4       VP                  4        RRR4       KI  	  R#   + '       g   i     K^  ; i)r  zqueue.Queuerr  r  Nro  )rp  rq  SimpleQueuer{  r  subTestr  assert_not_calledrE   r!   r  s   && rI   Atest_config_queue_handler_does_not_create_multiprocessing_managerPConfigDictTest.test_config_queue_handler_does_not_create_multiprocessing_manager  s     =)R0KKM $% "
E E**??F))+ +*
 +**s   "BB c           
     ^   \        4       \        4       3 Fm  pV P                  VR 7      ;_uu_ 4        V P                  \        4      ;_uu_ 4        V P                  V4       VP                  4        RRR4       RRR4       Ko  	  R#   + '       g   i     L; i  + '       g   i     K  ; i)r  N)rv  r  r  r]  r  r  r  r  s   && rI   Ptest_config_queue_handler_invalid_config_does_not_create_multiprocessing_manager_ConfigDictTest.test_config_queue_handler_invalid_config_does_not_create_multiprocessing_manager  sq     h 8 :;EE**D,=,=j,I,I??F))+ -J** <,I,I***s#   B"B2BBBB,z@requires a debug build for testing assertions in multiprocessingc           
        ^ RI p\        P                  '       d   R.pM. ROpV F  pV P                  VR7      ;_uu_ 4        VP                  ! V4      pVP                  4       pV P                  \        4      ;_uu_ 4        V P                  V4       RRR4       RRR4       K  	  R#   + '       g   i     L; i  + '       g   i     K  ; i)r?  Nspawnstart_methodr  r  
forkserver)	multiprocessingr   
MS_WINDOWSr  get_contextr  r]  r  r  )rE   r  start_methodsr  r  r  s   &     rI   ?test_config_reject_simple_queue_handler_multiprocessing_contextNConfigDictTest.test_config_reject_simple_queue_handler_multiprocessing_context  s     	$IM;M)L<88%11,?)&&z22CCEJ 3 98 * 32 988s%   A B=B*B=*B:5B==Cc                   \         P                  '       d   R .pM. ROpV F  pV P                  VR7      ;_uu_ 4        \        P                  ! V4      pVP                  4       ;_uu_ 4       pVP                  4       p. pVP                  ^V P                  VR3^R7      ;_uu_ 4        VP                  VP                  ^<R7      4       RRR4       V P                  VP                  4       4       RRR4       V P                  \        X4      ^4       RRR4       K  	  R#   + '       g   i     L`; i  + '       g   i     LL; i  + '       g   i     EK:  ; i)r  r  r:  )initializerinitargsmaxtasksperchildr  Nr  )r   r  r  r  r  Managerrq  Pool_mpinit_issue121723r  r  rD   r  r]   r^   )rE   r  r  r  r!   qr-  s   &      rI   1test_config_queue_handler_multiprocessing_context@ConfigDictTest.test_config_queue_handler_multiprocessing_context  s    $IM;M)L<88%11,?[[]]gA G!1I1I,-v; " L LquuRu'89L OOAGGI. #   Wq1 98 *L L	 #] 988s;   /E	-<D6)"D#'D62#E	#D3.D66EE		Ec                    \         P                  P                  R ^RRRRRRRV //RRR.R	R
//4       \         P                  ! 4       P	                  V4       R# )rk  rM  TrA   log_to_parentrj  r  rp  r?  r  r9   N)r   r  r  r    r   )r  message_to_logs   &&rI   r  "ConfigDictTest._mpinit_issue121723  sl     	!!q&<U" Z/!2GWE
#
 
	 	  0rn   c                   \         P                  ! V P                  4      p^ RIHpHp V! 4       pV! 4       P	                  4       pV! 4       P                  4       pWEV3 EFB  p\        RR4      pWR,          R,          R&   WqR,          R,          R&   R	p	 V P                  V4       \        P                  ! R4      p	V P                  \        \        P                  ! 4       4      RR.4       V P                  V	P                  4       V P!                  V	P"                  V4       V P!                  V	P                  P"                  V4       \        P                  ! R4      p
V
'       d   V P%                  \&        W4       EK"  V P%                  \(        P*                  V4       EKE  	  R	#   \        P                  ! R4      p
T
'       d   T P%                  \&        Y4       i T P%                  \(        P*                  T4       i ; i)
r?  )rq  r  r  ztest_logging-cmpqh-rA   r  r$  r  rp  N)r%   rZ  r  r  rq  r  JoinableQueuerV  r  r   r  r]   r]  r^  r  r  r  rp  r   r  rQ  r  )rE   r  MQMMq1q2q3r  rU  r  rT   s   &          rI   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                   R ^RRRRRRRR//R	R
RRRR.///p\         P                  ! R
4      pV P                  VP                  4       V P	                  V4       V P                  VP                  4       V P	                  R ^/4       V P                  VP                  4       VR V P	                  V4       V P                  VP                  4       R# )rk  rM  FrA   r  r  r9   rj  r  r  r  N)r   r    ry  r   r  rD   )rE   r  r  s   &  rI   
test_90195ConfigDictTest.test_90195+  s     q&W4 W
  ""3')&!)9a.)(-.&!)rn   c           
         \         P                  ! R 4       \         P                  ! R4      pR^RRRRRVP                  R4      P                  4       //R	RR.R
R//p\        P
                  P                  V4       R# )_multiprocessingr  rk  rA   sinkrj  r  rp  r  r?  r  r9   N)r   import_moduler  rq  r   r  r  )rE   mpr  s   &  rI   test_111615ConfigDictTest.test_111615I  s    ##$67(():; q<R^^G4::< VH
 	!!&)rn   c           	         ! R  R\         P                  P                  4      pRR/pR^RRRV/VC/RR	R
RR.//p\         P                  P	                  V4       \         P
                  ! R4      pV P                  VP                  V4       R# )c                   2   a a ] tR tRt oV 3R ltRtVtV ;t# )>ConfigDictTest.test_kwargs_passing.<locals>.CustomQueueHandleri_  c                X   < \         SV `  \        P                  ! 4       4       W n        R # r   )r  r  rp  rq  custom_kwargsrE   rR  rS  r  s   &*,rI   r  GConfigDictTest.test_kwargs_passing.<locals>.CustomQueueHandler.__init__`  s     /%+"rn   )r  r  r  s   @@rI   CustomQueueHandlerr  _  s     , ,rn   r  r  r  rk  rA   r  rj  r?  r  r9   N)r   rA   QueueHandlerr  r  r  r]   r  )rE   r  r  r  r   s   &    rI   test_kwargs_passing"ConfigDictTest.test_kwargs_passing^  s    	,!1!1!>!> 	,
  q/# XJ
 	!!&)**84..>rn   r   r   )vru   rv   rw   rx   ry   r	   r<  rZ   r  rt  r2  r  r  r  r  r  r  r[  rc  r  r%  r*  r4  r>  r  rF  r  r	  r  r  r  r  r   r)  r   r<   r  r-  r1  rV  rd  rh  ro  rs  rx  r  r:   r  r  r  r  r  r	  r  r  r  r  r   r  r&  r  r  r7  r  r  r
  r  r  r  r  r!  r%  r*  r.  r3  r?  r   requires_working_socketrD  rG  rS  rW  r`  re  ri  rl  rp  rt  ry  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  rz   r{   r|   s   @rI   r  r  p	  s    3 / I I, 	19

 	1g(.	
 	i'
G. 	19

 	1g(.	
 	'gY!
 	i
+G8 	19

 	1g(.	
 	'!

 	i'
)H8 	19

 	1g(/	
 	'gY!
 	i
+G8 	19

 	1g(.	
 	'gY!
 	i
+H: 	19

 	1g(.	
 	'gY!
 	i
+H8 	19

 	1/(.	
 	'gY!
 	i
+G8 	1x"77?
 	1g(.	
 	hgY
!G0 	1)? x-/? z?
 	1g(.	 {

 	hgY
7HF 	19

 	(%55g(.	
 	'gY!
 	i
+G: 	19

 	(%55g(..
 	'gY!
 	i
-G< 	19

 	1g(.	
 	'gY 
 	i
+G< 	1"U9

 	1g(.	
 	'gY   
 	i
1G> 	1"T9

 	1g(.	
 	'gY   
 	i
1H< 	19

 	1g).	
 	)gY!
 	h
+G6 	1)

 	&!
H  	1&

 	&!
H" 	19

 	*

 	1g(.WI
 	'WI!
 	i'
7HF 	19

 	1g(.	
 	.4
 	'gY!
 	i
3H@ 	9

 	1g(.	
 	.4
 	'gY!
 	i
1H> 	19

 	1g(.	
 	.4
 	'gY!
 	i
3H@ 	19

 	1g(.5 %	
 	i'
'H8 	1;]N;
 	1g(.	
 	i'
!H,*'++ * 	1o.+%w

 	1h(.	
 	i'
+H8 	10 9A)g
 	[MV
H2 	1M"
 	00
 9A0,
 	^,V
-JB 	1h!66>E
 	0W,	
 	-WIV0
#'#8 	1$99>E
 	0W,	
 	-WIV0
#($8 	1$88>E
 	0W,	
 	-WIV0
#($8 	1j>E
 	0W,	
 	-WIV0
#&"8 	1jN]I6
 	0W,	
 	-WIV0
#&"6 	1. 8TF	
 	W
&* 5 5 *
 	18

 	.W,	
 	WI 
 	Y
+624(&&  &- &FGGF& &3]F&< &D+&Z&(,GGE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*<**? ?rn   r  c                   ,   a  ] tR tRt o R tR tRtV tR# )ManagerTestiz  c                r  a . o ! V3R  lR\         P                  4      p\         P                  ! R4      pV P                  \        VP
                  \        4       VP                  V4       VP                  R4      pVP                  R4       \         P                  ! R4       V P                  SR.4       R# )c                   2   <a  ] tR tRt o RV3R lltRtV tR# )6ManagerTest.test_manager_loggerclass.<locals>.MyLoggeri~  Nc                *   < SP                  V4       R # r   r  )rE   r  r  rR  exc_infoextraloggeds   &&&&&&rI   _log;ManagerTest.test_manager_loggerclass.<locals>.MyLogger._log  s    c"rn   r   rt   )ru   rv   rw   rx   r/  rz   r{   )r}   r.  s   @rI   MyLoggerr)  ~  s     # #rn   r1  NrC  zshould appear in loggedzshould not appear in logged)
r   Loggerr  r]  	TypeErrorsetLoggerClassr  r    r   r]   )rE   r1  manr  r.  s   &   @rI   test_manager_loggerclass$ManagerTest.test_manager_loggerclass{  s    	#w~~ 	# ood#)S%7%7=8$v&0156";!<=rn   c                    \         P                  ! R 4      p\        4       pVP                  V4       V P	                  VP
                  V4       R # r   )r   r  rv  setLogRecordFactoryr]   logRecordFactory)rE   r5  ri   s   &  rI   test_set_log_record_factory'ManagerTest.test_set_log_record_factory  s;    ood#8)--x8rn   r   N)ru   rv   rw   rx   r6  r;  rz   r{   r|   s   @rI   r&  r&  z  s     > 9 9rn   r&  c                   ,   a  ] tR tRt o R tR tRtV tR# )ChildLoggerTesti  c                   \         P                  ! 4       p\         P                  ! R 4      p\         P                  ! R4      pVP                  R4      pVP                  R4      pV P                  V\         P                  ! R4      4       V P                  V\         P                  ! R4      4       VP                  R4      pVP                  R4      pVP                  R4      pV P                  V\         P                  ! R4      4       V P                  V\         P                  ! R4      4       V P                  WV4       R# )	abczdef.ghixyzzuvw.xyzdefghiabc.defzabc.def.ghiN)r   r    getChildr  )rE   r   l1l2c1c2c3s   &      rI   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rn   c                   \         P                  ! 4       p\         P                  ! R 4      p\         P                  ! R4      p\         P                  ! R4      p\         P                  ! R4      pVP                  4       pW%0pV P                  WvV,          4       V P	                  W74       VP                  4       pV P                  V0V4       VP                  4       pV P                  \        4       V4       R# )r  foo.barzfoo.bar.baz.bozzr  N)r   r    getChildrenr]   assertNotInr1  )rE   r   rF  rG  l3l4kidsri   s   &       rI   test_get_children!ChildLoggerTest.test_get_children  s    u%y)12u%}}8(?3&~~"t$~~%rn   r   N)ru   rv   rw   rx   rK  rT  rz   r{   r|   s   @rI   r>  r>    s     & &rn   r>  c                       ] tR tRtRtR# )DerivedLogRecordi  r   Nrf  r   rn   rI   rW  rW    rg  rn   rW  c                   2   a  ] tR tRt o R tR tR tRtV tR# )LogRecordFactoryTesti  c                    ! R  R\         P                  4      p\        P                  V 4       V! \        4      V n        V P                  P                  V P
                  4       \         P                  ! 4       V n	        R# )c                   ,   a  ] tR tRt o R tR tRtV tR# )2LogRecordFactoryTest.setUp.<locals>.CheckingFilteri  c                    Wn         R # r   r  )rE   r  s   &&rI   r  ;LogRecordFactoryTest.setUp.<locals>.CheckingFilter.__init__  s    rn   c                x    \        V4      pW P                  Jd    R V: RV P                  : 2p\        V4      hR# )zUnexpected LogRecord type z, expected T)r  r  r3  )rE   r   r)  r  s   &&  rI   r   9LogRecordFactoryTest.setUp.<locals>.CheckingFilter.filter  s3    LHH$IJ HH&C#C.(rn   r^  N)ru   rv   rw   rx   r  r   rz   r{   r|   s   @rI   CheckingFilterr\    s      rn   rb  N)
r   r   r   rJ   rW  r   r2   r   getLogRecordFactoryorig_factory)rE   rb  s   & rI   rJ   LogRecordFactoryTest.setUp  sV    
	W^^ 
	 	t$%56""4;;/#779rn   c                    V P                   P                  V P                  4       \        P	                  V 4       \
        P                  ! V P                  4       R # r   )r2   r   r   r   rU   r   r9  rd  rq   s   &rI   rU   LogRecordFactoryTest.tearDown  s<    %%dkk2$##D$5$56rn   c                "   V P                  \        V P                  P                  V P	                  4       4       \
        P                  ! \        4       V P                  P                  V P	                  4       4       V P                  R.4       R# )r?  N)r?  r   r   )
r]  r3  r2   r   rr   r   r9  rW  r   rl   rq   s   &rI   test_logrecord_class)LogRecordFactoryTest.test_logrecord_class  sn    )T%5%5%=%=++-	/##$45t0023!
 	rn   )r   rd  N)	ru   rv   rw   rx   rJ   rU   ri  rz   r{   r|   s   @rI   rY  rY    s     :$7
 rn   rY  c                   Z   a  ] tR tRt o RtR tR tR tR tR t	R t
R	 tR
 tR tRtV tR# )QueueHandlerTesti  r  c                   \         P                  V 4       \        P                  ! R4      V n        \        P
                  P                  V P                  4      V n        RV n        \        P                  ! R4      V n
        RV P                  n        V P                  P                  \        P                  4       V P                  P                  V P                  4       R# )rq  queFNro  )r   rJ   rp  rq  r   rA   r  que_hdlrrG   r    
que_loggerr  r8   r   rC   rq   s   &rI   rJ   QueueHandlerTest.setUp  s    t[[_
((55djjA	!++E2$)!  1""4==1rn   c                d    V P                   P                  4        \        P                  V 4       R # r   )ro  rM   r   rU   rq   s   &rI   rU   QueueHandlerTest.tearDown  r  rn   c                   V P                   P                  V P                  4       4       V P                  \        P
                  V P                  P                  4       V P                   P                  V P                  4       4       V P                  \        P
                  V P                  P                  4       V P                  4       pV P                   P                  V4       V P                  P                  4       pV P                  V\        P                  4       V P                  VP                  V P                   P                  4       V P                  VP                  VP                  3VR 34       R # r   )rp  r   rr   r]  rp  Empty
get_nowaitr   r   rV  r   r  r]   rG   r  rR  )rE   r  r  s   &  rI   test_queue_handler#QueueHandlerTest.test_queue_handler  s    d//12%++tzz'<'<=T..01%++tzz'<'<=!$zz$$&dG$5$56DOO$8$89$((DII.d<rn   c                   V P                  4       p\        P                  ! \        P                  4      pR pVP	                  V P
                  W!R7      p\        P                  ! V P                  4      pV P                  P                  V4       V P                  P                  V4       V P                  P                  4       pV P                  WFP                  4       V P                  WFP                   4       R# )z {name} -> {levelname}: {message})rG   	levelnamer=  N)rr   r   r   r   r  rG   r<   r=   ro  r?   rp  r   rp  rv  r]   r  r=  )rE   r  rz  log_format_strformatted_msgrG  
log_records   &      rI   test_formatting QueueHandlerTest.test_formatting  s    !((9	;&--4998A . P%%doo6	""9-$ZZ**,
7(:(:;rn   c                   \        \        P                  ! 4       4      p\        P                  P                  V P                  V4      pVP                  4         V P                  P                  V P                  4       4       V P                  P                  V P                  4       4       V P                  P                  V P                  4       4       VP                  4        VP                  4        V P                  VP                  \        P                   R R7      4       V P                  VP                  \        P"                  RR7      4       V P                  VP                  \        P$                  RR7      4       VP'                  4        \        \        P                  ! 4       4      pVP)                  \        P$                  4       \        P                  P                  V P                  VRR7      pVP                  4         V P                  P                  V P                  4       4       V P                  P                  V P                  4       4       V P                  P                  V P                  4       4       VP                  4        V P+                  VP                  \        P                   RR7      4       V P+                  VP                  \        P"                  RR7      4       V P                  VP                  \        P$                  RR7      4       VP'                  4        R	#   TP                  4        TP                  4        i ; i  TP                  4        i ; i)
r   )r   r=  r   r   Tr  r   r   r   N)r   r   Matcherr   rA   QueueListenerrp  r  rp  r   rr   r   r3  r5  rD   matchesr   r   r   rM   r8   ry  rE   r   r  s   &  rI   test_queue_listener$QueueHandlerTest.test_queue_listener  sB   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/ MMOMMO$ MMOs   A;L< A;M! <"M!M3c                   \        \        P                  ! 4       4      p\        P                  P                  V P                  V4      ;_uu_ 4       pV P                  V\        P                  P
                  4       V P                  VP                  4       R R R 4       V P                  XP                  4       VP                  4        V P                  VP                  4       R #   + '       g   i     LX; ir   )r   r   r  r   rA   r  rp  rV  r  r  r  r5  r  s   &  rI   #test_queue_listener_context_manager4QueueHandlerTest.test_queue_listener_context_manager$  s    goo/0++DJJ@@H!!(G,<,<,J,JK  !1!12 A 	(**+ 	(**+ A@s   AC''C7	c                   \        \        P                  ! 4       4      p\        P                  P                  V P                  V4      ;_uu_ 4       pV P                  \        VP                  4       R R R 4       X;_uu_ 4        V P                  \        VP                  4       R R R 4       VP                  4        VP                  4        R #   + '       g   i     Le; i  + '       g   i     LE; ir   )r   r   r  r   rA   r  rp  r]  r  r  r5  r  s   &  rI   test_queue_listener_multi_start0QueueHandlerTest.test_queue_listener_multi_start/  s    goo/0++DJJ@@HlHNN; A XlHNN;  	 A@ Xs   !C!C"C	"C2	c                   \         P                  P                  V P                  V P                  4      pVP                  4         ^^ ,           V P                  P                  V P                  4       RR7       VP                  4        V P                  V P                  P                  4       P                  4       P!                  R4      ^4       V P                  V P                  P                  4       P                  4       P!                  R4      ^4       R#   \         d9   pTpT P                  P                  T P                  4       TR7        Rp?EL	Rp?ii ; i)rq  r,  NT
stack_info	TracebackStack)r   rA   r  rp  r;   r  ZeroDivisionErrorrp  r  rr   r   r5  r]   r7   r[   rn  r-  )rE   r  ra  excs   &   rI   &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H	Is   	D E%-EEc                   V P                   P                  V P                  4       V P                  P	                  V P
                  4       \        P                  P                  V P                  V P                   4      pVP                  4        V P                  P                  R 4       VP                  4        V P                  V P                  P                  4       P!                  4       R4       R# )r   zque -> ERROR: errorN)ro  r?   r>   rp  rC   r;   r   rA   r  rp  r  r   r5  r]   r7   r[   rn  )rE   r  s   & rI   *test_queue_listener_with_multiple_handlers;QueueHandlerTest.test_queue_listener_with_multiple_handlersH  s    ""4#6#67""4>>2##11$**dmmLg&--/5579NOrn   )rG   ro  rp  rp  N)ru   rv   rw   rx   rZ   rJ   rU   rw  r~  r  r  r  r  r  rz   r{   r|   s   @rI   rl  rl    sC      32 
=< D	,	K	P 	Prn   rl  r  c                     a  ] tR tRt o Rt^t]R 4       t]P                  ! ]
P                  P                  R4      R 4       t]P                  ! ]
P                  P                  R4      R 4       t]R 4       tR tR	 tR
tV tR# )QueueListenerTestiW  zf
Tests based on patch submitted for issue #27930. Ensure that
QueueListener handles all log messages.
c                H   \         P                  ! RV,          4      pVP                  \         P                  4       \         P                  P                  V 4      pVP                  V4       \         P                  P                  V 4      pVP                  4        VP                  R4       VP                  R4       VP                  R4       VP                  R4       VP                  R4       VP                  4        VP                  V4       VP                  4        R# )z
Creates a logger with a QueueHandler that logs to a queue read by a
QueueListener. Starts the listener, logs five messages, and stops
the listener.
ztest_logger_with_id_%sonetwothreefourfiveN)r   r    r8   r9   rA   r  rC   r  r  r   r5  rN   rM   )	log_queuer  r  r   r  s   &&   rI   setup_and_logQueueListenerTest.setup_and_loga  s     &&'?%'GHFOOGMM*&&33I>Gg&''55i@HNNKKKKKK KKKKMMO  )MMOrn   rx  c                   \        V P                  4       F>  p\        P                  ! 4       pV P	                  W0P                  4       : R V: 24       K@  	  V P                  VP                  ^V P                  ,          R4       R# r  z&correct number of handled log messagesN)r  repeatrp  rq  r  r,  r]   
call_countrE   mock_handler  r  s   &&  rI   #test_handle_called_with_queue_queue5QueueListenerTest.test_handle_called_with_queue_queuey  s_    4;;'!KKM	""9A.FG ( [33Q_EGrn   c                z   \         P                  ! 4        \        V P                  4       F^  p\        P
                  ! 4       pV P                  W0P                  4       : R V: 24       VP                  4        VP                  4        K`  	  V P                  VP                  ^V P                  ,          R4       R# r  )r   *skip_if_broken_multiprocessing_synchronizer  r  r  rq  r  r,  rM   r3  r]   r  r  s   &&  rI    test_handle_called_with_mp_queue2QueueListenerTest.test_handle_called_with_mp_queue  s     >>@4;;'+113	""9A.FG!%%'	 (
 [33Q_EGrn   c              #  p   "     V P                  4       x  K    \        P                   d    . u # i ; i5i)T)rv  rp  ru  )r  s   &rI   get_all_from_queue$QueueListenerTest.get_all_from_queue  s3     #..00;; 	s   6 3636c                X   \         P                  ! 4        \        V P                  4       F  p\        P
                  ! 4       pV P                  W P                  4       : RV: 24       \        V P                  V4      4      pVP                  ! 4        VP                  ! 4        . \        P                  P                  P                  ..pT P!                  Y4RV Uu. uF1  p\#        V\        P$                  4      '       d   VP&                  MTNK3  	  up,          4       K  	  R# u upi )z
Five messages are logged then the QueueListener is stopped. This
test then gets everything off the queue. Failure of this test
indicates that messages were not registered on the queue until
_after_ the QueueListener stopped.
r  z&Found unexpected messages in queue: %sN)r   r  r  r  r  rq  r  r,  listr  rM   r3  r   rA   r  	_sentinelr   r  r  r  )rE   r  rp  r  ri   r   s   &     rI   $test_no_messages_in_queue_after_stop6QueueListenerTest.test_no_messages_in_queue_after_stop  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                B   \         P                  ! 4       p\        P                  P	                  V4      pVP                  4        VP                  4        V P                  \        4      ;_uu_ 4        VP                  4        R R R 4       R #   + '       g   i     R # ; ir   )
rp  rq  r   rA   r  r  r5  r]  r  	task_done)rE   r  r  s   &  rI   test_calls_task_done_after_stop1QueueListenerTest.test_calls_task_done_after_stop  sb    I''55i@HNNMMO"":..##% /...s   2BB	r   N)ru   rv   rw   rx   ry   r  r$  r  r   rv  r   rA   r  r  r  r  r  r  rz   r{   r|   s   @rI   r  r  W  s     	
 		 
	. 
g&&44h	?	G 
@	G 
g&&44h	?
	G 
@
	G 
	 
		>0	& 	&rn   r  c                   0   a  ] tR tRt o R t]tR tRtV tR# )UTCi  c                    \         # r   )ZEROrE   dts   &&rI   	utcoffsetUTC.utcoffset  s    rn   c                    R # )r  r   r  s   &&rI   tzname
UTC.tzname  s    rn   r   N)	ru   rv   rw   rx   r  dstr  rz   r{   r|   s   @rI   r  r    s      C rn   r  c                   &   a  ] tR tRt o R tRtV tR# )AssertErrorMessagei  c                     V P                   ! R.VO5/ VB  R #   T d'   pT P                  T\        T4      4        R p?R # R p?ii ; i)Nr   )r]  r]   r  )rE   r  r=  rR  rS  ra  s   &&&*, rI   assert_error_message'AssertErrorMessage.assert_error_message  sF    	.b24262 	.Wc!f--	.s    AAAr   N)ru   rv   rw   rx   r  rz   r{   r|   s   @rI   r  r    s     . .rn   r  c                   r   a  ] tR tRt o R tRR ltR tR tR tR t	R	 t
R
 tR tR tR tR tR tRtV tR# )FormatterTesti  c                    R RR\         P                  R\        P                  P	                  RRR4      R^*RR	R
R	RRRR/V n        RRR//V n        R	# )rG   zformatter.testr  pathnamerz  toz	dummy.extlinenor,  Nr  r  zMessage with %d %srR  r  i  )r   placeholders)r   r9   rQ  rz  r   commonvariantsrq   s   &rI   rJ   FormatterTest.setUp  sc    $W]]VT;?bD''	
 $
rn   Nc                    \        V P                  4      pVe#   VP                  V P                  V,          4       \        P
                  ! V4      # r   )rp  r  rP   r  r   r   )rE   rG   rH  s   && rI   
get_recordFormatterTest.get_record  s<    dkk"MM$---.$$V,,rn   c                ~   V P                  4       p\        P                  ! R 4      pV P                  VP	                  V4      R4       \        P                  ! R4      pV P                  \        VP                  V4       V P                  VP                  4       4       \        P                  ! R4      pV P                  VP                  4       4       \        P                  ! R4      pV P                  VP                  4       4       \        P                  ! R4      pV P                  VP                  4       4       R# )z${%(message)s}z${Message with 2 placeholders}z
%(random)s%(asctime)sz%(asctime)-15sz%(asctime)#15sN
r  r   r<   r]   r  r]  r  ry  usesTimerD   rE   r   r   s   &  rI   test_percentFormatterTest.test_percent  s    OO./!&FGl+*ahh2&m,

%./

%./

%rn   c                   V P                  4       p\        P                  ! R RR7      pV P                  VP	                  V4      R4       \        P                  ! RRR7      pV P                  \        VP                  V4       \        P                  ! RRR7      pV P                  VP                  4       4       \        P                  ! RRR7      pV P                  VP                  4       4       \        P                  ! RRR7      pV P                  VP                  4       4       \        P                  ! RRR7      pV P                  VP                  4       4       R	# )
z$%{message}%$r  r  $%Message with 2 placeholders%$z{random}r  	{asctime}z{asctime!s:15}z{asctime:15}Nr  r  s   &  rI   test_bracesFormatterTest.test_braces  s    OOoS9!&GHj4*ahh2k5&k5

%.c:

%nC8

%rn   c                   V P                  4       p\        P                  ! R RR7      pV P                  VP	                  V4      R4       \        P                  ! RRR7      pV P                  VP	                  V4      R4       \        P                  ! RRR7      pV P                  VP	                  V4      R4       \        P                  ! RRR7      pV P                  \        VP                  V4       V P                  VP                  4       4       \        P                  ! RRR7      pV P                  VP                  4       4       \        P                  ! R	RR7      pV P                  VP                  4       4       \        P                  ! R RR7      pV P                  VP                  4       4       \        P                  ! R
RR7      pV P                  VP                  4       4       R# )
${message}r  r  zMessage with 2 placeholdersz$messagez$$%${message}%$$r  z	${random}z
${asctime}z$asctimez${asctime}--Nr  r  s   &  rI   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

%rn   c                   \         P                  ! R 4      pV P                  VP                  R 4       \         P                  ! R4      pV P                  VP                  R4       \         P                  ! R4      pV P                  VP                  R4       \         P                  ! R4      pV P                  VP                  R4       \         P                  ! RRR7      pV P                  VP                  R4       \         P                  ! RRR7      pV P                  VP                  R4       \         P                  ! RRR7      pV P                  VP                  R4       \         P                  ! R	RR7      pV P                  VP                  R	4       \         P                  ! R
RR7      pV P                  VP                  R
4       \         P                  ! RRR7      pV P                  VP                  R4       \         P                  ! RRR7      pV P                  VP                  R4       \         P                  ! RRR7      pV P                  VP                  R4       \         P                  ! RRR7      pV P                  VP                  R4       \         P                  ! RRR7      pV P                  VP                  R4       \         P                  ! RRR7      pV P                  VP                  R4       \         P                  ! RRR7      pV P                  VP                  R4       \         P                  ! RRR7      pV P                  VP                  R4       \         P                  ! RRR7      pV P                  VP                  R4       \         P                  ! RRR7      pV P                  VP                  R4       \         P                  ! RRR7      pV P                  VP                  R4       \         P                  ! RRR7      pV P                  VP                  R4       V P	                  \
        \         P                  R4       V P	                  \
        \         P                  R4       V P	                  \
        \         P                  R4       V P	                  \
        \         P                  R4       V P	                  \
        \         P                  R4       V P	                  \
        \         P                  R4       V P	                  \
        \         P                  R4       V P	                  \
        \         P                  R4       V P	                  \
        \         P                  R 4       V P                  \
        R!\         P                  R"RR7       V P                  \
        R#\         P                  R$RR7       V P                  \
        R%4       V P	                  \
        \         P                  R&RR7       V P                  \
        R'\         P                  R(RR7       V P                  \
        R)\         P                  R*RR7       V P	                  \
        \         P                  R+RR7       V P	                  \
        \         P                  R,RR7       V P	                  \
        \         P                  R-RR7       V P	                  \
        \         P                  R.RR7       V P                  \
        R/\         P                  R0RR7       V P                  \
        R1\         P                  R2RR7       V P	                  \
        \         P                  R3RR7       V P	                  \
        \         P                  R4RR7       V P	                  \
        \         P                  R5RR7       V P	                  \
        \         P                  R6RR7       V P	                  \
        \         P                  R7RR7       V P	                  \
        \         P                  R8RR7       V P	                  \
        \         P                  R9RR7       V P	                  \
        \         P                  R:RR7       V P	                  \
        \         P                  R;RR7       V P                  \
        R<\         P                  R=RR7       V P                  \
        R<\         P                  R>RR7       V P                  \
        R<\         P                  R?RR7       V P                  \
        R#\         P                  RRR7       V P	                  \
        \         P                  R$RR7       V P                  \
        R#\         P                  R@RR7       V P	                  \
        \         P                  RARR7       RB# )CzM%(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	${asctimeN)r   r<   r]   _fmtr]  r  r  rE   r   s   & rI   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Prn   c                d   . R	Op. R
Op\        W4       EF  w  r4\        P                  ! W4RR/R7      pV P                  4       pV P	                  VP                  V4      R4       V P                  R4      pV P	                  VP                  V4      R4       \        P                  ! W4R7      pV P                  4       pV P                  \        VP
                  V4       \        P                  ! W4RR/R7      pV P                  R4      pV P	                  VP                  V4      R4       EK  	  R# )%(custom)s %(message)sr  Default)r  rm  z#Default Message with 2 placeholdersz 1234 Message with 2 placeholdersr  zNon-existingN)r  z{custom} {message}z$custom $message)%r  r  )r_   r   r<   r  r]   r  r]  r  )rE   fmtsstylesr_  r  r   r   s   &      rI   test_defaults_parameter%FormatterTest.test_defaults_parameter  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 ,rn   c                T    V P                  \        \        P                  R R R4       R # )Nr  )r]  r  r   r<   rq   s   &rI   test_invalid_style FormatterTest.test_invalid_style  s    *g&7&7tSIrn   c           
        V P                  4       p\        P                  ! R ^^^^^ ^ \        4      p\        P                  ! VP                  R4      P                  4       4      Vn        ^{Vn        \        P                  ! R4      p\        P                  Vn        V P                  VP                  V4      R4       V P                  VP                  VR4      R4       VP                  V4       V P                  VP                   R4       R# )  N%(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)rE   r   r  r   s   &   rI   	test_timeFormatterTest.test_time  s    OOtQAq!Q< KKd 3 = = ?@	78kka*CDa19=	$=>rn   c           
         ! R  R\         P                  4      pV P                  4       p\        P                  ! R^^^^^ ^{\        4      p\
        P                  ! VP                  R4      P                  4       4      Vn	        V! 4       p\
        P                  Vn        V P                  VP                  V4      R4       R# )c                       ] tR tRtRtRtRtR# )DFormatterTest.test_default_msec_format_none.<locals>.NoMsecFormatteri  Nz%d/%m/%Y %H:%M:%Sr   )ru   rv   rw   rx   default_msec_formatdefault_time_formatrz   r   rn   rI   NoMsecFormatterr    s    "&"5rn   r  r  Nz21/04/1993 08:03:00)r   r<   r  r  r   r  r  r  r  r  r  r  r]   r  )rE   r  r   r  r   s   &    rI   test_default_msec_format_none+FormatterTest.test_default_msec_format_none  s    	6g// 	6 OOtQAq!S#>KKd 3 = = ?@	kka*?@rn   c                   \         P                  ! R RRR7      p\        R4       Fb  p\        P                  ! R4       \         P
                  ! RRV^,           ,          /4      pVP                  V4      pV P                  RV4       Kd  	  R	# )
z!{asctime}.{msecs:03.0f} {message}r  r  )r_  r  ri  i	  g-C6:?r  z
Message %dz.1000N)r   r<   r  r  r  r   r  rP  )rE   r   r  r   rk   s   &    rI   test_issue_89047FormatterTest.test_issue_89047  sm    "ESZmntAJJv%%ula!e.D&EFAAWa(	 rn   c           	     8   R	pV F  w  r#\        R4      ;_uu_ 4       pW$n        \        P                  ! RR/4      pRRR4       V P	                  V4      ;_uu_ 4        V P                  XP                  V4       V P                  VP                  VR,          4       V P                  VP                  \        VP                  4      ,
          VP                  R,          RR7       RRR4       K  	  R#   + '       g   i     L; i  + '       g   i     EK  ; i)
    $lH: ztime.time_nsr  rC  N    eAg     @@r  )delta))r  g      Y@)l   '$TrH: g     8@)   g]rH:         )l   )TrH: r  )
r   r  r   r   r  r]   r  r  assertAlmostEqualr  )rE   testsnswant
patched_nsr   s   &     rI   /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   C4B	D4DDc           	        R pRp\         P                  ! RV: RV: R24      p\        RV4      w  rEpVP                  4       p\	        W%P                  4       RR7       F  w  rxV P                  VR7      ;_uu_ 4        \        \        VP                  4       4      w  rV P                  WV,           R,          ^R	7       V P                  WR
,          ^R	7       RRR4       K  	  R#   + '       g   i     K  ; i)r  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)r9  )	offset_nsr  )places    .AN)   r  iB0  i l    *C7qH: )r  r  r   r  r_   r\   r  r  floatr   r  )rE   start_ns
offsets_nscodercouterrr&  liner  relativeCreateds   &          rI   )test_relativeCreated_has_higher_precision7FormatterTest.test_relativeCreated_has_higher_precision  s     -J
 $ | $$ (	  @ (d3jjl":~~/?MOI	22+.udjjl+C(&&wI1E0LUV&W&&CPQ&R	 32  N222s   =AC''C8)r  r  r   )ru   rv   rw   rx   rJ   r  r  r  r  r  r  r  r
  r  r  r"  r3  rz   r{   r|   s   @rI   r  r    sS     
"-&& &*TQlN(J?
A)3*0S 0Srn   r  c                   ,   a  ] tR tRt o R tR tRtV tR# )TestBufferingFormatteri1  c                &    R \        V4      ,          # )z[(%d)r^   rE   r-  s   &&rI   formatHeader#TestBufferingFormatter.formatHeader2      W%%rn   c                &    R \        V4      ,          # )z(%d)]r8  r9  s   &&rI   formatFooter#TestBufferingFormatter.formatFooter5  r<  rn   r   N)ru   rv   rw   rx   r:  r>  rz   r{   r|   s   @rI   r6  r6  1  s     && &rn   r6  c                   2   a  ] tR tRt o R tR tR tRtV tR# )BufferingFormatterTesti8  c                p    \         P                  ! R R/4      \         P                  ! R R/4      .V n        R# )r  r  r  N)r   r   r-  rq   s   &rI   rJ   BufferingFormatterTest.setUp9  s/    !!5%.1!!5%.1
rn   c                    \         P                  ! 4       pV P                  R VP                  . 4      4       V P                  RVP                  V P                  4      4       R# )r   onetwoN)r   BufferingFormatterr]   r  r-  r  s   & rI   test_default#BufferingFormatterTest.test_default?  sE    &&(QXXb\*188DLL#9:rn   c                   \        4       pV P                  R VP                  V P                  4      4       \        P
                  ! R4      p\        V4      pV P                  RVP                  V P                  4      4       R# )z[(2)onetwo(2)]z<%(message)s>z[(2)<one><two>(2)]N)r6  r]   r  r-  r   r<   )rE   r   lfs   &  rI   test_custom"BufferingFormatterTest.test_customD  s`    "$)188DLL+AB/"2&-qxx/EFrn   r-  N)	ru   rv   rw   rx   rJ   rG  rK  rz   r{   r|   s   @rI   rA  rA  8  s     
;
G Grn   rA  c                   &   a  ] tR tRt o R tRtV tR# )ExceptionTestiK  c                   V P                   p\        4       pVP                  V4        \        R 4      h  \         d    \        P
                  ! RRR7        Mi ; iTP                  T4       TP                  4        TP                  ^ ,          pT P                  TP                  R4       T P                  TP                  R4       T P                  TP                  R4       T P                  TP                  R4       R# )	r  failedTr  z#Traceback (most recent call last):
z!
RuntimeError: deliberate mistakeStack (most recent call last):
z,logging.exception('failed', stack_info=True)N)r2   RecordingHandlerrC   r  r   r  rN   rM   r-  assertStartsWithexc_textr  r  )rE   r   rT   s   &  rI   r~  ExceptionTest.test_formattingL  s    	Q	9344 	9h48	9			IIaLajj6	8AJJ4	6all2	4ALL>	@s   4 #AAr   N)ru   rv   rw   rx   r~  rz   r{   r|   s   @rI   rO  rO  K  s     @ @rn   rO  c                   &   a  ] tR tRt o R tRtV tR# )LastResortTestia  c                l   V P                   pVP                  V P                  4       \        P                  p\        P
                  p \        P                  ! 4       ;_uu_ 4       pVP                  R 4       V P                  VP                  4       R4       VP                  R4       V P                  VP                  4       R4       RRR4       R\        n        \        P                  ! 4       ;_uu_ 4       pVP                  R4       RpV P                  VP                  4       V4       RRR4       \        P                  ! 4       ;_uu_ 4       pVP                  R4       V P                  VP                  4       R4       RRR4       RVP                  n        R\        n        \        P                  ! 4       ;_uu_ 4       pVP                  R4       V P                  VP                  4       R4       RRR4       VP                  V P                  4       V\        n        V\        n        R#   + '       g   i     ELr; i  + '       g   i     EL"; i  + '       g   i     L; i  + '       g   i     L~; i  TP                  T P                  4       T\        n        T\        n        i ; i)zThis should not appearr   zFinal chance!zFinal chance!
Nz-No handlers could be found for logger "root"
F)r2   rN   r;   r   
lastResortr  r   r  r   r]   r[   r   r!   emittedNoHandlerWarningrC   )rE   r?  old_lastresortold_raise_exceptionsr  r  s   &     rI   test_last_resortLastResortTest.test_last_resortb  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#sn   	J  &A#H2	0J  94I-%J  2IAJ  2I-7J  2I	=	J  I		J  I*	%J  -I=	8J   3J3r   N)ru   rv   rw   rx   r^  rz   r{   r|   s   @rI   rX  rX  a  s     #; #;rn   rX  c                   ,   a  ] tR tRt o R tR tRtV tR# )FakeHandleri  c           
     P    R F  p\        WV P                  WV4      4       K!  	  R# )r  N)r  r  rM   r  )setattrrecord_call)rE   
identifiercalledr  s   &&& rI   r  FakeHandler.__init__  s#    >FD$"2"2:v"NO ?rn   c                   aaa VVV3R  lpV# )c                  J   < S P                  R P                  SS4      4       R# )z{} - {}N)r  r  )rf  re  method_names   rI   inner&FakeHandler.record_call.<locals>.inner  s    MM)**:{CDrn   r   )rE   re  rj  rf  rk  s   &fff rI   rd  FakeHandler.record_call  s    	Ern   r   N)ru   rv   rw   rx   r  rd  rz   r{   r|   s   @rI   ra  ra    s     P rn   ra  c                   8   a a ] tR tRt oV 3R ltR tRtVtV ;t# )rS  i  c                >   < \         \        V `
  ! V/ VB  . V n        R # r   )r  rS  r  r-  r  s   &*,rI   r  RecordingHandler.__init__  s    .??rn   c                <    V P                   P                  V4       R# )z&Keep track of all the emitted records.N)r-  r  r   s   &&rI   rx  RecordingHandler.handle  s    F#rn   rM  )	ru   rv   rw   rx   r  rx  rz   r{   r  r  s   @@rI   rS  rS    s     $ $rn   rS  c                      a a ] tR tRt oRtV 3R ltR tR tR tR t	R t
R	 tR
 tR tR tR tR tR tR tR tR tRtVtV ;t# )ShutdownTesti  z#Test suite for the shutdown method.c                   < \         \        V `  4        . V n        \        P
                  pV P                  \        \        R V4       R# )r  N)r  rt  rJ   rf  r   r  r   rc  )rE   raise_exceptionsr  s   & rI   rJ   ShutdownTest.setUp  s7    lD')"22*;=MNrn   c                   a V3R  lpV# )c                     < S ! 4       hr   r   )r   s   rI   rk  'ShutdownTest.raise_error.<locals>.inner  s
    'Mrn   r   )rE   r   rk  s   &f rI   raise_errorShutdownTest.raise_error  s    	rn   c                T   \        ^ V P                  4      p\        ^V P                  4      p\        ^V P                  4      p\        \        P                  P
                  WV.4      p\        P                  ! \        V4      R7       . ROpV P                  WPP                  4       R# )r?  r  N)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)	ra  rf  r  r   r  r  rA  r  r]   )rE   handler0handler1handler2rA   ri   s   &     rI   test_no_failureShutdownTest.test_no_failure  s}    q$++.q$++.q$++. w**X,JKT(^4L 	;;/rn   c                .   \        ^ V P                  4      p\        W1V P                  V4      4       \        P
                  P                  V4      .p\        P                  ! \        V4      R7       V P                  RV P                  R,          4       R# )r?  r  r~  Nro  )
ra  rf  rc  r{  r   r  r  rA  r  r]   )rE   r  r   r   rA   s   &&&  rI   _test_with_failure_in_method)ShutdownTest._test_with_failure_in_method  sh    a-!1!1%!89OO''01T(^4B8rn   c                2    V P                  R \        4       R# r  Nr  r  rq   s   &rI   test_with_ioerror_in_acquire)ShutdownTest.test_with_ioerror_in_acquire  s    )))W=rn   c                2    V P                  R \        4       R# r  Nr  rq   s   &rI   test_with_ioerror_in_flush'ShutdownTest.test_with_ioerror_in_flush      ))'7;rn   c                2    V P                  R \        4       R# rM   Nr  rq   s   &rI   test_with_ioerror_in_close'ShutdownTest.test_with_ioerror_in_close  r  rn   c                2    V P                  R \        4       R# r  r  r  rq   s   &rI   test_with_valueerror_in_acquire,ShutdownTest.test_with_valueerror_in_acquire  s    )))Z@rn   c                2    V P                  R \        4       R# r  r  rq   s   &rI   test_with_valueerror_in_flush*ShutdownTest.test_with_valueerror_in_flush      ))':>rn   c                2    V P                  R \        4       R# r  r  rq   s   &rI   test_with_valueerror_in_close*ShutdownTest.test_with_valueerror_in_close  r  rn   c                H    R \         n        V P                  R\        4       R# )Fr  Nr   r  r  
IndexErrorrq   s   &rI   .test_with_other_error_in_acquire_without_raise;ShutdownTest.test_with_other_error_in_acquire_without_raise  s    "')))Z@rn   c                H    R \         n        V P                  R\        4       R# )Fr  Nr  rq   s   &rI   ,test_with_other_error_in_flush_without_raise9ShutdownTest.test_with_other_error_in_flush_without_raise      "'))':>rn   c                H    R \         n        V P                  R\        4       R# )FrM   Nr  rq   s   &rI   ,test_with_other_error_in_close_without_raise9ShutdownTest.test_with_other_error_in_close_without_raise  r  rn   c                h    R \         n        V P                  \        V P                  R\        4       R# )Tr  Nr   r  r]  r  r  rq   s   &rI   +test_with_other_error_in_acquire_with_raise8ShutdownTest.test_with_other_error_in_acquire_with_raise  s'    "&*d&G&G#Z	1rn   c                h    R \         n        V P                  \        V P                  R\        4       R# )Tr  Nr  rq   s   &rI   )test_with_other_error_in_flush_with_raise6ShutdownTest.test_with_other_error_in_flush_with_raise  '    "&*d&G&G!:	/rn   c                h    R \         n        V P                  \        V P                  R\        4       R# )TrM   Nr  rq   s   &rI   )test_with_other_error_in_close_with_raise6ShutdownTest.test_with_other_error_in_close_with_raise  r  rn   )rf  )ru   rv   rw   rx   ry   rJ   r{  r  r  r  r  r  r  r  r  r  r  r  r  r  r  rz   r{   r  r  s   @@rI   rt  rt    s`     -O
0 9><<A??A??1
/
/ /rn   rt  c                   |   a  ] tR tRt o RtR tRR ltR tR tR t	R	 t
R
 tR tR tR tR tR tR tR tRtV tR# )ModuleLevelMiscTesti  z)Test suite for some module level methods.c                   \         P                  P                  P                  pV P	                  V^ 4       V P                  \         P                  V4       \         P                  ! ^S4       V P	                  \         P                  P                  P                  ^S4       V P                  \        \         P                  R4        ! R R4      pV P                  \        \         P                  V! 4       4       \         P                  ! R4       \         P                  ! 4        V P	                  \         P                  P                  P                  \         P                  4       R# )r?  doesnotexistsc                       ] tR tRtRtR# );ModuleLevelMiscTest.test_disable.<locals>._NotAnIntOrStringi  r   Nrf  r   rn   rI   _NotAnIntOrStringr        rn   r  WARNN)
r   r?  r!   rQ   r]   r   r]  r  r3  r   )rE   old_disabler  s   &  rI   test_disable ModuleLevelMiscTest.test_disable  s    ll**22a(5--55r:*gooG	 	 	)W__6G6IJ 	--55w7G7GHrn   Nc                R  a . o\         P                  ! V \        R V3R l4       \        4       p\        P                  P                  V4       \        \        V4      pVe   V! VRV4       M	V! RV4       V P                  \        VP                  4      ^4       VP                  ^ ,          pV P                  VP                  4       RV,          4       Ve   TM\        \        VP                  4       4      pV P                  VP                  V4       V P                  S. 4       R# )basicConfigc                  (   < SP                  W34      # r   r+  )r  kwrf  s   *,rI   <lambda>/ModuleLevelMiscTest._test_log.<locals>.<lambda>  s    v}}aW'=rn   Nztest me: %r)r   r   r   rS  r?  rC   r/   r]   r^   r-  
getMessageupperr   )rE   r  r  	recording
log_methodr   expected_levelrf  s   &&&    @rI   	_test_logModuleLevelMiscTest._test_log  s    dG]=	? %&		*Wf-
umY7}i0Y../3""1%**,mi.GH"'"3&,,.9Y8 	$rn   c                F    V P                  R \        P                  4       R# r   N)r  r   r   rq   s   &rI   test_logModuleLevelMiscTest.test_log)  s    ugmm,rn   c                (    V P                  R 4       R# r   Nr  rq   s   &rI   
test_debugModuleLevelMiscTest.test_debug,      wrn   c                (    V P                  R 4       R# r   Nr  rq   s   &rI   	test_infoModuleLevelMiscTest.test_info/      vrn   c                (    V P                  R 4       R# r   Nr  rq   s   &rI   test_warning ModuleLevelMiscTest.test_warning2      y!rn   c                (    V P                  R 4       R# r   Nr  rq   s   &rI   
test_errorModuleLevelMiscTest.test_error5  r  rn   c                (    V P                  R 4       R# r3  Nr  rq   s   &rI   test_critical!ModuleLevelMiscTest.test_critical8      z"rn   c                   V P                  \        \        P                  \        4        ! R  R\        P
                  4      p\        P                  ! V4       V P                  \        P                  ! 4       V4       \        P                  ! \        P
                  4       V P                  \        P                  ! 4       \        P
                  4       R# )c                       ] tR tRtRtR# );ModuleLevelMiscTest.test_set_logger_class.<locals>.MyLoggeri>  r   Nrf  r   rn   rI   r1  r  >  r  rn   r1  N)r]  r3  r   r4  rv  r2  r]   getLoggerClass)rE   r1  s   & rI   test_set_logger_class)ModuleLevelMiscTest.test_set_logger_class;  s    )W%;%;VD	w~~ 	 	x(//18<w~~.//17>>Brn   c                  a . o ! V3R  lR\         P                  ! 4       4      p\         P                  ! V4       \         P                  ! R4      pV P	                  SR.4       \
        P                  ! 4       p\         P                  ! V4      pVP                  V4        VP                  \         P                  4       VP                  R4       V P	                  VP                  4       P                  4       R4       VP                  ^ 4       VP                  ^ 4       VP                  \         P                   4       VP                  R4       V P	                  VP                  4       R4       VP#                  V4       VP%                  4        \         P                  ! \         P&                  4       R#   TP#                  T4       TP%                  4        \         P                  ! \         P&                  4       i ; i)c                   R   <a a ] tR tRt oR]P
                  3V V3R lltRtVtV ;t	# )@ModuleLevelMiscTest.test_subclass_logger_cache.<locals>.MyLoggeriK  r1  c                H   < \         SV `  W4       SP                  R 4       R# )initializedN)r  r  r  )rE   rG   r  r  r=  s   &&&rI   r  IModuleLevelMiscTest.test_subclass_logger_cache.<locals>.MyLogger.__init__L  s     -}-rn   r   )
ru   rv   rw   rx   r   r   r  rz   r{   r  )r  r}   r=  s   @@rI   r1  r  K  s     $.gnn . . .rn   r1  just_some_loggerr  hellor   N)r   r  r4  r    r]   r5   r6   r:   rC   r8   r9   r   r[   rn  truncater  r   rN   rM   r2  )rE   r1  r  r7   rT   r=  s   &    @rI   test_subclass_logger_cache.ModuleLevelMiscTest.test_subclass_logger_cacheG  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F8 8AG?c                    \         P                  ! R 4      p\        RV4      w  r#pVP                  4       pV P	                  RV4       V P	                  RV4       R# )a*  
            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 errorN)r  r  r   r  r   rE   r-  r.  r/  r0  s   &    rI   test_logging_at_shutdown,ModuleLevelMiscTest.test_logging_at_shutdownf  sP        (d3jjl,c2.4rn   c                t   \         P                  pV P                  \         P                  V4       \        P
                  ! R V: R24      p\        RV4       \        VRR7      ;_uu_ 4       pV P                  VP                  4       P                  4       R4       RRR4       R#   + '       g   i     R# ; i)a  
            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%  rf  r  zERROR:root:log in __del__N)r   TESTFNr   rt  r  r  r   r  r]   rd   r3  )rE   r$  r-  fps   &   rI   test_logging_at_shutdown_open1ModuleLevelMiscTest.test_logging_at_shutdown_openy  s     ##	(((3 $* +3 6	  & 	t$(W--RWWY--/1LM .---s   -/B&&B7	c                    \         P                  ! R 4      p\        RV4      w  r#pVP                  4       pV P	                  RV4       V P                  V^4       R# )z
            import logging

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

            rec()
        r%  z#Cannot recover from stack overflow.N)r  r  r   r  rP  r]   r  s   &    rI   test_recursion_error(ModuleLevelMiscTest.test_recursion_error  sS        -T48jjl>DQrn   c                   \         P                  ! 4       pV P                  \         P                  V4       V P	                  \         P                  V4       \         P                  ! 4       pV P	                  W4       V P                  W4       R # r   )r   getLevelNamesMappingr]   r*   assertIsNot)rE   mappingnew_mappings   &  rI   test_get_level_names_mapping0ModuleLevelMiscTest.test_get_level_names_mapping  sf    ..0--w7--w7224..rn   r   r   )ru   rv   rw   rx   ry   r  r  r  r  r  r  r  r  r  r  r   r  r  r  rz   r{   r|   s   @rI   r  r    sV     3I.%0- " #
C3>5&N>  / /rn   r  c                      a  ] tR tRt o R tR t]RR l4       t]R 4       t	R t
R t]P                  ! 4       R	 4       t]P                  ! 4       R
 4       tRtV tR# )LogRecordTesti  c                    \         P                  ! / 4      p\        V4      pV P                  VR 4       V P	                  VR4       R# )z<LogRecord: >N)r   r   r  rT  r  )rE   r   rk   s   &  rI   test_str_repLogRecordTest.test_str_rep  s;    !!"%Fa0As#rn   c                   \        4       p\        P                  ! 4       pVP                  V4       R R/p\        P                  ! RV4       V P                  VP                  ^ ,          P                  V4       V P                  VP                  ^ ,          P                  R4       VP                  V4       VP                  4        R# )lessmorezless is %(less)szless is moreN)rS  r   r    rC   r   r  r-  rR  r]   r=  rN   rM   )rE   rT   r   r  s   &   rI   test_dict_argLogRecordTest.test_dict_arg  s    	Qf*A.aiil''+1--~>			rn   Nc                   \         P                  pV\         n         ^ RIpVP                  4       P                  p\         P
                  ! RRV  2/4      p\        P                  ! \        P                  RR4      ;_uu_ 4        \         P
                  ! RRV  2/4      pRRR4       RVRVP                  RXP                  /pV\         n        V'       d   VP                  V4       R# V#   + '       g   i     LT; i  T\         n        i ; i)	r?  Nr  msg1_r  msg2_processNamer1.processNamer2.processName)r   logMultiprocessingr  current_processrG   r   r   	swap_itemrr  modulesr  r8  )	r"  r"  r  prev_logMultiprocessingr  rG   r1r2resultss	   &&&      rI   _extract_logrecord_process_name-LogRecordTest._extract_logrecord_process_name  s    ")"<"<%7"	A(%%',,D&&se}'=>B ""3;;0A4HH**EU3%=+AB I %''G
 *AG&IIgN IH *AG&s$   A'C? C, $C? ,C<	7C? ?Dc                l   \         P                  ! 4        R \        P                  9   p V P	                  \
        P                  R4       Rp\
        P                  ! / 4      pV P	                  VP                  R4       V P                  ^V4      pV P	                  RVR,          4       V P	                  RVR,          4       V P	                  RVR,          4       ^ RI
pVP                  ! 4       w  rgVP                  ! V P                  ^W'3R7      pVP                  4        VP                  4       pV P                  RVR,          4       V P	                  VR,          VR,          4       V P	                  RVR,          4       VP!                  4        V'       d   ^ RI
pR# R#   T'       d   ^ RI
pi i ; i)r  TMainProcessr  r   r!  Nr  )r   r  rr  r%  r]   r   r"  r   r  r*  r  PipeProcessr  r  assertNotEqualr   )	rE   multiprocessing_importedLOG_MULTI_PROCESSINGr   r)  r  parent_conn
child_connr  s	   &        rI   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$ $F3c                   V P                   pV P                  p\        P                  ! / 4      pV! VP                  4       V! VP
                  4       V! VP                  4       V! VP                  4       V! VP                  4       \        P                  p\        P                  p\        P                  p\        P                  p R \        n	        R \        n
        R \        n        R \        n        \        P                  ! / 4      pV! VP                  4       V! VP
                  4       V! VP                  4       V! VP                  4       V! VP                  4       V\        n	        V\        n
        V\        n        V\        n        R#   T\        n	        T\        n
        T\        n        T\        n        i ; i)FN)r  r  r   r   r   
threadNameprocessr  taskName
logThreadslogProcessesr"  logAsyncioTasks)rE   NONENOT_NONEr   log_threadslog_processeslog_multiprocessinglog_asyncio_taskss   &       rI   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                ^   "   \         P                  ! / 4      pV! VP                  4       R # 5ir   )r   r   r:  )rE   	assertionr   s   && rI   _make_record_async LogRecordTest._make_record_async"  s!     !!"%!**s   +-c                    V P                   p\        P                  ! 4       ;_uu_ 4       pR \        n        VP                  V! V P                  4      4       R\        n        VP                  V! V P                  4      4       RRR4       \        P                  P                  R4       R#   + '       g   i     L1; i  \        P                  P                  R4       i ; i)TFN)
rH  asyncioRunnerr   r=  runr  r  events_set_event_loop_policyrE   make_recordrunners   &  rI   #test_taskName_with_asyncio_imported1LogRecordTest.test_taskName_with_asyncio_imported&  s    	811K!!V*.'

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

;t'8'89:	 " NN11$7 "! NN11$7s#   )C  AB-C  -B=	8C   !C!c           	     \    V P                   p\        P                  ! 4       ;_uu_ 4       p\        P                  ! \
        P                  R R4      ;_uu_ 4        R\        n        VP                  V! V P                  4      4       R\        n        VP                  V! V P                  4      4       RRR4       RRR4       \        P                  P                  R4       R#   + '       g   i     L9; i  + '       g   i     LD; i  \        P                  P                  R4       i ; i)rK  NTF)rH  rK  rL  r   r$  rr  r%  r   r=  rM  r  rN  rO  rP  s   &  rI   &test_taskName_without_asyncio_imported4LogRecordTest.test_taskName_without_asyncio_imported2  s    	811K!!VW->->s{{IW[-\-\*.'

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

;t'8'89:	 .]! NN11$7 .]-\!! NN11$7s;   )D
 /C7AC$	3C7;D
 $C4/C77D	D
 
!D+r   r   )ru   rv   rw   rx   r  r  r$  r*  r  r5  rD  rH  r   r   rS  rV  rz   r{   r|   s   @rI   r  r    s}     $	  0 #' #'J8@ $$&	8 '	8 $$&	8 '	8rn   r  c                   
  a a ] tR tRt oRtV 3R ltV 3R ltR tR tR t	R t
R	 tR
 tR tR tR tR tR tR tR tR tR tR tR tR t]P4                  ! 4       R 4       tR R ltR tR tR tR t R t!R t"Rt#Vt$V ;t%# )!BasicConfigTesti?  z#Test suite for logging.basicConfig.c                  < \         \        V `  4        \        P                  P
                  V n        \        P                  P                  4       V n        \        P                  R ,          V n
        \        P                  P                  V n        V P                  V P                  4       . \        P                  n        R# r   N)r  rY  rJ   r   r?  rA   r$   r%   r&   r'   r(   r  r4   r   cleanupr  s   &rI   rJ   BasicConfigTest.setUpC  sy    ot*,--%//446")"6"6q"9&-ll&8&8#% "rn   c                   < \         P                  P                  R ,           F2  p\         P                  P                  V4       VP	                  4        K4  	  \
        \        V `  4        R# r[  )r   r?  rA   rN   rM   r  rY  rU   )rE   rT   r  s   & rI   rU   BasicConfigTest.tearDownL  sI    &&q))ALL&&q)GGI * 	ot-/rn   c                j   \        \        P                  R V P                  4       \        P                  P                  4        \        P                  P                  V P                  4       V P                  \        P                  R&   \        P                  P                  V P                  4       R# )rA   r   N)rc  r   r?  rA   r$   rO   rP   r&   r(   r'   r8   r4   rq   s   &rI   r\  BasicConfigTest.cleanupR  sp    j$--8!  !4!45"&"9"9Qd99:rn   c                   \         P                  ! 4        V P                  \        \         P                  P
                  4      ^4       \         P                  P
                  ^ ,          pV P                  V\         P                  4       V P                  VP                  \        P                  4       VP                  pV P                  VP                  P                  \         P                  4       V P                  VP                   4       V P                  VP                  \         P"                  4       V P                  \         P                  P$                  V P&                  4       R# rp  )r   r  r]   r^   r?  rA   rV  r:   r7   rr  r  rG  r[  r  BASIC_FORMATr  ri  PercentStyler  r4   )rE   r   rG  s   &  rI   test_no_kwargsBasicConfigTest.test_no_kwargsY  s     	W\\223Q7,,''*gw'<'<=4%%	))..0D0DE)++,i..0D0DE 	++T-H-HIrn   c                   \         P                  ! 4       ;_uu_ 4       p\        P                  ! \        P
                  R R7       \        P                  ! R4       \        P
                  P                  ^ 4       V P                  VP                  4       P                  4       R4       RRR4       R#   + '       g   i     R# ; i)r  r7   r  Log an errorERROR:root:Log an errorNr   r  r   r  rr  r  r   r  r]   r[   rn  r  s   & rI   test_strformatstyle#BasicConfigTest.test_strformatstylem  u    $$&&&szz=MM.)JJOOAV__.446)+	 '&&&   B
B22C	c                   \         P                  ! 4       ;_uu_ 4       p\        P                  ! \        P
                  R R7       \        P                  ! R4       \        P
                  P                  ^ 4       V P                  VP                  4       P                  4       R4       RRR4       R#   + '       g   i     R# ; i)r  rh  ri  rj  Nrk  r  s   & rI   test_stringtemplatestyle(BasicConfigTest.test_stringtemplatestyleu  rn  ro  c                d   R  p\         P                  ! RRR7       V P                  \        \         P                  P
                  4      ^4       \         P                  P
                  ^ ,          pV P                  V\         P                  4       \         P                  ! RRRR7      pV P                  VP                  P                  VP                  P                  4       V P                  VP                  P                  VP                  P                  4       V P                  WVR4       R# )c                 r    V P                  4        VP                  4        \        P                  ! V4       R # r   r  r  h2rU  s   &&&rI   r\  .BasicConfigTest.test_filename.<locals>.cleanup      HHJHHJIIbMrn   test.logrf  )r$  rh  r  r  N)r   r  r]   r^   r?  rA   rV  r  r7   moderG   r   rE   r\  r   ri   s   &   rI   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?rn   c                F   R  p\         P                  ! RRR7       \         P                  P                  ^ ,          p\         P                  ! RR4      pV P                  VP                  P                  VP                  P                  4       V P                  WVR4       R# )c                 r    V P                  4        VP                  4        \        P                  ! V4       R # r   r  ru  s   &&&rI   r\  .BasicConfigTest.test_filemode.<locals>.cleanup  rx  rn   ry  wbr$  filemodeN)	r   r  r?  rA   r  r]   r7   rz  r   r{  s   &   rI   test_filemodeBasicConfigTest.test_filemode  ss    	
 	Z$?,,''*&&z48,,hoo.B.BC(J?rn   c                   \         P                  ! 4       pV P                  VP                  4       \        P
                  ! VR 7       V P                  \        \        P                  P                  4      ^4       \        P                  P                  ^ ,          pV P                  V\        P                  4       V P                  VP                  V4       R# r  )r5   r6   r   rM   r   r  r]   r^   r?  rA   rV  r:   r7   )rE   r7   r   s   &  rI   test_streamBasicConfigTest.test_stream  s    %6*W\\223Q7,,''*gw'<'<=0rn   c                    \         P                  ! R R7       \         P                  P                  ^ ,          P                  pV P                  VP                  P                  R 4       R# )z%(asctime)s - %(message)s)r  N)r   r  r?  rA   rG  r]   r[  r  rE   rG  s   & rI   test_formatBasicConfigTest.test_format  sH    #>?LL))!,66	))..0KLrn   c                    \         P                  ! R R7       \         P                  P                  ^ ,          P                  pV P                  VP                  R 4       R# )r  )ri  N)r   r  r?  rA   rG  r]   ri  r  s   & rI   test_datefmtBasicConfigTest.test_datefmt  s@    E*LL))!,66	**E2rn   c                    \         P                  ! R R7       \         P                  P                  ^ ,          P                  pV P                  VP                  \         P                  4       R# )r  r  N)r   r  r?  rA   rG  rV  r[  r\  r  s   & rI   
test_styleBasicConfigTest.test_style  sF    #&LL))!,66	i..0K0KLrn   c                   \         P                  P                  pV P                  \         P                  P                  V4       \         P
                  ! ^9R7       V P                  \         P                  P                  ^94       \         P
                  ! ^:R7       V P                  \         P                  P                  ^94       R# )9   )r  N)r   r?  r  r   r8   r  r]   )rE   	old_levels   & rI   
test_levelBasicConfigTest.test_level  sy    LL&&	--y9"%++R0"%++R0rn   c                   V P                   p\        P                  ! 4       .p\        P                  pV! \
        \        P                  R VR7       V! \
        \        P                  R VR7       V! \
        \        P                  VVR7       V! \
        \        P                  \        P                  R7       \        P                  ! RRR7       R# )ry  )r$  r7   )r$  rA   )r7   rA   )loglevelNr  r  )r]  r   r:   rr  r  r  r  r   )rE   r]  rA   r7   s   &   rI   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8rn   c                   \         P                  ! 4       \         P                  ! \        P                  4      \         P                  ! 4       .p\         P                  ! 4       pV^,          P                  V4       \         P                  ! VR7       V P                  V^ ,          \         P                  P                  ^ ,          4       V P                  V^,          \         P                  P                  ^,          4       V P                  V^,          \         P                  P                  ^,          4       V P                  V^ ,          P                  4       V P                  V^,          P                  4       V P                  V^,          P                  V4       V P                  V^ ,          P                  V^,          P                  4       R# )r   )rA   N)r   r:   rr  r  r<   r?   r  r  r?  rA   r  rG  )rE   rA   r   s   &  rI   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Crn   c                   \         P                  ! 4       p\         P                  ! 4       p\        P                  ! V4      .p\        P                  ! V4      .p\        P                  ! \        P
                  VR 7       \        P                  ! R4       \        P                  ! R4       \        P                  ! R4       V P                  \        \        P                  P                  4      ^4       \        P                  ! \        P                  VRR7       \        P                  ! R4       \        P                  ! R4       \        P                  ! R4       V P                  \        \        P                  P                  4      ^4       V P                  VP                  4       P                  4       R4       V P                  VP                  4       P                  4       R4       R# )	)r  rA   rO  r   r   T)r  rA   forcezWARNING:root:warnz WARNING:root:warn
INFO:root:infoN)r5   r6   r   r:   r  r   r   r   r   r]   r^   r?  rA   r   r[   rn  )rE   old_string_ionew_string_ioold_handlersnew_handlerss   &    rI   
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<	>rn   c           	         R p\         P                  ! RVRR\         P                  R7       V P                  \	        \         P
                  P                  4      ^4       \         P
                  P                  ^ ,          pV P                  V\         P                  4       V P                  VP                  V4       \         P                  ! R4       VP                  4        \        RR R7      ;_uu_ 4       pVP                  4       P                  4       pRRR4       \        P                   ! R4       V P                  XR4       R#   + '       g   i     L:; i  XP                  4        \        RR R7      ;_uu_ 4       pTP                  4       P                  4       pRRR4       M  + '       g   i     M; i\        P                   ! R4       T P                  XR4       i ; i)rf  ry  r9  %(message)sr$  rh  errorsr  r  .   The Øresund Bridge joins Copenhagen to Malmör  Nr   r  r9   r]   r^   r?  rA   rV  r  rh  r   rM   r  rd   rn  rQ  r  rE   rh  r   r   r  s   &    rI   test_encodingBasicConfigTest.test_encoding  sN   	OHh'/'4GMMK S!6!67;ll++A.G!!'7+>+>?W--x8MMJKMMOj733qvvx~~' 4IIj!TMO 43 MMOj733qvvx~~' 4333IIj!TMO0   CE 8E		E	&G&F*	!	G&*F:51G&c           	         R p\         P                  ! RVRR\         P                  R7       V P                  \	        \         P
                  P                  4      ^4       \         P
                  P                  ^ ,          pV P                  V\         P                  4       V P                  VP                  V4       \         P                  ! R4       VP                  4        \        RRR7      ;_uu_ 4       pVP                  4       P                  4       pRRR4       \        P                   ! R4       V P                  XR	4       R#   + '       g   i     L:; i  XP                  4        \        RRR7      ;_uu_ 4       pTP                  4       P                  4       pRRR4       M  + '       g   i     M; i\        P                   ! R4       T P                  XR	4       i ; i)
rh  ry  ignorer  r  r  rf  r  Nz*The resund Bridge joins Copenhagen to Malmr  r  s   &    rI   test_encoding_errors$BasicConfigTest.test_encoding_errors  sH   	QHh'/'4GMMK S!6!67;ll++A.G!!'7+>+>?W--x8MMJKMMOj733qvvx~~' 4IIj!T#OP 43 MMOj733qvvx~~' 4333IIj!T#OPr  c           	         R p\         P                  ! RVR\         P                  R7       V P                  \	        \         P
                  P                  4      ^4       \         P
                  P                  ^ ,          pV P                  V\         P                  4       V P                  VP                  V4       V P                  VP                  R4       \         P                  ! R4       VP                  4        \        RRR7      ;_uu_ 4       pVP                  4       P                  4       pRRR4       \         P"                  ! R4       V P                  XR	4       R#   + '       g   i     L:; i  XP                  4        \        RRR7      ;_uu_ 4       pTP                  4       P                  4       pRRR4       M  + '       g   i     M; i\         P"                  ! R4       T P                  XR	4       i ; i)
rh  ry  r  )r$  rh  r  r  backslashreplaceu<   😂: ☃️: The Øresund Bridge joins Copenhagen to Malmörf  r  NzL\U0001f602: \u2603\ufe0f: The \xd8resund Bridge joins Copenhagen to Malm\xf6)r   r  r9   r]   r^   r?  rA   rV  r  rh  r  r   rM   r  rd   rn  rQ  r  r  s   &    rI   test_encoding_errors_default,BasicConfigTest.test_encoding_errors_default  sf   	KHh'4GMMK S!6!67;ll++A.G!!'7+>+>?W--x8W^^-?@MMXYMMOj733qvvx~~' 4IIj!T $J K 43 MMOj733qvvx~~' 4333IIj!T $J Ks0   C,E7 E$$E4	7&HG	<	HG1Hc           	     z  a  R p\         P                  ! RVRR\         P                  R7       V P                  \	        \         P
                  P                  4      ^4       \         P
                  P                  ^ ,          pV P                  V\         P                  4       V P                  VP                  V4       V P                  VP                  4       . oV3R lpW2n        \         P                  ! R4       V P                  S4       V P                  RS^ ,          4       VP!                  4        \#        RRR	7      ;_uu_ 4       pVP%                  4       P'                  4       pRRR4       \(        P*                  ! R4       V P                  XR
4       R#   + '       g   i     L:; i  XP!                  4        \#        RRR	7      ;_uu_ 4       pTP%                  4       P'                  4       pRRR4       M  + '       g   i     M; i\(        P*                  ! R4       T P                  XR
4       i ; i)rh  ry  Nr  r  c                 b   < SP                  \        \        P                  ! 4       4      4       R # r   )r  r  rr  r  )r   r=  s   &rI   dummy_handle_errorEBasicConfigTest.test_encoding_errors_none.<locals>.dummy_handle_errorC  s    s3==?34rn   r  z:'ascii' codec can't encode character '\xd8' in position 4:rf  r  r   )r   r  r9   r]   r^   r?  rA   rV  r  rh  r  r  r  r   rD   r   rM   r  rd   rn  rQ  r  )rE   rh  r   r  r   r  r=  s   &     @rI   test_encoding_errors_none)BasicConfigTest.test_encoding_errors_none3  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33qvvx~~' 4IIj!T3'	 43 MMOj733qvvx~~' 4333IIj!T3's0   D$F0 FF-	0&H:G>	5	H:>H	1H:c                   R  pRp\        RR4      pV P                  \        P                  V4        Rp\        P
                  ! VRV\        P                  RR7       V P                  \        \        P                  P                  4      ^4       \        P                  P                  ^ ,          pV P                  V\        P                  4       \        P                  ! RR	7      ;_uu_ 4       pR\        n        VP!                  V! 4       4       RRR4       \#        VRR
7      ;_uu_ 4       pVP%                  4       P'                  4       pRRR4       V P)                  XR4       \        P*                  P-                  R4       V'       d   VP/                  4        R# R#   + '       g   i     L; i  + '       g   i     Lp; i  \        P*                  P-                  R4       T'       d   TP/                  4        i i ; i)c                  :   "   \         P                  ! R 4       R# 5i)zhello worldN)r   r   r   rn   rI   r}  5BasicConfigTest.test_log_taskName.<locals>.log_recordU  s     OOM*s   Nr  ztest-logging-taskname-rf  r9  z%(taskName)s - %(message)s)r$  r  rh  r  r  T)r   r  zTask-\d+ - hello world)rV  r   rQ  r  r   r  r   r]   r^   r?  rA   rV  r  rK  rL  r=  rM  r  rd   rn  assertRegexrN  rO  rM   )rE   r}  r   log_filenamerh  rR  r   r  s   &       rI   test_log_taskName!BasicConfigTest.test_log_taskNameS  sa   	+ %f.FG		<0	 Hh)1'CE S!6!67;ll++A.G!!'7+>+>?d++v*.'

:<( , lW55vvx~~' 6T#<=NN11$7  ,+ 65 NN11$7 s<   B>G
 1"F$G
 0F7G
 $F4	/G
 7G	G
 
:Hc                   a aa . o\         P                  oVVV 3R  lp\        P                  ! S \         RV4       \	        \         V4      pVe   V! VR4       MV! R4       S P                  SR/ 3.4       R# )c                     < S! 4        \         P                  P                  p\         P                  P                  ^d4       SP	                  \         P                  P                  V4       SP                  W34       R# )d   N)r   r?  r  r8   r   r  )r  r  r  rf  old_basic_configrE   s   *, rI   my_basic_config2BasicConfigTest._test_log.<locals>.my_basic_configv  sP    **ILL!!#&OOGLL119=MM1'"rn   r  Nztest mer   )r   r  r   r   r/   r]   )rE   r  r  r  r  rf  r  s   f&&  @@rI   r  BasicConfigTest._test_logq  si    "..	# 	dG]ODWf-
ui(y! 	2r(,rn   c                F    V P                  R \        P                  4       R# r  )r  r   r   rq   s   &rI   r  BasicConfigTest.test_log  s    ugoo.rn   c                (    V P                  R 4       R# r  r  rq   s   &rI   r  BasicConfigTest.test_debug  r  rn   c                (    V P                  R 4       R# r  r  rq   s   &rI   r  BasicConfigTest.test_info  r  rn   c                (    V P                  R 4       R# r  r  rq   s   &rI   r  BasicConfigTest.test_warning  r  rn   c                (    V P                  R 4       R# r  r  rq   s   &rI   r  BasicConfigTest.test_error  r  rn   c                (    V P                  R 4       R# r  r  rq   s   &rI   r  BasicConfigTest.test_critical  r  rn   )rA   r4   r(   r&   r   )&ru   rv   rw   rx   ry   rJ   rU   r\  re  rl  rq  r|  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r   r  r  r  r  r  r  r  r  rz   r{   r  r  s   @@rI   rY  rY  ?  s     -#0;J(++@$@1M3M19D">*O(Q&K((@ $$&  ' :-./ " # #rn   rY  c                      a a ] tR tRt oV 3R ltR tR tR tR tR t	R t
R	 tR
 tR tR tR tR tR tRtVtV ;t# )LoggerAdapterTesti  c                R  <a \         \        V `  4        \        P                  R ,          o\        4       V n        \        P                  V n        V P                  P                  V P                  4       V P                  V P                  P                  V P                  4       V P                  V P                  P                  4       V3R lpV P                  V4       V P                  \        P                  4       \        P                  ! V P                  RR7      V n        R# )r   c                  .   < S \         P                  R &   R# r[  )r   r'   )old_handler_lists   rI   r\  (LoggerAdapterTest.setUp.<locals>.cleanup  s    &6G  #rn   Nr  r-  )r  r  rJ   r   r'   rS  r  r?  r  rC   r   rN   rM   rA  r   adapter)rE   r\  r  r  s   & @rI   rJ   LoggerAdapterTest.setUp  s    ,."//2)+llt~~.114>>B,,-	7 	 ((),,DKKtLrn   c                x   R pRp ^^ ,           V P	                  \        V P                  P                  4      ^4       V P                  P                  ^ ,          pV P	                  VP                  \        P                  4       V P	                  VP                  V4       V P	                  VP                  V P                  34       V P	                  VP                  VP                  W"P                  34       R#   \          d3   pTpT P                  P                  YP                  4        Rp?EL%Rp?ii ; iztesting exception: %rN)r  r  r  r  r]   r^   r-  r   r   r   r  rR  r,  r  __traceback__rE   r  r  ra  r   s   &    rI   test_exception LoggerAdapterTest.test_exception  s    %	8E
 	T^^334a8''*7S)t~~&78--.?.?@	B ! 	8CLL""377	8   	C< <D9'D44D9c                    ^^ ,           V P                  P                  RXR7       V P                  \	        V P
                  P                  4      ^4       V P
                  P                  ^ ,          pV P                  VP                  VP                  W"P                  34       R#   \          d   pTp Rp?LRp?ii ; i)rq  Nzexc_info testr  )
r  r  r  r]   r^   r  r-  r,  r  r  )rE   ra  r  r   s   &   rI   test_exception_excinfo(LoggerAdapterTest.test_exception_excinfo  s    	E 	=T^^334a8''*--.?.?@	B ! 	C	s   	B( (B?3B::B?c                   R pV P                   P                  WP                  4       V P                  \	        V P                  P
                  4      ^4       V P                  P
                  ^ ,          pV P                  VP                  \        P                  4       V P                  VP                  V4       V P                  VP                  V P                  34       V P                  VP                  R4       R# )zcritical test! %rr  N)r  r3  r  r]   r^   r-  r   r   r   r  rR  r  )rE   r  r   s   &  rI   r  LoggerAdapterTest.test_critical  s    !c>>2T^^334a8''*)9)9:S)t~~&78/:rn   c                d   V P                   P                  P                  P                  p^!V P                   P                  P                  n        V P	                  \
        V P                   P                  P                  RV4       V P                  V P                   P                  ^ 4      4       R# )!   rQ   N)r  r  r!   rQ   r   rc  ry  isEnabledForrE   r  s   & rI   test_is_enabled_for%LoggerAdapterTest.test_is_enabled_for  sw    ll))1199.0##+!4!4!<!<i#	%22267rn   c                l   V P                  V P                  P                  4       4       V P                  P                   F  pV P                  P                  V4       K   	  V P                  V P                  P                  4       4       V P                  V P                  P                  4       4       R # r   )rD   r  r@   r  rA   rN   ry  r2  s   & rI   test_has_handlers#LoggerAdapterTest.test_has_handlers  sy    0023{{++GKK%%g. , 	00231134rn   c                   R p\        V P                  RR7      p\        VRR7      pRVn        V P                  \	        V4      \	        V4      4       VP                  \        P                  WP                  4       V P                  \        V P                  P                  4      ^4       V P                  P                  ^ ,          pV P                  VP                  \        P                  4       V P                  VP                  RV 24       V P                  VP                  V P                  34       V P                  VP                  R4       VP                  pV P!                  VP                  V4       V P!                  V P                  P                  V4       \#        4       p Wcn        V P!                  VP                  V4       V P!                  VP                  V4       V P!                  V P                  P                  V4       WSn        V P!                  VP                  V4       V P!                  VP                  V4       V P!                  V P                  P                  V4       R#   YSn        i ; i)zAdapters can be nested, yo.Nr  AdapterAdapterzAdapter AdapterAdapter test_nested)PrefixAdapterr  r   r]   r  r   r   r   r  r^   r-  r   r  rR  r  r!   r  rv  )rE   r  r  adapter_adapterr   orig_managertemp_managers   &      rI   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$I7 7I?c                   V P                   P                  p\        V P                  4      pVP	                  R R4       V P                  \        VR,          P                  4      R4       V P                  VR,          P                  R4       VP                  \        P                  RR4       V P                  \        VR,          P                  4      R4       V P                  VR,          P                  R4       R# )
Hello, {}!worldzHello, world!test_styled_adapterGoodbye {}.zGoodbye world.Nro  )r  r-  StyleAdapterr  r   r]   r  r  r  r   r   r   )rE   r-  r  s   &  rI   r	  %LoggerAdapterTest.test_styled_adapter  s    ..((t{{+g.WR[__-?--/DEGOO]G<WR[__-/?@--/DErn   c                "   V P                   P                  p\        V P                  4      pR Vn        \        V4      pVP                  RR4       V P                  \        VR,          P                  4      R4       V P                  VR,          P                  R4       VP                  \        P                  RR4       V P                  \        VR,          P                  4      R4       V P                  VR,          P                  R4       R# )	z{}r 	  r	  z{} Hello, world!test_nested_styled_adapterr	  z{} Goodbye world.Nro  )r  r-  r  r  r   r	  r   r]   r  r  r  r   r   r   )rE   r-  r  adapter2s   &   rI   r	  ,LoggerAdapterTest.test_nested_styled_adapter  s    ..((,(w/WR[__-/AB--/KLW__mW=WR[__-/BC--/KLrn   c                Z  aaaa ^oV P                   P                  oVV3R loV3R loV3R lpV P                  P                  pV! 4        V P	                  VR	,          P
                  R4       VR	,          P                  pS^,          oV! 4        V P	                  VR	,          P
                  R4       V P                  VR	,          P                  V4       VR	,          P                  pS^,          oV! 4        V P	                  VR	,          P
                  R4       V P                  VR	,          P                  V4       VR	,          P                  pS^,          oV! 4        V P	                  VR	,          P
                  R4       V P                  VR	,          P                  V4       R# )
rq  c                     < S! R S R7       R# rC  )
stacklevelNr   	the_leveltriggers   rI   	innermostELoggerAdapterTest.test_find_caller_with_stacklevel.<locals>.innermost      Fy1rn   c                     < S ! 4        R # r   r   r	  s   rI   rk  ALoggerAdapterTest.test_find_caller_with_stacklevel.<locals>.inner       Krn   c                     < S ! 4        R # r   r   rk  s   rI   outerALoggerAdapterTest.test_find_caller_with_stacklevel.<locals>.outer#      Grn   r	  rk  r	   test_find_caller_with_stacklevelNro  )r  r   r  r-  r]   r  r  r  )rE   r	  r-  r  rk  r	  r	  r	  s   &   @@@@rI   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6rn   c                   \         P                  ! V P                  R R/R7      V n        V P                  P	                  R4       V P                  \        V P                  P                  4      ^4       V P                  P                  ^ ,          pV P                  VR 4       V P                  VP                  R4       R# )r  r   r  zfoo should be hereNr   r   r  r  r3  r]   r^   r  r-  assertHasAttrr  r   s   & rI   test_extra_in_records'LoggerAdapterTest.test_extra_in_records9  s    ,,DKK493<A 	23T^^334a8''*65)S)rn   c                    V P                   P                  R RR/R7       V P                  \        V P                  P
                  4      ^4       V P                  P
                  ^ ,          pV P                  VR4       R# )zfoo should NOT be herer  noper-  N)r  r3  r]   r^   r  r-  assertNotHasAttrr   s   & rI    test_extra_not_merged_by_default2LoggerAdapterTest.test_extra_not_merged_by_defaultC  sa    6ufoNT^^334a8''*fe,rn   c                   \         P                  ! V P                  R R/RR7      V n        V P                  P	                  RRR/R7       V P                  \        V P                  P                  4      ^4       V P                  P                  ^ ,          pV P                  VR 4       V P                  VR4       V P                  VP                  R4       V P                  VP                  R4       R# )	r  r   Tr  r-  merge_extrazfoo and bar should be herer  r   r&	  N)r   r   r  r  r3  r]   r^   r  r-  r!	  r  r  r   s   & rI   test_extra_merged#LoggerAdapterTest.test_extra_mergedI  s    ,,DKK493<9=? 	:5#,OT^^334a8''*65)65)S)S)rn   c                   \         P                  ! V P                  R R/RR7      V n        V P                  P	                  RR R/R7       V P                  \        V P                  P                  4      ^4       V P                  P                  ^ ,          pV P                  VR 4       V P                  VP                  R4       R# )r  r   Tr+	  zfoo shall be minr   r&	  Nr 	  r   s   & rI   )test_extra_merged_log_call_has_precedence;LoggerAdapterTest.test_extra_merged_log_call_has_precedenceV  s    ,,DKK493<9=? 	0ET^^334a8''*65)S)rn   )r  r  r  )ru   rv   rw   rx   rJ   r  r  r  r  r  r  r	  r	  r	  r"	  r(	  r-	  r0	  rz   r{   r  r  s   @@rI   r  r    sV     M"B"B	;8598	F
M7@*-*	* 	*rn   r  c                   *   a  ] tR tRt o RtR tRtV tR# )r  ib  Adapterc                (    V P                    R V 2V3# r  r   )rE   r  rS  s   &&&rI   r9  PrefixAdapter.processe  s    ++au%v--rn   r   N)ru   rv   rw   rx   r   r9  rz   r{   r|   s   @rI   r  r  b  s     F. .rn   r  c                   ,   a  ] tR tRt o R tR tRtV tR# )Messageii  c                    Wn         W n        R # r   )r_  rR  )rE   r_  rR  s   &&&rI   r  Message.__init__j  s    	rn   c                J    V P                   P                  ! V P                  !  # r   )r_  r  rR  rq   s   &rI   __str__Message.__str__n  s    xx		**rn   )rR  r_  N)ru   rv   rw   rx   r  r<	  rz   r{   r|   s   @rI   r8	  r8	  i  s     + +rn   r8	  c                   .   a  ] tR tRt o R^/R ltRtV tR# )r	  ir  r	  c                  V P                  V4      '       dH   V P                  W%4      w  r%V P                  P                  ! V\	        W$4      3/ VBR V^,           /B  R# R# )r	  N)r  r9  r  r   r8	  )rE   r  r  r	  rR  rS  s   """$*,rI   r   StyleAdapter.logs  sT    U##,,s3KCKKOOE73#5 5 5'1!|5 $rn   r   N)ru   rv   rw   rx   r   rz   r{   r|   s   @rI   r	  r	  r  s     51 5 5rn   r	  c                      a a ] tR tRt oV 3R ltR tR tR tR tR t	R t
R	 tR
 tR tR tR tR tR tR tR tR tRtVtV ;t# )
LoggerTestiz  c                  < \         \        V `  4        \        4       V n        \
        P                  ! R R7      V n        V P                  P                  V P                  4       V P                  V P                  P                  V P                  4       V P                  V P                  P                  4       V P                  \
        P                  4       R# )blahrG   N)r  rB	  rJ   rS  r  r   r2  r  rC   r   rN   rM   rA  r  s   &rI   rJ   LoggerTest.setUp|  s    j$%')+nn&1t~~.114>>B,,-(()rn   c                    V P                  \        R V P                  P                  R4       V P                  \        RV P                  P                  R4       R# )z,Level not an integer or a valid string: NoneNz.Level not an integer or a valid string: (0, 0))r?  r?  )r  r3  r  r8   rq   s   &rI   test_set_invalid_level!LoggerTest.test_set_invalid_level  sJ    !!EKK  $	( 	!!GKK  &	*rn   c                x   R pRp ^^ ,           V P	                  \        V P                  P                  4      ^4       V P                  P                  ^ ,          pV P	                  VP                  \        P                  4       V P	                  VP                  V4       V P	                  VP                  V P                  34       V P	                  VP                  VP                  W"P                  34       R#   \          d3   pTpT P                  P                  YP                  4        Rp?EL%Rp?ii ; ir  )r  r  r  r  r]   r^   r-  r   r   r   r  rR  r,  r  r  r  s   &    rI   r  LoggerTest.test_exception  s    %	7E
 	T^^334a8''*7S)t~~&78--.?.?@	B ! 	7CKK!!#~~66	7r  c                    \         P                  ! \        R R4      ;_uu_ 4        V P                  \        V P
                  P                  RR4       RRR4       R#   + '       g   i     R# ; i)r  Tr   test messageN)r   	swap_attrr   r]  r3  r  r   rq   s   &rI   !test_log_invalid_level_with_raise,LoggerTest.test_log_invalid_level_with_raise  sD    w(94@@i$O A@@@s   -AA-	c                    \         P                  ! \        R R4      ;_uu_ 4        V P                  P	                  RR4       RRR4       R#   + '       g   i     R# ; i)r  Fr   rM	  N)r   rN	  r   r  r   rq   s   &rI   test_log_invalid_level_no_raise*LoggerTest.test_log_invalid_level_no_raise  s:    w(95AAKKOOD.1 BAAAs   AA	c                  a . o\         P                  ! V \        P                  R V3R l4       V P                  P                  RR7       V P                  \        S4      ^4       V P                  RS^ ,          4       R# )print_stackc                 B   < SP                  VP                  4       4      # r   )r  r[   )r   r  rf  s   &&rI   r  =LoggerTest.test_find_caller_with_stack_info.<locals>.<lambda>  s    fmmDMMO&Drn   Tr  rR  N)r   r   r   	tracebackr  
findCallerr]   r^   )rE   rf  s   &@rI    test_find_caller_with_stack_info+LoggerTest.test_find_caller_with_stack_info  sd    dG--}D	F 	$/Va(;VAYGrn   c                  aaaa ^oV P                   P                  oVV3R loV3R loV3R lpV P                  P                  pV! 4        V P	                  VR	,          P
                  R4       VR	,          P                  pS^,          oV! 4        V P	                  VR	,          P
                  R4       V P                  VR	,          P                  V4       VR	,          P                  pS^,          oV! 4        V P	                  VR	,          P
                  R4       V P                  VR	,          P                  V4       VR	,          P                  p\        P                  ! 4       pVP                  V P                  4       \        P                  oV! 4        V P	                  VR	,          P
                  R4       VP                  V P                  4       V P                   P                  oS^,          oV! 4        V P	                  VR	,          P
                  R4       V P                  VR	,          P                  V4       R# )
rq  c                     < S! R S R7       R# r	  r   r	  s   rI   r	  >LoggerTest.test_find_caller_with_stacklevel.<locals>.innermost  r	  rn   c                     < S ! 4        R # r   r   r	  s   rI   rk  :LoggerTest.test_find_caller_with_stacklevel.<locals>.inner  r	  rn   c                     < S ! 4        R # r   r   r	  s   rI   r	  :LoggerTest.test_find_caller_with_stacklevel.<locals>.outer  r	  rn   r	  rk  r	  r	  Nro  )r  r   r  r-  r]   r  r  r  r   r    rC   rN   )	rE   r	  r-  r  r2   rk  r	  r	  r	  s	   &    @@@@rI   r	  +LoggerTest.test_find_caller_with_stacklevel  s   	++%%	2		 ..((--{;##Q	--w772;--v6##Q	--w772;--v6##'')t~~.//--w7!!$..1++%%Q	--/QR72;--v6rn   c                &   R p^pR;p;p;p;p;p;r\         P                  ! WW4WVWxV	4	      p
R\        V
P                  P	                  4       4      ,            F7  pVR/pV P                  \        V P                  P                  WW4WVVWR7       K9  	  R# )	my recordN
some valuer-  sinfo)r=  r	  )	r   _logRecordFactoryrb   __dict__keysr]  r  r  
makeRecord)rE   rG   r  rU  lnor  rR  r,  r  rh	  rvr"  r-  s   &            rI   %test_make_record_with_extra_overwrite0LoggerTest.test_make_record_with_extra_overwrite  s    :>>>S>3>>>4&&tBS'/u> *E"++2B2B2D,EEEC,'Eh(>(> s($)  8 Frn   c                    R p^pR;p;p;p;p;p;rRR/p
V P                   P                  WW4WVWzV	R7	      pV P                  RVP                  4       R# )re	  N	valid_keyrf	  rg	  )r  rl	  r   rj	  )rE   rG   r  rU  rm	  r  rR  r,  r  rh	  r-  rH  s   &           rI   (test_make_record_with_extra_no_overwrite3LoggerTest.test_make_record_with_extra_no_overwrite  sn    :>>>S>3>>>4l+''Rc(0U ( Lk6??3rn   c                   V P                  V P                  P                  4       4       V P                  P                   F  pV P                  P	                  V4       K   	  V P                  V P                  P                  4       4       R # r   )rD   r  r@   rA   rN   ry  r2  s   & rI   r  LoggerTest.test_has_handlers  s\    //12{{++GKK%%g. ,0023rn   c                ~    \         P                  ! R 4      pRVn        V P                  VP	                  4       4       R# )z
blah.childFN)r   r    r  ry  r@   )rE   child_loggers   & rI   test_has_handlers_no_propagate)LoggerTest.test_has_handlers_no_propagate  s1    ((6!&1134rn   c                (   V P                   P                  P                  p^V P                   P                  n        V P                  \        V P                   P                  RV4       V P                  V P                   P                  ^4      4       R# )   rQ   N)r  r!   rQ   r   rc  ry  r  r  s   & rI   r  LoggerTest.test_is_enabled_for  sb    kk))11&(#!4!4iM11"56rn   c                   V P                   P                  pV P                   P                  P                  pR V P                   n        ^V P                   P                  n        V P	                  \
        V P                   RV4       V P	                  \
        V P                   P                  RV4       V P                  V P                   P                  ^4      4       R# )Tr   rQ   N)r  r   r!   rQ   r   rc  ry  r  )rE   old_disabledr  s   &  rI   #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6rn   c                    \         P                  ! 4       pV P                  V\         P                  4       V P                  V\         P                  ! R 4      4       V P                  V\         P                  ! R4      4       V P                  V\         P                  ! R4      4       V P                  V\         P                  ! R4      P                  4       V P                  V\         P                  ! R4      P                  4       V P                  V\         P                  ! R4      P                  4       V P                  V\         P                  ! R4      4       V P                  V\         P                  ! R4      P                  4       R # )Nr   r?  r  rN   )r   r    r  r?  r  r  )rE   r?  s   & rI   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Crn   c                    V P                  \        \        P                  \        4       V P                  \        \        P                  R 4       R# )s   fooN)r]  r3  r   r    anyrq   s   &rI   test_invalid_namesLoggerTest.test_invalid_names  s2    )W%6%6<)W%6%6?rn   c                   \        \        P                  ^,           4       F_  pR FV  p\        P                  ! V4      p\        P
                  ! W14      p\        P                  ! V4      pV P                  WS4       KX  	  Ka  	  R# )rq  N)r   r?  r  rN  zbaz.bar)r  r  HIGHEST_PROTOCOLr   r    rC  r  r  )rE   protorG   r  rk   	unpickleds   &     rI   test_picklingLoggerTest.test_pickling  s^    622Q67EA **40LL/"LLO	i0	 B 8rn   c                v
   V P                   p\        P                  ! R 4      p\        P                  ! R4      pVP                  \        P                  4       V P                  VP                  4       \        P                  4       V P                  VP                  / 4       V P                  VP                  \        P                  4      4       V P                  VP                  \        P                  4      4       V P                  VP                  \        P                  R\        P                  R/4       V P                  VP                  / 4       V P                  VP                  \        P                  4      4       V P                  VP                  / 4       V P                  VP                  \        P                  4      4       V P                  VP                  \        P                  R/4       VP                  \        P                  4       V P                  VP                  4       \        P                  4       V P                  VP                  / 4       V P                  VP                  \        P                  4      4       VP                  \        P                  4       V P                  VP                  4       \        P                  4       V P                  VP                  / 4       V P                  VP                  / 4       V P                  VP                  / 4       V P                  VP                  \        P                  4      4       V P                  VP                  \        P                  4      4       V P                  VP                  \        P                  4      4       V P                  VP                  \        P                  4      4       V P                  VP                  \        P                  4      4       \        P                  ! 4        V P                  VP                  4       \        P                  4       V P                  VP                  / 4       V P                  VP                  / 4       V P                  VP                  / 4       V P                  VP                  \        P                  4      4       V P                  VP                  \        P                  4      4       V P                  VP                  \        P                  4      4       R# )r@  rD  TFN)r2   r   r    r8   r   r]   r3   _cacherD   r  ry  r9   r   r   rQ   )rE   r?  r0   r1   s   &   rI   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+;+;<=rn   )r  r  )ru   rv   rw   rx   rJ   rH	  r  rO	  rR	  rZ	  r	  ro	  rs	  r  ry	  r  r	  r	  r	  r	  r	  rz   r{   r  r  s   @@rI   rB	  rB	  z  se     **B"P2H%7N8445
7
7D@16> 6>rn   rB	  c                   <   a  ] tR tRt o RtR tR tR tR tRt	V t
R# )	BaseFileTesti]  z1Base class for handler tests that write log filesc                `    \         P                  V 4       \        R R4      V n        . V n        R# )r  ztest_logging-2-N)r   rJ   rV  rU  rmfilesrq   s   &rI   rJ   BaseFileTest.setUp`  s$    t ):;rn   c                    V P                    F  p\        P                  ! V4       K  	  \        P                  P	                  V P
                  4      '       d!   \        P                  ! V P
                  4       \        P                  V 4       R # r   )r	  rQ  rt  rz  r{  rU  r   rU   )rE   rU  s   & rI   rU   BaseFileTest.tearDowne  sP    ,,BIIbM 77>>$''""IIdgg$rn   c                    V P                  \        P                  P                  V4      RV,          R7       V P                  P                  V4       R# )z7Assert a log file is there and register it for deletionzLog file %r does not existr  N)rD   rQ  rz  r{  r	  r  )rE   r$  s   &&rI   assertLogFileBaseFileTest.assertLogFilel  s=    x088C 	 	EH%rn   c           
     t    \         P                  ! R \         P                  R^V P                  4       RRR4      # )r  r  N)r   r  r9   rr   rq   s   &rI   next_recBaseFileTest.next_recr  s5      gmmS!!%!2!2!4dD$H 	Hrn   )rU  r	  N)ru   rv   rw   rx   ry   rJ   rU   r	  r	  rz   r{   r|   s   @rI   r	  r	  ]  s#     7
 &H Hrn   r	  c                   ,   a  ] tR tRt o R tR tRtV tR# )FileHandlerTestiv  c                B   \         P                  ! V P                  4       \        P                  ! V P                  R RR7      pV P                  VP                  4       V P                  \         P                  P                  V P                  4      4       VP                  \        P                  ! / 4      4       V P                  VP                  4       V P                  \         P                  P                  V P                  4      4       VP                  4        R# )rf  Trg  N)rQ  rt  rU  r   r  r  r7   ry  rz  r{  rx  r   r  rD   rM   )rE   fhs   & rI   
test_delayFileHandlerTest.test_delayw  s    
		$''  7$G"))$01
		'''+,RYY'tww/0

rn   c                B   \         P                  ! V P                  4       \        P                  ! V P                  R RR7      pVP                  \        P                  ! R4      4       VP                  V P                  4       4       VP                  4        VP                  V P                  4       4       \        V P                  4      ;_uu_ 4       pV P                  VP                  4       P                  4       R4       RRR4       R#   + '       g   i     R# ; i)rf  r  )rh  rz  r  r   N)rQ  rt  rU  r   r  r?   r<   r_  r	  rM   r  r]   rd   rn  )rE   r	  r  s   &  rI   %test_emit_after_closing_in_write_mode5FileHandlerTest.test_emit_after_closing_in_write_mode  s    
		$''  7E
))-89
 


 $'']]bRWWY__.4 ]]]s   /DD	r   N)ru   rv   rw   rx   r	  r	  rz   r{   r|   s   @rI   r	  r	  v  s     	5 	5rn   r	  c                      a  ] tR tRt o R t]P                  ! ]P                  R4      R 4       t	R t
R tRR ltR tR	 tR
 t]P                   ! 4       R 4       tRtV tR# )RotatingFileHandlerTesti  c                   \         P                  P                  V P                  R ^R7      pV P	                  VP                  R4      4       VP                  4        \         P                  P                  V P                  R ^ R7      pV P	                  VP                  R4      4       VP                  4        \        V P                  R4      ;_uu_ 4       pVP                  R4       RRR4       \         P                  P                  V P                  R ^ R7      pV P	                  VP                  R4      4       VP                  4        R#   + '       g   i     Ln; i)rf  rh  maxBytesNr     
)	r   rA   r  rU  ry  shouldRolloverrM   r  r  )rE   rhr   s   &  rI   test_should_not_rollover0RotatingFileHandlerTest.test_should_not_rollover  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   EE	WASI does not have /dev/null.c                    \         P                  P                  \        P                  R ^R7      pV P                  VP                  V P                  4       4      4       VP                  4        R# )rf  r	  N)	r   rA   r  rQ  devnullry  r	  r	  rM   rE   r	  s   & rI   !test_should_not_rollover_non_file9RotatingFileHandlerTest.test_should_not_rollover_non_file  sR    
 11

Wq 2 :**4==?;<

rn   c                p   \        V P                  R 4      ;_uu_ 4       pVP                  R4       RRR4       \        P                  P                  V P                  R^R7      pV P                  VP                  V P                  4       4      4       VP                  4        R#   + '       g   i     L|; i)r  r	  Nrf  r	  )
r  rU  r  r   rA   r  rD   r	  r	  rM   )rE   r   r	  s   &  rI   test_should_rollover,RotatingFileHandlerTest.test_should_rollover  sv    $''4  AGGEN !11$''GVW1X))$--/:;

	 ! s   B%%B5	c                0   \         P                  ! V P                  4       \        P                  P                  V P                  R R7      pVP                  V P                  4       4       V P                  V P                  4       VP                  4        R# )rf  r  N)
rQ  rt  rU  r   rA   r  r_  r	  r	  rM   r	  s   & rI   test_file_created)RotatingFileHandlerTest.test_file_created  s`     			$''11$''G1L
 477#

rn   c           	     j   V'       d   R V/M/ p\         P                  ! V P                  4       \        P                  P
                  ! V P                  3RRR^R^d/VB pV P                  \         P                  P                  V P                  4      V'       * 4       \        P                  ! RR/4      p\        P                  ! RR
/4      pV P                  VP                  V4      4       V P                  VP                  V4      4       VP                  V4       V P                  V P                  4       V P                  \         P                  P                  V P                  R,           4      4       V P                  VP                  V4      4       V P                  VP                  V4      4       VP                  V4       V P                  \         P                  P                  V P                  4      4       V P                  V P                  R,           4       V P                  \         P                  P                  V P                  R,           4      4       V P                  VP                  V4      4       V P                  VP                  V4      4       VP                  4        R	# )ri  rh  rf  backupCountr	  r  r  .1.2Ndbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb)rQ  rt  rU  r   rA   r  r  rz  r{  r   ry  r	  r_  r	  rD   rM   )rE   ri  rS  r	  smalllarges   &&    rI   test_max_bytes&RotatingFileHandlerTest.test_max_bytes  s   %*'5!
		$''11GGN%N34N?B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

rn   c                *    V P                  R R7       R# )T)ri  N)r	  rq   s   &rI   test_max_bytes_delay,RotatingFileHandlerTest.test_max_bytes_delay  s    $'rn   c                   R  p\         P                  P                  V P                  R^^R7      pWn        VP                  V P                  4       4       V P                  V P                  4       V P                  \        P                  P                  V! V P                  R,           4      4      4       VP                  V P                  4       4       V P                  V! V P                  R,           4      4       V P                  \        P                  P                  V! V P                  R,           4      4      4       VP                  V P                  4       4       V P                  V! V P                  R,           4      4       V P                  \        P                  P                  V! V P                  R,           4      4      4       VP                  V P                  4       4       V P                  \        P                  P                  V! V P                  R,           4      4      4       VP                  4        R# )c                     V R ,           # .testr   rE	  s   &rI   namer>RotatingFileHandlerTest.test_rollover_filenames.<locals>.namer  s    '>!rn   rf  rh  r	  r	  r	  r	  .3N)r   rA   r  rU  r	  r_  r	  r	  ry  rQ  rz  r{  rM   )rE   r	  r	  s   &  rI   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(=>?

rn   c                    ! R  R\         P                  P                  4      pV! V P                  R^^R7      pV P	                  VP                  V P                  4      V P                  R,           4       VP                  V P                  4       4       V P                  V P                  4       VP                  V P                  4       4       V P                  VP                  V P                  R,           4      R,           4       V P                  \        P                  P                  VP                  V P                  R,           4      4      4       VP                  4        R# )c                   ,   a  ] tR tRt o R tR tRtV tR# )ZRotatingFileHandlerTest.test_namer_rotator_inheritance.<locals>.HandlerWithNamerAndRotatori  c                    VR ,           # r	  r   )rE   rG   s   &&rI   r	  `RotatingFileHandlerTest.test_namer_rotator_inheritance.<locals>.HandlerWithNamerAndRotator.namer  s    g~%rn   c                    \         P                  P                  V4      '       d    \         P                  ! WR ,           4       R# R# ).rotatedN)rQ  rz  r{  r=  )rE   sourcedests   &&&rI   rotatorbRotatingFileHandlerTest.test_namer_rotator_inheritance.<locals>.HandlerWithNamerAndRotator.rotator  s+    77>>&))JJvj'89 *rn   r   N)ru   rv   rw   rx   r	  r	  rz   r{   r|   s   @rI   HandlerWithNamerAndRotatorr	    s     &: :rn   r	  rf  r	  r	  r	  r	  N)r   rA   r  rU  r]   r	  r_  r	  r	  ry  rQ  rz  r{  rM   )rE   r	  r	  s   &  rI   test_namer_rotator_inheritance6RotatingFileHandlerTest.test_namer_rotator_inheritance  s    	:)9)9)M)M 	: (GGg1qB$''*DGGg,=>
 477#
 288DGGdN3j@A4(@AB

rn   c                   R  pR p\         P                  P                  V P                  R^^R7      pW#n        Wn        V P                  4       pVP                  V4       V P                  V P                  4       V P                  4       pVP                  V4       V! V P                  R,           4      pV P                  V4       \        P                  p\        VR4      ;_uu_ 4       pVP                  4       p	\        P                  ! V	4      p
V P                  V
P!                  R4      VP"                  V,           4       RRR4       VP                  V P                  4       4       V! V P                  R,           4      pV P                  V4       \        VR4      ;_uu_ 4       pVP                  4       p	\        P                  ! V	4      p
V P                  V
P!                  R4      VP"                  V,           4       RRR4       VP                  V P                  4       4       V! V P                  R,           4      p\        VR4      ;_uu_ 4       pVP                  4       p	\        P                  ! V	4      p
V P                  V
P!                  R4      VP"                  V,           4       RRR4       V P%                  \        P&                  P)                  V! V P                  R	,           4      4      4       VP+                  4        R#   + '       g   i     EL; i  + '       g   i     EL); i  + '       g   i     L; i)
c                     V R ,           # )z.gzr   rE	  s   &rI   r	  3RotatingFileHandlerTest.test_rotator.<locals>.namer  s    %<rn   c           	      b   \        V R 4      ;_uu_ 4       pVP                  4       p\        P                  ! V^	4      p\        VR4      ;_uu_ 4       pVP	                  V4       RRR4       RRR4       \
        P                  ! V 4       R#   + '       g   i     L0; i  + '       g   i     L;; i)rbr  N)r  rd   zlibcompressr  rQ  r  )r	  r	  sfr  
compresseddfs   &&    rI   r	  5RotatingFileHandlerTest.test_rotator.<locals>.rotator   sq    fd##rwwy!]]43
$%%HHZ( & $
 IIf &% $#s#   <BB	#BBBB.	rf  r	  r	  r	  rh  Nr	  r	  )r   rA   r  rU  r	  r	  r	  r_  r	  rQ  linesepr  rd   r	  
decompressr]   r  r  ry  rz  r{  rM   )rE   r	  r	  r	  m1m2rU  newliner   r	  r  s   &          rI   test_rotator$RotatingFileHandlerTest.test_rotator  s8   	 	 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L)AL"AL6L	"L3	6M	r   NF)ru   rv   rw   rx   r	  r  r  r   is_wasir	  r	  r	  r	  r	  r	  r	  requires_zlibr	  rz   r{   r|   s   @rI   r	  r	    sj     ( __W__&EF G.(&& * *rn   r	  c                   Z  a  ] tR tRt o ]P
                  ! ]P                  R4      R 4       tR t	RR lt
R tR tR tR	 tR
 tR t]P"                  ! R4      R 4       t]P"                  ! R4      R 4       t]P"                  ! R4      R 4       t]P"                  ! R4      R 4       tRtV tR# )TimedRotatingFileHandlerTesti(  r	  c                $   \         P                  P                  \        P                  R R^R7      p\
        P                  ! R4       \         P                  ! RR/4      pV P                  VP                  V4      4       VP                  4        R# )Srf  rh  r	  皙?r  ztesting - device fileN)r   rA   r  rQ  r	  r  r  r   ry  r	  rM   )rE   r	  r   s   &  rI   r	  5TimedRotatingFileHandlerTest.test_should_not_rollover)  sp     66

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

3!!5*A"BC**1-.

rn   c                   \         P                  P                  V P                  R R^R7      p\         P                  ! R4      pVP                  V4       \         P                  ! RR/4      pVP                  V4       V P                  V P                  4       \        P                  ! R4       \         P                  ! RR/4      pVP                  V4       VP                  4        Rp\        P                  P                  4       pRp\        V4       F  pV\        P                  ! VR	7      ,
          p	V P                  V	P!                  R
4      ,           p
\"        P$                  P'                  V
4      pV'       g   Kl  V P(                  P+                  V
4        M	  RV,          pV'       Eg,   \"        P$                  P-                  V P                  4      w  r\"        P.                  ! V4       Uu. uF  qP1                  V
4      '       g   K  VNK  	  pp\3        RVP!                  R4      ,          \4        P6                  R7       \3        RV,          \4        P6                  R7       V Fj  p\3        RV,          4       \"        P$                  P9                  W4      p\;        VR4      ;_uu_ 4       p\3        VP=                  4       4       RRR4       Kl  	  V P?                  W[R7       R# u upi   + '       g   i     K  ; i)r	  rf  r	  r  r  ztesting - initialr	  ztesting - after delayF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   Nr	  i,  ) r   rA   r  rU  r<   r?   r   r_  r	  r  r  rM   r  r  r  	timedeltastrftimerQ  rz  r{  r	  r  r   listdirrK  r  rr  r  r   r  rd   rD   )rE   r	  r_  r'  r(  foundr  GO_BACKsecsprevrU  r  dnr   filesrz  tfs   &                rI   test_rollover*TimedRotatingFileHandlerTest.test_rollover4  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uWW]]477+FB "

2C1,,r2BQQEC/CLL1D$EECJJW3e;#**M'!+,ww||B*$__"'')$ %_ 
 	' D %__s   5K1K17K66Lc                   \         P                  ! V P                  4       \        P                  P	                  4       pVP                  4       pR VP                  R,          u;8  d   R8  gf   M \
        P                  ! R VP                  R,          ,
          R,          4       \        P                  P	                  4       pVP                  4       pVP                  ^ R7      p\        P                  ! R4      pV'       d   RVP                  4        2MRp\        ^4       F|  p\        P                  P                  V P                  RWSR	7      pVP                  V4       \        P                   ! R
RV 2/4      pVP#                  V4       VP%                  4        K~  	  V P'                  V P                  4       \)        V P                  RR7      ;_uu_ 4       p	\+        V	4       F  w  rjV P-                  RV 2V
4       K  	  RRR4       \.        P0                  ! V P                  VP3                  4       ^,
          3^,          4       \        ^4       F|  p\        P                  P                  V P                  RWSR	7      pVP                  V4       \        P                   ! R
RV 2/4      pVP#                  V4       VP%                  4        K~  	  T\        P4                  ! V'       d   ^M^R7      ,
          pV P                   RVR 2pV P'                  V4       \)        V P                  RR7      ;_uu_ 4       p	\+        V	4       F  w  rjV P-                  RV 2V
4       K  	  RRR4       \)        VRR7      ;_uu_ 4       p	\+        V	4       F  w  rjV P-                  RV 2V
4       K  	  RRR4       R#   + '       g   i     EL; i  + '       g   i     Lm; i  + '       g   i     R# ; i)g?r(  g?g      ?)microsecondr  WMIDNIGHTrf  )rh  whenatTimer  z	testing1 r  Nz	testing2 daysr   z%Y-%m-%d)r   rt  rU  r  r  r  r
  r  r=  r   r<   weekdayr  rA   r  r?   r   r_  rM   r	  r  	enumerater   rQ  utime	timestampr
  )rE   weeklyr  r
  r_  r
  r  r	  r(  r   r1  rolloverDateotherfns   &&           rI   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$   *N>*O
*O%>O	O"	%O6	c                *    V P                  R R7       R# )T)r
  N)r 
  rq   s   &rI   test_rollover_at_weekday5TimedRotatingFileHandlerTest.test_rollover_at_weekday  s    &&d&3rn   c           	     V   V P                   pV! \        \        P                  P                  V P
                  R RRR7       V! \        \        P                  P                  V P
                  RRRR7       V! \        \        P                  P                  V P
                  RRRR7       R# )Xrf  Trg  r
  W7N)r]  r  r   rA   r  rU  )rE   r]  s   & rI   test_invalid)TimedRotatingFileHandlerTest.test_invalid  s    ((Z!1!1!J!JWWcG4	AZ!1!1!J!JWWcG4	AZ!1!1!J!JWWdWD	Brn   c                   ^ p\         P                  P                  V P                  RRRRR7      p VP	                  V4      pV P                  W1R,           4       VP	                  VR,           ^,
          4      pV P                  W1R,           4       VP	                  VR,           4      pV P                  W1R,           4       VP	                  VR,           4      pV P                  W1R,           4       VP                  4        \        P                  ! ^^ ^ 4      p\         P                  P                  V P                  RRRVR7      p VP	                  V4      pV P                  W1R	,           4       VP	                  VR	,           ^,
          4      pV P                  W1R	,           4       VP	                  VR	,           4      pV P                  W1R
,           4       VP	                  VR,           4      pV P                  W1R
,           4       VP                  4        R#   TP                  4        i ; i  TP                  4        i ; i)r?  rf  r
  TNrh  r
  r   r
  Q i  i_   i@ ж  )	r   rA   r  rU  computeRolloverr]   rM   r  r  )rE   currentTimer	  rh   r
  s   &    rI   "test_compute_rollover_daily_attime?TimedRotatingFileHandlerTest.test_compute_rollover_daily_attime  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   C H 	C H0 H-0Ic                   \        \        P                  ! 4       4      pWR ,          ,
          p\        P                  ! ^^ ^ 4      p\        P                  ! V4      P                  p\        ^4       EF8  p\        P                  P                  V P                  RRV,          ^^ RVR7      p WE8  d   ^V,
          V,           pMWT,
          pVR ,          pVR,          pWr,          pVP                  V4      pW8w  d;   \        R\        P                  ,          4       \        R\        4       ,          4       V P                  W4       VP                  VR,           ^,
          4      pW8w  d;   \        R\        P                  ,          4       \        R\        4       ,          4       V P                  W4       WT8X  d
   VR	,          pVP                  VR,           4      pW8w  d;   \        R\        P                  ,          4       \        R\        4       ,          4       V P                  W4       VP                  VR
,           4      pW8w  d;   \        R\        P                  ,          4       \        R\        4       ,          4       V P                  W4       VP                  4        EK;  	  R#   TP                  4        i ; i)r,
  rf  zW%dT)rh  r
  intervalr	  r   r
  zfailed in timezone: %dzlocal vars: %sNr-
  i:	 r.
  )r  r  r  r  tm_wdayr  r   rA   r  rU  r/
  r  timezonelocalsr]   rM   )	rE   r0
  todayr
  wdaydayr	  ri   rh   s	   &        rI   #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   -G,J00Kc           	        \         P                  ! R R7      pV P                  \        P                  V4       . p\
        P
                  P                  4       p\        ^
4       FA  pVP                  VP                  R4      4       V\
        P                  ! ^R7      ,          pKC  	  Rp. p. pV EF  p\        P                  P                  VRV,          4      p	\        P                  P!                  V	R^^R	R
7      p
VP                  V
4       VP#                  R4      '       d$   V F  pVP                  V: RV: 24       K  	  K  VP#                  R4      '       d.   R pWn        V F  pVP                  V: RV: R24       K  	  K  VR8X  g   K  R pWn        V F  pVP                  RV,          4       K  	  EK  	  V F@  p\        P                  P                  W4      p	\'        V	R4      ;_uu_ 4       p RRR4       KB  	  \)        V4       EF  w  rHWt,          p
V
P+                  4       pV P-                  \/        V4      ^V4       VP#                  R4      '       dH   RV,          p	V F6  p\        P                  P1                  V4      w  ppV P3                  W4       K8  	  K  VP#                  R4      '       d   V F  p\        P                  P1                  V4      w  ppV P5                  VR4       V P3                  WR,           4       V P7                  V\/        V4      ^,           ,          P9                  4       4       K  	  EK=  VR8X  g   EKG  V Fo  p\        P                  P1                  V4      w  ppV P5                  VR4       V P3                  VR4       V P7                  V^,          P9                  4       4       Kq  	  EK  	  R#   + '       g   i     EK$  ; i)rg  r5	  %Y-%m-%d_%H-%M-%Sr
  a.bd.er  z%s.logrk   Tr
  r4
  r	  ri  z.log.c                     \         P                  P                  V 4      w  rVP                  R R4      R ,           p\         P                  P	                  W4      # )r  r   )rQ  rz  r   r=  r   r$  r
  basenames   &  rI   r	  HTimedRotatingFileHandlerTest.test_compute_files_to_delete.<locals>.namer  sA    (*h(?%G'//;fDH77<<::rn   r   r  c                     \         P                  P                  V 4      w  rR VR,          ,           R,           p\         P                  P                  W4      # )r  :   NN.oldlog)rQ  rz  r   r   rC
  s   &  rI   r	  rE
    s=    (*h(?%G"Xb\1I=H77<<::rn   z
g%s.oldlogr  Nz%s.log.rH
  )r?
  za.b.cr@
  zd.e.fr  )rO  mkdtempr   shutilrmtreer  r  r  r  r
  r
  rQ  rz  r   r   rA   r  rK  r	  r  r
  getFilesToDeleter]   r^   r   rT  r  rD   isdigit)rE   wdtimesr  r  prefixesr
  rotatorsr   r  r	  r)  r	  rU  r   
candidatesr  r  s   &                 rI   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))"0 $ ""5))#AGGMM!,EAr''F3))"sl;OOBs6{Q$7$?$?$AB	 $
 3#AGGMM!,EAr''I6))"c2OOBqEMMO4	 $! - s   >OO,c           	        \         P                  ! \        P                  ! R R7      4      pV P	                  \
        P                  V4       . p\        P                  P                  4       p^
p\        V4       FA  pVP                  VP                  R4      4       V\        P                  ! ^R7      ,          pKC  	  Rp. p. p\        V4       Fj  w  rV	^,           p\        P                  P!                  W,          R^VRR7      pVP                  V4       V F  pVP                  V
: RV: 24       K  	  Kl  	  V F  pVP                  RV,          4       K  	  V F  pW,          P#                  4        K  	  \        V4       F  w  rV	^,           pW,          pVP%                  4       pV P'                  \)        V4      WK,
          V4       \*        P,                  ! R	4      pV Fe  p\.        P0                  P3                  V4      w  ppV P5                  VV
R,           4       V\)        V
4      ^,           R
 pV P7                  VV4       Kg  	  K  	  R
# )rg  r5	  r>
  r
  rk   TrA
  r   z
a.log.%s.cz&^\d{4}-\d{2}-\d{2}_\d{2}-\d{2}-\d{2}\zN)za.logza.log.b)pathlibPathrO  rI
  r   rJ
  rK
  r  r  r  r  r
  r
  r
  r   rA   r  touchrL
  r]   r^   rX   rY   rQ  rz  r   rT  r  )rE   rN
  rO
  r  n_filesr  rP
  r
  rQ
  r  r   r	  r	  r)  r   rR
  matcherr  r  rU  r^  s   &                    rI   ?test_compute_files_to_delete_same_filename_different_extensions\TimedRotatingFileHandlerTest.test_compute_files_to_delete_same_filename_different_extensions6  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%%b&*5S[],-  1	   -rn   zEST+05EDT,M3.2.0,M11.1.0c                  a a \         P                   pVV 3R  lp\        P                  P                  S P                  RRRR7      oV! V! R^^
^^;^;4      V! R^^^ ^ 4      4       V! V! R^^^ ^ 4      V! R^^^ ^ 4      4       V! V! R^^^^ 4      V! R^^^ ^ 4      4       V! V! R^^^^;^;4      V! R^^^ ^ 4      4       V! V! R^^^ ^ 4      V! R^^^ ^ 4      4       V! V! R^^^^ 4      V! R^^^ ^ 4      4       SP                  4        \        P                  P                  S P                  RRR\         P                  ! ^^ ^ 4      R7      oV! V! R^^
^^;^;4      V! R^^
^^ 4      4       V! V! R^^
^^ 4      V! R^^^^ 4      4       V! V! R^^
^^ 4      V! R^^^^ 4      4       V! V! R^^^^;^;4      V! R^^^^ 4      4       V! V! R^^^^ 4      V! R^^^^ 4      4       V! V! R^^^^ 4      V! R^^^^ 4      4       SP                  4        \        P                  P                  S P                  RRR\         P                  ! ^^ ^ 4      R7      oV! V! R^^
^^;^;4      V! R^^
^^ 4      4       V! V! R^^
^^ 4      V! R^^^^ 4      4       V! V! R^^
^^ 4      V! R^^^^ 4      4       V! V! R^^^^;^;4      V! R^^^^ 4      4       V! V! R^^^^ 4      V! R^^^^ 4      4       V! V! R^^^^ 4      V! R^^^^ 4      4       V! V! R^^^^;^;4      V! R^^^^ 4      4       V! V! R^^^^ 4      V! R^^^^ 4      4       V! V! R^^^^ 4      V! R^^^^ 4      4       V! V! R^^^^;^;4      V! R^^^^ 4      4       V! V! R^^^^;^;^R7      V! R^^^^ 4      4       V! V! R^^^^ 4      V! R^^^^ 4      4       V! V! R^^^^ 4      V! R^^^^ 4      4       SP                  4        \        P                  P                  S P                  RRR\         P                  ! ^^^ 4      R7      oV! V! R^^
^^^;4      V! R^^
^^4      4       V! V! R^^
^^4      V! R^^^^4      4       V! V! R^^
^^ 4      V! R^^^^4      4       V! V! R^^^^;^;4      V! R^^^^4      4       V! V! R^^^^ 4      V! R^^^^4      4       V! V! R^^^^4      V! R^^^^4      4       V! V! R^^^^^;4      V! R^^^^4      4       V! V! R^^^^4      V! R^^^^4      4       V! V! R^^^^ 4      V! R^^^^4      4       SP                  4        \        P                  P                  S P                  RRR\         P                  ! ^^^ 4      R7      oV! V! R^^^^^;4      V! R^^^^4      4       V! V! R^^^^4      V! R^^^^4      4       V! V! R^^^^;^;4      V! R^^^^4      4       V! V! R^^^^ 4      V! R^^^^4      4       V! V! R^^^^4      V! R^^^^4      4       V! V! R^^^^ 4      V! R^^^^4      4       V! V! R^^^^^;4      V! R^^^^4      4       V! V! R^^^^4      V! R^^^^4      4       V! V! R^^^^;^;4      V! R^^^^4      4       V! V! R^^^^ ^R7      V! R^^^^^R7      4       V! V! R^^^^^;^R7      V! R^^^^^R7      4       V! V! R^^^^^R7      V! R^^^^4      4       V! V! R^^^^;^;^R7      V! R^^^^4      4       V! V! R^^^^ 4      V! R^^^^4      4       V! V! R^^^^4      V! R^^^^4      4       SP                  4        R# )	c                    < SP                  V P                  4       4      pW!P                  4       ,
          pV'       d+   SP                  V^ \        P                  ! VR7      4       R# R# r?  r
  Nr/
  r
  r]   r  r
  currentri   rh   diffr	  rE   s   &&  rI   rC  OTimedRotatingFileHandlerTest.test_compute_rollover_MIDNIGHT_local.<locals>.testd  R    ''(9(9(;<F..00D  q(*<*<T*JK rn   rf  r
  Frh  r
  r     r+
  foldNr  r   rA   r  rU  rM   r  rE   DTrC  r	  s   f  @rI   $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%;<

rn   c                  a a \         P                   pVV 3R  lp\        P                  P                  S P                  RRRR7      oV! V! R^^^^;^;4      V! R^^^ ^ 4      4       V! V! R^^^ ^ 4      V! R^^^ ^ 4      4       V! V! R^^^^ 4      V! R^^^ ^ 4      4       V! V! R^
^^^;^;4      V! R^
^^ ^ 4      4       V! V! R^
^^ ^ 4      V! R^^^ ^ 4      4       V! V! R^
^^^ 4      V! R^^^ ^ 4      4       SP                  4        \        P                  P                  S P                  RRR\         P                  ! ^ ^ ^ 4      R7      oV! V! R^^
^^;^;4      V! R^^^ ^ 4      4       V! V! R^^^ ^ 4      V! R^^^ ^ 4      4       V! V! R^^^^ 4      V! R^^^ ^ 4      4       V! V! R^^^^;^;4      V! R^^^ ^ 4      4       V! V! R^^^ ^ 4      V! R^^^ ^ 4      4       V! V! R^^^^ 4      V! R^^^ ^ 4      4       SP                  4        \        P                  P                  S P                  RRR\         P                  ! ^^ ^ 4      R7      oV! V! R^^^^;^;4      V! R^^^^ 4      4       V! V! R^^^^ 4      V! R^^^^ 4      4       V! V! R^^^^ 4      V! R^^^^ 4      4       V! V! R^
^^^;^;4      V! R^
^^^ 4      4       V! V! R^
^^^ 4      V! R^^^^ 4      4       V! V! R^
^^^ 4      V! R^^^^ 4      4       SP                  4        \        P                  P                  S P                  RRR\         P                  ! ^^ ^ 4      R7      oV! V! R^^^^;^;4      V! R^^^^ 4      4       V! V! R^^^^ 4      V! R^^^^ 4      4       V! V! R^^^^ 4      V! R^^^^ 4      4       V! V! R^^^^;^;4      V! R^^^^ 4      4       V! V! R^^^^ 4      V! R^^^^ 4      4       V! V! R^^^^ 4      V! R^^^^ 4      4       V! V! R^
^^^;^;4      V! R^
^^^ 4      4       V! V! R^
^^^ 4      V! R^^^^ 4      4       V! V! R^
^^^ 4      V! R^^^^ 4      4       V! V! R^^^^;^;4      V! R^^^^ 4      4       V! V! R^^^^;^;^R7      V! R^^^^ 4      4       V! V! R^^^^ 4      V! R^^^^ 4      4       V! V! R^^^^ 4      V! R^^^^ 4      4       SP                  4        \        P                  P                  S P                  RRR\         P                  ! ^^^ 4      R7      oV! V! R^^^^^;4      V! R^^^^4      4       V! V! R^^^^4      V! R^^^^4      4       V! V! R^^^^ 4      V! R^^^^4      4       V! V! R^^^^;^;4      V! R^^^^4      4       V! V! R^^^^ 4      V! R^^^^4      4       V! V! R^^^^4      V! R^^^^4      4       V! V! R^
^^^^;4      V! R^
^^^4      4       V! V! R^
^^^4      V! R^^^^4      4       V! V! R^
^^^ 4      V! R^^^^4      4       SP                  4        \        P                  P                  S P                  RRR\         P                  ! ^^^ 4      R7      oV! V! R^^^^^;4      V! R^^^^4      4       V! V! R^^^^4      V! R^^^^4      4       V! V! R^^^^;^;4      V! R^^^^4      4       V! V! R^^^^ 4      V! R^^^^4      4       V! V! R^^^^4      V! R^^^^4      4       V! V! R^^^^ 4      V! R^^^^4      4       V! V! R^^^^^;4      V! R^^^^4      4       V! V! R^^^^4      V! R^^^^4      4       V! V! R^^^^;^;4      V! R^^^^4      4       V! V! R^^^^ ^R7      V! R^^^^^R7      4       V! V! R^^^^^;^R7      V! R^^^^^R7      4       V! V! R^^^^^R7      V! R^^^^4      4       V! V! R^^^^;^;^R7      V! R^^^^4      4       V! V! R^^^^ 4      V! R^^^^4      4       V! V! R^^^^4      V! R^^^^4      4       SP                  4        R# )	c                    < SP                  V P                  4       4      pW!P                  4       ,
          pV'       d+   SP                  V^ \        P                  ! VR7      4       R# R# r_
  r`
  ra
  s   &&  rI   rC  ITimedRotatingFileHandlerTest.test_compute_rollover_W6_local.<locals>.test  re
  rn   rf  W6Frf
  rg
  r+
  rh
  Nrj
  rk
  s   f  @rI   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%<=

rn   c                  a a \         P                   pVV 3R  lp\        P                  P                  S P                  RRR^R7      oV! V! R^^^^;^;4      V! R^^^ ^ 4      4       V! V! R^^	^ ^ 4      V! R^^^ ^ 4      4       V! V! R^^	^^ 4      V! R^^^ ^ 4      4       V! V! R^^
^^;^;4      V! R^^^ ^ 4      4       V! V! R^^^ ^ 4      V! R^^^ ^ 4      4       V! V! R^^^^ 4      V! R^^^ ^ 4      4       V! V! R^^^^;^;4      V! R^^^ ^ 4      4       V! V! R^^^ ^ 4      V! R^^^ ^ 4      4       V! V! R^^^^ 4      V! R^^^ ^ 4      4       V! V! R^^^^;^;4      V! R^^^ ^ 4      4       V! V! R^^^ ^ 4      V! R^^^ ^ 4      4       V! V! R^^^^ 4      V! R^^^ ^ 4      4       SP                  4        \        P                  P                  S P                  RRR^\         P                  ! ^^ ^ 4      R7      oV! V! R^^^^;^;4      V! R^^
^^ 4      4       V! V! R^^^^ 4      V! R^^^^ 4      4       V! V! R^^^^ 4      V! R^^^^ 4      4       V! V! R^^
^^;^;4      V! R^^^^ 4      4       V! V! R^^
^^ 4      V! R^^^^ 4      4       V! V! R^^
^^ 4      V! R^^^^ 4      4       V! V! R^^^^;^;4      V! R^^^^ 4      4       V! V! R^^^^ 4      V! R^^^^ 4      4       V! V! R^^^^ 4      V! R^^^^ 4      4       V! V! R^^^^;^;4      V! R^^^^ 4      4       V! V! R^^^^ 4      V! R^^^^ 4      4       V! V! R^^^^ 4      V! R^^^^ 4      4       SP                  4        R# )c                    < SP                  V P                  4       4      pW!P                  4       ,
          pV'       d+   SP                  V^ \        P                  ! VR7      4       R# R# r_
  r`
  ra
  s   &&  rI   rC  XTimedRotatingFileHandlerTest.test_compute_rollover_MIDNIGHT_local_interval.<locals>.testR  re
  rn   rf  r
  Frh  r
  r   r4
  rg
  rh  r
  r   r4
  r
  Nrj
  rk
  s   f  @rI   -test_compute_rollover_MIDNIGHT_local_intervalJTimedRotatingFileHandlerTest.test_compute_rollover_MIDNIGHT_local_intervalN  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%;<

rn   c                H
  a a \         P                   pVV 3R  lp\        P                  P                  S P                  RRR^R7      oV! V! R^^^^;^;4      V! R^^^ ^ 4      4       V! V! R^^^ ^ 4      V! R^^^ ^ 4      4       V! V! R^^^^ 4      V! R^^^ ^ 4      4       V! V! R^^^^;^;4      V! R^^^ ^ 4      4       V! V! R^^^ ^ 4      V! R^^^ ^ 4      4       V! V! R^^^^ 4      V! R^^^ ^ 4      4       V! V! R^
^^^;^;4      V! R^
^^ ^ 4      4       V! V! R^
^^ ^ 4      V! R^^^ ^ 4      4       V! V! R^
^^^ 4      V! R^^^ ^ 4      4       V! V! R^
^^^;^;4      V! R^^^ ^ 4      4       V! V! R^
^^ ^ 4      V! R^^^ ^ 4      4       V! V! R^
^^^ 4      V! R^^^ ^ 4      4       SP                  4        \        P                  P                  S P                  RRR^\         P                  ! ^ ^ ^ 4      R7      oV! V! R^^^^;^;4      V! R^^^ ^ 4      4       V! V! R^^^ ^ 4      V! R^^^ ^ 4      4       V! V! R^^^^ 4      V! R^^^ ^ 4      4       V! V! R^^
^^;^;4      V! R^^^ ^ 4      4       V! V! R^^^ ^ 4      V! R^^^ ^ 4      4       V! V! R^^^^ 4      V! R^^^ ^ 4      4       V! V! R^
^^^;^;4      V! R^^^ ^ 4      4       V! V! R^
^^ ^ 4      V! R^^^ ^ 4      4       V! V! R^
^^^ 4      V! R^^^ ^ 4      4       V! V! R^^^^;^;4      V! R^^^ ^ 4      4       V! V! R^^^ ^ 4      V! R^^^ ^ 4      4       V! V! R^^^^ 4      V! R^^^ ^ 4      4       SP                  4        \        P                  P                  S P                  RRR^\         P                  ! ^^ ^ 4      R7      oV! V! R^^^^;^;4      V! R^^^^ 4      4       V! V! R^^^^ 4      V! R^^^^ 4      4       V! V! R^^^^ 4      V! R^^^^ 4      4       V! V! R^^^^;^;4      V! R^^^^ 4      4       V! V! R^^^^ 4      V! R^^^^ 4      4       V! V! R^^^^ 4      V! R^^^^ 4      4       V! V! R^
^^^;^;4      V! R^
^^^ 4      4       V! V! R^
^^^ 4      V! R^^^^ 4      4       V! V! R^
^^^ 4      V! R^^^^ 4      4       V! V! R^
^^^;^;4      V! R^^^^ 4      4       V! V! R^
^^^ 4      V! R^^^^ 4      4       V! V! R^
^^^ 4      V! R^^^^ 4      4       SP                  4        R# )c                    < SP                  V P                  4       4      pW!P                  4       ,
          pV'       d+   SP                  V^ \        P                  ! VR7      4       R# R# r_
  r`
  ra
  s   &&  rI   rC  RTimedRotatingFileHandlerTest.test_compute_rollover_W6_local_interval.<locals>.test  re
  rn   rf  rr
  Frx
  rg
  ry
  Nrj
  rk
  s   f  @rI   'test_compute_rollover_W6_local_intervalDTimedRotatingFileHandlerTest.test_compute_rollover_W6_local_interval  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&=>

rn   r   Nr	  )ru   rv   rw   rx   r  r  r   r	  r	  r
  r 
  r#
  r(
  r1
  r;
  rS
  r[
  run_with_tzrm
  rs
  rz
  r
  rz   r{   r|   s   @rI   r	  r	  (  s     __W__&EF G((T)5V4B%P4l@5D&2T 34k 5k^ 34y 5yz 34. 5.d 34B 5Brn   r	  c                  f    \         P                  ! R/ V B \         P                  ! ^R7      ,          # )rq  r
  r   )r  r
  )r  s   ,rI   r

  r

    s&    ##x'9'9!'DDDrn   W0)r
  hoursc           	         \         P                  P                  V P                  R W^ RR7      pRpVP	                  V4      pVP                  R4      '       d#   V\        ^V^,
          ,          R7      ,          pMW2,          pW68w  Ed   VR8X  Edy    VP                  '       d   \        P                  ! V4      pM\        P                  ! V4      pV^,          pV^,          p	V^,          p
\         P                  P                  V^<,          V	,           ^<,          V
,           ,
          pW[,           p\        RV: RVP                  : R	2\        P                  R
7       \        RV,          \        P                  R
7       \        RV	,          \        P                  R
7       \        RV
,          \        P                  R
7       \        RV,          \        P                  R
7       \        RV,          \        P                  R
7       V P!                  W64       VP#                  4        R#   \         d-   p\        RT,          \        P                  R
7        Rp?LURp?ii ; i)rf  T)rh  r
  r4
  r	  r   r  r
  r
  r
  zt: z ()r
  zcurrentHour: %szcurrentMinute: %szcurrentSecond: %szr: %sz
result: %sz exception in diagnostic code: %sN)r   rA   r  rU  r/
  rK  r

  r   r  r  	localtime	_MIDNIGHTr  rr  r  r  r]   rM   )rE   r
  r4
  expr	  r0
  rh   r)  currentHourcurrentMinutecurrentSecondr   rH  ra  s   &&&&          rI   test_compute_rolloverr
    s   !!::'UV\` ; bBK''4Fs##tHQJ00} :%W666 $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VWs   H- %E%H- -I$8"II$ztest_compute_rollover_%s	_intervalz>win32evtlog/win32evtlogutil/pywintypes required for this test.c                   &   a  ] tR tRt o R tRtV tR# )NTEventLogHandlerTesti  c                   R p\         P                  ! RV4      p\         P                  ! V4      p \        P                  P                  R4      p\        P                  ! RR/4      pTP                  T4       TP                  4        T P                  T\         P                  ! T4      4       \         P                  \         P                   ,          pRp^dp	\         P"                  ! Y'T	4      p
T
 F7  pTP$                  R8w  d   K  \&        P(                  ! YQ4      pTR8w  d   K5  Rp M	  R	T	,          pT P+                  YR
7       R#   \        P                   d.   pTP                  ^8X  d   \        P                  ! R4      hh Rp?ii ; i)ApplicationNtest_loggingz#Insufficient privileges to run testr  zTest Log MessageFzTest Log Message
Tz3Record not found in event log, went back %d recordsr	  )win32evtlogOpenEventLogGetNumberOfEventLogRecordsr   rA   NTEventLogHandler
pywintypesr   winerrorr  SkipTestr   rx  rM   
assertLessEVENTLOG_BACKWARDS_READEVENTLOG_SEQUENTIAL_READReadEventLog
SourceNamewin32evtlogutilSafeFormatMessagerD   )rE   logtypeelhnum_recsrT   ra  r   flagsr
  r	
  rN  r  s   &           rI   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   E	 	F(FFr   N)ru   rv   rw   rx   r  rz   r{   r|   s   @rI   r
  r
    s     ( (rn   r
  c                   &   a  ] tR tRt o R tRtV tR# )MiscTestCasei#  c                H    0 Rmp\         P                  ! V \        VR7       R# )r;  )not_exportedN>   r?  r  Filtererr  
RootLoggerr;  PlaceHolderrd  currentframer<  StrFormatStyler=  r"  r\  )r   check__all__r   )rE   r
  s   & rI   test__all__MiscTestCase.test__all__$  s    ,
 	T7Frn   r   N)ru   rv   rw   rx   r
  rz   r{   r|   s   @rI   r
  r
  #  s     G Grn   r
  c                  \    \         P                  ! \        P                  ! R R4      4       R# )LC_ALLr   N)r  enterModuleContextr   run_with_localer   rn   rI   setUpModuler
  0  s     7 7" EFrn   __main__r   r	  )r	  rq  )M<   )Hi  )Dr,
  )r
  r,
  )rq  r  )ry   r   logging.handlerslogging.configr:  r  r%   r  rV
  r  r5   r  r&  rB  rQ  rp  r  rX   rJ
  r  r  rr  rO  test.support.script_helperr   r   rC  r   test.supportr   r   r   r   r	   r
   r   test.support.logging_helperr   r  r  rK  r  r  rJ  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  rv  r  r:   r  r  r  r  r  r8  rE  rf  ry  r  r  r  r   r  r  r  r<   r  r  r  rv  r"  r  r  r  r  r  IPV6_ENABLEDr  r  r  r1  rC  r[  r]  rc  re  rA   r  ri  rq  rk  rm  r{  r  r  r  r  r  r&  r>  r  rW  rY  rl  r  r  r
  r  tzinfor  r   r  r  rF  r6  rA  rO  rX  ra  rW  rS  rt  r  r  rY  r  r   r  r8	  r	  rB	  r	  r	  r	  r	  r

  r
  r
  r4
  r
  rG   ru   rc  r
  r
  r
  mainr   rn   rI   <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H2( H2V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( 	  ",,.U1 U1 / #U1n 
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  G?X G?T89( 9.&h &>	w(( 	 8  F ,,.zPx zP /zPx 7_--#002]&H ]& 3 ]&@ !(//  
e. .`SH%%'9 `SF&W77 &GX.. G&@H @,$;X $;N	 	$w** $T/8 T/nx/( x/vK8H K8\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 [_  6155K5/J6
  		s$   ^5 %_	 5__	__