Ë
    •Kêjï3  ã                  óˆ  — 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l0m1Z1 dd l0m2Z2 dd!l0m3Z3 dd"l4m5Z5 erdd#l6m7Z7 d=d$„Z8 ejr                  d%d%d%¬&«       G d'„ d(«      «       Z: ejr                  d)¬*«       G d+„ d,e/«      «       Z;e&d>d.„«       Z< G d/„ d-«      Z=ejr                   G d0„ d1«      «       Z>ed?d2„«       Z?e	 	 	 	 d@d3„«       Z@ejr                   G d4„ d5«      «       ZAejr                   G d6„ d7«      «       ZBdAd8„ZCdBd9„ZD e5ee-eEf      «       ZFdCd:„ZG e d%¬;«      	 	 	 	 	 	 dDd<„«       ZHy)Ez*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)ÚNodeId)Ú
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    úU/home/oem/CyberBrain26-unified/.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 )Nr3   )ÚobjectÚ__setattr__r3   Úitemsr   )ÚselfÚkÚvs      r)   Ú__post_init__zSubtestContext.__post_init__A   s>   € ä×ÑØ�(¸$¿+¹+×:KÑ:KÓ:M×N±°°A˜Q¤¨£™^ÓNõ	
ùÛNs   ¯Ac                ó0   — t        j                  | «      }|S ©N)ÚdataclassesÚasdict)r8   Úresults     r)   Ú_to_jsonzSubtestContext._to_jsonG   s   € Ü×#Ñ# DÓ)ˆØˆr+   c                ó"   —  | |d   |d   ¬«      S )Nr2   r3   ©r2   r3   © )ÚclsÚds     r)   Ú
_from_jsonzSubtestContext._from_jsonK   s   € á�q˜‘x¨¨(©Ô4Ð4r+   N©ÚreturnÚNone©rI   údict[str, Any])rF   rL   rI   r#   )	Ú__name__Ú
__module__Ú__qualname__Ú__doc__Ú__annotations__r;   rA   ÚclassmethodrG   rD   r+   r)   r0   r0   :   s.   … áTà	ƒOØÓó
óð ò5ó ñ5r+   r0   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 )ÚSubtestReportr0   Úcontextc                óL   — | j                   \  }}}|› d| j                  «       › �S )Nú )ÚlocationÚ_sub_test_description)r8   Ú_Údomains      r)   Ú	head_linezSubtestReport.head_lineT   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)ú=NrD   )Ú.0r9   r:   s      r)   ú	<genexpr>z6SubtestReport._sub_test_description.<locals>.<genexpr>^   s#   è ø€ ò $Ù%  1�1�#�Q�q�c”
ñ$ùs   ‚ú(ú)rX   z(<subtest>))rV   r2   Úappendr3   Újoinr7   )r8   ÚpartsÚparams_descs      r)   rZ   z#SubtestReport._sub_test_descriptionY   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 )NrV   ÚSubTestReportÚ_report_typeú_subtest.context)ÚsuperrA   rV   )r8   ÚdataÚ	__class__s     €r)   rA   zSubtestReport._to_jsond   s>   ø€ Ü‰wÑÓ!ˆØ�ˆOØ.ˆˆ^ÑØ#'§<¡<×#8Ñ#8Ó#:ˆÐÑ Øˆr+   c                ó`   •— t         ‰| �  |«      }t        j                  |d   «      |_        |S )Nrn   )ro   rG   r0   rV   )rE   Ú
reportdictÚreportrq   s      €r)   rG   zSubtestReport._from_jsonk   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)ro   rG   rA   rV   ÚoutÚsectionsrg   ÚerrÚhandlerÚstreamÚgetvalue)rE   Útest_reportrV   Úcaptured_outputÚcaptured_logsr@   Úlogrq   s          €r)   Ú_newzSubtestReport._newq   s´   ø€ ô ‘Ñ# K×$8Ñ$8Ó$:Ó;ˆØ ˆŒáØ×"Ò"Ø—‘×&Ñ&Ð(>À×@SÑ@SÐ'TÔUØ×"Ò"Ø—‘×&Ñ&Ð(>À×@SÑ@SÐ'TÔUá ]×%:Ñ%:×%AÑ%A×%JÑ%JÓ%LÐL˜cÐLØ�O‰O×"Ñ"Ð$7¸Ð#=Ô>àˆr+   )rI   ÚstrrK   )rs   rL   rI   rU   )
r|   r   rV   r0   r}   zCaptured | Noner~   zCapturedLogs | NonerI   r#   )rM   rN   rO   rQ   Úpropertyr]   rZ   rA   rR   rG   r€   Ú__classcell__)rq   s   @r)   rU   rU   P   s}   ø… àÓàò:ó ð:ó	0õð ôó ðð
 ðàðð  ðð )ð	ð
 +ðð 
