l܂_߫zSrSSKrSSKrSSKrSSKrSSKrSSKrSSKrSSKrSSK r SSK r SSK r SSK r SSK r SSKrSSKrSSKrSSKrSSKrSSKrSSKrSSKrSSKrSSKJrJr SSKJr SSKJr SSKJr SSKJr SSKJ r SS KJ!r! SS KJ"r" SS KJ#r# SS K$J%r% SSK&r&SSK'r'SSK(r(SSK)r)SSK*r*SSK+r+SSK,r,SS K-J.r.J/r/ SSK0J1r1 SSK2J3r3J4r4 SSK5J6r6J7r7J8r8J9r9 SSK:r:SSK;r;SSKr>\*R~"\RS5rA\*R~"\R"SS9S5rC"SS\*R5rE"SS\E5rF"SS\E5rGSrHSrISrJSrKSrLS rMS!rNS"rOS#rPS$rQ\R"\Q\HS%-5rS\HS&\IS'\JS(\KS)\LS*\MS+\NS,\OS-\PS.\QS/0 rT"S0S1\R5rV"S2S3\R5rW"S4S5\E5rXS6rY"S7S8\E5rZ"S9S:\[5r\"S;S<\R5r^"S=S>\[5r_"S?S@\E5r`"SASB\#R5rb"SCSD\[5rc"SESF\c\.5rd"SGSH\c\85re"SISJ\c\65rf\g"\SK5(a"SLSM\e5rh"SNSO\f5ri\R"5\ R"5"SPSQ\E555rl"SRSS\E5rm"STSU\R5roSVrp"SWSX\E5rq\R"5\ R"5"SYSZ\E555rr\*R"\g"\SK5S[5"S\S]\r55rt\R"5\ R"5"S^S_\E555ru\*R"\g"\SK5S[5"S`Sa\u55rv\R"5\ R"5"SbSc\E555rw\*R"\g"\SK5S[5"SdSe\w55rx\*R"\RSf5"SgSh\w55rz\R"5\ R"5"SiSj\E555r{"SkSl\E5r|"SmSn\E5r}"SoSp\E5r~SSqjr"SrSs5rStr"SuSv\R5r"SwSx\GRGR5r"SySz\GR 5r"S{S|5r"S}S~\5r"SS\5r"SS5rSrSSjr"SS\E5r"SS\E5r"SS\E5r"SS\GR"5r"SS\E5r\ R"5"SS\E55r\g"\GRS5(a.SSKrSSK0J1r1 \C\ R"5"SS\E555r\GR."S5r"SS\GR25r\"5r"SS5r"SS\*R\5r"SS\GR<5r"SS\*R5r"SS\E5r"SS\E5r"SS5r"SS\GRH5r"SS\E5r"SS\E5r"SS\E5r"SS\*R5r"SS\*R5r"SS\GRV5r"SS5r"SS\GRV5r"SS\E\5r"SS\E5r"SS\5r"SS\5r"SS\5rSrSSSSSS\"SSS944H8urrSH,r\\\4SjrS\-r\S%:a\S- r\\l\"\\\5 M. M: \*R"\:S5"SS\E55r"SS\*R5rSr\S:Xa\*GR~"5 gg!\=a S=r:=r;r<GNf=f!\=a GNf=f)zoTest harness for the logging module. Run all tests. Copyright (C) 2001-2022 Vinay Sajip. All Rights Reserved. N)assert_python_okassert_python_failure)support) import_helper) os_helper) socket_helper)threading_helper)warnings_helper)asyncore)smtpd) TestHandler) HTTPServerBaseHTTPRequestHandler)patch)urlparseparse_qs)ThreadingUDPServerDatagramRequestHandlerThreadingTCPServerStreamRequestHandlerz?libasan has a pthread_create() dead lock related to thread+forkT)threadz'TSAN doesn't support threads after forkc@\rSrSrSrSrSrSrSrSr S S jr S r S r g) BaseTestYzBase class for logging tests.z&%(name)s -> %(levelname)s: %(message)sz^([\w.]+) -> (\w+): (\d+)$rc[R"5Ul[R"5R R n[R [RR5Ul [RSSUl UR5=Ul n[RR5Ul[R R5Ul0=UlnUHn['X$SS5X4'M SSS5 [R"S5Ul[R"S5Ul[R"S5UlUR,R/5Ul[2R4"5UlUR,R9[R:5 [R<"UR65Ul[R@"URB5Ul"UR>RGURD5 UR(RI5(a;UR(RJUR,RJ-n[MSU-5eUR*RI5(a;UR*RJUR,RJ-n[MSU-5eUR,ROUR>5 URQUR(RI55 URQUR*RI55 g!,(df  GN]=f)zpSetup the default logging stream to an internal StringIO instance, so that we can examine log output as we want.Ndisabledu«×»uĿÖGzUnexpected handlers: %s))r threading_setup_threading_keylogging getLoggermanager loggerDict_lock _handlerscopysaved_handlers _handlerListsaved_handler_list saved_loggers _nameToLevelsaved_name_to_level _levelToNamesaved_level_to_name logger_statesgetattrlogger1logger2 root_loggergetEffectiveLeveloriginal_logging_levelioStringIOstreamsetLevelDEBUG StreamHandler root_hdlr Formatter log_formatroot_formatter setFormatter hasHandlershandlersAssertionError addHandler assertTrue)self logger_dictr*r/namehlists 8/opt/alt/python313/lib64/python3.13/test/test_logging.pysetUpBaseTest.setUpasm/>>@'')11<< ]]")"3"3"8"8":D &-&:&:1&=D #1<1A1A1C CD '.';';'@'@'BD $'.';';'@'@'BD $13 3D %&-m.A.8$'@ #&((8 (()=> ",,R0&*&6&6&H&H&J#kkm  !!'--0 ..t{{;%//@ ##D$7$78 << # # % %LL))D,<,<,E,EEE !:U!BC C << # # % %LL))D,<,<,E,EEE !:U!BC C ##DNN3  0023  0023?]s B2H = !C KKM II@1D E cJU=RS- slSUR-$)zEGenerate a message consisting solely of an auto-incrementing integer.z%d) message_numrFs rJ next_messageBaseTest.next_messages& Ad&&&&ro)rr1r2r/r5r?r<r3r)r'r.r*r,r8NN) __name__ __module__ __qualname____firstlineno____doc__r>r[rrrKrVrmrt__static_attributes__rorJrrYs,'9J4K%4NA>F$'rorcB\rSrSrSrSrSrSrSrSr Sr S r S r g ) BuiltinLevelsTestz*Test builtin levels and their inheritance.cURn[R"S5nUR[R5 [R "[R"S505nUR[R 5 [R"S5nUR[R5 UR[RU"55 URU"55 UR[RU"55 URU"55 URU"55 URU"55 UR[RU"55 URU"55 URU"55 URU"55 URU"55 URU"55 URU"55 URU"55 URU"55 UR/SQ5 g)NERRINFDEB) )rCRITICAL1)rERROR2)rr3)rr4)rWARNING5)rINFO6)rr7)rr8)rr9)rr10)rr:11)rtr r!r9r LoggerAdapterrr:logrerrorwarninginfodebugrm)rFmrrrs rJ test_flatBuiltinLevelsTest.test_flatsr   & W]]###G$5$5e$   & W\\"$$Y/'%%k2 ))/: !!'*  g&&,!#qs'**AC0AC  ac"13AC    rocHURn[R"S5n[R"S5n[R"S5nUR[R5 UR [R U"55 URU"55 UR [R U"55 URU"55 URU"55 URU"55 UR/SQ5 g)NrINF.BADPARENT.UNDEF INF.BADPARENT))rrr)rrr)rrr)rrr) rtr r!r9rrFATALrrrm)rFrr GRANDCHILDCHILDs rJtest_nested_with_virtual_parent1BuiltinLevelsTest.test_nested_with_virtual_parent,s   &&&'<= !!/2 W\\" w}}ac* '--% 13  AC   rocUR[R"S5[R5 UR[R"[R5S5 g)z&See issue #22386 for more information.rN)r^r getLevelNamerrss rJtest_regression_22386'BuiltinLevelsTest.test_regression_22386Fs@ --f5w||D --gll;VDrocp[R"S5nURU[R5 g)Nr)r rr^r)rFfatals rJtest_issue27935!BuiltinLevelsTest.test_issue27935Ks&$$W-  .roc[R"[RS5 UR[R[RS5 UR [R "[R5S5 UR [R "[R 5S5 UR [R "S5[R 5 g)z&See issue #29220 for more information.rrNOTSETN)r addLevelNamer addCleanupr^rrrss rJtest_regression_29220'BuiltinLevelsTest.test_regression_29220OsW\\2. ,,gllFC --gll;R@ --gnn=xH --h7Hror}N) rwrxryrzr{rrrrrrrr|r}rorJrrs,4- ^ .! F 4E /Irorc*\rSrSrSrSrSrSrSrg)BasicFilterTestiWzTest the bundled Filter class.c[R"S5nURRSnUR U5 [R "S5n[R "S5n[R "S5n[R "S5nUR UR55 UR UR55 UR UR55 UR UR55 URSS/5 URU5 g!URU5 f=f)N spam.eggsrspamspam.eggs.fishspam.bakedbeansrrrrrr) r Filterr3rB addFilterr!rrtrm removeFilter)rFfilter_handlerr spam_eggsspam_eggs_fishspam_bakedbeanss rJ test_filterBasicFilterTest.test_filter[s ..-""++A. *   g &$$V,D))+6I$../?@N%//0ABO IId'') * NN4,,. /    1 1 3 4  !2!2!4 5  ! !*/#    )G  )s C8D;;Ec|SnURRSnURU5 [R"S5n[R"S5n[R"S5n[R"S5nUR UR 55 UR UR 55 UR UR 55 UR UR 55 URSS/5 URU5 g!URU5 f=f) NcjURRS5nSRUSS5nUS:H$)N.r)rHsplitjoin)recordpartsprefixs rJ filterfunc8BasicFilterTest.test_callable_filter..filterfuncws5KK%%c*EXXeBQi(F[( (rorrrrrrr) r3rBrr r!rrtrmr)rFrrrrrrs rJtest_callable_filter$BasicFilterTest.test_callable_filterss ) ""++A. -   j )$$V,D))+6I$../?@N%//0ABO IId'') * NN4,,. /    1 1 3 4  !2!2!4 5  ! !*/#    ,G  ,s C8D((D;c[R"5n[R"SS05nURUR U55 g)NrHr)r r makeLogRecordrEfilter)rFfrs rJtest_empty_filter!BasicFilterTest.test_empty_filters7 NN   ! !6;"7 8  $ror}N) rwrxryrzr{rrrr|r}rorJrrWs(*0-:%rorxwvutsrqporqSilentTaciturnTerseEffusiveSociableVerbose Talkative Garrulous ChatterboxBoringc\rSrSrSrSrSrg)GarrulousFilteriz)A filter which blocks garrulous messages.c(UR[:g$N)levelno GARRULOUSrFrs rJrGarrulousFilter.filters~~**ror}Nrwrxryrzr{rr|r}rorJrrs 3+rorc\rSrSrSrSrSrg)VerySpecificFilteriz5A filter which blocks sociable and taciturn messages.c4UR[[4;$r)rSOCIABLETACITURNrs rJrVerySpecificFilter.filters~~h%999ror}Nrr}rorJrrs ?:rorcF\rSrSrSrSrSrSrSrSr Sr S r S r S r g ) CustomLevelsAndFiltersTestiz@Test various filtering possibilities with custom logging levels.^[\w.]+ -> (\w+): (\d+)$c[RU5 [R5Hup[R "X5 M gr)rrKmy_logging_levelsitemsr r)rFkvs rJrK CustomLevelsAndFiltersTest.setUps1t%++-DA   &.roc\[H"nURX R55 M$ gr) LEVEL_RANGErrt)rFloggerlvls rJlog_at_all_levels,CustomLevelsAndFiltersTest.log_at_all_levelss!C JJs--/ 0roczS[R4Sjn[R"S5n[R"S5n[R"5n[R"5n[R "U5n[R "U5nUR U5 URU5 URU5 URS5 UR5 UR5 URUR5S5 URUR5S5 g)Nrc@[R"U5nSUlU$)Nz new message!)r&msg)rs rJreplace_messageWCustomLevelsAndFiltersTest.test_handler_filter_replaces_record..replace_messagesYYv&F'FJMroparentz parent.childzoriginal messagezoriginal message z new message! ) r LogRecordr!r6r7r;rrDrflushr^r\)rFrrchildstream_1stream_2 handler_1 handler_2s rJ#test_handler_filter_replaces_record>CustomLevelsAndFiltersTest.test_handler_filter_replaces_records G$5$5 ""8,!!.1;;=;;=))(3 ))(3 O,)$ # %& **,.BC **,.>?rocl^[5m"U4SjS[R5n[R"S5nUR [R 5 UR U"55 UR U"55 URS5 URS[T55 g)Nc>>\rSrSrS\R 4U4SjjrSrg)WCustomLevelsAndFiltersTest.test_logging_filter_replaces_record..RecordingFilterircd>TR[U55 [R"U5$r)addidr&)rFrrecordss rJr^CustomLevelsAndFiltersTest.test_logging_filter_replaces_record..RecordingFilter.filters" BvJ'yy((ror}N)rwrxryrzr r rr|r/srJRecordingFilterr+s )W%6%6 ) )ror2rrr) setr rr!r9rrrr^r_)rFr2rr/s @rJ#test_logging_filter_replaces_record>CustomLevelsAndFiltersTest.test_logging_filter_replaces_records~% )gnn ) ""8, %*+*+ E CL)rocURR[5 URUR5 UR /SQ5 g)N)rrrrrrrrrrrr)r3r9VERBOSErrmrss rJtest_logger_filter-CustomLevelsAndFiltersTest.test_logger_filters= !!'* t//0   rocURRSR[5 UR UR5 UR /SQ5 URRSR[ R5 g!URRSR[ R5 f=f)Nr)r8r9r:r;r<)r3rBr9rrrmr rrss rJtest_handler_filter.CustomLevelsAndFiltersTest.test_handler_filters !!!$--h7 B  " "4#3#3 4  ! !#     % %a ( 1 1'.. AD   % %a ( 1 1'.. As .B8C cTURRSnSn[5nURU5 UR UR5 /SQnUR U5 [ 5nURRU5 UR UR5 UR U/SQ-5 U(aURRU5 URU5 g!U(aURRU5 URU5 f=f)Nr) )rr)rr)rrr7r8r9r:r;r<))rr)r12)r14)r15)r17)r18)r20)r3rBrrrrmrr)rFrspecific_filtergarr first_liness rJtest_specific_filters0CustomLevelsAndFiltersTest.test_specific_filters%s""++A. $! '  " "4#3#3 4 K  ! !+ .02O    & & 7  " "4#3#3 4  ! !+ 1 #   --o>   &  --o>   &s BC225D'r}N)rwrxryrzr{r[rKrr'r4r>rArMr|r}rorJr r s2J3' 1@8*"  B ('ror cb[R"U0UD6up#[R"U5 U$r)tempfilemkstemposrN)argskwargsfdfns rJmake_temp_filerWPs)   t .v .FBHHRL Irocn\rSrSrSrSrSr\R"\ RS:HS5\R"\ RS5\ R"5\ R"S5S 5555r\ R""5\ R"5\\S 5555rS rg ) HandlerTestiVc[R"5nSUlURURS5 SUlURURS5 UR [ UR S5 g)Ngenericanothergeneric)r HandlerrHr^ assertRaisesNotImplementedErroremitrFrUs rJ test_nameHandlerTest.test_nameWs\ OO  +! !12 -qvvtAHHQKIIbM$$RWW^^B%78HHQKOOBGGNN2$67$$QUUB/$$QUUB/ 8IIbM-*.||x',% $$228<  QZZ8 - -F!!*g.>.>.J.J"-vv?$$00ffM -    - -a 0  ! !" %  a()     - -a 0 q)*    sA0M00 M>=M>cH[5n[R"U5 [R"U5n[ R US44[ RRUS44[ RRUS444n[RS;a"U[ RRUS444- nUHaupEU"USS06nUR[RRU55 UR!5 [R"U5 Mc g)z` Test that path-like objects are accepted as filename arguments to handlers. See Issue #27493. warUrerkriN)rWrRrurFakePathr FileHandlerrBRotatingFileHandlerTimedRotatingFileHandlerrsrtrvrEr{r|rN)rFrVpfncasesclsrSrUs rJtest_pathlike_objects!HandlerTest.test_pathlike_objectss   "   $((3*5%%99C:F%%>>c K <<9 9 w''::S#JGI IEICT,G,A OOBGGNN2. / GGI IIbM rontz/WatchedFileHandler not appropriate for Windows.z'Emscripten cannot fstat unlinked files.walltimec  ^U4SjnSnSnSTlSTlSGHMn[SS5n[R"XU4S9nSUlUR 5 [RRUSUS 9n[R"S 5nURU5 [U5H]n [R"S 5 [R"S S 05n [R"5TlUR!U 5 M_ UR'5 UR)5 [*R,R/U5(a[*R0"U5 GMMGMP g!["a) [%STR<STR<35 ef=f!UR'5 UR)5 [*R,R/U5(a[*R0"U5 ff=f)Nc>[U5Hbn[R"U5 [R"5Tl[R "S[R"SS5-5 Md g![ a N?f=f)NgMbp?r) rangerRrutime deletion_timersleeprandomrandint)fnametries_rFs rJ remove_loop*HandlerTest.test_race..remove_loopsb5\IIe$)-D& 56>>!Q#778 "s0A44 BBFT.logztest_logging-3-targetrSTrirjz'%(asctime)s: %(levelname)s: %(message)s{Gzt?rtestingz Deleted at z , opened at ) handle_timerrW threadingThreaddaemonstartr rBrvr=r@rrrrry ExceptionprintrrNrRr{r|ru) rFr del_count log_countrlrVremoverrUrrrs ` rJ test_raceHandlerTest.test_races 9  !"E(9:B&&kYPG!GN MMO  33BPU3VA!!"KLA NN1  "y)AJJu%--ui.ABA+/99;( *  77>>"%%IIbM&/#%040B0B040@0@BC    77>>"%%IIbM&s% Ensure child logging locks are not held; bpo-6721 & bpo-36533.c.^\rSrSrU4SjrSrSrU=r$)AHandlerTest.test_post_fork_child_no_deadlock.._OurHandlericf>[TU]5 [R"[ SSSS9S9Ulg)Nz /dev/nullwtrirkr8)super__init__r r;open sub_handlerrF __class__s rJrJHandlerTest.test_post_fork_child_no_deadlock.._OurHandler.__init__s. "#*#8#8 TGD$F rocURR URRU5 SSS5 g!,(df  g=fr)rlockr`rs rJr`FHandlerTest.test_post_fork_child_no_deadlock.._OurHandler.emits1%%**$$))&1+**s < A )rrwrxryrzrr`r| __classcell__rs@rJ _OurHandlerrs F  2 2rorrz*because we need at least one for this testrq test_post_fork_child_no_deadlockc>[R TR TR5 TR S5 SSS5 SSS5 g!,(df  N=f!,(df  g=f)N?)r r$rr3wait)+fork_happened__release_locks_and_end_threadlocks_held__ready_to_forkrefed_hsrJlock_holder_thread_fnKHandlerTest.test_post_fork_child_no_deadlock..lock_holder_thread_fns? )--/<@@E!- s" A#"AA# A A## A1z,test_post_fork_child_no_deadlock lock holder)rrHz#Child process did not deadlock. \o/z&Parent process returned from fork. \o/)exitcodeN)r r]r^r_r%rrr8rNrH assertGreater_at_fork_reinit_lock_weaksetr!rDr9r:rEventrrrrRforkr_exitr3rr wait_process) rFr test_loggerrlock_holder_threadpidrrrs @@@rJr,HandlerTest.test_post_fork_child_no_deadlocks  2'// 2 W../3- ++22889C  3w00115 3wCCDaH''(JK w'W]]+$-OO$5!6?oo6G3 F$'--,CE   "!&&(ggi !8   !GH    F G 7 ; ; =  # # %  q 1 s H H%)rrN)rwrxryrzrbrrunittestskipIfrRrHr is_emscriptenr requires_working_threadingrequires_resourcer requires_forkskip_if_asan_forkskip_if_tsan_forkrr|r}rorJrYrYVs=3j,__RWW_&WX __H002 z*)"+3Y )"^ 002>23>2rorYc\rSrSrSrSrg) BadStreami$c[S5e)Ndeliberate mistake) RuntimeError)rFdatas rJwriteBadStream.write%s/00ror}N)rwrxryrzrr|r}rorJrr$s1rorc\rSrSrSrSrg)TestStreamHandleri(cXlgr error_recordrs rJ handleErrorTestStreamHandler.handleError)s"rorN)rwrxryrzrr|r}rorJrr(s#rorc0\rSrSr\R rSrSrg)StreamWithIntNamei,rr}N) rwrxryrzr rlevelrHr|r}rorJrr,s NNE Drorc&\rSrSrSrSrSrSrg)StreamHandlerTesti0c[[55n[R"05n[RnUR U5 UR URU5 [R"[55n[R"5nUR U5 SnURXTR55 SSS5 S[l[R"5nUR U5 URSUR55 SSS5 U[lg!,(df  Nt=f!,(df  N+=f!U[lf=f)Nz" RuntimeError: deliberate mistake Fr)rrr rraiseExceptionsryassertIsrr;rcaptured_stderrassertInr\r^)rFrUr old_raisestderrrs rJtest_error_handling%StreamHandlerTest.test_error_handling1s ik *  ! !" %++  0 HHQK MM!..! ,%%ik2A((*f < c??#45+ ',G #((*f   V__%67+'0G #+* +*'0G #s<A E3D<(E62E (E< E E EE E+cB[R"5n[R"5nUR U5nUR U[ R5 UR U5nUR XB5 UR U5nURU5 g)z# Test setting the handler's stream N) r r;r6r7 setStreamrrsr assertIsNone)rFrUr8oldris rJtest_stream_setting%StreamHandlerTest.test_stream_settingGss  ! ! #kk&! c3::&S! f%S! &!rocv[R"[55nUR[ U5S5 g)Nz)r r;rr^reprras rJ'test_can_represent_stream_with_int_name9StreamHandlerTest.test_can_represent_stream_with_int_nameUs+  ! !"3"5 6 a">?ror}N)rwrxryrzrr rr|r}rorJrr0s0, "@rorc6\rSrSrSrSrSrSrSrSr Sr g ) TestSMTPServeri\a This class implements a test SMTP server. :param addr: A (host, port) tuple which the server listens on. You can specify a port value of zero: the server's *port* attribute will hold the actual port number used, which can be used in client connections. :param handler: A callable which will be called to process incoming messages. The handler will be passed the client address tuple, who the message is from, a list of recipients and the message data. :param poll_interval: The interval, in seconds, used in the underlying :func:`select` or :func:`poll` call by :func:`asyncore.loop`. :param sockmap: A dictionary which will be used to hold :class:`asyncore.dispatcher` instances used by :func:`asyncore.loop`. This avoids changing the :mod:`asyncore` module's global state. c[RRXSUSS9 URR 5SUlX lSUlSUlX0l g)NT)map decode_datarqF) r SMTPServerrsocket getsocknameport_handler_thread_quit poll_interval)rFaddrrrsockmaps rJrTestSMTPServer.__init__qsV !!$d.2 " 4KK++-a0    *roc(URXX45 g)a Delegates to the handler passed in to the server's constructor. Typically, this will be a test case method. :param peer: The client (host, port) tuple. :param mailfrom: The address of the sender. :param rcpttos: The addresses of the recipients. :param data: The message. N)r)rFpeermailfromrcpttosrs rJprocess_messageTestSMTPServer.process_messagezs dg4roc[R"URUR4S9=UlnSUlUR 5 g)z7 Start the server running on a separate daemon thread. rTNrr serve_foreverrrrrrFts rJrTestSMTPServer.startC%++43E3E262D2D1FH H q  rocUR(d3[R"XRSS9 UR(dM2gg)z Run the :mod:`asyncore` loop until normal termination conditions arise. :param poll_interval: The interval, in seconds, used in the underlying :func:`select` or :func:`poll` call by :func:`asyncore.loop`. rq)rcountN)rr loop_map)rFrs rJr*TestSMTPServer.serve_forevers(** MM-YYa @***rocSUl[R"UR5 SUlUR 5 [ R "URSS9 g)zZ Stop the thread by closing the server instance. Wait for the server thread to terminate. TN)r ignore_all)rr join_threadrrNr close_allr2rss rJstopTestSMTPServer.stopsA  $$T\\2  tyyT:ro)rrrrrN) rwrxryrzr{rr&rr*r8r|r}rorJrr\s!(+ 5 A ;rorc>^\rSrSrSrSrSrU4SjrSrSr U=r $) ControlMixinia 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^SUlX lXl[R"5Ulgr)rrrrrready)rFrrs rJrControlMixin.__init__s" * __& roc[R"URUR4S9=UlnSUlUR 5 g)z9 Create a daemon thread to run the server, and start it. rTNr)r+s rJrControlMixin.startr.roc`>URR5 [[U]U5 g)zF Run the server. Set the ready flag before entering the service loop. N)r=r3rr;r*)rFrrs rJr*ControlMixin.serve_forevers"  lD/ >rocUR5 URb'[R"UR5 SUlUR 5 UR R 5 g)z; Tell the server thread to stop, and wait for it to do so. N)shutdownrr r6 server_closer=rPrss rJr8ControlMixin.stopsL  << #  ( ( 6DL  ro)rrrr=) rwrxryrzr{rrr*r8r|rrs@rJr;r;s!' ?  ror;c,\rSrSrSrSSjrSrSrg)TestHTTPServeria An HTTP server which is controllable using :class:`ControlMixin`. :param addr: A tuple with the IP address and port to listen on. :param handler: A handler callable which will be called with a single parameter - the request - in order to process the request. :param poll_interval: The polling interval in seconds. :param log: Pass ``True`` to enable log messages. Nc^^"UU4SjS[5m[R"XT5 [RXU5 XPlg)Nc>>^\rSrSrSSjrSrUUU4SjrSrU=r$)=TestHTTPServer.__init__..DelegatingHTTPRequestHandleric\URS5(a UR$[U5e)Ndo_) startswithprocess_requestAttributeError)rFrHdefaults rJ __getattr__ITestHTTPServer.__init__..DelegatingHTTPRequestHandler.__getattr__s(??5))///$T**roc:URRU5 grserverrrss rJrOMTestHTTPServer.__init__..DelegatingHTTPRequestHandler.process_request $$T*roc:>T(a[TU]"U/UQ76 ggr)r log_message)rFformatrSDelegatingHTTPRequestHandlerrrs rJrZITestHTTPServer.__init__..DelegatingHTTPRequestHandler.log_messages16, +,,2;59;ror}r) rwrxryrzrRrOrZr|r)rr\rs@rJr\rKs +  + ; ;ror\)rrrr;sslctx)rFrrrrr^r\s ` @rJrTestHTTPServer.__init__s= ; ;+A ; D(DEd]; rocURR5upUR(aURRUSS9nX4$![a(n[ R RSU-5 eSnAff=f)NT) server_sidezGot an error: %s )racceptr^ wrap_socketrrsrr)rFsockres rJ get_requestTestHTTPServer.get_requestsr ++-JD{{{{..t.F z   JJ  2Q6 7  sAA A>#A99A>r^)rFN)rwrxryrzr{rrfr|r}rorJrHrHs 58#'& rorHc>^\rSrSrSrSrSSjrU4SjrSrU=r $) TestTCPServeria 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. Tc~"SS[5n[R"XUU5 [RXU5 g)Nc\rSrSrSrSrg);TestTCPServer.__init__..DelegatingTCPRequestHandleric:URRU5 grrUrss rJryBTestTCPServer.__init__..DelegatingTCPRequestHandler.handlerXror}N)rwrxryrzryr|r}rorJDelegatingTCPRequestHandlerrms +rorp)rrrr;)rFrrrbind_and_activaterps rJrTestTCPServer.__init__s7 +*> + ##D0K$5 7d];rocn>[[U] 5 URR 5SUlgNrq)rrj server_bindrrrrs rJruTestTCPServer.server_bind) mT.0KK++-a0 ro)rrT) rwrxryrzr{allow_reuse_addressrrur|rrs@rJrjrjs% 47#'<11rorjcF^\rSrSrSrSSjrU4SjrU4SjrSrU=r $) TestUDPServeri a A UDP server which is controllable using :class:`ControlMixin`. :param addr: A tuple with the IP address and port to listen on. :param handler: A handler callable which will be called with a single parameter - the request - in order to process the request. :param poll_interval: The polling interval for shutdown requests, in seconds. :bind_and_activate: If True (the default), binds the server and starts it listening. If False, you need to call :meth:`server_bind` and :meth:`server_activate` at some later time before calling :meth:`start`, so that the server will set up the socket and listen on it. c^"U4SjS[5m[R"XTU5 [RXU5 SUlg)Nc2>^\rSrSrSrUU4SjrSrU=r$);TestUDPServer.__init__..DelegatingUDPRequestHandleri3c:URRU5 grrUrss rJryBTestUDPServer.__init__..DelegatingUDPRequestHandler.handle5rXroc>URR5nU(a[TU]5 gg![a UR R (degf=fr)wfiler\rfinishrrV_closed)rFrDelegatingUDPRequestHandlerrs rJrBTestUDPServer.__init__..DelegatingUDPRequestHandler.finish8sVzz**,"94GI#"#{{22! 3"s4&AAr})rwrxryrzryrr|r)rrs@rJrr~3s + " "rorF)rrrr;r)rFrrrrqrs @rJrTestUDPServer.__init__1sA "*@ " ##D$?$5 7 d]; rocn>[[U] 5 URR 5SUlgrt)rr{rurrrrs rJruTestUDPServer.server_bindGrwroc8>[[U] 5 SUlg)NT)rr{rErrs rJrETestUDPServer.server_closeKs mT/1 ro)rrrx) rwrxryrzr{rrurEr|rrs@rJr{r{ s$ 58#',1ror{AF_UNIXc,\rSrSr\R rSrg)TestUnixStreamServeriPr}Nrwrxryrzrraddress_familyr|r}rorJrrP rorc,\rSrSr\R rSrg)TestUnixDatagramServeriSr}Nrr}rorJrrSrrorc8\rSrSr\R rSrSrSr g)SMTPHandlerTestiXc0n[[RS4URSU5nUR 5 [RUR 4n[ RRUSSSURS9nURURS/5 /Ul [ R"SS05n[R"5UlUR#U5 UR R%UR5 UR'5 UR)UR R+55 UR[-UR5S 5 URSupgpURUS5 URUS/5 UR/S U 5 UR)U R1S 55 UR35 g) NrMbP?meyouLogtimeoutru Hello ✓rqz Subject: Log u Hello ✓)rrHOSTr&rrr rB SMTPHandlerTIMEOUTr^toaddrsmessagesrrrhandledryrr8rEis_setr_rendswithrN) rFr rVrrUrr#r$r%rs rJ test_basicSMTPHandlerTest.test_basic^sq!3!3Q 79M9Mu ') ""FKK0    ( (tUE15 ) ? UG,  ! !5."9 : (    $,,'   ++-. T]]+Q/(, a(8% 4( 5'* ($/  &89:  rocnURRU5 URR5 gr)rappendrr3)rFrSs rJr&SMTPHandlerTest.process_messagevs$ T" ro)rrN) rwrxryrzr LONG_TIMEOUTrrr&r|r}rorJrrXs""G0rorch\rSrSrSrSrSrSrSrSr Sr \ R"5S 5r S rg ) MemoryHandlerTestizzTests for the MemoryHandler.r cL[RU5 [RR S[R UR 5Ul[R"S5Ul SURl URRUR5 g)N memr) rrKr rB MemoryHandlerrr<mem_hdlrr! mem_logger propagaterDrss rJrKMemoryHandlerTest.setUpsjt((66r7??7;~~G !++E2$%! ""4==1rocbURR5 [RU5 gr)rrNrrVrss rJrVMemoryHandlerTest.tearDown  $roc ^URRUR55 UR/5 URR UR55 UR/5 URR UR55 /SQnURU5 SHn[ S5H,nURRUR55 M. URU5 URRUR55 U[ X"S-5Vs/sHnS[U54PM sn-nURU5 M URRUR55 URU5 gs snf)N)r:rrr)rr)r rr:)rrrtrmrrrstr)rFlinesnis rJ test_flushMemoryHandlerTest.test_flushsR d//12 b! T..01 b!  1 1 34  e$A1X%%d&7&7&9:  ! !% ( OO ! !$"3"3"5 6aR8HI8H1gs1v.8HIIE  ! !% ( d//12 e$ Js>F*cURRUR55 UR/5 URR UR55 UR/5 URR UR 5 UR R5 SS/nURU5 [RRS[RURS5UlURRUR 5 URRUR55 URU5 URR UR55 URU5 URR UR 5 UR R5 URU5 g)z? Test that the flush-on-close configuration works as expected. rrrFN)rrrtrmrrOrrNr rBrrr<rDrFrs rJtest_flush_on_close%MemoryHandlerTest.test_flush_on_closesa d//12 b! T..01 b! %%dmm4     e$((66r7??7;~~7<>  ""4==1 d//12 e$ T..01 e$ %%dmm4  e$rocURRUR55 UR/5 URR UR55 UR/5 [ R "[ RRUR5/S9 SS/nURU5 [ RRS[ RURS5Ul URRUR5 URRUR55 URU5 URR UR55 URU5 [ R "[ RRUR5/S9 URU5 g)zQ Test that the flush-on-close configuration is respected by the shutdown method.  handlerListrrrFN)rrrtrmrr rDweakrefrefrrBrrr<rDrs rJtest_shutdown_flush_on_close.MemoryHandlerTest.test_shutdown_flush_on_closes] d//12 b! T..01 b!goo&9&9$--&H%IJ    e$((66r7??7;~~7<>  ""4==1 d//12 e$ T..01 e$goo&9&9$--&H%IJ e$roc"SS5nU"UR5nURRU5 [S5HOn[R"S5 UR R S5 UR RS5 MQ URHn[R"U5 M g!URHn[R"U5 M f=f)Nc&\rSrSrSrSrSrSrg)ZMemoryHandlerTest.test_race_between_set_target_and_flush..MockRaceConditionHandlericXl/Ulgrrthreads)rFrs rJrcMemoryHandlerTest.test_race_between_set_target_and_flush..MockRaceConditionHandler.__init__s ( ! roc:URRS5 gr)r setTargetrss rJ removeTargetgMemoryHandlerTest.test_race_between_set_target_and_flush..MockRaceConditionHandler.removeTargets ''-roc[R"URS9nURR U5 UR 5 g)N)r)rrrrrr)rFrrs rJryaMemoryHandlerTest.test_race_between_set_target_and_flush..MockRaceConditionHandler.handles3"))1B1BC ##F+ rorN)rwrxryrzrrryr|r}rorJMockRaceConditionHandlerrs " . rorrrz not flushedflushed) rrrrrrrrrr r6)rFrrrrs rJ&test_race_between_set_target_and_flush8MemoryHandlerTest.test_race_between_set_target_and_flushs  *$--8 5 MM # #F +2Y 5!$$]3'' 2 !.. ,,V4)&.. ,,V4)s A9C+C,)rrN)rwrxryrzr{r[rKrVrrrr rrr|r}rorJrrzsC&32 %8%<%:002535rorc\rSrSrSrSrSrg)ExceptionFormatterizA special exception formatter.c&SUSR-$)Nz Got a [%s]r)rw)rFeis rJformatException"ExceptionFormatter.formatExceptionsbenn,,ror}N)rwrxryrzr{rr|r}rorJrrs (-rorcPUR5 [R"U5 grrNrRremove)rUrVs rJcloseFileHandlerrsGGIIIbMrocB\rSrSrSr\R rSrSrSr Sr \ RSS5r \ RS S 5r S \-S -r\ RS S5rSrSrSrSrSrSrSrSr\ 4SjrSrSrSrSrSrSrSrSr S r!S!r"S"r#S#r$S$r%S%r&S&r'g')(ConfigFileTesti z5Reading logging config from a .ini-style config file.^(\w+) \+\+ (\w+)$aN [loggers] keys=root [handlers] keys=hand1 [formatters] keys=form1 [logger_root] level=WARNING handlers=hand1 [handler_hand1] class=StreamHandler level=NOTSET formatter=form1 args=(sys.stdout,) [formatter_form1] format=%(levelname)s ++ %(message)s datefmt= a [loggers] keys=root,parser [handlers] keys=hand1 [formatters] keys=form1 [logger_root] level=WARNING handlers= [logger_parser] level=DEBUG handlers=hand1 propagate=1 qualname=compiler.parser [handler_hand1] class=StreamHandler level=NOTSET formatter=form1 args=(sys.stdout,) [formatter_form1] format=%(levelname)s ++ %(message)s datefmt= a [loggers] keys=root,parser [handlers] keys=hand1 [formatters] keys=form1 [logger_root] level=WARNING handlers=hand1 [logger_parser] level=DEBUG handlers= propagate=1 qualname=compiler.parser [handler_hand1] class=StreamHandler level=NOTSET formatter=form1 args=(sys.stdout,) [formatter_form1] format=%(levelname)s ++ %(message)s datefmt= z sys.stdoutz sys.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"}} ap [loggers] keys=root [handlers] keys=hand1 [formatters] keys=form1 [logger_root] level=WARNING handlers=hand1 [handler_hand1] class=StreamHandler level=NOTSET formatter=form1 args=(sys.stdout,) [formatter_form1] format=%(message)s ++ %(customfield)s defaults={"customfield": "defaultvalue"} z [loggers] keys=root [handlers] keys=screen [formatters] keys= [logger_root] level=DEBUG handlers=screen [handler_screen] level=DEBUG class=StreamHandler args=(sys.stdout,) formatter= c [R"[R"U55n[R R "U4SS0UD6 g)Nrkri)r6r7textwrapdedentr config fileConfig)rFconfrTfiles rJ apply_configConfigFileTest.apply_config#s5{{8??401!!$CCFCroc[R"5nURUR5 [R "5nUR UR55 URUR55 URS/US9 UR/5 SSS5 g!,(df  g=fNrrr) rcaptured_stdoutrconfig0r r!rrtrrmrFoutputrs rJtest_config0_okConfigFileTest.test_config0_ok's  $ $ &&   dll +&&(F KK))+ , LL**, -  ! !# "   ! !" %' & &s BB00 B>c>[R"5n[R"[R "UR 55n[R"5nURU5 [RRU5 [R"5nURUR55 UR!UR55 UR#S/US9 UR#/5 SSS5 g!,(df  g=fr)rrr6r7rrr configparser ConfigParser read_filer rrr!rrtrrm)rFrrcprs rJtest_config0_using_cp_ok'ConfigFileTest.test_config0_using_cp_ok6s  $ $ &&;;xt||<=D**,B LL  NN % %b )&&(F KK))+ , LL**, -  ! !# "   ! !" %' & &s C/D Dcr[R"5nURU5 [R"S5nUR UR 55 URUR 55 URSS/US9 UR/5 SSS5 g!,(df  g=fNcompiler.parserrrrr rrrr r!rrtrrmrFrrrs rJtest_config1_okConfigFileTest.test_config1_okH  $ $ &&   f %&&'89F KK))+ , LL**, -  ! !# "   ! !" %' & & B B(( B6cZUR[URUR5 grr^rrconfig2rss rJtest_config2_failure#ConfigFileTest.test_config2_failureW )T%6%6 ErocZUR[URUR5 grr^rrconfig3rss rJtest_config3_failure#ConfigFileTest.test_config3_failure[rroc[R"5nURUR5 [R "5n[ 5e![ a [R"S5 Of=f[RRS5 URUR5S5 UR/5 SSS5 g!,(df  g=fN just testingr-ERROR:root:just testing Got a [RuntimeError] )rrrconfig4r r!r exceptionrsstdoutseekr^r\rmrs rJtest_config4_okConfigFileTest.test_config4_ok_s  $ $ &&   dll +&&(F 2"n$ 2!!.1 2 JJOOA    V__.A C  ! !" %' & &s*1C A A52C4A55AC Cc6URURS9 gNr)r config5rss rJtest_config5_okConfigFileTest.test_config5_okn DLL1roc6URURS9 gr%)r config6rss rJtest_config6_okConfigFileTest.test_config6_okqr*roc[R"5nURUR5 [R "S5n[R "S5nUR UR55 URUR55 URUR55 UR/SQUS9 UR/5 SSS5 [R"5nURUR5 [R "S5nURUR5 UR UR55 URUR55 [R "S5nUR UR55 URUR55 WRUR55 UR/SQUS9 UR/5 SSS5 g!,(df  GNN=f!,(df  g=f)Nrcompiler-hyphenatedrr)rrrcompiler.lexer)rr)rr)rr)rr)rrrconfig1ar r!rrtrcriticalrmconfig7rzrrFrr hyphenateds rJtest_config7_okConfigFileTest.test_config7_okts  $ $ &&   dmm ,&&'89F !**+@AJ KK))+ , LL**, -    1 1 3 4  ! !# "   ! !" %''( $ $ &&   dll +&&'89F   V__ - KK))+ , LL**, -&&'78F KK))+ , LL**, -    1 1 3 4  ! !#  "   ! !" %)' &)' &(' &sCH%;D!H7% H47 IcUR5 [SS5n[RS:XaUR SS5nUR R US9nURU5 URU5 SSS5 [RRSnUR[UW5 g!,(df  NC=f)Nrtest_logging-X-r\z\\)rPr) check_no_resource_warningrWrRrHreplaceconfig8r[rr rootrBrr)rFrVr@rs rJtest_config8_okConfigFileTest.test_config8_oks  + + -(9:Bww$ZZf-ll))2)6G   g &   g &.,,''* ('26. -s A.B<< C cnURUR5 [RRSR nUR [R"SS055nURUS5 UR [R"SSS.55nURUS5 g)Nrrtestztest ++ defaultvalue customvaluer customfieldztest ++ customvalue) rconfig9r rArB formatterr[rr^)rFrJresults rJtest_config9_okConfigFileTest.test_config9_oks $,,'LL))!,66 !!'"7"7"HI !78!!'"7"7= 9#;< !67rocrURUR5 [R"S5nUR UR 5 URUR5 UR UR 5 URURSS9 UR UR 5 g)Nsome_pristine_loggerF)disable_existing_loggers)r disable_testr r!rzrrErFrs rJtest_logger_disabling$ConfigFileTest.test_logger_disablings $++,""#9: ) $++, ( $++eL )rocSnURU5 UR[R"5RSR S5 g)Naw [loggers] keys=root [handlers] keys=hand1 [formatters] keys=form1 [logger_root] handlers=hand1 [handler_hand1] class=StreamHandler formatter=form1 [formatter_form1] format=%(levelname)s ++ %(message)s rhand1)rr^r r!rBrH)rF test_configs rJtest_config_set_handler_names,ConfigFileTest.test_config_set_handler_namessC ( +& **,55a8==wGrocSn[R"[R"U55nUR [ [ RRU5 g)Na [loggers] keys=root [handlers] keys=hand1 [formatters] keys=form1 [logger_root] handlers=hand1 [handler_hand1] class=StreamHandler formatter=form1 [formatter_form1] format=%(levelname)s ++ %(message)s prince ) r6r7rrr^rr rr)rFrWrs rJ'test_exception_if_confg_file_is_invalid6ConfigFileTest.test_exception_if_confg_file_is_invalids> .{{8??;78 ,(A(A4Hroc[R"SSS9up[R"U5 UR [ [ RRU5 [R"U5 g)N test_empty_.inirsuffix) rPrQrRrNr^rr rrr)rFrUrVs rJ%test_exception_if_confg_file_is_empty4ConfigFileTest.test_exception_if_confg_file_is_emptysH!!vF   ,(A(A2F " rocbUR[[RRS5 g)N filenotfound)r^FileNotFoundErrorr rrrss rJ,test_exception_if_config_file_does_not_exist;ConfigFileTest.test_exception_if_config_file_does_not_exists +W^^-F-FWroc [R"S5R5n[R"SSS9up#[ R "X!RS55 [ R"U5 [RRUS[SSS S S S S .0S9S9 [ R"U5 g![ R"U5 f=f)z.bpo-33802 defaults should not get interpolatedat [formatters] keys=default [formatter_default] [handlers] keys=console [handler_console] class=logging.StreamHandler args=tuple() [loggers] keys=root [logger_root] formatter=default handlers=console test_logging_r_r`asciirirqFr[z5%(asctime)s [%(process)d] [%(levelname)s] %(message)sz[%Y-%m-%d %H:%M:%S %z]zlogging.Formatter)r[datefmtclass)versionrP formatters)rkdefaultsN)rrstriprPrQrRrencoderNr rrdictru)rFinirUrVs rJ!test_defaults_do_no_interpolation0ConfigFileTest.test_defaults_do_no_interpolationsoo&' (!!H  HHRG, - HHRL NN % % -2!&]'?%8$   &  IIbMBIIbMs A)B==Cr}N)(rwrxryrzr{r r>r[rconfig1r4r?rrrr'r,r6r@rIrQrrrr rrr"r(r-r9rBrLrSrXr[rbrgrur|r}rorJrr s? / I I,G4G@H@oolL9Goo/1LMG*+*+G6oo35RSG'GT#GLG,G2L*D &&$&- &FF &22)&V7$8*H0I6 X*rorc>\rSrSrSr\rSrSrSr Sr Sr Sr S r g ) SocketHandlerTesti-zTest for SocketHandler objects.rrrc [RU5 S=Ul=UlUlUR UR URS5=UlnUR5 URR5 [RRn[UR ["5(aU"SUR$5UlOU"UR S5UlSUlUR(R+UR(RS5 UR(R-UR5 [.R0"S5Ulg![anX lSnAgSnAff=f)zlSet up a TCP server to receive log messages, and a SocketHandler pointing to that server's address and port.N{Gz?rrrr)rrKrV sock_hdlrserver_exception server_classaddress handle_socketrrr=rr rB SocketHandler isinstanceserver_addressrcr log_outputr3rOrDr SemaphorerrFrVrehclss rJrKSocketHandlerTest.setUp6s- t?CC Cdnt'< #'#4#4T\\595G5G$O ODK& LLN  -- f++U 3 3!+v{{;DN!&"7"7>DN &&t'7'7'@'@'CD ##DNN3 **1-  $% !  s>E(( F2E==FcZUR(a?URRUR5 URR5 UR(aURR 5 [ RU5 g![ RU5 f=f)zShutdown the TCP server.N)r}r3rOrNrVr8rrVrss rJrVSocketHandlerTest.tearDownPsj $~~  ..t~~>$$&{{   "   d #H  d # A;BB*cURnURS5n[U5S:ag[R"SU5SnURU5n[U5U:a0X2RU[U5- 5-n[U5U:aM0[ R "U5n[R"U5nU=RURS-- sl URR5 M)Nr>Lr ) connectionrecvr_structunpackpickleloadsr rrrrrelease)rFrequestconnchunkslenobjrs rJrSocketHandlerTest.handle_socket[s!!IIaLE5zA~==u-a0DIIdOEe*t# $U*; <<e*t#,,u%C**3/F OOvzzD0 0O LL "roclUR(aURUR5 [R"S5nUR S5 UR R 5 URS5 UR R 5 URURS5 g)Ntcpreggs spam eggs ) r~skipTestr r!rracquirerr^rrRs rJ test_outputSocketHandlerTest.test_outputjsy  MM$// 0""5) V  V  .9rocbUR(aURUR5 SURlURR 5 [ S5e![ a URRS5 Of=fURRS5 [R"5nURURRU5 [R"URRU- S-5 URRS5 g)Ng@zDeliberate mistakez Never sentzNever sent, eitherrzNor this)r~rr} retryStartrVr8rr3rrrr retryTimer)rFnows rJ test_noserverSocketHandlerTest.test_noserverus  MM$// 0%(!  534 4 5    & &| 4 5 34iik 4>>33S9 4>>++c1E9: z*s A$$%B  B rrrVr~r}N)rwrxryrzr{rjrrrKrVrrrr|r}rorJryry-s** LG.4 $ # :+roryzUnix sockets requiredc>\rSrSrSr\"\S5(a\rSr Sr g)UnixSocketHandlerTestiz)Test for SocketHandler with unix sockets.rc[R"5UlUR[R UR5 [ RU5 gr)rcreate_unix_domain_namerrrruryrKrss rJrKUnixSocketHandlerTest.setUp8$<<>   (($,,7%rorN) rwrxryrzr{hasattrrrrrKr|r}rorJrrs4vy!!+ &rorc8\rSrSrSr\rSrSrSr Sr Sr Sr g ) DatagramHandlerTestizTest for DatagramHandler.rzc[RU5 S=Ul=UlUlUR UR URS5=UlnUR5 URR5 [RRn[UR ["5(aU"SUR$5UlOU"UR S5UlSUlUR(R+UR(RS5 UR(R-UR5 [.R0"5Ulg![anX lSnAgSnAff=f)znSet up a UDP server to receive log messages, and a DatagramHandler pointing to that server's address and port.Nr|rrrr)rrKrVr}r~rrhandle_datagramrrr=rr rBDatagramHandlerrrrcrrr3rOrDrrrrs rJrKDatagramHandlerTest.setUps) t?CC Cdnt'< #'#4#4T\\595I5I4$Q QDK& LLN  // f++U 3 3!+v{{;DN!&"7"7>DN &&t'7'7'@'@'CD ##DNN3 (  $% !  s>E'' F1E<<FcZUR(aURR5 UR(a?URR UR5 URR 5 [ RU5 g![ RU5 f=f)zShutdown the UDP server.N)rVr8r}r3rOrNrrVrss rJrVDatagramHandlerTest.tearDownsj ${{   "~~  ..t~~>$$&   d #H  d #rc2[R"SS5nUR[U5Sn[R "U5n[ R"U5nU=RURS-- slURR5 g)Nrrr) rpackpacketr_rrr rrrrr3)rFrrrrrs rJr#DatagramHandlerTest.handle_datagramsk{{4#D +ll6"&&s+ 6::,, rocUR(aURUR5 [R"S5nUR S5 UR R 5 UR R5 UR S5 UR R 5 URURS5 g)Nudprrr) r~rr r!rrrrPr^rrRs rJrDatagramHandlerTest.test_outputs  MM$// 0""5) V   V  .9rorN) rwrxryrzr{r{rrrKrVrrr|r}rorJrrs%$ LG)4 $ :rorc>\rSrSrSr\"\S5(a\rSr Sr g)UnixDatagramHandlerTestiz,Test for DatagramHandler using Unix sockets.rc[R"5UlUR[R UR5 [ RU5 gr)rrrrrrurrKrss rJrKUnixDatagramHandlerTest.setUps8$<<>   (($,,7!!$'rorN rwrxryrzr{rrrrrKr|r}rorJrrs7vy!!- (rorc>\rSrSrSr\rSrSrSr Sr Sr Sr S r g ) SysLogHandlerTestiz!Test for SysLogHandler using UDP.rzc"[RU5 S=Ul=UlUlUR UR URS5=UlnUR5 URR5 [RRn[UR ["5(a'U"UR SUR$45UlOU"UR 5UlSUlUR(R+UR(RS5 UR(R-UR5 [.R0"5Ulg![anX lSnAgSnAff=f)zlSet up a UDP server to receive log messages, and a SysLogHandler pointing to that server's address and port.Nr|rro)rrKrVsl_hdlrr~rrrrrr=rr rBr}rrrcrrr3rOrDrrrrs rJrKSysLogHandlerTest.setUps5 t=AA AdlT%: #'#4#4T\\595I5I4$Q QDK& LLN  -- f++U 3 3!6!6q!96;; GHDL 5 56DL &&t'7'7'@'@'CD ##DLL1 (  $% !  s>E44 F>F  FcZUR(aURR5 UR(a?URR UR5 URR 5 [ RU5 g![ RU5 f=f)zShutdown the server.N)rVr8rr3rOrNrrVrss rJrVSysLogHandlerTest.tearDown sj ${{   "||  ..t||< ""$   d #H  d #rcZURUlURR5 gr)rrrr3)rFrs rJr!SysLogHandlerTest.handle_datagrams!.. roc8UR(aURUR5 [R"S5nUR S5 UR R [R5 URURS5 UR R5 SURl UR S5 UR R [R5 URURS5 UR R5 SURlUR S5 UR R [R5 URURS5 g)Nslhspäm <11>spämFs <11>spämuhäm-s<11>häm-späm)r~rr r!rrrrrr^rrPr append_nulidentrRs rJrSysLogHandlerTest.test_outputs  MM$// 0""5) Y '../ *@A "'  Y '../ *<= &  Y '../ *GHrocD[R"S5nURR5 URR 5 UR S5 URR[R5 URURS5 g)Nrrr) r r!rrNrrPrrrrr^rrRs rJtest_udp_reconnection'SysLogHandlerTest.test_udp_reconnection,sk""5)   Y '../ *@Aro)rrrVr~rN)rwrxryrzr{r{rrrKrVrrrr|r}rorJrrs,, LG)4 $I&Brorc>\rSrSrSr\"\S5(a\rSr Sr g)UnixSysLogHandlerTesti4z)Test for SysLogHandler with Unix sockets.rc[R"5UlUR[R UR5 [ RU5 gr)rrrrrrurrKrss rJrKUnixSysLogHandlerTest.setUp<rrorNrr}rorJrr4s4vy!!- &rorz$IPv6 support required for this test.c@^\rSrSrSr\rSrU4SjrU4Sjr Sr U=r $)IPv6SysLogHandlerTestiBz&Test for SysLogHandler with IPv6 host.)z::1rch>[RURl[[ U]5 gr)rAF_INET6rrrrrKrs rJrKIPv6SysLogHandlerTest.setUpKs#+1??( #T02roch>[RURl[[ U]5 gr)rAF_INETrrrrrVrs rJrVIPv6SysLogHandlerTest.tearDownOs#+1>>( #T35ror}) rwrxryrzr{r{rrrKrVr|rrs@rJrrBs!1 LG366rorc*\rSrSrSrSrSrSrSrg)HTTPHandlerTestiSzTest for HTTPHandler.cb[RU5 [R"5Ulg)zlSet up an HTTP server to receive log messages, and a HTTPHandler pointing to that server's address and port.N)rrKrrrrss rJrKHTTPHandlerTest.setUpXs t ( roc~URUl[UR5UlURS:Xa9[ UR S5nUR RU5UlURS5 UR5 URR5 g! SUlNG=f)NrpzContent-Length) commandrr{log_dataintheadersrfilere post_data send_response end_headersrr3)rFrrlens rJhandle_requestHTTPHandlerTest.handle_request^s  . <<6 ! &7??+;<=!(!3!3D!9 c"   &!%s 8B11 B<c [R"S5nURnURURRS5 SGHnSnU(aSSKn[ RR[5n[ RRUSS5nURUR5nURU5 URUS9n OSnSn [!X@R"SUS 9=Uln U R'5 U R(R+5 S U R,-n U=(a Un [RR/U S U W S S 9UlSUlUR5UR05 SGHJn XR0lUR8R;5 SnUR=U5 UR8R+[>R@5nURCUS5 UREUR2RS 5 UREURFU 5 U S:Xa [IUR2RJ5nO$[IURLROS55nUREUSS/5 UREUSS/5 UREUSU/5 GMM UR$RQ5 URRUR05 UR0RS5 GM g![a SnGNgf=f)Nhttprrrzcertdataz keycert.pem)cafiler|rhz localhost:%dz/frob)foobar)securecontext credentials)rorprzHTTP request timed outrorirHfuncNamerr)*r r!r3rOrBsslrRr{dirname__file__r SSLContextPROTOCOL_TLS_SERVERload_cert_chaincreate_default_context ImportErrorrHrrVrr=r server_portrh_hdlrrrDrrrPrr SHORT_TIMEOUTrEr^rrqueryrdecoder8rN)rFrr3rrrherelocalhost_certr^rrVhost secure_clientrrrds rJrHTTPHandlerTest.test_outputks""6*&& !!$"2"2";";A">?#F#D P77??84D%'WW\\$ M%RN ^^C,C,CDF**>:!888OG#1$8K8K48$I IDK& LLN LL   !F$6$66D"-vM!**66tW>K?FCQ7SDK!DM  " "4;; /)%+ " ""$ S!,,++G,A,AB)AB  !3!3W=  v6U? !4!45A !6!6w!?@A  6VH5  :@  5C51*" KK       * *4;; 7 KK   c$ #"!F"sL;; M  M )rr rrrrVN) rwrxryrzr{rKrrr|r}rorJrrSs ) 6 rorc0\rSrSrSrSrSrSrSrSr g) MemoryTestiz*Test memory persistence of logger objects.c<[RU5 0Ulg)z8Create a dict to remember potentially destroyed objects.N)rrK _survivorsrss rJrKMemoryTest.setUpstrocUH<n[U5[U54n[R"U5URU'M> g)zCWatch the given objects for survival, by creating weakrefs to them.N)r.rrrr)rFrSrkeys rJ_watch_for_survivalMemoryTest._watch_for_survivals7CS'49$C#*;;s#3DOOC roc [R"5 /nURR5H#uup#nU"5bMUR U5 M% U(a/UR S[ U5SRU54-5 gg)z;Assert that all objects watched for survival have survived.Nz;%d objects should have survived but have been destroyed: %sz, )gccollectrrrrbr_r)rFdeadid_repr_rs rJ_assertTruesurvivalMemoryTest._assertTruesurvivalsy !%!6!6!8 LS#u} E""9  II.14TDIIdO0LM N rocHURR[R5 [R"S5nUR U5 UR[R 5 URRUR55 URUR55 URS/5 AUR5 [R"S5nURUR55 URSS/5 g)Nr)rr:r)rr:r) r3r9r rr!rr:rrtrmr$)rFrrs rJtest_persistent_loggers"MemoryTest.test_persistent_loggerss !!',,/&   % W]]# t0023 $##%&  !      "& $##%&  ! !  ro)rN) rwrxryrzr{rKrr$r'r|r}rorJrrs4 4 N rorc \rSrSrSrSrSrg) EncodingTestic[R"S5n[SS5nSn[R"USS9nUR U5 UR U5 UR U5 UR5 [USS9nURUR5R5U5 UR5 [RRU5(a[R"U5 gg!UR U5 UR5 f=f!UR5 f=f![RRU5(a[R"U5 ff=f)NrErztest_logging-1-ufoo€rir)r r!rWrrDrrOrNrr^rerstriprRr{isfiler)rFrrVrrrs rJtest_encoding_plain_file%EncodingTest.test_encoding_plain_files' F$5 6 ))"w?G NN7 #  D!!!'* R'*A   !2D9 ww~~b!! " "!!'*   ww~~b!! " "s;&E D+E .D+8E#D((E+D==E=E=c[R"S5nSn[R"S5nSUl[ R "5nU"US5n[R"U5nURU5 URU5 URU5 UR5 UR5nURUS5 g!URU5 UR5 f=f)NrEuдо свиданияcp1251stricts )r r!codecs getwriterrkr6BytesIOr;rDrrOrNr\r^)rFrmessage writer_classr8writerrrls rJtest_encoding_cyrillic_unicode+EncodingTest.test_encoding_cyrillic_unicodes'Q''1 ( fh/''/ w  KK   g & MMO OO  JK   g & MMOs <C#C4r}N)rwrxryrzr.r9r|r}rorJr*r*s 2Lror*c \rSrSrSrSrSrg) WarningsTesti c @[R"5 [R"S5 UR [RS5 [R "S[ S9 [R"5n[R"U5n[R"S5nURU5 [R"S5 URU5 UR5nUR5 UR!UR#S5S5 [R"5n[R$"S [ S S US 5 UR5nUR5 UR'US 5 SSS5 g!,(df  g=f)NTFalways)category py.warningszI'm warning you...z UserWarning: I'm warning you... rExplicitdummy.py*z Dummy linez0dummy.py:42: UserWarning: Explicit Dummy line )warningscatch_warningsr captureWarningsrfilterwarnings UserWarningr6r7r;r!rDwarnrOr\rNrfind showwarningr^)rFr8rUrrla_files rJ test_warningsWarningsTest.test_warnings s   $ $ &  # #D ) OOG33U ;  # #H{ C[[]F%%f-A&&}5F   a MM. /   #!A GGI   qvv&IJA N[[]F  [*b!' 7!A LLN   QD F)' & &s E0F Fc[R"5 [R"S5 UR [RS5 [R "S5nUR UR/5 [R"S[SS5 UR [UR5S5 URURS[R5 SSS5 g!,(df  g=f) NTFr@rArBrCrqr) rDrEr rFrr!r^rBrKrHr_assertIsInstance NullHandlerrRs rJtest_warnings_no_handlers&WarningsTest.test_warnings_no_handlers! s  $ $ &  # #D ) OOG33U ;&&}5F   V__b 1  [*b I   S11 5  ! !&//!"4g6I6I J' & &s CC77 Dr}N)rwrxryrzrMrRr|r}rorJr<r< sF0 Kror<c.[R"X5$r)r r=)r[rls rJ formatFuncrU/ s   V --roc\rSrSrSSjrSrg)myCustomFormatteri2 Ncgrr})rFfmtrls rJrmyCustomFormatter.__init__3  ror}r)rwrxryrzrr|r}rorJrWrW2 s rorWc,[R"5$r)r r;r}rorJ handlerFuncr]6 s  ""roc\rSrSrSrg) CustomHandleri9 r}Nrwrxryrzr|r}rorJr_r_9 ror_c\rSrSrSrg)CustomListeneri< r}Nr`r}rorJrcrc< rarorcc\rSrSrSrg) CustomQueuei? r}Nr`r}rorJrere? rarorec$\rSrSrSSjrSrSrg)CustomQueueProtocoliB c:[R"U5UlgrqueueQueue)rFmaxsizes rJrCustomQueueProtocol.__init__C s[[) rocD[RUS5n[X!5$)Nrj)object__getattribute__r0)rF attributerjs rJrRCustomQueueProtocol.__getattr__F s''g6u((ro)rjN)r)rwrxryrzrrRr|r}rorJrgrgB s *)rorgc\rSrSrSrSrg)CustomQueueFakeProtocoliJ cgrr}rss rJ put_nowait"CustomQueueFakeProtocol.put_nowaitR r[ror}Nrwrxryrzrvr|r}rorJrtrtJ s rortc\rSrSrSrSrg)CustomQueueWrongProtocoliU Nr}rxr}rorJrzrzU sJrorzc \rSrSrSrSrSrg)MinimalQueueProtocoliX cgrr})rFxs rJrvMinimalQueueProtocol.put_nowaitY sTrocgrr}rss rJgetMinimalQueueProtocol.getZ s4ror}N)rwrxryrzrvrr|r}rorJr|r|X s!ror|c,[R"5$rrir}rorJ queueMakerr\ s ;;=roc^U4SjnU$)NcF>URST5 [U/UQ70UD6$)Nrespect_handler_level) setdefaultrc)rjrBrTrs rJfunclistenerMaker..func` s*13HIe9h9&99ror})arg1arg2rrs ` rJ listenerMakerr_ s: Kroc V \rSrSrSr\R rSrSSSS00SS SS S S .0S S/S.S.rSSSS00SS SS S S .0SSS/S.0SS 0S.r SSSS00SS SS S S .0SSS00S S/S.S.r SSSS00SS SS SS .0SSS/S.0SS 0S.r SSSS00SS SSS S .0SSS/S.0SS 0S.r SSSS00SS SS S S .0SSS/S.0SS0S.r SSSS00SS SS S S .0SSS/S.0SS 0S.rSS\S-SS.0SS SS S S .0S S/S.S.rS\SS.\S-SS.\SS.S.S SS S S .S\0S.S S/S.S.rSSSS00S\S-SS S S .0SSS/S.0SS 0S.rSSSS00S\S-SS S S S!.0SSS/S.0SS 0S.rSSSS00SS SS S S .0S"SS/S.0SS 0S.rSS#SSS00SS SS S S .0SS/S.0S$.SS 0S%.rSS&SSS00SS SS S S .0SS/S.0S$.SS 0S%.rSSSS00SS SS S S .0SS S/S.0SS 0S.rSS&SSS 00SSS'00S(.rSS&SSS'00SSS'00S(.rSSSS00S)S*S00SS SS S S)/S+.0SSS)/S,.0S S/S.S-.rSSSS00SS SS S S .0S.SS/0SSS/S.0SS 0S0.rSSS00SS SS S S .0S.SS/0SSS/S.0SS 0S1.rS2SSS00SS SS S S .0S.SS/0SSS/S.0SS 0S0.rSSSS00SS SS S S3S4S5.S6.0S S/S.S.r SSS7S8S90S:.0SS SS S S .0S S/S.S.r!"S;S<\"RF5r$SS=\$S>S?S@SASB0SC.0SS S=S S S .0S S/S.S.r%SS SSD.SESFSGSSHSI.SJ.SKSSL/SMSN.0SO.r&SSPSQSRSS.0S SSPST.SESFSPSUSSV.SW.SKSSX/SMSN.0SY.r'SS\S-SS#SZ.0SS SS S S .0S[SS/SMSN.0SY.r(SS\S-SS#S\.0SS SS S S .0S[SS/SMSN.0SY.r)SS\S]-SS#S\.0SS SS S S .0S[SS/SMSN.0SY.r*SS\SS#SZ.0SS SS S S .0S[SS/SMSN.0SY.r+SS\S^S8S_0S`.0SS SS S S .0S[SS/SMSN.0SY.r,SSaSb0ScSd/Se.Sf.SSg/S.Sh.r-Sir.Sjr/Skr0\ 4Sljr1Smr2Snr3Sor4Spr5Sqr6Srr7Ssr8Str9Sur:Svr;SwrSzr?S{r@S|rAS}rBS~rCSrDSrESrFSSjrG\HR"5S5rJ\HR"5S5rK\HR"5S5rLSrMSrNSrOSrPSrQSrRSrSSrTSrUSrVSrWSrXSrYSrZSr[\\R"5\HR"5S55r_Sr`\\R"5\HR"5\a"S5S555rb\a"S5S5rc\d\HR"5\eR"\HRS5S555rh\d\HR"5\eR"\HRS5S555ri\jS5rk\d\HR"5S55rlSrmSrnSro\HR"5S5rpSrq\\R"5S5rrSrsg)ConfigDictTestie z)Reading logging config from a dictionary.rrqform1r[z%(levelname)s ++ %(message)srVlogging.StreamHandlerrzext://sys.stdout)rmrJrr8rrrB)rnrorBrArr:r)rnrorBloggersrAzext://sys.stdboutNTOSETWRANINGmisspelled_namez.ExceptionFormatterz"%(levelname)s:%(name)s:%(message)s)()r[z .formatFunc)rform2form3r)rVhand2z.CustomHandlerzinvalid parameter name)rmrJrr8rr2F)compilerr2)rnrProrBrrATr)rn incrementalrBrfilt1rH)rmrJrr8filtersrr)rnrorrBrrAzcfg://true_formatterszcfg://handler_configs[hand1])rntrue_formattershandler_configsrorBrrA)rrrorBrrArr! )r terminator)rmrJrr8rz%(message)s ++ %(customfield)srH defaultvalue)r[rpc,^\rSrSrSrU4SjrSrU=r$)ConfigDictTest.CustomFormatteri rc">[TU]U5$r)rr[rFrrs rJr[%ConfigDictTest.CustomFormatter.format s7>&) )ror})rwrxryrzcustom_propertyr[r|rrs@rJCustomFormatterr s * *rorcustom{%Y-%m-%d %H:%M:%S {message}rvalue)rstylerlr[r)rmrzlogging.handlers.MemoryHandlerconsoler)rmcapacityrr flushLevel)r bufferingmymodulertrue)rrBr)rnrBrmySimpleFormatterz1%(asctime)s (%(name)s) %(levelname)s: %(message)s$)r[r)rmrrJ fileGlobal)rmrrJrr)r bufferGlobalr)rnrorBr)rr[validatemy_test_logger_custom_formatter)rmr[rz.myCustomFormatterz2%(levelname)s:%(name)s:%(message)s:%(customfield)smyvalue)rr[rprmlogging.FileHandlerlogging.handlers.QueueHandlerh1)rmrB)rahrrnrBrAcB[RRU5 gr)r r dictConfig)rFrs rJrConfigDictTest.apply_config s!!$'rocR[R"U5nURX25 gr)r getHandlerByNamerP)rFrHrrUs rJ check_handlerConfigDictTest.check_handler s  $ $T * a%roc[R"5nURUR5 UR S[ R 5 [ R"5nURUR55 URUR55 URS/US9 UR/5 SSS5 g!,(df  g=f)NrVrr) rrrrrr r;r!rrtrrmrs rJrConfigDictTest.test_config0_ok s  $ $ &&   dll +   w(=(= >&&(F KK))+ , LL**, -  ! !# "   ! !" %' & &s B1C Ccr[R"5nURU5 [R"S5nUR UR 55 URUR 55 URSS/US9 UR/5 SSS5 g!,(df  g=frr r s rJr ConfigDictTest.test_config1_ok r rcZUR[URUR5 grrrss rJr#ConfigDictTest.test_config2_failure rrocZUR[URUR5 gr)r^rrconfig2arss rJtest_config2a_failure$ConfigDictTest.test_config2a_failure  )T%6%6 FrocZUR[URUR5 gr)r^rrconfig2brss rJtest_config2b_failure$ConfigDictTest.test_config2b_failure rrocZUR[URUR5 grrrss rJr#ConfigDictTest.test_config3_failure rroc[R"5nURUR5 UR S[ R 5 [5e![a [ R"S5 Of=f[RRS5 URUR5S5 UR/5 SSS5 g!,(df  g=f)NrVrrr)rrrrrr r;rrrsr r!r^r\rmrFrs rJr"ConfigDictTest.test_config4_ok s  $ $ &&   dll +   w(=(= > 2"n$ 2!!.1 2 JJOOA    V__.A C  ! !" %' & &s*&&'89F OOFOO ,&&'78F KK))+ , LL**, -  ! !# "   ! !" %' &' &' &sBF3C$G3 G Gc([R"5nURUR5 [R "S5nUR UR55 URUR55 URSS/US9 UR/5 SSS5 [R"5nURUR5 URS[R5 [R "S5nURUR5 UR UR55 URUR55 [R "S5nUR UR55 URUR55 UR/SQUS9 UR/5 SSS5 g!,(df  GNO=f!,(df  g=f)NrrrrrVr2)rrrrrr)rrrrwr r!rrtrrmr@rr;rzrrs rJtest_config_8_okConfigDictTest.test_config_8_okC s  $ $ &&   dll +&&'89F KK))+ , LL**, -  ! !# "   ! !" %' $ $ &&   dll +   w(=(= >&&'89F   V__ - KK))+ , LL**, -&&'78F KK))+ , LL**, -  ! !#  "   ! !" %'' &' &' &sBG1D"H1 H Hc[R"5nURUR5 UR S[ R 5 [ R"S5n[ R"S5nURUR55 URUR55 URUR55 UR/SQUS9 UR/5 SSS5 [R"5nURUR5 UR S[ R 5 [ R"S5nURUR5 URUR55 URUR55 [ R"S5nURUR55 URUR55 WRUR55 UR/SQUS9 UR/5 SSS5 g!,(df  GNn=f!,(df  g=f)NrVrr0r1rr2r3)rrrr4rr r;r!rrtrr5rmconfig8arzrr7s rJtest_config_8a_ok ConfigDictTest.test_config_8a_oke s  $ $ &&   dmm ,   w(=(= >&&'89F !**+@AJ KK))+ , LL**, -    1 1 3 4  ! !# "   ! !" %)'* $ $ &&   dmm ,   w(=(= >&&'89F   V__ - KK))+ , LL**, -&&'78F KK))+ , LL**, -    1 1 3 4  ! !#  "   ! !" %+' &+' &*' &sC(I%EI7% I47 Jc[R"5nURUR5 UR S[ R 5 [ R"S5nURUR55 UR/US9 URUR5 URUR55 UR/US9 URUR5 URUR55 URS/US9 SSS5 g!,(df  g=f)NrVrrr) rrrrIrr r;r!rrtrmconfig9aconfig9brs rJtest_config_9_okConfigDictTest.test_config_9_ok s  $ $ &&   dll +   w(=(= >&&'89F KK))+ ,  ! !"V ! 4   dmm , KK))+ ,  ! !"V ! 4   dmm , KK))+ ,  ! !# " ' & &s DD55 Ec[R"5nURUR5 UR S[ R 5 [ R"S5nURUR55 [ R"S5nURUR55 [ R"S5nURUR55 [ R"S5nURUR55 URSS/US9 SSS5 g!,(df  g=f NrVrrr2zcompiler.parser.codegen)rrrr) rrrconfig10rr r;r!rrtrrmrs rJtest_config_10_ok ConfigDictTest.test_config_10_ok s  $ $ &&   dmm ,   w(=(= >&&'89F NN4,,. /&&z2F NN4,,. /&&'78F NN4,,. /&&'@AF LL**, -  ! ! # " ' & &s D"E Ec:URUR5 gr)r config11rss rJtest_config11_okConfigDictTest.test_config11_ok s T]]+rocZUR[URUR5 gr)r^rrconfig12rss rJtest_config12_failure$ConfigDictTest.test_config12_failure  )T%6%6 FrocZUR[URUR5 gr)r^rrconfig13rss rJtest_config13_failure$ConfigDictTest.test_config13_failure rroc[R"5nURUR5 [R SnUR URS5 UR URS5 [R"S5 URUR5RS55 SSS5 g!,(df  g=f)NrVrr Exclamationz Exclamation! ) rrrconfig14r r%r^rrrrEr\r)rFrrUs rJtest_config14_okConfigDictTest.test_config14_ok s  $ $ &&   dmm ,!!'*A   QUUE *   Q\\5 1 OOM * OOFOO-667GH I ' & & B+C  Cc:UR5 [SS5nSSSUSS.0SS/0S .nURU5 URU5 SSS5 [RR S nUR [UW5 g!,(df  NC=f) Nrr<rqrrri)rmfilenamerkrBrr)r>rWrr rArBrr)rFrVrrs rJtest_config15_okConfigDictTest.test_config15_ok s  + + -(9:B!6$&$+ F   f %   f %%.(,,''* ('26+. -s >B  BcnURUR5 [RSnURR [R "SSS.55nURUS5 URR [R "SS055nURUS5 g)NrVHellorFrGzHello ++ customvaluerzHello ++ defaultvalue)rconfig16r r%rJr[rr^)rFrUrKs rJtest_config16_okConfigDictTest.test_config16_ok s $--(   g &##G$9$9M :%<= !78##G$9$9 G % !89rocURUR5 [RSnUR UR R S5 g)NrVr)rconfig17r r%r^rJrras rJtest_config17_okConfigDictTest.test_config17_ok s> $--(   g & 44g>rocURUR5 [R"S5RSnUR UR [R5 g)Nrr)rconfig18r r!rBr^rrrFrs rJtest_config18_okConfigDictTest.test_config18_ok sI $--(##J/88; ++W]];roNcURS5n[RRSU5nUR 5 UR R 5 URnUR R5 [R"[R[R5nURS5 URSU45 [R"S[!U55nXa-nSn[!U5n U S:a#UR#XxS5n X- nX-n U S:aM#UR%5 UR R S5 [RR'5 [(R*"U5 g!UR R S5 [RR'5 [(R*"U5 f=f)Nrirg@rrr)rrr rlistenrr=rrrPrr SOCK_STREAM settimeoutconnectrrr_sendrN stopListeningr r6) rFtextverifyr,rrdrrl sentsofarleftsents rJsetup_via_listener!ConfigDictTest.setup_via_listener sS{{7# NN ! !!V ,    vv   ,==1C1CDD OOC LL+t, -;;tSY/D AIq6D(yy:/!  ( JJL GGLL  NN ( ( *  ( ( + GGLL  NN ( ( *  ( ( +sB/F4FAG%c[R"5nUR[R"UR 55 UR S[R5 [R"S5nURUR55 [R"S5nURUR55 [R"S5nURUR55 [R"S5nURUR55 URSS/US9 SSS5 g!,(df  g=fr)rrr1jsondumpsrrr r;r!rrtrrmrs rJtest_listen_config_10_ok'ConfigDictTest.test_listen_config_10_oks  $ $ &&  # #DJJt}}$= >   w(=(= >&&'89F NN4,,. /&&z2F NN4,,. /&&'78F NN4,,. /&&'@AF LL**, -  ! ! # " ' & &s D6E E#c[R"5nUR[R"[ R 55 [R"S5nURUR55 URUR55 URSS/US9 UR/5 SSS5 g!,(df  g=fr) rrr1rrrrwr r!rrtrrmrs rJtest_listen_config_1_ok&ConfigDictTest.test_listen_config_1_ok-s  $ $ &&  # #HOON4J4J$K L&&'89F KK))+ , LL**, -  ! !# "   ! !" %' & &rcSnSn[R"S5n[R"[R 5n[ R"5nURXA5 URUR55 URUR55 SSS5 UR/WS9 URSS/SS9 [ R"5nURU5 [R"S5nURUR55 URUR55 SSS5 URS S /US9 URSS/SS9 [ R"5nURUSSS 2U5 [R"S5nURUR55 URUR55 SSS5 URS S /US9 URSS/SS9 g!,(df  GN=f!,(df  N=f!,(df  NV=f)Ncgrr}stuffs rJ verify_fail6ConfigDictTest.test_listen_verify..verify_fail?srocUSSS2$)Nrmr}r=s rJverify_reverse9ConfigDictTest.test_listen_verify..verify_reverseBs2; rorrrrr )rgrrrmrr) r r!rrrrwrrr1rrtrrm)rFr?rBrto_sendrs rJtest_listen_verify!ConfigDictTest.test_listen_verify<s.  ""#45//."8"89 $ $ &&  # #G 9 KK))+ , LL**, - ' b0    +  , $ $ &&  # #G ,&&'89F KK))+ , LL**, - '          +  , $ $ &&  # #GDbDM> B&&'89F KK))+ , LL**, - '          +  ,Y' &' &$' &s'AH&%A&H8 A-I & H58 I IcZUR[URUR5 gr)r^rr bad_formatrss rJtest_bad_formatConfigDictTest.test_bad_format{s *d&7&7Iroc[R"UR5nSUSSS'URU5 [R "S5R SnURUR[R5 URURR[R5 UR[[R"55SS/5 g) Nz-${asctime} (${name}) ${levelname}: ${message}rorr[rrrr)r&deepcopyrHrr r!rBrPrr]rJ_styleStringTemplateStyler^sortedgetHandlerNamesrFrrs rJ!test_bad_format_with_dollar_style0ConfigDictTest.test_bad_format_with_dollar_style~st/>m|01(; &!##J/88; gnngoo> g//66%99 ;  7 7 9:(,7 9rocURUR5 [R"S5RSnUR UR [5 gNrr)rcustom_formatter_class_validater r!rBrPrJrr"s rJ)test_custom_formatter_class_with_validate8ConfigDictTest.test_custom_formatter_class_with_validatesJ $>>?##$EFOOPQR g//1CDrocURUR5 [R"S5RSnUR UR [5 grU)r custom_formatter_class_validate2r r!rBrPrJrr"s rJ*test_custom_formatter_class_with_validate29ConfigDictTest.test_custom_formatter_class_with_validate2sJ $??@##$EFOOPQR g//1CDrocURR5nSUSSS'URU5 [R"S5R SnUR UR[5 g)Nrrorrrr) rVr&rr r!rBrPrJrrQs rJ9test_custom_formatter_class_with_validate2_with_wrong_fmtHConfigDictTest.test_custom_formatter_class_with_validate2_with_wrong_fmtsn55::<14|W%g. &!##$EFOOPQR g//1CDrocZUR[URUR5 gr)r^rr custom_formatter_class_validate3rss rJ*test_custom_formatter_class_with_validate39ConfigDictTest.test_custom_formatter_class_with_validate3s  *d&7&79^9^_rocZUR[URUR5 gr)r^rrcustom_formatter_with_functionrss rJ,test_custom_formatter_function_with_validate;ConfigDictTest.test_custom_formatter_function_with_validate  *d&7&79\9\]rocZUR[URUR5 gr)r^rrcustom_formatter_with_defaultsrss rJ,test_custom_formatter_function_with_defaults;ConfigDictTest.test_custom_formatter_function_with_defaultsrhroc S/SQSSSSSSS S S SSSSS S S SSS.S.S. S SSS/S//SQS.n[RRU5nURUR S5S5 URUR S5S5 URUR S5S5 URUR S5S5 URUR S5S5 URUR S 5S5 URUR S!5S5 URUR S"5S5 URUR S#5S 5 URUR S$5S5 URUR S%5S5 URUR S&5S5 URUR S'5S5 URUR S(5S5 URUR S)5S5 URUR S*5S 5 URUR S+5S,5 URUR S-5S5 URUR S.5S/5 URUR S05S15 URUR S25S 5 URUR S35S 5 URUR S45S5 URUR S55S5 URUR S65S/5 URUR S75S15 URUR S85S 5 URUR S95S 5 UR S:5nURUR S 5/SQ5 UR [URS;5 UR [URS<5 UR [URS=5 UR [URS>5 UR [URS?5 UR [URS@5 g)AN)rqr)rbcrernrr r)g)rUrjrqr)rza with 1 and spaceza with ( and space)rralpha numeric 1 with spacesalpha numeric 1 %( - © ©ß¯rsomelistsomedict) rrrwrxzalpha numeric ] 1 with spacesu"alpha ]] numeric 1 %( - © ©ß¯]u# alpha [ numeric 1 %( - © ©ß¯] z alpha rnest4rlrr)oz cfg://alistp)atuplealistadictnest1nest2nest3zcfg://atuple[1]rzcfg://alist[1]rozcfg://nest1[1][0]rUzcfg://nest2[1][1]z cfg://adict.dzcfg://adict[f]z(cfg://adict[alpha numeric 1 with spaces]u+cfg://adict[alpha numeric 1 %( - © ©ß¯]z cfg://adict[]zcfg://adict.nest4.dzcfg://adict.nest4[d]zcfg://adict[nest4].dzcfg://adict[nest4][f]z/cfg://adict[nest4][alpha numeric 1 with spaces]u2cfg://adict[nest4][alpha numeric 1 %( - © ©ß¯]zcfg://adict[nest4][]zcfg://adict[nest4][somelist][0]ruz"cfg://adict[nest4][somelist][1][0]z"cfg://adict[nest4][somelist][1][1]rzcfg://adict[nest4][somelist][2]rvzcfg://adict[nest4].somedict.azcfg://adict[nest4].somedict[a]z/cfg://adict[nest4].somedict[a with 1 and space]z/cfg://adict[nest4].somedict[a with ( and space]z cfg://adict.nest4.somelist[1][1]zcfg://adict.nest4.somelist[2]zcfg://adict.nest4.somedict.azcfg://adict.nest4.somedict[a]z cfg://nest3z cfg://nosuchzcfg://!zcfg://adict[2]z*cfg://adict[alpha numeric ] 1 with spaces]u1cfg://adict[ alpha ]] numeric 1 %( - © ©ß¯] ]u0cfg://adict[ alpha [ numeric 1 %( - © ©ß¯] ]) r rBaseConfiguratorr^convertpopr^KeyErrorr)rFrbcrs rJtest_baseconfigConfigDictTest.test_baseconfigs$q013424798:14578"8/0/0" ,,C:s+.7 :^^ , ,Q / $56: $45s; $78#> $78#> O4c: $45q9 $NOQRS $QRTUV O4b9 $9:C@ $:;SA $:;SA $;^\rSrSrUU4SjrU4SjrSrU=r$)1ConfigDictTest.test_namedtuple..MyHandleric2>[TU]"U0UD6 Xlgr)rrresource)rFrrSrTrrs rJr:ConfigDictTest.test_namedtuple..MyHandler.__init__s $1&1,4 rocz>U=RSURR3- sl[TU]U5$N )rrtyperr`rs rJr`6ConfigDictTest.test_namedtuple..MyHandler.emits2 $--"4"4!566 w|F++ro)rr)rrs@rJ MyHandlerrs 5 , ,rorResourcerlabelsmy_typer)rrrq myhandler)rrrrrzsome logzsome log my_type ) collectionsrr r;rrrrr^r\)rFrrrrrrs @rJtest_namedtupleConfigDictTest.test_namedtuples* ,-- ,j68*<=C59# ( &K=A   $ $ &&   f % LL $' *,@A' &s (B,, B:cnSnURSSU/S.S.5 /[R"5lg)Ncgrtr})rs rJrAConfigDictTest.test_config_callable_filter_works..filter_ srorqr:rrnrArr r!rrFrs rJ!test_config_callable_filter_works0ConfigDictTest.test_config_callable_filter_works s9  G "J  ')#roc[R"S5nURSSU/S.S.5 /[R"5lg)Nrrqr:rr)r rrr!rrs rJtest_config_filter_works'ConfigDictTest.test_config_filter_workssB..- G "J  ')#roc"SS5nU"5nURSSU/S.S.5 /[R"5lg)Nc\rSrSrSrSrg)BConfigDictTest.test_config_filter_method_works..FakeFiltericgrtr})rFrs rJrIConfigDictTest.test_config_filter_method_works..FakeFilter.filtersror}N)rwrxryrzrr|r}rorJ FakeFilterrs rorrqr:rrr)rFrrs rJtest_config_filter_method_works.ConfigDictTest.test_config_filter_method_workssG  , G "J  ')#roc "SS5nSSU"54H+nUR[URSSU/S.S.5 M- g)Nc\rSrSrSrg);ConfigDictTest.test_invalid_type_raises..NotAFilteri&r}Nr`r}rorJ NotAFilterr&s$rorrqr:rr)r^rr)rFrrs rJtest_invalid_type_raises'ConfigDictTest.test_invalid_type_raises%sDa.G   !!gY'OP /roc[R"UR5n[SS5nXCSSS'Ub XSSS'Ub X#SSS'SnUR U5 [ R "S5nUR[[ R"55SS/5 URUR5 URR5 [ R"S 5 [ R"S 5 [ R"S 5 [ R""[ R$S 5(aVURR&R)5(aO,[ R""[ R$S 5(aMVURR&R+5 [-US S9nUR/5R15nSSS5 URW/SQ5 U(aURR35 [ R "S5nU(aUR5[6X5 gUR5[8R:U5 g!,(df  N=f!U(aURR35 [ R "S5nU(aUR5[6X5 fUR5[8R:U5 f=f)Nrztest_logging-cqh-rBrrrrjlistenerrrbazzqueue not emptyrir)rrr)r&rLconfig_queue_handlerrWrr rr^rOrPassertIsNotNonerrrrrrsleeping_retryrrjemptyrrrer]r8rrrRr) rFqspeclspeccdrVqhrrrUs rJdo_queuehandler_configuration,ConfigDictTest.do_queuehandler_configuration.s6 ]]444 5 F$7 8+-:tZ(  ,1zN4  )  /4zN4  ,  /   b !))$/B   VG$;$;$=>t M   - KK    MM% LL  OOE "(()=)=):<<;;$$**,,(()=)=):<< KK   " " $b7+qvvx**,,   T#8 9   "((.A 0!8 2.,+   "((.A 0!8 2.s,E J".JJ/J J JA7L c[5[5/nSVs/sHn[SU3SS.PM nn[S-SSSS.nS[S-[S -/UQUQ7nS[S -U[4n[R "XV5HupxUR Xx5 M SS [S S 4nSS [S S4n[R "XV5HcupxUcUcM UR[5n UR Xx5 SSS5 [W R5n URU S5 Me gs snf!,(df  N?=f)N)rergrrrrlz.listenerMakerT)rrrrz .queueMakerz .CustomQueuez.CustomListenerrrrrz Unable to configure handler 'ah') rergrwrc itertoolsproductrrr^rrrr^) rFqsrdqsdlqvalueslvaluesrrctxrs rJtest_config_queue_handler(ConfigDictTest.test_config_queue_handlerVsUm02 3@B@3" !C5)b9@ B--%)   M18n3LXsXUWX$55r>J%--g?LE  . .u <@CU+CU+%--g?LE}"":.#225@/cmm$C   S"D E @!B&/.sD.(D33 E c6URSSSUS.0S.5 g)Nrqqueue_listenerrrmrj)rnrB)r)rFrs rJ*_apply_simple_queue_listener_configuration9ConfigDictTest._apply_simple_queue_listener_configurationrs+  <"#  rozmultiprocessing.Managerc(SSS.[R"5[R"5[5[ 54H<nUR US9 UR U5 UR5 SSS5 M> g!,(df  MP=f)Nz queue.Queuermrr)rjrk SimpleQueuertr|subTestrassert_not_calledrFr"rs rJAtest_config_queue_handler_does_not_create_multiprocessing_managerPConfigDictTest.test_config_queue_handler_does_not_create_multiprocessing_manager}sv!R 0 KKM     $ % "  EE*??F))++*  +*s "B B c.[5[54HZnURUS9 UR[5 UR U5 UR 5 SSS5 SSS5 M\ g!,(df  N=f!,(df  M=f)Nr)rorzrr^rrrrs rJPtest_config_queue_handler_invalid_config_does_not_create_multiprocessing_manager_ConfigDictTest.test_config_queue_handler_invalid_config_does_not_create_multiprocessing_managershh 8 :;EE*D,=,=j,I??F))+-J**<,I,I**s"B"A4B4 B >B B z@requires a debug build for testing assertions in multiprocessingcpSSKn[R(aS/nO/SQnUHlnURUS9 UR"U5nUR 5nUR [5 URU5 SSS5 SSS5 Mn g!,(df  N=f!,(df  M=f)Nrspawnrr forkserver start_method) multiprocessingr MS_WINDOWSr get_contextrr^rr)rFr start_methodsrrrs rJ?test_config_reject_simple_queue_handler_multiprocessing_contextNConfigDictTest.test_config_reject_simple_queue_handler_multiprocessing_contexts    $IM;M)L<8%11,?)&&z2CCEJ398*3298s#8B&.BB& B# B&& B5 c j[R(aS/nO/SQnUHnURUS9 [R"U5nUR 5nUR 5n/nURSURUS4SS9 URURSS95 SSS5 URUR55 SSS5 UR[W5S5 SSS5 M g!,(df  N]=f!,(df  NG=f!,(df  GM=f) Nrrrrqr,) initializerinitargsmaxtasksperchild<r)rrrrrManagerrkPool_mpinit_issue121723rrrErr^r_)rFrrrr"qr/s rJ1test_config_queue_handler_multiprocessing_context@ConfigDictTest.test_config_queue_handler_multiprocessing_contexts   $IM;M)L<8%11,?[[]g A G!1I1I,-v;"LquuRu'89LOOAGGI.#  Wq198*LL #]98s;'D"1D D )'D#D" D D D D"" D2 c[RRSSSSUS.0S/SS.S.5 [R"5R U5 g) NrqT log_to_parentrrr:rBr)rnrPrBrA)r rrr!r)rmessage_to_logs rJr"ConfigDictTest._mpinit_issue121723sZ !!(,<"" #2!2WE #    0roc[R"UR5nSSKJnJn U"5nU"5R 5nU"5R 5nXEU4GH1n[SS5nXSSS'XqSSS 'Sn URU5 [R"S5n UR[[R"55SS/5 URU R5 UR!U R"U5 UR!U RR"U5 [R"S5n U (aUR%[&X5 GMUR%[(R*U5 GM4 g![R"S5n U (aUR%[&X5 fUR%[(R*U5 f=f) Nr)rkrrztest_logging-cmpqh-rBrrrrj)r&rLrrrkr JoinableQueuerWrr rr^rOrPrrrrjrrrRr) rFrMQMMq1q2q3rrVrrUs rJtest_multiprocessing_queues*ConfigDictTest.test_multiprocessing_queuessn ]]444 5> T TZZ\ T   !b\E(=>B/1zN4  ,,1zN4  )B 3!!"%--d3  (?(?(A!BT4LQ$$R[[1 bhh. bkk//7,,T2OO$4a<OOBIIr2#",,T2OO$4a<OOBIIr2sB4FAG+cSSSSSS.0SSS/S.0S .n[R"S5nURUR5 UR U5 URUR5 UR S S05 UR UR5 US UR U5 URUR5 g) NrqFrr:r)rrmrr)rnrPrBrrnrP)r r!rzrrrE)rFrrs rJ test_90195ConfigDictTest.test_90195s(-$4$!*   ""3' ) &! ) 9a.) ( - . &! )roc[R"S5 [R"S5nSSSURS5R5S.0S/SS .S .n[R R U5 g) N_multiprocessingrrqsinkrrrr:rr)r import_modulerrkr rr)rFmprs rJ test_111615ConfigDictTest.test_111615sv##$67  ( (): ;<^^G4::<$H    !!&)roc"SS[RR5nSS0nSSSU0UE0SS/S .S .n[RR U5 [R "S5nUR URU5 g) Nc(^\rSrSrU4SjrSrU=r$)>ConfigDictTest.test_kwargs_passing..CustomQueueHandleri,cV>[TU][R"55 X lgr)rrrjrk custom_kwargsrFrSrTrs rJrGConfigDictTest.test_kwargs_passing..CustomQueueHandler.__init__-s /%+"ro)r)rwrxryrzrr|rrs@rJCustomQueueHandlerr,s  , ,rorrrrqrrmr:rr)r rB QueueHandlerrrrr^r)rFrrrrs rJtest_kwargs_passing"ConfigDictTest.test_kwargs_passing+s ,!1!1!>!> ,  /#!%J   !!&)**84 .. >roc[R"5n[RR U5n[R "5nUR nUR[R5 URU5 URS5 URU5 URU5 g!URU5 URU5 f=f)Ndeadlock) rrkr rBr get_loggerrr9r:rDrrO)rFrjrrrs rJtest_deadlock_in_queue%ConfigDictTest.test_deadlock_in_queueGs%%'""//6 ++-  * OOGMM *   g & LL $ OOE "   ) OOE "   )s AB;;$Cc^"U4SjS[R5n[R"S5mTRU"55 TR [R 5 TR S5 g)Nc6>^\rSrSrU4SjrU4SjrSrU=r$)CConfigDictTest.test_recursion_in_custom_handler..BadHandleriVc">[TU]5 gr)rrrs rJrLConfigDictTest.test_recursion_in_custom_handler..BadHandler.__init__Ws "roc(>TRS5 g)Nrecurser)rFrrs rJr`HConfigDictTest.test_recursion_in_custom_handler..BadHandler.emitYs Y'ror}r)rrs@rJ BadHandlerr#Vs # ( (ror* test_recursion_in_custom_handlerboom)r r]r!rDr9r:r)rFr*rs @rJr+/ConfigDictTest.test_recursion_in_custom_handlerUsR ( ( ""#EF*,' & Vroc^^[R"5m[R"S5m"UU4SjS[5n[R "S5nU"U5nTR U5 TR[R5 [R"TRSS9nT UR5 UR5 [R"TRSS9nUR5 URSS 9 UR[UR 5S 5 UR#UR%[RS S 95 UR#UR'55 SSS5 UR5 UR[UR 5S5 UR#UR%[RS S 95 g!,(df  Nq=f)N&test_thread_supression_noninterferencecF>^\rSrSrU4SjrSrSrUUU4SjrSrU=r $)OConfigDictTest.test_thread_supression_noninterference..BlockOnceHandleriicV>[TU][R"55 Xlgr)rrrMatcherbarrier)rFr4rs rJrXConfigDictTest.test_thread_supression_noninterference..BlockOnceHandler.__init__js !23& rocSUlgr)rrss rJ createLockZConfigDictTest.test_thread_supression_noninterference..BlockOnceHandler.createLockns   roc&URU5 gr)r`rs rJryVConfigDictTest.test_thread_supression_noninterference..BlockOnceHandler.handleqs &!roc>UR(a/URnSUlUR5 T SSS5 [TU] U5 TR S5 g!,(df  N/=f)Nzblow up if not supressed)r4rrr`r)rFrr4rrrs rJr`TConfigDictTest.test_thread_supression_noninterference..BlockOnceHandler.emittsO<<"llG#'DLLLN V$ 67s A## A1)r4r) rwrxryrzrr7ryr`r|r)rrrs@rJBlockOnceHandlerr1is ' ! " 8 8ror=r)rr)rrnrrqrrr6r)rLockr r!r BarrierrDr9r:rrrrrr^r_bufferrEmatchesis_alive)rFr=r4rt1t2rrs @@rJr/5ConfigDictTest.test_thread_supression_noninterference`s_~~""#KL  8 8{ 8*##A&"7+'" &   V\\ ?  HHJ LLN!!FCB HHJ GGAG    S0! 4 OOGOOGMM3OO P OOBKKM *$   W^^,a0  sKL)Ts 0CG++ G9r}r)trwrxryrzr{r r>r[rrwr4rrrrrrrUr]rr'r,r6r@rrIrrrrrr rrr r=rrr!rHrVrZrarerjrrrrr rrrrr"rr(rr9rrrrrrr rrrrr#r1rrequires_working_socketr6r9rErIrRrWr[r^rbrfrkrrrrrrrr rrequires_subprocessrrrrrrr skipUnlessPy_DEBUGrr staticmethodrrrrrrr+r/r|r}rorJrre ss3 / I I, 9 1%".   ! G. 9 1%".   !%Y!  i +G8 9 1%".   '!  ! )H8 9 1%"/   !%Y!  i +G8 9 1%".   !%Y!  i +H: 9 1%".   !%Y!  i +H8 9 1/".   !%Y!  i +G8 "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%". "'    ! 'H8 ;*N;  1%".   ! !H,*'++* %.%%w    1&".   ! +H81  :# %     (M# H2 M" 1 0 :0&     +,# -JB !66>!  0$!,   . $I#0 #'#8 !$99>!  0$!,   . $I#0 #($8 !$88>!  0$!,   . $I#0 #($8  >!  0$!,   . $I#0 #&"8  N*I6  0$!,   . $I#0 #&"6. 9!F   $(&& &- &FGGF& &3F&< &D+&Z&(,GGJ72 :? < ,8 $$&'( $$& &' & $$&<,'<,|J 9E E E`^^BfHB>)) )&/P002   "F#3F4  002   " $%,&#3,( $%,&,   " )),LMKM#K$   " )),LM2M#2&11    "3#36*<**?8   " *# * 0027M37Mrorc \rSrSrSrSrSrg) ManagerTesticp^/m"U4SjS[R5n[R"S5nUR[UR [ 5 UR U5 URS5nURS5 [R"S5 URTS/5 g)Nc&>\rSrSrSU4SjjrSrg)6ManagerTest.test_manager_loggerclass..MyLoggeriNc(>TRU5 grr)rFrrrSexc_infoextraloggeds rJ_log;ManagerTest.test_manager_loggerclass..MyLogger._logs c"ror}rv)rwrxryrzrVr|)rUsrJMyLoggerrPs  # #rorXrEzshould appear in loggedzshould not appear in logged) r Loggerrr^ TypeErrorsetLoggerClassrr!rr^)rFrXmanrrUs @rJtest_manager_loggerclass$ManagerTest.test_manager_loggerclasss #w~~ #ood# )S%7%7= 8$v&0156 ";!<=roc[R"S5n[5nURU5 UR UR U5 gr)r rrosetLogRecordFactoryr^logRecordFactory)rFr\rjs rJtest_set_log_record_factory'ManagerTest.test_set_log_record_factorys;ood#8 ) --x8ror}N)rwrxryrzr]rbr|r}rorJrMrMs > 9rorMc \rSrSrSrSrSrg)ChildLoggerTestic[R"5n[R"S5n[R"S5nURS5nURS5nURU[R"S55 URU[R"S55 URS5nURS5nURS5nURU[R"S55 URU[R"S55 URXV5 g) Nabczdef.ghixyzzuvw.xyzdefghiabc.defz abc.def.ghi)r r!getChildr)rFrl1l2c1c2c3s rJtest_child_loggers"ChildLoggerTest.test_child_loggerss       u %   y ) ZZ  ZZ " b'++E23 b'++I67 [[  [[  [[ # b'++I67 b'++M:; broc[R"5n[R"S5n[R"S5n[R"S5n[R"S5nUR5nX%1nURXvU-5 UR X75 UR5nURU1U5 UR5nUR[ 5U5 g)Nrfoo.barzfoo.bar.baz.bozzr)r r! getChildrenr^ assertNotInr3)rFrrmrnl3l4kidsrjs rJtest_get_children!ChildLoggerTest.test_get_childrens       u %   y )   1 2   u %}}8 (?3 &~~ "t$~~ %ror}N)rwrxryrzrrr{r|r}rorJreres   &rorec\rSrSrSrg)DerivedLogRecordir}Nr`r}rorJr~r~raror~c&\rSrSrSrSrSrSrg)LogRecordFactoryTestic"SS[R5n[RU5 U"[5UlUR RUR 5 [R"5Ul g)Nc \rSrSrSrSrSrg)2LogRecordFactoryTest.setUp..CheckingFiltericXlgrr)rFrs rJr;LogRecordFactoryTest.setUp..CheckingFilter.__init__sroct[U5nX RLaSU<SUR<3n[U5eg)NzUnexpected LogRecord type z , expected T)rrrZ)rFrr,rs rJr9LogRecordFactoryTest.setUp..CheckingFilter.filters3LHH$IJ HH&C#C.(rorN)rwrxryrzrrr|r}rorJCheckingFilterrs   ror) r rrrKr~rr3rgetLogRecordFactory orig_factory)rFrs rJrKLogRecordFactoryTest.setUpsV W^^  t$%56  ""4;;/#779rocURRUR5 [R U5 [ R "UR5 gr)r3rrrrVr r`rrss rJrVLogRecordFactoryTest.tearDowns< %%dkk2$##D$5$56roc UR[URRUR 55 [ R "[5 URRUR 55 URS/5 g)N)rArr) r^rZr3rrtr r`r~rrmrss rJtest_logrecord_class)LogRecordFactoryTest.test_logrecord_classsn )T%5%5%=%=++- /##$45 t0023  !  ro)rrN)rwrxryrzrKrVrr|r}rorJrrs:$7  rorcH\rSrSrSrSrSrSrSrSr Sr S r S r S r g ) QueueHandlerTestir c[RU5 [R"S5Ul[R R UR5UlSUl[R"S5Ul SURl URR[R5 URRUR5 g)NrmqueF)rrKrjrkr rBrque_hdlrrHr! que_loggerrr9rrDrss rJrKQueueHandlerTest.setUpst[[_ ((55djjA  !++E2$)!   1 ""4==1rocbURR5 [RU5 gr)rrNrrVrss rJrVQueueHandlerTest.tearDownrrocURRUR55 UR[R URR 5 URRUR55 UR[R URR 5 UR5nURRU5 URR 5nUR[U[R55 URURURR5 URURUR 4US45 gr)rrrtr^rjEmpty get_nowaitrrrErr r r^rHrrS)rFrrs rJtest_queue_handler#QueueHandlerTest.test_queue_handler s d//12 %++tzz'<'<= T..01 %++tzz'<'<=! $zz$$&  4):):;< DOO$8$89 $((DII.d  {levelname}: {message})rH levelnamer6)rtr rrr[rHr=r>rr@rrrjrr^rr6)rFrrlog_format_str formatted_msgrJ log_records rJtest_formatting QueueHandlerTest.test_formattings!((9 ;&--4998A.P %%doo6  ""9- $ZZ**,  7 (:(:;roc[[R"55n[RR UR U5nUR5 URRUR55 URRUR55 URRUR55 UR5 UR5 URUR[R SS95 URUR[R"SS95 URUR[R$SS95 UR'5 [[R"55nUR)[R$5 [RR UR USS9nUR5 URRUR55 URRUR55 URRUR55 UR5 UR+UR[R SS95 UR+UR[R"SS95 URUR[R$S S95 UR'5 UR5 UR-UR.5 g!UR5 UR5 f=f!UR5 f=f) Nrr>rrT)rrrr)r rr3r rB QueueListenerrjrrrrtrr5r8rErBrrrrNr9rzr rrFrrs rJtest_queue_listener$QueueHandlerTest.test_queue_listener"sagoo/0##11$**gF  OO # #D$5$5$7 8 OO ! !$"3"3"5 6 OO $ $T%6%6%8 9 MMO MMO MN  sKL 0@0@#NO goo/0))*##11$**gHL2N  OO # #D$5$5$7 8 OO ! !$"3"3"5 6 OO $ $T%6%6%8 9 MMO #NO LM 0@0@#NO    (**+7 MMO MMO$ MMOsA;MA;M6"M36NcJ[[R"55n[RR UR U5nUR5 UR[UR5 UR5 URUR5 gr) r rr3r rBrrjrr^rr8r rrs rJtest_queue_listener_multi_start0QueueHandlerTest.test_queue_listener_multi_startHsjgoo/0##11$**gF ,7  (**+roc[RRURUR5nUR 5 SS- URRUR5SS9 UR5 URURR5R5R!S5S5 URURR5R5R!S5S5 g![ a5nUnURRUR5US9 SnAGNSnAff=f)NrqrrST stack_info TracebackStack)r rBrrjr<rZeroDivisionErrorrrrtrr8r^r8r\rqr0)rFrreexcs rJ&test_queue_listener_with_StreamHandler7QueueHandlerTest.test_queue_listener_with_StreamHandlerPs##11$**dnnM I E d//1dC  --/557==kJAN --/557==gFJ ! IC OO % %d&7&7&9C % H IsD E*E  EcURRUR5 URR UR 5 [ RRURUR5nUR5 URRS5 UR5 URURR5R!5S5 g)Nrzque -> ERROR: error)rr@r?rrDr<r rBrrjrrr8r^r8r\rq)rFrs rJ*test_queue_listener_with_multiple_handlers;QueueHandlerTest.test_queue_listener_with_multiple_handlers^s ""4#6#67 ""4>>2##11$**dmmL g&  --/5579NOro)rHrrrjN)rwrxryrzr[rKrVrrrrrrr|r}rorJrrs532  = <$,L, K Prorrc\rSrSrSrSr\S5r\R"\ RRS5S5r \R"\ RRS5S5r\S5rS rS rS rg ) QueueListenerTestimzf Tests based on patch submitted for issue #27930. Ensure that QueueListener handles all log messages. c>[R"SU-5nUR[R5 [RR U5nUR U5 [RRU5nUR5 URS5 URS5 URS5 URS5 URS5 UR5 URU5 UR5 g)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) r r!r9r:rBrrDrrrr8rOrN) log_queuerrrrs rJ setup_and_logQueueListenerTest.setup_and_logws&&'?%'GHF OOGMM *&&33I>G   g &''55i@H NN  KK  KK  KK KK  KK  MMO   ) MMOroryc[UR5H>n[R"5nUR X0R 5<SU<35 M@ UR URSUR-S5 gNrrz&correct number of handled log messages)rrepeatrjrkrr.r^ call_countrF mock_handlerrs rJ#test_handle_called_with_queue_queue5QueueListenerTest.test_handle_called_with_queue_queues_4;;'!KKM ""9A.FG(   [33Q_E Grocp[R"5 [UR5H^n[R "5nUR X0R5<SU<35 UR5 UR5 M` URURSUR-S5 gr) r*skip_if_broken_multiprocessing_synchronizerrrrkrr.rNr6r^rrs rJ test_handle_called_with_mp_queue2QueueListenerTest.test_handle_called_with_mp_queues  > > @4;;'+113 ""9A.FG!%%' (   [33Q_E Groc#n# UR5v M![Ra /s$f=f7fr)rrjr)rs rJget_all_from_queue$QueueListenerTest.get_all_from_queues8 #..00;;   s52525c N[R"5 [UR5Hn[R "5nUR X R5<SU<35 [URU55nUR"5 UR"5 /[RRR//nUR!X4SUVs/sH0n[#U[R$5(a UR&OUPM2 sn-5 M gs snf)z Five messages are logged then the QueueListener is stopped. This test then gets everything off the queue. Failure of this test indicates that messages were not registered on the queue until _after_ the QueueListener stopped. rz&Found unexpected messages in queue: %sN)rrrrrrkrr.listrrNr6r rBr _sentinelrrr r)rFrrjrrjrs rJ$test_no_messages_in_queue_after_stop6QueueListenerTest.test_no_messages_in_queue_after_stops  > > @4;;''--/""5GGIq*ABT44U;< !!#!1!1!?!?!I!I JK eF5:%<5:/9G(%0 &rorc$\rSrSrSr\rSrSrg)UTCic[$r)ZEROrFdts rJ utcoffset UTC.utcoffsets rocg)Nrr}rs rJtzname UTC.tznamesror}N)rwrxryrzrdstrr|r}rorJrrs Crorc\rSrSrSrSrg)AssertErrorMessageicUR"S/UQ70UD6 g!Ua%nURU[U55 SnAgSnAff=f)Nr})r^r^r)rFrr6rSrTres rJassert_error_message'AssertErrorMessage.assert_error_messagesF .   b 24 26 2 .   Wc!f - - .sA?Ar}N)rwrxryrzrr|r}rorJrrs.rorcf\rSrSrSrSSjrSrSrSrSr S r S r S r S r S rSrSrSrg) FormatterTestic S[R[RR SSS5SSSSSS.UlS S S 00Ulg) Nzformatter.testr{toz dummy.extrCzMessage with %d %s)r placeholders)rHrpathnamelinenorSrrrSri)r r:rRr{rcommonvariantsrss rJrKFormatterTest.setUpsP$]] VT;?''    $  roNc[UR5nUbURURU5 [R "U5$r)rsrrQrr r)rFrHrKs rJ get_recordFormatterTest.get_records<dkk"   MM$--- .$$V,,roc|UR5n[R"S5nURUR U5S5 [R"S5nUR [ URU5 URUR55 [R"S5nURUR55 [R"S5nURUR55 [R"S5nURUR55 g)Nz${%(message)s}z${Message with 2 placeholders}z %(random)s %(asctime)sz%(asctime)-15sz%(asctime)#15s rr r=r^r[r^rrzusesTimerErFrrs rJ test_percentFormatterTest.test_percents OO    . / !&FG   l + *ahh2 &   m ,  %   . /  %   . /  %rocUR5n[R"SSS9nURUR U5S5 [R"SSS9nUR [ URU5 [R"SSS9nURUR55 [R"SSS9nURUR55 [R"SSS9nURUR55 [R"S SS9nURUR55 g) Nz $%{message}%$rr$%Message with 2 placeholders%$z{random}r {asctime}z{asctime!s:15}z {asctime:15}rrs rJ test_bracesFormatterTest.test_braces s OO    oS 9 !&GH   j 4 *ahh2   k 5 &   k 5  %   .c :  %   nC 8  %rocUR5n[R"SSS9nURUR U5S5 [R"SSS9nURUR U5S5 [R"SSS9nURUR U5S5 [R"SSS9nUR [ URU5 URUR55 [R"S SS9nURUR55 [R"S SS9nURUR55 [R"SSS9nURUR55 [R"S SS9nURUR55 g) N ${message}rrzMessage with 2 placeholdersz$messagez$$%${message}%$$rz ${random}z ${asctime}z$asctimez ${asctime}--rrs rJ test_dollarsFormatterTest.test_dollarss^ OO    l# 6 !&CD   j 4 !&CD   0 < !&GH   k 5 *ahh2 &   l# 6  %   j 4  %   l# 6 &   nC 8  %roc[R"S5nURURS5 [R"S5nURURS5 [R"S5nURURS5 [R"S5nURURS5 [R"SSS9nURURS5 [R"SSS9nURURS5 [R"S SS9nURURS 5 [R"S SS9nURURS 5 [R"S SS9nURURS 5 [R"S SS9nURURS 5 [R"S SS9nURURS 5 [R"SSS9nURURS5 [R"SSS9nURURS5 [R"SSS9nURURS5 [R"SSS9nURURS5 [R"SSS9nURURS5 [R"SSS9nURURS5 [R"SSS9nURURS5 [R"SSS9nURURS5 [R"SSS9nURURS5 [R"SSS9nURURS5 UR [ [RS5 UR [ [RS5 UR [ [RS5 UR [ [RS5 UR [ [RS5 UR [ [RS5 UR [ [RS5 UR [ [RS 5 UR [ [RS!5 UR [ S"[RS#SS9 UR [ S$[RS%SS9 UR [ S&5 UR [ [RS'SS9 UR [ S([RS)SS9 UR [ S*[RS+SS9 UR [ [RS,SS9 UR [ [RS-SS9 UR [ [RS.SS9 UR [ [RS/SS9 UR [ S0[RS1SS9 UR [ S2[RS3SS9 UR [ [RS4SS9 UR [ [RS5SS9 UR [ [RS6SS9 UR [ [RS7SS9 UR [ [RS8SS9 UR [ [RS9SS9 UR [ [RS:SS9 UR [ [RS;SS9 UR [ [RSSS9 UR [ S=[RS?SS9 UR [ S=[RS@SS9 UR [ S$[RSSS9 UR [ [RS%SS9 UR [ S$[RSASS9 UR [ [RSBSS9 g)CNzM%(levelname)-15s - %(message) 5s - %(process)03d - %(module) - %(asctime)*.3sz1%(asctime)*s - %(asctime)*.3s - %(process)-34.33oz%(process)#+027.23Xz %(foo)#.*gz5$%{message}%$ - {asctime!a:15} - {customfield['key']}rrz{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)_rr z %(foo)#12.3*fz %(foo)0*.8*fz;invalid format: invalid field name/expression: 'name-thing'z {name-thing}zinvalid format: no fieldsrzinvalid 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 $.rz ${asctime)r r=r^_fmtr^rrrFrs rJtest_format_validate"FormatterTest.test_format_validate0s   m n !pq   Q R !TU   3 4 !67   l + .   U]` a !XY   >c J !AB   4C @ !78   m3 7 /   m3 7 /   m3 7 /   /s ; !23   X`c d ![\   4C @ !78   nC 8 0   m3 7 /   33 ? !67   5S A !89   4C @ !78   5S A !89   is 3 +   k 5 - *g&7&7G *g&7&7G *g&7&7G *g&7&7I *g&7&7G *g&7&7E *g&7&7F *g&7&7I *g&7&7H !!  I   ~S " !!  '   }C " !!  %  *g&7&79NVYZ !!  E   0 " !!  3   /s " *g&7&7PST *g&7&79PX[\ *g&7&79PX[\ *g&7&79RZ]^ !!  ?   z " !!  E   z " *g&7&7sS *g&7&7PST *g&7&7CP *g&7&79MUXY *g&7&79NVYZ *g&7&79IQTU *g&7&79JRUV *g&7&79KSVW *g&7&7SQ !!  4   z " !!  4   wc " !!  4   xs " !!  '   {# " *g&7&7cR !!  '   uC " *g&7&7CProcP/SQn/SQn[X5GHup4[R"X4SS0S9nUR5nUR UR U5S5 URS5nUR UR U5S5 [R"X4S9nUR5nUR [UR U5 [R"X4S S0S9nURS5nUR UR U5S5 GM g) N)z%(custom)s %(message)sz{custom} {message}z$custom $message)%rrrDefault)rrpz#Default Message with 2 placeholdersz 1234 Message with 2 placeholdersrz Non-existing)r`r r=rr^r[r^r)rFfmtsstylesrYrrrs rJtest_defaults_parameter%FormatterTest.test_defaults_parametersS d+JC!!#h =RSA!A   QXXa[*O P)A   QXXa[*L M!!#3A!A   j!((A 6!!#ni=XYA)A   QXXa[*L M,rocRUR[[RSSS5 g)Nr~)r^rr r=rss rJtest_invalid_style FormatterTest.test_invalid_styles *g&7&7tSIroc UR5n[R"SSSSSSS[5n[R"UR S5R 55UlSUl[R"S5n[RUl URURU5S 5 URURUS 5S 5 URU5 URUR S 5 g) Nrrnr{%(asctime)s %(message)sz1993-04-21 08:03:00,123z%Y:%dz1993:21)rdatetimeutcrmktime astimezone timetuplecreatedmsecsr r=gmtime converterr^ formatTimer[asctime)rFrrrs rJ test_timeFormatterTest.test_times OO    tQAq!Q <KK d 3 = = ?@    7 8kk  a*CD a19=   $=>roc "SS[R5nUR5n[R"SSSSSSS [5n[ R "URS5R55Ul U"5n[ RUl URURU5S 5 g) Nc\rSrSrSrSrSrg)DFormatterTest.test_default_msec_format_none..NoMsecFormatteriNz%d/%m/%Y %H:%M:%Sr})rwrxryrzdefault_msec_formatdefault_time_formatr|r}rorJNoMsecFormatterr3s"& "5 ror6rrr r!rnrr"z21/04/1993 08:03:00)r r=rr$r%rr&r'r(r)r+r,r^r-)rFr6rrrs rJtest_default_msec_format_none+FormatterTest.test_default_msec_format_nones 6g// 6 OO    tQAq!S# >KK d 3 = = ?@  kk  a*?@roc[R"SSSS9n[S5HZn[R"S5 [R "SSUS --05nUR U5nURS U5 M\ g) Nz!{asctime}.{msecs:03.0f} {message}rr)rYrrli g-C6:?rz Message %drqz.1000)r r=rrrrr[rw)rFrrrrls rJtest_issue_89047FormatterTest.test_issue_89047sm   "ESZm ntA JJv %%ula!e.D&EFA A   Wa ( rocSnUHup#[S5nX$l[R"SS05nSSS5 UR U5 UR WR U5 UR URUS- 5 URUR[UR5- UR S- SS9 SSS5 M g!,(df  N=f!,(df  M=f) N))l$lH:gY@)l'$TrH:g8@)g]rH:)l)TrH:r>z time.time_nsrrEeAg@@r)delta) r return_valuer rrr^r*r)assertAlmostEqualr)rFtestsnswant patched_nsrs rJ/test_msecs_has_no_floating_point_precision_loss=FormatterTest.test_msecs_has_no_floating_point_precision_losss HB~&**,' ..v?'b!  t4  c:&&v~~FNN8K'K'-||c'9-1'3"! &&"!sC A:C% C" % C4 cSnSn[R"SU<SU<S35n[SU5upEnUR5n[ X%R 5SS9HfupxUR US 9 [[UR55upURXU-S - S S 9 URXS - SS 9 SSS5 Mh g!,(df  Mz=f)Nr=)rriB0il*C7qH:z start_ns = z offsets_ns = a start_monotonic_ns = start_ns - 1 import time # Only time.time_ns needs to be patched for the current # implementation, but patch also other functions to make # the test less implementation depending. old_time_ns = time.time_ns old_time = time.time old_monotonic_ns = time.monotonic_ns old_monotonic = time.monotonic time_ns_result = start_ns time.time_ns = lambda: time_ns_result time.time = lambda: time.time_ns()/1e9 time.monotonic_ns = lambda: time_ns_result - start_monotonic_ns time.monotonic = lambda: time.monotonic_ns()/1e9 try: import logging for offset_ns in offsets_ns: # mock for log record creation time_ns_result = start_ns + offset_ns record = logging.makeLogRecord({'msg': 'test'}) print(record.created, record.relativeCreated) finally: time.time_ns = old_time_ns time.time = old_time time.monotonic_ns = old_monotonic_ns time.monotonic = old_monotonic -cT)r2) offset_nsr?)places.A) rrrrr`r]rrfloatrrB) rFstart_ns offsets_nscodercouterrrKliner)relativeCreateds rJ)test_relativeCreated_has_higher_precision7FormatterTest.test_relativeCreated_has_higher_precisions-J $ |$$(   @(d3 jjl":~~/?MOI 2+.udjjl+C(&&wI1E0LUV&W&&CPQ&R 32 N22s /A C C )rrr)rwrxryrzrKrrr r rrrr/r7r:rGrYr|r}rorJrrsJ "- && &*TQlN(J ? A)3*0Srorc \rSrSrSrSrSrg)TestBufferingFormatteriGcS[U5-$)Nz[(%d)r_rFr/s rJ formatHeader#TestBufferingFormatter.formatHeaderHW%%rocS[U5-$)Nz(%d)]r^r_s rJ formatFooter#TestBufferingFormatter.formatFooterKrbror}N)rwrxryrzr`rdr|r}rorJr\r\Gs &&ror\c&\rSrSrSrSrSrSrg)BufferingFormatterTestiNcn[R"SS05[R"SS05/Ulg)Nrrr)r rr/rss rJrKBufferingFormatterTest.setUpOs/  ! !5%. 1  ! !5%. 1  roc[R"5nURSUR/55 URSURUR55 g)Nronetwo)r BufferingFormatterr^r[r/rs rJ test_default#BufferingFormatterTest.test_defaultUsE  & & ( QXXb\* 188DLL#9:roc[5nURSURUR55 [R "S5n[U5nURSURUR55 g)Nz[(2)onetwo(2)]z <%(message)s>z[(2)(2)])r\r^r[r/r r=)rFrlfs rJ test_custom"BufferingFormatterTest.test_customZs` " $ )188DLL+AB    / "2 & -qxx /EFror1N)rwrxryrzrKrmrqr|r}rorJrgrgNs ; Grorgc\rSrSrSrSrg) ExceptionTestiacRURn[5nURU5 [S5e! [R "SSS9 O=fUR U5 UR5 URSnURURRS55 URURRS55 URURRS55 URURRS 55 g) NrfailedTrrz#Traceback (most recent call last): z! RuntimeError: deliberate mistakeStack (most recent call last): z,logging.exception('failed', stack_info=True))r3RecordingHandlerrDrr rrOrNr/rEexc_textrNrr)rFrrUs rJrExceptionTest.test_formattingbs      Q 934 4 9   h4 8   IIaL  --/>? @  ++-AB C  //1>? @  --/?@ As 4A r}N)rwrxryrzrr|r}rorJrtrtasArortc\rSrSrSrSrg)LastResortTestiwcURnURUR5 [Rn[R n[ R"5nURS5 URUR5S5 URS5 URUR5S5 SSS5 S[l[ R"5nURS5 SnURUR5U5 SSS5 [ R"5nURS5 URUR5S5 SSS5 SURl S[l[ R"5nURS5 URUR5S5 SSS5 URUR5 U[lU[lg!,(df  GNW=f!,(df  GN =f!,(df  N=f!,(df  Nu=f!URUR5 U[lU[lf=f)NzThis should not appearrz Final chance!zFinal chance! z-No handlers could be found for logger "root" F)r3rOr<r lastResortrrrrr^r\rr"emittedNoHandlerWarningrD)rFrAold_lastresortold_raise_exceptionsrrs rJtest_last_resortLastResortTest.test_last_resortxs 4>>* ++&66 ;((*f 34  !2B7 _-  !24EF +"&G ((*f _-F  !2C8+ ((*f _-  !2B7+ 49DLL 0&+G #((*f _-  !2B7+ OODNN +!/G &:G #7+*+* +*+* OODNN +!/G &:G #sm IA#H(I)4H#I:2H5,9I%2II H I# H2-I5 I?I II3J r}N)rwrxryrzrr|r}rorJr|r|ws#;ror|c \rSrSrSrSrSrg) FakeHandleric NSHn[XURXU55 M! g)N)rr!rNr)setattr record_call)rF identifiercalledrs rJrFakeHandler.__init__s#>F D$"2"2:v"N O?roc^^^UUU4SjnU$)NcH>TRSRTT55 g)Nz{} - {})rr[)rr method_namesrJinner&FakeHandler.record_call..inners MM)**:{C Dror})rFrrrrs ``` rJrFakeHandler.record_calls E ror}N)rwrxryrzrrr|r}rorJrrs Prorc.^\rSrSrU4SjrSrSrU=r$)rxic<>[[U] "U0UD6 /Ulgr)rrxrr/rs rJrRecordingHandler.__init__s .?? roc:URRU5 g)z&Keep track of all the emitted records.N)r/rrs rJryRecordingHandler.handles F#ror1)rwrxryrzrryr|rrs@rJrxrxs$$rorxc^\rSrSrSrU4SjrSrSrSrSr Sr S r S r S r S rS rSrSrSrSrSrSrU=r$) ShutdownTestiz#Test suite for the shutdown method.c>[[U] 5 /Ul[R nUR [[SU5 g)Nr)rrrKrr rrr)rFraise_exceptionsrs rJrKShutdownTest.setUps7 lD') "22 *;=MNroc^U4SjnU$)Nc>T"5err})rsrJr'ShutdownTest.raise_error..inners 'Mror})rFrrs ` rJ raise_errorShutdownTest.raise_errors   rocL[SUR5n[SUR5n[SUR5n[[RR XU/5n[R "[U5S9 /SQnURXPR5 g)Nrrqrr) z 2 - acquirez 2 - flushz 2 - closez 2 - releasez 1 - acquirez 1 - flushz 1 - closez 1 - releasez 0 - acquirez 0 - flushz 0 - close 0 - release) rrrr rrrDrr^)rFhandler0handler1handler2rBrjs rJtest_no_failureShutdownTest.test_no_failures}q$++.q$++.q$++.w**X,JKT(^4L ;;/roc[SUR5n[X1URU55 [R R U5/n[R"[U5S9 URSURS5 g)Nrrrrm) rrrrr rrrDrr^)rFrrrrBs rJ_test_with_failure_in_method)ShutdownTest._test_with_failure_in_methodsha-!1!1%!89OO''01T(^4  B8roc0URS[5 gNrrrrss rJtest_with_ioerror_in_acquire)ShutdownTest.test_with_ioerror_in_acquires )))W=roc0URS[5 gNr!rrss rJtest_with_ioerror_in_flush'ShutdownTest.test_with_ioerror_in_flush ))'7;roc0URS[5 gNrNrrss rJtest_with_ioerror_in_close'ShutdownTest.test_with_ioerror_in_closerroc0URS[5 grrrrss rJtest_with_valueerror_in_acquire,ShutdownTest.test_with_valueerror_in_acquires )))Z@roc0URS[5 grrrss rJtest_with_valueerror_in_flush*ShutdownTest.test_with_valueerror_in_flush ))':>roc0URS[5 grrrss rJtest_with_valueerror_in_close*ShutdownTest.test_with_valueerror_in_closerrocFS[lURS[5 g)NFrr rr IndexErrorrss rJ.test_with_other_error_in_acquire_without_raise;ShutdownTest.test_with_other_error_in_acquire_without_raises"' )))Z@rocFS[lURS[5 g)NFr!rrss rJ,test_with_other_error_in_flush_without_raise9ShutdownTest.test_with_other_error_in_flush_without_raise"' ))':>rocFS[lURS[5 g)NFrNrrss rJ,test_with_other_error_in_close_without_raise9ShutdownTest.test_with_other_error_in_close_without_raiserrocfS[lUR[URS[5 g)NTrr rr^rrrss rJ+test_with_other_error_in_acquire_with_raise8ShutdownTest.test_with_other_error_in_acquire_with_raises'"& *d&G&G#Z 1rocfS[lUR[URS[5 g)NTr!rrss rJ)test_with_other_error_in_flush_with_raise6ShutdownTest.test_with_other_error_in_flush_with_raise'"& *d&G&G!: /rocfS[lUR[URS[5 g)NTrNrrss rJ)test_with_other_error_in_close_with_raise6ShutdownTest.test_with_other_error_in_close_with_raiserro)r)rwrxryrzr{rKrrrrrrrrrrrrrrrr|rrs@rJrrs^-O 0 9><<A??A??1 / //rorcp\rSrSrSrSrSSjrSrSrSr S r S r S r S r S rSrSrSrSrSrg)ModuleLevelMiscTesti z)Test suite for some module level methods.c[RRRnUR US5 UR [RU5 [R"S5 UR [RRRS5 UR [[RS5 "SS5nUR [[RU"55 [R"S5 [R"5 UR [RRR[R5 g)NrS doesnotexistsc\rSrSrSrg);ModuleLevelMiscTest.test_disable.._NotAnIntOrStringir}Nr`r}rorJ_NotAnIntOrStringr rorWARN) r rAr"rRr^rr^rrZr)rF old_disablers rJ test_disable ModuleLevelMiscTest.test_disablesll**22  a( 5 --55r: *gooG   )W__6G6IJ  --55w7G7GHroNc<^/m[R"U[SU4Sj5 [5n[RR U5 [ [U5nUb U"USU5 O U"SU5 UR[UR5S5 URSnURUR5SU-5 UbUO[ [UR55nURURU5 URT/5 g)N basicConfigc(>TRX45$rrR)rkwrs rJ/ModuleLevelMiscTest._test_log..*sv}}aW'=roz test me: %rrqr) rrr rxrArDr0r^r_r/ getMessageupperr)rFrr recording log_methodrexpected_levelrs @rJ _test_logModuleLevelMiscTest._test_log's dG]= ?%&   *Wf-   umY 7 }i 0 Y../3""1% **,mi.GH"'"3&,,.9Y 8 $rocDURS[R5 gNr)rr rrss rJtest_logModuleLevelMiscTest.test_log?s ugmm,roc&URS5 gNrrrss rJ test_debugModuleLevelMiscTest.test_debugB wroc&URS5 gNrrrss rJ test_infoModuleLevelMiscTest.test_infoE vroc&URS5 gNrrrss rJ test_warning ModuleLevelMiscTest.test_warningH y!roc&URS5 gNrrrss rJ test_errorModuleLevelMiscTest.test_errorKrroc&URS5 gNr5rrss rJ test_critical!ModuleLevelMiscTest.test_criticalN z"rocUR[[R[5 "SS[R 5n[R"U5 UR [R"5U5 [R"[R 5 UR [R"5[R 5 g)Nc\rSrSrSrg);ModuleLevelMiscTest.test_set_logger_class..MyLoggeriTr}Nr`r}rorJrXrTrrorX)r^rZr r[rorYr^getLoggerClass)rFrXs rJtest_set_logger_class)ModuleLevelMiscTest.test_set_logger_classQs )W%;%;VD w~~  x( //18<w~~. //17>>Broc^/m"U4SjS[R"55n[R"U5 [R"S5nUR TS/5 [ R "5n[R"U5nURU5 UR[R5 URS5 UR UR5R5S5 URS5 URS5 UR[R 5 URS5 UR UR5S5 UR#U5 UR%5 [R"[R&5 g!UR#U5 UR%5 [R"[R&5 f=f)NcH>^\rSrSrS\R 4UU4SjjrSrU=r$)@ModuleLevelMiscTest.test_subclass_logger_cache..MyLoggeriarXcF>[TU]X5 TRS5 g)N initialized)rrr)rFrHrrr6s rJrIModuleLevelMiscTest.test_subclass_logger_cache..MyLogger.__init__bs -}-ror}) rwrxryrzr rrr|r)rr6s@rJrXras$.gnn . .rorXjust_some_loggerrhellorr)r rr[r!r^r6r7r;rDr9r:rr\rqtruncater!rrOrNrY)rFrXrr8rUr6s @rJtest_subclass_logger_cache.ModuleLevelMiscTest.test_subclass_logger_cache]sZ .w--/ . x(""#56 =/2  ! !& )! 3 OOGMM * LL !   V__.446 @ OOA  KKN OOGLL ) LL !   V__. 3   # GGI  " "7>> 2   # GGI  " "7>> 2s!CF77AG>c[R"S5n[SU5up#nUR5nUR SU5 UR SU5 g)Na* import logging class A: def __del__(self): try: raise ValueError("some error") except Exception: logging.exception("exception in __del__") a = A() rJzexception in __del__zValueError: some error)rrrrrrFrSrTrUrVs rJtest_logging_at_shutdown,ModuleLevelMiscTest.test_logging_at_shutdown|sP  (d3 jjl ,c2 .4rocV[RnUR[RU5 [R "SU<S35n[ SU5 [USS9nURUR5R5S5 SSS5 g!,(df  g=f)Na import builtins import logging class A: def __del__(self): logging.error("log in __del__") # basicConfig() opens the file, but logging.shutdown() closes # it at Python exit. When A.__del__() is called, # FileHandler._open() must be called again to re-open the file. logging.basicConfig(filename=z, encoding="utf-8") a = A() # Simulate the Python finalization which removes the builtin # open() function. del builtins.open rJrirzERROR:root:log in __del__) rTESTFNrrurrrrr^rer,)rFrrSfps rJtest_logging_at_shutdown_open1ModuleLevelMiscTest.test_logging_at_shutdown_opens##  (((3 $*+36   & t$ (W -   RWWY--/1L M. - -s "/B B(c[R"S5n[SU5up#nUR5nUR SU5 UR US5 g)Nz import logging def rec(): logging.error("foo") rec() rec() rJz#Cannot recover from stack overflow.rq)rrrrrwr^r$s rJtest_recursion_error(ModuleLevelMiscTest.test_recursion_errorsS  -T48 jjl >D Qroc[R"5nUR[RU5 UR [RU5 [R"5nUR X5 URX5 gr)r getLevelNamesMappingr^r+ assertIsNot)rFmapping new_mappings rJtest_get_level_names_mapping0ModuleLevelMiscTest.test_get_level_names_mappingsf..0 --w7 --w7224  . .ror}r)rwrxryrzr{rrrrrrr rrr!r%r*r-r4r|r}rorJrr sN3I.%0- " # C3>5&N> /rorc\rSrSrSrSr\S Sj5r\S5r Sr Sr \ R"5S 5r\ R"5S 5rS rg) LogRecordTestic[R"05n[U5nURUR S55 URUR S55 g)Nz )r rrrErNr)rFrrls rJ test_str_repLogRecordTest.test_str_repsD  ! !" % F  ^45  3(roc[5n[R"5nURU5 SS0n[R"SU5 UR UR SRU5 URUR SRS5 URU5 UR5 g)Nlessmorezless is %(less)srz less is more) rxr r!rDrrr/rSr^r6rOrN)rFrUrrs rJ test_dict_argLogRecordTest.test_dict_args       Q f *A. aiil''+ 1--~>   roNc[RnU[lSSKnUR5Rn[R "SSU305n[ R"[RSS5 [R "SSU305nSSS5 UURWRS.nU[lU(aURU5 gU$!,(df  NN=f!U[lf=f)Nrrmsg1_rmsg2_) processNamer1.processNamer2.processName) r logMultiprocessingrcurrent_processrHrr swap_itemrsmodulesrDr*) rrGrprev_logMultiprocessingrrHr1r2resultss rJ_extract_logrecord_process_name-LogRecordTest._extract_logrecord_process_names")"<"<%7" A (%%',,D&&se}'=>B""3;;0A4H**EU3%=+ABI)-)+)+G *AG &  IIg NIH*AG &s$AC1<C "C1 C.*C11 C>c&[R"5 S[R;nUR [ R S5 Sn[ R"05nUR URS5 URSU5nUR SUS5 UR SUS5 UR SUS5 SSK nUR"5upgUR"URS X'4S 9nUR5 UR5nURSUS5 UR USUS5 UR SUS5 UR!5 U(aSSK ngg!U(aSSK nff=f) NrT MainProcessrqrDrErFrrr)rrrsrJr^r rGrrDrOrPipeProcessrrassertNotEqualr) rFmultiprocessing_importedLOG_MULTI_PROCESSINGrrNr parent_conn child_connr~s rJtest_multiprocessing"LogRecordTest.test_multiprocessingsr::<#4 #C  '   W77 >#' %%b)A   Q]]M :::1>RSG   ]GM,B C   ]G4D,E F   ]G4D,E F #&5&:&:&< #K'';;-;A GGI!&&(G    w}/E F   W]3W=M5N O   ]G4D,E F FFH(&('&(s E FFcURnURn[R"05nU"UR5 U"UR 5 U"UR 5 U"UR5 U"UR5 [Rn[Rn[Rn[RnS[l S[l S[l S[l [R"05nU"UR5 U"UR 5 U"UR 5 U"UR5 U"UR5 U[l U[l U[l U[l g!U[l U[l U[l U[l f=f)NF) r rr rr threadNameprocessrDtaskName logThreads logProcessesrGlogAsyncioTasks)rFNONENOT_NONEr log_threads log_processeslog_multiprocessinglog_asyncio_taskss rJ test_optionalLogRecordTest.test_optionalsE  ''  ! !" % QZZ(( ,, %88#33 8!&G #(G ).G &&+G #%%b)A N   O    !,G #0G )->s{{IW[-\*.' ;t'8'89:*/' ;t'8'89: .]!  ) )$ / .]-\!!  ) )$ /s;!C,'C AC #C+C, C C C)%C,,Dr}r)rwrxryrzr:r?rKrOrrZrirmrrGrwrzr|r}rorJr7r7sz) 0#'#'J8@ $$& 0' 0 $$& 0' 0ror7c^\rSrSrSrU4SjrU4SjrSrSrSr Sr S r S r S r S rS rSrSrSrSrSrSrSrSrSr\R4"5S5rS SjrSrSrSrSr Sr!Sr"Sr#U=r$$)!BasicConfigTestiUz#Test suite for logging.basicConfig.c|>[[U] 5 [RR Ul[R R5Ul[RSSUl [RRUl URUR5 /[Rlgr)rr}rKr rArBr%r&r'r(r)rr5rcleanuprs rJrKBasicConfigTest.setUpYsy ot*, -- %//446")"6"6q"9&-ll&8&8#  % " roc>[RRSSH2n[RRU5 UR 5 M4 [ [ U]5 gr)r rArBrOrNrr}rV)rFrUrs rJrVBasicConfigTest.tearDownbsF&&q)A LL & &q ) GGI* ot-/roch[[RSUR5 [RR 5 [RR UR5 UR[RSS&[RRUR5 g)NrB) rr rArBr%rPrQr'r)r(r9r5rss rJrBasicConfigTest.cleanuphsp j$--8!  !4!45"&"9"9Q d99:roc[R"5 UR[[RR 5S5 [RR SnUR U[R5 URUR[R5 URnURURR[R5 URUR 5 UR UR[R"5 UR[RR$UR&5 g)Nrqr)r rr^r_rArBrPr;r8rsrrJrMr BASIC_FORMATr rl PercentStylerr5)rFrrJs rJtest_no_kwargsBasicConfigTest.test_no_kwargsos W\\223Q7,,''* gw'<'<= 4%%  ))..0D0DE )++, i..0D0DE ++T-H-HIrocn[R"5n[R"[R SS9 [R "S5 [R RS5 URUR5R5S5 SSS5 g!,(df  g=f)Nrr8r Log an errorrERROR:root:Log an error rrr rrsr rr!r^r\rqrs rJtest_strformatstyle#BasicConfigTest.test_strformatstyleo  $ $ &&   szz = MM. ) JJOOA    V__.446) + ' & & BB&& B4cn[R"5n[R"[R SS9 [R "S5 [R RS5 URUR5R5S5 SSS5 g!,(df  g=f)Nrrrrrrrs rJtest_stringtemplatestyle(BasicConfigTest.test_stringtemplatestylerrcNSn[R"SSS9 UR[[RR 5S5 [RR SnUR U[R5 [R"SSSS9nURURRURR5 URURRURR5 URXUS5 g) NcpUR5 UR5 [R"U5 grrrh2rVs rJr.BasicConfigTest.test_filename..cleanup HHJ HHJ IIbMrotest.logri)rrkrqrrr) r rr^r_rArBrPrr8moderHrrFrrrjs rJ test_filenameBasicConfigTest.test_filenames  Z'B W\\223Q7,,''* gw':':;&&z3I ,,hoo.B.BC ,,hoo.B.BC (J?roc6Sn[R"SSS9 [RRSn[R"SS5nUR UR RUR R5 URXUS5 g)NcpUR5 UR5 [R"U5 grrrs rJr.BasicConfigTest.test_filemode..cleanuprrorwbrfilemoder) r rrArBrr^r8rrrs rJ test_filemodeBasicConfigTest.test_filemodess  Z$?,,''*&&z48 ,,hoo.B.BC (J?roc[R"5nURUR5 [R "US9 UR [[RR5S5 [RRSnURU[R5 UR URU5 g)Nrrqr) r6r7rrNr rr^r_rArBrPr;r8)rFr8rs rJ test_streamBasicConfigTest.test_streams  %6* W\\223Q7,,''* gw'<'<= 0roc[R"SS9 [RRSRnUR UR RS5 g)Nz%(asctime)s - %(message)s)r[r)r rrArBrJr^rMrrFrJs rJ test_formatBasicConfigTest.test_formatsH#>?LL))!,66  ))..0KLroc[R"SS9 [RRSRnUR UR S5 g)Nr)rlr)r rrArBrJr^rlrs rJ test_datefmtBasicConfigTest.test_datefmts@E*LL))!,66  **E2roc[R"SS9 [RRSRnUR UR [R5 g)Nrrr)r rrArBrJrPrMrNrs rJ test_styleBasicConfigTest.test_stylesF#&LL))!,66  i..0K0KLroc[RRnUR[RRU5 [R "SS9 UR [RRS5 [R "SS9 UR [RRS5 g)N9)r:)r rArrr9rr^)rF old_levels rJ test_levelBasicConfigTest.test_levelsyLL&&   --y9"% ++R0"% ++R0rocURn[R"5/n[RnU"[ [R SUS9 U"[ [R SUS9 U"[ [R UUS9 U"[ [R [RS9 [R "SSS9 g)Nr)rr8)rrB)r8rB)loglevelrr)r^r r;rsrrrr)rFr^rBr8s rJtest_incompatible!BasicConfigTest.test_incompatibles(( ))+,Z!4!4z=C EZ!4!4z?G IZ!4!4V?G I Z!4!4w||LTC8rocF[R"5[R"[R5[R"5/n[R"5nUSR U5 [R "US9 URUS[RRS5 URUS[RRS5 URUS[RRS5 URUSR5 URUSR5 URUSRU5 URUSRUSR5 g)Nr)rBrrq) r r;rsr r=r@rrrArBrrJ)rFrBrs rJ test_handlersBasicConfigTest.test_handlerss0  ! ! #  ! !#** -  ! ! #        #X. hqk7<<#8#8#;< hqk7<<#8#8#;< hqk7<<#8#8#;< Xa[223 Xa[223 hqk++Q/ hqk++Xa[-B-BCroc[R"5n[R"5n[R"U5/n[R"U5/n[R"[R US9 [R "S5 [R"S5 [R"S5 UR[[RR5S5 [R"[RUSS9 [R "S5 [R"S5 [R"S5 UR[[RR5S5 URUR5R5S5 URUR5R5S 5 g) NrrIrrrqT)rrBforcezWARNING:root:warnz WARNING:root:warn INFO:root:info)r6r7r r;rrrrrr^r_rArBrr\rq)rF old_string_io new_string_io old_handlers new_handlerss rJ test_forceBasicConfigTest.test_forces;  --m<= --m<= '//LI V g W\\223Q7',,"& ( V g W\\223Q7 //1779, . //1779< >rocSn[R"SUSS[RS9 UR[ [R R 5S5 [R R SnURU[R5 URURU5 [R"S5 UR5 [SSS 9nUR5R5nSSS5 [R "S5 URWS5 g!,(df  N7=f!WR5 [SSS 9nUR5R5nSSS5 O!,(df  O=f[R "S5 URWS5 f=f) Nrirr2 %(message)srrkerrorsr[rrqr.The Øresund Bridge joins Copenhagen to Malmörr rr:r^r_rArBrPrrkrrNrrerqrRrrFrkrrrs rJ test_encodingBasicConfigTest.test_encodingsE OH   h'/'4GMM K   S!6!67 ;ll++A.G  ! !'7+>+> ?   W--x 8 MMJ K MMOj73qvvx~~'4 IIj !   TM O43 MMOj73qvvx~~'433 IIj !   TM O0C E&D66 EG"F  G F 0GcSn[R"SUSS[RS9 UR[ [R R 5S5 [R R SnURU[R5 URURU5 [R"S5 UR5 [SS S 9nUR5R5nSSS5 [R "S5 URWS 5 g!,(df  N7=f!WR5 [SS S 9nUR5R5nSSS5 O!,(df  O=f[R "S5 URWS 5 f=f) Nrkrignorerrrqrrrirz*The resund Bridge joins Copenhagen to Malmrrs rJtest_encoding_errors$BasicConfigTest.test_encoding_errors"s? QH   h'/'4GMM K   S!6!67 ;ll++A.G  ! !'7+>+> ?   W--x 8 MMJ K MMOj73qvvx~~'4 IIj !   T#O P43 MMOj73qvvx~~'433 IIj !   T#O PrcSn[R"SUS[RS9 UR[ [R R 5S5 [R R SnURU[R5 URURU5 URURS5 [R"S5 UR5 [SS S 9nUR5R5nSSS5 [ R""S5 URWS 5 g!,(df  N7=f!WR5 [SS S 9nUR5R5nSSS5 O!,(df  O=f[ R""S5 URWS 5 f=f) Nrkrr)rrkr[rrqrbackslashreplaceu<😂: ☃️: The Øresund Bridge joins Copenhagen to MalmörirzL\U0001f602: \u2603\ufe0f: The \xd8resund Bridge joins Copenhagen to Malm\xf6)r rr:r^r_rArBrPrrkrrrNrrerqrRrrs rJtest_encoding_errors_default,BasicConfigTest.test_encoding_errors_default5s] KH   h'4GMM K   S!6!67 ;ll++A.G  ! !'7+>+> ?   W--x 8   W^^-? @ MMX Y MMOj73qvvx~~'4 IIj !   T$J K43 MMOj73qvvx~~'433 IIj !   T$J Ks0C%E"E E"G=F% G% F3 /0Gc.^Sn[R"SUSS[RS9 UR[ [R R 5S5 [R R SnURU[R5 URURU5 URUR5 /mU4SjnX2l [R"S5 URT5 URS TS5 UR!5 [#SS S 9nUR%5R'5nSSS5 [(R*"S5 URWS 5 g!,(df  N7=f!WR!5 [#SS S 9nUR%5R'5nSSS5 O!,(df  O=f[(R*"S5 URWS 5 f=f) Nrkrrrrqrc`>TR[[R"555 gr)rrrsr)rr6s rJdummy_handle_errorEBasicConfigTest.test_encoding_errors_none..dummy_handle_errorYss3==?34rorz:'ascii' codec can't encode character '\xd8' in position 4:rirr)r rr:r^r_rArBrPrrkr rrrrErrNrrerqrRr)rFrkrrrrr6s @rJtest_encoding_errors_none)BasicConfigTest.test_encoding_errors_noneIs (H   h'+'4GMM K   S!6!67 ;ll++A.G  ! !'7+>+> ?   W--x 8   gnn -G 5#5  MMJ K OOG $ MM=>Eaj J MMOj73qvvx~~'4 IIj !   T3 ' 43 MMOj73qvvx~~'433 IIj !   T3 's0DF6F FH2G H G( $0HcSnSn[SS5nUR[RU5 Sn[R "USU[R SS9 UR[[RR5S5 [RRS nURU[R5 [R"S S 9nS [lUR!U"55 SSS5 [#USS 9nUR%5R'5nSSS5 UR)WS 5 [R*"S5 U(aUR-5 gg!,(df  N=f!,(df  N`=f![R*"S5 U(aUR-5 ff=f)Nc8# [R"S5 g7f)Nz hello world)r rr}rorJr5BasicConfigTest.test_log_taskName..log_recordks OOM *srztest-logging-taskname-rir2z%(taskName)s - %(message)s)rrrkrr[rqrTr(rzTask-\d+ - hello world)rWrrRrr rrr^r_rArBrPrrprqrbrrrrerq assertRegexrsrN)rFrr log_filenamerkrvrrs rJtest_log_taskName!BasicConfigTest.test_log_taskNameisS +%f.FG   <0 H   h)1'C E   S!6!67 ;ll++A.G  ! !'7+>+> ?d+v*.' :<(,lW5vvx~~'6   T#< =  ) )$ / ,+65  ) )$ / s<B,F"E;FF 2F; F F FF0G c^^^/m[RmUUU4Sjn[R"T[SU5 [ [U5nUb U"US5 OU"S5 TR TS04/5 g)Nc>T"5 [RRn[RRS5 TR [RRU5 TR X45 g)Nd)r rArr9rr)rrrrold_basic_configrFs rJmy_basic_config2BasicConfigTest._test_log..my_basic_configsP   **I LL ! !# & OOGLL119 = MM1' "rorztest mer})r rrrr0r^)rFrrrrrrs` @@rJrBasicConfigTest._test_logsi".. #  dG]ODWf-   ui ( y ! 2r(,rocDURS[R5 gr)rr rrss rJrBasicConfigTest.test_logs ugoo.roc&URS5 grrrss rJrBasicConfigTest.test_debugrroc&URS5 grrrss rJrBasicConfigTest.test_inforroc&URS5 grrrss rJrBasicConfigTest.test_warningrroc&URS5 gr rrss rJr BasicConfigTest.test_errorrroc&URS5 grrrss rJrBasicConfigTest.test_criticalrro)rBr5r)r'r)%rwrxryrzr{rKrVrrrrrrrrrrrrrrrrrrrrGrrrrrrr rr|rrs@rJr}r}Us-#0 ;J(++@$ @1M 3 M 1 9D">*O(Q&K((@ $$& ' :-./ " ##ror}cv^\rSrSrU4SjrSrSrSrSrSr Sr S r S r S r S rS rSrSrSrU=r$)LoggerAdapterTesticB>^[[U] 5 [RSSm[ 5Ul[RUlURRUR 5 URURRUR 5 URUR R5 U4SjnURU5 UR[R5 [R"URSS9Ulg)Nc,>T[RSS&gr)r r()old_handler_listsrJr(LoggerAdapterTest.setUp..cleanups&6G  #rorrT)rrrKr r(rxrrArrDrrOrNrDradapter)rFrr rs @rJrKLoggerAdapterTest.setUps ,."//2)+ll  t~~.  114>>B ,,- 7   ((),,DKKtL rocdSnSnSS- UR [ URR 5S5 URR SnUR UR[R5 UR URU5 UR URUR45 UR URURX"R45 g![a2nUnURRXR5 SnAGNSnAff=fNztesting exception: %rrqr)rr rrr^r_r/rr rrrSrSr __traceback__rFrrrers rJtest_exception LoggerAdapterTest.test_exceptions% 8 E T^^334a8''* 7 S) t~~&78 --.?.?@ B! 8C LL " "3 7 7 8C33 D/='D**D/cjSS- URRSWS9 UR[ UR R 5S5 UR R SnURURURX"R45 g![a nUnSnANSnAff=f)Nrqrz exc_info testr) rr rr^r_rr/rSrr )rFrerrs rJtest_exception_excinfo(LoggerAdapterTest.test_exception_excinfos  E = T^^334a8''* --.?.?@ B! C sB B2&B--B2cSnURRXR5 UR[ URR 5S5 URR SnURUR [R5 URURU5 URURUR45 URURS5 g)Nzcritical test! %rrqrr) r r5rr^r_r/rr rrrSr)rFrrs rJrLoggerAdapterTest.test_criticals! c>>2 T^^334a8''* )9)9: S) t~~&78 /:rocbURRRRnSURRRlUR [ URRRSU5 UR URRS55 g)N!rRrt)r rr"rRrrrz isEnabledForrFrs rJtest_is_enabled_for%LoggerAdapterTest.test_is_enabled_forswll))1199 .0 ##+ !4!4!G,,c>>B T^^334a8''* )9)9: '>se%DE t~~&78 -8&..  goo|4 dkk))<8x  3&2 # MM/11< @ MM'//< 8 MM$++--| <&2 # o--|< goo|4 dkk))<8'3 #s #A$I,,I4cURRn[UR5nUR SS5 UR [ USR5S5 UR USRS5 UR[RSS5 UR [ USR5S5 UR USRS5 g)N Hello, {}!worldrmz Hello, world!test_styled_adapter Goodbye {}.zGoodbye world.) rr/ StyleAdapterrrr^rrrrr r)rFr/r s rJr& %LoggerAdapterTest.test_styled_adapters..((t{{+ g. WR[__-? --/DE GOO]G< WR[__-/?@ --/DErocURRn[UR5nSUl[ U5nUR SS5 UR[USR5S5 URUSRS5 UR[RSS5 UR[USR5S5 URUSRS5 g) Nz{}r$ r% rmz{} Hello, world!test_nested_styled_adapterr' z{} Goodbye world.)rr/r rrr( rr^rrrrr r)rFr/r adapter2s rJr+ ,LoggerAdapterTest.test_nested_styled_adapter#s..(( ,(w/ WR[__-/AB --/KL W__mW= WR[__-/BC --/KLroc^^^^SmURRmUU4SjmU4SjmU4SjnURRnU"5 UR USR S5 USR nTS- mU"5 UR USR S5 URUSR U5 USR nTS- mU"5 UR USR S5 URUSR U5 USR nTS- mU"5 UR USR S 5 URUSR U5 g) Nrqc>T"STS9 gNrE stacklevelr} the_leveltriggersrJ innermostELoggerAdapterTest.test_find_caller_with_stacklevel..innermost3 Fy 1roc>T"5 grr}r6 srJrALoggerAdapterTest.test_find_caller_with_stacklevel..inner6 Kroc>T"5 grr}rsrJouterALoggerAdapterTest.test_find_caller_with_stacklevel..outer9 Grormr6 rr? test_find_caller_with_stacklevel)r rrr/r^rrr)rFr? r/rrr6 r4 r5 s @@@@rJrB 2LoggerAdapterTest.test_find_caller_with_stacklevel/sJ ,,&& 2  ..((  --{;##Q   --w7 72;--v6##Q   --w7 72;--v6##Q   --/QR 72;--v6roc[R"URSS0S9UlURR S5 UR [ URR5S5 URRSnUR[US55 UR URS5 g)Nrrr zfoo should be hererqr r rrr r5r^r_rr/rErrrs rJtest_extra_in_records'LoggerAdapterTest.test_extra_in_recordsOs,,DKK493<A  23 T^^334a8''* ./ S)rocURRSSS0S9 UR[URR 5S5 URR SnUR [US55 g)Nzfoo should NOT be herernoperTrqr)r r5r^r_rr/rzrrs rJ test_extra_not_merged_by_default2LoggerAdapterTest.test_extra_not_merged_by_defaultYsf 6ufoN T^^334a8''* /0roc[R"URSS0SS9UlURR SSS0S9 UR [ URR5S 5 URRS nUR[US55 UR[US55 UR URS5 UR URS5 g) NrrTrrT merge_extrazfoo and bar should be hererrrJ rqr) r rrr r5r^r_rr/rErrrrs rJtest_extra_merged#LoggerAdapterTest.test_extra_merged_s,,DKK493<9=?  :5#,O T^^334a8''* ./ ./ S) S)roc[R"URSS0SS9UlURR SSS0S9 UR [ URR5S5 URRS nUR[US55 UR URS5 g) NrrTrN zfoo shall be minrrJ rqrrE rs rJ)test_extra_merged_log_call_has_precedence;LoggerAdapterTest.test_extra_merged_log_call_has_precedencels,,DKK493<9=?  0 E T^^334a8''* ./ S)ro)r rr)rwrxryrzrKr r rr r r r& r+ rB rF rK rP rS r|rrs@rJrrsTM"B" B ;8598 F M7@*1 * * *rorc\rSrSrSrSrSrg)r ixAdapterc(URSU3U4$rr)rFrrTs rJr^PrefixAdapter.process{s++au%v--ror}N)rwrxryrzrr^r|r}rorJr r xs F.ror c \rSrSrSrSrSrg)MessageicXlX lgr)rYrS)rFrYrSs rJrMessage.__init__s  rocHURR"UR6$r)rYr[rSrss rJ__str__Message.__str__sxx **ro)rSrYN)rwrxryrzrr_ r|r}rorJr[ r[ s +ror[ c"\rSrSrSS.SjrSrg)r( irqr1 cURU5(aBURX%5up%URR"U[ X$540UDSUS-0D6 gg)Nr2 rq)r r^rrr[ )rFrrr2 rSrTs rJrStyleAdapter.logsT   U # #,,s3KC KKOOE73#5 5 5'1!| 5 $ror}N)rwrxryrzrr|r}rorJr( r( s3455ror( c^\rSrSrU4SjrSrSrSrSrSr Sr S r S r S r S rS rSrSrSrSrSrSrU=r$) LoggerTestic>[[U] 5 [5Ul[ R "SS9UlURRUR5 URURRUR5 URURR5 UR[ R5 g)NblahrH) rre rKrxrr rYrrDrrOrNrDrs rJrKLoggerTest.setUps j$%')+nn&1  t~~.  114>>B ,,- (()rocUR[SURRS5 UR[SURRS5 g)Nz,Level not an integer or a valid string: Nonez.Level not an integer or a valid string: (0, 0))rr)rrZrr9rss rJtest_set_invalid_level!LoggerTest.test_set_invalid_levelsJ !! E KK $ ( !! G KK & *rocdSnSnSS- UR [ URR 5S5 URR SnUR UR[R5 UR URU5 UR URUR45 UR URURX"R45 g![a2nUnURRXR5 SnAGNSnAff=fr )rrrrr^r_r/rr rrrSrSrr r s rJr LoggerTest.test_exceptions% 7 E T^^334a8''* 7 S) t~~&78 --.?.?@ B! 7C KK ! !#~~ 6 6 7r c[R"[SS5 UR[UR R SS5 SSS5 g!,(df  g=f)NrTr test message)r swap_attrr r^rZrrrss rJ!test_log_invalid_level_with_raise,LoggerTest.test_log_invalid_level_with_raises>   w(94 @   i$ OA @ @s -A A!c[R"[SS5 URR SS5 SSS5 g!,(df  g=f)NrFrrp )rrq r rrrss rJtest_log_invalid_level_no_raise*LoggerTest.test_log_invalid_level_no_raises4   w(95 A KKOOD. 1B A As A Ac^/m[R"U[RSU4Sj5 URR SS9 UR [T5S5 UR STS5 g)N print_stackcB>TRUR55$r)rr\)rrrs rJr=LoggerTest.test_find_caller_with_stack_info..sfmmDMMO&DroTrrqrwr)rrr tracebackr findCallerr^r_)rFrs @rJ test_find_caller_with_stack_info+LoggerTest.test_find_caller_with_stack_infosd dG--}D F $/ Va( ;VAYGroc^^^^SmURRmUU4SjmU4SjmU4SjnURRnU"5 UR USR S5 USR nTS- mU"5 UR USR S5 URUSR U5 USR nTS- mU"5 UR USR S5 URUSR U5 USR n[R"5nURUR5 [RmU"5 UR USR S5 URUR5 URRmTS- mU"5 UR USR S 5 URUSR U5 g) Nrqc>T"STS9 gr0 r}r3 srJr6 >LoggerTest.test_find_caller_with_stacklevel..innermostr8 roc>T"5 grr}r: srJr:LoggerTest.test_find_caller_with_stacklevel..innerr< roc>T"5 grr}r> srJr? :LoggerTest.test_find_caller_with_stacklevel..outerrA rormr6 rr? rB ) rrrr/r^rrrr r!rDrO) rFr? r/rr3rr6 r4 r5 s @@@@rJrB +LoggerTest.test_find_caller_with_stacklevels ++%% 2  ..((  --{;##Q   --w7 72;--v6##Q   --w7 72;--v6##'') t~~.//  --w7!!$..1++%%Q   --/QR 72;--v6rocSnSnS=n=n=n=n=n=p[R"XX4XVXxU 5 n S[U RR 55-H4n U S0n UR [ URRXX4XVUXS9 M6 g)N my record )r6r. some valuerTsinfo) r _logRecordFactoryrc__dict__keysr^rr makeRecord) rFrHrrVlnorrSrSrr rvrrTs rJ%test_make_record_with_extra_overwrite0LoggerTest.test_make_record_with_extra_overwrites:>>>S>3>>>4  & &tBS'/u>*E"++2B2B2D,EEC,'E   h (>(> s($)  8Froc SnSnS=n=n=n=n=n=pSS0n URRXX4XVXzU S9 n URSU R5 g)Nr r valid_keyr r )rr rr ) rFrHrrVr rrSrSrr rTrKs rJ(test_make_record_with_extra_no_overwrite3LoggerTest.test_make_record_with_extra_no_overwritesn:>>>S>3>>>4l+''Rc(0U(L k6??3rocURURR55 URRHnURR U5 M UR URR55 gr)rErrArBrOrzr"s rJr LoggerTest.test_has_handlerss\  //12{{++G KK % %g ., 0023roc|[R"S5nSUlURUR 55 g)Nz blah.childF)r r!rrzrA)rF child_loggers rJtest_has_handlers_no_propagate)LoggerTest.test_has_handlers_no_propagate s1((6 !&  1134roc&URRRnSURRlUR[URRSU5 UR URR S55 g)NrR)rr"rRrrrzr r s rJr LoggerTest.test_is_enabled_forsbkk))11 &( # !4!4iM 11"56rocURRnURRRnSURlSURRlUR [ URSU5 UR [ URRSU5 UR URRS55 g)NTr rrRr )rrr"rRrrrzr )rF old_disabledrs rJ#test_is_enabled_for_disabled_logger.LoggerTest.test_is_enabled_for_disabled_loggers{{++ kk))11 # &( # j,G !4!4iM 11"56roc[R"5nURU[R5 URU[R"S55 URU[R"S55 URU[R"S55 URU[R"S5R5 URU[R"S5R5 URU[R"S5R5 UR U[R"S55 UR U[R"S5R5 g)NrrArru)r r!rrArr1)rFrAs rJtest_root_logger_aliases#LoggerTest.test_root_logger_aliases!s  " dGLL) dG--d34 dG--b12 dG--f56 dG--e499: dG--i8==> dG--e4;;< w0067 w00;BBCrocUR[[R[5 UR[[RS5 g)Nsfoo)r^rZr r!anyrss rJtest_invalid_namesLoggerTest.test_invalid_names.s2 )W%6%6< )W%6%6?roc[[RS-5H_nSHVn[R"U5n[R "X15n[R "U5nURXS5 MX Ma g)Nrq)rrArruzbaz.bar)rrHIGHEST_PROTOCOLr r!r5rr)rFprotorHrrl unpickleds rJ test_picklingLoggerTest.test_pickling2s^622Q67EA **40LL/"LLO  i0 B8roct URn[R"S5n[R"S5nUR[R5 UR UR 5[R5 UR UR05 URUR[R55 URUR[R55 UR UR[RS[RS05 UR UR05 URUR[R55 UR UR05 URUR[R55 UR UR[RS05 UR[R5 UR UR 5[R5 UR UR05 URUR[R55 UR[R5 UR UR 5[R5 UR UR05 UR UR05 UR UR05 URUR[R55 URUR[R55 URUR[R55 URUR[R55 URUR[R55 [R"5 UR UR 5[R5 UR UR05 UR UR05 UR UR05 URUR[R55 URUR[R55 URUR[R55 g)NrgrkTF)r3r r!r9rr^r4_cacherEr rzr:rrrR)rFrAr1r2s rJ test_cachingLoggerTest.test_caching:sz##E*##I. gmm$ 224gmmD , ,,W]];< --gmm<= '--w}}e)TU b) ,,W]];< b) ))'--89 w}}d&;< ))* 224g6F6FG , --gmm<= ( 224g6F6FG , , b) --gmm<= ,,W-=-=>? --gmm<= ,,W-=-=>? ))'--89  224g6F6FG , , b) --g.>.>?@ --g.>.>?@ **7+;+;<=ro)rr)rwrxryrzrKrk r rr ru r} rB r r r r r r r r r r r|rrs@rJre re sc**B"P2H%7N 8445 7 7 D@16>6>rore c0\rSrSrSrSrSrSrSrSr g) BaseFileTestisz1Base class for handler tests that write log filesc^[RU5 [SS5Ul/Ulg)Nrztest_logging-2-)rrKrWrVrmfilesrss rJrKBaseFileTest.setUpvs$t ):; rocURHn[R"U5 M [RR UR 5(a [R"UR 5 [ RU5 gr)r rRrur{r|rVrrV)rFrVs rJrVBaseFileTest.tearDown{sP,,B IIbM 77>>$'' " " IIdgg $rocUR[RRU5SU-S9 URR U5 g)z7Assert a log file is there and register it for deletionzLog file %r does not existrN)rErRr{r|r r)rFrs rJ assertLogFileBaseFileTest.assertLogFiles= x088C  E H%roc t[R"S[RSSUR5SSS5$)Nrr~rq)r r r:rtrss rJnext_recBaseFileTest.next_recs5  gmmS!!%!2!2!4dD$H Hro)rVr N) rwrxryrzr{rKrVr r r|r}rorJr r ss7  & Hror c \rSrSrSrSrSrg)FileHandlerTestic:[R"UR5 [R"URSSS9nUR UR 5 UR[RRUR55 UR[R"055 URUR 5 URRUR55 UR5 g)NriTrj)rRrurVr rr r8rzr{r|ryrrrErN)rFfhs rJ test_delayFileHandlerTest.test_delays $''  7$ G "))$ 01 '''+, RYY' tww/0  roc$[R"UR5 [R"URSSS9nUR [R "S55 URUR55 UR5 URUR55 [UR5nURUR5R5S5 SSS5 g!,(df  g=f)Nrir)rkrrr)rRrurVr rr@r=r`r rNrr^rerq)rFr r)s rJ%test_emit_after_closing_in_write_mode5FileHandlerTest.test_emit_after_closing_in_write_modes $''  7 E ))-89        $'']b   RWWY__. 4]]s /D Dr}N)rwrxryrzr r r|r}rorJr r s  5ror c\rSrSrSr\R "\RS5S5r Sr Sr SSjr Sr S rS r\R "5S 5rS rg )RotatingFileHandlerTestic[RRURSSS9nUR UR S55 UR 5 [RRURSSS9nUR UR S55 UR 5 [URS5nURS5 SSS5 [RRURSSS9nUR UR S55 UR 5 g!,(df  Nh=f)NrirqrkmaxBytesrr ) r rBrrVrzshouldRolloverrNrr)rFrhrs rJtest_should_not_rollover0RotatingFileHandlerTest.test_should_not_rollovers    1 1 GGg23 **401     1 1'A27 **401  $''4 A GGEN!    1 1'A27 **401  ! s D== E WASI does not have /dev/null.c[RR[RSSS9nUR UR UR555 UR5 g)Nrirqr ) r rBrrRdevnullrzr r rNrFr s rJ!test_should_not_rollover_non_file9RotatingFileHandlerTest.test_should_not_rollover_non_filesR    1 1 Wq2: **4==?;<  rocT[URS5nURS5 SSS5 [RR URSSS9nUR URUR555 UR5 g!,(df  Nv=f)Nrr rirr ) rrVrr rBrrEr r rN)rFrr s rJtest_should_rollover,RotatingFileHandlerTest.test_should_rolloverss $''4 A GGEN!    1 1$''GVW 1 X ))$--/:;  ! s B B'c([R"UR5 [RR URSS9nUR UR55 URUR5 UR5 g)Nrir) rRrurVr rBrr`r r rNr s rJtest_file_created)RotatingFileHandlerTest.test_file_createds` $''    1 1$''G 1 L    477#  rocJU(aSU0O0n[R"UR5 [RR "UR4SSSS.UD6nUR [RRUR5U(+5 [R"SS05n[R"SS05nURURU55 URURU55 URU5 URUR5 UR[RRURS -55 URURU55 URURU55 URU5 UR[RRUR55 URURS -5 UR[RRURS -55 URURU55 URURU55 UR5 g) Nrlrirrrk backupCountr rrdbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb.1.2)rRrurVr rBrrr{r|rrzr r`r rErN)rFrlrTr smalllarges rJtest_max_bytes&RotatingFileHandlerTest.test_max_bytess%*'5! $''    1 1 GGN%1sNFLN bggnnTWW-5y9%%ucl3%%ug&67 **512 **512  477# $78 **512 ))%01  tww/0 477T>* $78 ))%01 ))%01  roc"URSS9 g)NT)rl)r rss rJtest_max_bytes_delay,RotatingFileHandlerTest.test_max_bytes_delays $'rocPSn[RRURSSSS9nXlUR UR 55 URUR5 UR[RRU"URS-555 UR UR 55 URU"URS-55 UR[RRU"URS-555 UR UR 55 URU"URS-55 UR[RRU"URS-555 UR UR 55 UR[RRU"URS-555 UR5 g) Nc US-$N.testr}rh s rJnamer>RotatingFileHandlerTest.test_rollover_filenames..namers '> !rorirrqr r r .3) r rBrrVr r`r r rzrRr{r|rN)rFr r s rJtest_rollover_filenames/RotatingFileHandlerTest.test_rollover_filenamessn "    1 1 GGg1q2B    477# dggn(=>?    5401 dggn(=>?    5401 dggn(=>?    dggn(=>?  roc"SS[RR5nU"URSSSS9nUR UR UR5URS-5 UR UR55 URUR5 UR UR55 URUR URS-5S -5 UR[RRUR URS-555 UR5 g) Nc \rSrSrSrSrSrg)ZRotatingFileHandlerTest.test_namer_rotator_inheritance..HandlerWithNamerAndRotatoric US-$r r})rFrHs rJr `RotatingFileHandlerTest.test_namer_rotator_inheritance..HandlerWithNamerAndRotator.namers g~%roc[RRU5(a[R"XS-5 gg)N.rotated)rRr{r|r?)rFsourcedests rJrotatorbRotatingFileHandlerTest.test_namer_rotator_inheritance..HandlerWithNamerAndRotator.rotators+77>>&))JJvj'89*ror}N)rwrxryrzr r r|r}rorJHandlerWithNamerAndRotatorr s  & :ror rirrqr r r r )r rBrrVr^r r`r r rzrRr{r|rN)rFr r s rJtest_namer_rotator_inheritance6RotatingFileHandlerTest.test_namer_rotator_inheritances :)9)9)M)M :( GGg1qB $''*DGGg,=>    477#    288DGGdN3j@A 4(@AB  rocSnSn[RRURSSSS9nX#lXlUR 5nURU5 URUR5 UR 5nURU5 U"URS-5nURU5 [Rn[US5nUR5n [R"U 5n URU R!S 5UR"U-5 SSS5 URUR 55 U"URS -5nURU5 [US5nUR5n [R"U 5n URU R!S 5UR"U-5 SSS5 URUR 55 U"URS -5n[US5nUR5n [R"U 5n URU R!S 5UR"U-5 SSS5 UR%[R&R)U"URS -555 UR+5 g!,(df  GN=f!,(df  GN=f!,(df  N=f) Nc US-$)Nz.gzr}rh s rJr 3RotatingFileHandlerTest.test_rotator..namers %< roc8[US5nUR5n[R"US5n[US5nUR U5 SSS5 SSS5 [ R "U5 g!,(df  N-=f!,(df  N6=f)Nrbrr)rrezlibcompressrrRr)r r sfr compresseddfs rJr 5RotatingFileHandlerTest.test_rotator..rotatorskfd#rwwy!]]43 $%HHZ(&$ IIf &%$#s#4B A:B : B B  Brirrqr r r rkr r )r rBrrVr r r r`r rRlineseprrer decompressr^rrrzr{r|rN) rFr r r m1m2rVnewlinerr rs rJ test_rotator$RotatingFileHandlerTest.test_rotators.     1 1 GGg1q2B  ]]_   477# ]]_  477T> " 2** "d^qJ??:.D   T[[1266G3C D   477T> " 2 "d^qJ??:.D   T[[1266G3C D   477T> " "d^qJ??:.D   T[[1266G3C D dggn(=>?  %^^ ^s'AK AK('AK: K%( K7: Lr}NF)rwrxryrzr rrris_wasir r r r r r r requires_zlibr r|r}rorJr r sg(__W__&EFG.(&& **ror cN\rSrSr\R "\RS5S5rSr SSjr Sr Sr Sr S rS rS r\R""S 5S 5r\R""S 5S5r\R""S 5S5r\R""S 5S5rSrg)TimedRotatingFileHandlerTesti>r c[RR[RSSSS9n[ R "S5 [R"SS05nURURU55 UR5 g)NSrirqrkr 皙?rztesting - device file) r rBrrRr rrrrzr rN)rFr rs rJr 5TimedRotatingFileHandlerTest.test_should_not_rollover?sp   6 6 C'q7B 3  ! !5*A"B C **1-.  roc[RRURSSSS9n[R"S5nUR U5 [R "SS05nURU5 URUR5 [R"S5 [R "SS 05nURU5 UR5 S n[RR5nS n[U5H{nU[R"US 9- n URU R!S 5-n ["R$R'U 5nU(dM`UR(R+U 5 O SU-n U(Gd["R$R-UR5up["R."U 5V s/sHoR1U 5(dMU PM nn [3SUR!S5-[4R6S9 [3SU-[4R6S9 UH^n [3SU -5 ["R$R9X5n[;US5n[3UR=55 SSS5 M` UR?X[S9 gs sn f!,(df  M=f)Nr" rirqr# r#rztesting - initialr$ ztesting - after delayFi,secondsz.%Y-%m-%d_%H-%M-%Sz,No rotated files found, went back %d secondsz Test time: %sz%Y-%m-%d %H-%M-%SrzThe only matching files are: %szContents of %s:rr ) r rBrrVr=r@rr`r rrrNr$rr timedeltastrftimerRr{r|r rrlistdirrNrrsrrrrerE)rFr rYrLrMfoundrGO_BACKsecsprevrVrdnrfilesr{tfs rJ test_rollover*TimedRotatingFileHandlerTest.test_rolloverJs    6 6wA7? 9:   " "E+>#? @   477# 3  " "E+B#C D    ##%'ND++D99D4==)=>>BGGNN2&Eu ##B' #=wFWW]]477+FB " 2C1,,r2BQEC /CLL1D$EECJJ W 3e;#** M'!+,ww||B*$_"'')$%_ 'D %_s!J?>J? K K cH[R"UR5 [RR 5nUR 5nSUR S- s=:aS:dYO [ R"SUR S- - S-5 [RR 5nUR 5nURSS9n[R"S5nU(aSUR53OS n[S 5Hyn[RRURS XSS 9nURU5 [R "S SU305nUR#U5 UR%5 M{ UR'UR5 [)URS S9n [+U 5HupjUR-SU3U 5 M SSS5 [.R0"URUR35S- 4S-5 [S5Hyn[RRURS XSS 9nURU5 [R "S SU305nUR#U5 UR%5 M{ U[R4"U(aSOSS9- n URSU S3n UR'U 5 [)URS S9n [+U 5HupjUR-SU3U 5 M SSS5 [)U S S9n [+U 5HupjUR-SU3U 5 M SSS5 g!,(df  GN=f!,(df  N]=f!,(df  g=f)Ng?rNg?g?r) microsecondr#WMIDNIGHTrnri)rkwhenatTimerz testing1 rrqrz testing2 rOdaysrz%Y-%m-%d)rrurVr$rrr7 rr?r r=weekdayrrBrr@rr`rNr r enumeraterrRutime timestampr* ) rFweeklyrr; rYr: rr rMrrW rolloverDateotherfns rJtest_rollover_at_midnight6TimedRotatingFileHandlerTest.test_rollover_at_midnightts!##%V''+1c1 JJf0044; <##'')CXXZFA. 9:&,3;;=/"*qA!!::';EB OOC &&1#'?@B GGBK HHJ  477# $''G ,$Q< !ot4(- 3==?Q.023qA!!::';EB OOC &&1#'?@B GGBK HHJ X//&QaHH WWIQ|H56 7# $''G ,$Q< !ot4(-'G ,$Q< !ot4(- ,%- ,- ,- ,s$:*M0*N=*N0 M? N N!c"URSS9 g)NT)rB )rE rss rJtest_rollover_at_weekday5TimedRotatingFileHandlerTest.test_rollover_at_weekdays &&d&3roc BURnU"[[RRUR SSSS9 U"[[RRUR SSSS9 U"[[RRUR SSSS9 g)NXriTrjr8 W7)r^rr rBrrV)rFr^s rJ test_invalid)TimedRotatingFileHandlerTest.test_invalids(( Z!1!1!J!JWWcG4 AZ!1!1!J!JWWcG4 AZ!1!1!J!JWWdWD BrocSn[RRURSSSSS9nUR U5nUR X1S-5 UR US-S- 5nUR X1S-5 UR US-5nUR X1S-5 UR US -5nUR X1S-5 UR 5 [R"S SS5n[RRURSSSUS9nUR U5nUR X1S -5 UR US -S- 5nUR X1S -5 UR US -5nUR X1S -5 UR US -5nUR X1S -5 UR 5 g!UR 5 f=f!UR 5 f=f)Nrrir9 Trkr: r%r; Qrqii_ i@ж) r rBrrVcomputeRolloverr^rNr$r)rF currentTimer rir; s rJ"test_compute_rollover_daily_attime?TimedRotatingFileHandlerTest.test_compute_rollover_daily_attimes    6 6 GGgJT7# '' 4F   V<%? @'' l(BQ(FGF   V<%? @'' l(BCF   V<%? @'' l(BCF   V<%? @ HHJr1a(    6 6 GGgJV7% '' 4F   V<%? @'' l(BQ(FGF   V<%? @'' l(BCF   V<%? @'' l(BCF   V<%? @ HHJ' HHJ& HHJsB G#B G)G&)G;c [[R"55nXS-- n[R"SSS5n[R"U5Rn[ S5GHn[ RRURSSU-SSSUS 9nXE:a SU- U-nOXT- nUS-nUS - nXr- nURU5nX:wa2[S [R-5 [S [5-5 URX5 URUS -S- 5nX:wa2[S [R-5 [S [5-5 URX5 XT:XaUS - nURUS -5nX:wa2[S [R-5 [S [5-5 URX5 URUS-5nX:wa2[S [R-5 [S [5-5 URX5 UR5 GM g!UR5 f=f)NrQ rR rrOrizW%drqT)rkr: intervalr r%r; rS zfailed in timezone: %dzlocal vars: %si: rT )rrr$r+tm_wdayrr rBrrVrU rtimezonelocalsr^rN) rFrV todayr; wdaydayr rjris rJ#test_compute_rollover_weekly_attime@TimedRotatingFileHandlerTest.test_compute_rollover_weekly_attimes$))+& E11r1a({{5!))8C!!::' aUV;)B) :!"D3H # HL(L(!++E2%2T]]BC*VX56  2++EL,@1,DE%2T]]BC*VX56  2; 00H++EL,@A%2T]]BC*VX56  2++EL,@A%2T]]BC*VX56  2 [Z s FII c [R"SS9nUR[RU5 /n[ R R 5n[S5H:nURURS55 U[ R"SS9- nM< Sn/n/nUGHn[RRUSU-5n [RR!U S SS S S 9n URU 5 UR#S 5(a#UHn URU<SU <35 M MUR#S5(a-Sn XlUHn URU<SU <S35 M MUS:XdMSn XlUHn URSU -5 M GM UH8n [RRX5n ['U S5nSSS5 M: [)U5GHupHXtn U R+5nUR-[/U5SU5 UR#S 5(aRSU-n UHEn[RR1U5unn UR3U R#U 55 MG MUR#S5(aUHn[RR1U5unn UR3U R5S5U 5 UR3U R#US-5=(a U [/U5S-R755 M GMLUS:XdGMUUHn[RR1U5unn UR3U R5S55 UR3U R#S5=(a U SR755 M GM g!,(df  GM7=f)NrjrX r%Y-%m-%d_%H-%M-%Srr' )a.bza.b.cd.ezd.e.fruz%s.logrlrOTr: rZ r rlre z.log.rf c[RRU5upURSS5S-n[RR X5$)Nrr)rRr{rr?rrrbasenames rJr HTimedRotatingFileHandlerTest.test_compute_files_to_delete..namer!sA(* h(?%G'//;fDH77<<::rorrruc[RRU5upSUSS-S-n[RRX5$)NrurL.oldlog)rRr{rrri s rJr rk )s?(* h(?%G"Xab\1I=H77<<::roz g%s.oldlogrrnz%s.log.rrm rq)rPmkdtemprshutilrmtreer$rrrr+ r* rRr{rr rBrrNr rr? getFilesToDeleter^r_rrErisdigit)rFwdtimesrrprefixesr2 rotatorsrr~r r,r rVr candidatesrprs rJtest_compute_files_to_delete9TimedRotatingFileHandlerTest.test_compute_files_to_delete s$   _ 5  r*    " " $rA LL%89 : ($$Q/ /B9F RF!23A&&??IJLMFJ@LG OOG $  ''ALL!:;""5));!& ALL!:;3;!& ALL!1216B R$Aa! #8,IAkG 113J   S_a <  ''&#AGGMM!,EArOOBMM!$45$""5))#AGGMM!,EArOOBKK$7<OOBMM&3,$?%B$&s6{Q$7$?$?$AC$ 3#AGGMM!,EArOOBKK $:;OOBMM#$6$J2a5==?K$!-s O O' c f[R"[R"SS95nUR [ R U5 /n[RR5nSn[U5H:nURURS55 U[R"SS9- nM< Sn/n/n[U5H_upU S-n [RR!X- S SU S S 9n URU 5 UHn URU <S U <35 M Ma UHn URS U -5 M UHnX- R#5 M [U5HupU S-n Xn U R%5nUR'[)U5XK- U5 [*R,"S5nUHkn[.R0R3U5unnUR5UR7U S -55 U[)U 5S-SnUR9UU5 Mm M g)NrjrX rrd rr' )za.logza.log.brqrlTrg rz a.log.%s.cz&^\d{4}-\d{2}-\d{2}_\d{2}-\d{2}-\d{2}\Z)pathlibPathrPrn rro rp r$rrrr+ r* r? r rBrtouchrq r^r_rYrZrRr{rrErNr)rFrs rt rn_filesrru r2 rv rrr r r,rrw matcherrprrVras rJ?test_compute_files_to_delete_same_filename_different_extensions\TimedRotatingFileHandlerTest.test_compute_files_to_delete_same_filename_different_extensionsKs \\(**/B C  r*    " " $wA LL%89 : ($$Q/ /B ("8,IAA#K&&?? RUIJLWFJ@LG OOG $ 23-A LL) *A VNN #8,IAA#KkG 113J   S_g.CZ Pjj!JKG a(2 fSj 9:S[],-  1  -rozEST+05EDT,M3.2.0,M11.1.0c b^^[RnUU4Sjn[RRTRSSSS9mU"U"SSSS S S 5U"SSS S S 55 U"U"SSS S S 5U"SSS S S 55 U"U"SSS SS 5U"SSS S S 55 U"U"SS SS S S 5U"SS SS S 55 U"U"SS SS S 5U"SS SS S 55 U"U"SS SSS 5U"SS SS S 55 TR 5 [RRTRSSS[R "S S S 5S9mU"U"SSSS S S 5U"SSSS S 55 U"U"SSSS S 5U"SSS S S 55 U"U"SSSSS 5U"SSS S S 55 U"U"SS SS S S 5U"SS SS S 55 U"U"SS SS S 5U"SS SS S 55 U"U"SS SSS 5U"SS SS S 55 TR 5 [RRTRSSS[R "SS S 5S9mU"U"SSSSS S 5U"SSSSS 55 U"U"SSSSS 5U"SSS SS 55 U"U"SSSSS 5U"SSS SS 55 U"U"SSS SS S 5U"SSS SS 55 U"U"SSS SS 5U"SSS SS 55 U"U"SSS SS 5U"SSS SS 55 U"U"SS SSS S 5U"SS SSS 55 U"U"SS SSS 5U"SS SSS 55 U"U"SS SSS 5U"SS SSS 55 U"U"SS SSS S 5U"SS SSS 55 U"U"SS SSS S SS9U"SS SSS 55 U"U"SS SSS 5U"SS SSS 55 U"U"SS SSS 5U"SS SSS 55 TR 5 [RRTRSSS[R "SSS 5S9mU"U"SSSSSS 5U"SSSSS55 U"U"SSSSS5U"SSS SS55 U"U"SSSSS 5U"SSS SS55 U"U"SSS SS S 5U"SSS SS55 U"U"SSS SS 5U"SSS SS55 U"U"SSS SS5U"SSS SS55 U"U"SS SSSS 5U"SS SSS55 U"U"SS SSS5U"SS SSS55 U"U"SS SSS 5U"SS SSS55 TR 5 [RRTRSSS[R "SSS 5S9mU"U"SSS SSS 5U"SSS SS55 U"U"SSS SS5U"SSS SS55 U"U"SSS SS S 5U"SSS SS55 U"U"SSS SS 5U"SSS SS55 U"U"SSS SS5U"SSS SS55 U"U"SS SSS 5U"SS SSS55 U"U"SS SSSS 5U"SS SSS55 U"U"SS SSS5U"SS SSS55 U"U"SS SSS S 5U"SS SSS55 U"U"SS SSS SS9U"SS SSSSS95 U"U"SS SSSS SS9U"SS SSSSS95 U"U"SS SSSSS9U"SS SSS55 U"U"SS SSS S SS9U"SS SSS55 U"U"SS SSS 5U"SS SSS55 U"U"SS SSS5U"SS SSS55 TR 5 g)Nc>TRUR55nX!R5- nU(a&TRUS[R"US95 ggNrr' rU rA r^r$r* currentrjridiffr rFs rJrEOTimedRotatingFileHandlerTest.test_compute_rollover_MIDNIGHT_local..testyR''(9(9(;? RaQ "BtQAq$9: RaQ "BtQAq$9: RaQB 'D!RA)>? RaQ "BtQAq$9: RaQ "BtQAq$9: Rb!QB 'D"aA)>? Rb!Q "BtRAq$9: Rb!Q "BtRAq$9: Rb!QB 'D"aA)>? Rb!QBQ /D"aA1FG Rb!Q "BtRAq$9: Rb!Q "BtRAq$9:     6 6 GGgJE==B*7, RaQB 'D!RB)?@ RaQ #RaQ%;< RaQ "BtQAr$:; RaQB 'D!RB)?@ RaQ "BtQAr$:; RaQ #RaQ%;< Rb!QB 'D"aB)?@ Rb!Q #Rb!Q%;< Rb!Q "BtRAr$:;     6 6 GGgJE==B*7, RaQB 'D!RB)?@ RaQ #RaQ%;< RaQB 'D!RB)?@ RaQ "BtQAr$:; RaQ #RaQ%;< Rb!Q "BtRAr$:; Rb!QB 'D"aB)?@ Rb!Q #Rb!Q%;< Rb!QB 'D"aB)?@ Rb!Q *BtRAr,JK Rb!QBQ /D"aBQ1OP Rb!Q +Rb!Q-CD Rb!QBQ /D"aB1GH Rb!Q "BtRAr$:; Rb!Q #Rb!Q%;<  roc d^^[RnUU4Sjn[RRTRSSSS9mU"U"SSSS S S 5U"SSS S S 55 U"U"SSS S S 5U"SSS S S 55 U"U"SSS SS 5U"SSS S S 55 U"U"SSSS S S 5U"SSSS S 55 U"U"SSSS S 5U"SSS S S 55 U"U"SSSSS 5U"SSS S S 55 TR 5 [RRTRSSS[R "S S S 5S9mU"U"SSSS S S 5U"SSSS S 55 U"U"SSSS S 5U"SSSS S 55 U"U"SSSSS 5U"SSSS S 55 U"U"SSSS S S 5U"SSSS S 55 U"U"SSSS S 5U"SSSS S 55 U"U"SSSSS 5U"SSSS S 55 TR 5 [RRTRSSS[R "S S S 5S9mU"U"SSSSS S 5U"SSSS S 55 U"U"SSSS S 5U"SSSS S 55 U"U"SSSSS 5U"SSSS S 55 U"U"SSSSS S 5U"SSSS S 55 U"U"SSSS S 5U"SSSS S 55 U"U"SSSSS 5U"SSSS S 55 TR 5 [RRTRSSS[R "SS S 5S9mU"U"SSSSS S 5U"SSSSS 55 U"U"SSSSS 5U"SSSSS 55 U"U"SSSSS 5U"SSSSS 55 U"U"SSSSS S 5U"SSSSS 55 U"U"SSSSS 5U"SSSSS 55 U"U"SSSSS 5U"SSSSS 55 U"U"SSSSS S 5U"SSSSS 55 U"U"SSSSS 5U"SSSSS 55 U"U"SSSSS 5U"SSSSS 55 U"U"SSSSS S 5U"SSSSS 55 U"U"SSSSS S SS9U"SSSSS 55 U"U"SSSSS 5U"SSSSS 55 U"U"SSSSS 5U"SSSSS 55 TR 5 [RRTRSSS[R "SSS 5S9mU"U"SSSSSS 5U"SSSSS55 U"U"SSSSS5U"SSSSS55 U"U"SSSSS 5U"SSSSS55 U"U"SSSSS S 5U"SSSSS55 U"U"SSSSS 5U"SSSSS55 U"U"SSSSS5U"SSSSS55 U"U"SSSSSS 5U"SSSSS55 U"U"SSSSS5U"SSSSS55 U"U"SSSSS 5U"SSSSS55 TR 5 [RRTRSSS[R "SSS 5S9mU"U"SSSSSS 5U"SSSSS55 U"U"SSSSS5U"SSSSS55 U"U"SSSSS S 5U"SSSSS55 U"U"SSSSS 5U"SSSSS55 U"U"SSSSS5U"SSSSS55 U"U"SSSSS 5U"SSSSS55 U"U"SSSSSS 5U"SSSSS55 U"U"SSSSS5U"SSSSS55 U"U"SSSSS S 5U"SSSSS55 U"U"SSSSS SS9U"SSSSSSS95 U"U"SSSSSS SS9U"SSSSSSS95 U"U"SSSSSSS9U"SSSSS55 U"U"SSSSS S SS9U"SSSSS55 U"U"SSSSS 5U"SSSSS55 U"U"SSSSS5U"SSSSS55 TR 5 g)Nc>TRUR55nX!R5- nU(a&TRUS[R"US95 ggr r r s rJrEITimedRotatingFileHandlerTest.test_compute_rollover_W6_local..testr roriW6Fr r rnrr r rrrR rqrr rsrP r rr r r r s` @rJtest_compute_rollover_W6_local;TimedRotatingFileHandlerTest.test_compute_rollover_W6_locals    L    6 6 GGgDe7= RaBB 'D!Q1)=> RaAq !2dAr1a#89 RaAq !2dAr1a#89 Rb"b"b )2dBAq+AB Rb"a #Rb!Q%:; Rb"a #Rb!Q%:;     6 6 GGgDe==Aq)7+ RaRR ("T1b!Q*?@ RaQ "BtQAq$9: RaQ "BtQAq$9: Rb!RR ("T2q!Q*?@ Rb!Q "BtRQ$:; Rb!Q "BtRQ$:;     6 6 GGgDe==Q*7, RaBB 'D!QA)>? RaB "BtQB$:; RaB "BtQB$:; Rb"b"b )2dBB+BC Rb"b! $br1b!&<= Rb"b! $br1b!&<=     6 6 GGgDe==Aq)7+ RaAr2 &4Aq!(<= RaAq !2dAr1a#89 RaAq !2dAr1a#89 RaQB 'D!RA)>? RaQ "BtQAq$9: RaQ "BtQAq$9: Rb"aR ("T2r1a*@A Rb"a #Rb!Q%:; Rb"a #Rb!Q%:; Rb!QB 'D"aA)>? Rb!QBQ /D"aA1FG Rb!Q "BtRQ$:; Rb!Q "BtRQ$:;     6 6 GGgDe==B*7, RaAr2 &4Aq"(=> RaAr "BtQAr$:; RaAq !2dAr1b#9: RaQB 'D!RB)?@ RaQ "BtQAr$:; RaQ #RaQ%;< Rb"aR ("T2r1b*AB Rb"a $br1a&<= Rb"a #Rb!Q%;<     6 6 GGgDe==B*7, RaQB 'D!RB)?@ RaQ #RaQ%;< RaQB 'D!RB)?@ RaQ "BtQAr$:; RaQ #RaQ%;< Rb!Q "BtRAr$:; Rb!QB 'D"aB)?@ Rb!Q #Rb"a%<= Rb!QB 'D"b!R)@A Rb!Q *BtRAr,JK Rb!QBQ /D"aBQ1OP Rb!Q +Rb"a-DE Rb!QBQ /D"b!R1HI Rb!Q "BtRQ$;< Rb!Q #Rb"a%<=  roc ^^[RnUU4Sjn[RRTRSSSSS9mU"U"SSSS S S 5U"SSS S S 55 U"U"SSS S S 5U"SSSS S 55 U"U"SSS SS 5U"SSSS S 55 U"U"SSSS S S 5U"SSSS S 55 U"U"SSS S S 5U"SSSS S 55 U"U"SSS SS 5U"SSSS S 55 U"U"SS SS S S 5U"SS SS S 55 U"U"SS SS S 5U"SS SS S 55 U"U"SS SSS 5U"SS SS S 55 U"U"SS SS S S 5U"SS SS S 55 U"U"SS SS S 5U"SS SS S 55 U"U"SS SSS 5U"SS SS S 55 TR 5 [RRTRSSSS[R "SS S 5S9mU"U"SSSS S S 5U"SSSSS 55 U"U"SSSSS 5U"SSS SS 55 U"U"SSSSS 5U"SSS SS 55 U"U"SSSS S S 5U"SSSSS 55 U"U"SSSSS 5U"SSSSS 55 U"U"SSSSS 5U"SSSSS 55 U"U"SS SS S S 5U"SS SSS 55 U"U"SS SSS 5U"SS SSS 55 U"U"SS SSS 5U"SS SSS 55 U"U"SS SS S S 5U"SS SSS 55 U"U"SS SSS 5U"SS SSS 55 U"U"SS SSS 5U"SS SSS 55 TR 5 g)Nc>TRUR55nX!R5- nU(a&TRUS[R"US95 ggr r r s rJrEXTimedRotatingFileHandlerTest.test_compute_rollover_MIDNIGHT_local_interval..testgr rorir9 Frnrkr: r%rZ r r!r r rsrrrR rqrr rrrrrLrOrkr: r%rZ r; r r s` @rJ-test_compute_rollover_MIDNIGHT_local_intervalJTimedRotatingFileHandlerTest.test_compute_rollover_MIDNIGHT_local_intervalcs   L    6 6 GGgJEA7O RaBB 'D!RA)>? RaAq !2dAr1a#89 RaAq !2dAr1a#89 RaRR ("T1b!Q*?@ RaQ "BtQAq$9: RaQ "BtQAq$9: Rb!RR ("T2q!Q*?@ Rb!Q "BtRAq$9: Rb!Q "BtRAq$9: Rb!RR ("T2q!Q*?@ Rb!Q "BtRAq$9: Rb!Q "BtRAq$9:     6 6 GGgJEA==Q*7, RaBB 'D!RQ)?@ RaB "BtQB$:; RaB "BtQB$:; RaRR ("T1b"a*@A RaR #RaR%;< RaR #RaR%;< Rb!RR ("T2q"a*@A Rb!R #Rb!R%;< Rb!R #Rb!R%;< Rb!RR ("T2q"a*@A Rb!R #Rb!R%;< Rb!R #Rb!R%;<  roc 4 ^^[RnUU4Sjn[RRTRSSSSS9mU"U"SSS S S S 5U"SSS S S 55 U"U"SSSS S 5U"SSSS S 55 U"U"SSSSS 5U"SSSS S 55 U"U"SSSS S S 5U"SSS S S 55 U"U"SSS S S 5U"SSSS S 55 U"U"SSS SS 5U"SSSS S 55 U"U"SSSS S S 5U"SSSS S 55 U"U"SSSS S 5U"SSS S S 55 U"U"SSSSS 5U"SSS S S 55 U"U"SSSS S S 5U"SSSS S 55 U"U"SSSS S 5U"SSS S S 55 U"U"SSSSS 5U"SSS S S 55 TR 5 [RRTRSSSS[R "S S S 5S9mU"U"SSSS S S 5U"SSSS S 55 U"U"SSSS S 5U"SSSS S 55 U"U"SSSSS 5U"SSSS S 55 U"U"SSSS S S 5U"SSSS S 55 U"U"SSSS S 5U"SSSS S 55 U"U"SSSSS 5U"SSSS S 55 U"U"SSSS S S 5U"SSSS S 55 U"U"SSSS S 5U"SSSS S 55 U"U"SSSSS 5U"SSSS S 55 U"U"SSSS S S 5U"SSSS S 55 U"U"SSSS S 5U"SSSS S 55 U"U"SSSSS 5U"SSSS S 55 TR 5 [RRTRSSSS[R "SS S 5S9mU"U"SSSSS S 5U"SSSSS 55 U"U"SSS SS 5U"SSSSS 55 U"U"SSS SS 5U"SSSSS 55 U"U"SSSSS S 5U"SSSSS 55 U"U"SSSSS 5U"SSSSS 55 U"U"SSSSS 5U"SSSSS 55 U"U"SSSSS S 5U"SSSSS 55 U"U"SSSSS 5U"SSSSS 55 U"U"SSSSS 5U"SSSSS 55 U"U"SSSSS S 5U"SSSSS 55 U"U"SSSSS 5U"SSSSS 55 U"U"SSSSS 5U"SSSSS 55 TR 5 g)Nc>TRUR55nX!R5- nU(a&TRUS[R"US95 ggr r r s rJrERTimedRotatingFileHandlerTest.test_compute_rollover_W6_local_interval..testr rorir Frnr r rrrr r rrrrR rqrrrr rqrsr r r r r r r s` @rJ'test_compute_rollover_W6_local_intervalDTimedRotatingFileHandlerTest.test_compute_rollover_W6_local_intervals   L    6 6 GGgDea7I RaRR ("T1aA*>? RaQ "BtQAq$9: RaQ "BtQAq$9: RaBB 'D!RA)>? RaAq !2dAr1a#89 RaAq !2dAr1a#89 Rb"b"b )2dBAq+AB Rb"a #Rb!Q%:; Rb"a #Rb!Q%:; Rb"b"b )2dBAq+AB Rb"a #Rb"a%;< Rb"a #Rb"a%;<     6 6 GGgDea==Aq)7+ RaRR ("T1b!Q*?@ RaQ "BtQAq$9: RaQ "BtQAq$9: RaRR ("T1b!Q*?@ RaQ "BtQ1a$89 RaQ "BtQ1a$89 Rb"b"b )2dB1a+@A Rb"a #Rb"a%;< Rb"a #Rb"a%;< Rb!RR ("T2r1a*@A Rb!Q "BtRQ$:; Rb!Q "BtRQ$:;     6 6 GGgDea==Q*7, RaRR ("T1aQ*?@ RaR #RaR%;< RaR #RaR%;< RaBB 'D!RQ)?@ RaB "BtQB$:; RaB "BtQB$:; Rb"b"b )2dBB+BC Rb"b! $br1b!&<= Rb"b! $br1b!&<= Rb"b"b )2dBB+BC Rb"b! $br2r1&=> Rb"b! $br2r1&=>  ror}Nr )rwrxryrzrrrr r r4 rE rH rM rW ra rx r run_with_tzr r r r r|r}rorJr r >s __W__&EFG((T)5V4B%P4l?LB&2T 34k5k^ 34y5yz 34.5.d 34B5Bror c X[R"S0UD6[R"SS9-$)Nrqr' r})r$r* )rs rJr/ r/ s&    # #x'9'9!'D DDro)r" rq)Mr)Hi)DrQ )r9 rQ W0r)r= hours)rqrnc [RRURSXSSS9nSnUR U5nUR S5(aU[ SUS- -S 9- nOX2-nX6:wGa4US :XGa-UR(a[R"U5nO[R"U5nUS nUS n US n [RRUS-U -S-U -- n X[-n [SU<SUR<S3[RS9 [SU-[RS9 [SU -[RS9 [SU -[RS9 [SU -[RS9 [SU -[RS9 UR!X65 UR#5 g![a%n [SU -[RS9 Sn A NLSn A ff=f)NrirT)rkr: rZ r r%r>r8 rOrqr< r9 rnrrrzt: z ()r) zcurrentHour: %szcurrentMinute: %szcurrentSecond: %szr: %sz result: %sz exception in diagnostic code: %s)r rBrrVrU rNr/ r%rr+ localtime _MIDNIGHTrrsrrr^rN)rFr: rZ expr rV rir, currentHour currentMinute currentSecondrrKres rJtest_compute_rolloverr s!!::'UV\`;bBK'' 4Fs##tHQJ00}:%W66 $ K 8A ${ ;A&'d ()! ()! #,,66;;K8Ewin32evtlog/win32evtlogutil/pywintypes required for this test.c\rSrSrSrSrg)NTEventLogHandlerTesticSn[R"SU5n[R"U5n[RR S5n[R"SS05nURU5 UR5 URU[R"U55 [R[R -nSnSn [R""X'U 5n U H5nUR$S:waM[&R("XQ5n U S :waM3S n O S U -n UR+XS 9 g![ Ra,nURS:Xa[R"S5eeSnAff=f) N Application test_loggingrz#Insufficient privileges to run testrzTest Log MessageFrzTest Log Message Tz3Record not found in event log, went back %d recordsr ) win32evtlog OpenEventLogGetNumberOfEventLogRecordsr rBNTEventLogHandler pywintypesrwinerrorrSkipTestrryrN assertLessEVENTLOG_BACKWARDS_READEVENTLOG_SEQUENTIAL_READ ReadEventLog SourceNamewin32evtlogutilSafeFormatMessagerE) rFlogtypeelhnum_recsrUrerflagsr- r. eventsrs rJr NTEventLogHandlerTest.test_basicsN&&tW599#>   22>BA  ! !5*<"= >     +"H"H"MN33445))#g>A||~-!33A?C,,E DgM '1 zzQ''(MNN  sD;;E;'E66E;r}N)rwrxryrzrr|r}rorJr r s(ror c\rSrSrSrSrg) MiscTestCasei8c@1Skn[R"U[US9 g)N>rArFiltererr RootLoggerr` PlaceHolderr currentframeraStrFormatStylerbrGrN) not_exported)r check__all__r )rFr s rJ test__all__MiscTestCase.test__all__9s, T7Fror}N)rwrxryrzr r|r}rorJr r 8sGror cZ[R"[R"SS55 g)NLC_ALLr)renterModuleContextrrun_with_localer}rorJ setUpModuler Es  7 7" EFro__main__rr )r{r logging.handlerslogging.configr3rr&r$r{ rr6rrr4rRrjrrYro rrrsrPtest.support.script_helperrrrEr test.supportrrrr r r r test.support.logging_helperr rrrprrrDr http.serverrr unittest.mockr urllib.parserr socketserverrrrrr r r r r rHAVE_ASAN_FORK_BUGrcheck_sanitizerrTestCaserrrSILENTr TERSEEFFUSIVErr= TALKATIVEr CHATTERBOXBORINGrrrrrrr rWrYrorr;rrrrrr;rHrjr{rrrrGrrrr=rrrryrIrrrrr IPV6_ENABLEDrrrr*r<rUrWr]r_rBrrcrkrergrtrzr|rrrrMrer r~rrrrr* rtzinforr%rrrlr\rgrtr|rrQrxrrr7r}rrr r[ r( re r r r r r/ r: r rZ r rHrwrr r r mainr}rorJr s"    N&"&)(!3 :+DD633 OO EGOO 4(-/ d'x  d'NUIUIn<%h<%L   FFQJ'  ( * ' * * ) + +, ( +gnn+::C'C'L K2(K2\11#--#  '@'@XG;U%%G;T060d'\:'R1L"41>-L"4-^ 69(}(((    ",,.h/#@C5C5L-**- aXaH   ",,.W+W+/#W+t WVY/1HI &- &J &   ",,.>:(>:/#>:@ WVY/1HI (1 (J (   ",,.IBIB/#IBV WVY/1HI &- &J & ]//;= 6- 6= 6   ",,.L hL /#L \1 1 h-L8-L`%K8%KP.  # G))  W%%33  %++ ))  1  2 sMXsMj99(9.&h&> w((   8  F,,.pPxpP/pPd 7  _--#002]&H]&3]&@!(// e..`SH%%'9`SF &W77&GX..G&AHA,$;X$;N  $w**$T/8T/nx/(x/vK0HK0\Y#h''Y#x D*))D*N.G)).++57((5`>-`>FH8H25l5,ZlZx[ <[ |E %,1B/0 ID#-1H#$ J*D0 a< K D)-&,d4IJUj ["bc (H (d (FG8$$GG z MMOG`6155K5/J6   s$ ^%^0 ^-,^-0^:9^: