+
    Bi                       ^ 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I/H0t0 ^ RI1H2t2H3t3 ^ RI4H5t5H6t6H7t7H8t8  ^ RI9t9^ RI:t:^ RI;t; ^ RI=t=])P|                  ! ]P~                  R4      t@])P|                  ! ]P                  ! RR7      R4      tB ! R R])P                  4      tD ! R R]D4      tE ! R R]D4      tF^xtG^wtH^vtI^utJ^ttK^stL^rtM^qtN^ptO^otP]Q! ]P]G^,           4      tR]GR]HR]IR]JR]KR]LR]MR ]NR!]OR"]PR#/
tS ! R$ R%] P                  4      tU ! R& R'] P                  4      tV ! R( R)]D4      tWR* tX ! R+ R,]D4      tY ! R- R.]Z4      t[ ! R/ R0] P                  4      t] ! R1 R2]Z4      t^ ! R3 R4]D4      t_ ! R5 R6]"P                  4      ta ! R7 R8]Z4      tb ! R9 R:]b]-4      tc ! R; R<]b]74      td ! R= R>]b]54      te]f! ]R?4      '       d    ! R@ RA]d4      tg ! RB RC]e4      th]P                  ! 4       ]P                  ! 4        ! RD RE]D4      4       4       tk ! RF RG]D4      tl ! RH RI] P                  4      tnRJ to ! RK RL]D4      tp]P                  ! 4       ]P                  ! 4        ! RM RN]D4      4       4       tq])P                  ! ]f! ]R?4      RO4       ! RP RQ]q4      4       ts]P                  ! 4       ]P                  ! 4        ! RR RS]D4      4       4       tt])P                  ! ]f! ]R?4      RO4       ! RT RU]t4      4       tu]P                  ! 4       ]P                  ! 4        ! RV RW]D4      4       4       tv])P                  ! ]f! ]R?4      RO4       ! RX RY]v4      4       tw])P                  ! ]P                  RZ4       ! R[ R\]v4      4       ty]P                  ! 4       ]P                  ! 4        ! R] R^]D4      4       4       tz ! R_ R`]D4      t{ ! Ra Rb]D4      t| ! Rc Rd]D4      t}RRe lt~ ! Rf Rg4      tRh 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]D4      t ! R{ R|]D4      t ! R} R~]D4      t ! R R] EP                   4      t ! R R]D4      t]P                  ! 4        ! R R]D4      4       t]f! ] EP                  R4      '       d/   ^ RIt^ RI/H0t0 ]B]P                  ! 4        ! R R]D4      4       4       t]EP,                  ! ^ 4      t ! R R]EP0                  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]D4      t ! R R]D4      t ! R R4      t ! R R] EPF                  4      t ! R R]D4      t ! R R]D4      t ! R R]D4      t ! R R])P                  4      t ! R R])P                  4      t ! R R] EPT                  4      t ! R R4      t ! R R] EPT                  4      t ! R R]D]4      t ! R R]D4      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                  ! ]9R4       ! R R]D4      4       t ! R R])P                  4      tR t]R8X  d   ])EP|                  ! 4        R# R#   ]< d    R;t9;t:t; ELi ; i  ]< d     ELi ; i)    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                   H   a  ] tR t^Zt o RtRt^ tR tR tR	R lt	R t
RtV tR# )
BaseTestz&%(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)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)r   r   N)r8   closer3   removeHandlerr<   rB   r9   r5   r    r$   r-   clearupdater.   r+   r,   r%   r'   r)   r(   r!   r"   disabler#   r*   r/   r   
doCleanupsr	   threading_cleanupr   )rF   hr"   r#   r/   rH   s   &     rJ   tearDownBaseTest.tearDown   s    	&&t~~6'''  ))!,A**1-GGI!!$"="=>]]]  &&(  ''(@(@A  &&(  ''(@(@A##%$$T%8%89&*&=&=G  #'')11GGO ++Jd001 ..M** &28E8KD&&t,5 + $ 	**D,?,?@' ]s   #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# )z*Log line does not match expected pattern:
z'Remaining output at end of log stream:
N)r8   recompileexpected_log_patgetvalue
splitlinesassertEquallenzipsearchfailtuplegroupsread)	rF   expected_valuesr8   patactual_linesactualexpectedmatchss	   &&&&     rJ   assert_log_linesBaseTest.assert_log_lines   s     &&4;;jj55 5 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                   ,          # )   z%d)message_numrF   s   &rJ   next_messageBaseTest.next_message   s&     	Ad&&&&ro   )r   r1   r2   r/   r5   r?   r<   r3   r)   r'   r.   r*   r,   r8   NN)__name__
__module____qualname____firstlineno__r>   r[   rr   rK   rV   rm   rt   __static_attributes____classdictcell____classdict__s   @rJ   r   r   Z   s3      :J4K%4NA>F$' 'ro   r   c                   J   a  ] tR t^t o R tR tR tR tR tR t	R t
RtV tR	# )
BuiltinLevelsTestc                   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   r:   11)rt   r    r!   r9   r   LoggerAdapterr   r:   logr   errorwarninginfodebugrm   )rF   mr   r   r   s   &    rJ   	test_flatBuiltinLevelsTest.test_flat   sr   &W]]###G$5$5e$<bAW\\"&W]]# 	  !#&		!#  !#&		!#AC  !#&		!#AC		!# 	AC		!#		!# 
 	ro   c                   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   rt   r    r!   r9   r   r   r   r   r   r   r   r   rm   )rF   r   r   INF_ERRs   &   rJ   test_nested_explicit&BuiltinLevelsTest.test_nested_explicit   s    &W\\"$$Y/' 	G$$ac*ac 	QSac(%
 	ro   c                   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   )rF   r   r   r   	INF_UNDEFINF_ERR_UNDEFr   s   &      rJ   test_nested_inherited'BuiltinLevelsTest.test_nested_inherited
  s>   &W\\"$$Y/'%%k2	))/:!!'* 	g&&,!#qs'**AC0AC  	ac"13AC  
 	ro   c                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   )
rt   r    r!   r9   r   r   FATALr   r   rm   )rF   r   r   
GRANDCHILDCHILDs   &    rJ   test_nested_with_virtual_parent1BuiltinLevelsTest.test_nested_with_virtual_parent-  s    &&&'<=
!!/2W\\" 	w}}ac*		'--%

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

%&**,.BC**,.>?ro   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   "rJ   r  dCustomLevelsAndFiltersTest.test_logging_filter_replaces_record.<locals>.RecordingFilter.__annotate__  s     ) )W%6%6 )ro   c                d   < SP                  \        V4      4       \        P                  ! V4      # r   )addidr&   )rF   r   recordss   &&rJ   r   ^CustomLevelsAndFiltersTest.test_logging_filter_replaces_record.<locals>.RecordingFilter.filter  s"    BvJ'yy((ro   r   Nr   )r~   r.  s   @rJ   RecordingFilterr(    s     ) ) )ro   r0  r  r  N)
setr    r   r!   r9   r   r   r   r^   r_   )rF   r0  r  r.  s   &  @rJ   #test_logging_filter_replaces_record>CustomLevelsAndFiltersTest.test_logging_filter_replaces_record  s~    %	)gnn 	)
 ""8,%*+*+ECL)ro   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   )r3   r9   VERBOSEr  rm   rs   s   &rJ   test_logger_filter-CustomLevelsAndFiltersTest.test_logger_filter  s=    !!'*t//0 
 	ro   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)r   N)r6  r7  r8  r9  r:  )r3   rB   r9   r   r  rm   r    r   rs   s   &rJ   test_handler_filter.CustomLevelsAndFiltersTest.test_handler_filter  s    !!!$--h7	B""4#3#34!! #  %%a(11'..AD%%a(11'..As   .B <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)r3   rB   r   r   r  rm   r   r   )rF   r   specific_filtergarrfirst_liness   &    rJ   test_specific_filters0CustomLevelsAndFiltersTest.test_specific_filters&  s     ""++A. $!	'""4#3#34K !!+.02O&&7""4#3#34!!+ 
1
 
#
 
   --o>  &   --o>  &s   B
C< C< <6D2r   N)rw   rx   ry   rz   r[   rK   r  r$  r2  r<  r?  rK  r{   r|   r}   s   @rJ   r  r    s7     
 3'
1@8*"B (' ('ro   r  c                  b    \         P                  ! V / VB w  r#\        P                  ! V4       V# r   )tempfilemkstemposrN   )argskwargsfdfns   *,  rJ   make_temp_filerU  Q  s)    t.v.FBHHRLIro   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    HandlerrH   r^   assertRaisesNotImplementedErroremitrF   rU   s   & rJ   	test_nameHandlerTest.test_nameX  s\    OO+!!12-qvvt<ro   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rc  androidrd  )TF)GETPOSTrj  )sysplatformrU  rP  unlinkr    rB   WatchedFileHandlerdevinor^   r   handleassertFalsepathexistsrE   rN   SysLogHandlerfacilityLOG_USER
unixsocketOSErrorr\  
ValueErrorHTTPHandlerBufferingHandlershouldFlush)	rF   existingrT  rU   ru  rv  r   socknamemethods	   &        rJ   test_builtin_handlers!HandlerTest.test_builtin_handlers`  s|    <<99)#%IIbM$$77WTX7Y uuaee$$S"-$$S"---ufo>AHHQKIIbM$$RWW^^B%78HHQKOOBGGNN2$67$$QUUB/$$QUUB/	8IIbM- *. ||x',%$$228<  QZZ8-	 -F!!*g.>.>.J.J"-vv? $$00ffM	 - --a0!!"%a()		--a0q)*		  s    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# )warU   rg  re  Nrl  )rU  rP  rs  r   FakePathr    FileHandlerrB   RotatingFileHandlerTimedRotatingFileHandlerrq  rr  rt  rE   ry  rz  rN   )rF   rT  pfncasesclsrQ  rU   s   &      rJ   test_pathlike_objects!HandlerTest.test_pathlike_objects  s     
		"  $((3*5%%99C:F%%>>c
K
 <<99w''::S#JGIIEICT,G,AOOBGGNN2./GGIIIbM	 ro   ntz/WatchedFileHandler not appropriate for Windows.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)	rangerP  rs  timedeletion_timer  sleeprandomrandint)fnametries_rF   s   && rJ   remove_loop*HandlerTest.test_race.<locals>.remove_loop  sb    5\IIe$)-D& 

56>>!Q#778 "  s   0A99BB  NT.logztest_logging-3-targetrQ  re  rf  z'%(asctime)s: %(levelname)s: %(message)s{Gzt?r  testingzDeleted at z, opened at FT)handle_timer  rU  	threadingThreaddaemonstartr    rB   rt  r=   r@   r  r  r  r   rw  	Exceptionprintr   rN   rP  ry  rz  rs  )rF   r  	del_count	log_countrh  rT  removerrU   r   r  r   s   f          rJ   	test_raceHandlerTest.test_race  s   
	9 		!"E(9:B&&kYPG!GNMMO  33BPU3VA!!"KLANN1"y)AJJu%--ui.ABA+/99;( * 	77>>"%%IIbM &/ # % 040B0B040@0@B C 	 	77>>"%%IIbM &s%   &<F.#+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)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wtre  rg  r8   N)super__init__r    r;   opensub_handlerrF   	__class__s   &rJ   r  JHandlerTest.test_post_fork_child_no_deadlock.<locals>._OurHandler.__init__  s.     "#*#8#8TGD$F ro   c                    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   &&rJ   r^  FHandlerTest.test_post_fork_child_no_deadlock.<locals>._OurHandler.emit  s7    %%***$$))&1 +***s   AA	)r  	rw   rx   ry   rz   r  r^  r{   r|   __classcell__r  r~   s   @@rJ   _OurHandlerr    s     F
2 2ro   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   rJ   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  rH   z#Child process did not deadlock. \o/z&Parent process returned from fork. \o/)exitcodeN)r    r[  r^   r_   r%   r   r  r8   rN   rH   assertGreater_at_fork_reinit_lock_weaksetr!   rD   r9   r:   r  Eventr  r  r  rP  forkr   _exitr1  r   r   wait_process)	rF   r  test_loggerr  lock_holder_threadpidr  r  r  s	   &     @@@rJ   r  ,HandlerTest.test_post_fork_child_no_deadlock  s   	2'// 	2 	W../3-++22889C3w001153wCCDaH''(JKw'W]]+$-OO$5!6?oo6G3	F$ '--,CE 	  "!&&(ggi!8  !GH FG7;;=##%  q1 s   "H H.)r  r  N)rw   rx   ry   rz   r`  r  r  unittestskipIfrP  rH   r	   requires_working_threadingr   requires_resourcer  requires_forkskip_if_asan_forkskip_if_tsan_forkr  r{   r|   r}   s   @rJ   rW  rW  W  s     =3j, __RWW_&WX002z*)" + 3 Y)"^ 002>2   3 >2ro   rW  c                   &   a  ] tR tRt o R tRtV tR# )	BadStreami"  c                    \        R 4      h)deliberate mistake)RuntimeError)rF   datas   &&rJ   writeBadStream.write#  s    /00ro   r   N)rw   rx   ry   rz   r  r{   r|   r}   s   @rJ   r  r  "  s     1 1ro   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   &&rJ   handleErrorTestStreamHandler.handleError'  s    "ro   r  N)rw   rx   ry   rz   r  r{   r|   r}   s   @rJ   r  r  &  s     # #ro   r  c                   2    ] tR tRt]P
                  t^tRtR# )StreamWithIntNamei*  r   N)	rw   rx   ry   rz   r    r   levelrH   r{   r   ro   rJ   r  r  *  s    NNEDro   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   raiseExceptionsrw  assertIsr  r;   r   captured_stderrassertInr\   r^   )rF   rU   r   	old_raisestderrr  s   &     rJ   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 # r   )	r    r;   r6   r7   	setStreamr  rq  r  assertIsNone)rF   rU   r8   oldri   s   &    rJ   test_stream_setting%StreamHandlerTest.test_stream_settingE  ss     !!#kk&!c3::&S!f%S!&!ro   c                x    \         P                  ! \        4       4      pV P                  \	        V4      R 4       R# )z<StreamHandler 2 (NOTSET)>N)r    r;   r  r^   reprr_  s   & rJ   'test_can_represent_stream_with_int_name9StreamHandlerTest.test_can_represent_stream_with_int_nameS  s+    !!"3"56a">?ro   r   N)	rw   rx   ry   rz   r  r  r  r{   r|   r}   s   @rJ   r  r  .  s     0,"@ @ro   r  c                   >   a  ] tR tRt o R tR tR tR tR tRt	V t
R# )	TestSMTPServeriZ  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)rF   addrr   r  sockmaps   &&&&&rJ   r  TestSMTPServer.__init__o  sV    !!$d.2 	" 	4KK++-a0	
*ro   c                *    V P                  WW44       R # r   )r  )rF   peermailfromrcpttosr  s   &&&&&rJ   process_messageTestSMTPServer.process_messagex  s     	dg4ro   c                    \         P                  ! V P                  V P                  3R 7      ;V n        pRVn        VP                  4        R# r  TNr  r  serve_foreverr  r  r  r  rF   ts   & rJ   r  TestSMTPServer.start  C     %++43E3E262D2D1FH 	Hq		ro   c                r    V P                   '       g%   \        P                  ! WP                  ^R7       K6  R# )rq   )r  countN)r  r   loop_map)rF   r  s   &&rJ   r'  TestSMTPServer.serve_forever  s$     ***MM-YYa@ ro   c                    R V n         \        P                  ! V P                  4       RV n        V P	                  4        \
        P                  ! V P                  R R7       R# )TN)r  
