Ë
    æØjjzO  ã                  óæ  — d Z ddlmZ ddlZddlmZ ddlZddl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
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"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+ ejX                  dk  rdd l-m.Z. erdd!l/m0Z0 dd"l1m2Z2 d<d#„Z3d=d$„Z4d>d%„Z5d>d&„Z6d?d'„Z7	 d@	 	 	 	 	 	 	 dAd)„Z8dBd*„Z9dCd+„Z:dCd,„Z;dDd-„Z<	 	 	 	 	 	 dEd.„Z=dFd/„Z>	 dG	 	 	 	 	 	 	 dHd0„Z?dId1„Z@dJd2„ZA ed3d(¬4«      ZBeej†                   G d5„ d6eeB   «      «       «       ZDdKd7„ZEdLd8„ZF G d9„ d:«      ZGdLd;„ZHy)Mz3Basic collect and runtest protocol implementations.é    )ÚannotationsN)ÚCallable)Úcast)Úfinal)ÚGeneric)ÚLiteral)ÚTYPE_CHECKING)ÚTypeVaré   )ÚConfig)Ú
BaseReport)ÚCollectErrorRepr)ÚCollectReport)Ú
TestReport)Útiming)ÚExceptionChainRepr)ÚExceptionInfo)ÚTerminalRepr)ÚParser)Úcheck_ispytest)Ú	Collector)Ú	Directory)ÚItem)ÚNode)ÚExit)ÚOutcomeException)ÚSkipped)ÚTEST_OUTCOME)é   é   )ÚBaseExceptionGroup)ÚSession)ÚTerminalReporterc                ó˜   — | j                  ddd¬«      }|j                  ddt        d dd¬	«       |j                  d
dt        d dd¬	«       y )Nzterminal reportingÚ	ReportingÚgeneral)Úafterz--durationsÚstoreÚNz1Show N slowest setup/test durations (N=0 for all))ÚactionÚtypeÚdefaultÚmetavarÚhelpz--durations-minzcMinimal duration in seconds for inclusion in slowest list. Default: 0.005 (or 0.0 if -vv is given).)ÚgetgroupÚ	addoptionÚintÚfloat)ÚparserÚgroups     úP/opt/eval-harness/bench_task/venv/lib/python3.12/site-packages/_pytest/runner.pyÚpytest_addoptionr6   3   sa   € Ø�O‰OÐ0°+ÀYˆOÓO€EØ	‡O�OØØÜØØØ@ð ô ð 
‡O�OØØÜØØð3ð õ ó    c                óp  — | j                   j                  j                  }| j                   j                  j                  }| j                   j	                  «       }|€y |€	|dk  rdnd}| }g }|j
                  j                  «       D ]'  }|D ]   }t        |d«      sŒ|j                  |«       Œ" Œ) |sy |j                  d„ d¬«       |s|j                  dd	«       n|j                  dd
