
    ?g<                    V   S r SSKJr  SSKrSSK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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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&r&\RN                  SS S:  a  SSK(J)r)  \(       a  SSK*r*SSK+r,\\\\-   \-\R\                  4   \S   4   r/        S)S jr0 " S S\!5      r1 " S  S!\"5      r2\" S"S#9S*S$ j5       r3S%q4\" S"S&9S+S' j5       r5S,S( jr6g)-z4Discover and run std-library "unittest" style tests.    )annotationsN)Any)Callable)	Generator)Iterable)Tuple)Type)TYPE_CHECKING)Union)is_async_function)hookimpl)FixtureRequest)	Collector)Item)exit)fail)skip)xfail)Class)Function)Module)CallInfo   )      )ExceptionGroup)NNNc                     [         R                  S   n[        X#R                  5      (       d  g  [
        R                  " U5      (       a  g [        R                  XUS9$ ! [         a     g f = f)Nunittest)nameobj)	sysmodules
issubclassTestCase	Exceptioninspect
isabstractUnitTestCasefrom_parent)	collectorr   r    uts       2/usr/lib/python3/dist-packages/_pytest/unittest.pypytest_pycollect_makeitemr-   3   sn    [[$ #{{++ , ###Ic#BB  s   -A! !
A.-A.c                  <    \ rS rSrSrS rS	S jrS
S jrS
S jrSr	g)r(   G   Tc                $    U R                  S5      $ )NrunTestr    selfs    r,   newinstanceUnitTestCase.newinstanceL   s     xx	""    c              #    #    SSK Jn  U R                  n[        USS5      (       d  g [	        U5      nU(       d2  U R                  U5        U R                  U5        U R                  5         U R                  R                  R                  U R                  5       U R                  5        U" 5       nSnUR                  U R                  5       HD  n[        U R                  U5      n[        USS5      (       d  M-  [        R                  XS9v   SnMF     U(       do  [        U R                  SS 5      nUbT  [         R"                  R%                  SS 5      n	U	b  XR&                  R(                  :w  a  [        R                  U SS9v   g g g g 7f)	Nr   )
TestLoader__test__TF)r   r1   twisted.trial.unittest)r   r9   r    getattr_is_skipped'_register_unittest_setup_method_fixture&_register_unittest_setup_class_fixture_register_setup_class_fixturesession_fixturemanagerparsefactoriesr5   nodeidgetTestCaseNamesTestCaseFunctionr)   r!   r"   getr$   r1   )
r4   r9   clsskippedloaderfoundsomethingr   xruntestr+   s
             r,   collectUnitTestCase.collectT   sK    'hhsJ--c"88=77<..0$$33D4D4D4FT++DHH5D$'A1j$//"..t.??!N 6 dhh	48G"[[__%=tD:KK,?,?!?*66t)6LL "@ # s   FFc                  ^^^^^ [        TSS5      m[        TSS5      mTc  Tc  g[        TSS 5      mSU4S jjm    SUUUU4S jjnU R                  R                  R                  STR                   3UU R
                  S	S
S9  g)zKRegister an auto-use fixture to invoke setUpClass and
tearDownClass (#517).
setUpClassNtearDownClassdoClassCleanupsc                     g N rV   r7   r,   <lambda>EUnitTestCase._register_unittest_setup_class_fixture.<locals>.<lambda>z   s    $r7   c                    > [        TSS 5      n U (       d  g U  VVs/ s H  u  poPM	     nnn[        U5      S:X  a  US   e[        SU5      es  snnf )NtearDown_exceptions   r   zUnittest class cleanup errors)r<   lenr   )	exc_infos_exc
exceptionsrH   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              3  J  >#    U R                   n[        U5      (       a*  UR                  n[        R                  R                  USS9eTb   T" 5         S v    Tb  T" 5         T" 5         T" 5         g ! [
         a    T" 5         T" 5         e f = f! T" 5         T" 5         f = f7fNT)_use_item_location)rH   r=   __unittest_skip_why__pytestr   r%   )requestrH   reasoncleanupra   setupteardowns      r,   unittest_setup_class_fixtureYUnitTestCase._register_unittest_setup_class_fixture.<locals>.unittest_setup_class_fixture   s      ++C322kk++Ft+LL G .'J	+- ! I/1 	+-s6   A
