Ë
    æØjjXb  ã                  óä  — 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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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l0m1Z1 dd l0m2Z2 ejf                  d	d! d"k  rdd#l4m5Z5 erdd$lm6Z6 dd	lZdd	l7Z8e9e:e;   e;ejl                  f   e9d%   z  Z<	 	 	 	 	 	 	 	 d7d&„Z= G d'„ d(e*«      Z> G d)„ d*e+«      Z? ed+¬,«      d8d-„«       Z@d9d.„ZAd:d/„ZB G d0„ d1e
«      ZCd;d2„ZDd3ZE ed+¬4«      d<d5„«       ZF	 	 	 	 d=d6„ZGy	)>z4Discover and run std-library "unittest" style tests.é    )Úannotations)ÚCallable)Ú	Generator)ÚIterable)ÚIterator)Úauto)ÚEnumN)ÚAny)ÚTYPE_CHECKING)ÚTestCase)Úfixtures)ÚExceptionInfo)Úassert_never)Úis_async_function)Úhookimpl)ÚFixtureRequest)ÚMonkeyPatch)Ú	Collector)ÚItem)Úexit)Úfail)Úskip)Úxfail)ÚClass)ÚFunction)ÚModule)ÚCallInfo)Úcheck_interactive_exception)ÚSubtestContext)ÚSubtestReporté   ©é   é   )ÚExceptionGroup)ÚTracebackType)NNNc                óÔ   — 	 t         j                  d   }t        ||j                  «      sy 	 t        j                  |«      ry t        j                  | ||¬«      S # t        $ r Y y w xY w)NÚunittest)ÚnameÚobj)	ÚsysÚmodulesÚ
issubclassr   Ú	ExceptionÚinspectÚ
isabstractÚUnitTestCaseÚfrom_parent)Ú	collectorr)   r*   Úuts       úR/opt/eval-harness/bench_task/venv/lib/python3.12/site-packages/_pytest/unittest.pyÚpytest_pycollect_makeitemr6   ;   sl   € ðä�[‰[˜Ñ$ˆô ˜#˜rŸ{™{Ô+Øð ,ô ×Ñ˜#ÔØä×#Ñ# I°D¸cÐ#ÓBÐBøô ò Ùðús   ‚)A Á	A'Á&A'c                  ó6   — e Zd ZdZd„ Zdd„Zd	d„Zd	d„Zd	d„Zy)
r1   Tc                ó$   — | j                  d«      S )NÚrunTest©r*   ©Úselfs    r5   ÚnewinstancezUnitTestCase.newinstanceT   s   € ð �x‰x˜	Ó"Ð"ó    c              #  ó  K  — ddl m} | j                  }t        |dd«      sy t	        |«      }|s3| j                  |«       | j                  |«       | j                  «        n| j                  |«       | j                  j                  j                  | j                  «       | ¬«        |«       }d}|j                  | j                  «      D ]A  }t        | j                  |«      }t        |dd«      sŒ't        j                  | |¬«      –— d}ŒC |spt        | j                  dd «      }|�Vt         j"                  j%                  d	d «      }	|	�||	j&                  j(                  k7  rt        j                  | d¬«      –— y y y y ­w)
Nr   )Ú
TestLoaderÚ__test__T)ÚholderÚnodeF)r)   r9   útwisted.trial.unittest)r(   r@   r*   ÚgetattrÚ_is_skippedÚ'_register_unittest_setup_method_fixtureÚ&_register_unittest_setup_class_fixtureÚ_register_setup_class_fixtureÚ_register_unittest_skip_fixtureÚsessionÚ_fixturemanagerÚparsefactoriesr=   ÚgetTestCaseNamesÚTestCaseFunctionr2   r+   r,   Úgetr   r9   )
r<   r@   ÚclsÚskippedÚloaderÚfoundsomethingr)   ÚxÚruntestr4   s
             r5   ÚcollectzUnitTestCase.collect\   sc  è ø€ Ý'à�h‰hˆÜ�s˜J¨Ô-Øä˜cÓ"ˆÙØ×8Ñ8¸Ô=Ø×7Ñ7¸Ô<Ø×.Ñ.Õ0à×0Ñ0°Ô5à�‰×$Ñ$×3Ñ3Ø×#Ñ#Ó%¨Dð 	4ô 	
ñ “ˆØˆØ×+Ñ+¨D¯H©HÓ5ò 	"ˆDÜ˜Ÿ™ $Ó'ˆAÜ˜1˜j¨$Ô/ØÜ"×.Ñ.¨t¸$Ð.Ó?Ò?Ø!‰Nð	"ñ Ü˜dŸh™h¨	°4Ó8ˆGØÐ"Ü—[‘[—_‘_Ð%=¸tÓD�Ø�: ¨B¯K©K×,?Ñ,?Ò!?Ü*×6Ñ6°tÀ)Ð6ÓLÓLð "@ð #ð ùs   ‚FFc                óÜ   ‡‡‡‡‡— t        ‰dd«      Št        ‰dd«      Š‰€‰€yt        ‰dd„ «      Šdˆfd„Š	 	 	 	 dˆˆˆˆfd„}t        j                  d‰j                  › �|| d	d
¬«       y)zSRegister an auto-use fixture to invoke setUpClass and
        tearDownClass (#517).Ú
setUpClassNÚtearDownClassÚdoClassCleanupsc                  ó   — y ©N© r^   r>   r5   ú<lambda>zEUnitTestCase._register_unittest_setup_class_fixture.<locals>.<lambda>†   ó   � r>   c                 ó˜   •— t        ‰dd «      } | sy | D ��cg c]  \  }}}|‘Œ
 }}}t        |«      dk(  r|d   ‚t        d|«      ‚c c}}w )NÚtearDown_exceptionsé   r   zUnittest class cleanup errors)rE   Úlenr%   )Ú	exc_infosÚ_ÚexcÚ
exceptionsrQ   s       €r5   Úprocess_teardown_exceptionszXUnitTestCase._register_unittest_setup_class_fixture.<locals>.process_teardown_exceptionsˆ   s^   ø€ ô   Ð%:¸DÓAˆIÙØØ1:×;¡+ 1 c¨1š#Ð;ˆJÑ;ô �:‹ !Ò#Ø  ‘mÐ#ä$Ð%DÀjÓQÐQùó <s   —Ac              3  ó,  •K  — | j                   }t        |«      r#|j                  }t        j                  |d¬«      ‚‰�	  ‰«        d –— 	 ‰� ‰«         ‰«         ‰«        y # t        $ r  ‰«         ‰«        ‚ w xY w#  ‰«         ‰«        w xY w­w©NT©Ú_use_item_location)rQ   rF   Ú__unittest_skip_why__r   r.   )ÚrequestrQ   ÚreasonÚcleanupri   ÚsetupÚteardowns      €€€€r5   Úunittest_setup_class_fixturezYUnitTestCase._register_unittest_setup_class_fixture.<locals>.unittest_setup_class_fixture–   s’   øè ø€ ð —+‘+ˆCÜ˜3ÔØ×2Ñ2�Ü—n‘n VÀÔEÐEØÐ ðÙ”Gó ð.ØÐ'Ù”Já”	Ù+Õ-øô !ò Ù”IÙ/Ô1Øðûñ ”	Ù+Õ-üs5   ƒ=BÁA% ÁBÁ	B ÁBÁ%A>Á>BÂBÂBÚ_unittest_setUpClass_fixture_ÚclassT©r)   ÚfuncrC   ÚscopeÚautouse©ÚreturnÚNone©ro   r   r|   zGenerator[None]©rE   r   Úregister_fixtureÚ__qualname__)r<   rQ   rt   rq   ri   rr   rs   s    ` @@@@r5   rH   z3UnitTestCase._register_unittest_setup_class_fixture   sŠ   ü€ ô ˜˜\¨4Ó0ˆÜ˜3 °Ó6ˆØˆ=˜XÐ-ØÜ˜#Ð0±,Ó?ˆõ	Rð	.Ø#ð	.à÷	.ð 	.ô0 	×!Ñ!à0°×1AÑ1AÐ0BÐCØ-ØØØö	
r>   c                ó`   ‡— dˆfd„}t        j                  d‰j                  › �|| dd¬«       y)zzRegister an auto-use fixture to skip tests for a class decorated
        with @unittest.skip or @unittest.skipIf (#13885).c                óL   •— t        ‰dd«      }t        j                  |d¬«      ‚)Nrn   Ú Trl   )rE   r   r.   )ro   rp   rQ   s     €r5   Úunittest_skip_fixturezKUnitTestCase._register_unittest_skip_fixture.<locals>.unittest_skip_fixture»   s#   ø€ Ü˜SÐ"9¸2Ó>ˆFÜ—.‘. ¸DÔAÐAr>   Ú_unittest_skip_fixture_rv   Trw   N)ro   r   r|   r}   )r   r€   r�   )r<   rQ   r…   s    ` r5   rJ   z,UnitTestCase._register_unittest_skip_fixture·   s6   ø€ õ	Bô 	×!Ñ!Ø*¨3×+;Ñ+;Ð*<Ð=Ø&ØØØö	