ignore_all)r  r	   join_threadr  rN   r   	close_allr/  rs   s   &rJ   stopTestSMTPServer.stop  sA    
 
$$T\\2

tyyT:ro   )r  r  r  r  r  N)rw   rx   ry   rz   r  r"  r  r'  r5  r{   r|   r}   s   @rJ   r  r  Z  s$     *+
5	A	; 	;ro   r  c                   D   a a ] tR tRt oR tR tV 3R ltR tRtVt	V ;t
# )ControlMixini  c                `    R V n         W n        Wn        \        P                  ! 4       V n        R # r   )r  r  r  r  r  ready)rF   r   r  s   &&&rJ   r  ControlMixin.__init__  s"    *__&
ro   c                    \         P                  ! V P                  V P                  3R 7      ;V n        pRVn        VP                  4        R# r%  r&  r(  s   & rJ   r  ControlMixin.start  r+  ro   c                b   < V P                   P                  4        \        \        V `  V4       R # r   )r:  r1  r  r8  r'  )rF   r  r  s   &&rJ   r'  ControlMixin.serve_forever  s"    
 	

lD/>ro   c                    V P                  4        V P                  e(   \        P                  ! V P                  4       R V n        V P	                  4        V P
                  P                  4        R # r   )shutdownr  r	   r3  server_closer:  rP   rs   s   &rJ   r5  ControlMixin.stop  sL     	<<#((6DL

ro   )r  r  r  r:  )rw   rx   ry   rz   r  r  r'  r5  r{   r|   r  r  s   @@rJ   r8  r8    s      '?	 	ro   r8  c                   0   a  ] tR tRt o RR ltR tRtV tR# )TestHTTPServeri  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)rF   rH   defaults   &&&rJ   __getattr__ITestHTTPServer.__init__.<locals>.DelegatingHTTPRequestHandler.__getattr__  s(    ??5))///$T**ro   c                <    V P                   P                  V 4       R # r   serverr  rs   s   &rJ   rL  MTestHTTPServer.__init__.<locals>.DelegatingHTTPRequestHandler.process_request      $$T*ro   c                B   < S'       d   \         SV `   ! V.VO5!   R # R # r   )r  log_message)rF   r  rQ  DelegatingHTTPRequestHandlerr  r   s   &&*rJ   rW  ITestHTTPServer.__init__.<locals>.DelegatingHTTPRequestHandler.log_message  s1    6, +,,2;59; ro   r   r   )
rw   rx   ry   rz   rO  rL  rW  r{   r|   r  )r  r~   rX  r   s   @@rJ   rX  rH    s     +
+; ;ro   rX  N)r   r   r  r8  sslctx)rF   r  r   r  r   rZ  rX  s   &&&&f&@rJ   r  TestHTTPServer.__init__  s=    	; 	;+A 	; 	D(DEd];ro   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  rq  r  r  )rF   sockr  es   &   rJ   get_requestTestHTTPServer.get_request  st    	++-JD{{{{{..t.F
 z	  	JJ2Q67	s   AA B'BBrZ  )r  FN)rw   rx   ry   rz   r  rb  r{   r|   r}   s   @rJ   rE  rE    s     &	 	ro   rE  c                   D   a a ] tR tRt oRtRtRR ltV 3R ltRtVt	V ;t
# )TestTCPServeri  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  rs   s   &rJ   rw  BTestTCPServer.__init__.<locals>.DelegatingTCPRequestHandler.handle  rU  ro   r   N)rw   rx   ry   rz   rw  r{   r|   r}   s   @rJ   DelegatingTCPRequestHandlerri    s     + +ro   rl  N)r   r   r  r8  )rF   r  r   r  bind_and_activaterl  s   &&&&& rJ   r  TestTCPServer.__init__  s7    	+*> 	+ 	##D0K$5	7d];ro   c                x   < \         \        V `  4        V P                  P	                  4       ^,          V n        R# rq   N)r  rf  server_bindr  r  r  r  s   &rJ   rq  TestTCPServer.server_bind  )    mT.0KK++-a0	ro   )r  r  T)rw   rx   ry   rz   allow_reuse_addressallow_reuse_portr  rq  r{   r|   r  r  s   @@rJ   rf  rf    s"      <1 1ro   rf  c                   H   a a ] tR tRt oRR ltV 3R ltV 3R ltRtVtV ;t	# )TestUDPServeri  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  rs   s   &rJ   rw  BTestUDPServer.__init__.<locals>.DelegatingUDPRequestHandler.handle4  rU  ro   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)rF   r  DelegatingUDPRequestHandlerr  s   & rJ   r  BTestUDPServer.__init__.<locals>.DelegatingUDPRequestHandler.finish7  sY    zz**,"94GI  # "#{{222!  3"s   7 &A#A#"A#r   )	rw   rx   ry   rz   rw  r  r{   r|   r  )r  r~   r  s   @@rJ   r  r{  2  s     +" "ro   r  FN)r   r   r  r8  r  )rF   r  r   r  rm  r  s   &&&&&@rJ   r  TestUDPServer.__init__0  sA    	"*@ 	" 	##D$?$5	7 	d];ro   c                x   < \         \        V `  4        V P                  P	                  4       ^,          V n        R# rp  )r  rx  rq  r  r  r  r  s   &rJ   rq  TestUDPServer.server_bindF  rs  ro   c                :   < \         \        V `  4        R V n        R# )TN)r  rx  rB  r  r  s   &rJ   rB  TestUDPServer.server_closeJ  s    mT/1ro   )r  r  rt  )
rw   rx   ry   rz   r  rq  rB  r{   r|   r  r  s   @@rJ   rx  rx    s     ",1 ro   rx  AF_UNIXc                   .    ] tR tRt]P
                  tRtR# )TestUnixStreamServeriO  r   Nrw   rx   ry   rz   r  r  address_familyr{   r   ro   rJ   r  r  O      ro   r  c                   .    ] tR tRt]P
                  tRtR# )TestUnixDatagramServeriR  r   Nr  r   ro   rJ   r  r  R  r  ro   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    rB   SMTPHandlerTIMEOUTr^   toaddrsmessagesr   r  r  handledrw  r  r5  rE   is_setr_   r  assertEndsWithrN   )
rF   r  rS  r  rU   r   r  r   r!  r  s
   &         rJ   
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		ro   c                p    V P                   P                  V4       V P                  P                  4        R # r   )r  appendr  r1  )rF   rQ  s   &*rJ   r"  SMTPHandlerTest.process_messageu  s$    T"ro   )r  r  N)rw   rx   ry   rz   r   LONG_TIMEOUTr  r  r"  r{   r|   r}   s   @rJ   r  r  W  s!      ""G0 ro   r  c                   p   a  ] tR tRt o RtR tR tR tR tR t	]
P                  ! 4       R 4       tR	tV tR
# )MemoryHandlerTestiy  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   rK   r    rB   MemoryHandlerr   r<   mem_hdlrr!   
mem_logger	propagaterD   rs   s   &rJ   rK   MemoryHandlerTest.setUp  sj    t((66r7??7;~~G!++E2$%!""4==1ro   c                d    V P                   P                  4        \        P                  V 4       R # r   )r  rN   r   rV   rs   s   &rJ   rV   MemoryHandlerTest.tearDown       $ro   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 )r:   N)r:   r   r   r   )r   r   )      )r  r   rt   rm   r   r   r  str)rF   linesnis   &   rJ   
test_flushMemoryHandlerTest.test_flush  sR    	d//12b!T..01b! 1 1 34

 	e$A1X%%d&7&7&9: !!%( OO!!$"3"3"56aR8HI8H1gs1v.8HIIE!!%(  	d//12e$	 Js   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# )r:   FNr  r  )r  r   rt   rm   r   rO   r  rN   r    rB   r  r   r<   rD   rF   r  s   & rJ   test_flush_on_close%MemoryHandlerTest.test_flush_on_close  sa    	d//12b!T..01b!%%dmm4
 	e$((66r7??7;~~7<> 	""4==1d//12e$T..01e$%%dmm4e$ro   c                   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# )handlerListFNr  r  )r  r   rt   rm   r   r    rA  weakrefrefr  rB   r  r   r<   rD   r  s   & rJ   test_shutdown_flush_on_close.MemoryHandlerTest.test_shutdown_flush_on_close  s]   
 	d//12b!T..01b!goo&9&9$--&H%IJ
 	e$((66r7??7;~~7<> 	""4==1d//12e$T..01e$goo&9&9$--&H%IJe$ro   c                    ! 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)rF   r  s   &&rJ   r  cMemoryHandlerTest.test_race_between_set_target_and_flush.<locals>.MockRaceConditionHandler.__init__  s     (!ro   c                <    V P                   P                  R 4       R # r   )r  	setTargetrs   s   &rJ   removeTargetgMemoryHandlerTest.test_race_between_set_target_and_flush.<locals>.MockRaceConditionHandler.removeTarget  s    ''-ro   c                    \         P                  ! V P                  R 7      pV P                  P	                  V4       VP                  4        R# ))r  N)r  r  r  r  r  r  )rF   r  r   s   && rJ   rw  aMemoryHandlerTest.test_race_between_set_target_and_flush.<locals>.MockRaceConditionHandler.handle  s3    "))1B1BC##F+ro   r  N)	rw   rx   ry   rz   r  r  rw  r{   r|   r}   s   @rJ   MockRaceConditionHandlerr    s     ". ro   r  r  znot flushedflushedN)r  r  r  r  r  r  r   r   r  r	   r3  )rF   r  r  r  r   s   &    rJ   &test_race_between_set_target_and_flush8MemoryHandlerTest.test_race_between_set_target_and_flush  s    	 	 *$--8		5MM##F+2Y

5!$$]3''	2 
 !.. ,,V4 )&.. ,,V4 )s   A9C +C-)r  r  N)rw   rx   ry   rz   r[   rK   rV   r  r  r  r	   r  r  r{   r|   r}   s   @rJ   r  r  y  sC     
 32 %8%<%: 0025 35ro   r  c                   &   a  ] tR tRt o R tRtV tR# )ExceptionFormatteri  c                6    R V^ ,          P                   ,          # )z
Got a [%s])rw   )rF   eis   &&rJ   formatException"ExceptionFormatter.formatException  s    benn,,ro   r   N)rw   rx   ry   rz   r  r{   r|   r}   s   @rJ   r  r    s     - -ro   r  c                 R    V P                  4        \        P                  ! V4       R # r   rN   rP  remove)rU   rT  s   &&rJ   closeFileHandlerr    s    GGIIIbMro   c                   Z  a  ] tR tRt o ]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  ^(\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# )rg  re  N)r6   r7   textwrapdedentr    config
fileConfig)rF   confrR  files   &&, rJ   apply_configConfigFileTest.apply_config"  s5    {{8??401!!$CCFCro   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   rt   r   rm   rF   outputr  s   &  rJ   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  r6   r7   r  r  r  configparserConfigParser	read_filer    r  r  r!   r   rt   r   rm   )rF   r  r  cpr  s   &    rJ   test_config0_using_cp_ok'ConfigFileTest.test_config0_using_cp_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   rt   r   rm   rF   r  r  r  s   &&  rJ   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  config2rs   s   &rJ   test_config2_failure#ConfigFileTest.test_config2_failureV      )T%6%6Ero   c                \    V P                  \        V P                  V P                  4       R # r   r\  r  r  config3rs   s   &rJ   test_config3_failure#ConfigFileTest.test_config3_failureZ  r  ro   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  	exceptionrq  stdoutseekr^   r\   rm   r  s   &  rJ   test_config4_okConfigFileTest.test_config4_ok^  s    $$&&&dll+&&(F2"n$ 2!!.12JJOOAV__.AC !!"% '&&&s*   1C
A!A>;C=A>>ACC,	c                >    V P                  V P                  R 7       R# r  N)r  config5rs   s   &rJ   test_config5_okConfigFileTest.test_config5_okm      DLL1ro   c                >    V P                  V P                  R 7       R# r"  )r  config6rs   s   &rJ   test_config6_okConfigFileTest.test_config6_okp  r'  ro   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   rt   r   criticalrm   config7rx  r   rF   r  r  
hyphenateds   &   rJ   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\\)rN  N)check_no_resource_warningrU  rP  rH   replaceconfig8r  r  r    rootrB   r   r  )rF   rT  r=  r   s   &   rJ   test_config8_okConfigFileTest.test_config8_ok  s    ++--(9:B ww$ZZf-ll))2)6Gg&g& . ,,''*('26 .-s   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>  rB   	formatterr  r   r^   )rF   rF  results   &  rJ   test_config9_okConfigFileTest.test_config9_ok  s    $,,'LL))!,66	!!'"7"7"HI!78!!'"7"7FM=9#; <!67ro   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!   rx  r   rE   rF   r  s   & rJ   test_logger_disabling$ConfigFileTest.test_logger_disabling  s    $++,""#9:)$++,($++eL)ro   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!   rB   rH   )rF   test_configs   & rJ   test_config_set_handler_names,ConfigFileTest.test_config_set_handler_names  sC    ( 	+&**,55a8==wGro   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)	r6   r7   r  r  r\  r  r    r  r  )rF   rS  r  s   &  rJ   'test_exception_if_confg_file_is_invalid6ConfigFileTest.test_exception_if_confg_file_is_invalid  s>    . {{8??;78,(A(A4Hro   c                    \         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)
rN  rO  rP  rN   r\  r  r    r  r  r  )rF   rS  rT  s   &  rJ   %test_exception_if_confg_file_is_empty4ConfigFileTest.test_exception_if_confg_file_is_empty  sH    !!vF
,(A(A2F
		"ro   c                d    V P                  \        \        P                  P                  R 4       R# )filenotfoundN)r\  FileNotFoundErrorr    r  r  rs   s   &rJ   ,test_exception_if_config_file_does_not_exist;ConfigFileTest.test_exception_if_config_file_does_not_exist  s    +W^^-F-FWro   c                   \         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)at  
            [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\  asciire  FrY  r  z5%(asctime)s [%(process)d] [%(levelname)s] %(message)sdatefmtz[%Y-%m-%d %H:%M:%S %z]classzlogging.Formatter)versionrL  
formatters)rg  defaultsN)r  r  striprN  rO  rP  r  encoderN   r    r  r  dictrs  )rF   inirS  rT  s   &   rJ   !test_defaults_do_no_interpolation0ConfigFileTest.test_defaults_do_no_interpolation  s    oo  & ' 	( !!H	HHRG,-HHRLNN%% -2!$&]%'?#%8$ 
 &   IIbMBIIbMs    A1C	 	C!r   N)(rw   rx   ry   rz   r
   r;  r[   r  config1r1  r<  r  r  r  r$  r)  r3  r=  rE  rM  r  r  r   r  r  r  r  r%  r*  r6  r?  rH  rO  rT  rW  r^  rc  rq  r{   r|   r}   s   @rJ   r  r    s     !0 I I,G4G@H@ oolL9G oo/1LMG* +*+G6 oo35RSG'GT#GLG,G2L*D&&$ &- &FF&22)&V7$8*H0I6X* *ro   r  c                   F   a  ] tR tRt o ]tR	tR tR tR t	R t
R tRtV tR# )
SocketHandlerTesti,  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N{Gz?rk  r   )r   rK   rS  	sock_hdlrserver_exceptionserver_classaddresshandle_socketr  r  r:  r  r    rB   SocketHandler
isinstanceserver_addressrc   r  
log_outputr3   rO   rD   r  	Semaphorer  rF   rS  ra  hclss   &   rJ   rK   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r   )ry  r3   rO   rN   rS  r5  r   rV   rs   s   &rJ   rV   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)rF   requestconnchunkslenobjr   s   &&     rJ   r}  SocketHandlerTest.handle_socketZ  s    !!IIaLE5zA~==u-a0DIIdOEe*t#		$U*; <<,,u%C**3/FOOvzzD00OLL  "ro   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  rN  s   & rJ   test_outputSocketHandlerTest.test_outputi  s|       MM$//0""5)VV.9ro   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  r3   r  r   r  r  	retryTimer  )rF   nows   & rJ   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rk  r   )rw   rx   ry   rz   rf  r{  r|  rK   rV   r}  r  r  r{   r|   r}   s   @rJ   ru  ru  ,  s/      !LG.4	$#	:+ +ro   ru  zUnix sockets requiredc                   H   a  ] tR tRt o ]! ]R4      '       d   ]tR tRt	V t
R# )UnixSocketHandlerTesti  r  c                    \         P                  ! 4       V n        V P                  \        P
                  V P                  4       \        P                  V 4       R # r   )r   create_unix_domain_namer|  r   r   rs  ru  rK   rs   s   &rJ   rK   UnixSocketHandlerTest.setUp  8    $<<>	(($,,7%ro   r|  N)rw   rx   ry   rz   hasattrr  r  r{  rK   r{   r|   r}   s   @rJ   r  r    s#     
 vy!!+& &ro   r  c                   @   a  ] tR tRt o ]tRtR tR tR t	R t
RtV tR# )	DatagramHandlerTesti  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rw  )r   rK   rS  ry  rz  r{  r|  handle_datagramr  r  r:  r  r    rB   DatagramHandlerr  r  rc   r  r  r3   rO   rD   r  r  r  r  s   &   rJ   rK   DatagramHandlerTest.setUp  s)    	t?CCCdnt'<	#'#4#4T\\595I5I4$Q QDK&LLN 	//f++U33!+v{{;DN!&"7"7>DN&&t'7'7'@'@'CD##DNN3 (  	$%!	s   >E- -F	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r   )rS  r5  ry  r3   rO   rN   r   rV   rs   s   &rJ   rV   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  )rF   r  r  r  r  r   s   &&    rJ   r  #DatagramHandlerTest.handle_datagram  sk    {{4#D	
+ll6"&&s+6::,,ro   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  rP   r^   r  rN  s   & rJ   r  DatagramHandlerTest.test_output  s       MM$//0""5)VV.9ro   r  Nr  )rw   rx   ry   rz   rx  r{  r|  rK   rV   r  r  r{   r|   r}   s   @rJ   r  r    s*      !LG)4	$
: 
:ro   r  c                   H   a  ] tR tRt o ]! ]R4      '       d   ]tR tRt	V t
R# )UnixDatagramHandlerTesti  r  c                    \         P                  ! 4       V n        V P                  \        P
                  V P                  4       \        P                  V 4       R # r   )r   r  r|  r   r   rs  r  rK   rs   s   &rJ   rK   UnixDatagramHandlerTest.setUp  s8    $<<>	(($,,7!!$'ro   r  Nrw   rx   ry   rz   r  r  r  r{  rK   r{   r|   r}   s   @rJ   r  r    s#     
 vy!!-( (ro   r  c                   b   a  ] tR tRt o ]tRtR tR tR t	R t
R t]! R4      R 4       tR	tV tR
# )SysLogHandlerTesti  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)Nrx  ro   )r   rK   rS  sl_hdlrrz  r{  r|  r  r  r  r:  r  r    rB   r{  r  r  rc   r  r  r3   rO   rD   r  r  r  r  s   &   rJ   rK   SysLogHandlerTest.setUp  s5    	t=AAAdlT%:	#'#4#4T\\595I5I4$Q QDK&LLN 	--f++U33!6!6q!96;; GHDL 5 56DL&&t'7'7'@'@'CD##DLL1 (  	$%!	s   >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r   )rS  r5  r  r3   rO   rN   r   rV   rs   s   &rJ   rV   SysLogHandlerTest.tearDown	  sn    	${{{  "|||  ..t||<""$d#Hd#r  c                \    VP                   V n        V P                  P                  4        R # r   )r  r  r  r1  )rF   r  s   &&rJ   r  !SysLogHandlerTest.handle_datagram  s    !..ro   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  rP   r  
append_nulidentrN  s   & rJ   r  SysLogHandlerTest.test_output  s      MM$//0""5)Y'../*@A"'Y'../*<=&Y'../*GHro   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  rN   r  rP   r   r  r   r  r^   r  rN  s   & rJ   test_udp_reconnection'SysLogHandlerTest.test_udp_reconnection+  sk    ""5)Y'../*@Aro   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)rk  )r|  socktyper  N)rk  i  )return_valuer  r  connectside_effectr\  r    rB   r{  SOCK_STREAMrN   assert_called)rF   mock_socketinstance_mock_socks   && rJ   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  )rw   rx   ry   rz   rx  r{  r|  rK   rV   r  r  r  r   r  r{   r|   r}   s   @rJ   r  r    sE      !LG)4	$I&B ?	1 	1ro   r  c                   H   a  ] tR tRt o ]! ]R4      '       d   ]tR tRt	V t
R# )UnixSysLogHandlerTesti?  r  c                    \         P                  ! 4       V n        V P                  \        P
                  V P                  4       \        P                  V 4       R # r   )r   r  r|  r   r   rs  r  rK   rs   s   &rJ   rK   UnixSysLogHandlerTest.setUpG  r  ro   r  Nr  r}   s   @rJ   r  r  ?  s#     
 vy!!-& &ro   r  z$IPv6 support required for this test.c                   F   a a ] tR tRt o]tRtV 3R ltV 3R ltRt	Vt
V ;t# )IPv6SysLogHandlerTestiM  c                j   < \         P                  V P                  n        \        \
        V `  4        R # r   )r  AF_INET6r{  r  r  r  rK   r  s   &rJ   rK   IPv6SysLogHandlerTest.setUpV  s#    +1??(#T02ro   c                j   < \         P                  V P                  n        \        \
        V `  4        R # r   )r  AF_INETr{  r  r  r  rV   r  s   &rJ   rV   IPv6SysLogHandlerTest.tearDownZ  s#    +1>>(#T35ro   r   )z::1r   )rw   rx   ry   rz   rx  r{  r|  rK   rV   r{   r|   r  r  s   @@rJ   r  r  M  s       !LG36 6ro   r  c                   2   a  ] tR tRt o R tR tR tRtV tR# )HTTPHandlerTesti^  c                d    \         P                  V 4       \        P                  ! 4       V n        R # r   )r   rK   r  r  r  rs   s   &rJ   rK   HTTPHandlerTest.setUpc  s     	t (ro   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)rp  zContent-LengthN)commandr   ry  log_dataintheadersrfilere   	post_datasend_responseend_headersr  r1  )rF   r  rlens   && rJ   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credentialsro  r  zHTTP request timed outre  rH   funcNamer  r  r  r  )foobar)ro  rp  )*r    r!   r3   rO   rB   sslrP  ry  dirname__file__r   
SSLContextPROTOCOL_TLS_SERVERload_cert_chaincreate_default_contextImportErrorrE  r  rS  r  r:  r  server_portr  h_hdlrr  rD   r  r  rP   r   r   SHORT_TIMEOUTrE   r^   r  r   queryr  decoder5  rN   )rF   r  r3   r  r  r	  herelocalhost_certrZ  r  rS  hostsecure_clientr  r  r  ds   &                rJ   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)	rw   rx   ry   rz   rK   r  r  r{   r|   r}   s   @rJ   r  r  ^  s     
)6  6 ro   r  c                   8   a  ] tR tRt o R tR tR tR tRtV t	R# )
MemoryTesti  c                >    \         P                  V 4       / V n        R # r   )r   rK   
_survivorsrs   s   &rJ   rK   MemoryTest.setUp  s    tro   c                    V F<  p\        V4      \        V4      3p\        P                  ! V4      V P                  V&   K>  	  R # r   )r-  r  r  r  r  )rF   rQ  r  keys   &*  rJ   _watch_for_survivalMemoryTest._watch_for_survival  s7     CS'49$C#*;;s#3DOOC  ro   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 # )Nz;%d objects should have survived but have been destroyed: %sz, )gccollectr  r  r  rb   r_   r   )rF   deadid_repr_r  s   &    rJ   _assertTruesurvivalMemoryTest._assertTruesurvival  sy     	

!%!6!6!8LS#u}E" "9 II .14TDIIdO0LM N ro   c                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  r:   r   )r  r:   r   )r3   r9   r    r   r!   r#  r:   r   rt   rm   r+  )rF   r  r  s   &  rJ   test_persistent_loggers"MemoryTest.test_persistent_loggers  s     	!!',,/&  %W]]#t0023		$##%&!
 	   "&		$##%&!!
 	ro   )r  N)
rw   rx   ry   rz   rK   r#  r+  r.  r{   r|   r}   s   @rJ   r  r    s     
4
N ro   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)rB  r  ztest_logging-1-u   foore  r  N)r    r!   rU  r  rD   r   rO   rN   r  r^   re   rstriprP  ry  isfiler  )rF   r   rT  r  r   r   s   &     rJ   test_encoding_plain_file%EncodingTest.test_encoding_plain_file  s   'F$56	))"w?GNN7# D!!!'*R'*A  !2D9	ww~~b!!		" " !!'* 	ww~~b!!		" "s;   )E	 D !.E	 .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)rB  u   до свиданияcp1251stricts    
N)r    r!   codecs	getwriterrg  r6   BytesIOr;   rD   r   rO   rN   r\   r^   )rF   r   messagewriter_classr8   writerr   rl   s   &       rJ   test_encoding_cyrillic_unicode+EncodingTest.test_encoding_cyrillic_unicode  s    'Q''1 (fh/''/w	KK g&MMOOOJK g&MMOs   <C #C5r   N)rw   rx   ry   rz   r5  r@  r{   r|   r}   s   @rJ   r1  r1    s     2L Lro   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UserWarningr6   r7   r;   r!   rD   warnrO   r\   rN   r  findshowwarningr^   )rF   r8   rU   r  rl   a_files   &     rJ   test_warningsWarningsTest.test_warnings	  s&   $$&&##D)OOG33U;##H{C[[]F%%f-A&&}5Fa MM./  #!AGGIqvv&IJAN [[]F  [*b!'7!ALLNQDF) '&&&s   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^   rB   rQ  rN  r_   assertIsInstanceNullHandlerrN  s   & rJ   test_warnings_no_handlers&WarningsTest.test_warnings_no_handlers,	  s    $$&&##D)OOG33U; &&}5FV__b1  [*bIS115!!&//!"4g6I6IJ '&&&s   CDD	r   N)rw   rx   ry   rz   rS  rX  r{   r|   r}   s   @rJ   rC  rC  	  s     F0K Kro   rC  c                 .    \         P                  ! W4      # r   )r    r=   )r  rh  s   &&rJ   
formatFuncr[  :	  s    V--ro   c                   *   a  ] tR tRt o RR ltRtV tR# )myCustomFormatteri=	  Nc                    R # r   r   )rF   fmtrh  s   &&&rJ   r  myCustomFormatter.__init__>	      ro   r   r   )rw   rx   ry   rz   r  r{   r|   r}   s   @rJ   r]  r]  =	  s      ro   r]  c                  ,    \         P                  ! 4       # r   )r    r;   r   ro   rJ   handlerFuncrc  A	  s      ""ro   c                       ] tR tRtRtR# )CustomHandleriD	  r   Nrw   rx   ry   rz   r{   r   ro   rJ   re  re  D	      ro   re  c                       ] tR tRtRtR# )CustomListeneriG	  r   Nrf  r   ro   rJ   ri  ri  G	  rg  ro   ri  c                       ] tR tRtRtR# )CustomQueueiJ	  r   Nrf  r   ro   rJ   rk  rk  J	  rg  ro   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)rF   maxsizes   &&rJ   r  CustomQueueProtocol.__init__N	  s    [[)
ro   c                D    \         P                  V R 4      p\        W!4      # rp  )object__getattribute__r0   )rF   	attributerp  s   && rJ   rO  CustomQueueProtocol.__getattr__Q	  s    ''g6u((ro   ru  N)r   )rw   rx   ry   rz   r  rO  r{   r|   r}   s   @rJ   rm  rm  M	  s     *) )ro   rm  c                   &   a  ] tR tRt o R tRtV tR# )CustomQueueFakeProtocoliU	  c                    R # r   r   rs   s   &rJ   
put_nowait"CustomQueueFakeProtocol.put_nowait]	  ra  ro   r   N)rw   rx   ry   rz   r}  r{   r|   r}   s   @rJ   r{  r{  U	  s      ro   r{  c                       ] tR tRtRtRtR# )CustomQueueWrongProtocoli`	  Nr   )rw   rx   ry   rz   r}  r{   r   ro   rJ   r  r  `	  s    Jro   r  c                   ,   a  ] tR tRt o R tR tRtV tR# )MinimalQueueProtocolic	  c                    R # r   r   )rF   xs   &&rJ   r}  MinimalQueueProtocol.put_nowaitd	  s    Tro   c                    R # r   r   rs   s   &rJ   getMinimalQueueProtocol.gete	  s    4ro   r   N)rw   rx   ry   rz   r}  r  r{   r|   r}   s   @rJ   r  r  c	  s     !ro   r  c                  ,    \         P                  ! 4       # r   ro  r   ro   rJ   
queueMakerr  g	  s    ;;=ro   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  rB   rR  r  s   &*,rJ   funclistenerMaker.<locals>.funck	  s*    13HIe9h9&99ro   r   )arg1arg2r  r  s   &&f rJ   listenerMakerr  j	  s    : Kro   c                     a  ] tR tRt o ]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//R/R	R
RRRRRRR//RR0RR	R1/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R0RR	R1/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R0RR	R1/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R2R3R4R5R6///RRRRR	.//tR^RRRR7R8R9R:///RR	R
RRRRRRR//RRRRR	.//t  ! R; R<]!PD                  4      t#R^RR=R]#R>R?R@RARRBR2RCRD///RR	R
RRR=RRRR//RRRRR	.//t$R^RRER
RRR/RFR
RGRH^RIRERRRJRK//RRLRRRRF.RMRN///t%R^RRORRPR>RQ//RRRR
RRRRRO/RSR
RGRH^RRORIRRRR//RRLRRRRS.RMRN///t&R^RRR] R,           RRRTR&//RR	R
RRRRRRR//RRURRRR	.RMRN///t'R^RRR
] R,           RRRTR&//RR	R
RRRRRRR//RRURRRR	.RMRN///t(R^RRR
] RV,           RRRTR&//RR	R
RRRRRRR//RRURRRR	.RMRN///t)R^RRR]RRRTR&//RR	R
RRRRRRR//RRURRRR	.RMRN///t*R^RRR]RRWR8R9RX///RR	R
RRRRRRR//RRURRRR	.RMRN///t+R^RRYR
RZ/R[R
R\RRY.//RRRRR[.//t, ! R] R^]!PZ                  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//t/R_ t0R` t1Ra t2]3Rb lt3Rc 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 tIRRz ltJ]KP                  ! 4       R{ 4       tM]KP                  ! 4       R| 4       tN]KP                  ! 4       R} 4       tOR~ tPR tQR tRR tSR tTR tUR tVR tWR tXR tYR tZR t[R t\R t]R t^]_P                  ! 4       ]KP                  ! 4       R 4       4       tbR tc]_P                  ! 4       ]KP                  ! 4       ]d! R4      R 4       4       4       te]d! R4      R 4       tf]g]KP                  ! 4       ]hP                  ! ]KP                  R4      R 4       4       4       tk]g]KP                  ! 4       ]hP                  ! ]KP                  R4      R 4       4       4       tl]mR 4       tn]g]KP                  ! 4       R 4       4       toR tpR tqR trRtsV ttRy# )ConfigDictTestip	  r  rj  rk  form1r  z%(levelname)s ++ %(message)srB   rR  ri  logging.StreamHandlerrF  r  r   r8   zext://sys.stdoutr>  r   loggersr  r:   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.  rL  FcompilerTincrementalr   filtersfilt1rH   true_formattershandler_configszcfg://true_formatterszcfg://handler_configs[hand1]r   r  r  
terminator!
z%(message)s ++ %(customfield)srl  rC  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  rF   r   r  s   &&rJ   r  %ConfigDictTest.CustomFormatter.format  s    7>&))ro   r   )	rw   rx   ry   rz   custom_propertyr  r{   r|   r  r  s   @@rJ   CustomFormatterr    s     	* 	*ro   r  customstyle{rh  %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  )rF   strmr  s   &&rJ   r  -ConfigDictTest.DeprecatedStrmHandler.__init__  s    GD)ro   r   r   rw   rx   ry   rz   r  r{   r|   r  r  s   @@rJ   DeprecatedStrmHandlerr    s     	* 	*ro   r  c                D    \         P                  P                  V4       R # r   )r    r  
dictConfig)rF   r  s   &&rJ   r  ConfigDictTest.apply_config  s    !!$'ro   c                T    \         P                  ! V4      pV P                  W24       R # r   )r    getHandlerByNamerV  )rF   rH   r  rU   s   &&& rJ   check_handlerConfigDictTest.check_handler  s     $$T*a%ro   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)rR  r  Nr  )r   r  r  r  r  r    r;   r!   r   rt   r   rm   r  s   &  rJ   r  ConfigDictTest.test_config0_ok  s    $$&&&dll+w(=(=>&&(FKK))+,LL**,-!!# "  !!"% '&&&s   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   &&  rJ   r  ConfigDictTest.test_config1_ok
  r
  r  c                \    V P                  \        V P                  V P                  4       R # r   r  rs   s   &rJ   r  #ConfigDictTest.test_config2_failure  r  ro   c                \    V P                  \        V P                  V P                  4       R # r   )r\  r  r  config2ars   s   &rJ   test_config2a_failure$ConfigDictTest.test_config2a_failure      )T%6%6Fro   c                \    V P                  \        V P                  V P                  4       R # r   )r\  r  r  config2brs   s   &rJ   test_config2b_failure$ConfigDictTest.test_config2b_failure!  r  ro   c                \    V P                  \        V P                  V P                  4       R # r   r  rs   s   &rJ   r  #ConfigDictTest.test_config3_failure%  r  ro   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)rR  r  r  N)r   r  r  r  r  r    r;   r  r  rq  r  r  r^   r\   rm   rF   r  s   & rJ   r  ConfigDictTest.test_config4_ok)  s    $$&&&dll+w(=(=>2"n$ 2!!.12JJOOAV__.AC !!"% '&&&s*   <C&
