ó
    Ö›‘h!"  ã                  óL  • S r SSKJr  SSKrSSKrSSKJr  SSKJ	r	J
r
  SSKJrJrJrJr  SSK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Jr  SSK J!r!  SSK"J#r#  SS jr$ " S S5      r% " S S\RL                  5      r'SS jr( " S S\RR                  5      r*g)z+
Test cases for L{twisted.logger._format}.
é    )ÚannotationsN)Úgetsourcefile)ÚBytesIOÚTextIOWrapper)Ú	FormatterÚ	LogRecordÚStreamHandlerÚ	getLogger)ÚListÚOptionalÚTuple)ÚBrokenMethodImplementation)ÚverifyObject)Úcurrentframe)ÚFailure)Úunittesté   )ÚILogObserverÚLogEvent)ÚLogLevel)ÚSTDLibLogObserverc                 óˆ   • [        S5      n [        [        R                  U R                  S      5      U R
                  S-   4$ )z€
Retrive the file name and line number immediately after where this function
is called.

@return: the file name and line number
é   Ú__name__)r   r   ÚsysÚmodulesÚ	f_globalsÚf_lineno)Úcallers    ÚcC:\Users\psant\Downloads\Noiseback\school\venv\Lib\site-packages\twisted/logger/test/test_stdlib.pyÚnextLiner!      s?   € ô ˜!‹_€Fä”c—k‘k &×"2Ñ"2°:Ñ">Ñ?Ó@Ø�‰˜!Ñðð ó    c                  ó6   • \ rS rSrSrSS jrSS jrS	S jrSrg)
ÚStdlibLoggingContaineré)   z>
Continer for a test configuration of stdlib logging objects.
c                ó”  • [        S5      U l        U R                  R                  5       U l        U R                  R	                  [
        R                  5        [        5       U l        U R                  R                  U R                  5        [        5       u  U l        U l        U R                  R                  U R                  5        g )NÚ )r
   Ú
rootLoggerÚgetEffectiveLevelÚoriginalLevelÚsetLevelÚ
py_loggingÚDEBUGÚBufferedHandlerÚbufferedHandlerÚ
addHandlerÚhandlerAndBytesIOÚstreamHandlerÚoutput©Úselfs    r    Ú__init__ÚStdlibLoggingContainer.__init__.   s‡   € Ü# B›-ˆŒà!Ÿ_™_×>Ñ>Ó@ˆÔØ�‰× Ñ ¤×!1Ñ!1Ô2ä.Ó0ˆÔØ�‰×"Ñ" 4×#7Ñ#7Ô8ä*;Ó*=Ñ'ˆÔ˜DœKØ�‰×"Ñ" 4×#5Ñ#5Õ6r"   c                óJ  • U R                   R                  U R                  5        U R                   R                  U R                  5        U R                   R                  U R
                  5        U R
                  R                  5         U R                  R                  5         g)z
Close the logger.
N)r(   r+   r*   ÚremoveHandlerr/   r2   Úcloser3   r4   s    r    r:   ÚStdlibLoggingContainer.close:   sn   € ð 	�‰× Ñ  ×!3Ñ!3Ô4Ø�‰×%Ñ% d×&:Ñ&:Ô;Ø�‰×%Ñ% d×&8Ñ&8Ô9Ø×Ñ× Ñ Ô"Ø�‰×ÑÕr"   c                óT   • U R                   R                  5       R                  S5      $ )zL
Get the output to the underlying stream as text.