r>   c                óª   ‡‡— t        |dd«      Št        |dd«      Š‰€‰€y	 	 	 	 d	ˆˆfd„}t        j                  d|j                  › �|| dd¬«       y)
zWRegister an auto-use fixture to invoke setup_method and
        teardown_method (#517).Úsetup_methodNÚteardown_methodc              3  óà   •K  — | j                   }t        |«      r#|j                  }t        j                  |d¬«      ‚‰� ‰|| j
                  «       d –— ‰� ‰|| j
                  «       y y ­wrk   )ÚinstancerF   rn   r   r.   Úfunction)ro   r<   rp   rr   rs   s      €€r5   Úunittest_setup_method_fixturez[UnitTestCase._register_unittest_setup_method_fixture.<locals>.unittest_setup_method_fixtureÏ   sl   øè ø€ ð ×#Ñ#ˆDÜ˜4Ô Ø×3Ñ3�Ü—n‘n VÀÔEÐEØÐ Ù�d˜G×,Ñ,Ô-ÛØÐ#Ù˜˜w×/Ñ/Õ0ð $ùs   ƒA+A.Ú_unittest_setup_method_fixture_rŒ   Trw   r~   r   )r<   rQ   r�   rr   rs   s      @@r5   rG   z4UnitTestCase._register_unittest_setup_method_fixtureÇ   sq   ù€ ô ˜˜^¨TÓ2ˆÜ˜3Ð 1°4Ó8ˆØˆ=˜XÐ-Øð	1Ø#ð	1àö	1ô 	×!Ñ!à2°3×3CÑ3CÐ2DÐEØ.ØØØö	
r>   N)r|   zIterable[Item | Collector])rQ   Útyper|   r}   )	Ú__name__Ú
__module__r�   Ú
nofuncargsr=   rW   rH   rJ   rG   r^   r>   r5   r1   r1   O   s%   „ ð €Jò#ó!MóF6
óp
ô 
r>   r1   c                  ó2  ‡ — e Zd ZU dZdZdZded<   d„ Zed„ «       Z	dˆ fd„Z
dˆ fd	„Zdd
„Zdd„Z	 	 	 	 	 	 dd„Z	 	 	 	 	 	 dd„Zddœ	 	 	 	 	 	 	 dd„Z	 d	 	 	 	 	 	 	 dd„Z	 d 	 	 	 	 	 d!d„Zdd„Zdd„Zd"d„Zdd„Z	 	 	 	 d#ˆ fd„Z	 	 	 	 	 	 	 	 d$d„Zd%d„Zˆ xZS )&rO   TFNz7list[_pytest._code.ExceptionInfo[BaseException]] | NoneÚ_excinfoc                ó„   — t        | j                  t        «      sJ ‚| j                  j                  | j                  «      S r]   )Ú
isinstanceÚparentr1   r*   r)   r;   s    r5   Ú_getinstancezTestCaseFunction._getinstanceë   s-   € Ü˜$Ÿ+™+¤|Ô4Ð4Ð4Ø�{‰{�‰˜tŸy™yÓ)Ð)r>   c                ó   — | j                   S r]   )r‹   r;   s    r5   Ú	_testcasezTestCaseFunction._testcaseñ   s   € à�}‰}Ðr>   c                óf   •— d | _         t        ‰| �	  «        t        j                  dk  rd | _        y y )Nr"   )Ú_explicit_tearDownÚsuperrr   r+   Úversion_infoÚ_cached_errors_and_skips©r<   Ú	__class__s    €r5   rr   zTestCaseFunction.setupõ   s3   ø€ à=AˆÔÜ‰‰ŒÜ×Ñ˜gÒ%ð QUˆDÕ)ð &r>   c                óz   •— | j                   �| j                  «        d | _         d | _        | `t        ‰| �  «        y r]   )rœ   Ú_objÚ	_instancer�   rs   r    s    €r5   rs   zTestCaseFunction.teardownþ   s:   ø€ Ø×"Ñ"Ð.Ø×#Ñ#Ô%Ø&*ˆDÔ#ØˆŒ	ØˆNÜ‰ÑÕr>   c                 ó   — y r]   r^   ©r<   Útestcases     r5   Ú	startTestzTestCaseFunction.startTest  ó   € Ør>   c                ó¬  — t        |«      }	 t        j                  j                  t           j                  |«      }|j                  }|j                  }| j                   j#                  dg «      j%                  «       y # t        $ rÉ 	 	 t        j                  |Ž }|j                  dd«       t        dj                  |«      d¬«       n8# t        j                  t        f$ r ‚ t        $ r t        d|›�d¬«       Y nw xY wnJ# t        $ r ‚ t        j                  $ r+ t        j                  j                  j                  «       }Y nw xY wY Œýw xY w)Nr   zCNOTE: Incompatible Exception Representation, displaying natively:

