ó
    ã¾yj€(  ã                   óž   • S r SSKrSSKrSSKrSSKJr  SSKJr  SSKJ	r	  Sr
 " S S	\5      r " S
 S\R                  5      r " S S\5      rg)zRunning testsé    Né   )Úresult)Ú_SubTest)ÚregisterResultTc                   ó.   • \ rS rSrSrS rS rSS jrSrg)	Ú_WritelnDecoratoré   z@Used to decorate file-like objects with a handy 'writeln' methodc                 ó   • Xl         g ©N©Ústream)Úselfr   s     Ú&/usr/lib/python3.13/unittest/runner.pyÚ__init__Ú_WritelnDecorator.__init__   s   € Ø�ó    c                 óP   • US;   a  [        U5      e[        U R                  U5      $ )N)r   Ú__getstate__)ÚAttributeErrorÚgetattrr   )r   Úattrs     r   Ú__getattr__Ú_WritelnDecorator.__getattr__   s'   € ØÐ-Ó-Ü  Ó&Ð&Ü�t—{‘{ 4Ó(Ð(r   Nc                 óV   • U(       a  U R                  U5        U R                  S5        g ©NÚ
)Úwrite)r   Úargs     r   ÚwritelnÚ_WritelnDecorator.writeln   s   € ÞØ�J‰J�sŒOØ�
‰
�4Õr   r   r   )	Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r   r   r   Ú__static_attributes__© r   r   r   r      s   † ÙJòò)÷
r   r   c                   ó´   ^ • \ rS rSrSrSrSrSS.U 4S jjrS rU 4S	 jr	S
 r
