ó
    Eñi¹3  ã                  ó„  • S 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  SS	K	Jr  SS
K	J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SK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   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+  SSK,J-r-  SSK.J/r/  SSK.J0r0  SS K.J1r1  SS!K2J3r3  \(       a  SS"K4J5r5  S<S# jr6\Rn                  " S$S$S$S%9 " S& S'5      5       r8\Rn                  " S(S)9 " S* S+\-5      5       r9\&S=S- j5       r: " S. S,5      r;\Rn                   " S/ S05      5       r<\S>S1 j5       r=\    S?S2 j5       r>\Rn                   " S3 S45      5       r?\Rn                   " S5 S65      5       r@S@S7 jrASAS8 jrB\3\\C\D4      " 5       rESBS9 jrF\ " S$S:9      SCS; j5       rGg)Dz*Builtin plugin that adds subtests support.é    )Úannotations)Údefaultdict)ÚCallable)ÚIterator)ÚMapping)ÚAbstractContextManager)Úcontextmanager)Ú	ExitStack)ÚnullcontextN)ÚTracebackType)ÚAny)ÚTYPE_CHECKING)ÚExceptionInfo©Úsaferepr)ÚCaptureFixture)Ú	FDCapture)Ú
SysCapture)ÚConfig)Úhookimpl)ÚParser)Úcheck_ispytest)Úfixture)Ú
SubRequest)Úcatching_logs)ÚLogCaptureHandler)ÚLoggingPlugin)Ú
TestReport)ÚCallInfo)Úcheck_interactive_exception)Úget_reraise_exceptions)ÚStashKey)ÚSelfc                óL   • [         R                  " U [         R                  SS9  g )Nz‚Specify verbosity level for subtests. Higher levels will generate output for passed subtests. Failed subtests are always reported.)Úhelp)r   Ú_add_verbosity_iniÚVERBOSITY_SUBTESTS)Úparsers    ÚM/home/mande/repo/quber/.venv/lib/python3.13/site-packages/_pytest/subtests.pyÚpytest_addoptionr*   .   s"   € Ü
×ÒØÜ×!Ñ!ðkó	ó    T)ÚfrozenÚslotsÚkw_onlyc                  óL   • \ rS rSr% SrS\S'   S\S'   SS jr\SS j5       rS	r	g
)ÚSubtestContexté9   zJThe values passed to Subtests.test() that are included in the test report.ú
str | NoneÚmsgzMapping[str, Any]Úkwargsc                ó.   • [         R                  " U 5      $ ©N)ÚdataclassesÚasdict)Úselfs    r)   Ú_to_jsonÚSubtestContext._to_json@   s   € Ü×!Ò! $Ó'Ð'r+   c                ó   • U " US   US   S9$ )Nr3   r4   ©r3   r4   © )ÚclsÚds     r)   Ú
_from_jsonÚSubtestContext._from_jsonC   s   € á�q˜‘x¨¨(©Ñ4Ð4r+   r>   N©Úreturnúdict[str, Any])r@   rE   rD   r#   )
Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__Ú__annotations__r:   ÚclassmethodrA   Ú__static_attributes__r>   r+   r)   r0   r0   9   s)   ‡ áTà	ƒOØÓô(ð ó5ó ó5r+   r0   F)Úinitc                  óž   ^ • \ rS rSr% S\S'   \S
S j5       rS
S jrSU 4S jjr\	SU 4S jj5       r
\	          SU 4S jj5       rS	rU =r$ )ÚSubtestReportéH   r0   Úcontextc                óJ   • U R                   u    pU SU R                  5        3$ )NÚ )ÚlocationÚ_sub_test_description)r9   Ú_Údomains      r)   Ú	head_lineÚSubtestReport.head_lineL   s*   € à—}‘}‰ˆˆ1Ø�˜˜4×5Ñ5Ó7Ð8Ð9Ð9r+   c                óŽ  • / nU R                   R                  b)  UR                  SU R                   R                   S35        U R                   R                  (       aO  SR	                  S U R                   R                  R                  5        5       5      nUR                  SU S35        SR	                  U5      =(       d    S$ )	NÚ[Ú]z, c              3  óF   #   • U  H  u  pU S [        U5       3v •  M     g7f)Ú=Nr   )Ú.0ÚkÚvs      r)   Ú	<genexpr>Ú6SubtestReport._sub_test_description.<locals>.<genexpr>V   s%   é € ð $Ú3N©¨!�1�#�Q”x “{�mÕ$Ò3Nùs   ‚!Ú(Ú)rT   z(<subtest>))rR   r3   Úappendr4   ÚjoinÚitems)r9   ÚpartsÚparams_descs      r)   rV   Ú#SubtestReport._sub_test_descriptionQ   sœ   € ØˆØ�<‰<×ÑÑ'Ø�L‰L˜1˜TŸ\™\×-Ñ-Ð.¨aÐ0Ô1Ø�<‰<××ØŸ)™)ñ $Ø37·<±<×3FÑ3F×3LÑ3LÔ3Nó$ó ˆKð �L‰L˜1˜[˜M¨Ð+Ô,Ø�x‰x˜‹×/ -Ð/r+   c                ón   >• [         TU ]  5       nUS	 SUS'   U R                  R                  5       US'   U$ )NrR   ÚSubTestReportÚ_report_typeú_subtest.context)Úsuperr:   rR   )r9   ÚdataÚ	__class__s     €r)   r:   ÚSubtestReport._to_json\   s>   ø€ Ü‰wÑÓ!ˆØ�ˆOØ.ˆˆ^ÑØ#'§<¡<×#8Ñ#8Ó#:ˆÐÑ Øˆr+   c                ó`   >• [         TU ]  U5      n[        R                  US   5      Ul        U$ )Nrp   )rq   rA   r0   rR   )r?   Ú
reportdictÚreportrs   s      €r)   rA   ÚSubtestReport._from_jsonc   s/   ø€ ä‘Ñ# JÓ/ˆÜ'×2Ñ2°:Ð>PÑ3QÓRˆŒØˆr+   c                óÚ  >• [         TU ]  UR                  5       5      nX%l        U(       ap  UR                  (       a'  UR
                  R                  SUR                  45        UR                  (       a'  UR
                  R                  SUR                  45        U(       aH  UR                  R                  R                  5       =n(       a  UR
                  R                  SU45        U$ )NzCaptured stdout callzCaptured stderr callzCaptured log call)rq   rA   r:   rR   ÚoutÚsectionsrg   ÚerrÚhandlerÚstreamÚgetvalue)r?   Útest_reportrR   Úcaptured_outputÚcaptured_logsÚresultÚlogrs   s          €r)   Ú_newÚSubtestReport._newi   s²   ø€ ô ‘Ñ# K×$8Ñ$8Ó$:Ó;ˆØ ŒæØ×"×"Ø—‘×&Ñ&Ð(>À×@SÑ@SÐ'TÔUØ×"×"Ø—‘×&Ñ&Ð(>À×@SÑ@SÐ'TÔUæ ]×%:Ñ%:×%AÑ%A×%JÑ%JÓ%LÐL˜cÕLØ�O‰O×"Ñ"Ð$7¸Ð#=Ô>àˆr+   r>   )rD   ÚstrrC   )rv   rE   rD   rP   )