r„   F©Úpytracez6ERROR: Unknown Incompatible Exception representation:
r”   )Ú_handle_twisted_exc_infoÚ_pytestÚ_coder   ÚBaseExceptionÚfrom_exc_infoÚvalueÚ	tracebackÚ	TypeErrorÚformat_exceptionÚinsertr   Újoinr.   ÚKeyboardInterruptÚfrom_currentÚ__dict__Ú
setdefaultÚappend)r<   Ú
rawexcinfoÚexcinforf   Úvaluess        r5   Ú_addexcinfozTestCaseFunction._addexcinfo	  s8  € Ü-¨jÓ9ˆ
ð	EÜ—m‘m×1Ñ1´-Ñ@×NÑNØóˆGð
 —‘ˆAØ×!Ñ!ˆAð. 	�‰× Ñ  ¨RÓ0×7Ñ7¸Õ@øô- ò 	EðEðÜ&×7Ñ7¸ÐD�FØ—M‘MØð3ôô
 ˜Ÿ™ ›°%Ö8øÜŸ™Ô(9Ð:ò ØÜ$ò Üð,Ø,6¨>ð;à %÷ðüô %ò ØÜ—>‘>ò EÜ!Ÿ-™-×5Ñ5×BÑBÓD’ðEüð)	EúsV   �AB Â	EÂA CÃDÃ2DÃ?DÄDÄDÄEÄAEÅ
EÅEÅEÅEc                ó°   — 	 t        |d   t        j                  «      rt        |d   j                  «       | j                  |«       y # t        $ r Y Œw xY w)Nrc   )r–   r   r.   Úmsgr´   rÀ   ©r<   r§   r½   s      r5   ÚaddErrorzTestCaseFunction.addError+  sO   € ð	Ü˜* Q™-¬¯©Ô8Ü�Z ‘]×&Ñ&Ô'ð 	×Ñ˜Õ$øô ò 	Ùð	ús   ‚5A	 Á		AÁAc                ó&   — | j                  |«       y r]   )rÀ   rÃ   s      r5   Ú
addFailurezTestCaseFunction.addFailure5  s   € ð 	×Ñ˜Õ$r>   ©Úhandle_subtestsc               ó„  ‡ ‡— ddl m} dˆˆ fd„}|s |«        y t        ||«      rA |«        ‰ j                  �-‰ j                  d   }‰ j	                  |j
                  ||«       y y t        j                  dk  r@‰ j                  j                  �*‰ j                  «       \  }}t        |«      dk(  r |«        y y  |«        y )Nr   ©Ú_SubTestc                 ó¬   •— 	 t        j                  ‰ d¬«      ‚# t         j                  $ r& ‰j                  t        j                  «       «       Y y w xY wrk   )r   r.   rÀ   r+   Úexc_info)rp   r<   s   €€r5   Úadd_skipz*TestCaseFunction.addSkip.<locals>.add_skip?  s@   ø€ ð1Ü—n‘n VÀÔEÐEøÜ—>‘>ò 1Ø× Ñ ¤§¡£Ö0ð1ús   ƒ š6AÁAéÿÿÿÿr"   r{   )Úunittest.caserË   r–   r”   Ú
addSubTestÚ	test_caser+   rž   r‹   Ú_outcomeÚ_obtain_errors_and_skipsrd   )	r<   r§   rp   rÈ   rË   rÎ   rÍ   Úsubtest_errorsrf   s	   ` `      r5   ÚaddSkipzTestCaseFunction.addSkip:  s¬   ù€ õ 	+ö	1ñ ÙŒJØä�h Ô)ÙŒJØ�}‰}Ð(ØŸ=™=¨Ñ,�Ø—‘ × 2Ñ 2°H¸hÕGð )ô ×Ñ 'Ò)¨d¯m©m×.DÑ.DÐ.PØ$(×$AÑ$AÓ$CÑ!� Ü�~Ó&¨!Ò+Ù•Jð ,ñ •
r>   c                ó¦   — 	 t        t        |«      «       y # t         j                  $ r& | j                  t	        j
                  «       «       Y y w xY wr]   )r   Ústrr.   rÀ   r+   rÍ   )r<   r§   r½   rp   s       r5   ÚaddExpectedFailurez#TestCaseFunction.addExpectedFailure[  s:   € ð	-Ü”#�f“+ÕøÜ�‰ò 	-Ø×ÑœSŸ\™\›^Ö,ð	-ús   ‚ —6AÁAc                óÄ   — d}|r|d|j                   › �z  }	 t        |d¬«       y # t        j                  $ r& | j                  t	        j
                  «       «       Y y w xY w)NzUnexpected successz: Fr«   )rp   r   r.   rÀ   r+   rÍ   )r<   r§   rp   rÂ   s       r5   ÚaddUnexpectedSuccessz%TestCaseFunction.addUnexpectedSuccessf  sW   € ð
 #ˆÙØ�R˜Ÿ™�Ð'Ñ'ˆCð	-Ü�˜eÖ$øÜ�~‰~ò 	-Ø×ÑœSŸ\™\›^Ö,ð	-ús   ˜& ¦6AÁAc                 ó   — y r]   r^   r¦   s     r5   Ú
