Ë
    æØjjÃ4  ã                  ó|  — d Z ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddl	m
Z
 ddl	mZ dd	l	mZ dd
l	mZ ddlZddlZddlmZ ddlmZ ddlmZ ddlZddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlm Z  ddl!m"Z" ddl#m$Z$ ddl%m&Z& ddl%m'Z' ddl(m)Z) ddl(m*Z* ddl(m+Z+ ddl,m-Z- ddl.m/Z/ ddl.m0Z0 dd l.m1Z1 dd!l2m3Z3 erdd"l4m5Z5 d<d#„Z6 ejn                  d$d$d$¬%«       G d&„ d'«      «       Z8 ejn                  d(¬)«       G d*„ d+e-«      «       Z9e&d=d-„«       Z: G d.„ d,«      Z;ejn                   G d/„ d0«      «       Z<ed>d1„«       Z=e	 	 	 	 d?d2„«       Z>ejn                   G d3„ d4«      «       Z?ejn                   G d5„ d6«      «       Z@d@d7„ZAdAd8„ZB e3eeCeDf      «       ZEdBd9„ZF e d$¬:«      	 	 	 	 	 	 dCd;„«       ZGy)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                óP   — t        j                  | t         j                  d¬«       y )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    úR/opt/eval-harness/bench_task/venv/lib/python3.12/site-packages/_pytest/subtests.pyÚpytest_addoptionr)   .   s"   € Ü
×ÑØÜ×!Ñ!ðkö	ó    T)ÚfrozenÚslotsÚkw_onlyc                  óH   — e Zd ZU dZded<   ded<   d
d„Zdd„Zedd„«       Zy	)ÚSubtestContextzJThe values passed to Subtests.test() that are included in the test report.ú
str | NoneÚmsgzMapping[str, Any]Úkwargsc                ó¨   — t         j                  | d| j                  j                  «       D ��ci c]  \  }}|t	        |«      “Œ c}}«       y c c}}w )Nr2   )ÚobjectÚ__setattr__r2   Úitemsr   )ÚselfÚkÚvs      r(   Ú__post_init__zSubtestContext.__post_init__@   s>   € ä×ÑØ�(¸$¿+¹+×:KÑ:KÓ:M×N±°°A˜Q¤¨£™^ÓNõ	
ùÛNs   ¯Ac                ó0   — t        j                  | «      }|S ©N)ÚdataclassesÚasdict)r7   Úresults     r(   Ú_to_jsonzSubtestContext._to_jsonF   s   € Ü×#Ñ# DÓ)ˆØˆr*   c                ó"   —  | |d   |d   ¬«      S )Nr1   r2   ©r1   r2   © )ÚclsÚds     r(   Ú
_from_jsonzSubtestContext._from_jsonJ   s   € á�q˜‘x¨¨(©Ô4Ð4r*   N©ÚreturnÚNone©rH   údict[str, Any])rE   rK   rH   r"   )	Ú__name__Ú
__module__Ú__qualname__Ú__doc__Ú__annotations__r:   r@   ÚclassmethodrF   rC   r*   r(   r/   r/   9   s.   … áTà	ƒOØÓó
óð ò5ó ñ5r*   r/   F)Úinitc                  ó†   ‡ — e Zd ZU ded<   edd„«       Zdd„Zd	ˆ fd„Zed
ˆ fd„«       Z	e	 	 	 	 	 	 	 	 	 	 dˆ fd„«       Z
ˆ xZS )ÚSubtestReportr/   Úcontextc                óL   — | j                   \  }}}|› d| j                  «       › �S )Nú )ÚlocationÚ_sub_test_description)r7   Ú_Údomains      r(   Ú	head_linezSubtestReport.head_lineS   s,   € à—}‘}‰ˆˆ1ˆfØ�˜˜4×5Ñ5Ó7Ð8Ð9Ð9r*   c                óx  — g }| j                   j                  �)|j                  d| j                   j                  › d�«       | j                   j                  rOdj	                  d„ | j                   j                  j                  «       D «       «      }|j                  d|› d�«       dj	                  |«      xs dS )	Nú[ú]z, c              3  ó0   K  — | ]  \  }}|› d |› �–— Œ y­w)ú=NrC   )Ú.0r8   r9   s      r(   ú	<genexpr>z6SubtestReport._sub_test_description.<locals>.<genexpr>]   s#   è ø€ ò $Ù%  1�1�#�Q�q�c”
ñ$ùs   ‚ú(ú)rW   z(<subtest>))rU   r1   Úappendr2   Újoinr6   )r7   ÚpartsÚparams_descs      r(   rY   z#SubtestReport._sub_test_descriptionX   sœ   € ØˆØ�<‰<×ÑÐ'Ø�L‰L˜1˜TŸ\™\×-Ñ-Ð.¨aÐ0Ô1Ø�<‰<×ÒØŸ)™)ñ $Ø)-¯©×)<Ñ)<×)BÑ)BÓ)Dô$ó ˆKð �L‰L˜1˜[˜M¨Ð+Ô,Ø�x‰x˜‹Ò/ -Ð/r*   c                ón   •— t         ‰| �  «       }|d= d|d<   | j                  j                  «       |d<   |S )NrU   ÚSubTestReportÚ_report_typeú_subtest.context)Úsuperr@   rU   )r7   ÚdataÚ	__class__s     €r(   r@   zSubtestReport._to_jsonc   s>   ø€ Ü‰wÑÓ!ˆØ�ˆOØ.ˆˆ^ÑØ#'§<¡<×#8Ñ#8Ó#:ˆÐÑ Øˆr*   c                ó`   •— t         ‰| �  |«      }t        j                  |d   «      |_        |S )Nrm   )rn   rF   r/   rU   )rD   Ú
reportdictÚreportrp   s      €r(   rF   zSubtestReport._from_jsonj   s/   ø€ ä‘Ñ# JÓ/ˆÜ'×2Ñ2°:Ð>PÑ3QÓRˆŒØˆr*   c                óª  •— t         ‰| �  |j                  «       «      }||_        |rf|j                  r'|j
                  j                  d|j                  f«       |j                  r'|j
                  j                  d|j                  f«       |rC|j                  j                  j                  «       x}r|j
                  j                  d|f«       |S )NzCaptured stdout callzCaptured stderr callzCaptured log call)rn   rF   r@   rU   ÚoutÚsectionsrf   ÚerrÚhandlerÚstreamÚgetvalue)rD   Útest_reportrU   Úcaptured_outputÚcaptured_logsr?   Úlogrp   s          €r(   Ú_newzSubtestReport._newp   s´   ø€ ô ‘Ñ# K×$8Ñ$8Ó$:Ó;ˆØ ˆŒáØ×"Ò"Ø—‘×&Ñ&Ð(>À×@SÑ@SÐ'TÔUØ×"Ò"Ø—‘×&Ñ&Ð(>À×@SÑ@SÐ'TÔUá ]×%:Ñ%:×%AÑ%A×%JÑ%JÓ%LÐL˜cÐLØ�O‰O×"Ñ"Ð$7¸Ð#=Ô>àˆr*   )rH   ÚstrrJ   )rr   rK   rH   rT   )
r{   r   rU   r/   r|   zCaptured | Noner}   zCapturedLogs | NonerH   r"   )rL   rM   rN   rP   Úpropertyr\   rY   r@   rQ   rF   r   Ú__classcell__)rp   s   @r(   rT   rT   O   s}   ø… àÓàò:ó ð:ó	0õð ôó ðð
 ðàðð  ðð )ð	ð
 +ðð 
