ó
    Ö›‘hÚ)  ã                   óè   • S r SSKJrJrJrJr  SSKJr  SSKJ	r	  SSK
Jr  SSKJr  SSKJr  SS	KJr  SS
KJrJr  SSKJrJr  SSKJr   " S S\5      r " S S5      r " S S\R8                  5      rg)z+
Test cases for L{twisted.logger._logger}.
é    )ÚListÚOptionalÚTypeÚcast)Úimplementer)ÚNamedConstant)ÚFailure)Úunittesté   )ÚformatEvent)ÚglobalLogPublisher)ÚILogObserverÚLogEvent)ÚInvalidLogLevelErrorÚLogLevel©ÚLoggerc            	       ó>   • \ rS rSrSr S
S\S\\   S\SS4S jjr	S	r
g)Ú
TestLoggeré   zR
L{Logger} with an overridden C{emit} method that keeps track of received
events.
NÚlevelÚformatÚkwargsÚreturnc                 ó   ^ • [        [        5      S[        SS 4U 4S jj5       n[        R                  " U5         [
        R                  " T X40 UD6  [        R                  " U5        UUUS.T l        g ! [        R                  " U5        f = f)NÚeventr   c                 ó   >• U Tl         g ©N)r   ©r   Úselfs    €ÚcC:\Users\psant\Downloads\Noiseback\school\venv\Lib\site-packages\twisted/logger/test/test_logger.pyÚobserverÚ!TestLogger.emit.<locals>.observer    s
   ø€ àˆD�Jó    )r   r   r   )	r   r   r   r   ÚaddObserverr   ÚemitÚremoveObserverÚemitted)r    r   r   r   r"   s   `    r!   r&   ÚTestLogger.emit   s†   ø€ ô 
”\Ó	"ð	œHð 	¨ö 	ó 
#ð	ô 	×&Ò& xÔ0ð	8Ü�KŠK˜˜eÑ6¨vÒ6ä×-Ò-¨hÔ7ð ØØñ
ˆ�øô ×-Ò-¨hÕ7ús   »A5 Á5B)r(   r   r   )Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r   r   ÚstrÚobjectr&   Ú__static_attributes__© r$   r!   r   r      s;   † ñð =Añ
Ø"ð
Ø,4°S©Mð
ØLRð
à	÷
ð 
r$   r   c                   óP   • \ rS rSrSr\" 5       rS	S\\   SS4S jjr	S\4S jr
Srg)
ÚLogComposedObjecté1   z+
A regular object, with a logger attached.
NÚstater   c                 ó   • Xl         g r   ©r6   )r    r6   s     r!   Ú__init__ÚLogComposedObject.__init__8   s   € Ø�
r$   c                 ó"   • SU R                    S3$ )Nz<LogComposedObject Ú>r8   )r    s    r!   Ú__str__ÚLogComposedObject.__str__;   s   € Ø$ T§Z¡Z L°Ð2Ð2r$   r8   r   )r*   r+   r,   r-   r.   r   Úlogr   r/   r9   r=   r1   r2   r$   r!   r4   r4   1   s3   † ññ ‹,€Cñ˜h s™mð °tõ ð3˜÷ 3r$   r4   c                   ó¸   • \ rS rSrSrSS jrSS jrSS jrSS jrSS jr	SS	 jr
SS
 jrSS jrSS jrSS jrSS jrSS jrSS jrSS jrSS jrSS jrSrg)ÚLoggerTestsé?   z