@return: the output text
úutf-8)r3   ÚgetvalueÚdecoder4   s    r    ÚoutputAsTextÚ#StdlibLoggingContainer.outputAsTextD   s"   € ð �{‰{×#Ñ#Ó%×,Ñ,¨WÓ5Ð5r"   )r/   r*   r3   r(   r2   N©ÚreturnÚNone)rC   Ústr)	r   Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r6   r:   r@   Ú__static_attributes__© r"   r    r$   r$   )   s   † ñô
7ô÷6r"   r$   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rg)ÚSTDLibLogObserverTestséM   z!
Tests for L{STDLibLogObserver}.
c                óŠ   • [        5       n [        [        U5        g! [         a  nU R	                  U5         SnAgSnAff = f)z-
L{STDLibLogObserver} is an L{ILogObserver}.
N)r   r   r   r   Úfail)r5   ÚobserverÚes      r    Útest_interfaceÚ%STDLibLogObserverTests.test_interfaceR   s8   € ô %Ó&ˆð	Üœ xÕ0øÜ)ó 	Ø�I‰I�a�L‰Lûð	ús   Œ �
A§=½Ac                óP   • [        5       nU R                  UR                  5        U$ )zR
Create a logging object we can use to test with.

@return: a stdlib-style logger
)r$   Ú
addCleanupr:   )r5   Úloggers     r    Ú	py_loggerÚ STDLibLogObserverTests.py_logger\   s!   € ô (Ó)ˆØ�‰˜Ÿ™Ô%Øˆr"   c                óÄ   • U R                  5       n[        [        R                  S-   S9nU H  nU" U5        M     UR                  R                  UR                  5       4$ )z¶
Send one or more events to Python's logging module, and capture the
emitted L{LogRecord}s and output stream as a string.

@param events: events

@return: a tuple: (records, output)
r   )Ú
stackDepth)rX   r   ÚdefaultStackDepthr/   Úrecordsr@   )r5   ÚeventsÚplrQ   Úevents        r    ÚlogEventÚSTDLibLogObserverTests.logEventf   s`   € ð �^‰^ÓˆÜ$ô )×:Ñ:Øññ
ˆó ˆEÙ�UŽOñ ð ×!Ñ!×)Ñ)¨2¯?©?Ó+<Ð<Ð<r"   c                óž   • U R                  0 5      u  pU R                  [        U5      S5        U R                  US   R                  S5        g)z
Logger name.
r   r   ÚtwistedN)ra   ÚassertEqualÚlenÚname©r5   r]   r3   s      r    Ú	test_nameÚ STDLibLogObserverTests.test_name|   s@   € ð Ÿ-™-¨Ó+‰ˆà×Ñœ˜W› qÔ)Ø×Ñ˜ ™Ÿ™¨)Õ4r"   c                óÀ  • S[         R                  [        R                  [         R                  [        R
                  [         R                  [        R                  [         R                  [        R                  [         R                  [        R                  [         R                  0n/ nUR                  5        H-  u  p40 nUb  X5S'   [        U5      US'   UR                  U5        M/     U R                  " U6 u  pgU R!                  [#        U5      [#        U5      5        [%        [#        U5      5       H&  nU R!                  Xh   R&                  X(   S   5        M(     g)z
Log levels.
NÚ	log_levelÚ
py_levelno)r,   ÚINFOr   Údebugr-   ÚinfoÚwarnÚWARNINGÚerrorÚERRORÚcriticalÚCRITICALÚitemsÚintÚappendra   re   rf   ÚrangeÚlevelno)	r5   ÚlevelMappingr^   ÚlevelÚpyLevelr`   r]   r3   Úis	            r    Útest_levelsÚ"STDLibLogObserverTests.test_levels…   s  € ð
 ”*—/‘/Ü�N‰NœJ×,Ñ,Ü�M‰Mœ:Ÿ?™?Ü�M‰Mœ:×-Ñ-Ü�N‰NœJ×,Ñ,Ü×Ñœz×2Ñ2ð
