+
    üÐjÚ)  ã                   óê   € R t ^ RIHtHtHtHt ^ RIHt ^ RIH	t	 ^ RI
Ht ^ RIHt ^RIHt ^RIHt ^RIHtHt ^R	IHtHt ^R
IHt  ! R R]4      t ! R R4      t ! R R]P8                  4      tR# )z+
Test cases for L{twisted.logger._logger}.
)ÚListÚOptionalÚTypeÚcast)Úimplementer)ÚNamedConstant)ÚFailure)Úunittest)ÚformatEvent)ÚglobalLogPublisher)ÚILogObserverÚLogEvent)ÚInvalidLogLevelErrorÚLogLevel©ÚLoggerc                   ó:   a € ] tR t^t o RtRV 3R lR lltRtV tR# )Ú
TestLoggerzR
L{Logger} with an overridden C{emit} method that keeps track of received
events.
Nc                ó@   <€ V ^8„  d   QhRS[ RS[S[,          RS[RR/# )é   ÚlevelÚformatÚkwargsÚreturnN)r   r   ÚstrÚobject)r   Ú__classdict__s   "€ÚA/usr/lib/python3/dist-packages/twisted/logger/test/test_logger.pyÚ__annotate__ÚTestLogger.__annotate__   s1   ø€ ÷ 
ñ 
Ù"ð
Ù,4±S­Mð
ÙLRð
à	ñ
ó    c                ó  a € \        \        4      R  V 3R ll4       p\        P                  ! V4        \        P
                  ! S W3/ VB  \        P                  ! V4       RVRVRV/S n        R#   \        P                  ! T4       i ; i)c                ó(   € V ^8„  d   QhR\         RR/# ©r   Úeventr   N©r   )r   s   "r   r   Ú%TestLogger.emit.<locals>.__annotate__!   s   € ÷ 	ñ 	œHð 	¨ñ 	r    c                 ó   <€ V Sn         R # ©N)r$   ©r$   Úselfs   &€r   ÚobserverÚ!TestLogger.emit.<locals>.observer    s
   ø€ àˆDŽJr    r   r   r   N)r   r   r   ÚaddObserverr   ÚemitÚremoveObserverÚemitted)r*   r   r   r   r+   s   f&&, r   r.   ÚTestLogger.emit   s~   ø€ ô 
”\Ó	"÷	ó 
#ð	ô 	×&Ò& xÔ0ð	8Ü�KŠK˜˜eÑ6¨vÒ6ä×-Ò-¨hÔ7ð �UØ�fØ�fð
ˆŽøô ×-Ò-¨hÕ7ús   ´A1 Á1B	)r0   r$   r(   )Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r.   Ú__static_attributes__Ú__classdictcell__©r   s   @r   r   r      s   ø‡ € ñ÷

÷ 
ð 
r    r   c                   óZ   a € ] tR t^1t o Rt]! 4       tRV 3R lR lltV 3R lR ltRt	V t
R# )	ÚLogComposedObjectz+
A regular object, with a logger attached.
Nc                ó4   <€ V ^8„  d   QhRS[ S[,          RR/# )r   Ústater   N)r   r   )r   r   s   "€r   r   ÚLogComposedObject.__annotate__8   s   ø€ ÷ ñ ™h¡s�mð °tñ r    c                ó   € Wn         R # r(   ©r=   )r*   r=   s   &&r   Ú__init__ÚLogComposedObject.__init__8   s   € ØŽ
r    c                ó    <€ V ^8„  d   QhRS[ /# ©r   r   ©r   )r   r   s   "€r   r   r>   ;   s   ø€ ÷ 3ñ 3™ñ 3r    c                ó"   € R V P                    R2# )z<LogComposedObject Ú>r@   )r*   s   &r   Ú__str__ÚLogComposedObject.__str__;   s   € Ø$ T§Z¡Z L°Ð2Ð2r    r@   r(   )r2   r3   r4   r5   r6   r   ÚlogrA   rH   r7   r8   r9   s   @r   r;   r;   1   s'   ø‡ € ññ ‹,€C÷ò ÷3ö 3r    r;   c                   óD  a € ] tR t^?t o RtV 3R lR ltV 3R lR ltV 3R lR ltV 3R lR	 ltV 3R
 lR lt	V 3R lR lt
V 3R lR ltV 3R lR ltV 3R lR ltV 3R lR ltV 3R lR ltV 3R lR ltV 3R lR ltV 3R lR ltV 3R lR ltV 3R  lR! ltR"tV tR## )$ÚLoggerTestsz
Tests for L{Logger}.
c                ó   <€ V ^8„  d   QhRR/# ©r   r   N© )r   r   s   "€r   r   ÚLoggerTests.__annotate__D   s   ø€ ÷ Cñ C˜4ñ Cr    c                óp   € Rp\        V4      pV P                  \        V4      R\        V4       R24       R# )z
repr() on Logger
Úblearghz<Logger rG   N)r   ÚassertEqualÚrepr)r*   Ú	namespacerJ   s   &  r   Ú	test_reprÚLoggerTests.test_reprD   s5   € ð ˆ	Ü�YÓˆØ×Ñœ˜c› h¬t°I«Ð.?¸qÐ$AÖBr    c                ó   <€ V ^8„  d   QhRR/# rN   rO   )r   r   s   "€r   r   rP   L   s   ø€ ÷ 2ñ 2 tñ 2r    c                óZ   € \        4       pV P                  VP                  \        4       R# )z#
Default namespace is module name.
N)r   rS   rU   r2   ©r*   rJ   s   & r   Útest_namespaceDefaultÚ!LoggerTests.test_namespaceDefaultL   s   € ô ‹hˆØ×Ñ˜Ÿ™¬Ö1r    c                ó   <€ V ^8„  d   QhRR/# rN   rO   )r   r   s   "€r   r   rP   S   s   ø€ ÷ ;ñ ;¨Tñ ;r    c                ó–   € . p\        R\        \        R7      \        4       4       V P	                  V^ ,          P
                  R4       R# )z›