A%%!B	C&B		AC&&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  rq  r  r  r^   r\   rm   r  s   & rJ   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#  rR  N)r  r$  r  re  rs   s   &rJ   r%  ConfigDictTest.test_config5_okH  s'    DLL17M2ro   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)rF   r  s   & rJ   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)  rs   s   &rJ   test_config6_failure#ConfigDictTest.test_config6_failureU  s    )T%6%6Ero   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  NrR  r.  r  r  r   r   r   r   )r   r  r  rs  r    r!   r   rt   r   rm   r3  r  r;   rE   r   r  s   &  rJ   r6  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  NrR  r.  r  r  )r  r  r   r   r   r   )r   r  r  rs  r    r!   r   rt   r   rm   r=  r  r;   rx  r   r  s   &  rJ   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)rR  r  r-  r  Nr.  r/  r0  )r   r  r  r1  r  r    r;   r!   r   rt   r   r2  rm   config8arx  r   r4  s   &   rJ   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)rR  r  r  Nr  )r   r  r  rE  r  r    r;   r!   r   rt   rm   config9aconfig9br  s   &  rJ   test_config_9_okConfigDictTest.test_config_9_ok  s   $$&&&dll+w(=(=>&&'89FKK))+,!!"V!4dmm,KK))+,!!"V!4dmm,KK))+,!!# "  '&&&s   D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	rR  r  r  r.  zcompiler.parser.codegenr  N)r   r   r  )r   r  r  config10r  r    r;   r!   r   rt   r   rm   r  s   &  rJ   test_config_10_ok ConfigDictTest.test_config_10_ok  s   $$&&&dmm,w(=(=>&&'89FNN4,,./&&z2FNN4,,./&&'78FNN4,,./&&'@AFLL**,-!! #  "  '&&&s   D%EE	c                <    V P                  V P                  4       R # r   )r  config11rs   s   &rJ   test_config11_okConfigDictTest.test_config11_ok  s    T]]+ro   c                \    V P                  \        V P                  V P                  4       R # r   )r\  r  r  config12rs   s   &rJ   test_config12_failure$ConfigDictTest.test_config12_failure      )T%6%6Fro   c                \    V P                  \        V P                  V P                  4       R # r   )r\  r  r  config13rs   s   &rJ   test_config13_failure$ConfigDictTest.test_config13_failure  r  ro   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)rR  r  r  ExclamationzExclamation!
N)r   r  r  config14r    r%   r^   r  r  r   r  r\   )rF   r  rU   s   &  rJ   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  r9  rj  rB   r  ri  r  filenamerg  re  r>  N)r;  rU  r  r    r>  rB   r   r  )rF   rT  r  r   s   &   rJ   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# )rR  r  HellorC  rD  zHello ++ customvaluezHello ++ defaultvalueN)r  config16r    r%   rF  r  r   r^   )rF   rU   rG  s   &  rJ   test_config16_okConfigDictTest.test_config16_ok  s    $--(g& ##G$9$9G]M:%< =!78 ##G$9$9G% !89ro   c                    V P                  V P                  4       \        P                  R ,          pV P	                  VP
                  P                  R4       R# )rR  r  N)r  config17r    r%   r^   rF  r  r_  s   & rJ   test_config17_okConfigDictTest.test_config17_ok%  s>    $--(g&44g>ro   c                    V P                  V P                  4       \        P                  ! R 4      P                  ^ ,          pV P                  VP                  \        P                  4       R# )r  N)r  config18r    r!   rB   r^   r  r   rF   r   s   & rJ   test_config18_okConfigDictTest.test_config18_ok*  sI    $--(##J/88;++W]];ro   Nc                   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)re  g       @rk  r  N)rn  r    r  listenr  r:  r  r  rP   r  r  r  
settimeoutr  r  r  r_   sendrN   stopListeningr	   r3  )rF   textverifyr)  r  r`  r  rl   	sentsofarleftsents   &&&        rJ   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   rt   r   rm   r  s   &  rJ   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  rs  r    r!   r   rt   r   rm   r  s   &  rJ   test_listen_config_1_ok&ConfigDictTest.test_listen_config_1_ok`  s    $$&&&##HOON4J4J$KL&&'89FKK))+,LL**,-!!#  " 
 !!"% '&&&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   &rJ   verify_fail6ConfigDictTest.test_listen_verify.<locals>.verify_failr  s    ro   c                     V R R R1,          # )Nrn  r   rK  s   &rJ   verify_reverse9ConfigDictTest.test_listen_verify.<locals>.verify_reverseu  s    2;ro   r  Nr  r  )rg   r  r  r  r  rn  r  r   )r    r!   r  r  r  rs  r   r  r?  r   rt   r   rm   )rF   rM  rP  r  to_sendr  s   &     rJ   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_formatrs   s   &rJ   test_bad_formatConfigDictTest.test_bad_format  s    *d&7&7Iro   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}rk  r  r  r  r  r  N)r&   deepcopyrV  r  r    r!   rB   rV  r  r[  rF  _styleStringTemplateStyler^   sortedgetHandlerNamesrF   r  r   s   &  rJ   !test_bad_format_with_dollar_style0ConfigDictTest.test_bad_format_with_dollar_style  s    t/>m|01(;&!##J/88;gnngoo>g//66%99	; 7 7 9:(,7	9ro   c                    V P                  V P                  4       \        P                  ! R 4      P                  ^ ,          pV P                  VP                  \        4       R# r  N)r  custom_formatter_class_validater    r!   rB   rV  rF  r  r2  s   & rJ   )test_custom_formatter_class_with_validate8ConfigDictTest.test_custom_formatter_class_with_validate  sJ    $>>?##$EFOOPQRg//1CDro   c                    V P                  V P                  4       \        P                  ! R 4      P                  ^ ,          pV P                  VP                  \        4       R# rc  )r   custom_formatter_class_validate2r    r!   rB   rV  rF  r  r2  s   & rJ   *test_custom_formatter_class_with_validate29ConfigDictTest.test_custom_formatter_class_with_validate2  sJ    $??@##$EFOOPQRg//1CDro   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  rk  r  r  r  N)	rd  r&   r  r    r!   rB   rV  rF  r  r_  s   &  rJ   9test_custom_formatter_class_with_validate2_with_wrong_fmtHConfigDictTest.test_custom_formatter_class_with_validate2_with_wrong_fmt  sn    55::<14|W%g. 	&!##$EFOOPQRg//1CDro   c                \    V P                  \        V P                  V P                  4       R # r   )r\  r  r   custom_formatter_class_validate3rs   s   &rJ   *test_custom_formatter_class_with_validate39ConfigDictTest.test_custom_formatter_class_with_validate3  s     *d&7&79^9^_ro   c                \    V P                  \        V P                  V P                  4       R # r   )r\  r  r  custom_formatter_with_functionrs   s   &rJ   ,test_custom_formatter_function_with_validate;ConfigDictTest.test_custom_formatter_function_with_validate       *d&7&79\9\]ro   c                \    V P                  \        V P                  V P                  4       R # r   )r\  r  r  custom_formatter_with_defaultsrs   s   &rJ   ,test_custom_formatter_function_with_defaults;ConfigDictTest.test_custom_formatter_function_with_defaults  rv  ro   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grU   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  )rU   r  r  )ozcfg://alistp)	r    r  BaseConfiguratorr^   convertpopr\  KeyErrorr  )rF   r  bcr	  s   &   rJ   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ero   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)rF   r  rQ  rR  r  s   &&*,rJ   r  :ConfigDictTest.test_namedtuple.<locals>.MyHandler.__init__"  s     $1&1,4ro   c                   < V;P                   R V P                  P                   2,          un         \        SV `  V4      #  )r  r  typer  r^  r  s   &&rJ   r^  6ConfigDictTest.test_namedtuple.<locals>.MyHandler.emit&  s2    

$--"4"4!566
w|F++ro   )r  r  r  s   @@rJ   	MyHandlerr  !  s     5, ,ro   r  Resourcer  labelsmy_typer  )r  r  rj  rB   	myhandlerr  r  r>  r  r   zsome logNzsome log my_type
)
collectionsr  r    r;   r   r  r  r   r^   r\   )rF   r  r  r  r  r  r  s   &      rJ   test_namedtupleConfigDictTest.test_namedtuple  s    *	,-- 	, j68*<=C59 q) gvzK=A	
 $$&&&f%LL$ ' 	*,@A '&s   &(B88C	c           	     t    R  pV P                  R^RRRRV.//4       . \        P                  ! 4       n        R# )c                     ^# rq   r   )r  s   &rJ   r   AConfigDictTest.test_config_callable_filter_works.<locals>.filter_=  s    ro   rj  r>  r  r:   r  Nr  r    r!   r  rF   r   s   & rJ   !test_config_callable_filter_works0ConfigDictTest.test_config_callable_filter_works<  sA    	q&7GY	"J
 	 ')#ro   c           	         \         P                  ! R 4      pV P                  R^RRRRV.//4       . \         P                  ! 4       n        R# )r   rj  r>  r  r:   r  N)r    r   r  r!   r  r  s   & rJ   test_config_filter_works'ConfigDictTest.test_config_filter_worksE  sJ    ..-q&7GY	"J
 	 ')#ro   c           	          ! R  R4      pV! 4       pV P                  R^RRRRV.//4       . \        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   )rF   r  s   &&rJ   r   IConfigDictTest.test_config_filter_method_works.<locals>.FakeFilter.filterO  s    ro   r   Nr   r}   s   @rJ   
FakeFilterr  N  s      ro   r  rj  r>  r  r:   r  Nr  )rF   r  r   s   &  rJ   test_config_filter_method_works.ConfigDictTest.test_config_filter_method_worksM  sO    	 	 ,q&7GY	"J
 	 ')#ro   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   ro   rJ   
NotAFilterr  Y  s    $ro   r  Nrj  r>  r  r:   r  )r\  r  r  )rF   r  r   s   &  rJ   test_invalid_type_raises'ConfigDictTest.test_invalid_type_raisesX  sL    a.G!!Av)gY'OP /ro   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-rB   r  r$  Nr  rp  listenerr  r  bazzqueue not emptyre  r  )r  r  r  )r&   rZ  config_queue_handlerrU  r  r    r  r^   r]  r^  assertIsNotNoner  r  r   r   r   r   sleeping_retryr  rp  emptyr   r  re   r]   r5  r   r  rP  r  )	rF   qspeclspeccdrT  qhr   r  rU   s	   &&&      rJ   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  rw   ri  	itertoolsproductr  r  r\  r  r  r  r^   )rF   qsr  dqsdlqvalueslvaluesr  r  ctxr  s   &          rJ   test_config_queue_handler(ConfigDictTest.test_config_queue_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# )rj  rB   queue_listenerri  r  rp  N)r  )rF   r  s   &&rJ   *_apply_simple_queue_listener_configuration9ConfigDictTest._apply_simple_queue_listener_configuration  s5    q <U#
 	ro   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  Nrn  )rp  rq  SimpleQueuer{  r  subTestr  assert_not_calledrF   r"   r  s   && rJ   Atest_config_queue_handler_does_not_create_multiprocessing_managerPConfigDictTest.test_config_queue_handler_does_not_create_multiprocessing_manager  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   && rJ   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  )rF   r  start_methodsr  r  r  s   &     rJ   ?test_config_reject_simple_queue_handler_multiprocessing_contextNConfigDictTest.test_config_reject_simple_queue_handler_multiprocessing_context  s     	$IM;M)L<8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  rE   r  r^   r_   )rF   r  r  r  r"   qr.  s   &      rJ   1test_config_queue_handler_multiprocessing_context@ConfigDictTest.test_config_queue_handler_multiprocessing_context  s    $IM;M)L<8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# )rj  rL  TrB   log_to_parentri  r  rp  r>  r  r:   N)r    r  r  r!   r   )r  message_to_logs   &&rJ   r  "ConfigDictTest._mpinit_issue121723  sl     	!!q&<U" Z/!2GWE
#
 
	 	  0ro   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-rB   r  r$  r  rp  N)r&   rZ  r  r  rq  r  JoinableQueuerU  r  r    r  r^   r]  r^  r  r  r  rp  r   r  rP  r  )rF   r  MQMMq1q2q3r  rT  r  rU   s   &          rJ   test_multiprocessing_queues*ConfigDictTest.test_multiprocessing_queues  sn   
 ]]4445>TTZZ\T!b\E(=>B/1zN4 ,,1zN4 )B3!!"%--d3  (?(?(A!BT4LQ$$R[[1bhh.bkk//7,,T2OO$4a<OOBIIr2# " ,,T2OO$4a<OOBIIr2s   B4F''AG>c                   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# )rj  rL  FrB   r  r  r:   ri  r  r  r  N)r    r!   rx  r   r  rE   )rF   r  r  s   &  rJ   
test_90195ConfigDictTest.test_90195+  s     q&W4 W
  ""3')&!)9a.)(-.&!)ro   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  rj  rB   sinkri  r  rp  r  r>  r  r:   N)r   import_moduler  rq  r    r  r  )rF   mpr  s   &  rJ   test_111615ConfigDictTest.test_111615I  s    ##$67(():; q<R^^G4::< VH
 	!!&)ro   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rF   rQ  rR  r  s   &*,rJ   r  GConfigDictTest.test_kwargs_passing.<locals>.CustomQueueHandler.__init__`  s     /%+"ro   )r  r  r  s   @@rJ   CustomQueueHandlerr  _  s     , ,ro   r  r  r  rj  rB   r  ri  r>  r  r:   N)r    rB   QueueHandlerr  r  r  r^   r  )rF   r  r  r  r   s   &    rJ   test_kwargs_passing"ConfigDictTest.test_kwargs_passing^  s    	,!1!1!>!> 	,
  q/# XJ
 	!!&)**84..>ro   r   r   )urw   rx   ry   rz   r
   r;  r[   r  rs  r1  r  r  r  r  r  r  r[  rc  r  r$  r)  r3  r=  r  rE  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  r6  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  r{   r|   r}   s   @rJ   r  r  p	  s     !0 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*<**? ?ro   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  )rF   r  r  rQ  exc_infoextraloggeds   &&&&&&rJ   _log;ManagerTest.test_manager_loggerclass.<locals>.MyLogger._log  s    c"ro   r   rv   )rw   rx   ry   rz   r/  r{   r|   )r~   r.  s   @rJ   MyLoggerr)  ~  s     # #ro   r1  NrB  zshould appear in loggedzshould not appear in logged)