ˆð ˆØ*×0Ñ0Ö2‰NˆEØˆEð Ñ Ø%*�kÑ"ô #& g£,ˆE�,Ñà�M‰M˜%Ö ñ 3ð Ÿ-š-¨Ð0‰ˆØ×Ñœ˜W›¤s¨<Ó'8Ô9ô ”s˜7“|Ö$ˆAØ×Ñ˜W™Z×/Ñ/°±¸<Ñ1HÖIò %r"   c                ó0  • [        5       u  pU R                  0 5      u  p4U R                  [        U5      S5        U R                  US   R                  U5        U R                  US   R
                  U5        U R                  US   R                  5        g)zJ
C{pathname}, C{lineno}, C{exc_info}, C{func} is set properly on
records.
r   r   N)r!   ra   re   rf   ÚpathnameÚlinenoÚassertIsNoneÚexc_info)r5   ÚfilenameÚlogLiner]   r3   s        r    Útest_callerInfoÚ&STDLibLogObserverTests.test_callerInfo¨   s~   € ô
 %›JÑˆØŸ-™-¨Ó+‰ˆà×Ñœ˜W› qÔ)Ø×Ñ˜ ™×,Ñ,¨hÔ7Ø×Ñ˜ ™×*Ñ*¨GÔ4Ø×Ñ˜' !™*×-Ñ-Õ.r"   c                ó  • [        SSS9nU R                  U5      u  p#U R                  [        U5      S5        U R                  [	        US   R
                  5      S5        U R                  US   R                  S5        g)	z<
Basic formattable event passes the format along correctly.
úHello, {who}!Údude©Ú
log_formatÚwhor   r   zHello, dude!rK   N)Údictra   re   rf   rE   ÚmsgÚargs©r5   r`   r]   r3   s       r    Útest_basicFormatÚ'STDLibLogObserverTests.test_basicFormat¹   si   € ô  °VÑ<ˆØŸ-™-¨Ó.‰ˆà×Ñœ˜W› qÔ)Ø×Ñœ˜W Q™ZŸ^™^Ó,¨nÔ=Ø×Ñ˜ ™Ÿ™¨"Õ-r"   c                óÈ   • [        SSS9nU R                  U5      u  p#U R                  [        U5      S5        U R	                  UR                  S5      [        U5      5        g)z,
Basic formattable event renders correctly.
rŒ   r�   rŽ   r   z:Hello, dude!
N)r‘   ra   re   rf   Ú
assertTrueÚendswithÚreprr”   s       r    Útest_basicFormatRenderedÚ/STDLibLogObserverTests.test_basicFormatRenderedÄ   sP   € ô  °VÑ<ˆØŸ-™-¨Ó.‰ˆà×Ñœ˜W› qÔ)Ø�‰˜Ÿ™Ð(9Ó:¼DÀ»LÕIr"   c                ó°   • U R                  0 5      u  pU R                  [        U5      S5        U R                  [        US   R                  5      S5        g)z
Event with no format.
r   r   r'   N)ra   re   rf   rE   r’   rh   s      r    Útest_noFormatÚ$STDLibLogObserverTests.test_noFormatÎ   sE   € ð Ÿ-™-¨Ó+‰ˆà×Ñœ˜W› qÔ)Ø×Ñœ˜W Q™ZŸ^™^Ó,¨bÕ1r"   c                ó0  • S	S jn U" 5         [        SSWS9nU R                  U5      u  pEU R	                  [        U5      S5        U R                  SU5        U R                  SU5        U R                  SU5        g! [          a    [        5       n N†f = f)
z;
An event with a failure logs the failure details as well.
c                 ó   • SS-    g ©Nr   r   rK   rK   r"   r    Úfailing_funcÚ9STDLibLogObserverTests.test_failure.<locals>.failing_funcÜ   ó	   € Ø�‹Er"   úHi momÚme©r�   r�   Úlog_failurer   úin failing_funcÚZeroDivisionErrorNrB   )r«   r   r‘   ra   re   rf   ÚassertIn©r5   r£   Úfailurer`   r]   r3   s         r    Útest_failureÚ#STDLibLogObserverTests.test_failure×   s‰   € ô
	ð	 ÙŒNô  ¨dÀÑHˆØŸ-™-¨Ó.‰ˆà×Ñœ˜W› qÔ)Ø�‰�h Ô'Ø�‰Ð'¨Ô0Ø�‰Ð)¨6Õ2øô !ó 	 Ü“iŠGð	 ús   ‡A> Á>BÂBc                óP  • S	S jn U" 5         [        SSWS9nU R	                  U5      u  pEU R                  [        U5      S5        U R                  SU5        U R                  SU5        U R                  SU5        g! [          a    [        5       nUR                  5          N–f = f)