Default namespace is C{"<unknown>"} when a logger is created from a
context in which is can't be determined automatically and no namespace
was specified.
zresult.append(Logger())r   z	<unknown>N)ÚexecÚdictr   ÚlocalsrS   rU   )r*   Úresults   & r   Útest_namespaceOMGItsTooHardÚ'LoggerTests.test_namespaceOMGItsTooHardS   s=   € ð  "ˆÜØ%ÜœÔÜ‹Hô	
ð
 	×Ñ˜ �×,Ñ,¨kÖ:r    c                ó   <€ V ^8„  d   QhRR/# rN   rO   )r   r   s   "€r   r   rP   a   s   ø€ ÷ +ñ +¨ñ +r    c                ó¤  € \        4       pRP                  VP                  VP                  P                  4      pV P                  \        \        VP                  4      P                  V4       V P                  \        \        \        ,          \         P                  4      P                  V4       V P                  \        \        \        ,          \         P                  4      P                  \         4       V P                  \        \        VP                  4      P                  V4       V P                  \        4       P                  4       R# )zk
Default namespace for classes using L{Logger} as a descriptor is the
class name they were retrieved from.
z{}.{}N)r;   r   r3   Ú	__class__r2   rS   r   r   rJ   rU   r   ÚassertIsÚsourceÚassertIsNoner   )r*   ÚobjÚexpectedNamespaces   &  r   Útest_namespaceAttributeÚ#LoggerTests.test_namespaceAttributea   sâ   € ô
  Ó!ˆà#ŸN™NØ�N‰NØ�M‰M×"Ñ"ó
Ðð
 	×Ñœœj¨#¯'©'Ó2×<Ñ<Ð>OÔPØ×ÑÜ””jÕ!Ô#4×#8Ñ#8Ó9×CÑCÐEVô	