U 4S jrU 4S jrU 4S jrU 4S jrU 4S jrU 4S jrU 4S jrS rS rSrU =r$ )ÚTextTestResulté   z`A test result class that can print formatted text results to a stream.

Used by TextTestRunner.
zF======================================================================zF----------------------------------------------------------------------N©Ú	durationsc                óˆ   >• [         [        U ]  XU5        Xl        US:„  U l        US:H  U l        X l        SU l        X@l        g)zoConstruct a TextTestResult. Subclasses should accept **kwargs
to ensure compatibility as the interface changes.r   TN)	Úsuperr)   r   r   ÚshowAllÚdotsÚdescriptionsÚ_newliner,   )r   r   r1   Ú	verbosityr,   Ú	__class__s        €r   r   ÚTextTestResult.__init__&   sC   ø€ ô 	Œn˜dÑ,¨VÀ9ÔMØŒØ  1‘}ˆŒØ ‘NˆŒ	Ø(ÔØˆŒØ"�r   c                 ó    • UR                  5       nU R                  (       a#  U(       a  SR                  [        U5      U45      $ [        U5      $ r   )ÚshortDescriptionr1   ÚjoinÚstr)r   ÚtestÚdoc_first_lines      r   ÚgetDescriptionÚTextTestResult.getDescription1   s=   € Ø×.Ñ.Ó0ˆØ××¦Ø—9‘9œc $›i¨Ð8Ó9Ð9ä�t“9Ðr   c                 ó  >• [         [        U ]  U5        U R                  (       ag  U R                  R                  U R                  U5      5        U R                  R                  S5        U R                  R                  5         SU l        g g )Nú ... F)	r.   r)   Ú	startTestr/   r   r   r<   Úflushr2   ©r   r:   r4   s     €r   r@   ÚTextTestResult.startTest8   sd   ø€ ÜŒn˜dÑ-¨dÔ3Ø�<�<Ø�K‰K×Ñ˜d×1Ñ1°$Ó7Ô8Ø�K‰K×Ñ˜gÔ&Ø�K‰K×ÑÔØ!ˆD�Mð	 r   c                 óð  • [        U[        5      nU(       d  U R                  (       a’  U R                  (       d  U R                  R	                  5         U(       a  U R                  R                  S5        U R                  R                  U R                  U5      5        U R                  R                  S5        U R                  R	                  U5        U R                  R                  5         SU l        g )Nz  r?   T)Ú
isinstancer   r2   r   r   r   r<   rA   )r   r:   ÚstatusÚ
is_subtests       r   Ú_write_statusÚTextTestResult._write_status@   s›   € Ü ¤hÓ/ˆ
Þ˜ŸŸØ—=—=Ø—‘×#Ñ#Ô%ÞØ—‘×!Ñ! $Ô'Ø�K‰K×Ñ˜d×1Ñ1°$Ó7Ô8Ø�K‰K×Ñ˜gÔ&Ø�‰×Ñ˜FÔ#Ø�‰×ÑÔØˆ�r   c                 óÞ  >• UbÕ  U R                   (       aD  [        US   UR                  5      (       a  U R                  US5        O“U R                  US5        O€U R                  (       ao  [        US   UR                  5      (       a  U R
                  R                  S5        OU R
                  R                  S5        U R
                  R                  5         [        [        U ]+  XU5        g )Nr   ÚFAILÚERRORÚFÚE)r/   Ú
issubclassÚfailureExceptionrH   r0   r   r   rA   r.   r)   Ú
addSubTest)r   r:   ÚsubtestÚerrr4   s       €r   rQ   ÚTextTestResult.addSubTestM   s©   ø€ Ø‰?Ø�|�|Ü˜c !™f g×&>Ñ&>×?Ñ?Ø×&Ñ& w°Õ7à×&Ñ& w°Õ8Ø——Ü˜c !™f g×&>Ñ&>×?Ñ?Ø—K‘K×%Ñ% cÕ*à—K‘K×%Ñ% cÔ*Ø—‘×!Ñ!Ô#ÜŒn˜dÑ.¨t¸cÕBr   c                 ó  >• [         [        U ]  U5        U R                  (       a  U R	                  US5        g U R
                  (       a6  U R                  R                  S5        U R                  R                  5         g g )NÚokÚ.)	r.   r)   Ú
addSuccessr/   rH   r0   r   r   rA   rB   s     €r   rX   ÚTextTestResult.addSuccess\   sW   ø€ ÜŒn˜dÑ.¨tÔ4Ø�<�<Ø×Ñ˜t TÕ*Ø�Y�YØ�K‰K×Ñ˜cÔ"Ø�K‰K×ÑÕð r   c                 ó  >• [         [        U ]  X5        U R                  (       a  U R	                  US5        g U R
                  (       a6  U R                  R                  S5        U R                  R                  5         g g )NrL   rN   )	r.   r)   ÚaddErrorr/   rH   r0   r   r   rA   ©r   r:   rS   r4   s      €r   r[   ÚTextTestResult.addErrord   sW   ø€ ÜŒn˜dÑ,¨TÔ7Ø�<�<Ø×Ñ˜t WÕ-Ø�Y�YØ�K‰K×Ñ˜cÔ"Ø�K‰K×ÑÕð r   c                 ó  >• [         [        U ]  X5        U R                  (       a  U R	                  US5        g U R
                  (       a6  U R                  R                  S5        U R                  R                  5         g g )NrK   rM   )	r.   r)   Ú
addFailurer/   rH   r0   r   r   rA   r\   s      €r   r_   ÚTextTestResult.addFailurel   sW   ø€ ÜŒn˜dÑ.¨tÔ9Ø�<�<Ø×Ñ˜t VÕ,Ø�Y�YØ�K‰K×Ñ˜cÔ"Ø�K‰K×ÑÕð r   c                 ó   >• [         [        U ]  X5        U R                  (       a"  U R	                  USR                  U5      5        g U R                  (       a6  U R                  R                  S5        U R                  R                  5         g g )Nzskipped {0!r}Ús)
r.   r)   ÚaddSkipr/   rH   Úformatr0   r   r   rA   )r   r:   Úreasonr4   s      €r   rc   ÚTextTestResult.addSkipt   sb   ø€ ÜŒn˜dÑ+¨DÔ9Ø�<�<Ø×Ñ˜t _×%;Ñ%;¸FÓ%CÕDØ�Y�YØ�K‰K×Ñ˜cÔ"Ø�K‰K×ÑÕð r   c                 óH  >• [         [        U ]  X5        U R                  (       a6  U R                  R                  S5        U R                  R                  5         g U R                  (       a6  U R                  R                  S5        U R                  R                  5         g g )Nzexpected failureÚx)	r.   r)   ÚaddExpectedFailurer/   r   r   rA   r0   r   r\   s      €r   ri   Ú!TextTestResult.addExpectedFailure|   sj   ø€ ÜŒn˜dÑ6°tÔAØ�<�<Ø�K‰K×ÑÐ 2Ô3Ø�K‰K×ÑÕØ�Y�YØ�K‰K×Ñ˜cÔ"Ø�K‰K×ÑÕð r   c                 óH  >• [         [        U ]  U5        U R                  (       a6  U R                  R                  S5        U R                  R                  5         g U R                  (       a6  U R                  R                  S5        U R                  R                  5         g g )Nzunexpected successÚu)	r.   r)   ÚaddUnexpectedSuccessr/   r   r   rA   r0   r   rB   s     €r   rm   Ú#TextTestResult.addUnexpectedSuccess…   sj   ø€ ÜŒn˜dÑ8¸Ô>Ø�<�<Ø�K‰K×ÑÐ 4Ô5Ø�K‰K×ÑÕØ�Y�YØ�K‰K×Ñ˜cÔ"Ø�K‰K×ÑÕð r   c                 ó4  • U R                   (       d  U R                  (       a4  U R                  R                  5         U R                  R	                  5         U R                  SU R                  5        U R                  SU R                  5        [        U SS5      nU(       av  U R                  R                  U R                  5        U H0  nU R                  R                  SU R                  U5       35        M2     U R                  R	                  5         g g )NrL   rK   ÚunexpectedSuccessesr'   zUNEXPECTED SUCCESS: )r0   r/   r   r   rA   ÚprintErrorListÚerrorsÚfailuresr   Ú
separator1r<   )r   rp   r:   s      r   ÚprintErrorsÚTextTestResult.printErrorsŽ   sÅ   € Ø�9�9˜ŸŸØ�K‰K×ÑÔ!Ø�K‰K×ÑÔØ×Ñ˜G T§[¡[Ô1Ø×Ñ˜F D§M¡MÔ2Ü% dÐ,AÀ2ÓFÐÞØ�K‰K×Ñ §¡Ô0Û+�Ø—‘×#Ñ#Ð&:¸4×;NÑ;NÈtÓ;TÐ:UÐ$VÖWñ ,à�K‰K×ÑÕð	 r   c                 ó€  • U H¸  u  p4U R                   R                  U R                  5        U R                   R                  U< SU R                  U5      < 35        U R                   R                  U R                  5        U R                   R                  SU-  5        U R                   R                  5         Mº     g )Nz: z%s)r   r   rt   r<   Ú
separator2rA   )r   Úflavourrr   r:   rS   s        r   rq   ÚTextTestResult.printErrorList›   s‚   € Û‰IˆDØ�K‰K×Ñ §¡Ô0Ø�K‰K×Ñ«G°D×4GÑ4GÈÕ4MÐ NÔOØ�K‰K×Ñ §¡Ô0Ø�K‰K×Ñ  s¡
Ô+Ø�K‰K×ÑÖò  r   )r2   r1   r0   r,   r/   r   )r!   r"   r#   r$   r%   rt   rx   r   r<   r@   rH   rQ   rX   r[   r_   rc   ri   rm   ru   rq   r&   Ú__classcell__)r4   s   @r   r)   r)      sc   ø† ñð €JØ€JàEI÷ 	#ð 	#òõ"òõCõ õ õ õ õ õ ò ÷ ð  r   r)   c                   óF   • \ rS rSrSr\r  SSSS.S jjrS rS r	S	 r
S
rg)ÚTextTestRunneré¤   z½A test runner class that displays results in textual form.

It prints out the names of tests as they are run, errors as they
occur, and a summary of the results at the end of the test run.
NF)Ú	tb_localsr,   c                ó²   • Uc  [         R                  n[        U5      U l        X l        X0l        X@l        XPl        X€l        X�l	        Xpl
        Ub  X`l        gg)zqConstruct a TextTestRunner.

