python (3.11.7)

(root)/
lib/
python3.11/
test/
__pycache__/
test_logging.cpython-311.pyc

eT)dZddlZddlZddlZddlZddlZddlZddlZddlZddl	Z	ddl
Z
ddlZddlZddl
Z
ddlZddlZddlZddlZddlZddlZddlZddlZddlmZmZddlmZddlmZddlmZddlmZddlmZdd	l m!Z!ddl"Z"ddl#Z#ddl$Z$ddl%Z%ddl&Z&ddl'Z'dd
l(m)Z)m*Z*ddl+m,Z,m-Z-ddl.m/Z/m0Z0m1Z1m2Z2ej3d
Z4ej3dZ5	ddl6Z6ddl7Z7ddl8Z8n#e9$r	dxZ6xZ7Z8YnwxYw	ddl:Z:n#e9$rYnwxYwe%j;ej<dZ=Gdde%j>Z?Gdde?Z@Gdde?ZAdZBdZCdZDdZEdZFdZGdZHdZIdZJdZKeLeKeBd zZMeBd!eCd"eDd#eEd$eFd%eGd&eHd'eId(eJd)eKd*i
ZNGd+d,ejOZPGd-d.ejOZQGd/d0e?ZRGd1d2e?ZSGd3d4eTZUGd5d6ejVZWGd7d8eTZXGd9d:e?ZYGd;d<e5jZZ[Gd=d>eTZ\Gd?d@e\e)Z]GdAdBe\e1Z^GdCdDe\e/Z_e`edErGdFdGe^ZaGdHdIe_ZbejcejdGdJdKe?ZeGdLdMe?ZfGdNdOejgZhGdPdQe?ZiejcejdGdRdSe?ZjdTZke%jle`edEdUGdVdWejZmejcejdGdXdYe?Zne%jle`edEdUGdZd[enZoejcejdGd\d]e?Zpe%jle`edEdUGd^d_epZqe%jlejrd`GdadbepZsejcejdGdcdde?ZtGdedfe?ZuGdgdhe?ZvGdidje?ZwddkZxGdldmZydnZzGdodpejVZ{Gdqdre?Z|Gdsdte?Z}Gdudve?Z~GdwdxejZGdydze?ZejdGd{d|e?Ze`ejd}r-ddlZdd~lmZejdGdde?ZejdZGddejZeZGddZGdde%j>eZGddejZGdde%j>ZGdde?ZGdde?ZGddZGddejZGdde?ZGdde?ZGdde?ZGdde%j>ZGdde%j>ZGdde?eZGdde?ZGddeZGddeZGddeZdZddddddeddffD]\ZZeefdZeedezee%jle6dGdde?ZGdde%j>ZdZedkre%jdSdS)zoTest harness for the logging module. Run all tests.

Copyright (C) 2001-2023 Vinay Sajip. All Rights Reserved.
N)assert_python_okassert_python_failure)support)	os_helper)
socket_helper)threading_helper)warnings_helper)TestHandler)
HTTPServerBaseHTTPRequestHandler)urlparseparse_qs)ThreadingUDPServerDatagramRequestHandlerThreadingTCPServerStreamRequestHandlerasyncoresmtpdz?libasan has a pthread_create() dead lock related to thread+forkc8eZdZdZdZdZdZdZdZd
dZ	d	Z
dS)BaseTestzBase class for logging tests.z&%(name)s -> %(levelname)s: %(message)sz^([\w.]+) -> (\w+): (\d+)$rcztj|_tjjj}tj	tj	|_
tjdd|_|	x|_
}tj	|_tj	|_ix|_}|D]}t'||dd||<	tjn#tjwxYwtjd|_tjd|_tjd|_|j|_t5j|_|jtjtj|j|_ tj!|j"|_#|j $|j#|j%r+|jj&|jj&z}tOd|z|j%r+|jj&|jj&z}tOd|z|j(|j |)|j%|)|j%dS)zxSetup the default logging stream to an internal StringIO instance,
        so that we can examine log output as we want.Ndisabledu«×»uĿÖGzUnexpected handlers: %s)*rthreading_setup_threading_keylogging	getLoggermanager
loggerDict_acquireLock	_handlerscopysaved_handlers_handlerListsaved_handler_list
saved_loggers_nameToLevelsaved_name_to_level_levelToNamesaved_level_to_name
logger_statesgetattr_releaseLocklogger1logger2root_loggergetEffectiveLeveloriginal_logging_levelioStringIOstreamsetLevelDEBUG
StreamHandler	root_hdlr	Formatter
log_formatroot_formattersetFormatterhasHandlershandlersAssertionError
addHandler
assertTrue)selflogger_dictr&r+namehlists      E/BuggyBox/python/3.11.7/bootstrap/lib/python3.11/test/test_logging.pysetUpzBaseTest.setUp^s/>@@'))1<	#")"3"8"8":":D&-&:111&=D#1<1A1A1C1CCD'.';'@'@'B'BD$'.';'@'@'B'BD$133D%
@
@&-mD.A.8$'@'@
d##
@
 """"G """"(88()=>>",R00&*&6&H&H&J&J#kmm!!'-000 .t{;;%/@@##D$7888<##%%	DL)D,<,EEE !:U!BCCC<##%%	DL)D,<,EEE !:U!BCCC##DN3330022333002233333s

CD$$D9c|j|j|j|jjrL|jjd}|j|||jjL|j|jtj		tj
tj
|j
tjtj|jtjtj|j|jtjdd<tjj}d|_|j}|||j|j}|jD]"}|||||j|_#	tjn#tjwxYw|t;j|jdS)zJRemove our logging stream, and restore the original logging
        level.rN) r5closer0
removeHandlerr9r?r6r2rr r)clearupdater*r'r(r!r#r%r$rrdisablerr&r+rr-
doCleanupsrthreading_cleanupr)rChrrr+rEs      rGtearDownzBaseTest.tearDowns0	
&&t~666'	 )!,A**1---
GGIII'		
!!$"=>>>	# &&((( ''(@AAA &&((( ''(@AAA##%%%$$T%8999&*&=G #'))1GGO +Jd0111 .M*
L
L &28Ed8KD&t,5
L
 """"G """"*D,?@@@@s
E!H::INcN|p|j}tj|p|j}|}|t|t|t||D]i\}}|	|}|s|
d|z|t||j|
}|r|
d|zdSdS)zMatch the collected log lines against the regular expression
        self.expected_log_pat, and compare the extracted group values to
        the expected_values list of tuples.z*Log line does not match expected pattern:
z'Remaining output at end of log stream:
N)r5recompileexpected_log_patgetvalue
splitlinesassertEquallenzipsearchfailtuplegroupsread)	rCexpected_valuesr5patactual_linesactualexpectedmatchss	         rGassert_log_lineszBaseTest.assert_log_liness)&4;j5 566((3355\**C,@,@AAA #L/ B B	>	>FHJJv&&E
$		G"#$$$U5<<>>22H====KKMM	FII@1DEEEEE	F	Fc6|xjdz
c_d|jzS)zMGenerate a message consisting solely of an auto-incrementing
        integer.z%d)message_numrCs rGnext_messagezBaseTest.next_messages&	
Ad&&&riNN)__name__
__module____qualname____doc__r;rVrlrHrRrhrnrirGrrVst''9J4K(4(4(4T A A ADFFFF$'''''rirc<eZdZdZdZdZdZdZdZdZ	dZ
d	S)
BuiltinLevelsTestz*Test builtin levels and their inheritance.cB|j}tjd}|tjtjtjdi}|tjtjd}|tj|tj	||
||tj	||
||||||tj	||
||||||
||||||
||
||gddS)NERRINFDEB))rxCRITICAL1)rxERROR2)ryr{3)ryr}4)ryWARNING5)ryINFO6)rzr{7)rzr}8)rzr9)rzr10)rzr711)rnrrr6r}
LoggerAdapterrr7logr{errorwarninginfodebugrh)rCmrxryrzs     rG	test_flatzBuiltinLevelsTest.test_flats&&W]####G$5e$<$<bAAW\"""&&W]###	 !!##&&&		!!## !!##&&&		!!##AACC


 !!##&&&		!!##AACC


		!!##	AACC


		!!##		!!##


					ricF|j}tjd}|tjtjd}|tj|tj||||	||
||||ddgdS)NryINF.ERR)rr{r|)rr}r~
rnrrr6rr}rr{rrrrrh)rCrryINF_ERRs    rGtest_nested_explicitz&BuiltinLevelsTest.test_nested_explicits&&W\"""$Y//'''	G$aacc***

aacc	QQSS

aacc(%
					ric|j}tjd}|tjtjd}|tjtjd}tjd}tjd}|tj||||	||
||tj||||||	||
||||gddS)Nryr	INF.UNDEF
INF.ERR.UNDEFUNDEF))rr{r|)rr}r~)rrr)rrr)rr{r)rr}rr)rCrryr	INF_UNDEF
INF_ERR_UNDEFrs       rGtest_nested_inheritedz'BuiltinLevelsTest.test_nested_inheriteds&&W\"""$Y//'''%k22	)/::
!'**	

g&,,,!!##qqss'*AACC000AACC   	aacc"""1133AACC   


					ric|j}tjd}tjd}tjd}|tj|tj||||tj||||||||	gddS)NryINF.BADPARENT.UNDEF
INF.BADPARENT))rr{r|)rrr~)rr{r)rrr)
rnrrr6rrFATALrrrh)rCrry
GRANDCHILDCHILDs     rGtest_nested_with_virtual_parentz1BuiltinLevelsTest.test_nested_with_virtual_parent/s&&&'<==
!/22W\"""	w}aacc***
		'-%%%

1133	
AACC


					ric|tjdtj|tjtjddS)z&See issue #22386 for more information.rN)rYrgetLevelNamerrms rGtest_regression_22386z'BuiltinLevelsTest.test_regression_22386IsN-f55w|DDD-gl;;VDDDDDricntjd}||tjdS)Nr)rrrYr)rCfatals  rGtest_issue27935z!BuiltinLevelsTest.test_issue27935Ns0$W--
.....rictjtjd|tjtjd|tjtjd|tjtjd|tjdtjdS)z&See issue #29220 for more information.rrNOTSETN)raddLevelNamer
addCleanuprYrrrms rGtest_regression_29220z'BuiltinLevelsTest.test_regression_29220RsW\2...,glFCCC-gl;;R@@@-gn==xHHH-h77HHHHHriN)rprqrrrsrrrrrrrrtrirGrvrvs44---^.!!!F4EEE
///IIIIIrirvc$eZdZdZdZdZdZdS)BasicFilterTestzTest the bundled Filter class.ctjd}|jjd}	||tjd}tjd}tjd}tjd}|||||||||ddg|	|dS#|	|wxYw)N	spam.eggsrspamspam.eggs.fishspam.bakedbeansrrr~rrr)
rFilterr0r?	addFilterrrrnrhremoveFilter)rCfilter_handlerr	spam_eggsspam_eggs_fishspam_bakedbeanss       rGtest_filterzBasicFilterTest.test_filter^sS.--"+A.	*g&&&$V,,D)+66I$./?@@N%/0ABBOIId''))***NN4,,../// 1 1 3 3444  !2!2!4!4555!!*/#




  )))))G  ))))sDEE.cd}|jjd}	||tjd}tjd}tjd}tjd}|||||||||ddg||dS#||wxYw)	Nc||jd}d|dd}|dkS)N.r)rEsplitjoin)recordpartsprefixs   rG
filterfuncz8BasicFilterTest.test_callable_filter.<locals>.filterfunczs;K%%c**EXXeBQBi((F[((rirrrrrrr)	r0r?rrrrrnrhr)rCrrrrrrs       rGtest_callable_filterz$BasicFilterTest.test_callable_filtervsS	)	)	)
"+A.	-j)))$V,,D)+66I$./?@@N%/0ABBOIId''))***NN4,,../// 1 1 3 3444  !2!2!4!4555!!*/#




  ,,,,,G  ,,,,sDEEctj}tjddi}|||dS)NrEr)rr
makeLogRecordrBfilter)rCfrs   rGtest_empty_filterz!BasicFilterTest.test_empty_filtersFN!6;"788$$$$$riN)rprqrrrsrrrrtrirGrrZsG((***0---:%%%%%rirxwvutsrqporkSilentTaciturnTerseEffusiveSociableVerbose	Talkative	Garrulous
ChatterboxBoringceZdZdZdZdS)GarrulousFilterz)A filter which blocks garrulous messages.c"|jtkSN)levelno	GARRULOUSrCrs  rGrzGarrulousFilter.filters~**riNrprqrrrsrrtrirGrrs)33+++++rirceZdZdZdZdS)VerySpecificFilterz5A filter which blocks sociable and taciturn messages.c,|jttfvSr)rSOCIABLETACITURNrs  rGrzVerySpecificFilter.filters~h%999riNrrtrirGrrs)??:::::rirc4eZdZdZdZdZdZdZdZdZ	dS)	CustomLevelsAndFiltersTestz@Test various filtering possibilities with custom logging levels.^[\w.]+ -> (\w+): (\d+)$ct|tD]\}}t	j||dSr)rrHmy_logging_levelsitemsrr)rCkvs   rGrHz CustomLevelsAndFiltersTest.setUpsSt%++--	'	'DAq A&&&&	'	'ricjtD]*}|||+dSr)LEVEL_RANGErrn)rCloggerlvls   rGlog_at_all_levelsz,CustomLevelsAndFiltersTest.log_at_all_levelss>	1	1CJJsD--//0000	1	1ric|jt||j|gddS)N)rrrrrrrrrrrr)r0r6VERBOSErrhrms rGtest_logger_filterz-CustomLevelsAndFiltersTest.test_logger_filtersa!!'***t/000


					ric|jjdt	||j|gd|jjdtjdS#|jjdtjwxYw)Nr)rrrrr)r0r?r6rrrhrrrms rGtest_handler_filterz.CustomLevelsAndFiltersTest.test_handler_filters!!$--h777	B""4#3444!!###



%a(11'.AAAAAD%a(11'.AAAAs1B1B?cb|jjd}d}t}||	||jgd}||t
}|j|||j||gdz|r|j|||dS#|r|j|||wxYw)Nr)	)rr|)rr~)rrrrrrrr))rr)r12)r14)r15)r17)r18)r20)r0r?rrrrhrr)rCrspecific_filtergarrfirst_liness     rGtest_specific_filtersz0CustomLevelsAndFiltersTest.test_specific_filterssY"+A.  $!	'""4#3444K
!!+...022O&&777""4#3444!!+
1

1

1

#







? --o>>>  &&&&&
? --o>>>  &&&&sBC;;3D.N)
rprqrrrsrVrHrr	rrrtrirGrrspJJ3'''
111BBB ('('('('('rirc^eZdZdZdZdZejej	dkdeje
jdej
e
jddZe
jej
ed	Zd
S)HandlerTestctj}d|_||jdd|_||jd|t
|jddS)Ngenericanothergeneric)rHandlerrErYassertRaisesNotImplementedErroremitrCrQs  rG	test_namezHandlerTest.test_name'soO+++!!1222-qvt<<<<<ric8tjdvrRdD]}tj\}}t	j||st	j|tj	|dd}|r|j
|j}}||d||dtj
ddi}||t	j||tj||||tj|n6||j
d||jd||rt	j|tjd	krd
}nd}	tj|}||j|j||j|n#t.$rYnwxYwdD]k}	|	d
kr.|t2tjjdd|	6tjdd|	}|ltjd}tj
i}||||tjd}||||dS)Nlinuxdarwin)TFutf-8TencodingdelaymsgTestr%z/var/run/syslogz/dev/log)GETPOSTPUTr/	localhostz/logrrk)sysplatformtempfilemkstemposrJunlinkrr?WatchedFileHandlerdevinorYrhandleassertFalsepathexistsrB
SysLogHandlerfacilityLOG_USER
unixsocketOSErrorr
ValueErrorHTTPHandlerBufferingHandlershouldFlush)
rCexistingfdfnrQr8r9rsocknamemethods
          rGtest_builtin_handlersz!HandlerTest.test_builtin_handlers/s%<...)
"
"!)++B"IbMMM$77WTX7YY0 uaeC$$S"---$$S"----ufo>>AHHQKKKIbMMM$$RW^^B%7%7888HHQKKKOOBGNN2$6$67777$$QUB///$$QUB///			"IbMMM|x'',%
$228<<  QZ888---				



,		F!!*g.>.J"-vv????$00ffMM				--a00!"%%

a(()))				--a00q))***						s$A-I
IIc>tj\}}tj|tj|tj|}tj|dfftj	j
|dfftj	j|dfff}tj
dvr|tj	j|dfffz
}|D]g\}}||ddi}|tj||tj|hdS)zs
        Test that Path objects are accepted as filename arguments to handlers.

        See Issue #27493.
        warQr#r(r&N)r3r4r5rJr6pathlibPathrFileHandlerr?RotatingFileHandlerTimedRotatingFileHandlerr1r2r7rBr<r=)rCrHrIpfncasesclsargsrQs        rGtest_path_objectszHandlerTest.test_path_objectses!##B

	"


l2(3*5%9C:F%>c
K
<...w':S#JGIIE		ICT,G,,AOOBGNN2..///
GGIIIIbMMMM			rintz/WatchedFileHandler not appropriate for Windows.z'Emscripten cannot fstat unlinked files.walltimec	Dfd}d}d}d_d_dD]}tjdd\}}t	j|t
j|||f}d|_|	tj|d|	}tj
d
}	||		t|D]}
t!jdtjdd
i}	t!j_||[#t($r!t+djdjwxYw	||tj|rt	j|#||tj|rt	j|wwxYwdS)Nct|D]j}	tj|tj_n#t
$rYnwxYwtjdtjddzkdS)NgMbp?r)	ranger5r6time
deletion_timerBsleeprandomrandint)fnametries_rCs   rGremove_loopz*HandlerTest.test_race.<locals>.remove_loops5\\
9
9Ie$$$)-D&&D
56>!Q#7#778888

9
9s,A
A
AiFT.logztest_logging-3-targetrXTr&r'z'%(asctime)s: %(levelname)s: %(message)s{Gzt?r+testingzDeleted at z, opened at )handle_timerar3r4r5rJ	threadingThreaddaemonstartrr?r7r:r=r_r`rbrr:	Exceptionprintrr<r=r6)rCrh	del_count	log_countr)rHrIremoverrQrrgrs`           rG	test_racezHandlerTest.test_race|s)	9	9	9	9	9		!"	"	"E%f.?@@FBHRLLL&kYPPPG!GNMMOOO 33BPU3VVA!"KLLA
NN1
"y))

AJu%%%-ui.ABBA+/9;;($040B0B0B040@0@BCCC	
			7>>"%%"IbMMM			7>>"%%"IbMMMM"1	"	"s%	;F?-D32F?3+EF??AHc|Gddtj}|ttjd||jjjd_	|
ttjd|
ttjdtjd}|
|tjt!jt!jfd}t!j|d	}|t+j}|dkrE	|d
t+jdd
S#t+jdwxYw|d|t7j|dd
S)z>Ensure child logging locks are not held; bpo-6721 & bpo-36533.c$eZdZfdZdZxZS)AHandlerTest.test_post_fork_child_no_deadlock.<locals>._OurHandlercttjt	ddd|_dS)Nz	/dev/nullwtr&r(r5)super__init__rr8opensub_handlerrC	__class__s rGrzJHandlerTest.test_post_fork_child_no_deadlock.<locals>._OurHandler.__init__sN  """#*#8TGDDD$F$F$F   ric|j	|j||jdS#|jwxYwr)racquirerreleasers  rGrzFHandlerTest.test_post_fork_child_no_deadlock.<locals>._OurHandler.emitsi ((***/$))&111$,,.....D$,,....sAA+rprqrrrr
__classcell__rs@rG_OurHandlerr|sL
F
F
F
F
F