r€   r   rR   r0   r�   zCaptured | Noner‚   zCapturedLogs | NonerD   r#   )rF   rG   rH   rI   rK   ÚpropertyrY   rV   r:   rL   rA   r…   rM   Ú__classcell__)rs   s   @r)   rP   rP   H   s}   ø‡ àÓàó:ó ð:ô	0÷ð öó ðð
 ðàðð  ðð )ð	ð
 +ðð 
öó ör+   rP   ÚSubtestsc                óÈ   • U R                   R                  R                  R                  S5      nUb  UR                  O[
        n[        U R                   R                  X SS9$ )z Provides subtests functionality.ÚcapturemanagerT©Ú	_ispytest)ÚnodeÚconfigÚpluginmanagerÚ
get_pluginÚglobal_and_fixture_disabledr   rŠ   Úihook)ÚrequestÚcapmamÚsuspend_capture_ctxs      r)   Úsubtestsr˜   €   sW   € ð �\‰\× Ñ ×.Ñ.×9Ñ9Ð:JÓK€Fà.4Ñ.@ˆ×*Ò*Äkð ô �G—L‘L×&Ñ&Ð(;ÐPTÑUÐUr+   c                  óV   • \ rS rSrSrSS.         S	S jjr S
     SS jjrSrg)rŠ   éŠ   z_Subtests fixture, enables declaring subtests inside test functions via the :meth:`test` method.Fr�   c               ó>   • [        U5        Xl        X l        X0l        g r6   )r   Ú_ihookÚ_suspend_capture_ctxÚ_request)r9   r”   r—   r•   rŽ   s        r)   Ú__init__ÚSubtests.__init__�   s   € ô 	�yÔ!ØŒØ$7Ô!Ø�r+   Nc           	     ó‚   • [        U R                  UUU R                  U R                  U R                  R                  S9$ )aô  
