+
    SpjXb                    "   R t ^ RIHt ^ RIHt ^ RIHt ^ RIHt ^ RIHt ^ RIH	t	 ^ RIH
t
 ^ RIt^ RIt^ RIt^ RIt^ R	IHt ^ R
IHt ^ RIHt ^ RIHt ^ RIt^ RIHt ^ RIHt ^ RIHt ^ RIHt ^ RIHt ^ RIH t  ^ RI!H"t" ^ RI!H#t# ^ RI$H%t% ^ RI$H&t& ^ RI$H't' ^ RI$H(t( ^ RI)H*t* ^ RI)H+t+ ^ RI)H,t, ^ RI-H.t. ^ RI-H/t/ ^ RI0H1t1 ^ RI0H2t2 ]Pf                  R ,          R;8  d   ^ R!I4H5t5 ]'       d   ^ R"IH6t6 ^ RIt^ RI7t8]9]:];,          ];]Pl                  3,          ]9R<,          ,          t<R# R$ lt= ! R% R&]*4      t> ! R' R(]+4      t?]! R)R*7      R+ R, l4       t@R- R. ltAR/ R0 ltB ! R1 R2]
4      tCR3 R4 ltDR5tE]! R)R67      R7 R8 l4       tFR9 R: ltGR# )=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:N   N)ExceptionGroup)TracebackTypec               (    V ^8  d   QhRRRRRRRR/# )	r    	collectorzModule | ClassnamestrobjobjectreturnzUnitTestCase | None )formats   "7/tmp/pip-target-d46v3snk/lib/python/_pytest/unittest.py__annotate__r-   ;   s2     C CC%(C/5CC    c                     \         P                  R ,          p\        W#P                  4      '       g   R#  \
        P                  ! T4      '       d   R# \        P                  YTR7      #   \         d     R# i ; i)unittestN)r%   r'   )	sysmodules
issubclassr   	Exceptioninspect
isabstractUnitTestCasefrom_parent)r$   r%   r'   uts   &&& r,   pytest_pycollect_makeitemr:   ;   sn    [[$ #{{++ , ###Ic#BB  s   2A, ,A;:A;c                  P    ] tR t^OtRtR tR R ltR R ltR R ltR	 R
 lt	Rt
R# )r7   Tc                	$    V P                  R 4      # )runTestr'   selfs   &r,   newinstanceUnitTestCase.newinstanceT   s     xx	""r.   c                   V ^8  d   QhRR/# )r    r)   zIterable[Item | Collector]r*   )r+   s   "r,   r-   UnitTestCase.__annotate__\   s     !M !M3 !Mr.   c              #  	T  "   ^ RI Hp V P                  p\        VRR4      '       g   R# \	        V4      pV'       g4   V P                  V4       V P                  V4       V P                  4        MV P                  V4       V P                  P                  P                  V P                  4       V R7       V! 4       pRpVP                  V P                  4       FH  p\        V P                  V4      p\        VRR4      '       g   K.  \        P                  WR7      x  RpKJ  	  V'       gy   \        V P                  RR4      pVe\   \         P"                  P%                  R	R4      p	V	e   WP&                  P(                  8w  d   \        P                  V RR7      x  R# R# R# R# 5i)
    )
TestLoader__test__TN)holdernodeF)r%   r=   twisted.trial.unittest)r0   rG   r'   getattr_is_skipped'_register_unittest_setup_method_fixture&_register_unittest_setup_class_fixture_register_setup_class_fixture_register_unittest_skip_fixturesession_fixturemanagerparsefactoriesrA   getTestCaseNamesTestCaseFunctionr8   r1   r2   getr   r=   )
r@   rG   clsskippedloaderfoundsomethingr%   xruntestr9   s
   &         r,   collectUnitTestCase.collect\   s_    'hhsJ--c"88=77<..0005$$33##%D 	4 	
 ++DHH5D$'A1j$//"..t.??!N 6 dhh	48G"[[__%=tD:KK,?,?!?*66t)6LL "@ # s   D+F(.A:F(c                    V ^8  d   QhRRRR/# r    rX   typer)   Noner*   )r+   s   "r,   r-   rD      s     6
 6