Subclasses should accept **kwargs to ensure compatibility as the
interface changes.
N)ÚsysÚstderrr   r   r1   r3   ÚfailfastÚbufferr   r,   ÚwarningsÚresultclass)
r   r   r1   r3   rƒ   r„   r†   r…   r   r,   s
             r   r   ÚTextTestRunner.__init__¬   sS   € ð ‰>Ü—Z‘ZˆFÜ'¨Ó/ˆŒØ(ÔØ"ŒØ ŒØŒØ"ŒØ"ŒØ ŒØÑ"Ø*Õð #r   c                 óú   •  U R                  U R                  U R                  U R                  U R                  S9$ ! [
         a4    U R                  U R                  U R                  U R                  5      s $ f = f)Nr+   )r†   r   r1   r3   r,   Ú	TypeError)r   s    r   Ú_makeResultÚTextTestRunner._makeResultÁ   ss   € ð	4Ø×#Ñ# D§K¡K°×1BÑ1BØ$(§N¡N¸d¿n¹nð $ð Nð Nøäó 	4à×#Ñ# D§K¡K°×1BÑ1BØ$(§N¡Nó4ò 4ð	4ús   ‚9< ¼;A:Á9A:c                 óJ  • UR                   (       d  g [        UR                   S SS9nU R                  S:”  a  US U R                   nU R                  R	                  S5        [        US5      (       a%  U R                  R	                  UR                  5        SnU HE  u  pEU R                  S:  a
  US	:  a  SnM  U R                  R	                  S