Context manager for subtests, capturing exceptions raised inside the subtest scope and
reporting assertion failures and errors individually.

Usage
-----

.. code-block:: python

    def test(subtests):
        for i in range(5):
            with subtests.test("custom message", i=i):
                assert i % 2 == 0

:param msg:
    If given, the message will be shown in the test report in case of subtest failure.

:param kwargs:
    Arbitrary values that are also added to the subtest report.
)r•   r—   r�   )Ú_SubTestContextManagerrœ   rž   r�   r�   )r9   r3   r4   s      r)   ÚtestÚSubtests.testš   s;   € ô2 &Ø�K‰KØØØ—M‘MØ $× 9Ñ 9Ø—=‘=×'Ñ'ñ
ð 	
r+   )rœ   rž   r�   )
r”   úpluggy.HookRelayr—   ú*Callable[[], AbstractContextManager[None]]r•   r   rŽ   ÚboolrD   ÚNoner6   )r3   r2   r4   r   rD   r¢   )rF   rG   rH   rI   rJ   rŸ   r£   rM   r>   r+   r)   rŠ   rŠ   Š   sk   † Ùið  ñ àð ð Hð ð ð	 ð ð ð 
õ ð ð 
àð 
ð ð 
ð 
 ÷	 
ð  
r+   c                  óz   • \ rS rSr% SrS\S'   S\S'   S\S'   S	\S
'   S\S'   S\S'   SS jr        SS jrSrg)r¢   é½   z„
Context manager for subtests, capturing exceptions raised inside the subtest scope and handling
them through the pytest machinery.
r¥   r”   r2   r3   rE   r4   r¦   r—   r   r•   r   r�   c                óh  • Sn[         R                   " 5       U l        [         R                  " 5       U l        S U l        [        5       U l        U R                  R                  [        U R                  5      5      U l
        U R                  R                  [        U R                  5      5      U l        g )NT)ÚtimeÚ_startÚperf_counterÚ_precise_startÚ	_exc_infor
   Ú_exit_stackÚenter_contextÚcapturing_outputr•   Ú_captured_outputÚcapturing_logsÚ_captured_logs)r9   Ú__tracebackhide__s     r)   Ú	__enter__Ú _SubTestContextManager.__enter__Ð   sƒ   € Ø Ðä—i’i“kˆŒÜ"×/Ò/Ó1ˆÔØˆŒä$›;ˆÔØ $× 0Ñ 0× >Ñ >Ü˜TŸ\™\Ó*ó!