ôó ôr*   rT   ÚSubtestsc                óÎ   — | j                   j                  j                  j                  d«      }|�|j                  nt
        }t        | j                   j                  || d¬«      S )z Provides subtests functionality.ÚcapturemanagerT©Ú	_ispytest)ÚnodeÚconfigÚpluginmanagerÚ
get_pluginÚglobal_and_fixture_disabledr   rƒ   Úihook)ÚrequestÚcapmamÚsuspend_capture_ctxs      r(   Úsubtestsr‘   ‡   sY   € ð �\‰\× Ñ ×.Ñ.×9Ñ9Ð:JÓK€Fà.4Ð.@ˆ×*Ò*Äkð ô �G—L‘L×&Ñ&Ð(;¸WÐPTÔUÐUr*   c                  óF   — e Zd ZdZddœ	 	 	 	 	 	 	 	 	 dd„Z	 d	 	 	 	 	 d	d„Zy)
rƒ   z_Subtests fixture, enables declaring subtests inside test functions via the :meth:`test` method.Fr†   c               óD   — t        |«       || _        || _        || _        y r<   )r   Ú_ihookÚ_suspend_capture_ctxÚ_request)r7   r�   r�   rŽ   r‡   s        r(   Ú__init__zSubtests.__init__”   s"   € ô 	�yÔ!ØˆŒØ$7ˆÔ!Øˆ�r*   Nc                óˆ   — t        | j                  ||| j                  | j                  | j                  j                  ¬«      S )ad  
        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‰   )r7   r1   r2   s      r(   ÚtestzSubtests.test¡   s;   € ô2 &Ø�K‰KØØØ—M‘MØ $× 9Ñ 9Ø—=‘=×'Ñ'ô
ð 	
r*   )
r�   úpluggy.HookRelayr�   ú*Callable[[], AbstractContextManager[None]]rŽ   r   r‡   ÚboolrH   rI   r<   )r1   r0   r2   r   rH   r™   )rL   rM   rN   rO   r—   rš   rC   r*   r(   rƒ   rƒ   ‘   sf   „ Ùið  ñ àð ð Hð ð ð	 ð ð ð 
ó ð ð 
àð 
ð ð 
ð 
 ô	 
r*   c                  ón   — e Zd ZU dZded<   ded<   ded<   ded	<   d
ed<   ded<   dd„Z	 	 	 	 	 	 	 	 dd„Zy)r™   z�
    Context manager for subtests, capturing exceptions raised inside the subtest scope and handling
    them through the pytest machinery.
    r›   r�   r0   r1   rK   r2   rœ   r�   r   rŽ   r   r‰   c                ód  — d}t        j                   «       | _        t        j                  «       | _        d | _        t        «       | _        | j                  j                  t        | j                  «      «      | _
        | j                  j                  t        | j                  «      «      | _        y )NT)ÚtimeÚ_startÚperf_counterÚ_precise_startÚ	_exc_infor
   Ú_exit_stackÚenter_contextÚcapturing_outputrŽ   Ú_captured_outputÚcapturing_logsÚ_captured_logs)r7   Ú__tracebackhide__s     r(   Ú	__enter__z _SubTestContextManager.__enter__×   sƒ   € Ø Ðä—i‘i“kˆŒÜ"×/Ñ/Ó1ˆÔØˆŒä$›;ˆÔØ $× 0Ñ 0× >Ñ >Ü˜TŸ\™\Ó*ó!
ˆÔð #×.Ñ.×<Ñ<Ü˜4Ÿ<™<Ó(ó
ˆÕr*   c           	     óB  — d}|�t        j                  |«      }nd }| j                  j                  «        t	        j
                  «       }|| j                  z
  }t	        j                  «       }t        d    d || j                  ||dd¬«      }	| j                  j                  | j                  j                  |	¬«      }