r    Loggerr  r\  	TypeErrorsetLoggerClassr  r!   r   r^   )rF   r1  manr  r.  s   &   @rJ   test_manager_loggerclass$ManagerTest.test_manager_loggerclass{  s    	#w~~ 	# ood#)S%7%7=8$v&0156";!<=ro   c                    \         P                  ! R 4      p\        4       pVP                  V4       V P	                  VP
                  V4       R # r   )r    r  rv  setLogRecordFactoryr^   logRecordFactory)rF   r5  rj   s   &  rJ   test_set_log_record_factory'ManagerTest.test_set_log_record_factory  s;    ood#8)--x8ro   r   N)rw   rx   ry   rz   r6  r;  r{   r|   r}   s   @rJ   r&  r&  z  s     > 9 9ro   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  )rF   r   l1l2c1c2c3s   &      rJ   test_child_loggers"ChildLoggerTest.test_child_loggers  s    u%y)ZZZZ	"b'++E23b'++I67[[[[[[#b'++I67b'++M:;bro   c                   \         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  )rF   r   rF  rG  l3l4kidsrj   s   &       rJ   test_get_children!ChildLoggerTest.test_get_children  s    u%y)12u%}}8(?3&~~"t$~~%ro   r   N)rw   rx   ry   rz   rK  rT  r{   r|   r}   s   @rJ   r>  r>    s     & &ro   r>  c                       ] tR tRtRtR# )DerivedLogRecordi  r   Nrf  r   ro   rJ   rW  rW    rg  ro   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  )rF   r  s   &&rJ   r  ;LogRecordFactoryTest.setUp.<locals>.CheckingFilter.__init__  s    ro   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  )rF   r   r)  r  s   &&  rJ   r   9LogRecordFactoryTest.setUp.<locals>.CheckingFilter.filter  s3    LHH$IJ HH&C#C.(ro   r^  N)rw   rx   ry   rz   r  r   r{   r|   r}   s   @rJ   CheckingFilterr\    s      ro   rb  N)
r    r   r   rK   rW  r   r3   r   getLogRecordFactoryorig_factory)rF   rb  s   & rJ   rK   LogRecordFactoryTest.setUp  sV    
	W^^ 
	 	t$%56""4;;/#779ro   c                    V P                   P                  V P                  4       \        P	                  V 4       \
        P                  ! V P                  4       R # r   )r3   r   r   r   rV   r    r9  rd  rs   s   &rJ   rV   LogRecordFactoryTest.tearDown  s<    %%dkk2$##D$5$56ro   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  r3   r   rt   r    r9  rW  r   rm   rs   s   &rJ   test_logrecord_class)LogRecordFactoryTest.test_logrecord_class  sn    )T%5%5%=%=++-	/##$45t0023!
 	ro   )r   rd  N)	rw   rx   ry   rz   rK   rV   ri  r{   r|   r}   s   @rJ   rY  rY    s     :$7
 ro   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   queFNrn  )r   rK   rp  rq  r    rB   r  que_hdlrrH   r!   
que_loggerr  r9   r   rD   rs   s   &rJ   rK   QueueHandlerTest.setUp  s    t[[_
((55djjA	!++E2$)!  1""4==1ro   c                d    V P                   P                  4        \        P                  V 4       R # r   )ro  rN   r   rV   rs   s   &rJ   rV   QueueHandlerTest.tearDown  r  ro   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   rt   r\  rp  Empty
get_nowaitr   r   rV  r    r  r^   rH   r  rQ  )rF   r  r  s   &  rJ   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<ro   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})rH   	levelnamer=  N)rt   r    r   r   r  rH   r=   r>   ro  r@   rp  r   rp  rv  r^   r  r=  )rF   r  rz  log_format_strformatted_msgrF  
log_records   &      rJ   test_formatting QueueHandlerTest.test_formatting  s    !((9	;&--4998A . P%%doo6	""9-$ZZ**,
7(:(:;ro   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    rB   QueueListenerrp  r  rp  r   rt   r   r2  r5  rE   matchesr   r   r   rN   r9   rx  rF   r   r  s   &  rJ   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    rB   r  rp  rV  r  r  r  r5  r  s   &  rJ   #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    rB   r  rp  r\  r  r  r5  r  s   &  rJ   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    rB   r  rp  r<   r  ZeroDivisionErrorrp  r  rt   r   r5  r^   r8   r\   rm  r-  )rF   r  ra  excs   &   rJ   &test_queue_listener_with_StreamHandler7QueueHandlerTest.test_queue_listener_with_StreamHandler:  s   ##11$**dnnM	IE 	d//1dC--/557==kJAN--/557==gFJ ! 	ICOO%%d&7&7&9C%H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  rD   r<   r    rB   r  rp  r  r   r5  r^   r8   r\   rm  )rF   r  s   & rJ   *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Oro   )rH   ro  rp  rp  N)rw   rx   ry   rz   r[   rK   rV   rw  r~  r  r  r  r  r  r{   r|   r}   s   @rJ   rl  rl    sC      32 
=< D	,	K	P 	Pro   rl  r  c                     a  ] tR tRt o ^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  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test_logger_with_id_%sonetwothreefourfiveN)r    r!   r9   r:   rB   r  rD   r  r  r   r5  rO   rN   )	log_queuer  r  r   r  s   &&   rJ   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  )MMOro   rw  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rF   mock_handler  r  s   &&  rJ   #test_handle_called_with_queue_queue5QueueListenerTest.test_handle_called_with_queue_queuey  s_    4;;'!KKM	""9A.FG ( [33Q_EGro   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-  rN   r3  r^   r  r  s   &&  rJ    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ro   c              #  p   "     V P                  4       x  K    \        P                   d    . u # i ; i5i)T)rv  rp  ru  )r  s   &rJ   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 )r  z&Found unexpected messages in queue: %sN)r   r  r  r  r  rq  r  r-  listr  rN   r3  r    rB   r  	_sentinelr  r  r  r  )rF   r  rp  r  rj   r   s   &     rJ   $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    rB   r  r  r5  r\  r  	task_done)rF   r  r  s   &  rJ   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)rw   rx   ry   rz   r  r$  r  r   rv  r    rB   r  r  r  r  r  r  r{   r|   r}   s   @rJ   r  r  W  s      		 
	. 
g&&44h	?	G 
@	G 
g&&44h	?
	G 
@
	G 
	 
		>0	& 	&ro   r  c                   0   a  ] tR tRt o R t]tR tRtV tR# )UTCi  c                    \         # r   )ZEROrF   dts   &&rJ   	utcoffsetUTC.utcoffset  s    ro   c                    R # )r  r   r  s   &&rJ   tzname
UTC.tzname  s    ro   r   N)	rw   rx   ry   rz   r  dstr  r{   r|   r}   s   @rJ   r  r    s      C ro   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  )rF   r  r=  rQ  rR  ra  s   &&&*, rJ   assert_error_message'AssertErrorMessage.assert_error_message  sF    	.b24262 	.Wc!f--	.s    AAAr   N)rw   rx   ry   rz   r  r{   r|   r}   s   @rJ   r  r    s     . .ro   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	# )rH   zformatter.testr  pathnamery  toz	dummy.extlinenor,  Nr  r  zMessage with %d %srQ  r  i  )r   placeholders)r    r:   rP  ry  r   commonvariantsrs   s   &rJ   rK   FormatterTest.setUp  sc    $W]]VT;?bD''	
 $
ro   Nc                    \        V P                  4      pVe#   VP                  V P                  V,          4       \        P
                  ! V4      # r   )ro  r  rQ   r  r    r   )rF   rH   rG  s   && rJ   
get_recordFormatterTest.get_record  s<    dkk"MM$---.$$V,,ro   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  rx  usesTimerE   rF   r   r   s   &  rJ   test_percentFormatterTest.test_percent  s    OO./!&FGl+*ahh2&m,

%./

%./

%ro   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   &  rJ   test_bracesFormatterTest.test_braces  s    OOoS9!&GHj4*ahh2k5&k5

%.c:

%nC8

%ro   c                   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   &  rJ   test_dollarsFormatterTest.test_dollars  s^   OOl#6!&CDj4!&CD0<!&GHk5*ahh2&l#6

%j4

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

%ro   c                   \         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  rF   r   s   & rJ   test_format_validate"FormatterTest.test_format_validate  s    mn!pqQR!TU34!67l+. U]`a!XY>cJ!AB4C@!78m37/m37/m37//s;!23X`cd![\4C@!78nC80m37/33?!675SA!894C@!78 5SA!89is3+k5- 	*g&7&7G*g&7&7G*g&7&7G*g&7&7I*g&7&7G*g&7&7E*g&7&7F*g&7&7I*g&7&7H 	!!I~S 	" 	
 	!!'}C 	" 	
 	!!%	
 	*g&7&79NVYZ!!E0 	" 	
 	!!3/s 	" 	

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

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

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

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

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

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

 	*g&7&7CPro   c                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  rl  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  )rF   fmtsstylesr_  r  r   r   s   &      rJ   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 ,ro   c                T    V P                  \        \        P                  R R R4       R # )Nr  )r\  r  r    r=   rs   s   &rJ   test_invalid_style FormatterTest.test_invalid_style  s    *g&7&7tSIro   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)rF   r   r  r   s   &   rJ   	test_timeFormatterTest.test_time  s    OOtQAq!Q< KKd 3 = = ?@	78kka*CDa19=	$=>ro   c           
         ! 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   )rw   rx   ry   rz   default_msec_formatdefault_time_formatr{   r   ro   rJ   NoMsecFormatterr    s    "&"5ro   r  r  Nz21/04/1993 08:03:00)r    r=   r  r  r   r  r  r  r  r  r  r  r^   r  )rF   r  r   r  r   s   &    rJ   test_default_msec_format_none+FormatterTest.test_default_msec_format_none  s    	6g// 	6 OOtQAq!S#>KKd 3 = = ?@	kka*?@ro   c                   \         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  rh  i	  g-C6:?r  z
Message %dz.1000N)r    r=   r  r  r  r   r  rP  )rF   r   r  r   rl   s   &    rJ   test_issue_89047FormatterTest.test_issue_89047  sm    "ESZmntAJJv%%ula!e.D&EFAAWa(	 ro   c           	     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  rB  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  )rF   testsnswant
patched_nsr   s   &     rJ   /test_msecs_has_no_floating_point_precision_loss=FormatterTest.test_msecs_has_no_floating_point_precision_loss  s    
 HB~&&**,' ..v? ' b!!  t4  c:&&v~~FNN8K'K'-||c'9-1 ' 3 "!	 && "!!s   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  )rF   start_ns
offsets_nscodercouterrr&  liner  relativeCreateds   &          rJ   )test_relativeCreated_has_higher_precision7FormatterTest.test_relativeCreated_has_higher_precision  s     -J
 $ | $$ (	  @ (d3jjl":~~/?MOI	22+.udjjl+C(&&wI1E0LUV&W&&CPQ&R	 32  N222s   =AC''C8)r  r  r   )rw   rx   ry   rz   rK   r  r  r  r  r  r  r  r
  r  r  r"  r3  r{   r|   r}   s   @rJ   r  r    sS     
"-&& &*TQlN(J?
A)3*0S 0Sro   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_   rF   r.  s   &&rJ   formatHeader#TestBufferingFormatter.formatHeader2      W%%ro   c                &    R \        V4      ,          # )z(%d)]r8  r9  s   &&rJ   formatFooter#TestBufferingFormatter.formatFooter5  r<  ro   r   N)rw   rx   ry   rz   r:  r>  r{   r|   r}   s   @rJ   r6  r6  1  s     && &ro   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.  rs   s   &rJ   rK   BufferingFormatterTest.setUp9  s/    !!5%.1!!5%.1
ro   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   & rJ   test_default#BufferingFormatterTest.test_default?  sE    &&(QXXb\*188DLL#9:ro   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=   )rF   r   lfs   &  rJ   test_custom"BufferingFormatterTest.test_customD  s`    "$)188DLL+AB/"2&-qxx/EFro   r.  N)	rw   rx   ry   rz   rK   rG  rK  r{   r|   r}   s   @rJ   rA  rA  8  s     
;
G Gro   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)r3   RecordingHandlerrD   r  r    r  rO   rN   r.  assertStartsWithexc_textr  r  )rF   r   rU   s   &  rJ   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)rw   rx   ry   rz   r~  r{   r|   r}   s   @rJ   rO  rO  K  s     @ @ro   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)r3   rO   r<   r    
lastResortr  r   r  r   r^   r\   r   r"   emittedNoHandlerWarningrD   )rF   r>  old_lastresortold_raise_exceptionsr  r  s   &     rJ   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)rw   rx   ry   rz   r^  r{   r|   r}   s   @rJ   rX  rX  a  s     #; #;ro   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  rN   r  )setattrrecord_call)rF   
identifiercalledr  s   &&& rJ   r  FakeHandler.__init__  s#    >FD$"2"2:v"NO ?ro   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   rJ   inner&FakeHandler.record_call.<locals>.inner  s    MM)**:{CDro   r   )rF   re  rj  rf  rk  s   &fff rJ   rd  FakeHandler.record_call  s    	Ero   r   N)rw   rx   ry   rz   r  rd  r{   r|   r}   s   @rJ   ra  ra    s     P ro   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   &*,rJ   r  RecordingHandler.__init__  s    .??ro   c                <    V P                   P                  V4       R # r   )r.  r  r   s   &&rJ   rw  RecordingHandler.handle  s    F#ro   rM  )	rw   rx   ry   rz   r  rw  r{   r|   r  r  s   @@rJ   rS  rS    s     $ $ro   rS  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VtV ;t# )ShutdownTesti  c                   < \         \        V `  4        . V n        \        P
                  pV P                  \        \        R V4       R# )r  N)r  rt  rK   rf  r    r  r   rc  )rF   raise_exceptionsr  s   & rJ   rK   ShutdownTest.setUp  s7    lD')"22*;=MNro   c                   a V3R  lpV# )c                     < S ! 4       hr   r   )r   s   rJ   rk  'ShutdownTest.raise_error.<locals>.inner  s
    'Mro   r   )rF   r   rk  s   &f rJ   raise_errorShutdownTest.raise_error  s    	ro   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^   )rF   handler0handler1handler2rB   rj   s   &     rJ   test_no_failureShutdownTest.test_no_failure  s}    q$++.q$++.q$++. w**X,JKT(^4L 	;;/ro   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~  Nrn  )