$ 6
4 6
r.   c                   aaaaa \        SRR4      o\        SRR4      oSf   Sf   R# \        SRR 4      oR V3R lloR VVVV3R	 llp\        P                  ! R
SP                   2VV RRR7       R# )zKRegister an auto-use fixture to invoke setUpClass and
tearDownClass (#517).
setUpClassNtearDownClassdoClassCleanupsc                     R # Nr*   r*   r.   r,   <lambda>EUnitTestCase._register_unittest_setup_class_fixture.<locals>.<lambda>   s    $r.   c                   V ^8  d   QhRR/# r    r)   rc   r*   )r+   s   "r,   r-   IUnitTestCase._register_unittest_setup_class_fixture.<locals>.__annotate__   s     	R 	RT 	Rr.   c                    < \        SR R4      p V '       g   R# V  UUu. uF  w  rqNK	  	  ppp\        V4      ^8X  d
   V^ ,          h\        RV4      hu uppi )tearDown_exceptionsNzUnittest class cleanup errors)rL   lenr!   )	exc_infos_exc
exceptionsrX   s       r,   process_teardown_exceptionsXUnitTestCase._register_unittest_setup_class_fixture.<locals>.process_teardown_exceptions   s]      %:DAI1:;+11#J; :!# m#$%DjQQ <s   Ac                    V ^8  d   QhRRRR/# r    requestr   r)   zGenerator[None]r*   )r+   s   "r,   r-   rn      s     	. 	.#	.	.r.   c              3  H  <"   V P                   p\        V4      '       d%   VP                  p\        P                  ! VR R7      hSe	    S! 4        Rx   Se   S! 4        S! 4        S! 4        R#   \         d    S! 4        S! 4        h i ; i  S! 4        S! 4        i ; i5iT_use_item_locationN)rX   rM   __unittest_skip_why__r   r4   )rz   rX   reasoncleanuprv   setupteardowns   &  r,   unittest_setup_class_fixtureYUnitTestCase._register_unittest_setup_class_fixture.<locals>.unittest_setup_class_fixture   s      ++C322nnVEE G .'J	+- ! I/1 	+-s6   AB"
A1 B"B !B"1BB"BB"_unittest_setUpClass_fixture_classTr%   funcrJ   scopeautouserL   r   register_fixture__qualname__)r@   rX   r   r   rv   r   r   s   &f @@@@r,   rO   3UnitTestCase._register_unittest_setup_class_fixture   s     \4036=X-#0,?	R 	R	. 	.0 	!!01A1A0BC-	
r.   c                    V ^8  d   QhRRRR/# ra   r*   )r+   s   "r,   r-   rD      s     
 
