
    F-Ph<                    \   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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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%Z%ej&        dd         dk     rddl'm(Z( erddl)Z)ddl*Z+ee,e-e.         e.e
j/        f         e,d         f         Z0d6d#Z1 G d$ d%e           Z2 G d& d'e!          Z3 ed()          d7d/            Z4d0a5 ed(1          d8d3            Z6d9d5Z7dS ):z4Discover and run std-library "unittest" style tests.    )annotations)Callable)	Generator)IterableN)Any)TYPE_CHECKING)Union)is_async_function)hookimpl)FixtureRequest)	Collector)Item)exit)fail)skip)xfail)Class)Function)Module)CallInfo   )      )ExceptionGroup)NNN	collectorModule | ClassnamestrobjobjectreturnUnitTestCase | Nonec                    	 t           j        d         }t          ||j                  sd S n# t          $ r Y d S w xY wt          j        |          rd S t                              | ||          S )Nunittest)r   r   )	sysmodules
issubclassTestCase	Exceptioninspect
isabstractUnitTestCasefrom_parent)r   r   r   uts       P/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/_pytest/unittest.pypytest_pycollect_makeitemr0   1   s    [$ #r{++ 	4	   tt # t##IDc#BBBs   ', 
::c                  0    e Zd ZdZd ZddZdd	Zdd
ZdS )r,   Tc                ,    |                      d          S )NrunTestr   selfs    r/   newinstancezUnitTestCase.newinstanceJ   s     xx	"""    r!   Iterable[Item | Collector]c              #    K   ddl m} | j        }t          |dd          sd S t	          |          }|s>|                     |           |                     |           |                                  | j        j	        
                    |                                 | j                    |            }d}|                    | j                  D ]I}t          | j        |          }t          |dd          s)t                              | |          V  d}J|sjt          | j        dd           }|Tt           j                            dd           }	|	||	j        j        k    r$t                              | d          V  d S d S d S d S )	Nr   )
TestLoader__test__TF)r   r3   twisted.trial.unittest)r$   r;   r   getattr_is_skipped'_register_unittest_setup_method_fixture&_register_unittest_setup_class_fixture_register_setup_class_fixturesession_fixturemanagerparsefactoriesr7   nodeidgetTestCaseNamesTestCaseFunctionr-   r%   r&   getr(   r3   )
r6   r;   clsskippedloaderfoundsomethingr   xruntestr.   s
             r/   collectzUnitTestCase.collectR   s     ''''''hsJ-- 	Fc"" 	188===77<<<..000$33D4D4D4F4FTTT++DH55 	" 	"D$''A1j$// "..t$.?????!NN 	Mdh	488G"[__%=tDD:BK,?!?!?*66t)6LLLLLLL	M 	M""!?!?r8   rJ   typeNonec                   t          dd          t          dd          dS t          dd           dfddfd}| j        j                            dj         || j        dd           dS )zSRegister an auto-use fixture to invoke setUpClass and
        tearDownClass (#517).
setUpClassNtearDownClassdoClassCleanupsc                     d S N rY   r8   r/   <lambda>zEUnitTestCase._register_unittest_setup_class_fixture.<locals>.<lambda>x   s    $ r8   r!   rR   c                     t          dd           } | sd S d | D             }t          |          dk    r|d         t          d|          )NtearDown_exceptionsc                    g | ]\  }}}|	S rY   rY   ).0_excs      r/   
<listcomp>zlUnitTestCase._register_unittest_setup_class_fixture.<locals>.process_teardown_exceptions.<locals>.<listcomp>   s    ;;;+1c1#;;;r8      r   zUnittest class cleanup errors)r>   lenr   )	exc_infos
exceptionsrJ   s     r/   process_teardown_exceptionszXUnitTestCase._register_unittest_setup_class_fixture.<locals>.process_teardown_exceptionsz   se      %:DAAI ;;;;;J :!## m#$%DjQQQr8   requestr   Generator[None]c              3  f  K   | j         }t          |          r(|j        }t          j                            |d          /	               n## t
          $ r                              w xY wd V  	 
                                          d S #                             w xY wNT)_use_item_location)rJ   r?   __unittest_skip_why__pytestr   r)   )rg   rJ   reasoncleanuprf   setupteardowns      r/   unittest_setup_class_fixturezYUnitTestCase._register_unittest_setup_class_fixture.<locals>.unittest_setup_class_fixture   s       +C3 M2k++Ft+LLL EGGGG !   GIII//111 EEE.'HJJJ			++----- 			++----s   
A  A08B B0_unittest_setUpClass_fixture_classTr   funcrF   scopeautouser!   rR   rg   r   r!   rh   r>   rC   rD   _register_fixture__qualname__rF   )r6   rJ   rr   ro   rf   rp   rq   s    ` @@@@r/   rA   z3UnitTestCase._register_unittest_setup_class_fixtureq   s     \400366=X-4#0,,??	R 	R 	R 	R 	R 	R	. 	. 	. 	. 	. 	. 	. 	. 	.0 	$66C1ACC-; 	7 	
 	
 	
 	
 	
r8   c                    t          |dd          t          |dd          dS dfd}| j        j                            d	|j         || j        d
d           dS )zWRegister an auto-use fixture to invoke setup_method and
        teardown_method (#517).setup_methodNteardown_methodrg   r   r!   rh   c              3     K   | j         }t          |          r(|j        }t          j                            |d           || j                   d V   || j                   d S d S rj   )instancer?   rl   rm   r   r)   function)rg   r6   rn   rp   rq   s      r/   unittest_setup_method_fixturez[UnitTestCase._register_unittest_setup_method_fixture.<locals>.unittest_setup_method_fixture   s       #D4   M3k++Ft+LLL dG,---EEE#w/00000 $#r8   _unittest_setup_method_fixture_r   Tru   rz   r{   )r6   rJ   r   rp   rq   s      @@r/   r@   z4UnitTestCase._register_unittest_setup_method_fixture   s     ^T223 1488=X-4	1 	1 	1 	1 	1 	1 	1 	$66E33CEE.; 	7 	
 	
 	
 	
 	
r8   N)r!   r9   )rJ   rQ   r!   rR   )__name__
__module__r}   
nofuncargsr7   rP   rA   r@   rY   r8   r/   r,   r,   E   sk         J# # #M M M M>6
 6
 6
 6
p
 
 
 
 
 
r8   r,   c                       e Zd ZU 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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 xZS )/rH   TNz7list[_pytest._code.ExceptionInfo[BaseException]] | None_excinfoc                x    t          | j        t                    sJ | j                            | j                  S rX   )
isinstanceparentr,   r   r   r5   s    r/   _getinstancezTestCaseFunction._getinstance   s0    $+|44444{ty)))r8   c                    | j         S rX   )r   r5   s    r/   	_testcasezTestCaseFunction._testcase   s
    }r8   r!   rR   c                V    d | _         t                                                       d S rX   )_explicit_tearDownsuperrp   r6   	__class__s    r/   rp   zTestCaseFunction.setup   s     =Ar8   c                    | j         |                                   d | _         d | _        | `t                                                       d S rX   )r   _obj	_instancer   rq   r   s    r/   rq   zTestCaseFunction.teardown   sN    ".##%%%&*D#	Nr8   testcaseunittest.TestCasec                    d S rX   rY   r6   r   s     r/   	startTestzTestCaseFunction.startTest       r8   
rawexcinfo_SysExcInfoTypec                   t          |d|          }	 t          j        j        t                                       |          }|j        }|j        }n# t          $ r 	 	 t          j	        | }|
                    dd           t          d                    |          d           n:# t          j        t          f$ r  t          $ r t          d|d           Y nw xY wnB# t          $ r  t          j        $ r& t          j        j                                        }Y nw xY wY nw xY w| j                            dg                               |           d S )	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)r6   r   excinfor_   valuess        r/   _addexcinfozTestCaseFunction._addexcinfo   s   Z
CC
	Em1-@NN G
 A!AA 	E 	E 	EE&7DFMM3  
 %88888(9:   $   ;,6; ; %      %   > E E E!-5BBDDE)	E, 	  R0077@@@@@sT   =A 
D&AB&%C!&4CC!CC! D&!<D D&D  D&%D&c                    	 t          |d         t          j                  rt          |d         j                   n# t          $ r Y nw xY w|                     |           d S )Nrb   )r   r   r)   msgr   r   r6   r   r   s      r/   addErrorzTestCaseFunction.addError	  so    	*Q-88 (Z]&''' 	 	 	D	$$$$$s   := 
A
	A
c                0    |                      |           d S rX   )r   r   s      r/   
addFailurezTestCaseFunction.addFailure  s     	$$$$$r8   rn   r   c                    	 t           j                            |d          # t          j        $ r* |                     t	          j                               Y d S w xY wrj   )rm   r   r)   r   r%   exc_info)r6   r   rn   s      r/   addSkipzTestCaseFunction.addSkip  sb    	-+''4'HHH~ 	- 	- 	-S\^^,,,,,,	-s   !# 5AAr   c                    	 t          t          |                     d S # t           j        $ r* |                     t	          j                               Y d S w xY wrX   )r   r   r)   r   r%   r   )r6   r   r   rn   s       r/   addExpectedFailurez#TestCaseFunction.addExpectedFailure  sa    	-#f++ 	- 	- 	-S\^^,,,,,,	-s     5AA"twisted.trial.unittest.Todo | Nonec                    d}|r|d|j          z  }	 t          |d           d S # t          j        $ r* |                     t	          j                               Y d S w xY w)NzUnexpected successz: Fr   )rn   r   r)   r   r%   r   )r6   r   rn   r   s       r/   addUnexpectedSuccessz%TestCaseFunction.addUnexpectedSuccess)  s    
 # 	(''''C	-e$$$$$$~ 	- 	- 	-S\^^,,,,,,	-s   & 5AAc                    d S rX   rY   r   s     r/   
addSuccesszTestCaseFunction.addSuccess7  r   r8   c                    d S rX   rY   r   s     r/   stopTestzTestCaseFunction.stopTest:  r   r8   elapsedfloatc                    d S rX   rY   )r6   r   r   s      r/   addDurationzTestCaseFunction.addDuration=  r   r8   c                6   ddl m} | j        }|J  ||            t          | j                  r ||            d S t          | j        t                    sJ t          | j                  pt          | j        j                  }| j	        
                    d          r |s|j        | _        t          |dd            t          || j        | j                   	  ||            t          || j                   d S # t          || j                   w xY w)Nr   )&maybe_wrap_pytest_function_for_tracing)resultusepdbtearDownc                     d S rX   rY   )argss    r/   rZ   z*TestCaseFunction.runtest.<locals>.<lambda>W  s    D r8   )_pytest.debuggingr   r   r
   r   r   r   r,   r?   config	getoptionr   r   setattrr   delattr)r6   r   r   rK   s       r/   rO   zTestCaseFunction.runtest@  sA   LLLLLL=###..t444 TX&& 	-HD!!!!!! dk<88888!$(++K{4;?/K/KG{$$X.. Bw B*2*;'*.@.@AAA Hdi222-%%%%$),,,,,$),,,,s   D Dr   *_pytest._code.ExceptionInfo[BaseException]_pytest._code.Tracebackc                t    t                                          |          } |j        d           }|s|}|S )Nc                B    | j         j                            d           S )N
__unittest)frame	f_globalsrI   )rN   s    r/   rZ   z4TestCaseFunction._traceback_filter.<locals>.<lambda>f  s    !'+//=== r8   )r   _traceback_filterfilter)r6   r   r   
ntracebackr   s       r/   r   z"TestCaseFunction._traceback_filtera  sK     GG--g66	%Y%==
 

  	#"Jr8   ry   )r   r   r!   rR   )r   r   r!   rR   )r   r   r   r   r!   rR   )r   r   rn   r   r!   rR   )r   )r   r   r   r   rn   r   r!   rR   rX   )r   r   rn   r   r!   rR   )r   r   r   r   r!   rR   )r   r   r!   r   )r   r   r}   r   r   __annotations__r   propertyr   rp   rq   r   r   r   r   r   r   r   r   r   r   rO   r   __classcell__)r   s   @r/   rH   rH      s        JHLHLLLL* * *   X     
        !A !A !A !AF% % % %% % % %
- - - - 		- 	- 	- 	- 	- 6:- - - - -         - - - -B	 	 	 	 	 	 	 	 	 	r8   rH   T)tryfirstitemr   callCallInfo[None]rR   c                   t          | t                    r:| j        r3| j                            d          |_        	 |`n# t          $ r Y nw xY wt          j        	                    d          }|rd|j        r_t          |j        j
        |j                  rB|j        t          d                              fd|j                  }|j        |_        d S d S d S d S )Nr   r$   c                 P    t          j        t           j                            S rX   )rm   r   r   r   )r   s   r/   rZ   z+pytest_runtest_makereport.<locals>.<lambda>  s    FKGM 2 233 r8   )r   rH   r   popr   r   AttributeErrorr%   r&   rI   r   SkipTestr   	from_callwhen)r   r   r$   call2r   s       @r/   pytest_runtest_makereportr   m  s    $()) = 	=,,Q//DLKK!    {z**H %DL %Z0BHDU%V%V %,((3333TY
 
 }% % % % % %s   A 
AAF)wrapperGenerator[None, object, object]c              #  N  K   t          | t                    rdt          j        v rzt          j        d         }|j        j        t          sddlm} ddl	m
}  |t          |           da	 dfd	}||j        _        	 d V }|j        _        n# |j        _        w xY wd V }|S )	Nr=   ztwisted.python.failurer   )	IReporter)classImplementsTc                    |t          j                    | _        n|t          |          }|||f| _        	  | ||||           d S # t          $ r  | |||           Y d S w xY w)N)captureVars)r%   r   r   rQ   r   )r6   	exc_valueexc_typeexc_tbr   Failure__init__s        r/   excstorez)pytest_runtest_protocol.<locals>.excstore  s      #&<>>  ##IH$,i#@ C)Xv;       C C Ci6BBBBBBCs   A A'&A')NNNN)r   rH   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.U+67*-& 	+666666666666O,i888&*# KO	C 	C 	C 	C 	C 	C  '
	2%%C"1BJ/BJ1111eeJs   ?B Bboolc                >    t          t          | dd                    S )zDReturn True if the given object has been marked with @unittest.skip.__unittest_skip__F)r  r>   r4   s    r/   r?   r?     s    0%88999r8   )r   r   r   r   r   r    r!   r"   )r   r   r   r   r!   rR   )r   r   r!   r   )r!   r  )8__doc__
__future__r   collections.abcr   r   r   r*   r%   r   typestypingr   r   r	   _pytest._coder   _pytest.compatr
   _pytest.configr   _pytest.fixturesr   _pytest.nodesr   r   _pytest.outcomesr   r   r   r   _pytest.pythonr   r   r   _pytest.runnerr   rm   version_infoexceptiongroupr   r$   twisted.trial.unittesttwistedtuplerQ   r   TracebackTyper   r0   r,   rH   r   r  r  r?   rY   r8   r/   <module>r     s)   : : " " " " " " $ $ $ $ $ $ % % % % % % $ $ $ $ $ $  



                                  , , , , , , # # # # # # + + + + + + # # # # # #       ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! " " " " " "             # # # # # # ! ! ! ! ! ! # # # # # #  BQB'!!------ "OOO!!!! 	$}
}e.A
AB	
C C C C(@
 @
 @
 @
 @
5 @
 @
 @
Fb b b b bx b b bJ 
4% % % %.    
$# # # #L: : : : : :r8   