ˆÔð #×.Ñ.×<Ñ<Ü˜4Ÿ<™<Ó(ó
ˆÕr+   c           
     óT  • SnUb  [         R                  " U5      nOS nU R                  R                  5         [        R
                  " 5       nX`R                  -
  n[        R                  " 5       n[        S    " S UU R                  UUSSS9n	U R                  R                  U R                  R                  U	S9n
[        R                  U
[        U R                   U R"                  S9U R$                  U R&                  S9nUR(                  (       aG  U R*                  R,                  [.           nXÀR                  R                  R0                  ==   S-  ss'   U R3                  5          U R                  R5                  US9  S S S 5        [7        X›5      (       a.  U R                  R9                  U R                  R                  X›S	9  UbK  [;        U[=        U R*                  5      5      (       a  g
U R                  R>                  R@                  (       a  g
g! , (       d  f       N›= f)NTÚcall)ÚstartÚstopÚdurationÚwhenrŽ   )Úitemr»   r=   )r�   r‚   é   ©rw   )r�   r»   rw   F)!r   Úfrom_exceptionr±   Úcloser¬   r®   r¯   r   r­   r”   Úpytest_runtest_makereportr•   r�   rP   r…   r0   r3   r4   r´   r¶   Úfailedr�   ÚstashÚfailed_subtests_keyÚnodeidr—   Úpytest_runtest_logreportr    Úpytest_exception_interactÚ
isinstancer!   ÚsessionÚ
shouldfail)r9   Úexc_typeÚexc_valÚexc_tbr·   Úexc_infoÚprecise_stopr¾   r½   Ú	call_inforw   Ú
sub_reportÚfailed_subtestss                r)   Ú__exit__Ú_SubTestContextManager.__exit__ß   sÈ  € ð !ÐØÑÜ$×3Ò3°GÓ<‰HàˆHà×Ñ×ÑÔ ä×(Ò(Ó*ˆØ×"5Ñ"5Ñ5ˆÜ�yŠy‹{ˆä˜T’NØØØ—+‘+ØØØØñ
ˆ	ð —‘×5Ñ5Ø—‘×"Ñ"¨ð 6ð 
ˆô #×'Ñ'ØÜ˜tŸx™x°·±Ñ<Ø ×1Ñ1Ø×-Ñ-ð	 (ð 
ˆ
ð ××Ø"Ÿk™k×/Ñ/Ô0CÑDˆOØŸL™L×-Ñ-×4Ñ4Ó5¸Ñ:Ó5à×%Ñ%Õ'Ø�J‰J×/Ñ/°zÐ/ÑB÷ (ô ' y×=Ñ=Ø�J‰J×0Ñ0Ø—\‘\×&Ñ&¨Yð 1ñ ð ÑÜ˜'Ô#9¸$¿+¹+Ó#F×GÑGØØ�|‰|×#Ñ#×.×.ØØ÷ (Õ'ús   Å*HÈ
H')r¶   r´   r°   r±   r¯   r­   N)rD   r¨   )rÏ   ztype[BaseException] | NonerÐ   zBaseException | NonerÑ   zTracebackType | NonerD   r§   )	rF   rG   rH   rI   rJ   rK   r¸   r×   rM   r>   r+   r)   r¢   r¢   ½   s[   ‡ ñð ÓØ	ƒOØÓØCÓCØÓØƒNô
ð6à,ð6ð &ð6ð %ð	6ð
 
÷6r+   r¢   c              #  ó4  #   • U R                   R                  SS 5      nU R                   R                  R                  S5      n[	        USS 5      (       a  S nO.US:X  a  [        [        U SS9nOUS:X  a  [        [        U SS9nOS nUb  UR                  " 5         [        5       n Uv •  Ub1  UR                  " 5       u  pVUR                  " 5         XTl        Xdl        g g ! Ub1  UR                  " 5       u  pVUR                  " 5         XTl        Xdl        f f = f7f)NÚcapturerŒ   Ú_capture_fixtureÚsysTr�   Úfd)r�   Ú	getoptionr‘   Ú	getpluginÚgetattrr   r   r   r­   ÚCapturedÚ
readouterrrÄ   rz   r|   )r•   ÚoptionÚcapmanr   Úcapturedrz   r|   s          r)   r³   r³     s÷   é € à�^‰^×%Ñ% i°Ó6€Fà�^‰^×)Ñ)×3Ñ3Ð4DÓE€FÜˆvÐ)¨4×0Ñ0à‰Ø	�5‹Ü ¤¨WÀÑE‰Ø	�4‹Ü ¤¨G¸tÑD‰àˆàÑØ�ŠÔä‹z€HðØŠàÑØ×)Ò)Ó+‰HˆCØ�MŠMŒOØŒLØ�Lð	 øˆ7ÑØ×)Ò)Ó+‰HˆCØ�MŠMŒOØŒLØ�Lð	 üs   ‚B#DÂ&C Â*5DÃ6DÄDc              #  ó(  #   • U R                   R                  R                  S5      nUc  S v •  g [        5       nUR	                  UR
                  5        [        U5      n[        X!R                  S9   Uv •  S S S 5        g ! , (       d  f       g = f7f)Nzlogging-plugin)Úlevel)	r�   r‘   rß   r   ÚsetFormatterÚ	formatterÚCapturedLogsr   Ú	log_level)r•   Úlogging_pluginr}   r‚   s       r)   rµ   rµ   5  sw   é € ð ,3¯>©>×+GÑ+G×+QÑ+QØó,€Nð ÑØ‹