4 
D 
r.   c                j   a R V3R llp\         P                  ! RSP                   2VV RRR7       R# )zrRegister an auto-use fixture to skip tests for a class decorated
with @unittest.skip or @unittest.skipIf (#13885).c                    V ^8  d   QhRRRR/# )r    rz   r   r)   rc   r*   )r+   s   "r,   r-   BUnitTestCase._register_unittest_skip_fixture.<locals>.__annotate__   s     	B 	B> 	Bd 	Br.   c                N   < \        SR R4      p\        P                  ! VRR7      h)r    Tr}   )rL   r   r4   )rz   r   rX   s   & r,   unittest_skip_fixtureKUnitTestCase._register_unittest_skip_fixture.<locals>.unittest_skip_fixture   s#    S"92>F..DAAr.   _unittest_skip_fixture_r   Tr   N)r   r   r   )r@   rX   r   s   &f r,   rQ   ,UnitTestCase._register_unittest_skip_fixture   s<    	B 	B 	!!*3+;+;*<=&	
r.   c                    V ^8  d   QhRRRR/# ra   r*   )r+   s   "r,   r-   rD      s     
 
4 
D 
r.   c                   aa \        VRR4      o\        VRR4      oSf   Sf   R# R VV3R llp\        P                  ! RVP                   2VV RRR	7       R# )
zORegister an auto-use fixture to invoke setup_method and
teardown_method (#517).setup_methodNteardown_methodc                    V ^8  d   QhRRRR/# ry   r*   )r+   s   "r,   r-   JUnitTestCase._register_unittest_setup_method_fixture.<locals>.__annotate__   s     	1 	1#	1	1r.   c              3     <"   V P                   p\        V4      '       d%   VP                  p\        P                  ! VR R7      hSe   S! WP
                  4       Rx  Se   S! WP
                  4       R# R# 5ir|   )instancerM   r   r   r4   function)rz   r@   r   r   r   s   &  r,   unittest_setup_method_fixture[UnitTestCase._register_unittest_setup_method_fixture.<locals>.unittest_setup_method_fixture   sj      ##D4  33nnVEE d,,-#//0 $s   A6A9_unittest_setup_method_fixture_r   Tr   r   )r@   rX   r   r   r   s   && @@r,   rN   4UnitTestCase._register_unittest_setup_method_fixture   sf     ^T23 148=X-	1 	1 	!!233C3C2DE.	
r.   r*   N)__name__
__module__r   __firstlineno__
nofuncargsrA   r^   rO   rQ   rN   __static_attributes__r*   r.   r,   r7   r7   O   s*     J#!MF6
p
 
 
r.   r7   c                  ,  a  ] tR t^t$ RtRtRtR]R&   R t]	R 4       t
R V 3R	 lltR
 V 3R lltR R ltR R ltR R ltR R ltRR/R R lltR*R R lltR+R R lltR R ltR R ltR R  ltR! R" ltR# V 3R$ lltR% R& ltR' R( ltR)tV ;t# ),rV   TFNz7list[_pytest._code.ExceptionInfo[BaseException]] | None_excinfoc                	    \        V P                  \        4      '       g   Q hV P                  P                  V P                  4      # ri   )
isinstanceparentr7   r'   r%   r?   s   &r,   _getinstanceTestCaseFunction._getinstance   s0    $++|4444{{tyy))r.   c                	    V P                   # ri   )r   r?   s   &r,   	_testcaseTestCaseFunction._testcase   s    }}r.   c                   V ^8  d   QhRR/# rm   r*   )r+   s   "r,   r-   TestCaseFunction.__annotate__   s     U Ut Ur.   c                	n   < R V n         \        SV `	  4        \        P                  R8  d
   R V n        R # R # )N      )_explicit_tearDownsuperr   r1   version_info_cached_errors_and_skipsr@   	__class__s   &r,   r   TestCaseFunction.setup   s3    =Ag% QUD) &r.   c                   V ^8  d   QhRR/# rm   r*   )r+   s   "r,   r-   r      s      $ r.   c                	   < V P                   e   V P                  4        R V n         R V n        V =\        SV `  4        R # ri   )r   _obj	_instancer   r   r   s   &r,   r   TestCaseFunction.teardown   s:    "".##%&*D#	Nr.   c                    V ^8  d   QhRRRR/# r    testcaseunittest.TestCaser)   rc   r*   )r+   s   "r,   r-   r     s      "3  r.   c                	    R # ri   r*   r@   r   s   &&r,   	startTestTestCaseFunction.startTest      r.   c                    V ^8  d   QhRRRR/# )r    
rawexcinfo_SysExcInfoTyper)   rc   r*   )r+   s   "r,   r-   r   	  s      A  Ao  A$  Ar.   c                	   \        V4      p \        P                  P                  \        ,          P                  V4      pVP                  pVP                  pT P                   P#                  R. 4      P%                  X4       R#   \         d      \        P                  ! T!  pTP                  ^ R4       \        RP                  T4      RR7        L~  \        P                  \        3 d    h \         d    \        RT: 2RR7         Li ; i  \         d    h \        P                   d.    \        P                  P                  P                  4       p  ELi ; ii ; i)rF   zCNOTE: Incompatible Exception Representation, displaying natively:

r   Fpytracez6ERROR: Unknown Incompatible Exception representation:
r   N)_handle_twisted_exc_info_pytest_coder   BaseExceptionfrom_exc_infovalue	traceback	TypeErrorformat_exceptioninsertr   joinr4   KeyboardInterruptfrom_current__dict__
setdefaultappend)r@   r   excinfors   valuess   &&   r,   _addexcinfoTestCaseFunction._addexcinfo	  s=   -j9
	Emm11-@NNG
 A!!A. 	  R077@-  	EE&77DFMM3
 %8(9: $ ,,6>; %  % >> E!--55BBDE)	EsO   AB E&AC$D<DDDDE"4)E"E&!E""E&c               $    V ^8  d   QhRRRRRR/# r    r   r   r   r   r)   rc   r*   )r+   s   "r,   r-   r   +  s$     % %)%7F%	%r.   c                	     \        V^,          \        P                  4      '       d   \        V^,          P                  4       T P                  T4       R#   \         d     L i ; i)   N)r   r   r4   msgr   r   r@   r   r   s   &&&r,   addErrorTestCaseFunction.addError+  sR    	*Q-88Z]&&' 	$  		s   AA A&%A&c               $    V ^8  d   QhRRRRRR/# r   r*   )r+   s   "r,   r-   r   5  s$     % %)%7F%	%r.   c                	(    V P                  V4       R # ri   )r   r   s   &&&r,   