|› d�«       |d | }t        |«      D ]±  \  }}|j                  |k  rd|j                  d«       dt        |«      |z
  › d|d›d�}	| j                   j                  j                  €|	dz  }	|	dz  }	|j                  |	«        y |j                  |j                  d›d|j                  d›d|j                   › �«       Œ³ y )Né   g{®Gázt?g        Údurationc                ó   — | j                   S ©N)r:   )Úxs    r5   ú<lambda>z)pytest_terminal_summary.<locals>.<lambda>X   s
   € ˜QŸZ™Z€ r7   T)ÚkeyÚreverseú=zslowest durationszslowest z
 durationsÚ ú(z durations < Úgz	s hidden.z"  Use -vv to show these durations.ú)z02.2fzs z<8ú )ÚconfigÚoptionÚ	durationsÚdurations_minÚget_verbosityÚstatsÚvaluesÚhasattrÚappendÚsortÚ	write_sepÚ	enumerater:   Ú
write_lineÚlenÚwhenÚnodeid)
ÚterminalreporterrI   rJ   ÚverboseÚtrÚdlistÚreplistÚrepÚiÚmessages
             r5   Úpytest_terminal_summaryr_   H   s²  € Ø ×'Ñ'×.Ñ.×8Ñ8€IØ$×+Ñ+×2Ñ2×@Ñ@€MØ×%Ñ%×3Ñ3Ó5€GØÐØØÐØ!(¨1¢™°#ˆØ	€BØ€EØ—8‘8—?‘?Ó$ò "ˆØò 	"ˆCÜ�s˜JÕ'Ø—‘˜SÕ!ñ	"ð"ñ ØØ	‡J�JÑ'°€JÔ6ÙØ
�‰�SÐ-Õ.à
�‰�S˜H Y K¨zÐ:Ô;Ø�j�yÐ!ˆä˜EÓ"ò 	K‰ˆˆ3Ø�<‰<˜-Ò'Ø�M‰M˜"ÔØœ#˜e›* q™.Ð)¨°}ÀQÐ6GÀyÐQˆGØ×&Ñ&×-Ñ-×;Ñ;ÐCØÐ?Ñ?�Ø�s‰NˆGØ�M‰M˜'Ô"ÙØ
�‰˜Ÿ™ eÐ,¨B¨s¯x©x¸¨m¸1¸S¿Z¹Z¸LÐIÕJñ	Kr7   c                ó"   — t        «       | _        y r<   )Ú
SetupStateÚ_setupstate©Úsessions    r5   Úpytest_sessionstartre   k   s   € Ü$›,€GÕr7   c                ó:   — | j                   j                  d «       y r<   )rb   Úteardown_exactrc   s    r5   Úpytest_sessionfinishrh   o   s   € Ø×Ñ×&Ñ& tÕ,r7   c                óÒ   — | j                   }|j                  | j                  | j                  ¬«       t	        | |¬«       |j                  | j                  | j                  ¬«       y)N)rV   Úlocation©ÚnextitemT)ÚihookÚpytest_runtest_logstartrV   rj   ÚruntestprotocolÚpytest_runtest_logfinish)Úitemrl   rm   s      r5   Úpytest_runtest_protocolrr   s   sN   € Ø�J‰J€EØ	×!Ñ!¨¯©¸t¿}¹}Ð!ÔMÜ�D 8Õ,Ø	×"Ñ"¨$¯+©+ÀÇÁÐ"ÔNØr7   Tc                ó@  — t        | d«      }|r| j                  s| j                  «        	 t        | d|«      }|g}|j                  rd| j
                  j                  dd«      }| j
                  j                  dd«      rt        | | ¬«       |s|j                  t        | d|«      «       | j                  j                  s| j                  j                  rd }|j                  t        | d||¬	«      «       |rd| _        d | _        |S # |rd| _        d | _        w w xY w)