addSuccesszTestCaseFunction.addSuccesst  r©   r>   c                 ó   — y r]   r^   r¦   s     r5   ÚstopTestzTestCaseFunction.stopTestw  r©   r>   c                 ó   — y r]   r^   )r<   r§   Úelapseds      r5   ÚaddDurationzTestCaseFunction.addDurationz  r©   r>   c                óR  — ddl m} | j                  }|€J ‚ || «       t        | j                  «      r
 || ¬«       y t        | j                  t        «      sJ ‚t        | j                  «      xs t        | j                  j                  «      }| j                  j                  d«      r!|s|j                  | _        t        |dd„ «       t        || j                  | j                  «       	  || ¬«       t        || j                  «       y # t        || j                  «       w xY w)Nr   )Ú&maybe_wrap_pytest_function_for_tracing)ÚresultÚusepdbÚtearDownc                  ó   — y r]   r^   )Úargss    r5   r_   z*TestCaseFunction.runtest.<locals>.<lambda>”  r`   r>   )Ú_pytest.debuggingrä   r‹   r   r*   r–   r—   r1   rF   ÚconfigÚ	getoptionrç   rœ   Úsetattrr)   Údelattr)r<   rä   r§   rR   s       r5   rV   zTestCaseFunction.runtest}  sÝ   € ÝLà—=‘=ˆØÐ#Ð#Ð#á.¨tÔ4ô ˜TŸX™XÔ&Ù˜DÖ!ô ˜dŸk™k¬<Ô8Ð8Ð8Ü! $§(¡(Ó+ÒK¬{¸4¿;¹;¿?¹?Ó/KˆGØ�{‰{×$Ñ$ XÔ.±wØ*2×*;Ñ*;�Ô'Ü˜ *Ñ.@ÔAô �H˜dŸi™i¨¯©Ô2ð-Ù Õ%ä˜ $§)¡)Õ,ø”˜ $§)¡)Õ,ús   Ã.	D ÄD&c                óT   •— t         ‰| �  |«      } |j                  d„ «      }|s|}|S )Nc                óN   — | j                   j                  j                  d«       S )NÚ