ä#Ó%ˆØ×Ñ˜^×5Ñ5Ô6ä$ WÓ-ˆÜ˜7×*BÑ*BÓCØÒ÷ D×CÖCüs   ‚A1BÁ3BÁ8	BÂ
BÂBc                  ó2   • \ rS rSr% SrS\S'   SrS\S'   Srg)rá   iG  Ú r‡   rz   r|   r>   N)rF   rG   rH   rI   rz   rK   r|   rM   r>   r+   r)   rá   rá   G  s   ‡ à€CˆƒMØ€Cˆ†Mr+   rá   c                  ó    • \ rS rSr% S\S'   Srg)rê   iM  r   r}   r>   N)rF   rG   rH   rI   rK   rM   r>   r+   r)   rê   rê   M  s   ‡ àÖr+   rê   c                óN   • [        U [        5      (       a  U R                  5       $ g r6   )rÌ   rP   r:   rÂ   s    r)   Úpytest_report_to_serializablerñ   R  s   € Ü�&œ-×(Ñ(Ø�‰Ó Ð Ør+   c                óX   • U R                  S5      S:X  a  [        R                  U 5      $ g )Nro   rn   )ÚgetrP   rA   )rr   s    r)   Úpytest_report_from_serializablerô   X  s'   € Ø‡x�x�Ó ?Ó2Ü×'Ñ'¨Ó-Ð-Ør+   c                ó>   • [        S 5      U R                  [        '   g )Nc                 ó   • g)Nr   r>   r>   r+   r)   Ú<lambda>Ú"pytest_configure.<locals>.<lambda>d  s   € ¸Ar+   )r   rÇ   rÈ   )r�   s    r)   Úpytest_configurerù   c  s   € Ü(3±IÓ(>€F‡L�LÔ$Ò%r+   )Útryfirstc                ó”  • U R                   S:w  a  g UR                  [        R                  5      S:H  n[	        U [
        5      (       a«  U R                  nU R                  5       n[        U S5      (       a  U(       a  gUS:X  a  SnSnSnOg XVU U 34$ U R                  (       a  US	S
U 34$ U R                  (       a  U(       a  gSU 3S	SU 34$ U R                  (       a  U(       a  gUSSU 34$  g UR                  [           U R                     nU R                  (       a$  US:”  a  SU l        US:”  a  SOSn	SU SU	 3U l        g )Nr»   r   Úwasxfail)rî   rî   rî   ÚskippedÚxfailedÚyÚSUBXFAILÚuÚ	SUBFAILEDz	subtests Ú	SUBPASSEDÚ-Ú
SUBSKIPPEDrÆ   rÁ   Úsrî   z	contains z failed subtest)r¿   Úget_verbosityr   r'   rÌ   rP   ÚoutcomerV   ÚhasattrrÆ   Úpassedrý   rÇ   rÈ   rÉ   Úlongrepr)
rw   r�   Úquietr  ÚdescriptionÚcategoryÚshortÚstatusÚfailed_subtests_countÚsuffixs
             r)   Úpytest_report_teststatusr  g  s\  € ð
 ‡{�{�fÓØà× Ñ ¤×!:Ñ!:Ó;¸qÑ@€EÜ�&œ-×(Ñ(Ø—.‘.ˆØ×2Ñ2Ó4ˆä�6˜:×&Ñ&ÞØ!Ø˜IÓ%Ø$�Ø�Ø#‘ð Ø v h¨{¨mÐ$<Ð<Ð<à�=�=Ø˜C 9¨[¨MÐ!:Ð:Ð:à�}�}ÞØ%à& w iÐ0°#¸À;À-Ð7PÐPÐPØ——ÞØ%à" C¨:°k°]Ð)CÐCÐCð	  ð ð !'§¡Ô-@Ñ AÀ&Ç-Á-Ñ PÐà�=�=Ð2°QÓ6Ø%ˆFŒNØ1°AÓ5‘S¸2ˆFØ )Ð*?Ð)@ÀÐPVÈxÐXˆFŒOàr+   )r(   r   rD   r¨   )r•   r   rD   rŠ   )r•   r   rD   zIterator[Captured])r•   r   rD   zIterator[CapturedLogs | None])rw   r   rD   zdict[str, Any] | None)rr   rE   rD   zSubtestReport | None)r�   r   rD   r¨   )rw   r   r�   r   rD   z0tuple[str, str, str | Mapping[str, bool]] | None)HrJ   Ú
__future__r   Úcollectionsr   Úcollections.abcr   r   r   Ú
contextlibr   r	   r
   r   r7   r¬   Útypesr   Útypingr   r   ÚpluggyÚ_pytest._coder   Ú_pytest._io.safereprr   Ú_pytest.capturer   r   r   Ú_pytest.configr   r   Ú_pytest.config.argparsingr   Ú_pytest.deprecatedr   Ú_pytest.fixturesr   r   Ú_pytest.loggingr   r   r   Ú_pytest.reportsr   Ú_pytest.runnerr   r    r!   Ú_pytest.stashr"   Útyping_extensionsr#   r*   Ú	dataclassr0   rP   r˜   rŠ   r¢   r³   rµ   rá   rê   rñ   rô   r‡   ÚintrÈ   rù   r  r>   r+   r)   Ú<module>r)     sß  ðÙ 0å "å #Ý $Ý $Ý #Ý -Ý %Ý  Ý "Û Û Ý Ý Ý  ã å 'Ý )Ý *Ý %Ý &Ý !Ý #Ý ,Ý -Ý $Ý 'Ý )Ý -Ý )Ý &Ý #Ý 6Ý 1Ý "ö Ý&ôð ×Ò˜d¨$¸Ñ=÷5ð 5ó >ð5ð ×Ò˜EÑ"ô4�Jó 4ó #ð4ðn 	óVó 	ðV÷0
ñ 0
ðf ×Ñ÷Wð Wó ðWðt óó ðð8 ð Øð à"ó ó ð ð" ×Ñ÷ð ó ðð
 ×Ñ÷ð ó ðôôð ˜{¨3°¨8Ñ4Ò5Ó7Ð ô?ñ 
�4Ñð3Øð3àð3ð 6ó3ó ñ3r+   