NÚ_requestÚsetupÚ	setuponlyFÚ	setupshow)Ú	add_spaceÚcallÚteardownrk   )rN   rt   Ú_initrequestÚcall_and_reportÚpassedrG   Ú	getoptionÚshow_test_itemrO   rd   Ú
shouldfailÚ
shouldstopÚfuncargs)rq   Úlogrl   Ú
hasrequestr\   ÚreportsÚ
setup_onlys          r5   ro   ro   {   sÿ   € ô ˜˜zÓ*€JÙ˜$Ÿ-š-ð 	×ÑÔð!Ü˜d G¨SÓ1ˆØ�%ˆØ�:Š:ØŸ™×.Ñ.¨{¸EÓBˆJØ�{‰{×$Ñ$ [°%Ô8Ü˜t°:¨~Õ>ÙØ—‘œ¨t°V¸SÓAÔBð �<‰<×"Ò" d§l¡l×&=Ò&=ØˆHØ�‰” t¨Z¸ÀxÔPÔQñ Ø!ˆDŒMØ ˆDŒMØ€Nøñ Ø!ˆDŒMØ ˆD�Mð ús   ¬CD
 Ä
Dc               ón  — | j                   j                  «       }|j                  «        |j                  d«       |j                  | j                  «       t        t        | dg «      «      }|r$|j                  ddj                  |«      › d�«       |r|j                  d«       |j                  «        y)zAShow test function, parameters and the fixtures of the test item.z        Úfixturenamesz (fixtures used: z, rE   rF   N)	rG   Úget_terminal_writerÚlineÚwriterV   ÚsortedÚgetattrÚjoinÚflush)rq   rx   ÚtwÚused_fixturess       r5   r   r   š   s†   € à	�‰×	(Ñ	(Ó	*€BØ‡G�G„IØ‡H�HˆWÔØ‡H�HˆT�[‰[ÔÜœ7 4¨¸Ó<Ó=€MÙØ
�‰Ð$ T§Y¡Y¨}Ó%=Ð$>¸aÐ@ÔAÙØ
�‰�ŒØ‡H�H…Jr7   c                óf   — t        | d«       | j                  j                  j                  | «       y )Nru   )Ú_update_current_test_varrd   rb   ru   )rq   s    r5   Úpytest_runtest_setupr”   ¨   s$   € Ü˜T 7Ô+Ø‡L�L×Ñ×"Ñ" 4Õ(r7   c                ó¬  — t        | d«       	 t        `t        `t        `t        j
                  dk\  rt        `	 | j                  «        y # t        $ r Y Œw xY w# t        $ rp}t        |«      t        _        |t        _        t        j
                  dk\  r|t        _        |j                  €J ‚|j                  j                  t        _        ‚ d }~ww xY w)Nry   )r   é   r   )r“   ÚsysÚ	last_typeÚ
last_valueÚlast_tracebackÚversion_infoÚlast_excÚAttributeErrorÚruntestÚ	Exceptionr+   Ú__traceback__Útb_next)rq   Úes     r5   Úpytest_runtest_callr£   ­   s³   € Ü˜T 6Ô*ðÜˆMÜˆNÜÐÜ×Ñ˜zÒ)Ü�ðØ�‰�øô ò Ùðûô ò 	ä˜Q›ŒŒØŒŒÜ×Ñ˜zÒ)ØŒCŒLØ�‰Ð*Ð*Ð*àŸ_™_×4Ñ4ŒÔØûð	ús)   Ž+A ºA Á	AÁAÁ	CÁ#A+CÃCc                ó~   — t        | d«       | j                  j                  j                  |«       t        | d «       y )Nrz   )r“   rd   rb   rg   )rq   rl   s     r5   Úpytest_runtest_teardownr¥   Å   s.   € Ü˜T :Ô.Ø‡L�L×Ñ×+Ñ+¨HÔ5Ü˜T 4Õ(r7   c                óº   — d}|r8| j                   › d|› d�}|j                  dd«      }|t        j                  |<   yt        j                  j	                  |«       y)zŸUpdate :envvar:`PYTEST_CURRENT_TEST` to reflect the current item and stage.

    If ``when`` is None, delete ``PYTEST_CURRENT_TEST`` from the environment.
    ÚPYTEST_CURRENT_TESTz (rE   ú z(null)N)rV   ÚreplaceÚosÚenvironÚpop)rq   rU   Úvar_nameÚvalues       r5   r“   r“   Ë   sP   € ð %€HÙØ—;‘;�-˜r $  qÐ)ˆà—‘˜f hÓ/ˆØ$Œ�
‰
�8Òä
�
‰
�‰�xÕ r7   c                óV   — | j                   dv r| j                  ry| j                  ryyy )N)ru   rz   )ÚerrorÚEÚERROR)ÚskippedÚsÚSKIPPED)rB   rB   rB   )rU   Úfailedr³   ©Úreports    r5   Úpytest_report_teststatusr¹   Ü   s)   € Ø‡{�{Ð+Ñ+Ø�=Š=à(Ø�^Š^Ø,àØr7   c                ó’  ‡ ‡‡— ‰ j                   }|dk(  r|j                  Šn.|dk(  r|j                  Šn|dk(  r|j                  Šn
J d|› �«       ‚t        j                  ˆ ˆˆfd„|t        ‰ j                  «      ¬«      }|j                  ‰ |¬«      }|r|j                  |¬«       t        ||«      r|j                  ‰ ||¬	«       |S )
Nru   ry   rz   zUnhandled runtest hook case: c                 ó   •—  ‰dd‰ i‰¤ŽS )Nrq   © r¼   )rq   ÚkwdsÚruntest_hooks   €€€r5   r>   z!call_and_report.<locals>.<lambda>ú   s   ø€ ‘Ñ/ $Ð/¨$Ñ/€ r7   )rU   Úreraise©rq   ry   r·   ©Únodery   r¸   )rm   r”   r£   r¥   ÚCallInfoÚ	from_callÚget_reraise_exceptionsrG   Úpytest_runtest_makereportÚpytest_runtest_logreportÚcheck_interactive_exceptionÚpytest_exception_interact)rq   rU   rƒ   r½   rm   ry   r¸   r¾   s   `  `   @r5   r|   r|   ì   sÍ   ú€ ð �J‰J€EØˆw‚Ø,1×,FÑ,F‰Ø	�ŠØ×0Ñ0‰Ø	�Ò	Ø×4Ñ4‰à<Ð5°d°VÐ<Ó<ˆuä×ÑÝ/ØÜ& t§{¡{Ó3ð ó €Dð
 ×8Ñ8¸dÈÐ8ÓN€FÙ
Ø×&Ñ&¨fÐ&Ô5Ü" 4¨Ô0Ø×'Ñ'¨T¸ÀVÐ'ÔLØ€Mr7   c                óL   — t         f}| j                  dd«      s
|t        fz  }|S )z@Return exception types that should not be suppressed in general.ÚusepdbF)r   r~   ÚKeyboardInterrupt)rG   r¿   s     r5   rÅ   rÅ     s,   € ä04¨w€GØ×Ñ˜H eÔ,ØÔ%Ð'Ñ'ˆØ€Nr7   c                ó:  — | j                   €yt        |d«      ryt        j                  j	                  d«      }t        | j                   j                  t        t        j                  z  «      s,|�+t        | j                   j                  |j                  «      ryy)zVCheck whether the call raised an exception that should be reported as
    interactive.FÚwasxfailÚunittestT)ÚexcinforN   r—   ÚmodulesÚgetÚ
isinstancer®   r   ÚbdbÚBdbQuitÚSkipTest)ry   r¸   rÏ   s      r5   rÈ   rÈ     st   € ð ‡|�|ÐàÜˆv�zÔ"àÜ�{‰{�‰˜zÓ*€HÜ�$—,‘,×$Ñ$¤g´·±Ñ&;Ô<ØÐ¤¨D¯L©L×,>Ñ,>À×@QÑ@QÔ!Rð Ør7   ÚTResult)Ú	covariantc                  ó¸   — 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œ	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dd„Zedd„«       Ze	 d	 	 	 	 	 	 	 dd„«       Z	dd„Z
y)rÃ   z/Result/Exception info of a function invocation.úTResult | NoneÚ_resultú#ExceptionInfo[BaseException] | NonerÐ   r2   ÚstartÚstopr:   ú/Literal['collect', 'setup', 'call', 'teardown']rU   F)Ú	_ispytestc               ón   — t        |«       || _        || _        || _        || _        || _        || _        y r<   )r   rÛ   rÐ   rÝ   rÞ   r:   rU   )ÚselfÚresultrÐ   rÝ   rÞ   r:   rU   rà   s           r5   Ú__init__zCallInfo.__init__4  s6   € ô 	�yÔ!ØˆŒØˆŒØˆŒ
ØˆŒ	Ø ˆŒØˆ�	r7   c                ój   — | j                   �t        | ›d�«      ‚t        t        | j                  «      S )zlThe return value of the call, if it didn't raise.

        Can only be accessed if excinfo is None.
        z has no valid result)rÐ   r�   r   r×   rÛ   ©râ   s    r5   rã   zCallInfo.resultG  s4   € ð �<‰<Ð#Ü  D 8Ð+?Ð!@ÓAÐAô ”G˜TŸ\™\Ó*Ð*r7   Nc           	     ó\  — d}t        j                  «       }	  |«       }|j                  «       } | |j                  j                  |j                  j                  |j                  |||d¬«      S # t        $ r2 t        j                  «       }|�t        |j                  |«      r‚ d}Y Œ‹w xY w)a¯  Call func, wrapping the result in a CallInfo.

        :param func:
            The function to call. Called without arguments.
        :type func: Callable[[], _pytest.runner.TResult]
        :param when:
            The phase in which the function is called.
        :param reraise:
            Exception or exceptions that shall propagate if raised by the
            function, instead of being wrapped in the CallInfo.
        NT)rÝ   rÞ   r:   rU   rã   rÐ   rà   )r   ÚInstantÚBaseExceptionr   Úfrom_currentrÓ   r®   ÚelapsedrÝ   ÚtimerÞ   Úseconds)ÚclsÚfuncrU   r¿   rÐ   Úinstantrã   r:   s           r5   rÄ   zCallInfo.from_callT  s¥   € ð$ ˆÜ—.‘.Ó"ˆð	Ù%)£VˆFð —?‘?Ó$ˆÙØ—.‘.×%Ñ%Ø—‘×#Ñ#Ø×%Ñ%ØØØØô
