
    ~/j4                       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 )NzSpecify 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    O/root/lseg-credit/backend/venv/lib/python3.13/site-packages/_pytest/subtests.pypytest_addoptionr)   .   s"    
!!k	    T)frozenslotskw_onlyc                  V    \ rS rSr% SrS\S'   S\S'   SS jrSS jr\SS	 j5       r	S
r
g)SubtestContext9   zJThe values passed to Subtests.test() that are included in the test report.
str | NonemsgzMapping[str, Any]kwargsc                    [         R                  U SU R                  R                  5        VVs0 s H  u  pU[	        U5      _M     snn5        g s  snnf )Nr3   )object__setattr__r3   itemsr   )selfkvs      r(   __post_init__SubtestContext.__post_init__@   sB    ($++:K:K:MN:MQ^:MN	
Ns   Ac                2    [         R                  " U 5      nU$ N)dataclassesasdict)r8   results     r(   _to_jsonSubtestContext._to_jsonF   s    ##D)r*   c                    U " US   US   S9$ )Nr2   r3   r2   r3    )clsds     r(   
_from_jsonSubtestContext._from_jsonJ   s    qx(44r*   rF   NreturnNonerL   dict[str, Any])rH   rO   rL   r"   )__name__
__module____qualname____firstlineno____doc____annotations__r;   rB   classmethodrI   __static_attributes__rF   r*   r(   r/   r/   9   s.    T	O
 5 5r*   r/   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$ )SubtestReportO   r/   contextc                J    U R                   u    pU SU R                  5        3$ )N )location_sub_test_description)r8   _domains      r(   	head_lineSubtestReport.head_lineS   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  4   #    U  H  u  pU S U 3v   M     g7f)=NrF   ).0r9   r:   s      r(   	<genexpr>6SubtestReport._sub_test_description.<locals>.<genexpr>]   s       $)Dv1#Qqc
)Ds   ()r^   z(<subtest>))r\   r2   appendr3   joinr7   )r8   partsparams_descs      r(   r`   #SubtestReport._sub_test_descriptionX   s    <<'LL1T\\--.a01<<)) $)-)<)<)B)B)D$ K LL1[M+,xx/-/r*   c                n   > [         TU ]  5       nUS	 SUS'   U R                  R                  5       US'   U$ )Nr\   SubTestReport_report_type_subtest.context)superrB   r\   )r8   data	__class__s     r(   rB   SubtestReport._to_jsonc   s>    w!O.^#'<<#8#8#: r*   c                `   > [         TU ]  U5      n[        R                  US   5      Ul        U$ )Nrw   )rx   rI   r/   r\   )rG   
reportdictreportrz   s      r(   rI   SubtestReport._from_jsonj   s/    #J/'22:>P3Q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)rx   rI   rB   r\   outsectionsro   errhandlerstreamgetvalue)rG   test_reportr\   captured_outputcaptured_logsrA   logrz   s          r(   _newSubtestReport._newp   s     #K$8$8$:; ""&&(>@S@S'TU""&&(>@S@S'TU]%:%:%A%A%J%J%LLcLOO""$7#=>r*   rF   )rL   strrN   )r}   rO   rL   rZ   )
r   r   r\   r/   r   zCaptured | Noner   zCapturedLogs | NonerL   r"   )rP   rQ   rR   rS   rU   propertyrc   r`   rB   rV   rI   r   rW   __classcell__)rz   s   @r(   rZ   rZ   O   s}    : :	0  
    )	
 + 
 r*   rZ   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KF.4.@**k  GLL&&(;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 r>   )r   _ihook_suspend_capture_ctx_request)r8   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   )r8   r2   r3   s      r(   testSubtests.test   s;    2 &KKMM $ 9 9==''
 	
r*   )r   r   r   )
r   pluggy.HookRelayr   *Callable[[], AbstractContextManager[None]]r   r   r   boolrL   rM   r>   )r2   r1   r3   r   rL   r   )rP   rQ   rR   rS   rT   r   r   rW   rF   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   r1   r2   rO   r3   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)r8   __tracebackhide__s     r(   	__enter__ _SubTestContextManager.__enter__   s     iik"//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XR                  R                  R0                  ==   S-  ss'   U R3                  5          U R                  R5                  US9  S S S 5        [7        X5      (       a.  U R                  R9                  U R                  R                  XS	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   rE   )r   r      r~   )r   r   r~   F)!r   from_exceptionr   closer   r   r   r   r   r   pytest_runtest_makereportr   r   rZ   r   r/   r2   r3   r   r   failedr   stashfailed_subtests_keynodeidr   pytest_runtest_logreportr   pytest_exception_interact
isinstancer    session
shouldfail)r8   exc_typeexc_valexc_tbr   exc_infoprecise_stopr   r   	call_infor~   
sub_reportfailed_subtestss                r(   __exit___SubTestContextManager.__exit__   s    !$33G<HH ((*"5"55yy{TN++
	 55"" 6 
 #''txx< 11--	 ( 

 "kk//0CDOLL--445:5%%'JJ//z/B ( 'y==JJ00\\&&Y 1  '#9$++#FGG||##.. ('s   *H
H')r   r   r   r   r   r   NrK   )r   ztype[BaseException] | Noner   zBaseException | Noner   zTracebackType | NonerL   r   )	rP   rQ   rR   rS   rT   rU   r   r   rW   rF   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   r   r   )r   optioncapmanr   capturedr   r   s          r(   r   r     s     ^^%%i6F^^))334DEFv)400	5 WE	4 GtDzH))+HCMMOLL	 7))+HCMMO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   <  sw      ,3>>+G+G+Q+Q,N 
#%^556$W-7*B*BC DCCs   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   iN   r   r   r   rF   N)rP   rQ   rR   rS   r   rU   r   rW   rF   r*   r(   r   r   N  s    CMCMr*   r   c                       \ rS rSr% S\S'   Srg)r   iT  r   r   rF   N)rP   rQ   rR   rS   rU   rW   rF   r*   r(   r   r   T  s    r*   r   c                N    [        U [        5      (       a  U R                  5       $ g r>   )r   rZ   rB   r   s    r(   pytest_report_to_serializabler   Y  s    &-((  r*   c                X    U R                  S5      S:X  a  [        R                  U 5      $ g )Nrv   ru   )getrZ   rI   )ry   s    r(   pytest_report_from_serializabler   _  s'    xx?2''--r*   c                D    [        [        5      U R                  [        '   g r>   )r   intr   r   )r   s    r(   pytest_configurer   j  s    (3C(8FLL$%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   rZ   outcomer`   hasattrr   passedr   r   r   r   longrepr)
r~   r   quietr  descriptioncategoryshortstatusfailed_subtests_countsuffixs
             r(   pytest_report_teststatusr  n  s\   
 {{f  !:!:;q@E&-((..2246:&&!I%$# vh{m$<<<==C9[M!:::}}%&wi0#;-7PPP%"C:k])CCC	    !'-@ A&-- P==2Q6%FN1A5S2F )*?)@PVxXFOr*   )r'   r   rL   rM   )r   r   rL   r   )r   r   rL   zIterator[Captured])r   r   rL   zIterator[CapturedLogs | None])r~   r   rL   zdict[str, Any] | None)ry   rO   rL   zSubtestReport | None)r   r   rL   rM   )r~   r   r   r   rL   z0tuple[str, str, str | Mapping[str, bool]] | None)HrT   
__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/   rZ   r   r   r   r   r   r   r   r   r   r   r   r   r   r  rF   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 9 
4333 63 3r*   