/
/
/
/
/
/
/rirrz*because we need at least one for this testrk test_post_fork_child_no_deadlockc`tj		dn#wxYw	tjdS#tjwxYw)N?)rr rsetwaitrr-)+fork_happened__release_locks_and_end_threadlocks_held__ready_to_forkrefed_hsrGlock_holder_thread_fnzKHandlerTest.test_post_fork_child_no_deadlock.<locals>.lock_holder_thread_fns """
'!!!&-11333@DDSIIIOO%%%%GOO%%%%%$&&&&&$&&&&s"B)A)B)A??BB-z,test_post_fork_child_no_deadlock lock holder)rlrEz#Child process did not deadlock. \o/z&Parent process returned from fork. \o/)exitcodeN)rrrYrZr!rrr5rJrE
assertGreater_at_fork_reinit_lock_weaksetrrAr6r7rpEventrqrsrr5forkr_exitrrrwait_process)	rCrtest_loggerrlock_holder_threadpidrrrs	      @@@rGrz,HandlerTest.test_post_fork_child_no_deadlocks.
	/	/	/	/	/'/	/	/	/	
W.//333+--+28999C3w01115553wCDDaHHH'(JKKw'''W]+++$-O$5$5!6?o6G6G3	'	'	'	'	'	'	'2'-,CEEE	  """!&&(((gii!88
  !GHHH
FGGG7;;===##%%% q111111s%GG&N)rprqrrr!rLrYunittestskipIfr5rEr
is_emscriptenrrequires_working_threadingrequires_resourcery
requires_forkskip_if_asan_forkrrtrirGrr&s===444l.X_RW_&WXXX_H1022Wz***"*"+*32YX*"`W0022H2H232H2H2H2rirceZdZdZdS)	BadStreamc td)Ndeliberate mistake)RuntimeError)rCdatas  rGwritezBadStream.writes/000riN)rprqrrrrtrirGrrs#11111rirceZdZdZdS)TestStreamHandlerc||_dSr)error_recordrs  rGhandleErrorzTestStreamHandler.handleErrors"riN)rprqrrrrtrirGrrs######rirc eZdZejZdZdS)StreamWithIntNamerN)rprqrrrrlevelrErtrirGrrsNEDDDrirc eZdZdZdZdZdS)StreamHandlerTestctt}tji}tj}	||||j|tjt}tj
5}||d}|||dddn#1swxYwYdt_tj
5}|||
d|dddn#1swxYwY|t_dS#|t_wxYw)Nz"
RuntimeError: deliberate mistake
Fr)rrrrraiseExceptionsr:assertIsrr8rcaptured_stderrassertInrWrY)rCrQr	old_raisestderrr+s      rGtest_error_handlingz%StreamHandlerTest.test_error_handling
sikk**!"%%+		0
HHQKKKMM!.!,,,%ikk22A(**
6f<

c6??#4#4555
6
6
6
6
6
6
6
6
6
6
6
6
6
6
6
',G#(**
8f  V__%6%6777
8
8
8
8
8
8
8
8
8
8
8
8
8
8
8'0G###iG#////sUA#E9 AC, E9,C00E93C04"E9>E E9 E$$E9'E$(E99Fcftj}tj}||}||tj||}|||||}||dS)z3
        Test setting the handler's stream
        N)	rr8r3r4	setStreamrr1rassertIsNone)rCrQr5oldrds     rGtest_stream_settingz%StreamHandlerTest.test_stream_setting#s
!##kk&!!

c3:&&&S!!

ff%%%S!!&!!!!!rictjt}|t	|ddS)Nz<StreamHandler 2 (NOTSET)>)rr8rrYreprr s  rG'test_can_represent_stream_with_int_namez9StreamHandlerTest.test_can_represent_stream_with_int_name1s<!"3"5"566a">?????riN)rprqrrrrrrtrirGrrsF000,"""@@@@@rirc0eZdZdZdZdZdZdZdZdS)TestSMTPServera
    This class implements a test SMTP server.

    :param addr: A (host, port) tuple which the server listens on.
                 You can specify a port value of zero: the server's
                 *port* attribute will hold the actual port number
                 used, which can be used in client connections.
    :param handler: A callable which will be called to process
                    incoming messages. The handler will be passed
                    the client address tuple, who the message is from,
                    a list of recipients and the message data.
    :param poll_interval: The interval, in seconds, used in the underlying
                          :func:`select` or :func:`poll` call by
                          :func:`asyncore.loop`.
    :param sockmap: A dictionary which will be used to hold
                    :class:`asyncore.dispatcher` instances used by
                    :func:`asyncore.loop`. This avoids changing the
                    :mod:`asyncore` module's global state.
    ctj||d|d|jd|_||_d|_d|_||_	dS)NT)mapdecode_datarkF)
r
SMTPServerrsocketgetsocknameport_handler_thread_quit
poll_interval)rCaddrrrsockmaps     rGrzTestSMTPServer.__init__Msj
!!$d.2	"	4	4	4K++--a0	

*ric6|||||dS)aI
        Delegates to the handler passed in to the server's constructor.

        Typically, this will be a test case method.
        :param peer: The client (host, port) tuple.
        :param mailfrom: The address of the sender.
        :param rcpttos: The addresses of the recipients.
        :param data: The message.
        N)r)rCpeermailfromrcpttosrs     rGprocess_messagezTestSMTPServer.process_messageVs"	


dHgt44444rictj|j|jfx|_}d|_|dS)zG
        Start the server running on a separate daemon thread.
        rkTNrprq
serve_foreverrrrrrsrCts  rGrszTestSMTPServer.startbN%+43E262D1FHHH	Hq						ricj|js+t||jd|j)dSdS)a*
        Run the :mod:`asyncore` loop until normal termination
        conditions arise.
        :param poll_interval: The interval, in seconds, used in the underlying
                              :func:`select` or :func:`poll` call by
                              :func:`asyncore.loop`.
        rk)rcountN)rrloop_map)rCrs  rGrzTestSMTPServer.serve_foreverksN*	AMM-TYaM@@@*	A	A	A	A	Aricd|_tj|jd|_|t
|jddS)zr
        Stop the thread by closing the server instance.
        Wait for the server thread to terminate.
        TN)r
ignore_all)rrjoin_threadrrJr	close_allrrms rGstopzTestSMTPServer.stopvsS

$T\222

tyT:::::riN)	rprqrrrsrrrsrrrtrirGrr8sl(+++
5
5
5	A	A	A	;	;	;	;	;rirc4eZdZdZdZdZfdZdZxZS)ControlMixina

    This mixin is used to start a server on a separate thread, and
    shut it down programmatically. Request handling is simplified - instead
    of needing to derive a suitable RequestHandler subclass, you just
    provide a callable which will be passed each received request to be
    processed.

    :param handler: A handler callable which will be called with a
                    single parameter - the request - in order to
                    process the request. This handler is called on the
                    server thread, effectively meaning that requests are
                    processed serially. While not quite web scale ;-),
                    this should be fine for testing applications.
    :param poll_interval: The polling interval in seconds.
    c`d|_||_||_tj|_dSr)rrrrprready)rCrrs   rGrzControlMixin.__init__s+*
_&&


rictj|j|jfx|_}d|_|dS)zI
        Create a daemon thread to run the server, and start it.
        rkTNrrs  rGrszControlMixin.startrric|jtt||dS)z^
        Run the server. Set the ready flag before entering the
        service loop.
        N)rrrrr)rCrrs  rGrzControlMixin.serve_forevers;
	

lD!!//
>>>>>ric||j tj|jd|_||jdS)zK
        Tell the server thread to stop, and wait for it to do so.
        N)shutdownrrrserver_closerrLrms rGrzControlMixin.stops_	


<#(666DL
ri)	rprqrrrsrrsrrrrs@rGrrso'''?????							rirc$eZdZdZ		ddZdZdS)TestHTTPServera
    An HTTP server which is controllable using :class:`ControlMixin`.

    :param addr: A tuple with the IP address and port to listen on.
    :param handler: A handler callable which will be called with a
                    single parameter - the request - in order to
                    process the request.
    :param poll_interval: The polling interval in seconds.
    :param log: Pass ``True`` to enable log messages.
    rFNcGfddttj||t|||||_dS)Nc2eZdZddZdZfdZxZS)=TestHTTPServer.__init__.<locals>.DelegatingHTTPRequestHandlerNcX|dr|jSt|)Ndo_)
startswithprocess_requestAttributeError)rCrEdefaults   rG__getattr__zITestHTTPServer.__init__.<locals>.DelegatingHTTPRequestHandler.__getattr__s-??5))0//$T***ric:|j|dSrserverrrms rGrzMTestHTTPServer.__init__.<locals>.DelegatingHTTPRequestHandler.process_request$$T*****ricHrt|j|g|RdSdSr)rlog_message)rCformatrXDelegatingHTTPRequestHandlerrrs   rGrzITestHTTPServer.__init__.<locals>.DelegatingHTTPRequestHandler.log_messagesW;,E6   +F;59;;;;;;;;rir)rprqrrrrrr)rrrs@rGrrsf
+
+
+
+

+
+
+
;
;
;
;
;
;
;
;
;
;
;rir)rrrrsslctx)rCrrrrr	rs    ` @rGrzTestHTTPServer.__init__sy	;	;	;	;	;	;	;	;+A	;	;	;	D$(DEEEdG];;;ric	|j\}}|jr|j|d}n5#t$r(}t
jd|zd}~wwxYw||fS)NT)server_sidezGot an error:
%s
)racceptr	wrap_socketrBr1rr)rCsockres    rGget_requestzTestHTTPServer.get_requests	++--JD${
G{..t.FF			J2Q6777	Tzs?A
A4#A//A4)rFN)rprqrrrsrrrtrirGrrsI		58#'&					rirc2eZdZdZdZ		ddZfdZxZS)
TestTCPServera
    A TCP server which is controllable using :class:`ControlMixin`.

    :param addr: A tuple with the IP address and port to listen on.
    :param handler: A handler callable which will be called with a single
                    parameter - the request - in order to process the request.
    :param poll_interval: The polling interval in seconds.
    :bind_and_activate: If True (the default), binds the server and starts it
                        listening. If False, you need to call
                        :meth:`server_bind` and :meth:`server_activate` at
                        some later time before calling :meth:`start`, so that
                        the server will set up the socket and listen on it.
    TrcGddt}tj||||t|||dS)NceZdZdZdS);TestTCPServer.__init__.<locals>.DelegatingTCPRequestHandlerc:|j|dSrrrms rGr:zBTestTCPServer.__init__.<locals>.DelegatingTCPRequestHandler.handlerriN)rprqrrr:rtrirGDelegatingTCPRequestHandlerrs#
+
+
+
+
+rir)rrrr)rCrrrbind_and_activaters      rGrzTestTCPServer.__init__sl	+	+	+	+	+*>	+	+	+	#D$0K$5	7	7	7dG];;;;;rictt||jd|_dSNrk)rrserver_bindrrrrs rGrzTestTCPServer.server_bind=
mT""..000K++--a0			rirT)rprqrrrsallow_reuse_addressrrrrs@rGrrsd47#'<<<<111111111rirc8eZdZdZ		ddZfdZfdZxZS)
TestUDPServera0
    A UDP server which is controllable using :class:`ControlMixin`.

    :param addr: A tuple with the IP address and port to listen on.
    :param handler: A handler callable which will be called with a
                    single parameter - the request - in order to
                    process the request.
    :param poll_interval: The polling interval for shutdown requests,
                          in seconds.
    :bind_and_activate: If True (the default), binds the server and
                        starts it listening. If False, you need to
                        call :meth:`server_bind` and
                        :meth:`server_activate` at some later time
                        before calling :meth:`start`, so that the server will
                        set up the socket and listen on it.
    rTcGfddttj|||t|||d|_dS)Nc(eZdZdZfdZxZS);TestUDPServer.__init__.<locals>.DelegatingUDPRequestHandlerc:|j|dSrrrms rGr:zBTestUDPServer.__init__.<locals>.DelegatingUDPRequestHandler.handlerric|j}|rC	t|dS#t$r|jjsYdSwxYwdSr)wfilerWrfinishrBr_closed)rCrDelegatingUDPRequestHandlerrs  rGr'zBTestUDPServer.__init__.<locals>.DelegatingUDPRequestHandler.finishsz**,,""94@@GGIIIII""""#{2"!""""""s"AAA)rprqrrr:r'r)rr)s@rGr)r#sM
+
+
+
"
"
"
"
"
"
"
"
"
"rir)F)rrrrr()rCrrrrr)s     @rGrzTestUDPServer.__init__
s~	"	"	"	"	"	"	"*@	"	"	"	#D$$?$5	7	7	7	dG];;;rictt||jd|_dSr)rr rrrrrs rGrzTestUDPServer.server_bind#rricdtt|d|_dS)NT)rr rr(rs rGrzTestUDPServer.server_close's*
mT""//111rir)rprqrrrsrrrrrs@rGr r sw 58#',11111rir AF_UNIXceZdZejZdS)TestUnixStreamServerNrprqrrrr,address_familyrtrirGr.r.,rir.ceZdZejZdS)TestUnixDatagramServerNr/rtrirGr3r3/r1rir3c(eZdZejZdZdZdS)SMTPHandlerTestci}ttjdf|jd|}|tj|jf}tj|ddd|j	}|
|jdgg|_t
j
ddi}tj|_|||j|j	|||j|
t-|jd	|jd\}}}}	|
|d|
|dg|d
|	||	d|dS)NrMbP?meyouLog)timeoutr+u	Hello ✓rkz
Subject: Log
u

Hello ✓)rrHOSTrrsrrr?SMTPHandlerTIMEOUTrYtoaddrsmessagesrrprhandledr:rrrBis_setrZrendswithrJ)
rCrrrrQrrrrrs
          rG
test_basiczSMTPHandlerTest.test_basic:s!3Q 79Mu '))"FK0((tUE15
)
?
?UG,,,
!5."9:: ((	$,'''