ð 	
øô ò 	Ü#×0Ñ0Ó2ˆGØÐ"¤z°'·-±-ÀÔ'IØØŠFð		ús   ˜A0 Á08B+Â*B+c                óŽ   — | j                   €d| j                  ›d| j                  ›d�S d| j                  ›d| j                   ›d�S )Nz<CallInfo when=z	 result: ú>z	 excinfo=)rÐ   rU   rÛ   ræ   s    r5   Ú__repr__zCallInfo.__repr__z  sH   € Ø�<‰<ÐØ$ T§Y¡Y M°¸4¿<¹<Ð:JÈ!ÐLÐLØ  §¡ ¨Y°t·|±|Ð6FÀaÐHÐHr7   )rã   rÚ   rÐ   rÜ   rÝ   r2   rÞ   r2   r:   r2   rU   rß   rà   ÚboolÚreturnÚNone)rõ   r×   r<   )rï   zCallable[[], TResult]rU   rß   r¿   z<type[BaseException] | tuple[type[BaseException], ...] | Nonerõ   zCallInfo[TResult])rõ   Ústr)Ú__name__Ú
__module__Ú__qualname__Ú__doc__Ú__annotations__rä   Úpropertyrã   ÚclassmethodrÄ   ró   r¼   r7   r5   rÃ   rÃ   #  sÝ   … ñ :àÓà0Ó0àƒLà
ƒKàƒOà
9Ó9ð  ñàðð 5ðð ð	ð
 ðð ðð >ðð ðð 
óð& ò
+ó ð
+ð ð
 QUð	#
à#ð#
ð >ð#
ð Nð	#
ð
 
ò#
ó ð#
ôJIr7   rÃ   c                ó.   — t        j                  | |«      S r<   )r   Úfrom_item_and_callrÀ   s     r5   rÆ   rÆ   €  s   € Ü×(Ñ(¨¨tÓ4Ð4r7   c                óL  ‡ — d
ˆ fd„}t         j                  |dt        t        f¬«      }d }|j                  sd}�n/t
        g}t        j                  j                  d«      }|�|j                  |j                  «       t        |j                  j                  t        |«      «      r{d}‰ j                  |j                  d«      }t        |t        «      sJ t!        |«      «       ‚|j"                  }|sJ ‚t%        |j&                  «      |j(                  |j*                  f}nHd}‰ j-                  |j                  «      }	t/        |	d	«      st        |	t$        «      sJ ‚t1        |	«      }	|	}|j                  s|j2                  nd }
t5        ‰ j6                  |||
«      }||_        |S )Nc                 óH  •— t        ‰ t        «      ry‰ j                  j                  j	                  ‰ j
                  ‰ j                  j                  d«      ‰ j                  j                  ‰ j                  j                  d«      ¬«       t        ‰ j                  «       «      S )NÚ
