
    yIf<              	          d 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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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         Z.dee"e f         de/d e0d!e
d"         fd#Z1 G d$ d"e           Z2 G d% d&e!          Z3 ed'(          d)ed*e$d         d!dfd+            Z4d,a5 ed'-          d)ed!ede0e0f         fd.            Z6d!e7fd/Z8dS )0z4Discover and run std-library "unittest" style tests.    N)Any)Callable)	Generator)Iterable)List)Optional)Tuple)Type)TYPE_CHECKING)Union)is_async_function)hookimpl)FixtureRequest)	Collector)Item)exit)fail)skip)xfail)Class)Function)Module)CallInfo   )      )ExceptionGroupNNN	collectornameobjreturnUnitTestCasec                     	 t           j        d         }t          ||j                  sd S n# t          $ r Y d S w xY wt
                              | ||          S )Nunittest)r    r!   )sysmodules
issubclassTestCase	Exceptionr#   from_parent)r   r    r!   uts       D/var/www/piapp/venv/lib/python3.11/site-packages/_pytest/unittest.pypytest_pycollect_makeitemr.   1   sp    [$#r{++ 	4	   tt ##IDc#BBBs   ', 
::c                   `    e Zd ZdZd Zdeeeef                  fdZ	de
ddfdZde
ddfdZdS )	r#   Tc                 ,    |                      d          S )NrunTestr!   selfs    r-   newinstancezUnitTestCase.newinstanceE   s     xx	"""    r"   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    r1   twisted.trial.unittest)r%   r8   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   r8   clsskippedloaderfoundsomethingr    xruntestr,   s
             r-   collectzUnitTestCase.collectM   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""!?!?r6   rG   Nc                 ,   t          dd          t          dd          dS t          dd           dfddt          dt          d	         f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 rT   r6   r-   <lambda>zEUnitTestCase._register_unittest_setup_class_fixture.<locals>.<lambda>s   s    $ r6   r"   c                      t          dd           } | sd S d | D             }t          |          dk    r|d         t          d|          )NtearDown_exceptionsc                     g | ]\  }}}|	S rT   rT   ).0_excs      r-   
<listcomp>zlUnitTestCase._register_unittest_setup_class_fixture.<locals>.process_teardown_exceptions.<locals>.<listcomp>{   s    ;;;+1c1#;;;r6      r   zUnittest class cleanup errors)r;   lenr   )	exc_infos
exceptionsrG   s     r-   process_teardown_exceptionszXUnitTestCase._register_unittest_setup_class_fixture.<locals>.process_teardown_exceptionsu   se      %:DAAI ;;;;;J :!## m#$%DjQQQr6   requestr   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)rG   r<   __unittest_skip_why__pytestr   r*   )rb   rG   reasoncleanupra   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    funcrC   scopeautouser"   Nr;   r   r   r@   rA   _register_fixture__qualname__rC   )r4   rG   rl   ri   ra   rj   rk   s    ` @@@@r-   r>   z3UnitTestCase._register_unittest_setup_class_fixturel   s     \400366=X-4#0,,??	R 	R 	R 	R 	R 	R	.#	.'(	. 	. 	. 	. 	. 	. 	. 	. 	.0 	$66C1ACC-; 	7 	
 	
 	
 	
 	
r6   c                     t          |dd          t          |dd          dS dt          dt          d         f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_methodrb   r"   r   c              3      K   | j         }t          |          r(|j        }t          j                            |d           || j                   d V   || j                   d S d S rd   )instancer<   rf   rg   r   r*   function)rb   r4   rh   rj   rk   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 $#r6   _unittest_setup_method_fixture_r|   Tro   rt   )r4   rG   r}   rj   rk   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 	1 	1 	$66E33CEE.; 	7 	
 	
 	
 	
 	
r6   )__name__
__module__rv   
nofuncargsr5   r   r   r   r   rM   typer>   r=   rT   r6   r-   r#   r#   @   s         J# # #M%i"89 M M M M>6
$ 6
4 6
 6
 6
 6
p
4 
D 
 
 
 
 
 
r6   c            	           e Zd ZU dZdZeeej        j	        e
                           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eddfdZ	 d"d	d
dddeddfdZ	 d#d	d
ded         ddfdZddZddZd	d
deddfdZddZdej        j	        e
         dej        j        f fdZ xZ S )$rE   TN_excinfoc                 x    t          | j        t                    sJ | j                            | j                  S rS   )