Tests for L{Logger}.
Nc                 ón   • Sn[        U5      nU R                  [        U5      S[        U5       S35        g)z
repr() on Logger
Úblearghz<Logger r<   N)r   ÚassertEqualÚrepr)r    Ú	namespacer?   s      r!   Ú	test_reprÚLoggerTests.test_reprD   s5   € ð ˆ	Ü�YÓˆØ×Ñœ˜c› h¬t°I«Ð.?¸qÐ$AÕBr$   c                 óX   • [        5       nU R                  UR                  [        5        g)z#
Default namespace is module name.
N)r   rE   rG   r*   ©r    r?   s     r!   Útest_namespaceDefaultÚ!LoggerTests.test_namespaceDefaultL   s   € ô ‹hˆØ×Ñ˜Ÿ™¬Õ1r$   c                 ó†   • / n[        S[        [        S9[        5       5        U R	                  US   R
                  S5        g)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   r   z	<unknown>N)ÚexecÚdictr   ÚlocalsrE   rG   )r    Úresults     r!   Útest_namespaceOMGItsTooHardÚ'LoggerTests.test_namespaceOMGItsTooHardS   s=   € ð  "ˆÜØ%ÜœÑÜ‹Hô	
ð
 	×Ñ˜ ™×,Ñ,¨kÕ:r$   c                 ó’  • [        5       nSR                  UR                  UR                  R                  5      nU R                  [        [        UR                  5      R                  U5        U R                  [        [        [           [         R                  5      R                  U5        U R                  [        [        [           [         R                  5      R                  [         5        U R                  [        [        UR                  5      R                  U5        U R                  [        5       R                  5        g)zk
Default namespace for classes using L{Logger} as a descriptor is the
class name they were retrieved from.
z{}.{}N)r4   r   r+   Ú	__class__r*   rE   r   r   r?   rG   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                 óÀ   ^• / m " U4S jS5      nUR                   R                  S5        U R                  [        T5      S5        U R                  TS   S   S5        g)z8
When used as a descriptor, the observer is propagated.
c                   óF   >• \ rS rSr\" \" \ Y R                  5      S9rSr	g)Ú5LoggerTests.test_descriptorObserver.<locals>.MyObjecté}   ©r"   r2   N)
r*   r+   r,   r-   r   r   r   Úappendr?   r1   )Úobserveds   €r!   ÚMyObjectr`   }   s   ø† Ù¡$ |±X·_±_Ó"EÑF‹Cr$   re   Úhelloé   r   Ú
log_formatN)r?   ÚinforE   Úlen)r    re   rd   s     @r!   Útest_descriptorObserverÚ#LoggerTests.test_descriptorObserverw   sW   ø€ ð $&ˆ÷	Gô 	Gð 	�‰×Ñ˜'Ô"Ø×Ñœ˜X›¨Ô*Ø×Ñ˜ !™ \Ñ2°GÕ<r$   c                 ó4  • [        S5      n[        [        UR                  5      nUR	                  S5        U R                  SUR                  5        U R                  UR                  S   U5        [        UR                  5      nU R                  SU5        g)zk
On instances that have a L{Logger} class attribute, the C{log_source}
key is available to format strings.
rf   zHello, {log_source}.Ú
log_sourcez!Hello, <LogComposedObject hello>.N)	r4   r   r   r?   ÚerrorÚassertInr   rE   r   )r    rZ   r?   Ústuffs       r!   Ú!test_sourceAvailableForFormattingÚ-LoggerTests.test_sourceAvailableForFormatting„   ss   € ô
   Ó(ˆÜ”:˜sŸw™wÓ'ˆØ�	‰	Ð(Ô)à�‰�l C§I¡IÔ.Ø×Ñ˜Ÿ™ <Ñ0°#Ô6ä˜CŸI™IÓ&ˆØ�‰Ð9¸5ÕAr$   c                 óT  • [        5       n[        R                  " 5        GH„  nSnUR                  UR                  S9n[        XR                  5      nU" X4UR                  S9  U R                  UR                  S   U5        U R                  UR                  S   U5        U R                  UR                  S   S   U5        U R                  [        US5      S	5        U R                  UR                  S
   U5        U R                  UR                  S   U5        U R                  UR                  S   [        5        U R                  UR                  S   5        U R                  UR                  S   U5        U R                  [        UR                  5      U5        GM‡     g)zE
Test that log levels and messages are emitted correctly for
Logger.
zThis is a {level_name} message)Ú
level_name)Újunkru   r   r   r   rv   r   zNo event observed.rh   Ú	log_levelÚlog_namespacern   N)r   r   Úiterconstantsr   ÚnameÚgetattrrE   r(   Ú
assertTrueÚhasattrr   r*   rY   r   )r    r?   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                 óº   ^ ^^• [        [        5      S[        SS4UU 4S jj5       m " U4S jS5      m[        [        TR
                  5      R                  5         g)z.
C{log_source} event key refers to the class.
r   r   Nc                 ó0   >• TR                  U S   T5        g ©Nrn   ©rE   )r   ÚThingor    s    €€r!   r"   Ú0LoggerTests.test_sourceOnClass.<locals>.observerµ   ó   ø€ à×Ñ˜U <Ñ0°&Õ9r$   c                   ó$   >• \ rS rSr\"  Y S9rSrg)Ú.LoggerTests.test_sourceOnClass.<locals>.Thingoé¹   rb   r2   N©r*   r+   r,   r-   r   r?   r1   rb   s   €r!   r†   rŠ   ¹   ó   ø† Ù¡hÑ/‹Cr$   r†   ©r   r   r   r   r   r?   ri   )r    r†   r"   s   `@@r!   Útest_sourceOnClassÚLoggerTests.test_sourceOnClass°   sM   ú€ ô
 
”\Ó	"ð	:œHð 	:¨÷ 	:ó 
#ð	:÷	0ô 	0ô 	ŒZ˜Ÿ™Ó$×)Ñ)Õ+r$   c                 óÈ   ^ ^^• [        [        5      S[        SS4U U4S jj5       m " U4S jS5      nU" 5       m[        [        TR
                  5      R                  5         g)z1
C{log_source} event key refers to the instance.
r   r   Nc                 ó0   >• TR                  U S   T5        g r„   r…   )r   r    Úthingos    €€r!   r"   Ú3LoggerTests.test_sourceOnInstance.<locals>.observerÃ   rˆ   r$   c                   ó$   >• \ rS rSr\"  Y S9rSrg)Ú1LoggerTests.test_sourceOnInstance.<locals>.ThingoéÇ   rb   r2   NrŒ   rb   s   €r!   r†   r–   Ç   r�   r$   r†   rŽ   )r    r†   r"   r“   s   ` @@r!   Útest_sourceOnInstanceÚ!LoggerTests.test_sourceOnInstance¾   sT   ú€ ô
 
”\Ó	"ð	:œHð 	:¨÷ 	:ó 
#ð	:÷	0ô 	0ñ “ˆÜŒZ˜Ÿ™Ó$×)Ñ)Õ+r$   c                 ó|   ^ • [        [        5      S[        SS4U 4S jj5       n[        US9nUR	                  5         g)z%
C{log_source} event key is L{None}.
r   r   Nc                 ó.   >• TR                  U S   5        g r„   )rY   r   s    €r!   r"   Ú0LoggerTests.test_sourceUnbound.<locals>.observerÒ   s   ø€ à×Ñ˜e LÑ1Õ2r$   rb   ©r   r   r   r   ri   )r    r"   r?   s   `  r!   Útest_sourceUnboundÚLoggerTests.test_sourceUnboundÍ   s?   ø€ ô
 
”\Ó	"ð	3œHð 	3¨ö 	3ó 
#ð	3ô  (Ñ+ˆØ�‰�
r$   c                 ój  • [        5       n [        S5      e! [         a    UR                  S5         Of = fU R                  [        5      nU R	                  [        U5      S5        U R	                  UR                  S   [        R                  5        U R	                  UR                  S   S5        g)z/
Test that log.failure() emits the right data.
zbaloney!ÚWhoopsrg   r   r   N)	r   ÚRuntimeErrorÚfailureÚflushLoggedErrorsrE   rj   r(   r   Úcritical©r    r?   Úerrorss      r!   Útest_defaultFailureÚLoggerTests.test_defaultFailureÙ   s”   € ô ‹lˆð	"Ü˜zÓ*Ð*øÜó 	"Ø�K‰K˜Ö!ð	"úð ×'Ñ'¬Ó5ˆØ×Ñœ˜V› aÔ(à×Ñ˜Ÿ™ WÑ-¬x×/@Ñ/@ÔAØ×Ñ˜Ÿ™ XÑ.°Õ9s   Œ —5´5c                 ó€  • [        5       nUR                  SS[        R                  SSS9  U R	                  UR
                  S   S5        U R	                  UR
                  S   [        R                  5        U R	                  UR
                  S   UR                  5        U R                  UR
                  S	   5        g
)zA
Make sure that kwargs conflicting with args don't pass through.
Ú*Ú#z*namespace*z*source*)rh   rw   rx   rn   rh   rw   rx   rn   N)r   Úwarnr   ro   rE   r   rG   rY   rK   s     r!   Útest_conflictingKwargsÚ"LoggerTests.test_conflictingKwargsé   s›   € ô ‹lˆà�‰ØØÜ—n‘nØ'Ø!ð 	ñ 	
ð 	×Ñ˜Ÿ™ <Ñ0°#Ô6Ø×Ñ˜Ÿ™ ;Ñ/´·±Ô?Ø×Ñ˜Ÿ™ ?Ñ3°S·]±]ÔCØ×Ñ˜#Ÿ)™) LÑ1Õ2r$   c                 óš   • [        5       nUR                  S5        U R                  [        5      nU R	                  [        U5      S5        g)z1
Test passing in a bogus log level to C{emit()}.
z*bogus*rg   N)r   r&   r¤   r   rE   rj   r¦   s      r!   Útest_logInvalidLogLevelÚ#LoggerTests.test_logInvalidLogLevelü   s<   € ô ‹lˆà�‰�Ôà×'Ñ'Ô(<Ó=ˆØ×Ñœ˜V› aÕ(r$   c                 óÊ   ^ ^^^• [        [        5      S[        SS4U4S jj5       m[        [        5      S[        SS4UUU 4S jj5       m[        TS9mTR	                  S/ S9  g)	z5
Tracing keeps track of forwarding to the publisher.
r   r   Nc                 ó   >• T" U 5        g r   r2   )r   r"   s    €r!   Ú	publisherÚ)LoggerTests.test_trace.<locals>.publisher  s
   ø€ á�U�Or$   c                 ó6   >• TR                  U S   TT4/5        g )NÚ	log_tracer…   )r   r?   rµ   r    s    €€€r!   r"   Ú(LoggerTests.test_trace.<locals>.observer  s    ø€ à×Ñ˜U ;Ñ/°3¸	Ð2BÐ1CÕDr$   rb   zHello.)r¸   r�   )r    r?   r"   rµ   s   `@@@r!   Ú
test_traceÚLoggerTests.test_trace  sw   û€ ô
 
”\Ó	"ð	œXð 	¨$ö 	ó 
#ð	ô 
”\Ó	"ð	EœHð 	E¨÷ 	Eð 	Eó 
#ð	Eô  )Ñ,ˆØ�‰� RˆÒ(r$   c                 óÌ  ^^• / m[        [        5      S[        SS4U4S jj5       n[        US9nSm " U4S jS5      nUR	                  S	U" 5       S
9 nSS-    SSS5        U R                  WR                  S5        U R                  UR                  S5        U R                  [        T5      S5        Tu  n/ TSS& US   nU R                  TS5        U R                  [        U5      S5        U R                  TS5        U R                  UR                  [        5        UR	                  SU" 5       S
9 nU R                  UR                  S5        U R                  UR                  S5        SSS5        U R                  TS5        U R                  WR                  S5        U R                  UR                  S5        g! , (       d  f       GNp= f! , (       d  f       Nk= f)zv
The L{Logger.failuresHandled} context manager catches any
L{BaseException} and converts it into a logged L{Failure}.
r   r   Nc                 ó(   >• TR                  U 5        g r   ©rc   ©r   Úeventss    €r!   ÚloggedÚ0LoggerTests.test_failuresHandled.<locals>.logged  ó   ø€ à�M‰M˜%Õ r$   rb   r   c                   ó*   >• \ rS rSrS\4U 4S jjrSrg)Ú2LoggerTests.test_failuresHandled.<locals>.Reprablei%  r   c                 ó   >• TS-  mST S3$ )Nrg   z<repr r<   r2   )r    Úreprds    €r!   Ú__repr__Ú;LoggerTests.test_failuresHandled.<locals>.Reprable.__repr__&  s   ø€ à˜‘
�Ø ˜w aÐ(Ð(r$   r2   N)r*   r+   r,   r-   r/   rÈ   r1   )rÇ   s   €r!   ÚReprablerÅ   %  s   ø† ð) #÷ )ò )r$   rÊ   z*while testing failure handling for {value})Úvaluerg   FTÚlog_failurez+while testing failure handling for <repr 1>zsucceeding for {value})r   r   r   r   ÚfailuresHandledrE   Ú	succeededÚfailedrj   r   ÚtypeÚZeroDivisionError)	r    rÁ   r?   rÊ   Ú	operationÚfÚop2rÀ   rÇ   s	          @@r!   Útest_failuresHandledÚ LoggerTests.test_failuresHandled  s·  ù€ ð
 ˆä	”\Ó	"ð	!œ(ð 	! tö 	!ó 
#ð	!ô  &Ñ)ˆØˆ÷	)ô 	)ð × Ñ Ø8ÁÃ
ð !ñ 
àØ�ŠE÷
ð 	×Ñ˜×,Ñ,¨eÔ4Ø×Ñ˜×)Ñ)¨4Ô0Ø×Ñœ˜V› aÔ(Ø‰ˆØˆ‰qˆ	Ø˜MÑ*ˆØ×Ñ˜ Ô"Ø×ÑÜ˜ÓÐ!Nô	
ð 	×Ñ˜ Ô"Ø×Ñ˜Ÿ™Ô!2Ô3Ø× Ñ Ð!9ÁÃÐ ÑLÐPSØ×Ñ˜SŸ]™]¨EÔ2Ø×Ñ˜SŸZ™Z¨Ô/÷ Mð 	×Ñ˜ Ô"Ø×Ñ˜Ÿ™¨Ô-Ø×Ñ˜Ÿ™ UÕ+÷+
ö 
ú÷  MÕLús   ÁGÄ79GÇ
GÇ
G#c                 ó
  ^• / m[        [        5      S[        SS4U4S jj5       n[        US9nUR	                  S5      nSnU nSnSSS5        U R                  WS5        U R                  US5        U R                  T/ 5        SnSS	 jnU nU" 5         SSS5        U R                  [        T5      S
5        Tu  nUS   nU R                  UR                  [        5        g! , (       d  f       N¢= f! , (       d  f       Nd= f)z—
The L{Logger.failureHandler} context manager can safely be shared
amongst multiple invocations and converts L{BaseException} into logged
L{Failure}s.
r   r   Nc                 ó(   >• TR                  U 5        g r   r¾   r¿   s    €r!   rÁ   Ú/LoggerTests.test_failureHandler.<locals>.loggedJ  rÃ   r$   rb   rf   FTc                  ó   • [        5       er   )ÚKeyboardInterruptr2   r$   r!   Ú	raisebaseÚ2LoggerTests.test_failureHandler.<locals>.raisebaseY  s   € Ü#Ó%Ð%r$   rg   rÌ   ©r   N)
r   r   r   r   ÚfailureHandlerrW   rE   rj   rÐ   rÛ   )	r    rÁ   r?   rß   ÚsuccessÚfhrÜ   rÓ   rÀ   s	           @r!   Útest_failureHandlerÚLoggerTests.test_failureHandlerB  sô   ø€ ð ˆä	”\Ó	"ð	!œ(ð 	! tö 	!ó 
#ð	!ô  &Ñ)ˆà×+Ñ+¨GÓ4ˆØˆÙ˜rØˆG÷ à�‰�b˜$ÔØ×Ñ˜ $Ô'Ø×Ñ˜ Ô$Øˆô	&ñ ˜rÙŒK÷ ð 	×Ñœ˜V› aÔ(Ø‰ˆØ�=Ñ!ˆØ×Ñ˜Ÿ™Ô!2Õ3÷! �^ú÷ �^ús   ÁC#ÂC4Ã#
C1Ã4
Dr2   rÞ   )r*   r+   r,   r-   r.   rH   rL   rS   r\   rk   rr   r€   r�   r˜   rž   r¨   r®   r±   rº   rÕ   râ   r1   r2   r$   r!   rA   rA   ?   sZ   † ñôCô2ô;ô+ô,=ôBô>ô:,ô,ô
ô:ô 3ô&	)ô)ô ),÷V 4r$   rA   N)r.   Útypingr   r   r   r   Úzope.interfacer   Ú
constantlyr   Útwisted.python.failurer	   Útwisted.trialr
   Ú_formatr   Ú_globalr   Ú_interfacesr   r   Ú_levelsr   r   Ú_loggerr   r   r4   ÚTestCaserA   r2   r$   r!   Ú<module>rï      sW   ðñ÷ .Ó -å &å $å *Ý "Ý !Ý (ß 0ß 4Ý ô
�ô 
÷43ñ 3ôc4�(×#Ñ#õ c4r$   