__unittest)ÚframeÚ	f_globalsrP   )rU   s    r5   r_   z4TestCaseFunction._traceback_filter.<locals>.<lambda>£  s   € ˜!Ÿ'™'×+Ñ+×/Ñ/°Ó=Ð=€ r>   )r�   Ú_traceback_filterÚfilter)r<   r¾   r³   Ú
ntracebackr¡   s       €r5   rô   z"TestCaseFunction._traceback_filterž  s9   ø€ ô ‘GÑ-¨gÓ6ˆ	Ø%�Y×%Ñ%Ù=ó
ˆ
ñ Ø"ˆJØÐr>   c           	     ó  — ddl m} |xt        d˜ x�\    t        |d¬«      }n& xxt        d˜ x�\   n x€n n  |}n}t	        |«       t        d    d ddddd¬«      }|j                  |u rd nt        |j                  «      }| j                  j                  | |¬«      }	t        j                  |	t        |t        |j                  «      ¬	«      d d ¬
«      }
| j                  j                  |
¬«       t!        ||
«      r| j                  j#                  | ||
¬«       t$        j&                  dk  r]| j)                  «       \  }}t+        |«      dkD  r;t+        |«      dkD  r,|d   }||d   u r|D ]  \  }}| j-                  ||d¬«       Œ y y y y y )Nr   )Ú_subtest_msg_sentinelr^   T)Ú	_ispytestÚcall)ÚstartÚstopÚdurationÚwhenrù   )Úitemrú   )rÂ   Úkwargs)Úcaptured_outputÚcaptured_logs)Úreport)rC   rú   r  r"   rÏ   FrÇ   )rÐ   rø   Útupler   r   r   Ú_messagerØ   ÚihookÚpytest_runtest_makereportr    Ú_newr   ÚdictÚparamsÚpytest_runtest_logreportr   Úpytest_exception_interactr+   rž   rÔ   rd   rÖ   )r<   rÒ   ÚtestrÍ   rø   Úexception_infoÚunreachableÚ	call_inforÂ   r  Ú
sub_reportrÕ   Únon_subtest_skipÚlast_subset_errorr§   rp   s                   r5   rÑ   zTestCaseFunction.addSubTest©  s›  € õ 	8ð Ø”–Ü!.¨xÀ4Ô!H‘ð à'�”—¢4Ó'Ø!)‘ØÜ˜[Ô)ä˜T‘NØØØØØØØô
ˆ	ð —m‘mÐ'<Ñ<‰dÄ#ÀdÇmÁmÓBTˆØ—‘×5Ñ5¸4ÀiÐ5ÓPˆÜ"×'Ñ'ØÜ˜s¬4°·±Ó+<Ô=Ø Øô	
ˆ
ð 	�
‰
×+Ñ+°:Ð+Ô>Ü& y°*Ô=Ø�J‰J×0Ñ0Ø 	°*ð 1ô ô
 ×Ñ˜gÒ%Ø/3×/LÑ/LÓ/NÑ,ˆNÐ,ô Ð#Ó$ qÒ(¬S°Ó-@À1Ò-Dà$2°2Ñ$6Ð!ØÐ0°Ñ4Ñ4à,<ò NÑ(˜ &ØŸ™ X¨vÀu˜ÕMñNð 5ð .EÐ(ð &r>   c                ó¨  — ddl m} t        j                  dk  sJ d«       ‚| j                  �| j                  S | j
                  j                  j                  D ��cg c]  \  }}t        ||«      r|�||f‘Œ }}}| j
                  j                  j                  D ��cg c]  \  }}t        ||«      s||f‘Œ }}}||f| _        ||fS c c}}w c c}}w )zMCompute or obtain the cached values for subtest errors and non-subtest skips.r   rÊ   r"   z2This workaround only should be used in Python 3.10)
rÐ   rË   r+   rž   rŸ   r‹   rÓ   Úerrorsr–   rR   )r<   rË   rU   ÚyrÕ   Únon_subtest_skipss         r5   rÔ   z)TestCaseFunction._obtain_errors_and_skipsã  sê   € å*ä×Ñ 'Ò)ð 	
Ø@ó	
Ð)ð ×(Ñ(Ð4Ø×0Ñ0Ð0ð Ÿ™×.Ñ.×5Ñ5÷
á��1Ü˜!˜XÔ&¨1¨=ð �ŠFð
ˆñ 
ð Ÿ™×.Ñ.×6Ñ6÷
á��1Ü˜a Ô*ð �ŠFð
Ðñ 
ð
 *8Ð9JÐ(KˆÔ%ØÐ0Ð0Ð0ùó
ùó
s   ÁCÂCr{   )r§   úunittest.TestCaser|   r}   )r½   Ú_SysExcInfoTyper|   r}   )r§   r  r½   r  r|   r}   )r§   r  rp   rØ   rÈ   Úboolr|   r}   )r„   )r§   r  r½   r  rp   rØ   r|   r}   r]   )r§   r  rp   z"twisted.trial.unittest.Todo | Noner|   r}   )r§   r  rá   Úfloatr|   r}   )r¾   z*_pytest._code.ExceptionInfo[BaseException]r|   z_pytest._code.Traceback)rÒ   r
   r  r   rÍ   z^ExceptionInfo[BaseException] | tuple[type[BaseException], BaseException, TracebackType] | Noner|   r}   )r|   ztuple[list[Any], list[Any]])r�   r‘   r�   r’   Úfailfastr”   Ú__annotations__r˜   Úpropertyrš   rr   rs   r¨   rÀ   rÄ   rÆ   rÖ   rÙ   rÛ   rÝ   rß   râ   rV   rô   rÑ   rÔ   Ú__classcell__)r¡   s   @r5   rO   rO   æ   se  ø… Ø€JØ€HØHL€HÐEÓLò*ð ñó ðõUõóó AðD%Ø)ð%Ø7Fð%à	ó%ð%Ø)ð%Ø7Fð%à	ó%ð TXñØ)ðØ36ðØLPðà	óðJ ð		-à#ð	-ð $ð	-ð ð		-ð
 