B#A3 B#
B $B#3BB#B  B#_unittest_setUpClass_fixture_classTr   funcrD   scopeautousereturnNonerh   r   rv   zGenerator[None]r<   rA   rB   _register_fixture__qualname__rD   )r4   rH   rm   rj   ra   rk   rl   s    ` @@@@r,   r?   3UnitTestCase._register_unittest_setup_class_fixtures   s     \4036=X-#0,?	R	.#	.	. 	.0 	$$6601A1A0BC-;; 	7 	
r7   c                   ^^ [        USS5      m[        USS5      mTc  Tc  g    S	UU4S jjnU R                  R                  R                  SUR                   3UU R
                  SSS9  g)
zORegister an auto-use fixture to invoke setup_method and
teardown_method (#517).setup_methodNteardown_methodc              3     >#    U R                   n[        U5      (       a*  UR                  n[        R                  R                  USS9eTb  T" XR                  5        S v   Tb  T" XR                  5        g g 7frd   )instancer=   rf   rg   r   r%   function)rh   r4   ri   rk   rl   s      r,   unittest_setup_method_fixture[UnitTestCase._register_unittest_setup_method_fixture.<locals>.unittest_setup_method_fixture   ss      ##D4  33kk++Ft+LL d,,-#//0 $s   A7A:_unittest_setup_method_fixture_r   Trq   rx   ry   )r4   rH   r   rk   rl   s      @@r,   r>   4UnitTestCase._register_unittest_setup_method_fixture   s     ^T23 148=X-	1#	1	1 	1 	$$66233C3C2DE.;; 	7 	
r7   rV   N)rv   zIterable[Item | Collector])rH   typerv   rw   )
__name__
__module__r{   __firstlineno__
nofuncargsr5   rN   r?   r>   __static_attributes__rV   r7   r,   r(   r(   G   s     J#M>6
p
r7   r(   c                  (  ^  \ rS rSr% SrSrS\S'   S r\S 5       r	SU 4S jjr
SU 4S	 jjrSS
 jrSS jr      SS jr      SS jrSS jr S       SS jjr S     SS jjrSS jrSS jrS S jrSS jr    S!U 4S jjrSrU =r$ )"rF      TNz7list[_pytest._code.ExceptionInfo[BaseException]] | None_excinfoc                    [        U R                  [        5      (       d   eU R                  R                  U R                  5      $ rU   )
isinstanceparentr(   r    r   r3   s    r,   _getinstanceTestCaseFunction._getinstance   s0    $++|4444{{tyy))r7   c                    U R                   $ rU   )r   r3   s    r,   	_testcaseTestCaseFunction._testcase   s    }}r7   c                0   > S U l         [        TU ]	  5         g rU   )_explicit_tearDownsuperrk   r4   	__class__s    r,   rk   TestCaseFunction.setup   s    =Ar7   c                |   > U R                   b  U R                  5         S U l         S U l        U ?[        TU ]  5         g rU   )r   _obj	_instancer   rl   r   s    r,   rl   TestCaseFunction.teardown   s:    "".##%&*D#	Nr7   c                    g rU   rV   r4   testcases     r,   	startTestTestCaseFunction.startTest       r7   c                   [        USU5      n [        R                  R                  [           R                  U5      nUR                  nUR                  nU R                   R#                  S/ 5      R%                  W5        g ! [         a      [        R                  " U6 nUR                  SS5        [        SR                  U5      SS9   Nx! [        R                  [        4 a    e [         a    [        SU< 3SS9    Nf = f! [         a    e [        R                   a,    [        R                  R                  R                  5       n  Nf = ff = f)	N_rawexcinfor   zCNOTE: Incompatible Exception Representation, displaying natively:

 Fpytracez6ERROR: Unknown Incompatible Exception representation:
r   )r<   _pytest_codeExceptionInfoBaseExceptionfrom_exc_infovalue	traceback	TypeErrorformat_exceptioninsertr   joinr%   KeyboardInterruptfrom_current__dict__
setdefaultappend)r4   
rawexcinfoexcinfor^   valuess        r,   _addexcinfoTestCaseFunction._addexcinfo   s<   Z
C
	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sC   AB 
E>C2DDDDAEEEEc                     [        US   [        R                  5      (       a  [        US   R                  5        U R                  U5        g ! [         a     Nf = f)Nr[   )r   r   r%   msgr   r   r4   r   r   s      r,   addErrorTestCaseFunction.addError  sR    	*Q-88Z]&&' 	$  		s   :A 
AAc                &    U R                  U5        g rU   )r   r   s      r,   
addFailureTestCaseFunction.addFailure  s     	$r7   c                     [         R                  R                  USS9e! [        R                   a'    U R                  [        R
                  " 5       5         g f = frd   )rg   r   r%   r   r!   exc_info)r4   r   ri   s      r,   addSkipTestCaseFunction.addSkip  sH    	-++''4'HH~~ 	-S\\^,	-s     8AAc                     [        [        U5      5        g ! [         R                   a'    U R                  [        R
                  " 5       5         g f = frU   )r   strr%   r   r!   r   )r4   r   r   ri   s       r,   addExpectedFailure#TestCaseFunction.addExpectedFailure   s:    	-#f+ 	-S\\^,	-s    8AAc                    SnU(       a  USUR                    3-  n [        USS9  g ! [        R                   a'    U R                  [        R
                  " 5       5         g f = f)NzUnexpected successz: Fr   )ri   r   r%   r   r!   r   )r4   r   ri   r   s       r,   addUnexpectedSuccess%TestCaseFunction.addUnexpectedSuccess+  sW    
 #R''C	-e$~~ 	-S\\^,	-s   
( 8A#"A#c                    g rU   rV   r   s     r,   
addSuccessTestCaseFunction.addSuccess9  r   r7   c                    g rU   rV   r   s     r,   stopTestTestCaseFunction.stopTest<  r   r7   c                    g rU   rV   )r4   r   elapseds      r,   addDurationTestCaseFunction.addDuration?  r   r7   c                t   SSK Jn  U R                  nUc   eU" U 5        [        U R                  5      (       a  U" U S9  g [        U R                  [        5      (       d   e[        U R                  5      =(       d    [        U R                  R                  5      nU R                  R                  S5      (       a&  U(       d  UR                  U l        [        USS 5        [        X R                  U R                  5         U" U S9  [        X R                  5        g ! [        X R                  5        f = f)Nr   )&maybe_wrap_pytest_function_for_tracing)resultusepdbtearDownc                     g rU   rV   )argss    r,   rW   *TestCaseFunction.runtest.<locals>.<lambda>Y  s    Dr7   )_pytest.debuggingr   r   r   r    r   r   r(   r=   config	getoptionr   r   setattrr   delattr)r4   r   r   rI   s       r,   rM   TestCaseFunction.runtestB  s    L==###.t4 TXX&&D! dkk<8888!$((+K{4;;??/KG{{$$X..w*2*;*;'*.@A Hii2-%)),)),s   D   D7c                ^   > [         TU ]  U5      nUR                  " S 5      nU(       d  UnU$ )Nc                V    U R                   R                  R                  S5      (       + $ )N
__unittest)frame	f_globalsrG   )rL   s    r,   rW   4TestCaseFunction._traceback_filter.<locals>.<lambda>h  s    !''++//==r7   )r   _traceback_filterfilter)r4   r   r   
ntracebackr   s       r,   r   "TestCaseFunction._traceback_filterc  s7     G-g6	%%=

 "Jr7   )r   r   ru   )r   unittest.TestCaserv   rw   )r   _SysExcInfoTyperv   rw   )r   r   r   r   rv   rw   )r   r   ri   r   rv   rw   )r   )r   r   r   r   ri   r   rv   rw   rU   )r   r   ri   z"twisted.trial.unittest.Todo | Nonerv   rw   )r   r   r   floatrv   rw   )r   z*_pytest._code.ExceptionInfo[BaseException]rv   z_pytest._code.Traceback)r   r   r{   r   r   r   __annotations__r   propertyr   rk   rl   r   r   r   r   r   r   r   r   r   r   rM   r   r   __classcell__)r   s   @r,   rF   rF      s   JHLHEL*  
!AF%)%7F%	%%)%7F%	%
- 		-#	- $	- 		-
 
	- 6:-#- 3- 
	--B	A		 	 	r7   rF   T)tryfirstc                  ^ [        U [        5      (       a4  U R                  (       a#  U R                  R                  S5      Ul         U?[        R                  R                  S5      nU(       a  UR                  (       au  [        UR                  R                  UR                  5      (       aE  UR                  m[        S    R                  U4S jUR                  5      nUR                  Ul        g g g g ! [         a     Nf = f)Nr   r   c                 V   > [         R                  " [        T R                  5      5      $ rU   )rg   r   r   r   )r   s   r,   rW   +pytest_runtest_makereport.<locals>.<lambda>  s    FKKGMM 23r7   )r   rF   r   popr   r   AttributeErrorr!   r"   rG   r   SkipTestr   	from_callwhen)itemcallr   call2r   s       @r,   pytest_runtest_makereportr	  o  s    $())====,,Q/DLK {{z*HDLLZ0B0BHDUDU%V%V,,((3TYY
 }} &WLx " s   	C9 9
DDF)wrapperc              #    ^#    [        U [        5      (       a  S[        R                  ;   a  [        R                  S   nUR                  R
                  m[        (       d  SSKJn  SSK	J
n  U" [        U5        Sq SU4S jjnXAR                  l         S v nTUR                  l        U$ S v nU$ ! TUR                  l        f = f7f)	Nr;   ztwisted.python.failurer   )	IReporter)classImplementsTc                   > Uc  [         R                  " 5       U l        OUc  [        U5      nX!U4U l         T" XX#US9  g ! [         a    T" XX#5         g f = f)N)captureVars)r!   r   r   r   r   )r4   	exc_valueexc_typeexc_tbr  Failure__init__s        r,   excstore)pytest_runtest_protocol.<locals>.excstore  sg      #&<<> ##IH$,#@ CX;  CBCs   A AA)NNNN)r   rF   r!   r"   Failure__init__classImplements_has_runtwisted.trial.itrialr  zope.interfacer  )r  r+   r  r  r  resr  s         @r,   pytest_runtest_protocolr    s     $()).F#++.U++67**--&&66,i8&*# KO	C  '

	2C"1BJJ J J #2BJJs   BC	B3 C	3CC	c                .    [        [        U SS5      5      $ )zDReturn True if the given object has been marked with @unittest.skip.__unittest_skip__F)boolr<   r2   s    r,   r=   r=     s    0%899r7   )r*   zModule | Classr   r   r    objectrv   zUnitTestCase | None)r  r   r  zCallInfo[None]rv   rw   )r  r   rv   zGenerator[None, object, object])rv   r  )7__doc__
__future__r   r&   r!   r   typestypingr   r   r   r   r   r	   r
   r   _pytest._coder   _pytest.compatr   _pytest.configr   _pytest.fixturesr   _pytest.nodesr   r   _pytest.outcomesr   r   r   r   _pytest.pythonr   r   r   _pytest.runnerr   rg   version_infoexceptiongroupr   r   twisted.trial.unittesttwistedr   TracebackTyper   r-   r(   rF   r	  r  r  r=   rV   r7   r,   <module>r2     s;   : "  
             , # + #  ! ! ! "   # ! #  BQ'!-! 	$}
}e.A.A
AB	
CC%(C/5CC(@
5 @
Fbx bJ 
4% %.    
$# #L:r7   