Ë
    òT•jÈ4  ã                   ó�   — d Z ddlZddlmZ ddlmZ dZd„ Z G d„ d	e«      Z G d
„ d e«      Z	 G d„ de«      Z
d„ Z G d„ de«      Zy)Ú	TestSuiteé    Né   )Úcase)ÚutilTc                 ó.   — t        | |d„ «      } |«        y )Nc                   ó   — y ©N© r
   ó    ú%/usr/lib/python3.12/unittest/suite.pyú<lambda>z!_call_if_exists.<locals>.<lambda>   s   � r   )Úgetattr)ÚparentÚattrÚfuncs      r   Ú_call_if_existsr      s   € Ü�6˜4¡Ó.€DÙ…Fr   c                   óX   — e Zd ZdZdZdd„Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d	„ Zd
„ Zd„ Zd„ Zd„ Zy)ÚBaseTestSuitezNA simple test suite that doesn't provide class or module shared fixtures.
    Tc                 óB   — g | _         d| _        | j                  |«       y ©Nr   )Ú_testsÚ_removed_testsÚaddTests)ÚselfÚtestss     r   Ú__init__zBaseTestSuite.__init__   s   € ØˆŒØˆÔØ�‰�eÕr   c                 ó`   — dt        j                  | j                  «      ›dt        | «      ›d�S )Nú<z tests=ú>)r   ÚstrclassÚ	__class__Úlist©r   s    r   Ú__repr__zBaseTestSuite.__repr__   s   � Ü"&§-¡-°·±Õ"?ÄÀdÅÐLÐLr   c                 óh   — t        || j                  «      st        S t        | «      t        |«      k(  S r	   )Ú
isinstancer!   ÚNotImplementedr"   )r   Úothers     r   Ú__eq__zBaseTestSuite.__eq__   s)   € Ü˜% §¡Ô0Ü!Ð!Ü�D‹zœT %›[Ñ(Ð(r   c                 ó,   — t        | j                  «      S r	   )Úiterr   r#   s    r   Ú__iter__zBaseTestSuite.__iter__"   s   € Ü�D—K‘KÓ Ð r   c                 óX   — | j                   }| D ]  }|sŒ||j                  «       z  }Œ |S r	   )r   ÚcountTestCases)r   ÚcasesÚtests      r   r.   zBaseTestSuite.countTestCases%   s9   € Ø×#Ñ#ˆØò 	/ˆDÚØ˜×,Ñ,Ó.Ñ.‘ð	/ð ˆr   c                 ó  — t        |«      s#t        dj                  t        |«      «      «      ‚t	        |t
        «      r+t        |t        j                  t        f«      rt        d«      ‚| j                  j                  |«       y )Nz{} is not callablezNTestCases and TestSuites must be instantiated before passing them to addTest())ÚcallableÚ	TypeErrorÚformatÚreprr&   ÚtypeÚ
issubclassr   ÚTestCaser   r   Úappend©r   r0   s     r   ÚaddTestzBaseTestSuite.addTest,   sj   € ä˜Œ~ÜÐ0×7Ñ7¼¸T»
ÓCÓDÐDÜ�dœDÔ!¤j°Ü26·-±-ÄÐ1Kô'Mäð ?ó @ð @à�‰×Ñ˜4Õ r   c                 ój   — t        |t        «      rt        d«      ‚|D ]  }| j                  |«       Œ y )Nz0tests must be an iterable of tests, not a string)r&   Ústrr3   r;   )r   r   r0   s      r   r   zBaseTestSuite.addTests6   s3   € Ü�eœSÔ!ÜÐNÓOÐOØò 	ˆDØ�L‰L˜Õñ	r   c                 ó–   — t        | «      D ]:  \  }}|j                  r |S  ||«       | j                  sŒ*| j                  |«       Œ< |S r	   )Ú	enumerateÚ
shouldStopÚ_cleanupÚ_removeTestAtIndex)r   ÚresultÚindexr0   s       r   ÚrunzBaseTestSuite.run<   sQ   € Ü$ T›?ò 	/‰KˆE�4Ø× Ò Øð ˆñ �ŒLØ�}‹}Ø×'Ñ'¨Õ.ð	/ð ˆr   c                 ó¾   — 	 | j                   |   }t        |d«      r#| xj                  |j                  «       z  c_        d| j                   |<   y# t        $ r Y yw xY w)z2Stop holding a reference to the TestCase at index.r.   N)r   Úhasattrr   r.   r3   )r   rD   r0   s      r   rB   z BaseTestSuite._removeTestAtIndexE   s^   € ð
	&Ø—;‘;˜uÑ%ˆDô �tÐ-Ô.Ø×#Ò# t×':Ñ':Ó'<Ñ<Õ#Ø!%ˆD�K‰K˜Òøô ò 	áð	ús   ‚A Á	AÁAc                 ó&   —  | j                   |i |¤ŽS r	   ©rE   )r   ÚargsÚkwdss      r   Ú__call__zBaseTestSuite.__call__S   s   € Øˆt�x‰x˜Ð& Ñ&Ð&r   c                 ó2   — | D ]  }|j                  «        Œ y)ú7Run the tests without collecting errors in a TestResultN)Údebugr:   s     r   rO   zBaseTestSuite.debugV   s   € àò 	ˆDØ�J‰J�Lñ	r   N)r
   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__rA   r   r$   r)   r,   r.   r;   r   rE   rB   rL   rO   r
   r   r   r   r      sD   „ ñà€Hóò
Mò)ò
!òò!òòò&ò'ór   r   c                   óP   — e Zd ZdZdd„Zd„ Zd„ Zd„ Zd„ Z	 dd„Z		 dd	„Z
d
„ Zd„ Zy)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                 ó4  — d}t        |dd«      du r	dx|_        }t        | «      D ]Ã  \  }}|j                  r n²t	        |«      rl| j                  ||«       | j                  ||«       | j                  ||«       |j                  |_	        t        |j                  dd«      st        |dd«      rŒ‹|s	 ||«       n|j                  «        | j                  sŒ³| j                  |«       ŒÅ |r*| j                  d |«       | j                  |«       d|_        |S )NFÚ_testRunEnteredTÚ_classSetupFailedÚ_moduleSetUpFailed)r   rV   r?   r@   Ú_isnotsuiteÚ_tearDownPreviousClassÚ_handleModuleFixtureÚ_handleClassSetUpr!   Ú_previousTestClassrO   rA   rB   Ú_handleModuleTearDown)r   rC   rO   ÚtopLevelrD   r0   s         r   rE   zTestSuite.runf   s  € ØˆÜ�6Ð,¨eÓ4¸Ñ=Ø04Ð4ˆFÔ" Xä$ T›?ò 	/‰KˆE�4Ø× Ò Ùä˜4Ô Ø×+Ñ+¨D°&Ô9Ø×)Ñ)¨$°Ô7Ø×&Ñ& t¨VÔ4Ø,0¯N©N�Ô)ä˜DŸN™NÐ,?ÀÔGÜ˜FÐ$8¸%Ô@ØáÙ�V•à—
‘
”à�}‹}Ø×'Ñ'¨Õ.ð)	/ñ, Ø×'Ñ'¨¨fÔ5Ø×&Ñ& vÔ.Ø%*ˆFÔ"Øˆr   c                 ó<   — t        «       }| j                  |d«       y)rN   TN)Ú_DebugResultrE   )r   rO   s     r   rO   zTestSuite.debug‡   s   € ä“ˆØ�‰�˜Õr   c                 ó†  — t        |dd «      }|j                  }||k(  ry |j                  ry t        |dd«      ry d}	 d|_        t        |dd «      }t        |dd «      }|�Wt        |d«       	 	  |«        |r3|�1 |«        |j                  D ]  }
| j                  ||
d   d	|
¬	«       Œ t        |d
«       y y # t        $ r Y Œw xY w# t        $ r^}t        |t        «      r‚ d}	 d|_        n# t        $ r Y nw xY wt        j                  |«      }	| j                  ||d|	«       Y d }~Œ´d }~ww xY w# t        |d
«       w xY w)Nr]   Ú__unittest_skip__FÚ
setUpClassÚdoClassCleanupsÚ_setupStdoutTr   ©ÚinfoÚ_restoreStdout)r   r!   rX   rW   r3   r   Ú	Exceptionr&   ra   r   r    Ú"_createClassOrModuleLevelExceptionÚtearDown_exceptions)r   r0   rC   ÚpreviousClassÚcurrentClassÚfailedrd   re   ÚeÚ	classNameÚexc_infos              r   r\   zTestSuite._handleClassSetUpŽ   s‚  € Ü Ð(<¸dÓCˆØ—~‘~ˆØ˜=Ò(ØØ×$Ò$ØÜ�<Ð!4°eÔ<Øàˆð	Ø-2ˆLÔ*ô ˜\¨<¸Ó>ˆ
Ü! ,Ð0AÀ4ÓHˆØÐ!Ü˜F NÔ3ð:ðGÙ”Lñ ˜oÐ9Ù#Ô%Ø$0×$DÑ$Dò /˜Ø×?Ñ?Ø &¨°©°\À9Ø%-ð @õ /ð/ô
   Ð(8Õ9ð1 "øô ò 	ñ ð	ûô !ò GÜ! &¬,Ô7ØØ!�FðØ9=˜Õ6øÜ$ò Ùðúä $§¡¨lÓ ;�IØ×;Ñ;¸FÀAØ<HØ<E÷Gñ GûðGûô&   Ð(8Õ9úse   ¾B9 Á/C Á65D2 Â9	CÃCÃ	D/ÃD*Ã%C-Ã,D*Ã-	C9Ã6D*Ã8C9Ã9,D*Ä%D2 Ä*D/Ä/D2 Ä2E c                 ó@   — d }t        |dd «      }|�|j                  }|S )Nr]   )r   rQ   )r   rC   ÚpreviousModulerm   s       r   Ú_get_previous_modulezTestSuite._get_previous_module¼   s-   € ØˆÜ Ð(<¸dÓCˆØÐ$Ø*×5Ñ5ˆNØÐr   c                 ór  — | j                  |«      }|j                  j                  }||k(  ry | j                  |«       d|_        	 t
        j                  |   }t        |dd «      }|�Ct        |d«       	 	  |«        |j                  r	 t        j                  «        t        |d«       y y # t        $ r Y y w xY w# t        $ r6}t        |t        «      r‚ d|_        | j                  ||d|«       Y d }~Œxd }~ww xY w# t        $ r}| j                  ||d|«       Y d }~Œ�d }~ww xY w# t        |d«       w xY w)NFÚsetUpModulerf   Tri   )ru   r!   rQ   r^   rX   ÚsysÚmodulesÚKeyErrorr   r   rj   r&   ra   rk   r   ÚdoModuleCleanups)r   r0   rC   rt   ÚcurrentModuleÚmodulerw   rp   s           r   r[   zTestSuite._handleModuleFixtureÄ   sQ  € Ø×2Ñ2°6Ó:ˆØŸ™×1Ñ1ˆØ˜NÒ*Øà×"Ñ" 6Ô*ð %*ˆÔ!ð	Ü—[‘[ Ñ/ˆFô ˜f m°TÓ:ˆØÐ"Ü˜F NÔ3ð:ðKÙ”Mð ×,Ò,ðOÜ×-Ñ-Ô/ô   Ð(8Õ9ð) #øô ò 	Ùð	ûô !ò KÜ! &¬,Ô7ØØ04�FÔ-Ø×;Ñ;¸FÀAØ<IØ<I÷Kñ Kûð	Kûô %ò OØ×?Ñ?ÀÈØ@MØ@M÷Oñ OûðOûô
   Ð(8Õ9úsf   ÁB- Á7B< Á>D( ÂC> Â-	B9Â8B9Â<	C;Ã,C6Ã1D( Ã6C;Ã;D( Ã>	D%ÄD ÄD( Ä D%Ä%D( Ä(D6Nc                 ó<   — |› d|› d�}| j                  ||||«       y )Nz (ú))Ú_addClassOrModuleLevelException)r   rC   ÚexcÚmethod_namer   rh   Ú	errorNames          r   rk   z,TestSuite._createClassOrModuleLevelExceptioné   s(   € à"�m 2 f X¨QÐ/ˆ	Ø×,Ñ,¨V°S¸)ÀTÕJr   c                 ó  — t        |«      }t        |dd «      }|�-t        |t        j                  «      r ||t        |«      «       y |s%|j                  |t        j                  «       «       y |j                  ||«       y )NÚaddSkip)	Ú_ErrorHolderr   r&   r   ÚSkipTestr=   ÚaddErrorrx   rr   )r   rC   Ú	exceptionrƒ   rh   Úerrorr…   s          r   r€   z)TestSuite._addClassOrModuleLevelExceptionî   s`   € ä˜YÓ'ˆÜ˜& )¨TÓ2ˆØÐ¤:¨i¼¿¹Ô#GÙ�Eœ3˜y›>Õ*áØ—‘ ¤s§|¡|£~Õ6à—‘  tÕ,r   c                 ó$  — | j                  |«      }|€y |j                  ry 	 t        j                  |   }t        |d«       	 t        |dd «      }|�	  |«        	 t        j                  «        t        |d«       y # t        $ r Y y w xY w# t        $ r/}t        |t        «      r‚ | j                  ||d|«       Y d }~Œdd }~ww xY w# t        $ r/}t        |t        «      r‚ | j                  ||d|«       Y d }~ŒŠd }~ww xY w# t        |d«       w xY w)Nrf   ÚtearDownModuleri   )ru   rX   rx   ry   rz   r   r   rj   r&   ra   rk   r   r{   )r   rC   rt   r}   rŒ   rp   s         r   r^   zTestSuite._handleModuleTearDownú   s+  € Ø×2Ñ2°6Ó:ˆØÐ!ØØ×$Ò$Øð	Ü—[‘[ Ñ0ˆFô 	˜ Ô/ð	6Ü$ VÐ-=¸tÓDˆNØÐ)ðLÙ"Ô$ðHÜ×%Ñ%Ô'ô ˜FÐ$4Õ5øô1 ò 	Ùð	ûô !ò LÜ! &¬,Ô7ØØ×;Ñ;¸FÀAØ<LØ<J÷Lñ LûðLûô ò HÜ˜f¤lÔ3ØØ×7Ñ7¸ÀØ8HØ8F÷Hñ HûðHûô ˜FÐ$4Õ5úse   £A< ÁD ÁB ÁC Á<	BÂBÂ	CÂ%B>Â9D Â>CÃD Ã	C>Ã%C9Ã4D Ã9C>Ã>D ÄDc                 óš  — t        |dd «      }|j                  }||k(  s|€y t        |dd«      ry t        |dd«      ry t        |dd«      ry t        |dd «      }t        |dd «      }|€|€y t        |d«       	 |�	  |«        |�[ |«        |j                  D ]E  }	t	        |t
        «      r|	d	   ‚t        j                  |«      }| j                  ||	d	   d||	¬