addFailureTestCaseFunction.addFailure5  s     	$r.   handle_subtestsc               (    V ^8  d   QhRRRRRRRR/# )	r    r   r   r   r&   r   boolr)   rc   r*   )r+   s   "r,   r-   r   :  s,      )36LP	r.   c               	  a a ^ RI Hp R VV 3R llpV'       g
   V! 4        R# \        W4      '       dI   V! 4        S P                  e2   S P                  R,          pS P	                  VP
                  W4       R# R# \        P                  R8  dF   S P                  P                  e.   S P                  4       w  rx\        V4      ^ 8X  d
   V! 4        R# R# V! 4        R# )rF   _SubTestc                   V ^8  d   QhRR/# rm   r*   )r+   s   "r,   r-   .TestCaseFunction.addSkip.<locals>.__annotate__?  s     	1 	1$ 	1r.   c                    <  \         P                  ! S R R7      h  \         P                   d)    SP                  \        P                  ! 4       4        R# i ; ir|   )r   r4   r   r1   exc_info)r   r@   s   r,   add_skip*TestCaseFunction.addSkip.<locals>.add_skip?  s@    1nnVEE>> 1  01s    9AANr   )unittest.caser   r   r   
addSubTest	test_caser1   r   r   _outcome_obtain_errors_and_skipsrq   )	r@   r   r   r   r   r  r   subtest_errorsrs   s	   f&f$     r,   addSkipTestCaseFunction.addSkip:  s     	+	1 	1 Jh))J}}(==, 2 2HG ) ')dmm.D.D.P$($A$A$C!~&!+J , 
r.   c               (    V ^8  d   QhRRRRRRRR/# )	r    r   r   r   r   r   r&   r)   rc   r*   )r+   s   "r,   r-   r   [  s2     	- 	-#	- $	- 		-
 
	-r.   c                	     \        \        V4      4       R #   \         P                   d)    T P                  \        P
                  ! 4       4        R # i ; iri   )r   r&   r4   r   r1   r   )r@   r   r   r   s   &&&&r,   addExpectedFailure#TestCaseFunction.addExpectedFailure[  s:    	-#f+ 	-S\\^,	-s    9AAc               $    V ^8  d   QhRRRRRR/# )r    r   r   r   z"twisted.trial.unittest.Todo | Noner)   rc   r*   )r+   s   "r,   r-   r   f  s(     - -#- 3- 
	-r.   c                	    R pV'       d   VRVP                    2,          p \        VRR7       R#   \        P                   d)    T P                  \        P
                  ! 4       4        R# i ; i)zUnexpected successz: Fr   N)r   r   r4   r   r1   r   )r@   r   r   r   s   &&& r,   addUnexpectedSuccess%TestCaseFunction.addUnexpectedSuccessf  sW    
 #R''C	-e$~~ 	-S\\^,	-s   1 9A.-A.c                    V ^8  d   QhRRRR/# r   r*   )r+   s   "r,   r-   r   t  s      #4  r.   c                	    R # ri   r*   r   s   &&r,   
addSuccessTestCaseFunction.addSuccesst  r   r.   c                    V ^8  d   QhRRRR/# r   r*   )r+   s   "r,   r-   r   w  s      !2 t r.   c                	    R # ri   r*   r   s   &&r,   stopTestTestCaseFunction.stopTestw  r   r.   c               $    V ^8  d   QhRRRRRR/# )r    r   r   elapsedfloatr)   rc   r*   )r+   s   "r,   r-   r   z  s"      $5  $ r.   c                	    R # ri   r*   )r@   r   r  s   &&&r,   addDurationTestCaseFunction.addDurationz  r   r.   c                   V ^8  d   QhRR/# rm   r*   )r+   s   "r,   r-   r   }  s     - - -r.   c                	   ^ RI Hp V P                  pVf   Q hV! V 4       \        V P                  4      '       d   V! V R7       R# \        V P                  \        4      '       g   Q h\        V P                  4      ;'       g     \        V P                  P                  4      pV P                  P                  R4      '       d(   V'       g    VP                  V n        \        VRR 4       \        W P                  V P                  4        V! V R7       \        W P                  4       R#   \        Y P                  4       i ; i)rF   )&maybe_wrap_pytest_function_for_tracingN)resultusepdbtearDownc                     R # ri   r*   )argss   *r,   rj   *TestCaseFunction.runtest.<locals>.<lambda>  s    Dr.   )_pytest.debuggingr$  r   r   r'   r   r   r7   rM   config	getoptionr'  r   setattrr%   delattr)r@   r$  r   rY   s   &   r,   r]   TestCaseFunction.runtest}  s    L==###.t4 TXX&&D! dkk<8888!$((+KK{4;;??/KG{{$$X..w*2*;*;'*.@A Hii2-%)),)),s   	D. .Ec                    V ^8  d   QhRRRR/# )r    r   z*_pytest._code.ExceptionInfo[BaseException]r)   z_pytest._code.Tracebackr*   )r+   s   "r,   r-   r     s     	 	A		 	r.   c                	`   < \         SV `  V4      pVP                  ! R  4      pV'       g   TpV# )c                V    V P                   P                  P                  R 4      '       * # )
__unittest)frame	f_globalsrW   )r\   s   &r,   rj   4TestCaseFunction._traceback_filter.<locals>.<lambda>  s    !''++//==r.   )r   _traceback_filterfilter)r@   r   r   
ntracebackr   s   &&  r,   r8  "TestCaseFunction._traceback_filter  s7     G-g6	%%=

 "Jr.   c               (    V ^8  d   QhRRRRRRRR/# )	r    r  r	   testr   r   z^ExceptionInfo[BaseException] | tuple[type[BaseException], BaseException, TracebackType] | Noner)   rc   r*   )r+   s   "r,   r-   r     s8     8N 8N8N 8N	8N 
8Nr.   c           
     	d   ^ RI Hp T;\        Rc ;e   w    \        VRR7      pM* ;;\        Rc ;e   w   M ;f   M M  TpMp\	        V4       \
        R,          ! RX^ ^ ^ RRR7      pVP                  VJ d   RM\        VP                  4      pV P                  P                  WR7      p	\        P                  ! V	\        V\        VP                  4      R	7      RRR
7      p
V P                  P                  V
R7       \!        Wz4      '       d   V P                  P#                  WV
R7       \$        P&                  R8  dn   V P)                  4       w  r\+        V4      ^ 8  dJ   \+        V4      ^ 8  d8   VR,          pW=R,          J d!   V F  w  rV P-                  WRR7       K  	  R# R# R# R# R# )rF   )_subtest_msg_sentinelr*   NT)	_ispytestcall)startstopdurationwhenr@  )itemrA  )r   kwargs)captured_outputcaptured_logs)report)rJ   rA  rJ  F)r   r   r  )r  r?  tupler   r   r   _messager&   ihookpytest_runtest_makereportr   _newr   dictparamspytest_runtest_logreportr   pytest_exception_interactr1   r   r  rq   r
  )r@   r  r=  r   r?  exception_infounreachable	call_infor   rJ  