ra  rf  rc  r{  r    r  r  rA  r  r^   )rF   r  r   r   rB   s   &&&  rJ   _test_with_failure_in_method)ShutdownTest._test_with_failure_in_method  sh    a-!1!1%!89OO''01T(^4B8ro   c                2    V P                  R \        4       R# r  Nr  r  rs   s   &rJ   test_with_ioerror_in_acquire)ShutdownTest.test_with_ioerror_in_acquire  s    )))W=ro   c                2    V P                  R \        4       R# r  Nr  rs   s   &rJ   test_with_ioerror_in_flush'ShutdownTest.test_with_ioerror_in_flush      ))'7;ro   c                2    V P                  R \        4       R# rN   Nr  rs   s   &rJ   test_with_ioerror_in_close'ShutdownTest.test_with_ioerror_in_close  r  ro   c                2    V P                  R \        4       R# r  r  r  rs   s   &rJ   test_with_valueerror_in_acquire,ShutdownTest.test_with_valueerror_in_acquire  s    )))Z@ro   c                2    V P                  R \        4       R# r  r  rs   s   &rJ   test_with_valueerror_in_flush*ShutdownTest.test_with_valueerror_in_flush      ))':>ro   c                2    V P                  R \        4       R# r  r  rs   s   &rJ   test_with_valueerror_in_close*ShutdownTest.test_with_valueerror_in_close  r  ro   c                H    R \         n        V P                  R\        4       R# )Fr  Nr    r  r  
IndexErrorrs   s   &rJ   .test_with_other_error_in_acquire_without_raise;ShutdownTest.test_with_other_error_in_acquire_without_raise  s    "')))Z@ro   c                H    R \         n        V P                  R\        4       R# )Fr  Nr  rs   s   &rJ   ,test_with_other_error_in_flush_without_raise9ShutdownTest.test_with_other_error_in_flush_without_raise      "'))':>ro   c                H    R \         n        V P                  R\        4       R# )FrN   Nr  rs   s   &rJ   ,test_with_other_error_in_close_without_raise9ShutdownTest.test_with_other_error_in_close_without_raise  r  ro   c                h    R \         n        V P                  \        V P                  R\        4       R# )Tr  Nr    r  r\  r  r  rs   s   &rJ   +test_with_other_error_in_acquire_with_raise8ShutdownTest.test_with_other_error_in_acquire_with_raise  s'    "&*d&G&G#Z	1ro   c                h    R \         n        V P                  \        V P                  R\        4       R# )Tr  Nr  rs   s   &rJ   )test_with_other_error_in_flush_with_raise6ShutdownTest.test_with_other_error_in_flush_with_raise  '    "&*d&G&G!:	/ro   c                h    R \         n        V P                  \        V P                  R\        4       R# )TrN   Nr  rs   s   &rJ   )test_with_other_error_in_close_with_raise6ShutdownTest.test_with_other_error_in_close_with_raise  r  ro   )rf  )rw   rx   ry   rz   rK   r{  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r{   r|   r  r  s   @@rJ   rt  rt    s]     O
0 9><<A??A??1
/
/ /ro   rt  c                   x   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RtV tR# )ModuleLevelMiscTesti  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   ro   rJ   _NotAnIntOrStringr        ro   r  WARNN)
r    r>  r"   rR   r^   r   r\  r  r3  r   )rF   old_disabler  s   &  rJ   test_disable ModuleLevelMiscTest.test_disable  s    ll**22a(5--55r:*gooG	 	 	)W__6G6IJ 	--55w7G7GHro   Nc                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   *,rJ   <lambda>/ModuleLevelMiscTest._test_log.<locals>.<lambda>  s    v}}aW'=ro   Nztest me: %r)r   r   r    rS  r>  rD   r0   r^   r_   r.  
getMessageupperr   )rF   r  r  	recording
log_methodr   expected_levelrf  s   &&&    @rJ   	_test_logModuleLevelMiscTest._test_log  s    dG]=	? %&		*Wf-
umY7}i0Y../3""1%**,mi.GH"'"3&,,.9Y8 	$ro   c                F    V P                  R \        P                  4       R# r   N)r  r    r   rs   s   &rJ   test_logModuleLevelMiscTest.test_log)  s    ugmm,ro   c                (    V P                  R 4       R# r   Nr  rs   s   &rJ   
test_debugModuleLevelMiscTest.test_debug,      wro   c                (    V P                  R 4       R# r   Nr  rs   s   &rJ   	test_infoModuleLevelMiscTest.test_info/      vro   c                (    V P                  R 4       R# r   Nr  rs   s   &rJ   test_warning ModuleLevelMiscTest.test_warning2      y!ro   c                (    V P                  R 4       R# r   Nr  rs   s   &rJ   
test_errorModuleLevelMiscTest.test_error5  r  ro   c                (    V P                  R 4       R# r2  Nr  rs   s   &rJ   test_critical!ModuleLevelMiscTest.test_critical8      z"ro   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   ro   rJ   r1  r  >  r  ro   r1  N)r\  r3  r    r4  rv  r2  r^   getLoggerClass)rF   r1  s   & rJ   test_set_logger_class)ModuleLevelMiscTest.test_set_logger_class;  s    )W%;%;VD	w~~ 	 	x(//18<w~~.//17>>Bro   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  )rF   rH   r  r  r=  s   &&&rJ   r  IModuleLevelMiscTest.test_subclass_logger_cache.<locals>.MyLogger.__init__L  s     -}-ro   r   )
rw   rx   ry   rz   r    r   r  r{   r|   r  )r  r~   r=  s   @@rJ   r1  r  K  s     $.gnn . . .ro   r1  just_some_loggerr  hellor   N)r    r  r4  r!   r^   r6   r7   r;   rD   r9   r:   r   r\   rm  truncater  r   rO   rN   r2  )rF   r1  r  r8   rU   r=  s   &    @rJ   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  rF   r-  r.  r/  r0  s   &    rJ   test_logging_at_shutdown,ModuleLevelMiscTest.test_logging_at_shutdownf  sP        (d3jjl,c2.4ro   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%  re  r  zERROR:root:log in __del__N)r   TESTFNr   rs  r  r  r   r  r^   re   r3  )rF   r$  r-  fps   &   rJ   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   &    rJ   test_recursion_error(ModuleLevelMiscTest.test_recursion_error  sS        -T48jjl>DQro   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)rF   mappingnew_mappings   &  rJ   test_get_level_names_mapping0ModuleLevelMiscTest.test_get_level_names_mapping  sf    ..0--w7--w7224..ro   r   r   )rw   rx   ry   rz   r  r  r  r  r  r  r  r  r  r  r   r  r  r  r{   r|   r}   s   @rJ   r  r    sS     I.%0- " #
C3>5&N>  / /ro   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  )rF   r   rl   s   &  rJ   test_str_repLogRecordTest.test_str_rep  s;    !!"%Fa0As#ro   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!   rD   r   r  r.  rQ  r^   r=  rO   rN   )rF   rU   r   r  s   &   rJ   test_dict_argLogRecordTest.test_dict_arg  s    	Qf*A.aiil''+1--~>			ro   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_processrH   r   r   	swap_itemrq  modulesr  r8  )	r"  r"  r  prev_logMultiprocessingr  rH   r1r2resultss	   &&&      rJ   _extract_logrecord_process_name-LogRecordTest._extract_logrecord_process_name  s    ")"<"<%7"	A(%%',,D&&se}'=>B ""3;;0A4H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  rq  r%  r^   r    r"  r   r  r*  r  PipeProcessr  r  assertNotEqualr   )	rF   multiprocessing_importedLOG_MULTI_PROCESSINGr   r)  r  parent_conn
child_connr  s	   &        rJ   test_multiprocessing"LogRecordTest.test_multiprocessing  sr   ::<#4#C  	'W77>#'  %%b)AQ]]M:::1>RSG]GM,BC]G4D,EF]G4D,EF #&5&:&:&<#K'';;-;A GGI!&&(Gw}/EFW]3W=M5NO]G4D,EFFFH (& ('& (s   E*F$ $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)rF   NONENOT_NONEr   log_threadslog_processeslog_multiprocessinglog_asyncio_taskss   &       rJ   test_optionalLogRecordTest.test_optional  sE     ''!!"%QZZ((,,%88#33	8!&G#(G ).G&&+G#%%b)ANO!,G#0G )<G&&7G# "-G#0G )<G&&7G#s   
BF .Gc                ^   "   \         P                  ! / 4      pV! VP                  4       R # 5ir   )r    r   r:  )rF   	assertionr   s   && rJ   _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rF   make_recordrunners   &  rJ   #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$  rq  r%  r    r=  rM  r  rN  rO  rP  s   &  rJ   &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   )rw   rx   ry   rz   r  r  r$  r*  r  r5  rD  rH  r   r   rS  rV  r{   r|   r}   s   @rJ   r  r    s}     $	  0 #' #'J8@ $$&	8 '	8 $$&	8 '	8ro   r  c                     a a ] tR tRt o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]P2                  ! 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?  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  rK   r    r>  rB   r%   r&   r'   r(   r)   r  r5   r   cleanupr  s   &rJ   rK   BasicConfigTest.setUpC  sy    ot*,--%//446")"6"6q"9&-ll&8&8#% "ro   c                   < \         P                  P                  R ,           F2  p\         P                  P                  V4       VP	                  4        K4  	  \
        \        V `  4        R# r[  )r    r>  rB   rO   rN   r  rY  rV   )rF   rU   r  s   & rJ   rV   BasicConfigTest.tearDownL  sI    &&q))ALL&&q)GGI * 	ot-/ro   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# )rB   r   N)rc  r    r>  rB   r%   rP   rQ   r'   r)   r(   r9   r5   rs   s   &rJ   r\  BasicConfigTest.cleanupR  sp    j$--8!  !4!45"&"9"9Qd99:ro   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>  rB   rV  r;   r8   rq  r  rF  r[  r  BASIC_FORMATr  rh  PercentStyler  r5   )rF   r   rF  s   &  rJ   test_no_kwargsBasicConfigTest.test_no_kwargsY  s     	W\\223Q7,,''*gw'<'<=4%%	))..0D0DE)++,i..0D0DE 	++T-H-HIro   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  r8   r  Log an errorERROR:root:Log an errorNr   r  r    r  rq  r  r   r  r^   r\   rm  r  s   & rJ   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   & rJ   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  h2rT  s   &&&rJ   r\  .BasicConfigTest.test_filename.<locals>.cleanup      HHJHHJIIbMro   test.logre  )r$  rg  r  r  N)r    r  r^   r_   r>  rB   rV  r  r8   moderH   r   rF   r\  r   rj   s   &   rJ   test_filenameBasicConfigTest.test_filename}  s    	
 	Z'BW\\223Q7,,''*gw':':;&&z3I,,hoo.B.BC,,hoo.B.BC(J?ro   c                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   &&&rJ   r\  .BasicConfigTest.test_filemode.<locals>.cleanup  rx  ro   ry  wbr$  filemodeN)	r    r  r>  rB   r  r^   r8   rz  r   r{  s   &   rJ   test_filemodeBasicConfigTest.test_filemode  ss    	
 	Z$?,,''*&&z48,,hoo.B.BC(J?ro   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  )r6   r7   r   rN   r    r  r^   r_   r>  rB   rV  r;   r8   )rF   r8   r   s   &  rJ   test_streamBasicConfigTest.test_stream  s    %6*W\\223Q7,,''*gw'<'<=0ro   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>  rB   rF  r^   r[  r  rF   rF  s   & rJ   test_formatBasicConfigTest.test_format  sH    #>?LL))!,66	))..0KLro   c                    \         P                  ! R R7       \         P                  P                  ^ ,          P                  pV P                  VP                  R 4       R# )r  )rh  N)r    r  r>  rB   rF  r^   rh  r  s   & rJ   test_datefmtBasicConfigTest.test_datefmt  s@    E*LL))!,66	**E2ro   c                    \         P                  ! R R7       \         P                  P                  ^ ,          P                  pV P                  VP                  \         P                  4       R# )r  r  N)r    r  r>  rB   rF  rV  r[  r\  r  s   & rJ   
test_styleBasicConfigTest.test_style  sF    #&LL))!,66	i..0K0KLro   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   r9   r  r^   )rF   	old_levels   & rJ   
test_levelBasicConfigTest.test_level  sy    LL&&	--y9"%++R0"%++R0ro   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$  r8   )r$  rB   )r8   rB   )loglevelNr  r  )r\  r    r;   rq  r  r  r  r   )rF   r\  rB   r8   s   &   rJ   test_incompatible!BasicConfigTest.test_incompatible  s    (())+,Z!4!4z=C	EZ!4!4z?G	IZ!4!4V?G	I 	Z!4!4w||LTC8ro   c                   \         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   )rB   N)r    r;   rq  r  r=   r@   r  r  r>  rB   r  rF  )rF   rB   r   s   &  rJ   test_handlersBasicConfigTest.test_handlers  s0   !!#!!#**-!!#

   #X.hqk7<<#8#8#;<hqk7<<#8#8#;<hqk7<<#8#8#;<Xa[223Xa[223hqk++Q/hqk++Xa[-B-BCro   c                   \         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  rB   rO  r   r   T)r  rB   forcezWARNING:root:warnz WARNING:root:warn
INFO:root:infoN)r6   r7   r    r;   r  r   r   r   r   r^   r_   r>  rB   r   r\   rm  )rF   old_string_ionew_string_ioold_handlersnew_handlerss   &    rJ   
test_forceBasicConfigTest.test_force  s;   --m<=--m<='//LIVgW\\223Q7',,"&	(VgW\\223Q7//1779,	.//1779<	>ro   c           	         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)re  ry  r9  %(message)sr$  rg  errorsr  r  .   The Øresund Bridge joins Copenhagen to Malmör  Nr    r  r:   r^   r_   r>  rB   rV  r  rg  r   rN   r  re   rm  rP  r  rF   rg  r   r   r  s   &    rJ   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)
rg  ry  ignorer  r  r  re  r  Nz*The resund Bridge joins Copenhagen to Malmr  r  s   &    rJ   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)
rg  ry  r  )r$  rg  r  r  backslashreplaceu<   😂: ☃️: The Øresund Bridge joins Copenhagen to Malmöre  r  NzL\U0001f602: \u2603\ufe0f: The \xd8resund Bridge joins Copenhagen to Malm\xf6)r    r  r:   r^   r_   r>  rB   rV  r  rg  r  r   rN   r  re   rm  rP  r  r  s   &    rJ   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)rg  ry  Nr  r  c                 b   < SP                  \        \        P                  ! 4       4      4       R # r   )r  r  rq  r  )r   r=  s   &rJ   dummy_handle_errorEBasicConfigTest.test_encoding_errors_none.<locals>.dummy_handle_errorC  s    s3==?34ro   r  z:'ascii' codec can't encode character '\xd8' in position 4:re  r  r   )r    r  r:   r^   r_   r>  rB   rV  r  rg  r  r  r  r   rE   r  rN   r  re   rm  rP  r  )rF   rg  r   r  r   r  r=  s   &     @rJ   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   ro   rJ   r}  5BasicConfigTest.test_log_taskName.<locals>.log_recordU  s     OOM*s   Nr  ztest-logging-taskname-re  r9  z%(taskName)s - %(message)s)r$  r  rg  r  r  T)r   r  zTask-\d+ - hello world)rU  r   rP  r  r    r  r   r^   r_   r>  rB   rV  r  rK  rL  r=  rM  r  re   rm  assertRegexrN  rO  rN   )rF   r}  r   log_filenamerg  rR  r   r  s   &       rJ   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  r9   r   r  )r  r  r  rf  old_basic_configrF   s   *, rJ   my_basic_config2BasicConfigTest._test_log.<locals>.my_basic_configv  sP    **ILL!!#&OOGLL119=MM1'"ro   r  Nztest mer   )r    r  r   r   r0   r^   )rF   r  r  r  r  rf  r  s   f&&  @@rJ   r  BasicConfigTest._test_logq  si    "..	# 	dG]ODWf-
ui(y! 	2r(,ro   c                F    V P                  R \        P                  4       R# r  )r  r    r   rs   s   &rJ   r  BasicConfigTest.test_log  s    ugoo.ro   c                (    V P                  R 4       R# r  r  rs   s   &rJ   r  BasicConfigTest.test_debug  r  ro   c                (    V P                  R 4       R# r  r  rs   s   &rJ   r  BasicConfigTest.test_info  r  ro   c                (    V P                  R 4       R# r  r  rs   s   &rJ   r  BasicConfigTest.test_warning  r  ro   c                (    V P                  R 4       R# r  r  rs   s   &rJ   r  BasicConfigTest.test_error  r  ro   c                (    V P                  R 4       R# r  r  rs   s   &rJ   r  BasicConfigTest.test_critical  r  ro   )rB   r5   r)   r'   r   )%rw   rx   ry   rz   rK   rV   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  r{   r|   r  r  s   @@rJ   rY  rY  ?  s     #0;J(++@$@1M3M19D">*O(Q&K((@ $$&  ' :-./ " # #ro   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   rJ   r\  (LoggerAdapterTest.setUp.<locals>.cleanup  s    &6G  #ro   Nr  r-  )r  r  rK   r    r(   rS  r  r>  r  rD   r   rO   rN   rA  r   adapter)rF   r\  r  r  s   & @rJ   rK   LoggerAdapterTest.setUp  s    ,."//2)+llt~~.114>>B,,-	7 	 ((),,DKKtLro   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  rQ  r,  r  __traceback__rF   r  r  ra  r   s   &    rJ   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  )rF   ra  r  r   s   &   rJ   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  r2  r  r^   r_   r.  r   r    r   r  rQ  r  )rF   r  r   s   &  rJ   r  LoggerAdapterTest.test_critical  s    !c>>2T^^334a8''*)9)9:S)t~~&78/:ro   c                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# )!   rR   N)r  r  r"   rR   r   rc  rx  isEnabledForrF   r  s   & rJ   test_is_enabled_for%LoggerAdapterTest.test_is_enabled_for  sw    ll))1199.0##+!4!4!<!<i#	%22267ro   c                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   )rE   r  rA   r  rB   rO   rx  r2  s   & rJ   test_has_handlers#LoggerAdapterTest.test_has_handlers  sy    0023{{++GKK%%g. , 	00231134ro   c                   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  rQ  r  r"   r  rv  )rF   r  r  adapter_adapterr   orig_managertemp_managers   &      rJ   r  LoggerAdapterTest.test_nested  s   +t{{$?'wdC!1g_(=>G,,c>>BT^^334a8''*)9)9:'>se%DEt~~&78-8&..goo|4dkk))<8x	3&2#MM/11<@MM'//<8MM$++--|<&2#o--|<goo|4dkk))<8 '3#s   -A$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.Nrn  )r  r.  StyleAdapterr  r   r^   r  r  r  r   r    r   )rF   r.  r  s   &  rJ   r	  %LoggerAdapterTest.test_styled_adapter  s    ..((t{{+g.WR[__-?--/DEGOO]G<WR[__-/?@--/DEro   c                "   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.Nrn  )r  r.  r  r  r   r	  r   r^   r  r  r  r   r    r   )rF   r.  r  adapter2s   &   rJ   r	  ,LoggerAdapterTest.test_nested_styled_adapter  s    ..((,(w/WR[__-/AB--/KLW__mW=WR[__-/BC--/KLro   c                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# rB  )
stacklevelNr   	the_leveltriggers   rJ   	innermostELoggerAdapterTest.test_find_caller_with_stacklevel.<locals>.innermost      Fy1ro   c                     < S ! 4        R # r   r   r	  s   rJ   rk  ALoggerAdapterTest.test_find_caller_with_stacklevel.<locals>.inner       Kro   c                     < S ! 4        R # r   r   rk  s   rJ   outerALoggerAdapterTest.test_find_caller_with_stacklevel.<locals>.outer#      Gro   r	  rk  r	   test_find_caller_with_stacklevelNrn  )r  r   r  r.  r^   r  r  r  )rF   r	  r.  r  rk  r	  r	  r	  s   &   @@@@rJ   r	  2LoggerAdapterTest.test_find_caller_with_stacklevel  sJ   	,,&&	2		 ..((--{;##Q	--w772;--v6##Q	--w772;--v6##Q	--/QR72;--v6ro   c                   \         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  r2  r^   r_   r  r.  assertHasAttrr  r   s   & rJ   test_extra_in_records'LoggerAdapterTest.test_extra_in_records9  s    ,,DKK493<A 	23T^^334a8''*65)S)ro   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  r2  r^   r_   r  r.  assertNotHasAttrr   s   & rJ    test_extra_not_merged_by_default2LoggerAdapterTest.test_extra_not_merged_by_defaultC  sa    6ufoNT^^334a8''*fe,ro   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  r2  r^   r_   r  r.  r!	  r  r  r   s   & rJ   test_extra_merged#LoggerAdapterTest.test_extra_mergedI  s    ,,DKK493<9=? 	:5#,OT^^334a8''*65)65)S)S)ro   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   & rJ   )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)ro   )r  r  r  )rw   rx   ry   rz   rK   r  r  r  r  r  r  r	  r	  r	  r"	  r(	  r-	  r0	  r{   r|   r  r  s   @@rJ   r  r    sV     M"B"B	;8598	F
M7@*-*	* 	*ro   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   )rF   r  rR  s   &&&rJ   r9  PrefixAdapter.processe  s    ++au%v--ro   r   N)rw   rx   ry   rz   r   r9  r{   r|   r}   s   @rJ   r  r  b  s     F. .ro   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_  rQ  )rF   r_  rQ  s   &&&rJ   r  Message.__init__j  s    	ro   c                J    V P                   P                  ! V P                  !  # r   )r_  r  rQ  rs   s   &rJ   __str__Message.__str__n  s    xx		**ro   )rQ  r_  N)rw   rx   ry   rz   r  r<	  r{   r|   r}   s   @rJ   r8	  r8	  i  s     + +ro   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	  )rF   r  r  r	  rQ  rR  s   """$*,rJ   r   StyleAdapter.logs  sT    U##,,s3KCKKOOE73#5 5 5'1!|5 $ro   r   N)rw   rx   ry   rz   r   r{   r|   r}   s   @rJ   r	  r	  r  s     51 5 5ro   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rH   N)r  rB	  rK   rS  r  r    r2  r  rD   r   rO   rN   rA  r  s   &rJ   rK   LoggerTest.setUp|  s    j$%')+nn&1t~~.114>>B,,-(()ro   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  r9   rs   s   &rJ   test_set_invalid_level!LoggerTest.test_set_invalid_level  sJ    !!EKK  $	( 	!!GKK  &	*ro   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  rQ  r,  r  r  r  s   &    rJ   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   rs   s   &rJ   !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   rs   s   &rJ   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   &&rJ   r  =LoggerTest.test_find_caller_with_stack_info.<locals>.<lambda>  s    fmmDMMO&Dro   Tr  rR  N)r   r   r    	tracebackr  
findCallerr^   r_   )rF   rf  s   &@rJ    test_find_caller_with_stack_info+LoggerTest.test_find_caller_with_stack_info  sd    dG--}D	F 	$/Va(;VAYGro   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   rJ   r	  >LoggerTest.test_find_caller_with_stacklevel.<locals>.innermost  r	  ro   c                     < S ! 4        R # r   r   r	  s   rJ   rk  :LoggerTest.test_find_caller_with_stacklevel.<locals>.inner  r	  ro   c                     < S ! 4        R # r   r   r	  s   rJ   r	  :LoggerTest.test_find_caller_with_stacklevel.<locals>.outer  r	  ro   r	  rk  r	  r	  Nrn  )r  r   r  r.  r^   r  r  r  r    r!   rD   rO   )	rF   r	  r.  r  r3   rk  r	  r	  r	  s	   &    @@@@rJ   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6ro   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    _logRecordFactoryrc   __dict__keysr\  r  r  
makeRecord)rF   rH   r  rT  lnor  rQ  r,  r  rh	  rvr"  r-  s   &            rJ   %test_make_record_with_extra_overwrite0LoggerTest.test_make_record_with_extra_overwrite  s    :>>>S>3>>>4&&tBS'/u> *E"++2B2B2D,EEEC,'Eh(>(> s($)  8 Fro   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	  )rF   rH   r  rT  rm	  r  rQ  r,  r  rh	  r-  rG  s   &           rJ   (test_make_record_with_extra_no_overwrite3LoggerTest.test_make_record_with_extra_no_overwrite  sn    :>>>S>3>>>4l+''Rc(0U ( Lk6??3ro   c                   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   )rE   r  rA   rB   rO   rx  r2  s   & rJ   r  LoggerTest.test_has_handlers  s\    //12{{++GKK%%g. ,0023ro   c                ~    \         P                  ! R 4      pRVn        V P                  VP	                  4       4       R# )z
blah.childFN)r    r!   r  rx  rA   )rF   child_loggers   & rJ   test_has_handlers_no_propagate)LoggerTest.test_has_handlers_no_propagate  s1    ((6!&1134ro   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# )   rR   N)r  r"   rR   r   rc  rx  r  r  s   & rJ   r  LoggerTest.test_is_enabled_for  sb    kk))11&(#!4!4iM11"56ro   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   rR   N)r  r   r"   rR   r   rc  rx  r  )rF   old_disabledr  s   &  rJ   #test_is_enabled_for_disabled_logger.LoggerTest.test_is_enabled_for_disabled_logger  s    {{++kk))11#&(#j,G!4!4iM11"56ro   c                    \         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  )rF   r>  s   & rJ   test_root_logger_aliases#LoggerTest.test_root_logger_aliases  s     "dGLL)dG--d34dG--b12dG--f56dG--e499:dG--i8==>dG--e4;;<w0067w00;BBCro   c                    V P                  \        \        P                  \        4       V P                  \        \        P                  R 4       R# )s   fooN)r\  r3  r    r!   anyrs   s   &rJ   test_invalid_namesLoggerTest.test_invalid_names  s2    )W%6%6<)W%6%6?ro   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  )rF   protorH   r  rl   	unpickleds   &     rJ   test_picklingLoggerTest.test_pickling  s^    622Q67EA **40LL/"LLO	i0	 B 8ro   c                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)r3   r    r!   r9   r   r^   r4   _cacherE   r  rx  r:   r   r   rR   )rF   r>  r1   r2   s   &   rJ   test_cachingLoggerTest.test_caching$  sz   ##E*##I. 	gmm$224gmmD, 	,,W]];<--gmm<='--w}}e)TUb),,W]];< 	b)))'--89w}}d&;< 	))*224g6F6FG, 	--gmm<= 	(224g6F6FG,,b) 	--gmm<=,,W-=-=>?--gmm<=,,W-=-=>?))'--89 	224g6F6FG,,b) 	--g.>.>?@--g.>.>?@**7+;+;<=ro   )r  r  )rw   rx   ry   rz   rK   rH	  r  rO	  rR	  rZ	  r	  ro	  rs	  r  ry	  r  r	  r	  r	  r	  r	  r{   r|   r  r  s   @@rJ   rB	  rB	  z  se     **B"P2H%7N8445
7
7D@16> 6>ro   rB	  c                   8   a  ] tR tRt o R tR tR tR tRtV t	R# )BaseFileTesti]  c                `    \         P                  V 4       \        R R4      V n        . V n        R# )r  ztest_logging-2-N)r   rK   rU  rT  rmfilesrs   s   &rJ   rK   BaseFileTest.setUp`  s$    t ):;ro   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	  rP  rs  ry  rz  rT  r   rV   )rF   rT  s   & rJ   rV   BaseFileTest.tearDowne  sP    ,,BIIbM 77>>$''""IIdgg$ro   c                    V P                  \        P                  P                  V4      R V,          R7       V P                  P                  V4       R# )zLog file %r does not existr  N)rE   rP  ry  rz  r	  r  )rF   r$  s   &&rJ   assertLogFileBaseFileTest.assertLogFilel  s=    x088C 	 	EH%ro   c           
     t    \         P                  ! R \         P                  R^V P                  4       RRR4      # )r  r  N)r    r  r:   rt   rs   s   &rJ   next_recBaseFileTest.next_recr  s5      gmmS!!%!2!2!4dD$H 	Hro   )rT  r	  N)
rw   rx   ry   rz   rK   rV   r	  r	  r{   r|   r}   s   @rJ   r	  r	  ]  s      
 &H Hro   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# )re  Trf  N)rP  rs  rT  r    r  r  r8   rx  ry  rz  rw  r   r  rE   rN   )rF   fhs   & rJ   