ð 	�‰Ü””jÕ!Ô#4×#8Ñ#8Ó9×@Ñ@ÔBSô	
ð 	�‰”dœ: s§w¡wÓ/×6Ñ6¸Ô<Ø×Ñœ&›(Ÿ/™/Ö*r    c                ó   <€ V ^8„  d   QhRR/# rN   rO   )r   r   s   "€r   r   rP   w   s   ø€ ÷ =ñ =¨ñ =r    c                óÒ   a€ . o ! V3R lR4      pVP                   P                  R4       V P                  \        S4      ^4       V P                  S^ ,          R,          R4       R# )z8
When used as a descriptor, the observer is propagated.
c                   óN   <€ ] tR t^}t]! ]! ] Z P                  4      R7      tRt	R# )Ú5LoggerTests.test_descriptorObserver.<locals>.MyObject©r+   rO   N)
r2   r3   r4   r5   r   r   r   ÚappendrJ   r7   )Úobserveds   €r   ÚMyObjectrr   }   s   ø† Ù¡$ |±X·_±_Ó"EÔFŒCr    rv   ÚhelloÚ
log_formatN)rJ   ÚinforS   Úlen)r*   rv   ru   s   & @r   Útest_descriptorObserverÚ#LoggerTests.test_descriptorObserverw   sW   ø€ ð $&ˆ÷	Gô 	Gð 	�‰×Ñ˜'Ô"Ø×Ñœ˜X›¨Ô*Ø×Ñ˜ !� \Õ2°GÖ<r    c                ó   <€ V ^8„  d   QhRR/# rN   rO   )r   r   s   "€r   r   rP   „   s   ø€ ÷ Bñ B°4ñ Br    c                ó>  € \        R4      p\        \        VP                  4      pVP	                  R4       V P                  RVP                  4       V P                  VP                  R,          V4       \        VP                  4      pV P                  RV4       R# )zk
On instances that have a L{Logger} class attribute, the C{log_source}
key is available to format strings.
rw   zHello, {log_source}.Ú
log_sourcez!Hello, <LogComposedObject hello>.N)	r;   r   r   rJ   ÚerrorÚassertInr$   rS   r
   )r*   rk   rJ   Ústuffs   &   r   Ú!test_sourceAvailableForFormattingÚ-LoggerTests.test_sourceAvailableForFormatting„   ss   € ô
   Ó(ˆÜ”:˜sŸw™wÓ'ˆØ�	‰	Ð(Ô)à�‰�l C§I¡IÔ.Ø×Ñ˜Ÿ™ <Õ0°#Ô6ä˜CŸI™IÓ&ˆØ�‰Ð9¸5ÖAr    c                ó   <€ V ^8„  d   QhRR/# rN   rO   )r   r   s   "€r   r   rP   “   s   ø€ ÷ >ñ > $ñ >r    c                óª  € \        4       p\        P                  ! 4        EF®  pRpVP                  VP                  R7      p\        WP                  4      pV! W4VP                  R7       V P                  VP                  R,          V4       V P                  VP                  R,          V4       V P                  VP                  R,          R,          V4       V P                  \        VR4      R	4       V P                  VP                  R
,          V4       V P                  VP                  R,          V4       V P                  VP                  R,          \        4       V P                  VP                  R,          4       V P                  VP                  R,          V4       V P                  \        VP                  4      V4       EK±  	  R# )zE
Test that log levels and messages are emitted correctly for
Logger.
zThis is a {level_name} message)Ú
level_name)Újunkr‡   r   r   r   rˆ   r$   zNo event observed.rx   Ú	log_levelÚlog_namespacer   N)r   r   Úiterconstantsr   ÚnameÚgetattrrS   r0   Ú
assertTrueÚhasattrr$   r2   rj   r
   )r*   rJ   r   r   ÚmessageÚ	logMethods   &     r   Útest_basicLoggerÚLoggerTests.test_basicLogger“   sO  € ô
 ‹lˆä×+Ò+×-ˆEØ5ˆFØ—m‘m¨u¯z©z�mÓ:ˆGä §Z¡ZÓ0ˆIÙ�f°u·z±zÕBð ×Ñ˜SŸ[™[¨Õ1°5Ô9Ø×Ñ˜SŸ[™[¨Õ2°FÔ;Ø×Ñ˜SŸ[™[¨Õ2°6Õ:¸GÔDà�O‰OœG C¨Ó1Ð3GÔHà×Ñ˜SŸY™Y |Õ4°fÔ=Ø×Ñ˜SŸY™Y {Õ3°UÔ;Ø×Ñ˜SŸY™Y Õ7¼ÔBØ×Ñ˜cŸi™i¨Õ5Ô6Ø×Ñ˜SŸY™Y vÕ.°Ô8à×Ñœ[¨¯©Ó3°W×=ó) .r    c                ó   <€ V ^8„  d   QhRR/# rN   rO   )r   r   s   "€r   r   rP   °   s   ø€ ÷ ,ñ , Dñ ,r    c                ó®   a aa€ \        \        4      R VV 3R ll4       o ! V3R lR4      o\        \        SP                  4      P                  4        R# )z.
C{log_source} event key refers to the class.
c                ó(   € V ^8„  d   QhR\         RR/# r#   r%   )r   s   "r   r   Ú4LoggerTests.test_sourceOnClass.<locals>.__annotate__¶   ó   € ÷ 	:ñ 	:œHð 	:¨ñ 	:r    c                 ó:   <€ SP                  V R ,          S4       R# ©r   N©rS   )r$   ÚThingor*   s   &€€r   r+   Ú0LoggerTests.test_sourceOnClass.<locals>.observerµ   ó   ø€ à×Ñ˜U <Õ0°&Ö9r    c                   ó,   <€ ] tR t^¹t]!  Z R7      tRtR# )Ú.LoggerTests.test_sourceOnClass.<locals>.Thingors   rO   N©r2   r3   r4   r5   r   rJ   r7   rs   s   €r   rœ   r    ¹   ó   ø† Ù¡hÔ/ŒCr    rœ   N©r   r   r   r   rJ   ry   )r*   rœ   r+   s   f@@r   Útest_sourceOnClassÚLoggerTests.test_sourceOnClass°   sD   ú€ ô
 
”\Ó	"÷	:ð 	:ó 
#ð	:÷	0ô 	0ô 	ŒZ˜Ÿ™Ó$×)Ñ)Ö+r    c                ó   <€ V ^8„  d   QhRR/# rN   rO   )r   r   s   "€r   r   rP   ¾   s   ø€ ÷ ,ñ , tñ ,r    c                ó¼   a aa€ \        \        4      R V V3R ll4       o ! V3R lR4      pV! 4       o\        \        SP                  4      P                  4        R# )z1
C{log_source} event key refers to the instance.
c                ó(   € V ^8„  d   QhR\         RR/# r#   r%   )r   s   "r   r   Ú7LoggerTests.test_sourceOnInstance.<locals>.__annotate__Ä   r˜   r    c                 ó:   <€ SP                  V R ,          S4       R# rš   r›   )r$   r*   Úthingos   &€€r   r+   Ú3LoggerTests.test_sourceOnInstance.<locals>.observerÃ   rž   r    c                   ó,   <€ ] tR t^Çt]!  Z R7      tRtR# )Ú1LoggerTests.test_sourceOnInstance.<locals>.Thingors   rO   Nr¡   rs   s   €r   rœ   r®   Ç   r¢   r    rœ   Nr£   )r*   rœ   r+   r«   s   f @@r   Útest_sourceOnInstanceÚ!LoggerTests.test_sourceOnInstance¾   sK   ú€ ô
 
”\Ó	"÷	:ð 	:ó 
#ð	:÷	0ô 	0ñ “ˆÜŒZ˜Ÿ™Ó$×)Ñ)Ö+r    c                ó   <€ V ^8„  d   QhRR/# rN   rO   )r   r   s   "€r   r   rP   Í   s   ø€ ÷ 
ñ 
 Dñ 
r    c                óv   a € \        \        4      R V 3R ll4       p\        VR7      pVP                  4        R# )z%
C{log_source} event key is L{None}.
c                ó(   € V ^8„  d   QhR\         RR/# r#   r%   )r   s   "r   r   Ú4LoggerTests.test_sourceUnbound.<locals>.__annotate__Ó   s   € ÷ 	3ñ 	3œHð 	3¨ñ 	3r    c                 ó8   <€ SP                  V R ,          4       R# rš   )rj   r)   s   &€r   r+   Ú0LoggerTests.test_sourceUnbound.<locals>.observerÒ   s   ø€ à×Ñ˜e LÕ1Ö2r    rs   N©r   r   r   ry   )r*   r+   rJ   s   f  r   Útest_sourceUnboundÚLoggerTests.test_sourceUnboundÍ   s1   ø€ ô
 
”\Ó	"÷	3ó 
#ð	3ô  (Ô+ˆØ�‰Ž
r    c                ó   <€ V ^8„  d   QhRR/# rN   rO   )r   r   s   "€r   r   rP   Ù   s   ø€ ÷ :ñ : Tñ :r    c                ó~  € \        4       p \        R4      h  \         d    TP                  R4        Mi ; iT P                  \        4      pT P	                  \        T4      ^4       T P	                  TP                  R,          \        P                  4       T P	                  TP                  R,          R4       R# )z/
Test that log.failure() emits the right data.
zbaloney!ÚWhoopsr   r   N)	r   ÚRuntimeErrorÚfailureÚflushLoggedErrorsrS   rz   r0   r   Úcritical©r*   rJ   Úerrorss   &  r   Útest_defaultFailureÚLoggerTests.test_defaultFailureÙ   s”   € ô ‹lˆð	"Ü˜zÓ*Ð*øÜô 	"Ø�K‰K˜Ö!ð	"úð ×'Ñ'¬Ó5ˆØ×Ñœ˜V› aÔ(à×Ñ˜Ÿ™ WÕ-¬x×/@Ñ/@ÔAØ×Ñ˜Ÿ™ XÕ.°Ö9s   Œ —6µ6c                ó   <€ V ^8„  d   QhRR/# rN   rO   )r   r   s   "€r   r   rP   é   s   ø€ ÷ 3ñ 3¨ñ 3r    c                ó¨  € \        4       pVP                  RR\        P                  RRR7       V P	                  VP
                  R,          R4       V P	                  VP
                  R,          \        P                  4       V P	                  VP
                  R,          VP                  4       V P                  VP
                  R	,          4       R
# )zA
Make sure that kwargs conflicting with args don't pass through.
Ú*Ú#z*namespace*z*source*)rx   r‰   rŠ   r   rx   r‰   rŠ   r   N)r   Úwarnr   r€   rS   r$   rU   rj   rZ   s   & r   Útest_conflictingKwargsÚ"LoggerTests.test_conflictingKwargsé   s›   € ô ‹lˆà�‰ØØÜ—n‘nØ'Ø!ð 	ô 	
ð 	×Ñ˜Ÿ™ <Õ0°#Ô6Ø×Ñ˜Ÿ™ ;Õ/´·±Ô?Ø×Ñ˜Ÿ™ ?Õ3°S·]±]ÔCØ×Ñ˜#Ÿ)™) LÕ1Ö2r    c                ó   <€ V ^8„  d   QhRR/# rN   rO   )r   r   s   "€r   r   rP   ü   s   ø€ ÷ 	)ñ 	)¨ñ 	)r    c                óœ   € \        4       pVP                  R4       V P                  \        4      pV P	                  \        V4      ^4       R# )z1
Test passing in a bogus log level to C{emit()}.
z*bogus*N)r   r.   r¿   r   rS   rz   rÁ   s   &  r   Útest_logInvalidLogLevelÚ#LoggerTests.test_logInvalidLogLevelü   s<   € ô ‹lˆà�‰�Ôà×'Ñ'Ô(<Ó=ˆØ×Ñœ˜V› aÖ(r    c                ó   <€ V ^8„  d   QhRR/# rN   rO   )r   r   s   "€r   r   rP     s   ø€ ÷ )ñ )˜Dñ )r    c                ó¼   a aaa€ \        \        4      R V3R ll4       o\        \        4      R VVV 3R ll4       o\        SR7      oSP                  R. R7       R# )	z5
Tracing keeps track of forwarding to the publisher.
c                ó(   € V ^8„  d   QhR\         RR/# r#   r%   )r   s   "r   r   Ú,LoggerTests.test_trace.<locals>.__annotate__  s   € ÷ 	ñ 	œXð 	¨$ñ 	r    c                 ó   <€ S! V 4       R # r(   rO   )r$   r+   s   &€r   Ú	publisherÚ)LoggerTests.test_trace.<locals>.publisher  s
   ø€ á�UŽOr    c                ó(   € V ^8„  d   QhR\         RR/# r#   r%   )r   s   "r   r   rÓ     s   € ÷ 	Eñ 	EœHð 	E¨ñ 	Er    c                 ó@   <€ SP                  V R ,          SS3.4       R# )Ú	log_traceNr›   )r$   rJ   rÕ   r*   s   &€€€r   r+   Ú(LoggerTests.test_trace.<locals>.observer  s    ø€ à×Ñ˜U ;Õ/°3¸	Ð2BÐ1CÖDr    rs   zHello.)rÙ   Nr·   )r*   rJ   r+   rÕ   s   f@@@r   Ú
test_traceÚLoggerTests.test_trace  sY   û€ ô
 
”\Ó	"÷	ó 
#ð	ô 
”\Ó	"÷	Eñ 	Eó 
#ð	Eô  )Ô,ˆØ�‰� RˆÖ(r    c                ó   <€ V ^8„  d   QhRR/# rN   rO   )r   r   s   "€r   r   rP     s   ø€ ÷ ),ñ ), dñ ),r    c                ó
  aa€ . o\        \        4      R V3R ll4       p\        VR7      p^ o ! V3R lR4      pVP                  RV! 4       R7      ;_uu_ 4       p^^ ,           RRR4       V P	                  XP
                  R	4       V P	                  VP                  R
4       V P	                  \        S4      ^4       Sw  p. SR&   VR,          pV P	                  S^ 4       V P	                  \        V4      R4       V P	                  S^4       V P	                  VP                  \        4       VP                  RV! 4       R7      ;_uu_ 4       pV P	                  VP
                  R	4       V P	                  VP                  R	4       RRR4       V P	                  S^4       V P	                  XP
                  R
4       V P	                  VP                  R	4       R#   + '       g   i     EL‚; i  + '       g   i     Lp; i)zv
The L{Logger.failuresHandled} context manager catches any
L{BaseException} and converts it into a logged L{Failure}.
c                ó(   € V ^8„  d   QhR\         RR/# r#   r%   )r   s   "r   r   Ú6LoggerTests.test_failuresHandled.<locals>.__annotate__  ó   € ÷ 	!ñ 	!œ(ð 	! tñ 	!r    c                 ó*   <€ SP                  V 4       R # r(   ©rt   ©r$   Úeventss   &€r   ÚloggedÚ0LoggerTests.test_failuresHandled.<locals>.logged  ó   ø€ à�M‰M˜%Ö r    rs   c                   ó:   <a € ] tR tRt o V 3R lV3R lltRtV tR# )Ú2LoggerTests.test_failuresHandled.<locals>.Reprablei%  c                ó    <€ V ^8„  d   QhRS[ /# rD   rE   )r   r   s   "€r   r   Ú?LoggerTests.test_failuresHandled.<locals>.Reprable.__annotate__&  s   ø€ ÷ )ñ )¡#ñ )r    c                ó"   <€ S^,          oRS R2# )é   z<repr rG   rO   )r*   Úreprds   &€r   Ú__repr__Ú;LoggerTests.test_failuresHandled.<locals>.Reprable.__repr__&  s   ø€ à˜•
�Ø ˜w aÐ(Ð(r    rO   N)r2   r3   r4   r5   rð   r7   r8   )r   rï   s   @€r   ÚReprablerê   %  s   ù‡ € ÷)÷ )ñ )r    rò   z*while testing failure handling for {value})ÚvalueNFT:NNNÚlog_failurez+while testing failure handling for <repr 1>zsucceeding for {value})r   r   r   ÚfailuresHandledrS   Ú	succeededÚfailedrz   r
   ÚtypeÚZeroDivisionError)	r*   ræ   rJ   rò   Ú	operationÚfÚop2rå   rï   s	   &      @@r   Útest_failuresHandledÚ LoggerTests.test_failuresHandled  s¶  ù€ ð
 ˆä	”\Ó	"÷	!ó 
#ð	!ô  &Ô)ˆØˆ÷	)ô 	)ð × Ñ Ø8ÁÃ
ð !÷ 
ô 
àØ�ŽE÷
ð 	×Ñ˜×,Ñ,¨eÔ4Ø×Ñ˜×)Ñ)¨4Ô0Ø×Ñœ˜V› aÔ(Ø‰ˆØˆˆq‰	Ø˜MÕ*ˆØ×Ñ˜ Ô"Ø×ÑÜ˜ÓÐ!Nô	
ð 	×Ñ˜ Ô"Ø×Ñ˜Ÿ™Ô!2Ô3Ø× Ñ Ð!9ÁÃÐ ×LÔLÐPSØ×Ñ˜SŸ]™]¨EÔ2Ø×Ñ˜SŸZ™Z¨Ô/÷ Mð 	×Ñ˜ Ô"Ø×Ñ˜Ÿ™¨Ô-Ø×Ñ˜Ÿ™ UÖ+÷+
÷ 
ð 
ú÷  M×Lús   Á
GÅ9G2ÇG/	Ç2H	c                ó   <€ V ^8„  d   QhRR/# rN   rO   )r   r   s   "€r   r   rP   B  s   ø€ ÷  4ñ  4 Tñ  4r    c                ó6  a€ . o\        \        4      R V3R ll4       p\        VR7      pVP                  R4      pRpV;_uu_ 4       pRpRRR4       V P	                  XR4       V P                  VR4       V P                  S. 4       RpR R	 lpV;_uu_ 4       pV! 4        RRR4       V P                  \        S4      ^4       Sw  pVR
,          pV P                  VP                  \        4       R#   + '       g   i     L²; i  + '       g   i     Lm; i)z—
The L{Logger.failureHandler} context manager can safely be shared
amongst multiple invocations and converts L{BaseException} into logged
L{Failure}s.
c                ó(   € V ^8„  d   QhR\         RR/# r#   r%   )r   s   "r   r   Ú5LoggerTests.test_failureHandler.<locals>.__annotate__K  rá   r    c                 ó*   <€ SP                  V 4       R # r(   rã   rä   s   &€r   ræ   Ú/LoggerTests.test_failureHandler.<locals>.loggedJ  rè   r    rs   rw   FTNc                ó   € V ^8„  d   QhRR/# rN   rO   )r   s   "r   r   r  Y  s   € ÷ 	&ñ 	&˜4ñ 	&r    c                  ó   € \        4       hr(   )ÚKeyboardInterruptrO   r    r   Ú	raisebaseÚ2LoggerTests.test_failureHandler.<locals>.raisebaseY  s   € Ü#Ó%Ð%r    rô   )	r   r   r   ÚfailureHandlerrh   rS   rz   rø   r  )	r*   ræ   rJ   r
  ÚsuccessÚfhr  rû   rå   s	   &       @r   Útest_failureHandlerÚLoggerTests.test_failureHandlerB  sê   ø€ ð ˆä	”\Ó	"÷	!ó 
#ð	!ô  &Ô)ˆà×+Ñ+¨GÓ4ˆØˆß‰^˜rØˆG÷ à�‰�b˜$ÔØ×Ñ˜ $Ô'Ø×Ñ˜ Ô$Øˆõ	&÷ ‰^˜rÙŒK÷ ð 	×Ñœ˜V› aÔ(Ø‰ˆØ�=Õ!ˆØ×Ñ˜Ÿ™Ô!2Ö3÷! �^ú÷ �^ús   ÁC5ÂDÃ5D	ÄD	rO   N)r2   r3   r4   r5   r6   rV   r[   rc   rm   r{   rƒ   r’   r¤   r¯   r¸   rÃ   rÊ   rÎ   rÛ   rý   r  r7   r8   r9   s   @r   rL   rL   ?   s¯   ø‡ € ñ÷Cð C÷2ð 2÷;ð ;÷+ð +÷,=ð =÷Bð B÷>ð >÷:,ð ,÷,ð ,÷
ð 
÷:ð :÷ 3ð 3÷&	)ð 	)÷)ð )÷ ),ð ),÷V 4ö  4r    rL   N)r6   Útypingr   r   r   r   Úzope.interfacer   Ú
constantlyr   Útwisted.python.failurer   Útwisted.trialr	   Ú_formatr
   Ú_globalr   Ú_interfacesr   r   Ú_levelsr   r   Ú_loggerr   r   r;   ÚTestCaserL   rO   r    r   Ú<module>r     sW   ðñ÷ .Ó -å &å $å *Ý "Ý !Ý (ß 0ß 4Ý ô
�ô 
÷43ñ 3ôc4�(×#Ñ#ö c4r    