sub_reportr	  non_subtest_skiplast_subset_errorr   r   s   &&&&            r,   r  TestCaseFunction.addSubTest  s    	8 !.x4!H '4'!)[)TN
	 mm'<<d#dmmBT5545P"''s4+<= 	

 	

++:+>&y==JJ00* 1 
 g%/3/L/L/N,N #$q(S-@1-D$22$6!44,<(XuM -= 5 .E( &r.   c                   V ^8  d   QhRR/# )r    r)   ztuple[list[Any], list[Any]]r*   )r+   s   "r,   r-   r     s     1 1*E 1r.   c                   ^ RI Hp \        P                  R8  g   Q R4       hV P                  e   V P                  # V P
                  P                  P                   UUu. uF!  w  r#\        W!4      '       g   K  Vf   K  W#3NK#  	  pppV P
                  P                  P                   UUu. uF  w  r#\        W!4      '       d   K  W#3NK  	  pppWE3V n        WE3# u uppi u uppi )zMCompute or obtain the cached values for subtest errors and non-subtest skips.r   z2This workaround only should be used in Python 3.10r   )
r  r   r1   r   r   r   r  errorsr   rY   )r@   r   r\   yr	  non_subtest_skipss   &     r,   r  )TestCaseFunction._obtain_errors_and_skips  s    *') 	
@	
) ((4000 ..55
5!& +, QF5 	 
 ..66
6a* QF6 	 

 *8(K%00

s    C:C C-C"C")r   r   r   )r   ri   )r   r   r   r   r   failfastr   __annotations__r   propertyr   r   r   r   r   r   r   r
  r  r  r  r  r   r]   r8  r  r  r   __classcell__)r   s   @r,   rV   rV      s    JHHLHEL*  U U  AD%%
SWB	---B	 	8Nt1 1r.   rV   T)tryfirstc               $    V ^8  d   QhRRRRRR/# )r    rF  r   rA  zCallInfo[None]r)   rc   r*   )r+   s   "r,   r-   r-     s!     % %D % %4 %r.   c                .  a \        V \        4      '       d6   V P                  '       d$   V P                  P                  ^ 4      Vn         V=\        P                  P                  R4      pV'       d   VP                  '       d}   \        VP                  P                  VP                  4      '       dK   VP                  o\        R,          P                  V3R lVP                  4      pVP                  Vn        R# R# R# R#   \         d     Li ; i)rF   r0   Nc                 @   < \        \        S P                  4      4      # ri   )r   r&   r   )r   s   r,   rj   +pytest_runtest_makereport.<locals>.<lambda>  s    c'--6H1Ir.   )r   rV   r   popr   r%  AttributeErrorr1   r2   rW   r   SkipTestr   	from_callrE  )rF  rA  r0   call2r   s   &&  @r,   rN  rN    s    $())=====,,Q/DLK {{z*HDLLLZ0B0BHDUDU%V%V,,(()I499U}} &WLx " s   D DDc                   V ^8  d   QhRR/# )r    r)   r   r*   )r+   s   "r,   r-   r-     s     : : :r.   c                .    \        \        V RR4      4      # )zDReturn True if the given object has been marked with @unittest.skip.__unittest_skip__F)r   rL   r>   s   &r,   rM   rM     s    0%899r.   c                   V ^8  d   QhRR/# rm   r*   )r+   s   "r,   r-   r-     s     5 5$ 5r.   c                 t    \        4       \        P                  Jd   ^ RIHp  ^ RIHp V! \        V 4       R# R# )zRRegister the TestCaseFunction class as an IReporter if twisted.trial is available.)	IReporter)classImplementsN)_get_twisted_versionTwistedVersionNotInstalledtwisted.trial.itrialrt  zope.interfaceru  rV   )rt  ru  s     r,   pytest_configurer{    s*    ^%@%@@22()4	 Ar.   c                  D    ] tR tRtRt]! 4       t]! 4       t]! 4       tRt	R# )rw  i  z~
The Twisted version installed in the environment.