ó	-ð 6:ð-à#ð-ð 3ð-ð 
ó	-óóóó-ðB	ØAð	à	 õ	ð8Nàð8Nð ð8Nðð	8Nð 
ó8N÷t1r>   rO   T)Útryfirstc                óÜ  ‡— t        | t        «      r/| j                  r#| j                  j                  d«      |_        	 |`t        j                  j                  d«      }|r||j                  rot        |j                  j                  |j                  «      rD|j                  Št        d    j                  ˆfd„|j                  «      }|j                  |_        y y y y # t        $ r Y Œ©w xY w)Nr   r(   c                 ó@   •— t        t        ‰ j                  «      «      S r]   )r   rØ   r²   )r¾   s   €r5   r_   z+pytest_runtest_makereport.<locals>.<lambda>  s   ø€ ´´c¸'¿-¹-Ó6HÓ1I€ r>   )r–   rO   r”   Úpopr¾   rå   ÚAttributeErrorr+   r,   rP   r²   ÚSkipTestr   Ú	from_callrþ   )rÿ   rú   r(   Úcall2r¾   s       @r5   r  r  ü  s¸   ø€ ä�$Ô(Ô)Ø�=Š=ØŸ=™=×,Ñ,¨QÓ/ˆDŒLðØ�Kô �{‰{�‰˜zÓ*€HÙ�D—L’L¤Z°·±×0BÑ0BÀH×DUÑDUÔ%VØ—,‘,ˆÜ˜‘×(Ñ(Ó)IÈ4Ï9É9ÓUˆØ—}‘}ˆ�ð &W�L€xøô "ò Ùðús   ¿C Ã	C+Ã*C+c                ó.   — t        t        | dd«      «      S )zDReturn True if the given object has been marked with @unittest.skip.Ú__unittest_skip__F)r  rE   r:   s    r5   rF   rF     s   € ä”˜Ð0°%Ó8Ó9Ð9r>   c                 ól   — t        «       t        j                  urddlm}  ddlm}  |t        | «       yy)zRRegister the TestCaseFunction class as an IReporter if twisted.trial is available.r   )Ú	IReporter)ÚclassImplementsN)Ú_get_twisted_versionÚTwistedVersionÚNotInstalledÚtwisted.trial.itrialr+  Úzope.interfacer,  rO   )r+  r,  s     r5   Úpytest_configurer2    s*   € äÓ¤^×%@Ñ%@Ñ@Ý2Ý2áÔ(¨)Õ4ð	 Ar>   c                  ó:   — e Zd ZdZ e«       Z e«       Z e«       Zy)r.  zŠ
    The Twisted version installed in the environment.

    We have different workarounds in place for different versions of Twisted.
    N)r�   r‘   r�   Ú__doc__r   Ú	Version24Ú	Version25r/  r^   r>   r5   r.  r.    s   „ ññ “€Iá“€Iá“6�Lr>   r.  c                 ó   — dt         j                  vrt        j                  S dd l} dd l}| j                  j                  d«      }|j                  j                  |«      }|j                  dk  rt        j                  S t        j                  S )NrD   r   Útwistedé   )r+   r,   r.  r/  Úimportlib.metadataÚpackaging.versionÚmetadataÚversionÚparseÚmajorr5  r6  )Ú	importlibÚ	packagingÚversion_strr=  s       r5   r-  r-  ,  sr   € ð  ¤s§{¡{Ñ2Ü×*Ñ*Ð*ããà×$Ñ$×,Ñ,¨YÓ7€KØ×Ñ×%Ñ% kÓ2€GØ‡}�}˜ÒÜ×'Ñ'Ð'ä×'Ñ'Ð'r>   Ú_twisted_raw_excinfo)Úwrapperc              #  ó*  ‡K  — t        «       t        j                  u redd lmc m} |j                  j                  Š	 dˆfd„	}t        j                  «       5 }|j                  |j                  d|«       d –—cd d d «       S d –—S # 1 sw Y   y xY w­w)Nr   c                ó  •— |€t        j                  «       }n+|€t        |«      }|€t        j                  «       d   }|||f}t        | t        t        |«      «       	  ‰| ||||¬«       y # t        $ r  ‰| |||«       Y y w xY w)Nr!   )ÚcaptureVars)r+   rÍ   r�   rí   ÚTWISTED_RAW_EXCINFO_ATTRr  r´   )r<   Ú	exc_valueÚexc_typeÚexc_tbrG  Úraw_exc_infoÚoriginal__init__s         €r5   Ústore_raw_exception_infoz9pytest_runtest_protocol.<locals>.store_raw_exception_infoM  s’   ø€ ð Ð Ü"Ÿ|™|›~‘àÐ#Ü# I›�HØ�>Ü Ÿ\™\›^¨AÑ.�FØ (¨)°VÐ<�Ü�DÔ2´E¸,Ó4GÔHðDÙ Ø˜) X¨vÀ;öøô ò DÙ   y°(¸FÖCðDús   ÁA- Á-BÂBÚ__init__)NNNN)r-  r.  r5  Útwisted.python.failureÚpythonÚfailureÚFailurerO  r   Úcontextrí   )rÿ   r4   rN  ÚpatcherrM  s       @r5   Úpytest_runtest_protocolrV  E  s…   øè ø€ äÓ¤×!9Ñ!9Ñ9ß+Ð+ð Ÿ:™:×.Ñ.Ðð KOõ	Dô& × Ñ Ó"ð 	 gØ�O‰O˜BŸJ™J¨