importmodeÚconsider_namespace_packages)Úrootpathr  )rÓ   r   rG   ÚpluginmanagerÚ_loadconftestmodulesÚpathr~   r  ÚgetiniÚlistÚcollect©Ú	collectors   €r5   r  z+pytest_make_collect_report.<locals>.collect…  s†   ø€ ô �i¤Ô+Ø×Ñ×*Ñ*×?Ñ?Ø—‘Ø× Ñ ×*Ñ*¨<Ó8Ø"×)Ñ)×2Ñ2Ø,5×,<Ñ,<×,CÑ,CØ1ó-ð	 @ô ô �I×%Ñ%Ó'Ó(Ð(r7   r  )r¿   r}   rÏ   r³   rŠ   r¶   Ú
toterminal)rõ   zlist[Item | Collector])rÃ   rÄ   rÌ   Ú
SystemExitrÐ   r   r—   rÑ   rÒ   rO   rÖ   rÓ   r®   ÚtupleÚ_repr_failure_pyr   ÚreprÚ	reprcrashr÷   r  Úlinenor^   Úrepr_failurerN   r   rã   r   rV   ry   )r  r  ry   ÚlongreprÚoutcomeÚskip_exceptionsrÏ   Úr_ÚrÚ	errorinforã   r\   s   `           r5   Úpytest_make_collect_reportr  „  sc  ø€ õ)ô& ×ÑØ�Ô%6¼
Ð$Cð ó €Dð BF€HØ�<Š<Ø:BŠä"˜)ˆÜ—;‘;—?‘? :Ó.ˆØÐØ×"Ñ" 8×#4Ñ#4Ô5Ü�d—l‘l×(Ñ(¬%°Ó*@ÔAØˆGØ×+Ñ+¨D¯L©L¸&ÓAˆBÜ˜bÔ"4Ô5Ð?´t¸B³xÓ?Ð5Ø—‘ˆAÙˆH�1Ü˜AŸF™F› Q§X¡X¨q¯y©yÐ9‰HàˆGØ!×.Ñ.¨t¯|©|Ó<ˆIÜ˜9 lÔ3Ü! )¬SÔ1Ð1Ð1Ü,¨YÓ7�	Ø ˆHØ $§¢ˆT�[Š[°$€FÜ
˜	×(Ñ(¨'°8¸VÓ
D€CØ€C„HØ€Jr7   c                  ó8   — e Zd ZdZdd„Zd	d„Zd
d„Zdd„Zdd„Zy)ra   aE  Shared state for setting up/tearing down test items or collectors
    in a session.

    Suppose we have a collection tree as follows:

    <Session session>
        <Module mod1>
            <Function item1>
        <Module mod2>
            <Function item2>

    The SetupState maintains a stack. The stack starts out empty:

        []

    During the setup phase of item1, setup(item1) is called. What it does
    is:

        push session to stack, run session.setup()
        push mod1 to stack, run mod1.setup()
        push item1 to stack, run item1.setup()

    The stack is:

        [session, mod1, item1]

    While the stack is in this shape, it is allowed to add finalizers to
    each of session, mod1, item1 using addfinalizer().

    During the teardown phase of item1, teardown_exact(item2) is called,
    where item2 is the next item to item1. What it does is:

        pop item1 from stack, run its teardowns
        pop mod1 from stack, run its teardowns

    mod1 was popped because it ended its purpose with item1. The stack is:

        [session]

    During the setup phase of item2, setup(item2) is called. What it does
    is:

        push mod2 to stack, run mod2.setup()
        push item2 to stack, run item2.setup()

    Stack:

        [session, mod2, item2]

    During the teardown phase of item2, teardown_exact(None) is called,
    because item2 is the last item. What it does is:

        pop item2 from stack, run its teardowns
        pop mod2 from stack, run its teardowns
        pop session from stack, run its teardowns

    Stack:

        []

    The end!
    c                ó   — i | _         y r<   ©Ústackræ   s    r5   rä   zSetupState.__init__÷  s   € ð ð 	�
r7   c                ó   — || j                   v S )zYCheck if a node is currently active in the stack -- set up and not
        torn down yet.r  )râ   rÂ   s     r5   Úis_node_activezSetupState.is_node_active  s   € ð �t—z‘zÐ!Ð!r7   c                óè  — |j                  «       }| j                  j                  «       D ],  \  }\  }}||v sJ d«       ‚|sŒ|d   j                  |d   «      ‚ |t	        | j                  «      d D ]?  }|| j                  vsJ ‚|j
                  gdf| j                  |<   	 |j                  «        ŒA y# t        $ r3}| j                  |   d   ||j                  ff| j                  |<   ‚ d}~ww xY w)z4Setup objects along the collector chain to the item.z(previous item was not torn down properlyr   r   N)	Ú	listchainr   ÚitemsÚwith_tracebackrT   rz   ru   r   r    )râ   rq   Úneeded_collectorsÚcolÚ
finalizersÚexcs         r5   ru   zSetupState.setup  s   € à ŸN™NÓ,Ðð '+§j¡j×&6Ñ&6Ó&8ò 	4Ñ"ˆCÑ"�*˜cØÐ+Ñ+ÐWÐ-WÓWÐ+ÚØ˜!‘f×+Ñ+¨C°©FÓ3Ð3ð	4ð
 %¤S¨¯©£_Ð%6Ð7ò 	ˆCØ˜dŸj™jÑ(Ð(Ð(à #§¡˜~¨tÐ4ˆD�J‰J�s‰OðØ—	‘	•ñ	øô  ò Ø#'§:¡:¨c¡?°1Ñ#5¸¸S×=NÑ=NÐ7OÐ"P�—
‘
˜3‘Øûðús   Â"B5Â5	C1Â>.C,Ã,C1c                óÊ   — |rt        |t        «      rJ ‚t        |«      sJ ‚|| j                  v sJ || j                  f«       ‚| j                  |   d   j	                  |«       y)zgAttach a finalizer to the given node.

        The node must be currently active in the stack.
        r   N)rÓ   r  Úcallabler   rO   )râ   Ú	finalizerrÂ   s      r5   ÚaddfinalizerzSetupState.addfinalizer  s`   € ñ
 œJ t¬UÔ3Ð3Ð3Ü˜	Ô"Ð"Ð"Ø�t—z‘zÑ!Ð5 D¨$¯*©*Ð#5Ó5Ð!Ø�
‰
�4Ñ˜Ñ×"Ñ" 9Õ-r7   c           	     ó°  — |xr |j                  «       xs g }g }| j                  rÑt        | j                  j                  «       «      |dt	        | j                  «       k(  rn”| j                  j                  «       \  }\  }}g }|r|j                  «       }	  |«        |rŒt	        |«      dk(  r|j                  |«       n(|r&d|›�}
|j                  t        |
|ddd…   «      «       | j                  rŒÑt	        |«      dk(  r|d   ‚|rt        d|ddd…   «      ‚|€| j                  rJ ‚yy# t        $ r}	|j                  |	«       Y d}	~	Œ°d}	~	ww xY w)zÍTeardown the current stack up until reaching nodes that nextitem
        also descends from.

        When nextitem is None (meaning we're at the last item), the entire
        stack is torn down.
        Nr   zerrors while tearing down éÿÿÿÿr   zerrors during test teardown)r$  r   r
  ÚkeysrT   Úpopitemr¬   r   rO   Úextendr!   )râ   rl   r'  Ú
exceptionsrÂ   r)  Ú_Úthese_exceptionsÚfinr¢   Úmsgs              r5   rg   zSetupState.teardown_exact'  sZ  € ð &Ò>¨(×*<Ñ*<Ó*>ÒEÀ2ÐØ*,ˆ
Ø�jŠjÜ�D—J‘J—O‘OÓ%Ó&Ð*;Ð<M¼cÀ$Ç*Á*»oÐ*NÒNØØ$(§J¡J×$6Ñ$6Ó$8Ñ!ˆD‘/�:˜qØ!ÐÙØ —n‘nÓ&�ð/Ù”Eò ô Ð#Ó$¨Ò)Ø×!Ñ!Ð"2Õ3Ù!Ø2°4°(Ð;�Ø×!Ñ!Ô"4°SÐ:JÉ4ÈRÈ4Ñ:PÓ"QÔRð! �j‹jô$ ˆz‹?˜aÒØ˜Q‘-ÐÙÜ$Ð%BÀJÉtÐQSÈtÑDTÓUÐUØÐØ—z’zÐ!�>�zð øô $ò /Ø$×+Ñ+¨A×.Ñ.ûð/ús   ÂD1 Ä1	EÄ:EÅEN)rõ   rö   )rÂ   r   rõ   rô   ©rq   r   rõ   rö   )r-  zCallable[[], object]rÂ   r   rõ   rö   )rl   úItem | Nonerõ   rö   )	rø   rù   rú   rû   rä   r"  ru   r.  rg   r¼   r7   r5   ra   ra   ·  s!   „ ñ=ó~
ó"ó
ó*.ô "r7   ra   c                óâ   — | j                   }|j                  | ¬«       |j                  | ¬«      }|j                  j	                  dd «      }|r t        ||«      r|j                  | ||¬«       |S )Nr  ry   rÁ   )rm   Úpytest_collectstartr  Ú__dict__r¬   rÈ   rÉ   )r  rm   r\   ry   s       r5   Úcollect_one_noder>  J  sl   € Ø�O‰O€EØ	×Ñ¨	ÐÔ2Ø×9Ñ9ÀIÐ9ÓN€CØ�<‰<×Ñ˜F DÓ)€DÙÔ+¨D°#Ô6Ø×'Ñ'¨Y¸TÈ#Ð'ÔNØ€Jr7   )r3   r   rõ   rö   )rW   r#   rõ   rö   )rd   r"   rõ   rö   )rq   r   rl   r:  rõ   rô   )TN)rq   r   rƒ   rô   rl   r:  rõ   zlist[TestReport])rq   r   rx   rô   rõ   rö   r9  )rq   r   rl   r:  rõ   rö   )rq   r   rU   z+Literal['setup', 'call', 'teardown'] | Nonerõ   rö   )r¸   r   rõ   ztuple[str, str, str] | None)T)rq   r   rU   z$Literal['setup', 'call', 'teardown']rƒ   rô   rõ   r   )rG   r   rõ   ztuple[type[BaseException], ...])ry   zCallInfo[object]r¸   r   rõ   rô   )rq   r   ry   zCallInfo[None]rõ   r   )r  r   rõ   r   )Irû   Ú
__future__r   rÔ   Úcollections.abcr   Údataclassesrª   r—   ÚtypesÚtypingr   r   r   r   r	   r
   rG   r   r…   r   r   r   r   Ú_pytestr   Ú_pytest._code.coder   r   r   Ú_pytest.config.argparsingr   Ú_pytest.deprecatedr   Ú_pytest.nodesr   r   r   r   Ú_pytest.outcomesr   r   r   r   r›   Úexceptiongroupr!   Ú_pytest.mainr"   Ú_pytest.terminalr#   r6   r_   re   rh   rr   ro   r   r”   r£   r¥   r“   r¹   r|   rÅ   rÈ   r×   Ú	dataclassrÃ   rÆ   r  ra   r>  r¼   r7   r5   ú<module>rN     s•  ðá 9å "ã 
Ý $Û Û 	Û 
Û Ý Ý Ý Ý Ý  Ý å Ý Ý %Ý "Ý Ý Ý 1Ý ,Ý +Ý ,Ý -Ý #Ý #Ý Ý Ý !Ý -Ý $Ý )ð ×Ñ�gÒÝ1áÝ$Ý1óó* KóF'ó-óð ;?ðØ
ðØðØ,7ðàóó>ó)ó
ó0)ð!Ø
ð!ØAð!à	ó!ó"	ð" IMðØ
ðØ:ðØAEðàóó4óñ$ �) tÔ
,€ð Ø×ÑôXIˆw�wÑó XIó ó ðXIóv5ó0÷fP"ñ P"ôfr7   