isinstanceparentr#   r!   r    r3   s    r-   _getinstancezTestCaseFunction._getinstance   s0    $+|44444{ty)))r6   c                     | j         S rS   )r{   r3   s    r-   	_testcasezTestCaseFunction._testcase   s
    }r6   r"   c                 V    d | _         t                                                       d S rS   )_explicit_tearDownsuperrj   r4   	__class__s    r-   rj   zTestCaseFunction.setup   s     @Dr6   c                     t                                                       | j        |                                  d | _        d | _        d S rS   )r   rk   r   _objr   s    r-   rk   zTestCaseFunction.teardown   sG    ".##%%%&*D#			r6   testcaseunittest.TestCasec                     d S rS   rT   r4   r   s     r-   	startTestzTestCaseFunction.startTest       r6   
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)r4   r   excinforZ   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 )Nr]   )r   r   r*   msgr   r   r4   r   r   s      r-   addErrorzTestCaseFunction.addError  so    	*Q-88 (Z]&''' 	 	 	D	$$$$$s   := 
A
	A
c                 0    |                      |           d S rS   )r   r   s      r-   
addFailurezTestCaseFunction.addFailure  s     	$$$$$r6   rh   c                     	 t           j                            |d          # t          j        $ r* |                     t	          j                               Y d S w xY wrd   )rg   r   r*   r   r&   exc_info)r4   r   rh   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rS   )r   strr*   r   r&   r   )r4   r   r   rh   s       r-   addExpectedFailurez#TestCaseFunction.addExpectedFailure  sa    	-#f++ 	- 	- 	-S\^^,,,,,,	-s     5AAztwisted.trial.unittest.Todoc                     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   )rh   r   r*   r   r&   r   )r4   r   rh   r   s       r-   addUnexpectedSuccessz%TestCaseFunction.addUnexpectedSuccess#  s    
 # 	(''''C	-e$$$$$$~ 	- 	- 	-S\^^,,,,,,	-s   & 5AAc                     d S rS   rT   r   s     r-   
addSuccesszTestCaseFunction.addSuccess1  r   r6   c                     d S rS   rT   r   s     r-   stopTestzTestCaseFunction.stopTest4  r   r6   elapsedc                     d S rS   rT   )r4   r   r   s      r-   addDurationzTestCaseFunction.addDuration7  r   r6   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 rS   rT   )argss    r-   rU   z*TestCaseFunction.runtest.<locals>.<lambda>Q  s    D r6   )_pytest.debuggingr   r{   r   r!   r   r   r#   r<   config	getoptionr   r   setattrr    delattr)r4   r   r   rH   s       r-   rL   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   c                 t    t                                          |          } |j        d           }|s|}|S )Nc                 B    | j         j                            d           S )N
__unittest)frame	f_globalsrF   )rK   s    r-   rU   z4TestCaseFunction._traceback_filter.<locals>.<lambda>`  s    !'+//=== r6   )r   _traceback_filterfilter)r4   r   r   
ntracebackr   s       r-   r   z"TestCaseFunction._traceback_filter[  sK     GG--g66	%Y%==
 

  	#"Jr6   rs   )r   r   r"   N)r   r   r"   N)r   r   r   r   r"   N)r   rS   )!r   r   rv   r   r   r   r   r   r   r   r   __annotations__r   propertyr   rj   rk   r   r   r   r   r   r   r   r   r   r   floatr   rL   	Tracebackr   __classcell__)r   s   @r-   rE   rE      s        JKOHhtGM7FGHOOO* * *   X     
        !A !A !A !AF%+%9J%	% % % %%+%9J%	% % % %
- 3 -S -T - - - - 		- 	-%	- &	- 		-
 
	- 	- 	- 	- ;?- -%- 67- 
	- - - -      $7 % D    - - - -B	}2=A			 	 	 	 	 	 	 	 	 	 	r6   rE   T)tryfirstitemcallc                    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 rS   )rg   r   r   r   )r   s   r-   rU   z+pytest_runtest_makereport.<locals>.<lambda>y  s    FKGM 2 233 r6   )r   rE   r   popr   r   AttributeErrorr&   r'   rF   r   SkipTestr   	from_callwhen)r   r   r%   call2r   s       @r-   pytest_runtest_makereportr   g  s    $()) = 	=,,Q//DLKK!    {z**H %DL %Z0BHDU%V%V %,((3333TY
 
 }% % % % % %s   A 
AAF)wrapperc              #   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   r   r   )r4   	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   rE   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c                 >    t          t          | dd                    S )zDReturn True if the given object has been marked with @unittest.skip.__unittest_skip__F)boolr;   r2   s    r-   r<   r<     s    0%88999r6   )9__doc__r&   r   typestypingr   r   r   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   objectr.   r#   rE   r   r   r   r   r<   rT   r6   r-   <module>r     s   : : 



                                                                            , , , , , , # # # # # # + + + + + + # # # # # #       ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! " " " " " "             # # # # # # ! ! ! ! ! ! # # # # # #  BQB'!!------ OOO!!!!d=!=%2EEF	!OCVU]#C+.C5;CnC C C C@
 @
 @
 @
 @
5 @
 @
 @
Fa a a a ax a a aH 
4%D % %4 % % % %.    
$#$ #9T665I+J # # # #L: : : : : : :r6   