Ð4LÔMÚ÷	ñ 	ò ˆ÷		ð 	üs   ƒABÁ!BÁ9BÂBÂBc                ó  — t        «       }|t        j                  u r| S |t        j                  u r4t	        | t
        «      r"t        | t
        «      }t        | t
        «       |S | S |t        j                  u r‡t        | t        «      ruddl}t        | |j                  j                  j                  «      rG| j                  }|€t!        j"                  «       d   }t%        | j&                  «      | j&                  |fS | S J d|› �«       ‚)zî
    Twisted passes a custom Failure instance to `addError()` instead of using `sys.exc_info()`.
    Therefore, if `rawexcinfo` is a `Failure` instance, convert it into the equivalent `sys.exc_info()` tuple
    as expected by pytest.
    r   Nr!   zUnexpected Twisted version: )r-  r.  r/  r5  ÚhasattrrH  rE   rî   r6  r–   r°   rP  rQ  rR  rS  Ú__traceback__r+   rÍ   r�   r²   )r½   Útwisted_versionÚsaved_exc_infor8  Útbs        r5   r­   r­   g  sð   € ô +Ó,€OØœ.×5Ñ5Ñ5ð ÐØ	œN×4Ñ4Ñ	4ô �:Ô7Ô8Ü$ ZÔ1IÓJˆNä�JÔ 8Ô9Ø!Ð!ØÐØ	œN×4Ñ4Ñ	4Ü�j¤-Ô0Û)ä˜* g§n¡n×&<Ñ&<×&DÑ&DÔEØ×-Ñ-�Ø�:ÜŸ™›¨Ñ*�BÜ˜J×,Ñ,Ó-¨z×/?Ñ/?ÀÐCÐCàÐð 	GÐ4°_Ð4EÐFÓFˆur>   )r3   zModule | Classr)   rØ   r*   Úobjectr|   zUnitTestCase | None)rÿ   r   rú   zCallInfo[None]r|   r}   )r|   r  r{   )r|   r.  )rÿ   r   r|   zIterator[None])r½   z_SysExcInfoType | BaseExceptionr|   r  )Hr4  Ú
__future__r   Úcollections.abcr   r   r   r   Úenumr   r	   r/   r+   r³   ÚtypesÚtypingr
   r   r(   r   r®   r   Ú_pytest._coder   Ú_pytest.compatr   r   Ú_pytest.configr   Ú_pytest.fixturesr   Ú_pytest.monkeypatchr   Ú_pytest.nodesr   r   Ú_pytest.outcomesr   r   r   r   Ú_pytest.pythonr   r   r   Ú_pytest.runnerr   r   Ú_pytest.subtestsr   r    rž   Úexceptiongroupr%   r&   Útwisted.trial.unittestr8  r  r�   r°   r  r6   r1   rO   r  rF   r2  r.  r-  rH  rV  r­   r^   r>   r5   ú<module>ro     s|  ðá :å "å $Ý %Ý $Ý $Ý Ý Û Û 
Û Û Ý Ý  Ý å Û Ý 'Ý 'Ý ,Ý #Ý +Ý +Ý #Ý Ý !Ý !Ý !Ý "Ý  Ý #Ý !Ý #Ý 6Ý +Ý *ð ×Ñ�B�QÐ˜'Ò!Ý-áÝ#Ûã!ð 
ˆ$ˆ}Ñ
˜}¨e×.AÑ.AÐ
AÑBØÐÑñð ðCØðCØ%(ðCØ/5ðCàóCô(T
�5ô T
ônS1�xô S1ñl 
�4Ôò%ó ð%ó$:ó
5ô�Tô ó(ð, 2Ð ñ 
�$Ôòó ððB&GØ/ð&Gàô&Gr>   