t        j                  |
t        | j                   | j"                  ¬«      | j$                  | j&                  ¬«      }|j(                  rH| j*                  j,                  t.           }|| j                  j                  j0                  xx   dz  cc<   | j3                  «       5  | j                  j5                  |¬«       d d d «       t7        |	|«      r2| j                  j9                  | j                  j                  |	|¬	«       |�At;        |t=        | j*                  «      «      ry
| j                  j>                  j@                  ry
y# 1 sw Y   Œ‹xY w)NTÚcall)ÚstartÚstopÚdurationÚwhenr‡   )Úitemr®   rB   )r|   r}   é   ©rs   )rˆ   r®   rs   F)!r   Úfrom_exceptionr¥   Úcloser    r¢   r£   r   r¡   r�   Úpytest_runtest_makereportrŽ   rˆ   rT   r   r/   r1   r2   r¨   rª   Úfailedr‰   ÚstashÚfailed_subtests_keyÚnodeidr�   Úpytest_runtest_logreportr   Úpytest_exception_interactÚ
isinstancer    ÚsessionÚ
shouldfail)r7   Úexc_typeÚexc_valÚexc_tbr«   Úexc_infoÚprecise_stopr±   r°   Ú	call_infors   Ú
sub_reportÚfailed_subtestss                r(   Ú__exit__z_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Ø˜DŸL™L×-Ñ-×4Ñ4Ó5¸Ñ:Ó5à×%Ñ%Ó'ñ 	CØ�J‰J×/Ñ/°zÐ/ÔB÷	Cô ' y°*Ô=Ø�J‰J×0Ñ0Ø—\‘\×&Ñ&¨Y¸zð 1ô ð ÐÜ˜'Ô#9¸$¿+¹+Ó#FÔGØØ�|‰|×#Ñ#×.Ò.ØØ÷	Cð 	Cús   Å.HÈHNrG   )rÂ   ztype[BaseException] | NonerÃ   zBaseException | NonerÄ   zTracebackType | NonerH   r�   )rL   rM   rN   rO   rP   r¬   rÊ   rC   r*   r(   r™   r™   Ä   s[   … ñð ÓØ	ƒOØÓØCÓCØÓØƒNó
ð6à,ð6ð &ð6ð %ð	6ð
 
ô6r*   r™   c              #  ó8  K  — | j                   j                  dd «      }| j                   j                  j                  d«      }t	        |dd «      rd }n2|dk(  rt        t        | d¬«      }n|dk(  rt        t        | d¬«      }nd }|� |j                  «        t        «       }	 |–— |�4 |j                  «       \  }} |j                  «        ||_        ||_        y y # |�4 |j                  «       \  }} |j                  «        ||_        ||_        w w xY w­w)NÚcapturer…   Ú_capture_fixtureÚsysTr†   Úfd)r‰   Ú	getoptionrŠ   Ú	getpluginÚgetattrr   r   r   r¡   ÚCapturedÚ
readouterrr·   ru   rw   )rŽ   ÚoptionÚcapmanr   Úcapturedru   rw   s          r(   r§   r§     s  è ø€ à�^‰^×%Ñ% i°Ó6€Fà�^‰^×)Ñ)×3Ñ3Ð4DÓE€FÜˆvÐ)¨4Ô0à‰Ø	�5ŠÜ ¤¨WÀÔE‰Ø	�4ŠÜ ¤¨G¸tÔD‰àˆàÐØˆ�‰Ôä‹z€HðØŠàÐØ)�w×)Ñ)Ó+‰HˆC�ØˆG�M‰MŒOØˆHŒLØˆH�Lð	 øˆ7ÐØ)�w×)Ñ)Ó+‰HˆC�ØˆG�M‰MŒOØˆHŒLØˆH�Lð	 üs   ‚B!DÂ$C Â(7DÃ8DÄDc              #  ó$  K  — | j                   j                  j                  d«      }|€d –— y t        «       }|j	                  |j
                  «       t        |«      }t        ||j                  ¬«      5  |–— d d d «       y # 1 sw Y   y xY w­w)Nzlogging-plugin)Úlevel)	r‰   rŠ   rÑ   r   ÚsetFormatterÚ	formatterÚCapturedLogsr   Ú	log_level)rŽ   Úlogging_pluginrx   r}   s       r(   r©   r©   <  s‚   è ø€ ð ,3¯>©>×+GÑ+G×+QÑ+QØó,€Nð ÐØ‹