++--...T]++Q///(,
a(8%h4(((5'***

($///

&899:::						ricl|j||jdSr)r@appendrAr)rCrXs  rGrzSMTPHandlerTest.process_messageRs2
T"""riN)rprqrrrLONG_TIMEOUTr>rDrrtrirGr5r54s<"G0rir5c^eZdZdZdZdZdZdZdZe	j
dZdS)	MemoryHandlerTestzTests for the MemoryHandler.rc,t|tjdtj|j|_tjd|_	d|j	_
|j	|jdS)N
memr)rrHrr?
MemoryHandlerrr9mem_hdlrr
mem_logger	propagaterArms rGrHzMemoryHandlerTest.setUp]sut(66r7?7;~GG
!+E22$%!""4=11111ricl|jt|dSr)rNrJrrRrms rGrRzMemoryHandlerTest.tearDowne0
$ric|j||g|j||g|j|gd}||dD]}t
dD].}|j|/|||j||dt
||dzDz}|||j|||dS)N)r7r|rr~)rr)r^	c0g|]}dt|fS)r7)str).0is  rG
<listcomp>z0MemoryHandlerTest.test_flush.<locals>.<listcomp>s#III1gs1vv.IIIrirK)rOrrnrhrrr_)rClinesnr[s    rG
test_flushzMemoryHandlerTest.test_flushis	
d//11222b!!!T..00111b!!! 1 1 3 3444



	
e$$$	)	)A1XX
;
;%%d&7&7&9&9::::!!%(((
O!!$"3"3"5"5666IIaR8H8HIIIIE!!%((((d//11222e$$$$$ric|j||g|j||g|j|j|jddg}||tj	
dtj|jd|_|j
|j|j||||j||||j|j|j||dS)zO
        Test that the flush-on-close configuration works as expected.
        rTrUrKFN)rOrrnrhrrKrNrJrr?rMrr9rA)rCr]s  rGtest_flush_on_closez%MemoryHandlerTest.test_flush_on_closes	
d//11222b!!!T..00111b!!!%%dm444

	
e$$$(66r7?7;~7<>>
	
""4=111d//11222e$$$T..00111e$$$%%dm444
e$$$$$ricGdd}||j}	|j|tdD]J}tjd|jd|jdK	|jD]}tj
|dS#|jD]}tj
|wxYw)Nc eZdZdZdZdZdS)ZMemoryHandlerTest.test_race_between_set_target_and_flush.<locals>.MockRaceConditionHandlerc"||_g|_dSr)rNthreads)rCrNs  rGrzcMemoryHandlerTest.test_race_between_set_target_and_flush.<locals>.MockRaceConditionHandler.__init__s (
!ric:|jddSr)rN	setTargetrms rGremoveTargetzgMemoryHandlerTest.test_race_between_set_target_and_flush.<locals>.MockRaceConditionHandler.removeTargets
''-----rictj|j}|j||dS)N)rl)rprqrirfrFrs)rCr+threads   rGr:zaMemoryHandlerTest.test_race_between_set_target_and_flush.<locals>.MockRaceConditionHandler.handles?")1BCCC##F+++riN)rprqrrrrir:rtrirGMockRaceConditionHandlerrdsA
"
"
"
.
.
.




rirlrKrmznot flushedflushed)rNrhr_r`rbrOrrrfrr)rCrlrlrgrks     rG&test_race_between_set_target_and_flushz8MemoryHandlerTest.test_race_between_set_target_and_flushs								*)$-88		5M##F+++2YY
3
3
5!!!$$]333''	2222
3
!.
5
5 ,V4444
5
5&.
5
5 ,V4444
5sA4B44 CN)rprqrrrsrVrHrRr_rarrrnrtrirGrIrIVs&&3222   %%%8%%%<10225532555rirIceZdZdZdZdS)ExceptionFormatterzA special exception formatter.c"d|djzS)Nz
Got a [%s]r)rp)rCeis  rGformatExceptionz"ExceptionFormatter.formatExceptionsben,,riN)rprqrrrsrsrtrirGrprps)((-----rirpc>eZdZdZejZdZdZdZdZ	e
ddZe
dd	Zd
ezdzZ
e
dd
ZdZdZdZdZdZdZdZefdZdZdZdZdZdZdZdZdZdZdZ d Z!d!Z"d"Z#d#S)$ConfigFileTestz5Reading logging config from a .ini-style config file.^(\w+) \+\+ (\w+)$aN
    [loggers]
    keys=root

    [handlers]
    keys=hand1

    [formatters]
    keys=form1

    [logger_root]
    level=WARNING
    handlers=hand1

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

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

    [handlers]
    keys=hand1

    [formatters]
    keys=form1

    [logger_root]
    level=WARNING
    handlers=

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

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

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

    [handlers]
    keys=hand1

    [formatters]
    keys=form1

    [logger_root]
    level=WARNING
    handlers=hand1

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

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

    [formatter_form1]
    format=%(levelname)s ++ %(message)s
    datefmt=
    z
sys.stdoutz
sys.stboutzformatter=form1zformatter=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=
    zclass=StreamHandlerzclass=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"}}
    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=
    ctjtj|}t	jj|fddi|dS)Nr(r&)r3r4textwrapdedentrconfig
fileConfig)rCconfkwargsfiles    rGapply_configzConfigFileTest.apply_configsA{8?40011!$CCCFCCCCCrictj5}||jt	j}|||||	dg||	gddddS#1swxYwYdSNr}r~r
rcaptured_stdoutrconfig0rrrrnrrhrCoutputrs   rGtest_config0_okzConfigFileTest.test_config0_ok

$
&
&	&&dl+++&((FKK))++,,,LL**,,---!!#
"



!!"%%%	&	&	&	&	&	&	&	&	&	&	&	&	&	&	&	&	&	&B)C

CCc^tj5}tjt	j|j}tj}|	|tj|tj
}|||||dg||gddddS#1swxYwYdSr)rrr3r4rxryrconfigparserConfigParser	read_filerrzr{rrrnrrh)rCrr~cprs     rGtest_config0_using_cp_okz'ConfigFileTest.test_config0_using_cp_oksK

$
&
&	&&;xt|<<==D*,,BLLN%%b)))&((FKK))++,,,LL**,,---!!#
"



!!"%%%	&	&	&	&	&	&	&	&	&	&	&	&	&	&	&	&	&	&sDD""D&)D&ctj5}||tjd}|||||ddg||gddddS#1swxYwYdSNcompiler.parserrr|rr	rrrrrrrnrrhrCrzrrs    rGtest_config1_okzConfigFileTest.test_config1_ok

$
&
&	&&f%%%&'899FKK))++,,,LL**,,---!!#
"




!!"%%%	&	&	&	&	&	&	&	&	&	&	&	&	&	&	&	&	&	&B&CCCcR|t|j|jdSrrrtrconfig2rms rGtest_config2_failurez#ConfigFileTest.test_config2_failure%)T%6EEEEEricR|t|j|jdSrrrtrconfig3rms rGtest_config3_failurez#ConfigFileTest.test_config3_failurerrictj5}||jt	j}	t
#t$rt	jdYnwxYwtj	
d||d|
gddddS#1swxYwYdSNzjust testingrz-ERROR:root:just testing
Got a [RuntimeError]
)rrrconfig4rrr	exceptionr1stdoutseekrYrWrhrs   rGtest_config4_okzConfigFileTest.test_config4_oks+

$
&
&	&&dl+++&((F
2"nn$
2
2
2!.11111
2JOOAV__..A
C
C
C
!!"%%%	&	&	&	&	&	&	&	&	&	&	&	&	&	&	&	&	&	&s0.CAA2/C1A22ACC"%C"c<||jdSN)rzrconfig5rms rGtest_config5_okzConfigFileTest.test_config5_ok!DL11111ric<||jdSr)rconfig6rms rGtest_config6_okzConfigFileTest.test_config6_okrrictj5}||jt	jd}t	jd}|||||	||
gd||
gdddn#1swxYwYtj5}||jt	jd}||j
||||t	jd}|||||	||
gd||
gddddS#1swxYwYdSNrzcompiler-hyphenated)rr)r{rrcompiler.lexer))rr)r}r)rr)r}r)rrrconfig1arrrrnrcriticalrhconfig7r;rrCrr
hyphenateds    rGtest_config7_okzConfigFileTest.test_config7_oks

$
&
&	&&dm,,,&'899F!*+@AAJKK))++,,,LL**,,--- 1 1 3 3444!!###	
"



!!"%%%'	&	&	&	&	&	&	&	&	&	&	&	&	&	&	&(
$
&
&	&&dl+++&'899FV_---KK))++,,,LL**,,---&'788FKK))++,,,LL**,,--- 1 1 3 3444!!###

"



!!"%%%)	&	&	&	&	&	&	&	&	&	&	&	&	&	&	&	&	&	&%C&DD

D
$EI??JJcd}|5tjdd\}}tj|tjdkr|dd}|j|}|	||	|dddn#1swxYwYtjjd}|
|||dS)	NcV|tj|dSrrJr5removeh1rIs  rGcleanupz/ConfigFileTest.test_config8_ok.<locals>.cleanupC HHJJJIbMMMMMrirjtest_logging-X-rZ\z\\)r3r)check_no_resource_warningr3r4r5rJrEreplaceconfig8rrrrootr?r)rCrrHrIrrs      rGtest_config8_okzConfigFileTest.test_config8_okAs+			
+
+
-
-	'	'%f.?@@FBHRLLLw$ZZf--l))2)66Gg&&&g&&&	'	'	'	'	'	'	'	'	'	'	'	'	'	'	','*"-----sBB<<CCcj||jtjd}||j||j||j||jd||jdS)Nsome_pristine_loggerF)disable_existing_loggers)rdisable_testrrr;rrBrCrs  rGtest_logger_disablingz$ConfigFileTest.test_logger_disablingXs$+,,,"#9::)))$+,,,((($+eLLL)))))ricd}|||tjjdjddS)Naw
            [loggers]
            keys=root

            [handlers]
            keys=hand1

            [formatters]
            keys=form1

            [logger_root]
            handlers=hand1

            [handler_hand1]
            class=StreamHandler
            formatter=form1

            [formatter_form1]
            format=%(levelname)s ++ %(message)s
            rhand1)rrYrrr?rE)rCtest_configs  rGtest_config_set_handler_namesz,ConfigFileTest.test_config_set_handler_namesasO(	
+&&&*,,5a8=wGGGGGricd}tjtj|}|t
tjj|dS)Na
            [loggers]
            keys=root

            [handlers]
            keys=hand1

            [formatters]
            keys=form1

            [logger_root]
            handlers=hand1

            [handler_hand1]
            class=StreamHandler
            formatter=form1

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

            prince
            )	r3r4rxryrrrrzr{)rCrr~s   rG'test_exception_if_confg_file_is_invalidz6ConfigFileTest.test_exception_if_confg_file_is_invalidysG.{8?;7788,(A4HHHHHrictjdd\}}tj||t
tjj|tj	|dS)Ntest_empty_.inirsuffix)
r3r4r5rJrrrrzr{r)rCrHrIs   rG%test_exception_if_confg_file_is_emptyz4ConfigFileTest.test_exception_if_confg_file_is_emptysV!vFFFB
,(A2FFF
	"




ric\|ttjjddS)Nfilenotfound)rFileNotFoundErrorrrzr{rms rG,test_exception_if_config_file_does_not_existz;ConfigFileTest.test_exception_if_config_file_does_not_exists&+W^-FWWWWWric
tjd}tjdd\}}	tj||dtj|tj
|dtddd	d
ddd
itj
|dS#tj
|wxYw)z.bpo-33802 defaults should not get interpolatedat
            [formatters]
            keys=default

            [formatter_default]

            [handlers]
            keys=console

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

            [loggers]
            keys=root

            [logger_root]
            formatter=default
            handlers=console
            
test_logging_rrasciir&rkFrz5%(asctime)s [%(process)d] [%(levelname)s] %(message)sz[%Y-%m-%d %H:%M:%S %z]zlogging.Formatter)rdatefmtclass)versionr
formatters)r(defaultsN)rxrystripr3r4r5rencoderJrrzr{dictr6)rCinirHrIs    rG!test_defaults_do_no_interpolationz0ConfigFileTest.test_defaults_do_no_interpolationso&'	(!HHHB	HRG,,---HRLLLN%% -2!&]'?%8$$ 



&


 
IbMMMMMBIbMMMMs
A4CC!N)$rprqrrrsr	rrVrconfig1rrrrrrrrrrrrrrrrrrrrrrrrrrrrtrirGrurus?? / I,G4G@H@oolL99Goo/1LMMG*+*+G6oo35RSSG'GT#GLG*L*DDD
&
&
&&&&$&-
&
&
&
&FFFFFF
&
&
&222222)&)&)&V....***HHH0III6XXX*****riruc8eZdZdZeZdZdZdZdZ	dZ
dZdS)	SocketHandlerTestzTest for SocketHandler objects.r0rct|dx|_x|_|_	||j|jdx|_}|n#t$r}||_Yd}~dSd}~wwxYw|j
tj
j}t|jt"r|d|j|_n||jd|_d|_|j|jj
d|j|jt/jd|_dS)ztSet up a TCP server to receive log messages, and a SocketHandler
        pointing to that server's address and port.N{Gz?r0rr)rrHr	sock_hdlrserver_exceptionserver_classaddress
handle_socketrsrBrrrr?
SocketHandler
isinstanceserver_addressr^r
log_outputr0rKrArp	SemaphorerArCrrhclss    rGrHzSocketHandlerTest.setUps^	t?CCCdnt'<	#'#4#4T\595G$O$O
ODK&LLNNNN			$%D!FFFFF		-f+U33	?!T+v{;;DNN!T&"7>>DN&&t'7'@'CDDD##DN333 *1--<A..
B
8BB
c8	|jr8|j|j|j|jr|jt|dS#t|wxYw)zShutdown the TCP server.N)rr0rKrJrrrrRrms rGrRzSocketHandlerTest.tearDowns	$~
' ..t~>>>$$&&&{
#  """d#####Hd####AA==Bc|j}	|d}t|dkrdStjd|d}||}t||kr;|||t|z
z}t||k;tj|}tj|}|xj	|j
dzz
c_	|j)NTr^>Lr
)
connectionrecvrZstructunpackpickleloadsrrrr+rAr)rCrequestconnchunkslenobjrs       rGrzSocketHandlerTest.handle_sockets!	#IIaLLE5zzA~~=u--a0DIIdOOEe**t##		$U*; < <<e**t##,u%%C*3//FOOvzD00OOL  """	#ric^|jr||jtjd}|d|j|d|j||j	ddS)Ntcpreggs
spam
eggs
)
rskipTestrrrrArrrYrrs  rGtest_outputzSocketHandlerTest.test_outputs 	1MM$/000"5))VV.99999ric|jr||jd|j_|j	t
d#t$r|jdYnwxYw|j	dtj
}||jj|tj
|jj|z
dz|j	ddS)Ng@zDeliberate mistakez
Never sentzNever sent, eitherr7zNor this)rrr
retryStartrrrr0rrr`r	retryTimerb)rCnows  rG
test_noserverzSocketHandlerTest.test_noservers 	1MM$/000%(!	53444	5	5	5&&|44444	53444ikk4>3S999
4>+c1E9:::z*****sA$A>=A>N)rprqrrrsrrrrHrRrrrrtrirGrrsq*) LG...4	$	$	$
#
#
#	:	:	:+++++rirctjdd\}}tj|tj||S)Nrz.sockr)r3r4r5rJr)rHrIs  rG_get_temp_domain_socketr%s<

_W
E
E
EFBHRLLLIbMMM
IrizUnix sockets requiredc:eZdZdZeedreZdZdZ	dS)UnixSocketHandlerTestz)Test for SocketHandler with unix sockets.r,c`t|_t|dSr)rrrrHrms rGrHzUnixSocketHandlerTest.setUp5).00%%%%%riclt|tj|jdSr)rrRrr6rrms rGrRzUnixSocketHandlerTest.tearDown:/""4(((&&&&&riN)
rprqrrrshasattrrr.rrHrRrtrirGr r -sS43wvy!!,+&&&
'''''rir c2eZdZdZeZdZdZdZdZ	dZ
dS)DatagramHandlerTestzTest for DatagramHandler.rct|dx|_x|_|_	||j|jdx|_}|n#t$r}||_Yd}~dSd}~wwxYw|j
tj
j}t|jt"r|d|j|_n||jd|_d|_|j|jj
d|j|jt/j|_dS)zvSet up a UDP server to receive log messages, and a DatagramHandler
        pointing to that server's address and port.Nrr0rr)rrHrrrrrhandle_datagramrsrBrrrr?DatagramHandlerrrr^rrr0rKrArprrArs    rGrHzDatagramHandlerTest.setUpGs[	t?CCCdnt'<	#'#4#4T\595I4$Q$Q
QDK&LLNNNN			$%D!FFFFF		/f+U33	?!T+v{;;DNN!T&"7>>DN&&t'7'@'CDDD##DN333 ((rc8	|jr|j|jr8|j|j|jt|dS#t|wxYw)zShutdown the UDP server.N)rrrr0rKrJrrRrms rGrRzDatagramHandlerTest.tearDownas	${
#  """~
' ..t~>>>$$&&&d#####Hd####rctjdd}|jt|d}t	j|}t
j|}|xj|j	dzz
c_|j
dS)Nrrr)r	packpacketrZrrrrrr+rAr)rCr
rr.rrs      rGr)z#DatagramHandlerTest.handle_datagramlsy{4##D		

+l6""&s++6:,,ric|jr||jtjd}|d|j|j|d|j||j	ddS)Nudprrr)
rrrrrrArrLrYrrs  rGrzDatagramHandlerTest.test_outputts 	1MM$/000"5))VV.99999riN)rprqrrrsr rrrHrRr)rrtrirGr'r'>sb$# LG)))4	$	$	$
:
:
:
:
:rir'c:eZdZdZeedreZdZdZ	dS)UnixDatagramHandlerTestz,Test for DatagramHandler using Unix sockets.r,c`t|_t|dSr)rrr'rHrms rGrHzUnixDatagramHandlerTest.setUps).00!!$'''''riclt|tj|jdSr)r'rRrr6rrms rGrRz UnixDatagramHandlerTest.tearDowns/$$T***&&&&&riN
rprqrrrsr%rr3rrHrRrtrirGr2r2sS76wvy!!.-(((
'''''rir2c8eZdZdZeZdZdZdZdZ	dZ
dZdS)	SysLogHandlerTestz!Test for SysLogHandler using UDP.rct|dx|_x|_|_	||j|jdx|_}|n#t$r}||_Yd}~dSd}~wwxYw|j
tj
j}t|jt"r#||jd|jf|_n||j|_d|_|j|jj
d|j|jt/j|_dS)ztSet up a UDP server to receive log messages, and a SysLogHandler
        pointing to that server's address and port.Nrrri)rrHrsl_hdlrrrrr)rsrBrrrr?r>rrr^rrr0rKrArprrArs    rGrHzSysLogHandlerTest.setUpsd	t=AAAdlT%:	#'#4#4T\595I4$Q$Q
QDK&LLNNNN			$%D!FFFFF		-f+U33	74!6q!96; GHHDLL4 566DL&&t'7'@'CDDD##DL111 ((rc8	|jr|j|jr8|j|j|jt|dS#t|wxYw)zShutdown the server.N)rrr9r0rKrJrrRrms rGrRzSysLogHandlerTest.tearDowns	${
#  """|
% ..t|<<<""$$$d#####Hd####rcP|j|_|jdSr)r.rrAr)rCr
s  rGr)z!SysLogHandlerTest.handle_datagrams%!.ric|jr||jtjd}|d|jtj|	|j
d|jd|j_
|d|jtj|	|j
d|jd|j_|d|jtj|	|j
ddS)Nslhspäm
<11>spämFs	<11>spämuhäm-s<11>häm-späm)rrrrrrArrrGrYrrLr9
append_nulidentrs  rGrzSysLogHandlerTest.test_outputs@ 	1MM$/000"5))Y'.///*@AAA"'Y'.///*<===&Y'.///*GHHHHHric:tjd}|j|j|d|jtj	|
|jddS)Nr=r>r?)rrr9rJrArLrrrrGrYrrs  rGtest_udp_reconnectionz'SysLogHandlerTest.test_udp_reconnections"5))Y'.///*@AAAAAriN)rprqrrrsr rrrHrRr)rrCrtrirGr7r7sy,+ LG)))4	$	$	$III&BBBBBrir7c:eZdZdZeedreZdZdZ	dS)UnixSysLogHandlerTestz)Test for SysLogHandler with Unix sockets.r,c`t|_t|dSr)rrr7rHrms rGrHzUnixSysLogHandlerTest.setUpr"riclt|tj|jdSr)r7rRrr6rrms rGrRzUnixSysLogHandlerTest.tearDownr$riNr5rtrirGrErEsS43wvy!!.-&&&
'''''rirEz$IPv6 support required for this test.c4eZdZdZeZdZfdZfdZxZ	S)IPv6SysLogHandlerTestz&Test for SysLogHandler with IPv6 host.)z::1rctj|j_t	t
|dSr)rAF_INET6rr0rrIrHrs rGrHzIPv6SysLogHandlerTest.setUps3+1?(
#T**0022222rictj|j_t	t
|dSr)rAF_INETrr0rrIrRrs rGrRzIPv6SysLogHandlerTest.tearDowns3+1>(
#T**3355555ri)
rprqrrrsr rrrHrRrrs@rGrIrIsc10 LG33333666666666rirIc$eZdZdZdZdZdZdS)HTTPHandlerTestzTest for HTTPHandler.cjt|tj|_dS)ztSet up an HTTP server to receive log messages, and a HTTPHandler
        pointing to that server's address and port.N)rrHrprrArms rGrHzHTTPHandlerTest.setUps)	t ((ric||j|_t|j|_|jdkrI	t	|jd}|j||_n#d|_YnxYw|	d|
|jdS)Nr.zContent-Length)
commandr
r<log_dataintheadersrfiler`	post_data
send_responseend_headersrAr)rCr
rlens   rGhandle_requestzHTTPHandlerTest.handle_requests ..
<6!!
&7?+;<==!(!3!3D!9!9
&!%c"""s9A,,	A7c<tjd}|j}||jjddD]}d}|r	ddl}tjt}tj
|dd}||j}|
|||}	n#t$rd}YnwxYwd}d}	t!||jd|	x|_}
|
|
jd
|
jz}|o|}tj|d||	d
|_d|_||jdD]1}
|
|j_|jd}|||j||jjd||j |
|
dkrtC|jj"}n'tC|j#$d}||ddg||ddg||d|g3|j%|j|j|j&dS)Nhttprrircertdatazkeycert.pem)cafiler)r	zlocalhost:%dz/frob)foobar)securecontextcredentials)r-r.r>r-r&rEfuncNamerr+)'rrr0rKr?sslr5r<dirname__file__r
SSLContextPROTOCOL_TLS_SERVERload_cert_chaincreate_default_contextImportErrorrr\rrsrrserver_portrDh_hdlrrTrArKrArLrrYrSrqueryrXdecoderrJ)rCrr0rcrrgherelocalhost_certr	rdrhost
secure_clientrKr+ds                rGrzHTTPHandlerTest.test_outputs"6**&!!$"2";A">???#0	 0	 F#D

PJJJ7??844D%'W\\$
M%R%RN ^^C,CDDF**>:::!888OOGG#"""!FFF"#1$8K48$I$I$I
IDK&LLNNNL!F$66D"-vM!*66tW>K?FCQ7SSDK!DM""4;///)
2
2%+"""$$$S!!!!!###  !3W===  v666U?? !455AA !6!6w!?!?@@A  6VH555  :@@@  5C51111K**4;777Ka0	 0	 sCC)(C)N)rprqrrrsrHr\rrtrirGrOrOsI )))5 5 5 5 5 rirOc*eZdZdZdZdZdZdZdS)
MemoryTestz*Test memory persistence of logger objects.cHt|i|_dS)z8Create a dict to remember potentially destroyed objects.N)rrH
_survivorsrms rGrHzMemoryTest.setUpSstric|D]<}t|t|f}tj||j|<=dS)zKWatch the given objects for survival, by creating weakrefs to
        them.N)idrweakrefrefr{)rCrXrkeys    rG_watch_for_survivalzMemoryTest._watch_for_survivalXsL	4	4CS''499$C#*;s#3#3DOC  	4	4ric.tjg}|jD]'\\}}}|||(|r<|dt
|d|fzdSdS)z;Assert that all objects watched for survival have survived.Nz;%d objects should have survived but have been destroyed: %sz, )gccollectr{rrFr]rZr)rCdeadid_repr_rs     rG_assertTruesurvivalzMemoryTest._assertTruesurvival_s	
!%!6!6!8!8	#	#LS%#suu}E"""	NII.14TDIIdOO0LM
N
N
N
N
N	N	Nric~|jtjtjd}|||tj|j||||	dg~|
tjd}|||	ddgdS)Nra)rar7r~)rar7r)r0r6rrrrr7rrnrhr)rCrarbs   rGtest_persistent_loggersz"MemoryTest.test_persistent_loggersks(	
!!',///&&  %%%W]###t0022333		$##%%&&&!
			
  """&&		$##%%&&&!!
					riN)rprqrrrsrHrrrrtrirGryryOsY44
444
N
N
NriryceZdZdZdZdS)EncodingTestctjd}tjdd\}}t	j|d}	tj|d}||	|||	||n.#|	||wxYwt|d}	||
||n#|wxYw	tj|rt	j|dSdS#tj|rt	j|wwxYw)Ntestrjztest_logging-1-ufoo€r&r)rrr3r4r5rJrRrArrKrrYr`rstripr<isfiler)rCrrHrIrrrs       rGtest_encoding_plain_filez%EncodingTest.test_encoding_plain_files''!&*;<<B
	)"w???GNN7###
 D!!!!!'***

!!'***

R'***A
  !2!2D999									w~~b!!
	"






rw~~b!!
	"