ôó ôr+   rU   Ú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)r8   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Š   )r8   r2   r3   s      r)   ÚtestzSubtests.test¢   s;   € ô2 &Ø�K‰KØØØ—M‘MØ $× 9Ñ 9Ø—=‘=×'Ñ'ô
ð 	
r+   )
rŽ   úpluggy.HookRelayr‘   ú*Callable[[], AbstractContextManager[None]]r�   r   rˆ   ÚboolrI   rJ   r=   )r2   r1   r3   r   rI   rš   )rM   rN   rO   rP   r˜   r›   rD   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Ž   r1   r2   rL   r3   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)r8   Ú__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¯   rC   )r}   r~   é   ©rt   )r‰   r¯   rt   F)!r   Úfrom_exceptionr¦   Úcloser¡   r£   r¤   r   r¢   rŽ   Úpytest_runtest_makereportr�   r‰   rU   r€   r0   r2   r3   r©   r«   ÚfailedrŠ   ÚstashÚfailed_subtests_keyÚidr‘   Úpytest_runtest_logreportr    Úpytest_exception_interactÚ
isinstancer!   ÚsessionÚ
shouldfail)r8   Úexc_typeÚexc_valÚexc_tbr¬   Úexc_infoÚprecise_stopr²   r±   Ú	call_infort   Ú
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×-Ñ-×0Ñ0Ó1°QÑ6Ó1à×%Ñ%Ó'ñ 	CØ�J‰J×/Ñ/°zÐ/ÔB÷	Cô ' y°*Ô=Ø�J‰J×0Ñ0Ø—\‘\×&Ñ&¨Y¸zð 1ô ð ÐÜ˜'Ô#9¸$¿+¹+Ó#FÔGØØ�|‰|×#Ñ#×.Ò.ØØ÷	Cð 	Cús   Å.HÈHNrH   )rÃ   ztype[BaseException] | NonerÄ   zBaseException | NonerÅ   zTracebackType | NonerI   rž   )rM   rN   rO   rP   rQ   r­   rË   rD   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¸   rv   rx   )r�   ÚoptionÚcapmanr   Úcapturedrv   rx   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_pluginry   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�   rv   rx   N)rM   rN   rO   rv   rQ   rx   rD   r+   r)   rÔ   rÔ   O  s   … à€CˆƒMØ€Cˆ„Mr+   rÔ   c                  ó   — e Zd ZU ded<   y)rÝ   r   ry   N)rM   rN   rO   rQ   rD   r+   r)   rÝ   rÝ   U  s   … àÔr+   rÝ   c                óD   — t        | t        «      r| j                  «       S y r=   )rÀ   rU   rA   r¶   s    r)   Úpytest_report_to_serializablerä   Z  s   € Ü�&œ-Ô(Ø�‰Ó Ð Ør+   c                óV   — | j                  d«      dk(  rt        j                  | «      S y )Nrm   rl   )ÚgetrU   rG   )rp   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ê   k  s   € Ü(3´CÓ(8€F‡L�LÔ$Ò%r+   )Útryfirstc                ó  — | 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|› �fS y | j                  r|d	d
|› �fS |ry| j                  rd|› �d	d|› �fS | j                  r|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À   rU   ÚoutcomerZ   Úhasattrrº   Úpassedrî   r»   r¼   r½   Úlongrepr)rt   rŠ   Úquietrù   ÚdescriptionÚfailed_subtests_countÚsuffixs          r)   Úpytest_report_teststatusr  o  s<  € ð
 ‡{�{�fÒØà× Ñ ¤×!:Ñ!:Ó;¸qÑ@€EÜ�&œ-Ô(Ø—.‘.ˆØ×2Ñ2Ó4ˆä�6˜:Ô&ÙØ!Ø˜IÒ%à  #¨°+°Ð'?Ð?Ð?ð à�=Š=Ø˜C 9¨[¨MÐ!:Ð:Ð:ÙØØ�]Š]Ø˜w˜iÐ(¨#°¸;¸-Ð/HÐHÐHØ�^Š^Ø˜C :¨k¨]Ð!;Ð;Ð;ð ð !'§¡Ô-@Ñ AÀ&Ç)Á)Ñ LÐà�=Š=Ð2°QÒ6Ø%ˆFŒNØ1°AÒ5‘S¸2ˆFØ )Ð*?Ð)@ÀÐPVÈxÐXˆFŒOàr+   )r(   r   rI   rJ   )r�   r   rI   r„   )r�   r   rI   zIterator[Captured])r�   r   rI   zIterator[CapturedLogs | None])rt   r   rI   zdict[str, Any] | None)rp   rL   rI   zSubtestReport | None)rŠ   r   rI   rJ   )rt   r   rŠ   r   rI   z0tuple[str, str, str | Mapping[str, bool]] | None)IrP   Ú
__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.nodeidr   Ú_pytest.reportsr   Ú_pytest.runnerr   r    r!   Ú_pytest.stashr"   Útyping_extensionsr#   r*   Ú	dataclassr0   rU   r’   r„   rš   r¨   rª   rÔ   rÝ   rä   rç   ré   r¼   rê   r  rD   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 ð Øð à"ò ó ð ð" ×Ñ÷ð ó ðð
 ×Ñ÷ð ó ðóóð 9�h˜{¨6°3¨;Ñ7Ñ8Ó:Ð ó9ñ 
�4Ôð,Øð,àð,ð 6ò,ó ñ,r+   