We have different workarounds in place for different versions of Twisted.
r*   N)
r   r   r   r   __doc__r   	Version24	Version25rx  r   r*   r.   r,   rw  rw    s     II6Lr.   rw  c                   V ^8  d   QhRR/# )r    r)   rw  r*   )r+   s   "r,   r-   r-   ,  s     ( (n (r.   c                 *   R \         P                  9  d   \        P                  # ^ RIp ^ RIpV P                  P                  R4      pVP                  P                  V4      pVP                  ^8:  d   \        P                  # \        P                  # )rK   Ntwisted)r1   r2   rw  rx  importlib.metadatapackaging.versionmetadataversionparsemajorr~  r  )	importlib	packagingversion_strr  s       r,   rv  rv  ,  sr      s{{2***$$,,Y7K%%k2G}}''''''r.   _twisted_raw_excinfo)wrapperc                    V ^8  d   QhRRRR/# )r    rF  r   r)   zIterator[None]r*   )r+   s   "r,   r-   r-   F  s      $ > r.   c              #  T  a"   \        4       \        P                  J dq   ^ RIHu Hp VP                  P                  oRV3R llp\        P                  ! 4       ;_uu_ 4       pVP                  VP                  RV4       Rx uuRRR4       # Rx #   + '       g   i     R# ; i5i)rF   Nc                $  < Vf   \         P                  ! 4       pM3Vf   \        V4      pVf   \         P                  ! 4       ^,          pW!V3p\        V \        \        V4      4        S! WW#VR7       R #   \         d    S! YY#4        R # i ; i)N)captureVars)r1   r   rb   r.  TWISTED_RAW_EXCINFO_ATTRrK  r   )r@   	exc_valueexc_typeexc_tbr  raw_exc_infooriginal__init__s   &&&&& r,   store_raw_exception_info9pytest_runtest_protocol.<locals>.store_raw_exception_infoM  s      "||~##IH> \\^A.F (V<D2E,4GHD X;  D (CDs   *A7 7BB__init__)NNNN)rv  rw  r~  twisted.python.failurepythonfailureFailurer  r   contextr.  )rF  r9   r  patcherr  s   &   @r,   pytest_runtest_protocolr  E  sz     !9!99++ ::..	D&   ""gOOBJJ
4LM #" 	 #""s   A!B($!BB(B%		B(c                    V ^8  d   QhRRRR/# )r    r   z_SysExcInfoType | BaseExceptionr)   r   r*   )r+   s   "r,   r-   r-   g  s      &G &G/&G&Gr.   c                L   \        4       pV\        P                  J d   V # V\        P                  J d;   \	        V \
        4      '       d#   \        V \
        4      p\        V \
        4       V# V # V\        P                  J d   \        V \        4      '       d   ^ RIp\        WP                  P                  P                  4      '       dO   V P                  pVf   \         P"                  ! 4       ^,          p\%        V P&                  4      V P&                  V3# V # Q RT 24       h)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.
NzUnexpected Twisted version: )rv  rw  rx  r~  hasattrr  rL   r/  r  r   r   r  r  r  r  __traceback__r1   r   rb   r   )r   twisted_versionsaved_exc_infor  tbs   &    r,   r   r   g  s     +,O.555 	N44	4 :788$Z1IJNJ 89!!	N44	4j-00)*nn&<&<&D&DEE--:*BJ,,-z/?/?CC 	G4_4EFFur.   r   )NNN)Hr}  
__future__r   collections.abcr   r   r   r   enumr   r   r5   r1   r   typestypingr	   r
   r0   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.unittestr  rK  rb   r   r   r:   r7   rV   rN  rM   r{  rw  rv  r  r  r   r*   r.   r,   <module>r     sD   : " $ % $ $    
         ' ' , # + + #  ! ! ! "   # ! # 6 + * B'!-#! 
$}
}e.A.A
AB C(T
5 T
nS1x S1l 
4% %$:
5T (, 2  
$ B&Gr.   