z’
A cleaned Failure object has a fake traceback object; make sure that
logging such a failure still results in the exception details being
logged.
c                 ó   • SS-    g r¢   rK   rK   r"   r    r£   Ú@STDLibLogObserverTests.test_cleanedFailure.<locals>.failing_funcó   r¥   r"   r¦   r§   r¨   r   rª   r«   NrB   )r«   r   ÚcleanFailurer‘   ra   re   rf   r¬   r­   s         r    Útest_cleanedFailureÚ*STDLibLogObserverTests.test_cleanedFailureì   s•   € ô	ð	#ÙŒNô
  ¨dÀÑHˆØŸ-™-¨Ó.‰ˆà×Ñœ˜W› qÔ)Ø�‰�h Ô'Ø�‰Ð'¨Ô0Ø�‰Ð)¨6Õ2øô !ó 	#Ü“iˆGØ× Ñ Ö"ð	#ús   ‡A> Á>$B%Â$B%rK   NrB   )rC   r$   )r^   r   rC   zTuple[List[LogRecord], str])r   rF   rG   rH   rI   rS   rX   ra   ri   r€   r‰   r•   r›   rž   r¯   rµ   rJ   rK   r"   r    rM   rM   M   sA   † ñôôô=ô,5ô!JôF/ô"	.ôJô2ô3÷*3r"   rM   c                 ó    • [        5       n [        R                  n[        U SSS9n[	        U5      n[        U5      nUR                  U5        X@4$ )z‡
Construct a 2-tuple of C{(StreamHandler, BytesIO)} for testing interaction
with the 'logging' module.

@return: handler and io object
r=   Ú
)ÚencodingÚnewline)r   r,   ÚBASIC_FORMATr   r   r	   ÚsetFormatter)r3   ÚtemplateÚstreamÚ	formatterÚhandlers        r    r1   r1     sN   € ô ‹Y€FÜ×&Ñ&€HÜ˜6¨G¸TÑB€FÜ˜(Ó#€IÜ˜FÓ#€GØ×Ñ˜Ô#Øˆ?Ðr"   c                  ó,   • \ rS rSrSrSS jrSS jrSrg)	r.   i  zF
A L{py_logging.Handler} that remembers all logged records in a list.
c                óP   • [         R                  R                  U 5        / U l        g)z%
Initialize this L{BufferedHandler}.
N)r,   ÚHandlerr6   r]   r4   s    r    r6   ÚBufferedHandler.__init__  s   € ô 	×Ñ×#Ñ# DÔ)Ø(*ˆ�r"   c                ó:   • U R                   R                  U5        g)z
Remember the record.
N)r]   ry   )r5   Úrecords     r    ÚemitÚBufferedHandler.emit!  s   € ð 	�‰×Ñ˜FÕ#r"   )r]   NrB   )rÆ   r   rC   rD   )r   rF   rG   rH   rI   r6   rÇ   rJ   rK   r"   r    r.   r.     s   † ñô+÷$r"   r.   )rC   zTuple[Optional[str], int])rC   z,tuple[StreamHandler[TextIOWrapper], BytesIO])+rI   Ú
__future__r   Úloggingr,   r   Úinspectr   Úior   r   r   r   r	   r
   Útypingr   r   r   Úzope.interface.exceptionsr   Úzope.interface.verifyr   Útwisted.python.compatr   Útwisted.python.failurer   Útwisted.trialr   Ú_interfacesr   r   Ú_levelsr   Ú_stdlibr   r!   r$   ÚTestCaserM   r1   rÃ   r.   rK   r"   r    Ú<module>r×      s{   ðñõ #ã Û 
Ý !ß %ß BÓ Bß (Ñ (å @Ý .å .Ý *Ý "ß 0Ý Ý 'ô÷!6ñ !6ôHu3˜X×.Ñ.ô u3ôpô $�j×(Ñ(õ $r"   