ó
    F\hÈ4  ã                   ó�   • S r SSKrSSKJr  SSKJr  SrS r " S S	\5      r " S
 S \5      r	 " S S\5      r
S r " S S\5      rg)Ú	TestSuiteé    Né   )Úcase)ÚutilTc                 ó,   • [        XS 5      nU" 5         g )Nc                  ó   • g ©N© r
   ó    Ú%/usr/lib/python3.13/unittest/suite.pyÚ<lambda>Ú!_call_if_exists.<locals>.<lambda>   s   € ¨r   )Úgetattr)ÚparentÚattrÚfuncs      r   Ú_call_if_existsr      s   € Ü�6¡Ó.€DÙ…Fr   c                   ób   • \ rS rSrSrSrSS jrS rS rS r	S r
S	 rS
 rS rS rS rS rSrg)ÚBaseTestSuiteé   zNA simple test suite that doesn't provide class or module shared fixtures.
    Tc                 óB   • / U l         SU l        U R                  U5        g ©Nr   )Ú_testsÚ_removed_testsÚaddTests)ÚselfÚtestss     r   Ú__init__ÚBaseTestSuite.__init__   s   € ØˆŒØˆÔØ�‰�eÕr   c                 óf   • S[         R                  " U R                  5      < S[        U 5      < S3$ )NÚ<z tests=Ú>)r   ÚstrclassÚ	__class__Úlist©r   s    r   Ú__repr__ÚBaseTestSuite.__repr__   s   � Ü"&§-¢-°·±Ö"?ÄÀdÆÐLÐLr   c                 óp   • [        XR                  5      (       d  [        $ [        U 5      [        U5      :H  $ r	   )Ú
isinstancer$   ÚNotImplementedr%   )r   Úothers     r   Ú__eq__ÚBaseTestSuite.__eq__   s*   € Ü˜%§¡×0Ñ0Ü!Ð!Ü�D‹zœT %›[Ñ(Ð(r   c                 ó,   • [        U R                  5      $ r	   )Úiterr   r&   s    r   Ú__iter__ÚBaseTestSuite.__iter__"   s   € Ü�D—K‘KÓ Ð r   c                 óf   • U R                   nU  H  nU(       d  M  XR                  5       -  nM      U$ r	   )r   ÚcountTestCases)r   ÚcasesÚtests      r   r4   ÚBaseTestSuite.countTestCases%   s4   € Ø×#Ñ#ˆÛˆDßˆtØ×,Ñ,Ó.Ñ.’ñ ð ˆr   c                 ó*  • [        U5      (       d#  [        SR                  [        U5      5      5      e[	        U[
        5      (       a0  [        U[        R                  [        45      (       a  [        S5      eU R                  R                  U5        g )Nz{} is not callablezNTestCases and TestSuites must be instantiated before passing them to addTest())ÚcallableÚ	TypeErrorÚformatÚreprr*   ÚtypeÚ
issubclassr   ÚTestCaser   r   Úappend©r   r6   s     r   ÚaddTestÚBaseTestSuite.addTest,   su   € ä˜�~‰~ÜÐ0×7Ñ7¼¸T»
ÓCÓDÐDÜ�dœD×!Ñ!¤j°Ü26·-±-ÄÐ1K÷'Mñ 'Mäð ?ó @ð @à�‰×Ñ˜4Õ r   c                 óx   • [        U[        5      (       a  [        S5      eU H  nU R                  U5        M     g )Nz0tests must be an iterable of tests, not a string)r*   Ústrr:   rB   )r   r   r6   s      r   r   ÚBaseTestSuite.addTests6   s1   € Ü�eœS×!Ñ!ÜÐNÓOÐOÛˆDØ�L‰L˜Öò r   c                 ó®   • [        U 5       HE  u  p#UR                  (       a    U$ U" U5        U R                  (       d  M4  U R                  U5        MG     U$ r	   )Ú	enumerateÚ
shouldStopÚ_cleanupÚ_removeTestAtIndex)r   ÚresultÚindexr6   s       r   ÚrunÚBaseTestSuite.run<   sL   € Ü$ Tž?‰KˆEØ× × Øð ˆñ �ŒLØ�}�}‰}Ø×'Ñ'¨Ö.ñ +ð ˆr   c                 óÊ   •  U R                   U   n[        US5      (       a#  U =R                  UR                  5       -  sl        SU R                   U'   g! [         a     gf = f)z2Stop holding a reference to the TestCase at index.r4   N)r   Úhasattrr   r4   r:   )r   rM   r6   s      r   rK   Ú BaseTestSuite._removeTestAtIndexE   sa   € ð
	&Ø—;‘;˜uÑ%ˆDô �tÐ-×.Ñ.Ø×#Ò# t×':Ñ':Ó'<Ñ<Õ#Ø!%ˆD�K‰K˜Òøô ó 	áð	ús   ‚A Á
A"Á!A"c                 ó&   • U R                   " U0 UD6$ r	   ©rN   )r   ÚargsÚkwdss      r   Ú__call__ÚBaseTestSuite.__call__S   s   € Ø�xŠx˜Ð& Ñ&Ð&r   c                 ó6   • U  H  nUR                  5         M     g)ú7Run the tests without collecting errors in a TestResultN)ÚdebugrA   s     r   r[   ÚBaseTestSuite.debugV   s   € ãˆDØ�J‰JŽLò r   )r   r   N)r
   )Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__rJ   r   r'   r-   r1   r4   rB   r   rN   rK   rW   r[   Ú__static_attributes__r
   r   r   r   r      sD   † ñà€Hôò
Mò)ò
!òò!òòò&ò'õr   r   c                   ó^   • \ rS rSrSrSS jrS rS rS rS r	 SS	 jr
 SS
 jrS rS rSrg)r   é\   a›  A test suite is a composite test consisting of a number of TestCases.

For use, create an instance of TestSuite, then add test case instances.
When all tests have been added, the suite can be passed to a test
runner, such as TextTestRunner. It will run the individual test cases
in the order in which they were added, aggregating the results. When
subclassing, do not forget to call the base class constructor.
c                 ó|  • Sn[        USS5      SL a	  S=Ul        n[        U 5       Hà  u  pEUR                  (       a    OÌ[	        U5      (       at  U R                  XQ5        U R                  XQ5        U R                  XQ5        UR                  Ul	        [        UR                  SS5      (       d  [        USS5      (       a  Mœ  U(       d	  U" U5        OUR                  5         U R                  (       d  MÏ  U R                  U5        Mâ     U(       a*  U R                  S U5        U R                  U5        SUl        U$ )NFÚ_testRunEnteredTÚ_classSetupFailedÚ_moduleSetUpFailed)r   rf   rH   rI   Ú_isnotsuiteÚ_tearDownPreviousClassÚ_handleModuleFixtureÚ_handleClassSetUpr$   Ú_previousTestClassr[   rJ   rK   Ú_handleModuleTearDown)r   rL   r[   ÚtopLevelrM   r6   s         r   rN   ÚTestSuite.runf   s  € ØˆÜ�6Ð,¨eÓ4¸Ò=Ø04Ð4ˆFÔ" Xä$ Tž?‰KˆEØ× × Ùä˜4× Ñ Ø×+Ñ+¨DÔ9Ø×)Ñ)¨$Ô7Ø×&Ñ& tÔ4Ø,0¯N©N�Ô)ä˜DŸN™NÐ,?À×GÑGÜ˜FÐ$8¸%×@Ñ@ÙæÙ�V•à—
‘
”à�}�}‰}Ø×'Ñ'¨Ö.ñ) +ö, Ø×'Ñ'¨¨fÔ5Ø×&Ñ& vÔ.Ø%*ˆFÔ"Øˆr   c                 ó<   • [        5       nU R                  US5        g)rZ   TN)Ú_DebugResultrN   )r   r[   s     r   r[   ÚTestSuite.debug‡   s   € ä“ˆØ�‰�˜Õr   c           	      ó´  • [        USS 5      nUR                  nXC:X  a  g UR                  (       a  g [        USS5      (       a  g Sn SUl        [        USS 5      n[        USS 5      nUb[  [        US5          U" 5         U(       a2  Ub/  U" 5         UR                   H  n
U R                  X*S   SW	U
S	9  M     [        US
5        g g ! [         a     N…f = f! [         ad  n[        U[        5      (       a  e Sn SUl        O! [         a     Of = f[        R                  " U5      n	U R                  X(SU	5         S nANÀS nAff = f! [        US
5        f = f)Nrm   Ú__unittest_skip__FÚ
setUpClassÚdoClassCleanupsÚ_setupStdoutTr   ©ÚinfoÚ_restoreStdout)r   r$   rh   rg   r:   r   Ú	Exceptionr*   rr   r   r#   Ú"_createClassOrModuleLevelExceptionÚtearDown_exceptions)r   r6   rL   ÚpreviousClassÚcurrentClassÚfailedrv   rw   ÚeÚ	classNameÚexc_infos              r   rl   ÚTestSuite._handleClassSetUpŽ   s~  € Ü Ð(<¸dÓCˆØ—~‘~ˆØÓ(ØØ×$×$ØÜ�<Ð!4°e×<Ñ<Øàˆð	Ø-2ˆLÔ*ô ˜\¨<¸Ó>ˆ
Ü! ,Ð0AÀ4ÓHˆØÑ!Ü˜F NÔ3ð:ðGÙ”Lö ˜oÑ9Ù#Ô%Ø$0×$DÔ$D˜Ø×?Ñ?Ø &°©°\À9Ø%-ð @ó /ñ %Eô
   Ð(8Õ9ð1 "øô ó 	ñ ð	ûô !ó GÜ! &¬,×7Ñ7ØØ!�FðØ9=˜Õ6øÜ$ó Ùðúä $§¢¨lÓ ;�IØ×;Ñ;¸FØ<HØ<E÷Gñ GûðGûô&   Ð(8Õ9úsf   ÁC Á:C Â9E	 Ã
CÃCÃ
EÃ"EÃ;DÄEÄ
DÄEÄDÄ,EÄ<E	 ÅEÅE	 Å	Ec                 óB   • S n[        USS 5      nUb  UR                  nU$ )Nrm   )r   r^   )r   rL   ÚpreviousModuler   s       r   Ú_get_previous_moduleÚTestSuite._get_previous_module¼   s-   € ØˆÜ Ð(<¸dÓCˆØÑ$Ø*×5Ñ5ˆNØÐr   c                 óŒ  • U R                  U5      nUR                  R                  nXC:X  a  g U R                  U5        SUl         [
        R                  U   n[        USS 5      nUbI  [        US5          U" 5         UR                  (       a   [        R                  " 5         [        US5        g g ! [         a     g f = f! [         a:  n[        U[        5      (       a  e SUl        U R                  X'SU5         S nAN„S nAff = f! [         a  nU R                  X'SU5         S nAN‡S nAff = f! [        US5        f = f)NFÚsetUpModulerx   Tr{   )rˆ   r$   r^   rn   rh   ÚsysÚmodulesÚKeyErrorr   r   r|   r*   rr   r}   r   ÚdoModuleCleanups)r   r6   rL   r‡   ÚcurrentModuleÚmoduler‹   r‚   s           r   rk   ÚTestSuite._handleModuleFixtureÄ   sN  € Ø×2Ñ2°6Ó:ˆØŸ™×1Ñ1ˆØÓ*Øà×"Ñ" 6Ô*ð %*ˆÔ!ð	Ü—[‘[ Ñ/ˆFô ˜f m°TÓ:ˆØÑ"Ü˜F NÔ3ð:ðKÙ”Mð ×,×,ðOÜ×-Ò-Ô/ô   Ð(8Õ9ð) #øô ó 	Ùð	ûô !ó KÜ! &¬,×7Ñ7ØØ04�FÔ-Ø×;Ñ;¸FØ<IØ<I÷Kñ Kûð	Kûô %ó OØ×?Ñ?ÀØ@MØ@M÷Oñ OûðOûô
   Ð(8Õ9úsf   ÁB4 Á8C Á?D5 ÂD Â4
CÃ CÃ
DÃ0DÃ>D5 ÄDÄD5 Ä
D2ÄD-Ä(D5 Ä-D2Ä2D5 Ä5ENc                 ó8   • U SU S3nU R                  XXe5        g )Nz (Ú))Ú_addClassOrModuleLevelException)r   rL   ÚexcÚmethod_namer   rz   Ú	errorNames          r   r}   Ú,TestSuite._createClassOrModuleLevelExceptioné   s$   € à"�m 2 f X¨QÐ/ˆ	Ø×,Ñ,¨V¸)ÕJr   c                 ó  • [        U5      n[        USS 5      nUb2  [        U[        R                  5      (       a  U" U[        U5      5        g U(       d&  UR                  U[        R                  " 5       5        g UR                  XT5        g )NÚaddSkip)	Ú_ErrorHolderr   r*   r   ÚSkipTestrE   ÚaddErrorrŒ   r„   )r   rL   Ú	exceptionr˜   rz   Úerrorr›   s          r   r•   Ú)TestSuite._addClassOrModuleLevelExceptionî   sa   € ä˜YÓ'ˆÜ˜& )¨TÓ2ˆØÑ¤:¨i¼¿¹×#GÑ#GÙ�Eœ3˜y›>Õ*æØ—‘ ¤s§|¢|£~Õ6à—‘ Õ,r   c                 óJ  • U R                  U5      nUc  g UR                  (       a  g  [        R                  U   n[        US5         [        USS 5      nUb   U" 5          [        R                  " 5         [        US5        g ! [         a     g f = f! [         a3  n[        U[        5      (       a  e U R                  XSU5         S nANkS nAff = f! [         a3  n[        U[        5      (       a  e U R                  XSU5         S nAN•S nAff = f! [        US5        f = f)Nrx   ÚtearDownModuler{   )rˆ   rh   rŒ   r�   rŽ   r   r   r|   r*   rr   r}   r   r�   )r   rL   r‡   r‘   r£   r‚   s         r   rn   ÚTestSuite._handleModuleTearDownú   s-  € Ø×2Ñ2°6Ó:ˆØÑ!ØØ×$×$Øð	Ü—[‘[ Ñ0ˆFô 	˜ Ô/ð	6Ü$ VÐ-=¸tÓDˆNØÑ)ðLÙ"Ô$ðHÜ×%Ò%Ô'ô ˜FÐ$4Õ5øô1 ó 	Ùð	ûô !ó LÜ! &¬,×7Ñ7ØØ×;Ñ;¸FØ<LØ<J÷Lñ LûðLûô ó HÜ˜f¤l×3Ñ3ØØ×7Ñ7¸Ø8HØ8F÷Hñ HûðHûô ˜FÐ$4Õ5úse   ©B Á	D ÁB Á"C Â
BÂBÂ
CÂ)CÃD ÃCÃD Ã
DÃ)DÄD ÄDÄD ÄD"c           	      óÖ  • [        USS 5      nUR                  nXC:X  d  Uc  g [        USS5      (       a  g [        USS5      (       a  g [        USS5      (       a  g [        USS 5      n[        USS 5      nUc  Uc  g [        US5         Ub   U" 5         Ub_  U" 5         UR                   HH  n	[	        U[
        5      (       a  U	S	   e[        R                  " U5      nU R                  X)S	   SUU	S
9  MJ     [        US5        g ! [         aI  n[	        U[
        5      (       a  e [        R                  " U5      nU R                  X'SU5         S nAN½S nAff = f! [        US5        f = f)Nrm   rg   Frh   ru   ÚtearDownClassrw   rx   r   ry   r{   )
r   r$   r   r|   r*   rr   r   r#   r}   r~   )
r   r6   rL   r   r€   r¦   rw   r‚   rƒ   r„   s
             r   rj   Ú TestSuite._tearDownPreviousClass  s}  € Ü Ð(<¸dÓCˆØ—~‘~ˆØÓ(¨MÑ,AØÜ�=Ð"5°u×=Ñ=ØÜ�6Ð/°×7Ñ7ØÜ�=Ð"5°u×=Ñ=Øä ¨ÀÓEˆÜ! -Ð1BÀDÓIˆØÑ  _Ñ%<Øä˜ Ô/ð	6ØÑ(ðGÙ!”Oð Ñ*ÙÔ!Ø -× AÔ A�HÜ! &¬,×7Ñ7Ø& q™kÐ)Ü $§¢¨mÓ <�IØ×;Ñ;¸FÈQÁKØ<KØ<EØAIð <ó Kñ	 !Bô ˜FÐ$4Õ5øô% !ó GÜ! &¬,×7Ñ7ØÜ $§¢¨mÓ <�IØ×;Ñ;¸FØ<KØ<E÷Gñ Gûð	Gûô$ ˜FÐ$4Õ5ús7   Â
E ÂD ÂA"E Ä
EÄ?EÅE ÅEÅE ÅE(r
   )Fr	   )r]   r^   r_   r`   ra   rN   r[   rl   rˆ   rk   r}   r•   rn   rj   rb   r
   r   r   r   r   \   sC   † ñôòBò,:ò\ò#:ðL 9=ôKð .2ô
-ò!6õF(6r   c                   óL   • \ rS rSrSrSrS rS rS rS r	S r
S	 rS
 rS rSrg)rœ   iH  z®
Placeholder for a TestCase inside a result. As far as a TestResult
is concerned, this looks exactly like a unit test. Used to insert
arbitrary errors into a test suite run.
Nc                 ó   • Xl         g r	   ©Údescription)r   r«   s     r   r   Ú_ErrorHolder.__init__T  s   € Ø&Õr   c                 ó   • U R                   $ r	   rª   r&   s    r   ÚidÚ_ErrorHolder.idW  s   € Ø×ÑÐr   c                 ó   • g r	   r
   r&   s    r   ÚshortDescriptionÚ_ErrorHolder.shortDescriptionZ  s   € Ør   c                 ó$   • SU R                   < S3$ )Nz<ErrorHolder description=r"   rª   r&   s    r   r'   Ú_ErrorHolder.__repr__]  s   � Ø15×1AÔ1AÐCÐCr   c                 ó"   • U R                  5       $ r	   )r®   r&   s    r   Ú__str__Ú_ErrorHolder.__str__`  s   € Ø�w‰w‹yÐr   c                 ó   • g r	   r
   ©r   rL   s     r   rN   Ú_ErrorHolder.runc  s   € ð 	r   c                 ó$   • U R                  U5      $ r	   rT   r¹   s     r   rW   Ú_ErrorHolder.__call__h  s   € Ø�x‰x˜ÓÐr   c                 ó   • gr   r
   r&   s    r   r4   Ú_ErrorHolder.countTestCasesk  s   € Ør   rª   )r]   r^   r_   r`   ra   ÚfailureExceptionr   r®   r±   r'   r¶   rN   rW   r4   rb   r
   r   r   rœ   rœ   H  s8   † ñð Ðò'ò òòDòòò
 õr   rœ   c                 ó<   •  [        U 5        g! [         a     gf = f)z?A crude way to tell apart testcases and suites with duck-typingTF)r0   r:   )r6   s    r   ri   ri   n  s'   € ðÜˆTŒ
ð øô ó Ùðús   ‚ Ž
šc                   ó$   • \ rS rSrSrSrSrSrSrg)rr   iw  zCUsed by the TestSuite to hold previous class when running in debug.NFr
   )	r]   r^   r_   r`   ra   rm   rh   rI   rb   r
   r   r   rr   rr   w  s   † ÙIØÐØÐØƒJr   rr   )ra   rŒ   Ú r   r   Ú
__unittestr   Úobjectr   r   rœ   ri   rr   r
   r   r   Ú<module>rÅ      sW   ðÙ ã 
å Ý à€
òô
I�Fô IôXi6�ô i6ôX$�6ô $òLô�6õ r   