«       ŒG t        |d«       y # t        $ rD}t	        |t
        «      r‚ t        j                  |«      }| j                  ||d|«       Y d }~Œ²d }~ww xY w# t        |d«       w xY w)Nr]   rW   FrX   rc   ÚtearDownClassre   rf   r   rg   ri   )
r   r!   r   rj   r&   ra   r   r    rk   rl   )
r   r0   rC   rm   rn   rŽ   re   rp   rq   rr   s
             r   rZ   z TestSuite._tearDownPreviousClass  sz  € Ü Ð(<¸dÓCˆØ—~‘~ˆØ˜=Ò(¨MÐ,AØÜ�=Ð"5°uÔ=ØÜ�6Ð/°Ô7ØÜ�=Ð"5°uÔ=Øä ¨ÀÓEˆÜ! -Ð1BÀDÓIˆØÐ  _Ð%<Øä˜ Ô/ð	6ØÐ(ðGÙ!”Oð Ð*ÙÔ!Ø -× AÑ Aò K�HÜ! &¬,Ô7Ø& q™kÐ)Ü $§¡¨mÓ <�IØ×;Ñ;¸FÀHÈQÁKØ<KØ<EØAIð <õ Kð	Kô ˜FÐ$4Õ5øô% !ò GÜ! &¬,Ô7ØÜ $§¡¨mÓ <�IØ×;Ñ;¸FÀAØ<KØ<E÷Gñ Gûð	Gûô$ ˜FÐ$4Õ5ús7   Á8D< Á;C, ÂAD< Ã,	D9Ã5:D4Ä/D< Ä4D9Ä9D< Ä<E
)Fr	   )rP   rQ   rR   rS   rE   rO   r\   ru   r[   rk   r€   r^   rZ   r
   r   r   r   r   \   sC   „ ñóòBò,:ò\ò#:ðL 9=óKð .2ó
-ò!6óF(6r   c                   óD   — e Zd ZdZdZd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d	„ Zd
„ Zy)r†   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                 ó   — || _         y r	   ©Údescription)r   r’   s     r   r   z_ErrorHolder.__init__T  s
   € Ø&ˆÕr   c                 ó   — | j                   S r	   r‘   r#   s    r   Úidz_ErrorHolder.idW  s   € Ø×ÑÐr   c                  ó   — y r	   r
   r#   s    r   ÚshortDescriptionz_ErrorHolder.shortDescriptionZ  s   € Ør   c                 ó"   — d| j                   ›d�S )Nz<ErrorHolder description=r   r‘   r#   s    r   r$   z_ErrorHolder.__repr__]  s   � Ø15×1AÓ1AÐCÐCr   c                 ó"   — | j                  «       S r	   )r”   r#   s    r   Ú__str__z_ErrorHolder.__str__`  s   € Ø�w‰w‹yÐr   c                  ó   — y r	   r
   ©r   rC   s     r   rE   z_ErrorHolder.runc  s   € ð 	r   c                 ó$   — | j                  |«      S r	   rI   r›   s     r   rL   z_ErrorHolder.__call__h  s   € Ø�x‰x˜ÓÐr   c                  ó   — yr   r
   r#   s    r   r.   z_ErrorHolder.countTestCasesk  s   € Ør   )rP   rQ   rR   rS   ÚfailureExceptionr   r”   r–   r$   r™   rE   rL   r.   r
   r   r   r†   r†   H  s8   „ ñð Ðò'ò òòDòòò
 ór   r†   c                 ó:   — 	 t        | «       y# t        $ r Y yw xY w)z?A crude way to tell apart testcases and suites with duck-typingTF)r+   r3   )r0   s    r   rY   rY   n  s'   € ðÜˆTŒ
ð øô ò Ùðús   ‚ Ž	™c                   ó   — e Zd ZdZdZdZdZy)ra   zCUsed by the TestSuite to hold previous class when running in debug.NF)rP   rQ   rR   rS   r]   rX   r@   r
   r   r   ra   ra   w  s   „ ÙIØÐØÐØ�Jr   ra   )rS   rx   Ú r   r   Ú
__unittestr   Úobjectr   r   r†   rY   ra   r
   r   r   ú<module>r¤      sW   ðÙ ã 
å Ý à€
òô
I�Fô IôXi6�ô i6ôX$�6ô $òLô�6õ r   