test_delayFileHandlerTest.test_delayw  s    
		$''  7$G"))$01
		'''+,RYY'tww/0

ro   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)re  r  )rg  rz  r  r   N)rP  rs  rT  r    r  r@   r=   r^  r	  rN   r  r^   re   rm  )rF   r	  r  s   &  rJ   %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)rw   rx   ry   rz   r	  r	  r{   r|   r}   s   @rJ   r	  r	  v  s     	5 	5ro   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)re  rg  maxBytesNr     
)	r    rB   r  rT  rx  shouldRolloverrN   r  r  )rF   rhr   s   &  rJ   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# )re  r	  N)	r    rB   r  rP  devnullrx  r	  r	  rN   rF   r	  s   & rJ   !test_should_not_rollover_non_file9RotatingFileHandlerTest.test_should_not_rollover_non_file  sR    
 11

Wq 2 :**4==?;<

ro   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	  Nre  r	  )
r  rT  r  r    rB   r  rE   r	  r	  rN   )rF   r   r	  s   &  rJ   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# )re  r  N)
rP  rs  rT  r    rB   r  r^  r	  r	  rN   r	  s   & rJ   test_file_created)RotatingFileHandlerTest.test_file_created  s`     			$''11$''G1L
 477#

ro   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	# )rh  rg  re  backupCountr	  r  r  .1.2Ndbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb)rP  rs  rT  r    rB   r  r  ry  rz  r   rx  r	  r^  r	  rE   rN   )rF   rh  rR  r	  smalllarges   &&    rJ   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

ro   c                *    V P                  R R7       R# )T)rh  N)r	  rs   s   &rJ   test_max_bytes_delay,RotatingFileHandlerTest.test_max_bytes_delay  s    $'ro   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   &rJ   namer>RotatingFileHandlerTest.test_rollover_filenames.<locals>.namer  s    '>!ro   re  rg  r	  r	  r	  r	  .3N)r    rB   r  rT  r	  r^  r	  r	  rx  rP  ry  rz  rN   )rF   r	  r	  s   &  rJ   test_rollover_filenames/RotatingFileHandlerTest.test_rollover_filenames  sn   	"11GGg1q 2 B
 477#dggn(=>?
 5401dggn(=>?
 5401dggn(=>?
 dggn(=>?

ro   c                    ! 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   )rF   rH   s   &&rJ   r	  `RotatingFileHandlerTest.test_namer_rotator_inheritance.<locals>.HandlerWithNamerAndRotator.namer  s    g~%ro   c                    \         P                  P                  V4      '       d    \         P                  ! WR ,           4       R# R# ).rotatedN)rP  ry  rz  r<  )rF   sourcedests   &&&rJ   rotatorbRotatingFileHandlerTest.test_namer_rotator_inheritance.<locals>.HandlerWithNamerAndRotator.rotator  s+    77>>&))JJvj'89 *ro   r   N)rw   rx   ry   rz   r	  r	  r{   r|   r}   s   @rJ   HandlerWithNamerAndRotatorr	    s     &: :ro   r	  re  r	  r	  r	  r	  N)r    rB   r  rT  r^   r	  r^  r	  r	  rx  rP  ry  rz  rN   )rF   r	  r	  s   &  rJ   test_namer_rotator_inheritance6RotatingFileHandlerTest.test_namer_rotator_inheritance  s    	:)9)9)M)M 	: (GGg1qB$''*DGGg,=>
 477#
 288DGGdN3j@A4(@AB

ro   c                   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   &rJ   r	  3RotatingFileHandlerTest.test_rotator.<locals>.namer  s    %<ro   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  re   zlibcompressr  rP  r  )r	  r	  sfr  
compresseddfs   &&    rJ   r	  5RotatingFileHandlerTest.test_rotator.<locals>.rotator   sq    fd##rwwy!]]43
$%%HHZ( & $
 IIf &% $#s#   <BB	#BBBB.	re  r	  r	  r	  rg  Nr	  r	  )r    rB   r  rT  r	  r	  r	  r^  r	  rP  linesepr  re   r	  
decompressr^   r  r  rx  ry  rz  rN   )rF   r	  r	  r	  m1m2rT  newliner   r	  r  s   &          rJ   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)rw   rx   ry   rz   r	  r  r  r   is_wasir	  r	  r	  r	  r	  r	  r	  requires_zlibr	  r{   r|   r}   s   @rJ   r	  r	    sj     ( __W__&EF G.(&& * *ro   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# )Sre  rg  r	  皙?r  ztesting - device fileN)r    rB   r  rP  r	  r  r  r   rx  r	  rN   )rF   r	  r   s   &  rJ   r	  5TimedRotatingFileHandlerTest.test_should_not_rollover)  sp     66

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

3!!5*A"BC**1-.

ro   c                   \         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	  re  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    rB   r  rT  r=   r@   r   r^  r	  r  r  rN   r  r  r  	timedeltastrftimerP  ry  rz  r	  r  r   listdirrK  r  rq  r  r   r  re   rE   )rF   r	  r_  r'  r(  foundr  GO_BACKsecsprevrT  r  dnr   filesry  tfs   &                rJ   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MIDNIGHTre  )rg  whenatTimer  z	testing1 r  Nz	testing2 daysr   z%Y-%m-%d)r   rs  rT  r  r  r  r
  r  r<  r    r=   weekdayr  rB   r  r@   r   r^  rN   r	  r  	enumerater  rP  utime	timestampr
  )rF   weeklyr  r
  r_  r
  r  r	  r(  r   r1  rolloverDateotherfns   &&           rJ   test_rollover_at_midnight6TimedRotatingFileHandlerTest.test_rollover_at_midnight^  s   !##%V''+1c1 JJf0044;<##'')CXXZFA. 9:&,3;;=/"*qA!!::' ; EBOOC &&1#'?@BGGBKHHJ  	477#$''G,,$Q<	!ot4 ( - 	3==?Q.023qA!!::' ; EBOOC &&1#'?@BGGBKHHJ  X//&QaHHWWIQ|H567#$''G,,$Q<	!ot4 ( - 'G,,$Q<	!ot4 ( -,% -,, -, -,,s$   *N>*O
*O%>O	O"	%O6	c                *    V P                  R R7       R# )T)r
  N)r 
  rs   s   &rJ   test_rollover_at_weekday5TimedRotatingFileHandlerTest.test_rollover_at_weekday  s    &&d&3ro   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# )Xre  Trf  r
  W7N)r\  r  r    rB   r  rT  )rF   r\  s   & rJ   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ro   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   re  r
  TNrg  r
  r   r
  Q i  i_   i@ ж  )	r    rB   r  rT  computeRolloverr^   rN   r  r  )rF   currentTimer	  ri   r
  s   &    rJ   "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,
  re  zW%dT)rg  r
  intervalr	  r   r
  zfailed in timezone: %dzlocal vars: %sNr-
  i:	 r.
  )r  r  r  r  tm_wdayr  r    rB   r  rT  r/
  r  timezonelocalsr^   rN   )	rF   r0
  todayr
  wdaydayr	  rj   ri   s	   &        rJ   #test_compute_rollover_weekly_attime@TimedRotatingFileHandlerTest.test_compute_rollover_weekly_attime  s   $))+&E11r1a({{5!))8C!!::'aUV ; )B): !"D3H #
HL(L(!++E2%2T]]BC*VX56  2++EL,@1,DE%2T]]BC*VX56  2; 00H++EL,@A%2T]]BC*VX56  2++EL,@A%2T]]BC*VX56  2
[ Z 
s   -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)rf  r5	  %Y-%m-%d_%H-%M-%Sr
  a.bd.er  z%s.logrl   Tr
  r4
  r	  rh  z.log.c                     \         P                  P                  V 4      w  rVP                  R R4      R ,           p\         P                  P	                  W4      # )r  r   )rP  ry  r   r<  r   r$  r
  basenames   &  rJ   r	  HTimedRotatingFileHandlerTest.test_compute_files_to_delete.<locals>.namer  sA    (*h(?%G'//;fDH77<<::ro   r   r  c                     \         P                  P                  V 4      w  rR VR,          ,           R,           p\         P                  P                  W4      # )r  :   NN.oldlog)rP  ry  r   r   rC
  s   &  rJ   r	  rE
    s=    (*h(?%G"Xb\1I=H77<<::ro   z
g%s.oldlogr  Nz%s.log.rH
  )r?
  za.b.cr@
  zd.e.fr  )rN  mkdtempr   shutilrmtreer  r  r  r  r
  r
  rP  ry  r   r    rB   r  rK  r	  r  r
  getFilesToDeleter^   r_   r   rT  r  rE   isdigit)rF   wdtimesr  r  prefixesr
  rotatorsr   r  r	  r)  r	  rT  r   
candidatesr  r  s   &                 rJ   test_compute_files_to_delete9TimedRotatingFileHandlerTest.test_compute_files_to_delete  s   _5r*""$rALL%89:($$Q//B  9FRF!23A&&??IJLMFJ @ LG OOG$  ''ALL!:; ""5)); !&ALL!:; 3; !&ALL!12 1 6 BR$Aa!  
 #8,IAkG 113JS_a<  ''&#AGGMM!,EAr))"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
# )rf  r5	  r>
  r
  rl   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PathrN  rI
  r   rJ
  rK
  r  r  r  r  r
  r
  r
  r    rB   r  touchrL
  r^   r_   rY   rZ   rP  ry  r   rT  r  )rF   rN
  rO
  r  n_filesr  rP
  r
  rQ
  r  r   r	  r	  r)  r   rR
  matcherr  r  rT  r]  s   &                    rJ   ?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	   -ro   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
  currentrj   ri   diffr	  rF   s   &&  rJ   rB  OTimedRotatingFileHandlerTest.test_compute_rollover_MIDNIGHT_local.<locals>.testd  R    ''(9(9(;<F..00D  q(*<*<T*JK ro   re  r
  Frg  r
  r     r+
  foldNr  r    rB   r  rT  rN   r  rF   DTrB  r	  s   f  @rJ   $test_compute_rollover_MIDNIGHT_localATimedRotatingFileHandlerTest.test_compute_rollover_MIDNIGHT_local`  st    	L 66GGgJE 7 C 	RaRR("T1b!Q*?@RaQ"BtQAq$9:RaQ"BtQAq$9:Rb!RR("T2q!Q*?@Rb!Q"BtRAq$9:Rb!Q"BtRAq$9:

66GGgJE==Q* 7 , 	RaRR("T1b"a*@ARaR#RaR%;<RaR#RaR%;<Rb!RR("T2q"a*@ARb!R#Rb!R%;<Rb!R#Rb!R%;<

66GGgJE==Aq) 7 + 	RaQB'D!RA)>?RaQ"BtQAq$9:RaQ"BtQAq$9:RaQB'D!RA)>?RaQ"BtQAq$9:RaQ"BtQAq$9:Rb!QB'D"aA)>?Rb!Q"BtRAq$9:Rb!Q"BtRAq$9: 	Rb!QB'D"aA)>?Rb!QBQ/D"aA1FGRb!Q"BtRAq$9:Rb!Q"BtRAq$9:

66GGgJE==B* 7 , 	RaQB'D!RB)?@RaQ#RaQ%;<RaQ"BtQAr$:;RaQB'D!RB)?@RaQ"BtQAr$:;RaQ#RaQ%;<Rb!QB'D"aB)?@Rb!Q#Rb!Q%;<Rb!Q"BtRAr$:;

66GGgJE==B* 7 , 	RaQB'D!RB)?@RaQ#RaQ%;<RaQB'D!RB)?@RaQ"BtQAr$:;RaQ#RaQ%;< 	Rb!Q"BtRAr$:;Rb!QB'D"aB)?@Rb!Q#Rb!Q%;<Rb!QB'D"aB)?@ 	Rb!Q*BtRAr,JKRb!QBQ/D"aBQ1OPRb!Q+Rb!Q-CDRb!QBQ/D"aB1GHRb!Q"BtRAr$:;Rb!Q#Rb!Q%;<

ro   c                  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   &&  rJ   rB  ITimedRotatingFileHandlerTest.test_compute_rollover_W6_local.<locals>.test  re
  ro   re  W6Frf
  rg
  r+
  rh
  Nrj
  rk
  s   f  @rJ   test_compute_rollover_W6_local;TimedRotatingFileHandlerTest.test_compute_rollover_W6_local  s	    	L 66GGgDe 7 = 	RaBB'D!Q1)=>RaAq!2dAr1a#89RaAq!2dAr1a#89Rb"b"b)2dBAq+ABRb"a#Rb!Q%:;Rb"a#Rb!Q%:;

66GGgDe==Aq) 7 + 	RaRR("T1b!Q*?@RaQ"BtQAq$9:RaQ"BtQAq$9:Rb!RR("T2q!Q*?@Rb!Q"BtRQ$:;Rb!Q"BtRQ$:;

66GGgDe==Q* 7 , 	RaBB'D!QA)>?RaB"BtQB$:;RaB"BtQB$:;Rb"b"b)2dBB+BCRb"b!$br1b!&<=Rb"b!$br1b!&<=

66GGgDe==Aq) 7 + 	RaAr2&4Aq!(<=RaAq!2dAr1a#89RaAq!2dAr1a#89RaQB'D!RA)>?RaQ"BtQAq$9:RaQ"BtQAq$9:Rb"aR("T2r1a*@ARb"a#Rb!Q%:;Rb"a#Rb!Q%:; 	Rb!QB'D"aA)>?Rb!QBQ/D"aA1FGRb!Q"BtRQ$:;Rb!Q"BtRQ$:;

66GGgDe==B* 7 , 	RaAr2&4Aq"(=>RaAr"BtQAr$:;RaAq!2dAr1b#9:RaQB'D!RB)?@RaQ"BtQAr$:;RaQ#RaQ%;<Rb"aR("T2r1b*ABRb"a$br1a&<=Rb"a#Rb!Q%;<

66GGgDe==B* 7 , 	RaQB'D!RB)?@RaQ#RaQ%;<RaQB'D!RB)?@RaQ"BtQAr$:;RaQ#RaQ%;< 	Rb!Q"BtRAr$:;Rb!QB'D"aB)?@Rb!Q#Rb"a%<=Rb!QB'D"b!R)@A 	Rb!Q*BtRAr,JKRb!QBQ/D"aBQ1OPRb!Q+Rb"a-DERb!QBQ/D"b!R1HIRb!Q"BtRQ$;<Rb!Q#Rb"a%<=

ro   c                  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   &&  rJ   rB  XTimedRotatingFileHandlerTest.test_compute_rollover_MIDNIGHT_local_interval.<locals>.testR  re
  ro   re  r
  Frg  r
  r   r4
  rg
  rg  r
  r   r4
  r
  Nrj
  rk
  s   f  @rJ   -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%;<

ro   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   &&  rJ   rB  RTimedRotatingFileHandlerTest.test_compute_rollover_W6_local_interval.<locals>.test  re
  ro   re  rr
  Frx
  rg
  ry
  Nrj
  rk
  s   f  @rJ   '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&=>

ro   r   Nr	  )rw   rx   ry   rz   r  r  r   r	  r	  r
  r 
  r#
  r(
  r1
  r;
  rS
  r[
  run_with_tzrm
  rs
  rz
  r
  r{   r|   r}   s   @rJ   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ro   r	  c                  f    \         P                  ! R/ V B \         P                  ! ^R7      ,          # )rq   r
  r   )r  r
  )r  s   ,rJ   r

  r

    s&    ##x'9'9!'DDDro   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)re  T)rg  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    rB   r  rT  r/
  rK  r

  r   r  r  	localtime	_MIDNIGHTr  rq  r  r  r^   rN   )rF   r
  r4
  expr	  r0
  ri   r)  currentHourcurrentMinutecurrentSecondr   rG  ra  s   &&&&          rJ   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    rB   NTEventLogHandler
pywintypesr   winerrorr  SkipTestr   rw  rN   
assertLessEVENTLOG_BACKWARDS_READEVENTLOG_SEQUENTIAL_READReadEventLog
SourceNamewin32evtlogutilSafeFormatMessagerE   )rF   logtypeelhnum_recsrU   ra  r   flagsr
  r	
  rN  r  s   &           rJ   r   NTEventLogHandlerTest.test_basic  sN   &&tW599#>	  22>BA !!5*<"=>			+"H"H"MN33445))#g>A||~-!33A?C,,E  DgM'1  	zzQ''(MNN	s   E	 	F(FFr   N)rw   rx   ry   rz   r  r{   r|   r}   s   @rJ   r
  r
    s     ( (ro   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    )rF   r
  s   & rJ   test__all__MiscTestCase.test__all__$  s    ,
 	T7Fro   r   N)rw   rx   ry   rz   r
  r{   r|   r}   s   @rJ   r
  r
  #  s     G Gro   r
  c                  \    \         P                  ! \        P                  ! R R4      4       R# )LC_ALLr   N)r  enterModuleContextr   run_with_localer   ro   rJ   setUpModuler
  0  s     7 7" EFro   __main__r   r	  )r	  rq   )M<   )Hi  )Dr,
  )r
  r,
  )rq   r  )r    logging.handlerslogging.configr:  r  r&   r  rV
  r  r6   r  r&  rB  rP  rp  r  rY   rJ
  r  r  rq  rN  test.support.script_helperr   r   rB  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  rU  rW  rv  r  r;   r  r  r  r  r  r8  rE  rf  rx  r  r  r  r   r  r  r  r=   r  r  r  ru  r"  r  r  r  r  r  IPV6_ENABLEDr  r  r  r1  rC  r[  r]  rc  re  rB   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
  rH   rw   rc  r
  r
  r
  mainr   ro   rJ   <module>r
     s  *          	  	  	   	    
  N  & " & ) ( !  3        :  +D D633	 OOEG  OO4(-/ 
d'x   d'NUI UIn<%h <%L 		
FFQJ' (*	'**)++,
( +gnn +: :C' C'L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$   ^3 #_ 3____