ä#Ó%ˆØ×Ñ˜^×5Ñ5Ô6ä$ WÓ-ˆÜ˜7¨.×*BÑ*BÔCñ 	 ØÒ÷	 ÷ 	 ñ 	 üs   ‚A4BÁ6BÁ;	BÂBÂ	Bc                  ó*   — e Zd ZU dZded<   dZded<   y)rÓ   Ú r€   ru   rw   N)rL   rM   rN   ru   rP   rw   rC   r*   r(   rÓ   rÓ   N  s   … à€CˆƒMØ€Cˆ„Mr*   rÓ   c                  ó   — e Zd ZU ded<   y)rÜ   r   rx   N)rL   rM   rN   rP   rC   r*   r(   rÜ   rÜ   T  s   … àÔr*   rÜ   c                óD   — t        | t        «      r| j                  «       S y r<   )r¿   rT   r@   rµ   s    r(   Úpytest_report_to_serializablerã   Y  s   € Ü�&œ-Ô(Ø�‰Ó Ð Ør*   c                óV   — | j                  d«      dk(  rt        j                  | «      S y )Nrl   rk   )ÚgetrT   rF   )ro   s    r(   Úpytest_report_from_serializableræ   _  s'   € Ø‡x�x�Ó ?Ò2Ü×'Ñ'¨Ó-Ð-Ør*   c                óD   — t        t        «      | j                  t        <   y r<   )r   Úintrº   r»   )r‰   s    r(   Úpytest_configureré   j  s   € Ü(3´CÓ(8€F‡L�LÔ$Ò%r*   )Útryfirstc                ó2  — | j                   dk7  ry |j                  t        j                  «      dk(  }t	        | t
        «      r‡| j                  }| j                  «       }t        | d«      r|ry|dk(  rd}d}d}ny |||› |› �fS | j                  r|d	d