U-  <S SU< 35        MG     U(       a  U R                  R	                  S5        g U R                  R	                  S5        g )Nc                 ó   • U S   $ )Nr   r'   )rh   s    r   Ú<lambda>Ú0TextTestRunner._printDurations.<locals>.<lambda>Í   s   € ¸Q¸qºTr   T)ÚkeyÚreverser   zSlowest test durationsrx   Fé   gü©ñÒMbP?z%.3fsÚ10Ú zA
(durations < 0.001s were hidden; use -v to show these durations)Ú )ÚcollectedDurationsÚsortedr,   r   r   Úhasattrrx   r3   )r   r   ÚlsÚhiddenr:   Úelapseds         r   Ú_printDurationsÚTextTestRunner._printDurationsÊ   sò   € Ø×(×(ØÜ�F×-Ñ-±>Ø ñ"ˆà�>‰>˜AÓØ�O�T—^‘^Ð$ˆBØ�‰×ÑÐ4Ô5Ü�6˜<×(Ñ(Ø�K‰K×Ñ × 1Ñ 1Ô2ØˆÛ‰MˆDØ�~‰~ Ó! g°£oØ�ÙØ�K‰K×Ñ¨g¸Õ.?ÂÐ FÖGñ	  ö
 Ø�K‰K×Ñð !Bõ Cð �K‰K×Ñ Õ#r   c                 ó¬  • U R                  5       n[        U5        U R                  Ul        U R                  Ul        U R                  Ul        [
        R                  " 5          U R
                  (       a   [
        R                  " U R
                  5        [        R                  " 5       n[        USS5      nUb  U" 5          U" U5        [        USS5      nUb  U" 5         [        R                  " 5       nSSS5        WW-
  nUR                  " 5         U R                  b  U R                  U5        [        US5      (       a%  U R                  R!                  UR"                  5        UR$                  nU R                  R!                  SXˆS:g  =(       a    S=(       d    SU4-  5        U R                  R!                  5         S	=n	=p« ['        [(        UR*                  UR,                  UR.                  45      nUu  pšn/ nUR2                  " 5       (       d{  U R                  R5                  S
5        [)        UR6                  5      [)        UR8                  5      pþU(       a  UR;                  SU-  5        U(       a  UR;                  SU-  5        ODUS	:X  a#  U(       d  U R                  R5                  S5        OU R                  R5                  S5        U(       a  UR;                  SU-  5        U	(       a  UR;                  SU	-  5        U
(       a  UR;                  SU
-  5        U(       a0  U R                  R!                  SSR=                  U5      < S35        OU R                  R5                  S5        U R                  R?                  5         U$ ! [        USS5      nUb  U" 5         f f = f! , (       d  f       GNÃ= f! [0         a     GNÒf = f)z&Run the given test case or test suite.ÚstartTestRunNÚstopTestRunrx   zRan %d test%s in %.3fsr   rb   r•   r   ÚFAILEDzfailures=%dz	errors=%dzNO TESTS RANÚOKz
skipped=%dzexpected failures=%dzunexpected successes=%dz (z, Ú)r   ) rŠ   r   rƒ   r„   r   r…   Úcatch_warningsÚsimplefilterÚtimeÚperf_counterr   ru   r,   rœ   r˜   r   r   rx   ÚtestsRunÚmapÚlenÚexpectedFailuresrp   Úskippedr   ÚwasSuccessfulr   rs   rr   Úappendr8   rA   )r   r:   r   Ú	startTimerŸ   r    ÚstopTimeÚ	timeTakenÚrunÚexpectedFailsrp   r¬   ÚresultsÚinfosÚfailedÚerroreds                   r   r²   ÚTextTestRunner.runà   s  € à×!Ñ!Ó#ˆÜ�vÔØŸ-™-ˆŒØŸ™ˆŒØŸ>™>ˆÔÜ×$Ò$Õ&Ø�}�}ä×%Ò% d§m¡mÔ4Ü×)Ò)Ó+ˆIÜ" 6¨>¸4Ó@ˆLØÑ'Ù”ð"Ù�V”ä% f¨m¸TÓB�ØÑ*Ù”MÜ×(Ò(Ó*ˆH÷ 'ð ˜yÑ(ˆ	Ø×ÒÔØ�>‰>Ñ%Ø× Ñ  Ô(ä�6˜<×(Ñ(Ø�K‰K×Ñ × 1Ñ 1Ô2à�o‰oˆØ�‰×ÑÐ4Ø ¨¡(×"2¨s×"8°b¸)ÐDñEô 	Fà�‰×ÑÔà89Ð9ˆÐ9Ð+ð	BÜœ# × 7Ñ 7Ø &× :Ñ :Ø &§¡ð 0ó 1ˆGð ;BÑ7ˆM°àˆØ×#Ò#×%Ñ%Ø�K‰K×Ñ˜hÔ'Ü! &§/¡/Ó2´C¸¿¹Ó4F�GÞØ—‘˜]¨VÑ3Ô4ÞØ—‘˜[¨7Ñ2Ô3øØ�A‹XžgØ�K‰K×Ñ˜nÕ-à�K‰K×Ñ˜dÔ#ÞØ�L‰L˜¨Ñ/Ô0ÞØ�L‰LÐ/°-Ñ?Ô@ÞØ�L‰LÐ2Ð5HÑHÔIÞØ�K‰K×Ò¨4¯9©9°UÖ+;Ð =Õ>à�K‰K×Ñ˜dÔ#Ø�‰×ÑÔØˆøôe & f¨m¸TÓB�ØÑ*Ù•Mð +ú÷ 'Ö&ûôB ó 	Úð	ús7   Á$AN3ÃNÃ,N3Ç
1O ÎN0Î0N3Î3
OÏ
OÏO)	r„   r1   r,   rƒ   r†   r   r   r3   r…   )NTr   FFNN)r!   r"   r#   r$   r%   r)   r†   r   rŠ   rœ   r²   r&   r'   r   r   r}   r}   ¤   s3   † ñð
 !€KàABØJNð+à#¨tö+ò*4ò$õ,Dr   r}   )r%   r�   r¦   r…   r•   r   Úcaser   Úsignalsr   Ú
__unittestÚobjectr   Ú
TestResultr)   r}   r'   r   r   Ú<module>r¾      sN   ðÙ ã 
Û Û å Ý Ý #à€
ô˜ô ô C �V×&Ñ&ô C ôL@�Võ @r   