s<+F0B/*F/+CF/:D>)F>EF6Gc(tjd}d}tjd}d|_tj}||d}tj|}||	|	||
||n.#|
||wxYw|}|
|ddS)Nruдо свиданияcp1251stricts 
)rrcodecs	getwriterr(r3BytesIOr8rArrKrJrWrY)rCrmessagewriter_classr5writerrrgs        rGtest_encoding_cyrillic_unicodez+EncodingTest.test_encoding_cyrillic_unicodes''Q'11 (fh//'//w	KK   g&&&MMOOOO
g&&&MMOOOOOOJKKKKKs;B::+C%N)rprqrrrrrtrirGrrs74LLLLLrirceZdZdZdZdS)WarningsTestc	ntj5tjd|tjdtjdttj}tj	|}tj
d}||tjd|
||}|||ddtj}tjd	td
d|d|}|||d
ddddS#1swxYwYdS)NTFalways)categorypy.warningszI'm warning you...z UserWarning: I'm warning you...
rExplicitdummy.py*z
Dummy linez0dummy.py:42: UserWarning: Explicit
  Dummy line
)warningscatch_warningsrcaptureWarningsrfilterwarningsUserWarningr3r4r8rrAwarnrKrWrJrfindshowwarningrY)rCr5rQrrga_files      rG
test_warningszWarningsTest.test_warningss

$
&
&	F	F#D)))OOG3U;;;#H{CCCC[]]F%f--A&}55Fa   M.///  ###!!A
GGIIIqvv&IJJANNN[]]F [*b!'
7
7
7!!ALLNNNQD
F
F
F)	F	F	F	F	F	F	F	F	F	F	F	F	F	F	F	F	F	FsF	F**F.1F.ctj5tjd|tjdtjd}||jgtjdtdd|t|jd||jdtjddddS#1swxYwYdS)	NTFrrrrrkr)
rrrrrrrYr?rrrZassertIsInstanceNullHandlerrs  rGtest_warnings_no_handlersz&WarningsTest.test_warnings_no_handlerss2

$
&
&
	K
	K#D)))OOG3U;;;&}55FV_b111 [*bIIIS111555!!&/!"4g6IJJJ
	K
	K
	K
	K
	K
	K
	K
	K
	K
	K
	K
	K
	K
	K
	K
	K
	K
	KsCC44C8;C8N)rprqrrrrrtrirGrrs:FFF0KKKKKrirc,tj||Sr)rr:)rrs  rG
formatFuncrsVW---riceZdZddZdS)myCustomFormatterNcdSrrt)rCfmtrs   rGrzmyCustomFormatter.__init__srir)rprqrrrrtrirGrrs(





rirc(tjSr)rr8rtrirGhandlerFuncrs """riceZdZdS)
CustomHandlerNrprqrrrtrirGrrDrirc
eZdZdZejZdZddddiidddd	d
diddgd
dZddddiidddd	d
didddgd
iddidZddddiidddd	d
didddiiddgd
dZ	ddddiidddd	ddidddgd
iddidZ
ddddiiddddd
didddgd
iddidZddddiidddd	d
didddgd
iddidZddddiidddd	d
didddgd
iddidZ
ddedzddidddd	d
did	dgd
dZdeddedzddedddddd	d
ddeidd	dgd
dZddddiidedzdd	d
didddgd
iddidZddddiidedzdd	d
dd idddgd
iddidZddddiidddd	d
did!ddgd
iddidZdd"dddiidddd	d
diddgd
id#ddid$Zdd%dddiidddd	d
diddgd
id#ddid$Zddddiiddddd
didddgd
idd	idZdd%dddiiddd&iid'Zdd%ddd&iiddd&iid'Zddddiid(d)diidddd	d
d(gd*iddd(gd+iddgd
d,Zddddiidddd	d
did-dd.idddgd
iddid/Zdddiidddd	d
did-dd.idddgd
iddid0Zd1dddiidddd	d
did-dd.idddgd
iddid/Zddddiidddd	d
d2d3d4d5iddgd
dZGd6d7e j!Z"dd8e"d9d:d;d<d=id>iddd8d	d
diddgd
dZ#dd?d@dAdBiddd?dCdDdEd?dFddGdHdIddJgdKdLidMZ$ddedzdd"dNidddd	d
didOddgdKdLidMZ%ddedzdd"dPidddd	d
didOddgdKdLidMZ&ddedQzdd"dPidddd	d
didOddgdKdLidMZ'ddedd"dNidddd	d
didOddgdKdLidMZ(dRZ)dSZ*efdTZ+dUZ,dVZ-dWZ.dXZ/dYZ0dZZ1d[Z2d\Z3d]Z4d^Z5d_Z6d`Z7daZ8dbZ9dcZ:ddZ;deZ<dfZ=dgZ>d{diZ?e@jAdjZBe@jAdkZCe@jAdlZDdmZEdnZFdoZGdpZHdqZIdrZJdsZKdtZLduZMdvZNdwZOdxZPdyZQdzZRdhS)|ConfigDictTestz)Reading logging config from a dictionary.rvrkform1rz%(levelname)s ++ %(message)srlogging.StreamHandlerrzext://sys.stdout)r	formatterrr5rrr?)rrr?rrr7r)rrr?loggersrzext://sys.stdboutNTOSETWRANINGmisspelled_namez.ExceptionFormatterz"%(levelname)s:%(name)s:%(message)s)()rz.formatFunc)rform2form3r)rhand2z.CustomHandlerzinvalid parameter name)rrrr5rrF)compilerr)rrrr?rrTr)rincrementalr?rfilt1rE)rrrr5filtersrr)rrrr?rrzcfg://true_formatterszcfg://handler_configs[hand1])rtrue_formattershandler_configsrr?rr)rrrr?rrrrb!
)ra
terminator)rrrr5rc"eZdZdZfdZxZS)ConfigDictTest.CustomFormatterrcFt|Sr)rrrCrrs  rGrz%ConfigDictTest.CustomFormatter.formatGs77>>&)))ri)rprqrrcustom_propertyrrrs@rGCustomFormatterrDs=	*	*	*	*	*	*	*	*	*rircustom{%Y-%m-%d %H:%M:%S	{message}rvalue)rstylerrrmySimpleFormatterz1%(asctime)s (%(name)s) %(levelname)s: %(message)s$)rr)rrrzlogging.handlers.MemoryHandler
fileGlobal)rcapacityrrlr)rbufferGlobalmymodulertrue)rr?rP)rrr?r)rrvalidatemy_test_logger_custom_formatter)rrrz.myCustomFormattercDtj|dSr)rrz
dictConfig)rCr|s  rGrzConfigDictTest.apply_configs!!$'''''rictj5}||jt	j}|||||	dg||	gddddS#1swxYwYdSrrrs   rGrzConfigDictTest.test_config0_okrrctj5}||tjd}|||||ddg||gddddS#1swxYwYdSrrrs    rGrzConfigDictTest.test_config1_okrrcR|t|j|jdSrrrms rGrz#ConfigDictTest.test_config2_failurerricR|t|j|jdSr)rrtrconfig2arms rGtest_config2a_failurez$ConfigDictTest.test_config2a_failure%)T%6
FFFFFricR|t|j|jdSr)rrtrconfig2brms rGtest_config2b_failurez$ConfigDictTest.test_config2b_failurerricR|t|j|jdSrrrms rGrz#ConfigDictTest.test_config3_failurerrictj5}||j	t	#t$rtjdYnwxYwtj	d|
|d|gddddS#1swxYwYdSr)
rrrrrrrr1rrrYrWrhrCrs  rGrzConfigDictTest.test_config4_ok!s

$
&
&	&&dl+++
2"nn$
2
2
2!.11111
2JOOAV__..A
C
C
C
!!"%%%	&	&	&	&	&	&	&	&	&	&	&	&	&	&	&	&	&	&-C>ACAACCCctj5}||j	t	#t$rtjdYnwxYwtj	d|
|d|gddddS#1swxYwYdSr)
rrrconfig4arrrr1rrrYrWrhrs  rGtest_config4a_okzConfigDictTest.test_config4a_ok0s

$
&
&	&&dm,,,
2"nn$
2
2
2!.11111
2JOOAV__..A
C
C
C
!!"%%%	&	&	&	&	&	&	&	&	&	&	&	&	&	&	&	&	&	&rc<||jdSrrrms rGrzConfigDictTest.test_config5_ok?rricR|t|j|jdSr)rrtrrrms rGtest_config6_failurez#ConfigDictTest.test_config6_failureBs%)T%6EEEEErictj5}||jt	jd}|||||	ddg||	gdddn#1swxYwYtj5}||j
t	jd}||jt	jd}|||||	ddg||	gddddS#1swxYwYdS)Nrrrrrrrr}r)
rrrrrrrrnrrhrrBrrs   rGrzConfigDictTest.test_config7_okEsF

$
&
&	&&dl+++&'899FKK))++,,,LL**,,---!!#
"




!!"%%%	&	&	&	&	&	&	&	&	&	&	&	&	&	&	&
$
&
&
	&&dl+++&'899FOOFO,,,&'788FKK))++,,,LL**,,---!!#
"




!!"%%%
	&
	&
	&
	&
	&
	&
	&
	&
	&
	&
	&
	&
	&
	&
	&
	&
	&
	&s%B+CCC)CGGGcTtj5}||jt	jd}|||||	ddg||	gdddn#1swxYwYtj5}||j
t	jd}||j||||t	jd}|||||	gd||	gddddS#1swxYwYdS)Nrrrrr)rrrrr}r)
rrrrrrrrnrrhrr;rrs   rGtest_config_8_okzConfigDictTest.test_config_8_okbs

$
&
&	&&dl+++&'899FKK))++,,,LL**,,---!!#
"




!!"%%%	&	&	&	&	&	&	&	&	&	&	&	&	&	&	&
$
&
&	&&dl+++&'899FV_---KK))++,,,LL**,,---&'788FKK))++,,,LL**,,---!!###

"



!!"%%%%	&	&	&	&	&	&	&	&	&	&	&	&	&	&	&	&	&	&s%B+CCC)D'HH!$H!ctj5}||jt	jd}t	jd}|||||	||
gd||
gdddn#1swxYwYtj5}||jt	jd}||j
||||t	jd}|||||	||
gd||
gddddS#1swxYwYdSr)rrrrrrrrnrrrhconfig8ar;rrs    rGtest_config_8a_okz ConfigDictTest.test_config_8a_oks

$
&
&	&&dm,,,&'899F!*+@AAJKK))++,,,LL**,,--- 1 1 3 3444!!###	
"



!!"%%%'	&	&	&	&	&	&	&	&	&	&	&	&	&	&	&(
$
&
&	&&dm,,,&'899FV_---KK))++,,,LL**,,---&'788FKK))++,,,LL**,,--- 1 1 3 3444!!###

"



!!"%%%)	&	&	&	&	&	&	&	&	&	&	&	&	&	&	&	&	&	&rctj5}||jt	jd}|||g|||j	|||g|||j
|||dg|ddddS#1swxYwYdS)Nrrr)rrrconfig9rrrrnrhconfig9aconfig9brs   rGtest_config_9_okzConfigDictTest.test_config_9_oksy

$
&
&	&dl+++&'899FKK))++,,,!!"V!444dm,,,KK))++,,,!!"V!444dm,,,KK))++,,,!!#
"


																		sDD??EEctj5}||jt	jd}||t	jd}||t	jd}||t	jd}|||	ddg|ddddS#1swxYwYdSNrrrzcompiler.parser.codegen)rr|rr)
rrrconfig10rrrrnrrhrs   rGtest_config_10_okz ConfigDictTest.test_config_10_oksp

$
&
&	&dm,,,&'899FNN4,,..///&z22FNN4,,..///&'788FNN4,,..///&'@AAFLL**,,---!! #
"


																		sD EEEc:||jdSr)rconfig11rms rGtest_config11_okzConfigDictTest.test_config11_oksT]+++++ricR|t|j|jdSr)rrtrconfig12rms rGtest_config12_failurez$ConfigDictTest.test_config12_failure%)T%6
FFFFFricR|t|j|jdSr)rrtrconfig13rms rGtest_config13_failurez$ConfigDictTest.test_config13_failurerrictj5}||jtjd}||jd||jdt	j	d|
|dddddS#1swxYwYdS)NrrbrExclamationz
Exclamation!
)
rrrconfig14rr!rYrarrrBrWrC)rCrrQs   rGtest_config14_okzConfigDictTest.test_config14_oks

$
&
&	J&dm,,,!'*AQUE***Q\5111OM***OOFOO--667GHHIII
	J	J	J	J	J	J	J	J	J	J	J	J	J	J	J	J	J	JsB1CCCcd}|5tjdd\}}tj|ddd|ddid	dgid
}||||dddn#1swxYwYtjjd}|	|||dS)NcV|tj|dSrrrs  rGrz0ConfigDictTest.test_config15_ok.<locals>.cleanuprrirjrrkr~zlogging.FileHandlerr&)rfilenamer(r?rr?rr)
rr3r4r5rJrrrr?r)rCrrHrIrzrs      rGtest_config15_okzConfigDictTest.test_config15_oks/			
+
+
-
-	&	&%f.?@@FBHRLLL!6$&$+F
f%%%f%%%'	&	&	&	&	&	&	&	&	&	&	&	&	&	&	&*,'*"-----sA&B

BBc||jtjd}||jjddS)Nrr)rconfig17rr!rYrrr s  rGtest_config17_okzConfigDictTest.test_config17_ok
sF$-(((g&4g>>>>>riNc|d}tjd|}||j|j}|j	tj	tj
tj}|d|
d|ftjdt!|}||z}d}t!|}	|	dkr-|||d}
||
z
}|	|
z}	|	dk-||jdtjt)j|dS#|jdtjt)j|wxYw)Nr&rg@r0r)rrrzlistenrsrrrrLrrMSOCK_STREAM
settimeoutconnectr	r-rZsendrJ
stopListeningrr)rCtextverifyrrrrrg	sentsofarleftsents           rGsetup_via_listenerz!ConfigDictTest.setup_via_listener
s{{7##N!!!V,,					v	

	,=1CDDDOOC   LL+t,---;tSYY//DtAIq66D((yy9:://T!	((
JJLLL
GLLN((***(+++++
GLLN((***(++++sCF&&AG4ctj5}|tj|jt
jd}||	t
jd}||	t
jd}||	t
jd}|
|	|ddg|ddddS#1swxYwYdSr)rrr7jsondumpsrrrrrnrrhrs   rGtest_listen_config_10_okz'ConfigDictTest.test_listen_config_10_ok$
sz

$
&
&	&##DJt}$=$=>>>&'899FNN4,,..///&z22FNN4,,..///&'788FNN4,,..///&'@AAFLL**,,---!! #
"


																		sD2EEEctj5}|tjt
jtjd}|	|
||
|ddg||gddddS#1swxYwYdSr)
rrr7rxryrurrrrrnrrhrs   rGtest_listen_config_1_okz&ConfigDictTest.test_listen_config_1_ok8
s#

$
&
&	&&##HON4J$K$KLLL&'899FKK))++,,,LL**,,---!!#
"




!!"%%%	&	&	&	&	&	&	&	&	&	&	&	&	&	&	&	&	&	&sCC##C'*C'cXd}d}tjd}tjtj}t
j5}||||	|
||
dddn#1swxYwY|g||ddgdt
j5}||tjd}|	|
||
dddn#1swxYwY|d	d
g||ddgdt
j5}||ddd|tjd}|	|
||
dddn#1swxYwY|dd
g||ddgddS)NcdSrrtstuffs rGverify_failz6ConfigDictTest.test_listen_verify.<locals>.verify_failJ
s4ric|dddS)Nr*rtr@s rGverify_reversez9ConfigDictTest.test_listen_verify.<locals>.verify_reverseM
s2;rirrrrr)rbrrr*rr)
rrrxryrurrrr7rrnrrh)rCrBrDrto_sendrs      rGtest_listen_verifyz!ConfigDictTest.test_listen_verifyG
s						"#455/."899
$
&
&	.&##G[999KK))++,,,LL**,,---		.	.	.	.	.	.	.	.	.	.	.	.	.	.	.
	
b000
+		,	,	,
$
&
&	.&##G,,,&'899FKK))++,,,LL**,,---	.	.	.	.	.	.	.	.	.	.	.	.	.	.	.	

				
	

+		,	,	,
$
&
&	.&##GDDbDM>BBB&'899FKK))++,,,LL**,,---	.	.	.	.	.	.	.	.	.	.	.	.	.	.	.	

				
	

+		,	,	,	,	,s9A%B==CCA8FFFBI--I14I1cR|t|j|jdSr)rrCrout_of_orderrms rGtest_out_of_orderz ConfigDictTest.test_out_of_order
s&*d&79JKKKKKric`tj|j}d|ddd<||t	jdjd}||jtj	||j
jtjdS)Nz-${asctime} (${name}) ${levelname}: ${message}rrrrr)
r"deepcopyrHrrrr?rrlrr_styleStringTemplateStylerCrzrs   rG#test_out_of_order_with_dollar_stylez2ConfigDictTest.test_out_of_order_with_dollar_style
st011>m|01(;&!!!#J//8;gngo>>>g/6%9	;	;	;	;	;ric||jtjdjd}||jtdSNrr)rcustom_formatter_class_validaterrr?rrrprCrs  rG)test_custom_formatter_class_with_validatez8ConfigDictTest.test_custom_formatter_class_with_validate
sS$>???#$EFFOPQRg/1CDDDDDric||jtjdjd}||jtdSrQ)r custom_formatter_class_validate2rrr?rrrprSs  rG*test_custom_formatter_class_with_validate2z9ConfigDictTest.test_custom_formatter_class_with_validate2
sS$?@@@#$EFFOPQRg/1CDDDDDric|j}d|ddd<||tjdjd}||jtdS)Nrrrrrr)	rRr"rrrr?rrrprNs   rG9test_custom_formatter_class_with_validate2_with_wrong_fmtzHConfigDictTest.test_custom_formatter_class_with_validate2_with_wrong_fmt
sz5::<<14|W%g.	
&!!!#$EFFOPQRg/1CDDDDDricR|t|j|jdSr)rrCr custom_formatter_class_validate3rms rG*test_custom_formatter_class_with_validate3z9ConfigDictTest.test_custom_formatter_class_with_validate3
s&*d&79^_____ricR|t|j|jdSr)rrCrcustom_formatter_with_functionrms rG,test_custom_formatter_function_with_validatez;ConfigDictTest.test_custom_formatter_function_with_validate
s&*d&79\]]]]]ricdgdddddddd	gd
ggdd}tj|}||d
d||dd||dd||dd	||dd||dd|d}||dgd|t|jd|t|jd|t|jddS)N)rkr)rObcrra)rwr)g)rQr[jrlrr^)ozcfg://alistp)atuplealistadictnest1nest2nest3zcfg://atuple[1]rzcfg://alist[1]rbzcfg://nest1[1][0]rQzcfg://nest2[1][1]z
cfg://adict.dzcfg://adict[f]zcfg://nest3rkzcfg://nosuchzcfg://!zcfg://adict[2])	rrzBaseConfiguratorrYconvertpoprKeyErrorrC)rCrwbcrs    rGtest_baseconfigzConfigDictTest.test_baseconfig
s$__Q((+C:s+...


^
,
,Q
/
/$566:::$455s;;;$788#>>>$788#>>>O44c:::$455q999JJ}%%q???333(BJ???*bj)<<<(BJ0@AAAAAricddlmGfddtj}dddg}|dd	g
}dd||d
iddgdd}t	j5}||tjddddn#1swxYwY||	ddS)Nr)
namedtuplec,eZdZfdZfdZxZS)1ConfigDictTest.test_namedtuple.<locals>.MyHandlercHtj|i|||_dSr)rrresource)rCrzrXr}rrvs    rGrz:ConfigDictTest.test_namedtuple.<locals>.MyHandler.__init__
s*  $1&111,4


ric|xjd|jjz
c_t|SN )r+rztyperrrs  rGrz6ConfigDictTest.test_namedtuple.<locals>.MyHandler.emit
s7

6$-"4666

ww||F+++rir)rrvs@rG	MyHandlerrx
sW
5
5
5
5
5
5
,
,
,
,
,
,
,
,
,rirResourcer~labelsmy_typerO)r~rrk	myhandler)rrzrrr&zsome logzsome log my_type
)
collectionsrvrr8rrrrrYrW)rCrrrzrzrrvs      @rGtest_namedtuplezConfigDictTest.test_namedtuple
sb******	,	,	,	,	,	,	,-	,	,	,:j68*<==8C5999# ( &K=AA	
	

$
&
&	%&f%%%L$$$	%	%	%	%	%	%	%	%	%	%	%	%	%	%	%	
**,@AAAAAs *BBBcd}|dd|gddtjjd|usJgtj_dS)NcdSrrt)rgs rGrzAConfigDictTest.test_config_callable_filter_works.<locals>.filter_
s1rirkr7rrrrrrrrrCrs  rG!test_config_callable_filter_worksz0ConfigDictTest.test_config_callable_filter_works
s}			G	"J"J

			 ""*1-8888&(###rictjd}|dd|gddtjjd|usJgtj_dS)Nrrkr7rrr)rrrrrrs  rGtest_config_filter_worksz'ConfigDictTest.test_config_filter_works
s}.--G	"J"J

			 ""*1-8888&(###ricGdd}|}|dd|gddtjjd|usJgtj_dS)NceZdZdZdS)BConfigDictTest.test_config_filter_method_works.<locals>.FakeFiltercdSrrt)rCrgs  rGrzIConfigDictTest.test_config_filter_method_works.<locals>.FakeFilter.filter
sqriN)rprqrrrrtrirG
FakeFilterr
s#




rirrkr7rrrr)rCrrs   rGtest_config_filter_method_worksz.ConfigDictTest.test_config_filter_method_works
s								*,,G	"J"J

			 ""*1-8888&(###ric	Gdd}dd|fD]*}|t|jdd|gdd+dS)NceZdZdS);ConfigDictTest.test_invalid_type_raises.<locals>.NotAFilterNrrtrirG
NotAFilterr
srirrkr7rr)rrCr)rCrrs   rGtest_invalid_type_raisesz'ConfigDictTest.test_invalid_type_raises
s{a.		G!gY'O'OPP



		ricddddddidddgdid	}tjd}||j||||j|d
di||j|d=||||jdS)NrkFconsoler7r)rrrOr)rrr?rrr)rrr;rrrB)rCrzrs   rG
test_90195zConfigDictTest.test_90195s(-$4$!*

 "3'')))&!!!)))9a.)))(((-.&!!!)))))rir)Srprqrrrsr	rrVrrrrrrrrrprrrrrrrr
r
rrrrrrr!rr:rr)rHrRrVr[r^rrrrrrrrrrrrrrrrrrrr"r'r*r7rrequires_working_socketr;r=rFrIrOrTrWrYr\r_rtrrrrrrrtrirGrrsP33 / I,9

1%".	
 !

G.9

1%".	

!%Y!!

i
+G89

1%".	

'!
 !

)H89

1%"/	

!%Y!!

i
+G89

1%".	

!%Y!!

i
+H:9

1%".	

!%Y!!

i
+H89

1/".	

!%Y!!

i
+G8"77?

1%".	
%Y

!G0*?
 -/?
"?



 2%".	{



%Y

7HF9

"%55%".	

!%Y!!

i
+G:9

"%55%"..

!%Y!!

i
-G<9

1%".	

!%Y  

i
+G<%*9

1%".	
"%Y 


i
1G>%)9

1%".	
"%Y 


i
1H<9

1%#.	

#%Y!!

h
+G6)

&!


H &

&!


H"9

*

1%".$I

!$I!!
 !

7HF9

1%".	
/4

!%Y!!

i
3HB
9

1%".	
/4

!%Y!!

i
1H>9

1%".	
/4

!%Y!!

i
3H@9

1%". "'		
 !

'H2*****'+***%.%%w


1&".	
 !

+H8M""
1 0:0& 





 +,#
-LB!66>!

0$!,	

. $I#00
#''#8!$99>!

0$!,	

. $I#00
#(($8!$88>!

0$!,	

. $I#00
#(($8 >!

0$!,	

. $I#00
#&&"4(((
&
&
&&-
&
&
&
&FFFGGGGGGFFF
&
&
&
&
&
&222FFF&&&:&&&B)&)&)&V$&,,,GGGGGGJJJ...<???
,,,,8%W$&&'&&%W$&&&&'&&%W$&&<,<,'&<,|LLL;;;EEE
EEE
EEE```^^^BBB,BBB>))))))	)	)	)*****rirceZdZdZdZdS)ManagerTestcgGfddtj}tjd}|t|jt|||d}|dtjd|	dgdS)NceZdZdfd	ZdS)6ManagerTest.test_manager_loggerclass.<locals>.MyLoggerNc2|dSrrF)rCrr+rXexc_infoextraloggeds      rG_logz;ManagerTest.test_manager_loggerclass.<locals>.MyLogger._log)s

c"""""riro)rprqrrr)rsrGMyLoggerr(s3
#
#
#
#
#
#
#
#rirrzshould appear in loggedzshould not appear in logged)
rLoggerManagerr	TypeErrorsetLoggerClassrUrrrY)rCrmanrrs    @rGtest_manager_loggerclassz$ManagerTest.test_manager_loggerclass%s	#	#	#	#	#	#	#w~	#	#	#od##)S%7===8$$$v&&01115666";!<=====rictjd}t}||||j|dSr)rrobjectsetLogRecordFactoryrYlogRecordFactory)rCrres   rGtest_set_log_record_factoryz'ManagerTest.test_set_log_record_factory5sMod##88)))-x88888riN)rprqrrrrrtrirGrr$s2>>> 99999rirceZdZdZdS)ChildLoggerTestctj}tjd}tjd}|d}|d}||tjd||tjd|d}|d}|d}||tjd||tjd|||dS)	Nabczdef.ghixyzzuvw.xyzdefghiabc.defzabc.def.ghi)rrgetChildr)rCrl1l2c1c2c3s       rGtest_child_loggersz"ChildLoggerTest.test_child_loggers<s

u
%
%

y
)
)
ZZ


ZZ	
"
"

b'+E22333

b'+I66777
[[


[[


[[
#
#

b'+I66777

b'+M::;;;

b"riN)rprqrrrrtrirGrr;s#




rirceZdZdS)DerivedLogRecordNrrtrirGrrLrrirc eZdZdZdZdZdS)LogRecordFactoryTestcGddtj}t||t|_|j|jtj|_	dS)NceZdZdZdZdS)2LogRecordFactoryTest.setUp.<locals>.CheckingFilterc||_dSr)rW)rCrWs  rGrz;LogRecordFactoryTest.setUp.<locals>.CheckingFilter.__init__Ss
ricnt|}||jurd|d|j}t|dS)NzUnexpected LogRecord type z, expected T)r~rWr)rCrrr+s    rGrz9LogRecordFactoryTest.setUp.<locals>.CheckingFilter.filterVsCLLDH$$$IJ HH&C#C..(triN)rprqrrrrrtrirGCheckingFilterrRs2







rir)
rrrrHrrr0rgetLogRecordFactoryorig_factory)rCrs  rGrHzLogRecordFactoryTest.setUpQs
	
	
	
	
	W^
	
	
		t$n%566""4;///#799ric|j|jt|tj|jdSr)r0rrrrRrrrrms rGrRzLogRecordFactoryTest.tearDowncsI%%dk222$#D$566666ric,|t|jj|tjt|j||	dgdS)N)rr}r~)
rrr0rrnrrrrrhrms rGtest_logrecord_classz)LogRecordFactoryTest.test_logrecord_classhs)T%5%=++--	/	/	/#$4555t0022333!
					riN)rprqrrrHrRrrtrirGrrOsA:::$777
rirc eZdZdZdZdZdZdZej	e
ejdddZ
ej	e
ejddd	Zej	e
ejddd
ZdS)QueueHandlerTestrct|tjd|_tj|j|_d|_t	j	d|_
d|j
_|j
tj
|j
|jdS)Nr*queF)rrHqueueQueuerr?QueueHandlerque_hdlrrEr
que_loggerrPr6rrArms rGrHzQueueHandlerTest.setUpwst[__
(55djAA
	!+E22$)!  111""4=11111ricl|jt|dSr)rrJrrRrms rGrRzQueueHandlerTest.tearDownrRric|j||tj|jj|j||tj|jj|}|j||j}|	t|tj|
|j|jj|
|j|jf|dfdSr)rrrnrrEmpty
get_nowaitrrrBrr	LogRecordrYrEr+rX)rCr+rs   rGtest_queue_handlerz#QueueHandlerTest.test_queue_handlersd//11222%+tz'<===T..00111%+tz'<===!!$$$z$$&&
4):;;<<<DO$8999$(DI.d<<<<<ric|}tjtj}d}||j||}tj|j}|j	||j
||j
}|||j|||jdS)Nz {name} -> {levelname}: {message})rE	levelnamer)rnrrrrrEr:r;rr=rrrrrYr+r)rCr+rlog_format_str
formatted_msgr
log_records       rGtest_formattingz QueueHandlerTest.test_formattings!!(99	;&--498A3.PP
%do66	
""9---$$$Z**,,

777
(:;;;;;ri
QueueListenerz5logging.handlers.QueueListener required for this testc8ttj}tj|j|}|	|j	|
|j|
|j|
|
n#|
wxYw||tjd||tjd||tjd|ttj}|tjtj|j|d}|	|j	|
|j|
|j|
|
n#|
wxYw||tjd||tjd||tjd	|dS)
Nr|)rrr~rT)respect_handler_levelrrr)r
rMatcherrr?rrrsrrrnrrrrBmatchesrr}r{rJr6r;)rCrlisteners   rGtest_queue_listenerz$QueueHandlerTest.test_queue_listenersgo//00#11$*gFF	O##D$5$5$7$7888O!!$"3"3"5"5666O$$T%6%6%8%8999MMOOOOHMMOOOOMMNNN
sKKLLL0@#NNOOO

go//00)***#11$*gHL2NN	O##D$5$5$7$7888O!!$"3"3"5"5666O$$T%6%6%8%8999MMOOOOHMMOOOO#NNOOOLLMMM0@#NNOOO

sBC44D
8BKK'ctj|j|j}|	ddznG#t$r:}|}|j|	|Yd}~nd}~wwxYw|j
|	d|||j
dd||j
dddS)NrkrrT
stack_info	TracebackStack)rr?rrr9rsZeroDivisionErrorrrrnrrrYr5rWrr)rCrrexcs    rG&test_queue_listener_with_StreamHandlerz7QueueHandlerTest.test_queue_listener_with_StreamHandlersW#11$*dnMM	I
EEE 	I	I	ICO%%d&7&7&9&9C%HHHHHHHH	I	
d//11dCCC

--//5577==kJJANNN--//5577==gFFJJJJJsA
B
0BB
c|j|j|j|jtj|j	|j}|
|jd||
|jddS)Nrzque -> ERROR: error)rr=r<rrAr9rr?rrrsrrrYr5rWr)rCrs  rG*test_queue_listener_with_multiple_handlersz;QueueHandlerTest.test_queue_listener_with_multiple_handlerss	

""4#6777""4>222#11$*dmLLg&&&

--//55779NOOOOOriN)rprqrrrVrHrRrrr
skipUnlessr%rr?rrrrtrirGrrrs03222   
=
=
=<<<X!1?CCPRRRRBX!1?CCPRRKKRRKX!1?CCPRR	P	PRR	P	P	Prirr)patchceZdZdZdZedZeje	j
jddZeje	j
jddZ
edZdZd	Zd
S)QueueListenerTestz~
        Tests based on patch submitted for issue #27930. Ensure that
        QueueListener handles all log messages.
        ctjd|z}|tjtj|}||tj|}||	d|	d|	d|	d|	d|
|||dS)z
            Creates a logger with a QueueHandler that logs to a queue read by a
            QueueListener. Starts the listener, logs five messages, and stops
            the listener.
            ztest_logger_with_id_%sonetwothreefourfiveN)
rrr6r7r?rrArrsrrrKrJ)	log_queuerArrrs     rG
setup_and_logzQueueListenerTest.setup_and_logs
&'?%'GHHFOOGM***&33I>>Gg&&&'55i@@HNNKKKKKK   KKKKMMOOO  )))MMOOOOOrir:ct|jD]B}tj}|||d|C||jd|jzddSNrgrz&correct number of handled log messages)r_repeatrrrr}rY
call_countrCmock_handler[rs    rG#test_handle_called_with_queue_queuez5QueueListenerTest.test_handle_called_with_queue_queues4;''
H
H!KMM	""9AA.FGGGG[3Q_E
G
G
G
G
Gricrtjt|jD]j}t	j}|||d|||	k|
|jd|jzddSr)r*skip_if_broken_multiprocessing_synchronizer_rmultiprocessingrrr}rJrrYr	r
s    rG test_handle_called_with_mp_queuez2QueueListenerTest.test_handle_called_with_mp_queues
>@@@4;''
(
(+133	""9AA.FGGG!!!%%''''[3Q_E
G
G
G
G
Gric#fK		|V#tj$rgcYSwxYwr)rrr)rs rGget_all_from_queuez$QueueListenerTest.get_all_from_queuesS
1#..000001;


			
s00ctjt|jD]}t	j}|||d|t|	|}|j
|jgtj
jjgg}|||dd|DzdS)a
            Five messages are logged then the QueueListener is stopped. This
            test then gets everything off the queue. Failure of this test
            indicates that messages were not registered on the queue until
            _after_ the QueueListener stopped.
            rgz&Found unexpected messages in queue: %scTg|]%}t|tjr|jn|&Srt)rrrr+)rZrs  rGr\zJQueueListenerTest.test_no_messages_in_queue_after_stop.<locals>.<listcomp>5sC%<%<%<01/9G<M.N.N&,QUU*+%<%<%<riN)rrr_rrrrr}listrrJrrr?r	_sentinelr)rCr[rrres     rG$test_no_messages_in_queue_after_stopz6QueueListenerTest.test_no_messages_in_queue_after_stop s
>@@@4;''
>
>'-//""5DGGIIIIqq*ABBBT44U;;<<


!!###!1!?!I JK

eXF%<%<5:%<%<%<=>>>>
>
>ricHtj}tj|}|||t5|	ddddS#1swxYwYdSr)
rrrr?rrsrrrC	task_done)rCrrs   rGtest_calls_task_done_after_stopz1QueueListenerTest.test_calls_task_done_after_stop8s

I'55i@@HNNMMOOO"":..
&
&##%%%
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&s5BBBN)rprqrrrsrstaticmethodrrrrr?rrrrrrrtrirGrrs		
			
	.
g&4h	?	?	G	G
@	?	G
g&4h	?	?
	G
	G
@	?
	G
		
		>	>	>0	&	&	&	&	&rirceZdZdZeZdZdS)UTCctSr)ZEROrCdts  rG	utcoffsetz
UTC.utcoffsetFsricdS)Nrrtr s  rGtznamez
UTC.tznameKsuriN)rprqrrr"dstr$rtrirGrrEs9CrirceZdZdZdS)AssertErrorMessagec	|jdg|Ri|dS#|$r.}||t|Yd}~dSd}~wwxYw)Nrt)rrYrY)rCrrrXr}rs      rGassert_error_messagez'AssertErrorMessage.assert_error_messageRs}	.Db24222622222	.	.	.Wc!ff---------	.sA#AAN)rprqrrr)rtrirGr'r'Ps#.....rir'cReZdZdZd
dZdZdZdZdZdZ	d	Z
d
ZdZdZ
dS)
FormatterTestc	dtjtjddddddddd|_d	d	d
ii|_dS)Nzformatter.testr<toz	dummy.extrzMessage with %d %s)rplaceholders)rErpathnamelinenorfuncr+rXri)rr7r5r<rcommonvariantsrms rGrHzFormatterTest.setUpYsX$]VT;??''	
	

$



riNct|j}| ||j|t	j|Sr)rr2rMr3rr)rCrEresults   rG
get_recordzFormatterTest.get_recordjsAdk""MM$--...$V,,,ric|}tjd}|||dtjd}|t|j|||tjd}|	|tjd}|	|tjd}|	|dS)Nz${%(message)s}z${Message with 2 placeholders}z
%(random)s%(asctime)sz%(asctime)-15sz%(asctime)#15s
r6rr:rYrrrCr;usesTimerBrCrrs   rGtest_percentzFormatterTest.test_percentpsOO.//!&FGGGl++*ah222&&&m,,

%%%.//

%%%.//

%%%%%ric|}tjdd}|||dtjdd}|t|j|tjdd}||tjdd}|	|tjdd}|	|tjd	d}|	|dS)
Nz
$%{message}%$rr$%Message with 2 placeholders%$z{random}r	{asctime}z{asctime!s:15}z{asctime:15}r9r;s   rGtest_braceszFormatterTest.test_bracess;OOoS999!&GHHHj444*ah222k555&&&k555

%%%.c:::

%%%nC888

%%%%%ricL|}tjdd}|||dtjdd}|||dtjdd}|||dtjdd}|t|j|||tjd	d}|	|tjd
d}|	|tjdd}||tjdd}|	|dS)N
${message}rr>zMessage with 2 placeholdersz$messagez$$%${message}%$$r?z	${random}z
${asctime}z$asctimez${asctime}--r9r;s   rGtest_dollarszFormatterTest.test_dollarssOOl#666!&CDDDj444!&CDDD0<<<!&GHHHk555*ah222&&&l#666

%%%j444

%%%l#666&&&nC888

%%%%%richtjd}||jdtjd}||jdtjd}||jdtjd}||jdtjdd}||jdtjdd}||jdtjd	d}||jd	tjd
d}||jd
tjdd}||jdtjdd}||jdtjd
d}||jd
tjdd}||jdtjdd}||jdtjdd}||jdtjdd}||jdtjdd}||jdtjdd}||jdtjdd}||jdtjdd}||jdtjdd}||jdtjdd}||jd|t
tjd|t
tjd|t
tjd|t
tjd|t
tjd|t
tjd|t
tjd|t
tjd |t
tjd!|t
d"tjd#d|t
d$tjd%d|t
d&|t
tjd'd|t
d(tjd)d|t
d*tjd+d|t
tjd,d|t
tjd-d|t
tjd.d|t
tjd/d|t
d0tjd1d|t
d2tjd3d|t
tjd4d|t
tjd5d|t
tjd6d|t
tjd7d|t
tjd8d|t
tjd9d|t
tjd:d|t
tjd;d|t
tjd<d|t
d=tjd>d|t
d=tjd?d|t
d=tjd@d|t
d$tjdd|t
tjd%d|t
d$tjdAd|t
tjdBddS)CNzM%(levelname)-15s - %(message) 5s - %(process)03d - %(module) - %(asctime)*.3sz1%(asctime)*s - %(asctime)*.3s - %(process)-34.33oz%(process)#+027.23Xz
%(foo)#.*gz5$%{message}%$ - {asctime!a:15} - {customfield['key']}rr>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} - $messagerz$bar $$z	$bar $$$$z%(asctime)Zz%(asctime)bz%(asctime)*z
%(asctime)*3sz%(asctime)_r@rCz
%(foo)#12.3*fz%(foo)0*.8*fz;invalid format: invalid field name/expression: 'name-thing'z{name-thing}zinvalid format: no fieldsr8zinvalid 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 stringzprocess}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 $$$zbar $zfoo $.raz	${asctime)rr:rY_fmtrrCr)rCrs  rGtest_format_validatez"FormatterTest.test_format_validates
mnn!pqqqQRR!TUUU344!6777l++...
U]`aaa!XYYY>cJJJ!ABBB4C@@@!7888m3777///m3777///m3777////s;;;!2333X`cddd![\\\4C@@@!7888nC888000m3777///33???!67775SAAA!89994C@@@!7888
5SAAA!8999is333+++k555---	
*g&7GGG*g&7GGG*g&7GGG*g&7III*g&7GGG*g&7EEE*g&7FFF*g&7III*g&7HHH	
!!I~S	"	
	
	
	
!!'}C	"	
	
	
	
!!%	
	
	
	
*g&79NVYZZZ!!E0	"	
	
	
	
!!3/s	"	
	
	

	
*g&7PSTTT*g&79PX[\\\*g&79PX[\\\*g&79RZ]^^^!!?z	"	
	
	

	
!!Ez	"	
	
	

	
*g&7sSSS*g&7PSTTT*g&7CPPP*g&79MUXYYY*g&79NVYZZZ*g&79IQTUUU*g&79JRUVVV*g&79KSVWWW*g&7SQQQ	
!!4z	"	
	
	

	
!!4wc	"	
	
	

	
!!4xs	"	
	
	
	
!!'{#	"	
	
	

	
*g&7cRRR	
!!'uC	"	
	
	

	
*g&7CPPPPPricgd}gd}t||D]<\}}tj||ddi}|}|||d|d}|||dtj||}|}|t|j|tj||d	di}|d}|||d>dS)
N)z%(custom)s %(message)sz{custom} {message}z$custom $message)%rrrDefault)rrz#Default Message with 2 placeholdersz 1234 Message with 2 placeholdersr>zNon-existing)r[rr:r6rYrrrC)rCfmtsstylesrrrrs       rGtest_defaults_parameterz%FormatterTest.test_defaults_parameter:sRSSS dF++	N	NJC!#Uh	=RSSSA!!AQXXa[[*OPPP))AQXXa[[*LMMM!#U333A!!Aj!(A666!#Uni=XYYYA))AQXXa[[*LMMMM	N	NricV|ttjddddS)Nx)rrCrr:rms rGtest_invalid_stylez FormatterTest.test_invalid_styleNs'*g&7tSIIIIIric
H|}tjdddddddt}tj|d|_d|_tj
d}tj|_|
||d	|
||d
d|||
|jd	dS)Nr^rar{%(asctime)s %(message)sz1993-04-21 08:03:00,123z%Y:%dz1993:21)r6datetimeutcr`mktime
astimezone	timetuplecreatedmsecsrr:gmtime	converterrY
formatTimerasctime)rCrr!rs    rG	test_timezFormatterTest.test_timeQsOO

tQAq!Q
<
<K

d 3 3 = = ? ?@@	788ka*CDDDa119===	$=>>>>>ric
Gddtj}|}tjddddddd	t}tj|d|_	|}t
j
|_||
|d
dS)NceZdZdZdZdS)DFormatterTest.test_default_msec_format_none.<locals>.NoMsecFormatterNz%d/%m/%Y %H:%M:%S)rprqrrdefault_msec_formatdefault_time_formatrtrirGNoMsecFormatterrf`s"&"5ririrSr^rTrUrarrVz21/04/1993 08:03:00)rr:r6rXrYr`rZr[r\r]r_r`rYra)rCrirr!rs     rGtest_default_msec_format_nonez+FormatterTest.test_default_msec_format_none_s	6	6	6	6	6g/	6	6	6
OO

tQAq!S#
>
>K

d 3 3 = = ? ?@@	Oka*?@@@@@rictjddd}tdD]]}tjdtjdd|d	zzi}||}|d
|^dS)Nz!{asctime}.{msecs:03.0f} {message}rr)rrri	g-C6:?r+z
Message %drkz.1000)rr:r_r`rbrrassertNotIn)rCrr[rrgs     rGtest_issue_89047zFormatterTest.test_issue_89047ks"ESZmnnnt	)	)AJv%ula!e.D&EFFAAWa((((		)	)rir)rprqrrrHr6r<rArDrHrNrQrcrjrmrtrirGr+r+Xs


"----
&
&
&&&& &&&*TQTQTQlNNN(JJJ???
A
A
A)))))rir+ceZdZdZdZdS)TestBufferingFormatterc&dt|zS)Nz[(%d)rZrCrecordss  rGformatHeaderz#TestBufferingFormatter.formatHeaderuW%%ric&dt|zS)Nz(%d)]rqrrs  rGformatFooterz#TestBufferingFormatter.formatFooterxruriN)rprqrrrtrwrtrirGrorots2&&&&&&&&riroc eZdZdZdZdZdS)BufferingFormatterTestchtjdditjddig|_dS)Nr+rr)rrrsrms rGrHzBufferingFormatterTest.setUp|s3!5%.11!5%.11
rictj}|d|g|d||jdS)Nronetwo)rBufferingFormatterrYrrsrGs  rGtest_defaultz#BufferingFormatterTest.test_defaultsZ&((QXXb\\***188DL#9#9:::::ric t}|d||jt	jd}t|}|d||jdS)Nz[(2)onetwo(2)]z
<%(message)s>z[(2)<one><two>(2)])rorYrrsrr:)rCrlfs   rGtest_customz"BufferingFormatterTest.test_customsz"$$)188DL+A+ABBB


/
/"2&&-qxx/E/EFFFFFriN)rprqrrrHr~rrtrirGryry{sF


;;;
GGGGGriryceZdZdZdS)
ExceptionTestc|j}t}||	td#t	jddYnxYw||||jd}|	|j
d|	|j
d|	|j
d|	|j
d	dS)
NrfailedTrrz#Traceback (most recent call last):
z!
RuntimeError: deliberate mistakeStack (most recent call last):
z,logging.exception('failed', stack_info=True))r0RecordingHandlerrArrrrKrJrsrBexc_textrrCr)rCrrQs   rGrzExceptionTest.test_formattings`	Q	93444	9h4888888					
IaL
--/>??	@	@	@
++-ABB	C	C	C//1>??	@	@	@--/?@@	A	A	A	A	As	;AN)rprqrrrrtrirGrrs(AAAAArirceZdZdZdS)LastResortTestcR|j}||jtj}tj}	t
j5}|d|	|
d|d|	|
ddddn#1swxYwYdt_t
j5}|dd}|	|
|dddn#1swxYwYt
j5}|d|	|
ddddn#1swxYwYd|j_
dt_t
j5}|d|	|
ddddn#1swxYwY||j|t_|t_dS#||j|t_|t_wxYw)NzThis should not appearrz
Final chance!zFinal chance!
z-No handlers could be found for logger "root"
F)r0rKr9r
lastResortrrrrrYrWrremittedNoHandlerWarningrA)rCrold_lastresortold_raise_exceptionsrr+s      rGtest_last_resortzLastResortTest.test_last_resortsJ4>*** +&6	;(**
Gf

3444  !2!2B777_---  !2!24EFFF	
G
G
G
G
G
G
G
G
G
G
G
G
G
G
G"&G(**
9f_---F  !2!2C888
9
9
9
9
9
9
9
9
9
9
9
9
9
9
9(**
8f_---  !2!2B777
8
8
8
8
8
8
8
8
8
8
8
8
8
8
8
49DL0&+G#(**
8f_---  !2!2B777
8
8
8
8
8
8
8
8
8
8
8
8
8
8
8
OODN+++!/G&:G###
OODN+++!/G&:G#::::sI2A;C	I2CI2C"I2?AE?I2EI2EI2)>F3'I23F77I2:F7;.I2)>H3'I23H77I2:H7;I224J&N)rprqrrrrtrirGrrs##;#;#;#;#;rirceZdZdZdZdS)FakeHandlerc
\dD](}t||||||)dS)N)rflushrJr)setattrrecord_call)rC
identifiercalledrKs    rGrzFakeHandler.__init__sF>	P	PFD&$"2"2:vv"N"NOOOO	P	Pricfd}|S)NcZddS)Nz{} - {})rFr)rrmethod_namesrGinnerz&FakeHandler.record_call.<locals>.inners+MM)**:{CCDDDDDrirt)rCrrrrs ``` rGrzFakeHandler.record_calls4	E	E	E	E	E	E	EriN)rprqrrrrrtrirGrrs5PPPrirc$eZdZfdZdZxZS)rcVtt|j|i|g|_dSr)rrrrs)rCrXr}rs   rGrzRecordingHandler.__init__s1.%%.????ric:|j|dS)z&Keep track of all the emitted records.N)rsrFrs  rGr:zRecordingHandler.handlesF#####ri)rprqrrrr:rrs@rGrrsG$$$$$$$rirc|eZdZdZfdZdZdZdZdZdZ	dZ
d	Zd
ZdZ
dZd
ZdZdZdZdZxZS)ShutdownTestz#Test suite for the shutdown method.ctt|g|_tj}|ttd|dS)Nr)rrrHrrrrr)rCraise_exceptionsrs  rGrHzShutdownTest.setUpsO
lD!!'')))"2*;=MNNNNNricfd}|S)Ncrrt)rsrGrz'ShutdownTest.raise_error.<locals>.inners%''Mrirt)rCrrs ` rGraise_errorzShutdownTest.raise_errors!					ricJtd|j}td|j}td|j}ttjj|||g}tjt|gd}|||jdS)NrrkrhandlerList)z2 - acquirez	2 - flushz	2 - closez2 - releasez1 - acquirez	1 - flushz	1 - closez1 - releasez0 - acquirez	0 - flushz	0 - close0 - release)	rrrrr~rrrrY)rChandler0handler1handler2r?res      rGtest_no_failurezShutdownTest.test_no_failuresq$+..q$+..q$+..w*Xx,JKKT(^^4444LLL	
4;/////ric>td|j}t||||tj|g}t	jt||	d|jddS)Nrrrr*)
rrrrrr~rrrrY)rCrKrrr?s     rG_test_with_failure_in_methodz)ShutdownTest._test_with_failure_in_methodsa--!1!1%!8!8999O''001T(^^4444B88888ric<|dtdSNrrrBrms rGtest_with_ioerror_in_acquirez)ShutdownTest.test_with_ioerror_in_acquires)))W=====ric<|dtdSNrrrms rGtest_with_ioerror_in_flushz'ShutdownTest.test_with_ioerror_in_flush))'7;;;;;ric<|dtdSNrJrrms rGtest_with_ioerror_in_closez'ShutdownTest.test_with_ioerror_in_closerric<|dtdSrrrCrms rGtest_with_valueerror_in_acquirez,ShutdownTest.test_with_valueerror_in_acquires)))Z@@@@@ric<|dtdSrrrms rGtest_with_valueerror_in_flushz*ShutdownTest.test_with_valueerror_in_flush))':>>>>>ric<|dtdSrrrms rGtest_with_valueerror_in_closez*ShutdownTest.test_with_valueerror_in_closerricTdt_|dtdS)NFrrrr
IndexErrorrms rG.test_with_other_error_in_acquire_without_raisez;ShutdownTest.test_with_other_error_in_acquire_without_raises&"')))Z@@@@@ricTdt_|dtdS)NFrrrms rG,test_with_other_error_in_flush_without_raisez9ShutdownTest.test_with_other_error_in_flush_without_raise!&"'))':>>>>>ricTdt_|dtdS)NFrJrrms rG,test_with_other_error_in_close_without_raisez9ShutdownTest.test_with_other_error_in_close_without_raise%rricldt_|t|jdtdS)NTrrrrrrrms rG+test_with_other_error_in_acquire_with_raisez8ShutdownTest.test_with_other_error_in_acquire_with_raise)s8"&*d&G#Z	1	1	1	1	1ricldt_|t|jdtdS)NTrrrms rG)test_with_other_error_in_flush_with_raisez6ShutdownTest.test_with_other_error_in_flush_with_raise.8"&*d&G!:	/	/	/	/	/ricldt_|t|jdtdS)NTrJrrms rG)test_with_other_error_in_close_with_raisez6ShutdownTest.test_with_other_error_in_close_with_raise3rri)rprqrrrsrHrrrrrrrrrrrrrrrrrs@rGrrs*--OOOOO
000 999>>><<<<<<AAA??????AAA??????111
///
///////rircheZdZdZdZddZdZdZdZdZ	d	Z
d
ZdZdZ
d
ZdZdZdZdS)ModuleLevelMiscTestz)Test suite for some module level methods.ctjjj}||d|tj|tjd|tjjjd|ttjdGdd}|ttj|tjdtj|tjjjtj	dS)NrS
doesnotexistsceZdZdS);ModuleLevelMiscTest.test_disable.<locals>._NotAnIntOrStringNrrtrirG_NotAnIntOrStringrHDrirWARN)
rrrrNrYrrrCrr{)rCold_disablers   rGtest_disablez ModuleLevelMiscTest.test_disable=sl*2a(((555-5r:::*goGGG									
)W_6G6G6I6IJJJ	-5w7GHHHHHriNc~gtj|tdfdt}tj|t
t|}|||d|n|d||t|j	d|j	d}||
d|z||n&t
t|}||j||gdS)NbasicConfigc2||fSrr)rOkwrs  rG<lambda>z/ModuleLevelMiscTest._test_log.<locals>.<lambda>Wsv}}aW'='=riztest me: %rrkr)
rrrrrrAr,rYrZrs
getMessageupperr)rCrKr	recording
log_methodrexpected_levelrs       @rG	_test_logzModuleLevelMiscTest._test_logTs:
dG]====	?	?	?%&&		***Wf--
JumY7777J}i000Y.//333"1%**,,mi.GHHH"'"3&,,..9Y9Y888	
$$$$$ricF|dtjdSNr)rrr}rms rGtest_logzModuleLevelMiscTest.test_loglsugm,,,,,ric0|ddSNrrrms rG
test_debugzModuleLevelMiscTest.test_debugowric0|ddSNrrrms rG	test_infozModuleLevelMiscTest.test_inforvric0|ddSNrrrms rGtest_warningz ModuleLevelMiscTest.test_warninguy!!!!!ric0|ddSNrrrms rG
test_errorzModuleLevelMiscTest.test_errorxrric0|ddSNrrrms rG
test_criticalz!ModuleLevelMiscTest.test_critical{z"""""ric|ttjtGddtj}tj||tj|tjtj|tjtjdS)NceZdZdS);ModuleLevelMiscTest.test_set_logger_class.<locals>.MyLoggerNrrtrirGrrrrir)rrrrrrrYgetLoggerClass)rCrs  rGtest_set_logger_classz)ModuleLevelMiscTest.test_set_logger_class~s)W%;VDDD					w~				x(((/118<<<w~.../117>BBBBBricTgGfddtj}tj|tjd}|dgtj}tj|}||	|	tj
|d||
d|d|d|	tj|d||d|||tjtjdS#|||tjtjwxYw)Nc2eZdZdejffd	ZxZS)@ModuleLevelMiscTest.test_subclass_logger_cache.<locals>.MyLoggerrcvt||ddS)Ninitialized)rrrF)rCrErrrs   rGrzIModuleLevelMiscTest.test_subclass_logger_cache.<locals>.MyLogger.__init__s5  u---}-----ri)rprqrrrrrr)rrs@rGrr
sJ$.gn
.
.
.
.
.
.
.
.
.
.
.rirjust_some_loggerrhellorr)rrrrrYr3r4r8rAr6r7rrWrtruncaterrrKrJr)rCrrr5rQrs     @rGtest_subclass_logger_cachez.ModuleLevelMiscTest.test_subclass_logger_caches	.	.	.	.	.	.	.w-//	.	.	.
	x((("#566=/222!&))!	3OOGM***LL!!!V__..4466@@@OOAKKNNNOOGL)))LL!!!V__..333  ###
GGIII"7>22222
  ###
GGIII"7>2222s!C4GA	H'ctjd}td|\}}}|}|d||d|dS)Na*
            import logging

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

            a = A()
        -czexception in __del__zValueError: some error)rxryrrrrrCcodercouterrs     rGtest_logging_at_shutdownz,ModuleLevelMiscTest.test_logging_at_shutdownsl 

(d33Cjjll

,c222

.44444ricvtj}|tj|t	jd|d}t
d|t|d5}||	
dddddS#1swxYwYdS)Na
            import builtins
            import logging

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

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

            a = A()

            # Simulate the Python finalization which removes the builtin
            # open() function.
            del builtins.open
        rr&rzERROR:root:log in __del__)rTESTFNrr6rxryrrrYr`r)rCr%rfps    rGtest_logging_at_shutdown_openz1ModuleLevelMiscTest.test_logging_at_shutdown_opens#	((333 +3   

&	t$$$
(W
-
-
-	NRWWYY--//1LMMM	N	N	N	N	N	N	N	N	N	N	N	N	N	N	N	N	N	Ns&;B..B25B2ctjd}td|\}}}|}|d|||ddS)Nz
            import logging

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

            rec()
        rz#Cannot recover from stack overflow.rk)rxryrrrrlrYrs     rGtest_recursion_errorz(ModuleLevelMiscTest.test_recursion_errorso 

-T488Cjjll>DDDQric*tj}|tj||tj|tj}||||||dSr)rgetLevelNamesMappingrYr'assertIsNot)rCmappingnew_mappings   rGtest_get_level_names_mappingz0ModuleLevelMiscTest.test_get_level_names_mappings.00-w777-w777244+...+.....rir)rprqrrrsrrrrrrrrrrrrrr$rtrirGrr9s33III.%%%%0---   """   ###
C
C
C333>555&NNN>    /////rirc>eZdZdZdZeddZdZdZdS)
LogRecordTestctji}t|}||d||ddS)Nz<LogRecord: >)rrrYrBrrC)rCrrgs   rGtest_str_repzLogRecordTest.test_str_reps]!"%%FF^44555

3(((((rict}tj}||ddi}tjd|||jdj|||jdj	d|
||dS)Nlessmorezless is %(less)srzless is more)rrrrArrrsrXrYrrKrJ)rCrQrrws    rG
test_dict_argzLogRecordTest.test_dict_args	Q
f*A...

ail'+++1-~>>>							riNctj}|t_	ddl}|j}tjdd|i}t
jtj	dd5tjdd|i}dddn#1swxYwY||j
|j
d}|t_n#|t_wxYw|r||dS|S)Nrr+msg1_rmsg2_)processNamer1.processNamer2.processName)rlogMultiprocessingrcurrent_processrErr	swap_itemr1modulesr1r0)	rr4rprev_logMultiprocessingmprEr1r2resultss	         rG_extract_logrecord_process_namez-LogRecordTest._extract_logrecord_process_namesR")"<%7"	A((((%%'',D&}s}}'=>>B"3;0A4HH
C
C*E=3==+ABB
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C)-)+)+G
*AG&&)@G&@@@@	IIgNs0AB>0B
B>BB>BB>>Ccrtjdtjv}	|t
jdd}tji}||jd|	d|}|d|d|d|d|d|dddl
}|j\}}|j|j	d	||f
}|
|}|d|d||d|d|d|d||rddl
}dSdS#|rddl
}wxYw)NrTMainProcessrkr1r2r3rrrk)rrr1r7rYrr4rr1r=rPipeProcessrsrassertNotEqualr)	rCmultiprocessing_importedLOG_MULTI_PROCESSINGrr<rparent_conn
child_connrhs	         rGtest_multiprocessingz"LogRecordTest.test_multiprocessings:<<<#4#C  	'W7>>>#' %b))AQ]M:::::1>RSSG]GM,BCCC]G4D,EFFF]G4D,EFFF
#"""&:o&:&<&<#K'';-z;A
GGIII!&&((G
w}/EFFFW]3W=M5NOOO]G4D,EFFF
FFHHH(
'&&&&&&
'
''
'&&&&&&&&sFF..F6ctji}|j}||j||j||j||jtj}tj}tj	}	dt_dt_dt_	tji}|j
}||j||j||j||j|t_|t_|t_	dS#|t_|t_|t_	wxYw)NF)rrassertIsNotNonerk
threadNameprocessr1
logThreadslogProcessesr4r)rCrNOT_NONElog_threads
log_processeslog_multiprocessingNONEs       rG
test_optionalzLogRecordTest.test_optionalDs7!"%%'(,
%8
	=!&G#(G ).G&%b))A$DDNNNDDOOOD!,G#0G )<G&&&"-G#0G )<G&<<<<s
A?D&&&Er)	rprqrrr)r-rr=rGrSrtrirGr&r&sq)))			\0#'#'#'J=====rir&ceZdZdZfdZfdZdZdZdZdZ	dZ
d	Zd
ZdZ
dZd
ZdZdZdZdZdZdZdZdZddZdZdZdZdZdZdZxZS)BasicConfigTestz#Test suite for logging.basicConfig.c|tt|tjj|_tj|_tj	dd|_
tjj|_|
|jgtj_dSr)rrUrHrrr?r!r"r#r$r%rr2rrrs rGrHzBasicConfigTest.setUpas
ot$$**,,,-
%/4466")"6qqq"9&-l&8#%%% "rictjjddD]5}tj||6tt|dSr)rrr?rKrJrrUrR)rCrQrs  rGrRzBasicConfigTest.tearDownjsg&qqq)		AL&&q)))
GGIIII
ot$$--/////ric>ttjd|jtjtj|j|jtj	dd<tj
|jdS)Nr?)rrrr?r!rLrMr#r%r$r6r2rms rGrzBasicConfigTest.cleanuppszj$-888!!!  !4555"&"9QQQd9:::::ric|tj|ttjjdtjjd}||tj||jtj
|j}||jj
tj||j||jtj|tjj|jdS)Nrkr)rrrYrZrr?rr8r5r1rrrLrFBASIC_FORMATrrPercentStylerr2)rCrrs   rGtest_no_kwargszBasicConfigTest.test_no_kwargsws	
W\233Q777,'*gw'<===444%	).0DEEE)+,,,i.0DEEE	
+T-HIIIIIricxtj5}tjtjdtjdtjd||	
dddddS#1swxYwYdS)Nrr5rLog an errorrERROR:root:Log an errorrrrrr1rrrrYrWrrs  rGtest_strformatstylez#BasicConfigTest.test_strformatstyle

$
&
&	+&sz====M.)))JOOAV__..4466)
+
+
+		+	+	+	+	+	+	+	+	+	+	+	+	+	+	+	+	+	+BB//B36B3cxtj5}tjtjdtjdtjd||	
dddddS#1swxYwYdS)Nrr^r_rr`rars  rGtest_stringtemplatestylez(BasicConfigTest.test_stringtemplatestylercrdcd}tjdd|ttjjdtjjd}||tjtjddd}||jj	|jj	||jj
|jj
||||ddS)	Nc~||tj|dSrrrh2rIs   rGrz.BasicConfigTest.test_filename.<locals>.cleanup-HHJJJHHJJJIbMMMMMritest.logr&)r%r(rkrrOr)rrrYrZrr?rrRr5moderErrCrrres    rG
test_filenamezBasicConfigTest.test_filenames			
	Z'BBBBW\233Q777,'*gw':;;;&z3III,ho.BCCC,ho.BCCC(J?????ricd}tjddtjjd}tjdd}||jj|jj||||ddS)Nc~||tj|dSrrris   rGrz.BasicConfigTest.test_filemode.<locals>.cleanuprkrirlwbr%filemoder)	rrrr?rRrYr5rmrrns    rG
test_filemodezBasicConfigTest.test_filemodes			
	Z$????,'*&z488,ho.BCCC(J?????rictj}||jt	j||ttjj	dtjj	d}|
|tj||j|dS)Nrrkr)
r3r4rrJrrrYrZrr?rr8r5)rCr5rs   rGtest_streamzBasicConfigTest.test_streams%%%6****W\233Q777,'*gw'<===00000rictjdtjjdj}||jjddS)Nz%(asctime)s - %(message)s)rr)rrrr?rrYrLrFrCrs  rGtest_formatzBasicConfigTest.test_formatsL#>????L)!,6	).0KLLLLLrictjdtjjdj}||jddS)Nrb)rr)rrrr?rrYrrys  rGtest_datefmtzBasicConfigTest.test_datefmtsGE****L)!,6	*E22222rictjdtjjdj}||jtjdS)Nrr>r)rrrr?rrrLrMrys  rG
test_stylezBasicConfigTest.test_stylesJ#&&&&L)!,6	i.0KLLLLLricZtjj}|tjj|tjd|tjjdtjd|tjjddS)N9)r:)rrrrr6rrY)rC	old_levels  rG
test_levelzBasicConfigTest.test_levelsL&	-y999"%%%%+R000"%%%%+R00000ric|j}tjg}tj}|t
tjd||t
tjd||t
tj|||t
tjtjtjdddS)Nrl)r%r5)r%r?)r5r?)loglevelrOrs)rrr8r1rrCrr)rCrr?r5s    rGtest_incompatiblez!BasicConfigTest.test_incompatibles()++,Z!4z=C	E	E	E	EZ!4z?G	I	I	I	IZ!4V?G	I	I	I	I	Z!4w|LLLLTC888888ricRtjtjtjtjg}tj}|d|tj|||dtjj	d||dtjj	d||dtjj	d|
|dj|
|dj||dj|||dj|djdS)Nr)r?rrk)rr8r1rr:r=rrrr?rIr)rCr?rs   rG
test_handlerszBasicConfigTest.test_handlerssL!##!#*--!##


  ###X....

hqk7<#8#;<<<

hqk7<#8#;<<<

hqk7<#8#;<<<Xa[2333Xa[2333

hqk+Q///

hqk+Xa[-BCCCCCrictj}tj}tj|g}tj|g}tjtj|tjdtjdtjd|	ttjjdtjtj
|dtjdtjdtjd|	ttjjd|	|d|	|d	dS)
NrrrrrkT)rr?forcezWARNING:root:warnz WARNING:root:warn
INFO:root:info)r3r4rr8rrrrrrYrZrr?rrWr)rC
old_string_io
new_string_ioold_handlersnew_handlerss     rG
test_forcezBasicConfigTest.test_forces





-m<<=-m<<='/LIIIIV
gW\233Q777',"&	(	(	(	(V
gW\233Q777//117799,	.	.	.//117799<	>	>	>	>	>ric	d}tjd|ddtj|t	tjjdtjjd}||tj||j	|tj
d|tdd	5}|
}dddn#1swxYwYtjd||ddS#|tdd	5}|
}dddn#1swxYwYtjd||dwxYw)
Nr&rlr%(message)sr%r(errorsrrrkr.The Øresund Bridge joins Copenhagen to Malmörrrr7rYrZrr?rrRr(rrJrr`rr5rrCr(rrrs     rG
test_encodingzBasicConfigTest.test_encodings:	OHh'/'4GM
K
K
K
K
S!677;;;l+A.G!!'7+>???W-x888MJKKKMMOOOj7333
(qvvxx~~''
(
(
(
(
(
(
(
(
(
(
(
(
(
(
(Ij!!!TM
O
O
O
O
O	
MMOOOj7333
(qvvxx~~''
(
(
(
(
(
(
(
(
(
(
(
(
(
(
(Ij!!!TM
O
O
O
OBB=E$'DDD&G4'F'G'F++G.F+/.Gc	d}tjd|ddtj|t	tjjdtjjd}||tj||j	|tj
d|tdd	
5}|
}dddn#1swxYwYtjd||ddS#|tdd	
5}|
}dddn#1swxYwYtjd||dwxYw)Nrrlignorerrrkrrr&rz*The resund Bridge joins Copenhagen to Malmrrs     rGtest_encoding_errorsz$BasicConfigTest.test_encoding_errors*s	QHh'/'4GM
K
K
K
K
S!677;;;l+A.G!!'7+>???W-x888MJKKKMMOOOj7333
(qvvxx~~''
(
(
(
(
(
(
(
(
(
(
(
(
(
(
(Ij!!!T#OPPPPP	
MMOOOj7333
(qvvxx~~''
(
(
(
(
(
(
(
(
(
(
(
(
(
(
(Ij!!!T#OPPPPrc	d}tjd|dtj|t	tjjdtjjd}||tj||j	|||j
dtjd|tdd	
5}|}dddn#1swxYwYt!jd||ddS#|tdd	
5}|}dddn#1swxYwYt!jd||dwxYw)Nrrlr)r%r(rrrkrbackslashreplaceu<😂: ☃️: The Øresund Bridge joins Copenhagen to Malmör&rzL\U0001f602: \u2603\ufe0f: The \xd8resund Bridge joins Copenhagen to Malm\xf6)rrr7rYrZrr?rrRr(rrrJrr`rr5rrs     rGtest_encoding_errors_defaultz,BasicConfigTest.test_encoding_errors_default=sV	KHh'4GM
K
K
K
K
S!677;;;l+A.G!!'7+>???W-x888W^-?@@@MXYYYMMOOOj7333
(qvvxx~~''
(
(
(
(
(
(
(
(
(
(
(
(
(
(
(Ij!!!T$J
K
K
K
K
K	
MMOOOj7333
(qvvxx~~''
(
(
(
(
(
(
(
(
(
(
(
(
(
(
(Ij!!!T$J
K
K
K
KsBCE(>'D11D58D5(&G7'G5G7GG7G	.G7ct	d}tjd|ddtj|t	tjjdtjjd}||tj||j	||
|jgfd}||_tj
d||d	d|t#dd
5}|}dddn#1swxYwYt)jd||ddS#|t#dd
5}|}dddn#1swxYwYt)jd||dwxYw)
Nrrlrrrkrcztj\}}}t|dSr)r1rrFrY)rrgrrs   rGdummy_handle_errorzEBasicConfigTest.test_encoding_errors_none.<locals>.dummy_handle_erroras2,..1as1vv&&&&&rirz:'ascii' codec can't encode character '\xd8' in position 4:r&rr)rrr7rYrZrr?rrRr(rrrrrBrrJrr`rr5r)rCr(rrrrrs      @rGtest_encoding_errors_nonez)BasicConfigTest.test_encoding_errors_noneQs	(Hh'+'4GM
K
K
K
K
S!677;;;l+A.G!!'7+>???W-x888gn---G
'
'
'
'
'#5GMJKKKOOG$$$MM=>Eaj
J
J
J
MMOOOj7333
(qvvxx~~''
(
(
(
(
(
(
(
(
(
(
(
(
(
(
(Ij!!!T3'''''
MMOOOj7333
(qvvxx~~''
(
(
(
(
(
(
(
(
(
(
(
(
(
(
(Ij!!!T3''''sBDF(>'E11E58E5(&H7'H5H7HH7H	.H7Ncgtjfd}tjtd|t	t|}|
||dn|ddifgdS)Nctjj}tjdtjj|||fdS)Nd)rrrr6rrF)rOrrrold_basic_configrCs   rGmy_basic_configz2BasicConfigTest._test_log.<locals>.my_basic_configxsg*IL!!#&&&OOGL19===MM1b'"""""rirztest mert)rrrrr,rY)rCrKrrrrrs`    @@rGrzBasicConfigTest._test_logss".	#	#	#	#	#	#	#	
dG]ODDDWf--
Jui((((Jy!!!	
2r(,,,,,ricF|dtjdSr)rrrrms rGrzBasicConfigTest.test_logsugo.....ric0|ddSrrrms rGrzBasicConfigTest.test_debugrric0|ddSrrrms rGrzBasicConfigTest.test_inforric0|ddSrrrms rGrzBasicConfigTest.test_warningrric0|ddSrrrms rGrzBasicConfigTest.test_errorrric0|ddSrrrms rGrzBasicConfigTest.test_criticalrrir) rprqrrrsrHrRrr\rbrfrorurwrzr|r~rrrrrrrrrrrrrrrrrs@rGrUrU]s--#####00000;;;JJJ(++++++@@@$@@@111MMM333MMM111
9
9
9DDD">>>*OOO(QQQ&KKK((((D----.///   """   #######rirUcBeZdZfdZdZdZdZdZdZdZ	xZ
S)LoggerAdapterTestc@tt|tjddt|_tj|_|j	|j|
|jj|j|
|jjfd}|
||
tj
tj|jd|_dS)Nc*tjdd<dSr)rr$)old_handler_listsrGrz(LoggerAdapterTest.setUp.<locals>.cleanups&6G ###rirr)rrrHrr$rrrrrArrKrJrradapter)rCrrrs  @rGrHzLoggerAdapterTest.setUps
&&,,..."/2)++lt~...14>BBB,---	7	7	7	7	7	
   ())),DKtLLLricd}d}	ddzn9#t$r,}|}|j||jYd}~nd}~wwxYw|t|jjd|jjd}||jtj	||j
|||j|jf||j|j
||jfdSNztesting exception: %rrkr)rrrrrYrZrsrrr}r+rXrr
__traceback__rCr+rrrs     rGtest_exceptionz LoggerAdapterTest.test_exceptions&%	8
EEE 	8	8	8CL""377777777	8	
T^344a888'*777S)))t~&7888-c.?@	B	B	B	B	B
A"=AcL	ddzn#t$r}|}Yd}~nd}~wwxYw|jd||t	|jjd|jjd}||j|j||j	fdS)Nrkrz
exc_info testr)
rrrrYrZrrsrrr)rCrrrs    rGtest_exception_excinfoz(LoggerAdapterTest.test_exception_excinfos	
EEE 			CCCCCC		
===T^344a888'*-c.?@	B	B	B	B	Bs
cd}|j||j|t	|jjd|jjd}||jtj||j	|||j
|jfdS)Nzcritical test! %rrkr)rrrrYrZrsrrr{r+rX)rCr+rs   rGrzLoggerAdapterTest.test_criticals!c4>222T^344a888'*)9:::S)))t~&788888ric|jjjj}d|jjj_|t
|jjjd|||jddS)N!rN )rrrrNrrr;isEnabledForrCrs  rGtest_is_enabled_forz%LoggerAdapterTest.test_is_enabled_forssl)19.0#+!4!<i#	%	%	%2226677777ric`||j|jjD]}|j|||j||jdSr)rBrr>rr?rKr;rSs  rGtest_has_handlersz#LoggerAdapterTest.test_has_handlerss0022333{+	/	/GK%%g....0022333113344444ricGddtj}d}||jd}||d}d|_|t|t||tj||j|t|jj
d|jj
d}||jtj||jd|||j
|jf|j}||j|||jj|t!}	||_||j|||j|||jj|||_n#||_wxYw||j|||j|||jj|dS)	NceZdZdZdZdS).LoggerAdapterTest.test_nested.<locals>.AdapterAdapterc|jd||fSr|r)rCr+r}s   rGrKz6LoggerAdapterTest.test_nested.<locals>.Adapter.processs+----v55riN)rprqrrrrKrtrirGrrs(F
6
6
6
6
6rirzAdapters can be nested, yo.rAdapterAdapterrkrzAdapter AdapterAdapter )rrrrrYrrr{rrZrsrr+rXrrr)rCrr+radapter_adapterrorig_managertemp_managers        rGtest_nestedzLoggerAdapterTest.test_nesteds2	6	6	6	6	6g+	6	6	6,'D999!'===!1g_(=(=>>>G,c4>BBBT^344a888'*)9:::%Ds%D%DEEEt~&7888&.

go|444

dk)<888xx	3&2O#MM/1<@@@MM'/<888MM$+-|<<<&2O##lO#2222

o-|<<<

go|444

dk)<88888s
AG00	G9)rprqrrrHrrrrrrrrs@rGrrsMMMMM"BBB"BBB9998885559999999rirc~eZdZfdZdZdZdZdZdZdZ	dZ
d	Zd
ZdZ
dZd
ZdZdZdZdZxZS)
LoggerTestctt|t|_tjd|_|j|j|	|jj
|j|	|jj|	t
jdS)NblahrE)
rrrHrrrrrrArrKrJrrs rGrHzLoggerTest.setUps
j$%%''')++n&111t~...14>BBB,---()))))ric|td|jjd|td|jjddS)Nz,Level not an integer or a valid string: Nonez.Level not an integer or a valid string: (0, 0))rr)r)rrr6rms rGtest_set_invalid_levelz!LoggerTest.test_set_invalid_levels^!!EK $	(	(	(	
!!GK &	*	*	*	*	*ricd}d}	ddzn9#t$r,}|}|j||jYd}~nd}~wwxYw|t|jjd|jjd}||jtj	||j
|||j|jf||j|j
||jfdSr)rrrrrYrZrsrrr}r+rXrrrrs     rGrzLoggerTest.test_exceptions&%	7
EEE 	7	7	7CK!!#t~66666666	7	
T^344a888'*777S)))t~&7888-c.?@	B	B	B	B	Brctjtdd5|t|jjddddddS#1swxYwYdS)NrTrtest message)r	swap_attrrrrrrrms rG!test_log_invalid_level_with_raisez,LoggerTest.test_log_invalid_level_with_raise-s

w(94
@
@	P	Pi$OOO	P	P	P	P	P	P	P	P	P	P	P	P	P	P	P	P	P	Ps(AAActjtdd5|jddddddS#1swxYwYdS)NrFrr)rrrrrrms rGtest_log_invalid_level_no_raisez*LoggerTest.test_log_invalid_level_no_raise1s

w(95
A
A	2	2KOOD.111	2	2	2	2	2	2	2	2	2	2	2	2	2	2	2	2	2	2sAA	A	cgtj|tjdfd|jd|td|dddS)Nprint_stackcR|Sr)rFrW)rr~rs  rGrz=LoggerTest.test_find_caller_with_stack_info.<locals>.<lambda>8sfmmDMMOO&D&DriTrrkrr)rrr	tracebackr
findCallerrYrZ)rCrs @rG test_find_caller_with_stack_infoz+LoggerTest.test_find_caller_with_stack_info5s
dG-}DDDD	F	F	F	
$///Va(((;VAYGGGGGricd|jjfdfdfd}|jj}|||djd|dj}dz
|||djd||dj||dj}dz
|||djd||dj||dj}tj	}|
|jtj|||djd||j|jjdz
|||djd	||dj|dS)
Nrkc"ddS)Nr)
stacklevelrt)	the_leveltriggersrG	innermostz>LoggerTest.test_find_caller_with_stacklevel.<locals>.innermostCsGFy111111ricdSrrt)rsrGrz:LoggerTest.test_find_caller_with_stacklevel.<locals>.innerFsIKKKKKricdSrrt)rsrGouterz:LoggerTest.test_find_caller_with_stacklevel.<locals>.outerIsEGGGGGrir*rrr test_find_caller_with_stacklevel)rrrrsrYrfr0rrrrArK)	rCrrsr0r0rrrrs	     @@@@rGrz+LoggerTest.test_find_caller_with_stacklevel?s!	+%	2	2	2	2	2	2										.(
-{;;;#Q	
-w77772;-v666#Q	
-w77772;-v666#'))t~.../
-w777!!$.111+%Q	
-/QRRR72;-v66666ric d}d}dx}x}x}x}x}x}}	tj|||||||||			}
dt|
jzD]5}|di}|t|jj|||||||||	6dS)N	my record
)rrb
some valuersinfo)	r_logRecordFactoryr^__dict__keysrrrr
makeRecord)
rCrErrIlnor+rXrr1rrvrrs
             rG%test_make_record_with_extra_overwritez0LoggerTest.test_make_record_with_extra_overwritefs:>>>S>3>>>4%

&tUBS$'/u>>*E"+2B2B2D2D,E,EE	8	8C,'Eh(>e #sD($)

8
8
8
8	8	8ricd}d}dx}x}x}x}x}x}}	ddi}
|j||||||||
|			}|d|jdS)Nrr	valid_keyrr)rrrr)rCrErrIrr+rXrr1rrr5s            rG(test_make_record_with_extra_no_overwritez3LoggerTest.test_make_record_with_extra_no_overwritess:>>>S>3>>>4%l+''eRc4(0U(LL

k6?33333ric||j|jjD]}|j|||jdSr)rBrr>r?rKr;rSs  rGrzLoggerTest.test_has_handlers|sw//11222{+	/	/GK%%g....002233333rictjd}d|_||dS)Nz
blah.childF)rrrPr;r>)rCchild_loggers  rGtest_has_handlers_no_propagatez)LoggerTest.test_has_handlers_no_propagates@(66!&113344444ric|jjj}d|jj_|t|jjd|||jddS)NrN)rrrNrrr;rrs  rGrzLoggerTest.test_is_enabled_forsck)1&(#!4iMMM11"5566666ricf|jj}|jjj}d|j_d|jj_|t
|jd||t
|jjd|||jddS)NTrTrrNr)rrrrNrrr;r)rCold_disabledrs   rG#test_is_enabled_for_disabled_loggerz.LoggerTest.test_is_enabled_for_disabled_loggers{+k)1#&(#j,GGG!4iMMM11"5566666rictj}||tj||tjd||tjd||tjd||tjdj||tjdj||tjdj||tjd||tjdjdS)Nrrrafoo.bar)rrrrparentr!)rCrs  rGtest_root_logger_aliasesz#LoggerTest.test_root_logger_aliasess4 ""

dGL)))

dG-d33444

dG-b11222

dG-f55666

dG-e449:::

dG-i88=>>>

dG-e44;<<<w066777w0;;BCCCCCric|ttjt|ttjddS)Nsfoo)rrrranyrms rGtest_invalid_nameszLoggerTest.test_invalid_namess>)W%6<<<)W%6?????ricttjdzD]Z}dD]U}tj|}tj||}tj|}|||V[dS)Nrk)rrrar
zbaz.bar)r_rHIGHEST_PROTOCOLrrr:rr)rCprotorErrg	unpickleds      rG
test_picklingzLoggerTest.test_picklings62Q677	1	1EA
1
1 *400L//"LOO	

i0000	
1	1	1ric
|j}tjd}tjd}|tj||tj||ji||	tj|
|	tj||jtjdtjdi||ji||	tj||ji||	tj||jtjdi|tj||tj||ji|
|	tj|tj
||tj||ji||ji||ji|
|	tj||	tj|
|	tj||	tj||	tjtj||tj||ji||ji||ji|
|	tj|
|	tj|
|	tjdS)NrrTF)r0rrr6r}rYr1_cacherBrr;r7r{rrN)rCrr.r/s    rGtest_cachingzLoggerTest.test_cachings%#E**#I..	


gm$$$2244gmDDD,,,	
,,W];;<<<--gm<<==='-w}e)TUUUb))),,W];;<<<	
b)))))'-88999w}d&;<<<	)***2244g6FGGG,,,	
--gm<<===	(((2244g6FGGG,,,,,,b)))	
--gm<<===,,W-=>>???--gm<<===,,W-=>>???))'-88999	2244g6FGGG,,,,,,b)))	
--g.>??@@@--g.>??@@@**7+;<<=====ri)rprqrrrHrrrrrrrrrrrrr
rrrrrs@rGrr	s8********BBB"PPP222HHH%7%7%7N888444444555
777
7
7
7DDD@@@1116>6>6>6>6>6>6>rirc*eZdZdZdZdZdZdZdS)BaseFileTestz1Base class for handler tests that write log filesct|tjdd\}|_tj|g|_dS)Nrjztest_logging-2-)rrHr3r4rIr5rJrmfiles)rCrHs  rGrHzBaseFileTest.setUpsEt&v/@AADG
ric|jD]}tj|tj|jrtj|jt|dSr)rr5r6r<r=rIrrR)rCrIs  rGrRzBaseFileTest.tearDownsf,		BIbMMMM
7>>$'""	Idg$ric|tj|d|z|j|dS)z7Assert a log file is there and register it for deletionzLog file %r does not existr+N)rBr5r<r=rrF)rCr%s  rG
assertLogFilezBaseFileTest.assertLogFilesTx0088C		E	E	EH%%%%%ric
ptjdtjdd|dddS)Nr^rhrk)rrr7rnrms rGnext_reczBaseFileTest.next_recs9 gmS!!%!2!2!4!4dD$HH	HriN)rprqrrrsrHrRr r"rtrirGrrs[77   &&&HHHHHrirceZdZdZdZdS)FileHandlerTestc*tj|jtj|jdd}||j|tj	|j|
tji||j|
tj	|j|dS)Nr&Tr')r5r6rIrrRrr5r;r<r=r:rrIrBrJ)rCfhs  rG
test_delayzFileHandlerTest.test_delays
	$'

 7$
G
G
G")$$$00111
		''++,,,RY'''tw//000





ricPtj|jtj|jdd}|tjd|||	||t|j5}||
dddddS#1swxYwYdS)Nr&rN)r(rmrr|)r5r6rIrrRr=r:rr"rJrrYr`r)rCr&rs   rG%test_emit_after_closing_in_write_modez5FileHandlerTest.test_emit_after_closing_in_write_modes"
	$'

 7
E
E
E
)-88999


   






   
$']]	5bRWWYY__..444	5	5	5	5	5	5	5	5	5	5	5	5	5	5	5	5	5	5s;DD"DN)rprqrrr'r)rtrirGr$r$s2	5	5	5	5	5rir$ceZdZejejddZdZdZ	dZ
dZejdZ
dS)	RotatingFileHandlerTestWASI does not have /dev/null.ctj|jdd}||d|tjtjdd}|||	|dS)Nr&rr(maxBytesrk)
rr?rSrIr;shouldRolloverrJr5devnullr"rCrhs  rGtest_should_not_rolloverz0RotatingFileHandlerTest.test_should_not_rollovers

1
1'A277**400111





1
1
Wq2::**4==??;;<<<





rictj|jdd}||||dS)Nr&rkr.)rr?rSrIrBr0r"rJr2s  rGtest_should_rolloverz,RotatingFileHandlerTest.test_should_rollover,s[


1
1$'GVW
1
X
X))$--//::;;;





rictj|jd}||||j|dS)Nr&r)rr?rSrIrr"r rJr2s  rGtest_file_createdz)RotatingFileHandlerTest.test_file_created1sb

1
1$'G
1
L
L


   47###





ricd}tj|jddd}||_||||j|||||jdz|||||jdz|tj
||jdz|dS)	Nc|dzSN.testrtrs rGnamerz>RotatingFileHandlerTest.test_rollover_filenames.<locals>.namer:s'>!rir&rrkr(backupCountr/.1.2.3)
rr?rSrIr=rr"r r;r5r<r=rJ)rCr=r3s   rGtest_rollover_filenamesz/RotatingFileHandlerTest.test_rollover_filenames9s1	"	"	"


1
1Gg1q2BB


   47###


   55400111


   55400111dgn(=(=>>???





ricGddtjj}||jddd}|||j|jdz||||j|||||jdzd	z|	tj||jdz|
dS)
NceZdZdZdZdS)ZRotatingFileHandlerTest.test_namer_rotator_inheritance.<locals>.HandlerWithNamerAndRotatorc|dzSr;rt)rCrEs  rGr=z`RotatingFileHandlerTest.test_namer_rotator_inheritance.<locals>.HandlerWithNamerAndRotator.namerJsg~%ricxtj|rtj||dzdSdS)N.rotated)r5r<r=r)rCsourcedests   rGrotatorzbRotatingFileHandlerTest.test_namer_rotator_inheritance.<locals>.HandlerWithNamerAndRotator.rotatorMs?7>>&)):Jvtj'899999::riN)rprqrrr=rLrtrirGHandlerWithNamerAndRotatorrFIs2
&
&
&
:
:
:
:
:rirMr&rrkr>r<r@rI)rr?rSrIrYr=rr"r r;r5r<r=rJ)rCrMr3s   rGtest_namer_rotator_inheritancez6RotatingFileHandlerTest.test_namer_rotator_inheritanceHs>	:	:	:	:	:)9)M	:	:	:(
'Gg1qBBB$'**DGg,=>>>


   47###


   288DGdN33j@AAA4(@(@AABBB





ricd}d}tj|jddd}||_||_|}||||j|}||||jdz}||tj
}t|d5}|}	tj|	}
||
d	|j|zdddn#1swxYwY||||jd
z}||t|d5}|}	tj|	}
||
d	|j|zdddn#1swxYwY||||jd
z}t|d5}|}	tj|	}
||
d	|j|zdddn#1swxYwY|tj||jdz|dS)Nc|dzS)Nz.gzrtrs rGr=z3RotatingFileHandlerTest.test_rotator.<locals>.namer]s%<ricJt|d5}|}tj|d}t|d5}||dddn#1swxYwYdddn#1swxYwYtj|dS)NrbrWrr)rr`zlibcompressrr5r)rJrKsfr
compresseddfs      rGrLz5RotatingFileHandlerTest.test_rotator.<locals>.rotator`sfd##
)rwwyy!]433
$%%)HHZ((()))))))))))))))
)
)
)
)
)
)
)
)
)
)
)
)
)
)
)

Ifs5:BA-!B-A1	1B4A1	5BBBr&rrkr>r@rRrrArB)rr?rSrIrLr=r"rr r5lineseprr`rS
decompressrYrrr+r;r<r=rJ)rCr=rLr3m1m2rInewlinerrVrs           rGtest_rotatorz$RotatingFileHandlerTest.test_rotator[s	 	 	 			

1
1Gg1q2BB

]]__
47###
]]__

U47T>
"
"2*
"d^^	EqJ?:..DT[[1126G3CDDD	E	E	E	E	E	E	E	E	E	E	E	E	E	E	E	

   
U47T>
"
"2
"d^^	EqJ?:..DT[[1126G3CDDD	E	E	E	E	E	E	E	E	E	E	E	E	E	E	E	

   
U47T>
"
"
"d^^	EqJ?:..DT[[1126G3CDDD	E	E	E	E	E	E	E	E	E	E	E	E	E	E	E	
dgn(=(=>>???





s9-AEEE=AH##H'*H'8AKK"%K"N)rprqrrrrris_wasir4r6r8rCrN
requires_zlibr]rtrirGr+r+sX_W_&EFFGF



&W*****rir+cjeZdZejejddZdZdZ	dZ
dZdZdS)	TimedRotatingFileHandlerTestr,c,tjtjddd}tjdtjddi}||	||
dS)NSr&rkr(r?皙?r+ztesting - device file)rr?rTr5r1r`rbrr;r0rJ)rCr&rs   rGr4z5TimedRotatingFileHandlerTest.test_should_not_rollovers

6
6
C'q7BB
3!5*A"BCC**1--...





rictj|jddd}tjd}||tjddi}||||jtj
dtjdd	i}|||d
}tj
}d}t|D]t}|tj|z
}	|j|	d
zt"j}|r|jnud|z}
|st"j|j\}fdt#j|D}t1d|dzt2jt1d|zt2j|D]}}
t1d|
zt"j||
}t9|d5}t1|dddn#1swxYwY~|||
dS)Nrcr&rkrdrWr+ztesting - initialreztesting - after delayFi,secondsz.%Y-%m-%d_%H-%M-%Sz,No rotated files found, went back %d secondsc>g|]}||Srt)r)rZrrIs  rGr\z>TimedRotatingFileHandlerTest.test_rollover.<locals>.<listcomp>s*CCC1!,,r2B2BCQCCCriz
Test time: %sz%Y-%m-%d %H-%M-%Sr~zThe only matching files are: %szContents of %s:rr)rr?rTrIr:r=rrr r`rbrJrXrr_	timedeltastrftimer5r<r=rrFrlistdirrur1rrrr`rB)rCr&rr:r;foundrGO_BACKsecsprevr+dnfilesrr<tfrIs                @rG
test_rolloverz*TimedRotatingFileHandlerTest.test_rollovers


6
6wA7?? 9::


"E+>#?
@
@
47###
3

"E+B#C
D
D




##%%'NN		D+D9999D4==)=>>>BGNN2&&E
##B'''
=wF
	%W]]47++FBCCCC
2CCCE/CLL1D$E$EECJWWWW3e;#*MMMM
%
%'!+,,,w||B**$__%"''))$$$%%%%%%%%%%%%%%%3'''''s5"J##J'	*J'	c|j}|ttjj|jddd|ttjj|jddd|ttjj|jddddS)NXr&Tr'WW7)rrCrr?rTrI)rCrs  rGtest_invalidz)TimedRotatingFileHandlerTest.test_invalids(Z!1!JWcG4	A	A	A	AZ!1!JWcG4	A	A	A	AZ!1!JWdWD	B	B	B	B	B	Bric	d}tjddd}tj|jddddd|}	||}|||dz||d	z}|||d
z|dS#|wxYw)Nrr&MIDNIGHTrkTr(whenintervalr?rYatTimeжi@)	rXr`rr?rTrIcomputeRolloverrYrJ)rCcurrentTimerr3rds     rG"test_compute_rollover_daily_attimez?TimedRotatingFileHandlerTest.test_compute_rollover_daily_attimesr1a((


6
6GgJPQV7%%	''44FV[<%?@@@''l(BCCFV[<%?@@@HHJJJJJBHHJJJJs
AB::Cc
ttj}||dzz
}tjddd}tj|j}tdD]f}tj|j	dd|zddd|	}	||kr	d|z
|z}n||z
}|dz}|d
z
}||z
}|
|}||kr:tdtjztdtz|||||kr|d
z
}|
|dz}||kr:tdtjztdtz||||O#|wxYwdS)NQr|rr&zW%drkTr~rzfailed in timezone: %dzlocal vars: %si:	r)rUr`rXr_tm_wdayr_rr?rTrIrrutimezonelocalsrYrJ)	rCrtodayrwdaydayr3rerds	         rG#test_compute_rollover_weekly_attimez@TimedRotatingFileHandlerTest.test_compute_rollover_weekly_attimes$)++&&kE11r1a(({5!!)88		C!::'aUV;))B
#::!"D3HH #d
HL(L(E!++E22X%%2T]BCCC*VXX5666  222$;; 00H++EL,@AAX%%2T]BCCC*VXX5666  222







?		s
DF66Gc@tjd}|tj|g}t
j}tdD]B}||	d|tj
dz
}Cd}g}g}|D]}tj
|d|z}	tj|	d	dd
d}
||
|d
r |D]}||d|d|
_|D]}||d|d|D]K}tj
||}	t'|	d5}
	dddn#1swxYwYLt)|D]S\}}||}
|
}|t/|d|d
rUd|z}	|D]L}tj|\}}|||	M|D]}tj|\}}||d|||dzo)|t/|dzUdS)NrrrKz%Y-%m-%d_%H-%M-%Srrg)a.bza.b.czd.ezd.e.fz%s.logrgrT)rrr?r)rz.log.c4|dddzS)Nrjr)rrs rGrzKTimedRotatingFileHandlerTest.test_compute_files_to_delete.<locals>.<lambda>sT\\&"-E-E-Nrirrjrrraz%s.log.r)r3mkdtemprshutilrmtreerXrr_rFrlrkr5r<rrr?rTrr=r	enumerategetFilesToDeleterYrZrrBrCisdigit)rCwdtimesr!r[prefixesrsrotatorsrrhrLrrIr
candidatesrcrws                 rGtest_compute_files_to_deletez9TimedRotatingFileHandlerTest.test_compute_files_to_deletes

_
5
5
5
r***


"
"
$
$r	0	0ALL%899:::($Q////BB3
	<
	<FRF!233A&??IJLMFJ@LLG
OOG$$$  ''
<<<ALL!:;;;;<!O N
<<ALL!:;;;;<		BR$$Aa
!














#8,,	C	CIAvqkG 1133JS__a000  ''

C&#66AGMM!,,EArOOBMM!$4$455556$CCAGMM!,,EArOOBKK$7$7888OOBMM&3,$?$?%B$&s6{{Q$7$?$?$A$ACCCCC	C	Cs F..F2	5F2	N)
rprqrrrrrr^r4rurzrrrrtrirGrarasX_W_&EFFGF((((((TBBB


 &&&P.C.C.C.C.CriracPtjdi|tjdzS)Nrkrgrt)rXrk)rs rGrprp0s,####x'9!'D'D'DDDri)rcrk)M<)Hi)Dr)r}rW0r^)dayshoursctj|jd|ddd}d}||}||krh|dkra	|jrt
j|}nt
j|}|d}|d	}|d
}	tjj	|dz|zdz|	zz
}
||
z}td|d
|jdtjtd|ztjtd|ztjtd|	ztjtd|
ztjtd|ztjn5#t$r(}td|ztjYd}~nd}~wwxYw||||dS)Nr&rkrT)r(rrr?rYgr}rar^rrzt: z ()rjzcurrentHour: %szcurrentMinute: %szcurrentSecond: %szr: %sz
result: %sz exception in diagnostic code: %s)rr?rTrIrrYr`r_	localtime	_MIDNIGHTrur1rrtrYrJ)
rCrexpr3rrdrcurrentHour
currentMinute
currentSecondrr5rs
             rGtest_compute_rolloverr;s


6
6GgD1!QU7WW##K00&==z!!Sv8 K44 N;77"#A$K$%aDM$%aDM(2{R7G7D8EHJ7K)7*+A)1_FE!!!RVVV43:FFFF+k9
KKKK-
=CJOOOO-
=CJOOOO'A+CJ7777,/cjAAAAA SSS<q@szRRRRRRRRRSf%%%





sD*E<<
F.F))F.ztest_compute_rollover_%sz>win32evtlog/win32evtlogutil/pywintypes required for this test.ceZdZdZdS)NTEventLogHandlerTestcd}tjd|}tj|}	tjd}n7#tj$r%}|jdkrtj
dd}~wwxYwtjddi}|||
||tj|tjtjz}d}d}	tj|||	}
|
D],}|jdkrt'j||}|d	kr*d
}d|	z}|||dS)
NApplicationtest_loggingrz#Insufficient privileges to run testr+zTest Log MessageFrzTest Log Message
Tz3Record not found in event log, went back %d recordsr)win32evtlogOpenEventLogGetNumberOfEventLogRecordsrr?NTEventLogHandler
pywintypesrwinerrorrSkipTestrr:rJ
assertLessEVENTLOG_BACKWARDS_READEVENTLOG_SEQUENTIAL_READReadEventLog
SourceNamewin32evtlogutilSafeFormatMessagerB)rClogtypeelhnum_recsrQrrflagsrnroeventsr+s            rGrDz NTEventLogHandlerTest.test_basicasz&tW559#>>	 22>BBAA			zQ'(MNNN	

!5*<"=>>					+"H"M"MNNN345)#ug>>		A|~--!3Aw??C,,,ECgM3'''''sA

B A<<BN)rprqrrrDrtrirGrr_s#(((((rirceZdZdZdS)MiscTestCasecFhd}tj|t|dS)N>
rrFiltererrp
RootLoggerrLPlaceHolderr[currentframerMStrFormatStyler4rM)not_exported)rcheck__all__r)rCrs  rGtest__all__zMiscTestCase.test__all__s3
	T7FFFFFFriN)rprqrrrrtrirGrrs(GGGGGrircTtjtjdddS)NLC_ALLr)renterModuleContextrrun_with_localertrirGsetUpModulers& 7" E EFFFFFri__main__r)rsrlogging.handlerslogging.configrrr"rXrPrr3rr9r5rrcrTrrr	r1r3test.support.script_helperrrrrtest.supportrrrr	test.support.logging_helperr
rxrpr`rrr~http.serverrrurllib.parser
rsocketserverrrrrimport_deprecatedrrrrrrnrSrHAVE_ASAN_FORK_BUGrTestCaserrvrSILENTrTERSEEFFUSIVErr	TALKATIVEr
CHATTERBOXBORINGr_rrrrrrrrrr8rrrrrrrrr r%r.r3rrr5rIr:rprurrrr r'r2r7rEIPV6_ENABLEDrIrOryrrrrrrrrrrrrrr?r
unittest.mockrrrkrtzinforrYr'r+r}roryrrrrrrrr&rUrrrr$r+rarprrrrrrrrpmainrtrirG<module>rs`"








												



				















NNNNNNNN""""""&&&&&&))))))((((((333333::::::::++++++++DDDDDDDDDDDD-?,Z88))'2263333333333333666155K5/JJJ6	KKKK			D	$HOEGG
j'j'j'j'j'x j'j'j'ZUIUIUIUIUIUIUIUIn<%<%<%<%<%h<%<%<%L		
eFFQJ''(*	'**)
+
+,
(+++++gn+++::::::::V'V'V'V'V'V'V'V'rW2W2W2W2W2(W2W2W2t11111111#####-###







'@'@'@'@'@'@'@'@XG;G;G;G;G;U%G;G;G;T000006000d'''''\:'''R11111L"4111>-----L"4---^769((((((}(((((((((((
! "",,..h/.#"@f5f5f5f5f5f5f5f5R-----*---BBBBBXBBBJ! "",,..W+W+W+W+W+W+W+/.#"W+rWWVY//1HII'''''-''JI' ! "",,..>:>:>:>:>:(>:>:/.#">:@WWVY//1HII'''''1''JI' ! "",,..IBIBIBIBIBIBIB/.#"IBVWWVY//1HII'''''-''JI' ]/;==
6
6
6
6
6-
6
6==
6! "",,..K K K K K hK K /.#"K Z11111111h.L.L.L.L.L8.L.L.Lb%K%K%K%K%K8%K%K%KP....







###					G)			y*y*y*y*y*Xy*y*y*v)99999(999.h"					w(			     8   F-,..iPiPiPiPiPxiPiP/.iPV77_--b&######0022]&]&]&]&]&H]&]&32]&@x!(/
cee........Y)Y)Y)Y)Y)H%'9Y)Y)Y)x&&&&&W7&&&GGGGGX.GGG&AAAAAHAAA,$;$;$;$;$;X$;$;$;N								$$$$$w*$$$T/T/T/T/T/8T/T/T/nx/x/x/x/x/(x/x/x/vg=g=g=g=g=Hg=g=g=R}#}#}#}#}#h'}#}#}#@
i9i9i9i9i9)i9i9i9X`>`>`>`>`>-`>`>`>FHHHHH8HHH455555l555,jjjjjljjjXeCeCeCeCeC<eCeCeCPEEE %,1B///0
)d)dID#*.3    BG(*Dt*KMbcccc["bcc ( ( ( ( (H ( (dc (FGGGGG8$GGGGGGzHMOOOOOs$C%%C32C37C<<DD