|› �fS | j                  r|ryd|› �d	d|› �fS | j                  r|ry|dd|› �fS y |j                  t           | j                     }| j                  r"|dkD  rd| _        |dkD  rdnd}	d|› d|	› �| _        y )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¿   rT   ÚoutcomerY   Úhasattrr¹   Úpassedrí   rº   r»   r¼   Úlongrepr)
rs   r‰   Úquietrø   ÚdescriptionÚcategoryÚshortÚstatusÚfailed_subtests_countÚsuffixs
             r(   Úpytest_report_teststatusr  n  sS  € ð
 ‡{�{�fÒØà× Ñ ¤×!:Ñ!:Ó;¸qÑ@€EÜ�&œ-Ô(Ø—.‘.ˆØ×2Ñ2Ó4ˆä�6˜:Ô&ÙØ!Ø˜IÒ%Ø$�Ø�Ø#‘ð Ø˜U 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   rH   rI   )rŽ   r   rH   rƒ   )rŽ   r   rH   zIterator[Captured])rŽ   r   rH   zIterator[CapturedLogs | None])rs   r   rH   zdict[str, Any] | None)ro   rK   rH   zSubtestReport | None)r‰   r   rH   rI   )rs   r   r‰   r   rH   z0tuple[str, str, str | Mapping[str, bool]] | None)HrO   Ú
__future__r   Úcollectionsr   Úcollections.abcr   r   r   Ú
contextlibr   r	   r
   r   r=   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)   Ú	dataclassr/   rT   r‘   rƒ   r™   r§   r©   rÓ   rÜ   rã   ræ   r€   rè   r»   ré   r  rC   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 ð Øð à"ò ó ð ð" ×Ñ÷ð ó ðð
 ×Ñ÷ð ó ðóóð 6�h˜{¨3°¨8Ñ4Ñ5Ó7Ð ó9ñ 
�4Ôð3Øð3àð3ð 6ò3ó ñ3r*   