
    i_                       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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(m*Z* ddl(m+Z+ ddl,m-Z- ddl,m.Z. ddl/m0Z0 ddl/m1Z1 ej2        d	d          d!k     rdd"l3m4Z4 erdd#lm5Z5 dd	lZdd	l6Z7e8e9e:         e:ej5        f         e8d$         z  Z;dHd-Z< G d. d/e)          Z= G d0 d1e*          Z> ed23          dId9            Z?dJd;Z@dKd<ZA G d= d>e
          ZBdLd?ZCd@ZD ed2A          dMdC            ZEdNdGZFd	S )Oz4Discover and run std-library "unittest" style tests.    )annotations)Callable)	Generator)Iterable)Iterator)auto)EnumN)Any)TYPE_CHECKING)TestCase)ExceptionInfo)assert_never)is_async_function)hookimpl)FixtureRequest)MonkeyPatch)	Collector)Item)exit)fail)skip)xfail)Class)Function)Module)CallInfo)check_interactive_exception)SubtestContext)SubtestReport         )ExceptionGroup)TracebackType)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
issubclassr   	Exceptioninspect
isabstractUnitTestCasefrom_parent)r&   r(   r*   uts       M/root/projects/qq-shell/venv/lib/python3.11/site-packages/_pytest/unittest.pypytest_pycollect_makeitemr:   :   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 )r6   Tc                ,    |                      d          S )NrunTestr*   selfs    r9   newinstancezUnitTestCase.newinstanceS   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(   r=   twisted.trial.unittest)r/   rE   r*   getattr_is_skipped'_register_unittest_setup_method_fixture&_register_unittest_setup_class_fixture_register_setup_class_fixturesession_fixturemanagerparsefactoriesrA   nodeidgetTestCaseNamesTestCaseFunctionr7   r0   r1   getr   r=   )
r@   rE   clsskippedloaderfoundsomethingr(   xruntestr8   s
             r9   collectzUnitTestCase.collect[   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""!?!?rB   rT   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 rc   rB   r9   <lambda>zEUnitTestCase._register_unittest_setup_class_fixture.<locals>.<lambda>   s    $ rB   r,   r\   c                     t          dd           } | sd S d | D             }t          |          dk    r|d         t          d|          )NtearDown_exceptionsc                    g | ]\  }}}|	S rc   rc   ).0_excs      r9   
<listcomp>zlUnitTestCase._register_unittest_setup_class_fixture.<locals>.process_teardown_exceptions.<locals>.<listcomp>   s    ;;;+1c1#;;;rB      r   zUnittest class cleanup errors)rH   lenr$   )	exc_infos
exceptionsrT   s     r9   process_teardown_exceptionszXUnitTestCase._register_unittest_setup_class_fixture.<locals>.process_teardown_exceptions   se      %:DAAI ;;;;;J :!## m#$%DjQQQrB   requestr   Generator[None]c              3  P  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)rT   rI   __unittest_skip_why__r   r3   )rq   rT   reasoncleanuprp   setupteardowns      r9   unittest_setup_class_fixturezYUnitTestCase._register_unittest_setup_class_fixture.<locals>.unittest_setup_class_fixture   s       +C3 F2nVEEEE EGGGG !   GIII//111 EEE.'HJJJ			++----- 			++----s   
A  A%-B B%_unittest_setUpClass_fixture_classTr(   funcrP   scopeautouser,   r\   rq   r   r,   rr   rH   rM   rN   _register_fixture__qualname__rP   )r@   rT   r{   rx   rp   ry   rz   s    ` @@@@r9   rK   z3UnitTestCase._register_unittest_setup_class_fixturez   s     \400366=X-4#0,,??	R 	R 	R 	R 	R 	R	. 	. 	. 	. 	. 	. 	. 	. 	.0 	$66C1ACC-; 	7 	
 	
 	
 	
 	
rB   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_methodrq   r   r,   rr   c              3     K   | j         }t          |          r|j        }t          j        |d           || j                   d V   || j                   d S d S rt   )instancerI   rv   r   r3   function)rq   r@   rw   ry   rz   s      r9   unittest_setup_method_fixturez[UnitTestCase._register_unittest_setup_method_fixture.<locals>.unittest_setup_method_fixture   s       #D4   F3nVEEEE dG,---EEE#w/00000 $#rB   _unittest_setup_method_fixture_r   Tr~   r   r   )r@   rT   r   ry   rz   s      @@r9   rJ   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 	
 	
 	
 	
 	
rB   N)r,   rC   )rT   r[   r,   r\   )__name__
__module__r   
nofuncargsrA   rZ   rK   rJ   rc   rB   r9   r6   r6   N   sk         J# # #M M M M>6
 6
 6
 6
p
 
 
 
 
 
rB   r6   c                       e Zd ZU dZdZdZded<   d Zed             Z	d1 fd
Z
d1 fdZd2dZd3dZd4dZd4dZddd5dZ	 d6d7dZ	 d8d9dZd2dZd2dZd:d"Zd1d#Zd; fd'Zd<d.Zd=d0Z xZS )>rR   TFNz7list[_pytest._code.ExceptionInfo[BaseException]] | None_excinfoc                x    t          | j        t                    sJ | j                            | j                  S rb   )
isinstanceparentr6   r*   r(   r?   s    r9   _getinstancezTestCaseFunction._getinstance   s0    $+|44444{ty)))rB   c                    | j         S rb   )r   r?   s    r9   	_testcasezTestCaseFunction._testcase   s
    }rB   r,   r\   c                    d | _         t                                                       t          j        dk     r	d | _        d S d S )Nr!   )_explicit_tearDownsuperry   r0   version_info_cached_errors_and_skipsr@   	__class__s    r9   ry   zTestCaseFunction.setup   sD    =Ag%% QUD))) &%rB   c                    | j         |                                   d | _         d | _        | `t                                                       d S rb   )r   _obj	_instancer   rz   r   s    r9   rz   zTestCaseFunction.teardown   sN    ".##%%%&*D#	NrB   testcaseunittest.TestCasec                    d S rb   rc   r@   r   s     r9   	startTestzTestCaseFunction.startTest       rB   
rawexcinfo_SysExcInfoTypec                   t          |          }	 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 )Nr   zCNOTE: Incompatible Exception Representation, displaying natively:

 Fpytracez6ERROR: Unknown Incompatible Exception representation:
r   )_handle_twisted_exc_info_pytest_coder   BaseExceptionfrom_exc_infovalue	traceback	TypeErrorformat_exceptioninsertr   joinr3   KeyboardInterruptfrom_current__dict__
setdefaultappend)r@   r   excinfori   valuess        r9   _addexcinfozTestCaseFunction._addexcinfo   s   -j99
	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 )Nrl   )r   r   r3   msgr   r   r@   r   r   s      r9   addErrorzTestCaseFunction.addError  so    	*Q-88 (Z]&''' 	 	 	D	$$$$$s   := 
A
	A
c                0    |                      |           d S rb   )r   r   s      r9   
addFailurezTestCaseFunction.addFailure   s     	$$$$$rB   handle_subtestsrw   r)   r   boolc                   ddl m} d fd}|s |             d S t          ||          r> |              j        + j        d         }                     |j        ||           d S d S t          j        dk     rD j        j	        8 
                                \  }}t          |          dk    r |             d S d S  |             d S )	Nr   _SubTestr,   r\   c                     	 t          j         d          # t           j        $ r*                     t          j                               Y d S w xY wrt   )r   r3   r   r0   exc_info)rw   r@   s   r9   add_skipz*TestCaseFunction.addSkip.<locals>.add_skip*  s]    1nVEEEE> 1 1 1  0000001s    5AAr!   r   )unittest.caser   r   r   
addSubTest	test_caser0   r   r   _outcome_obtain_errors_and_skipsrm   )	r@   r   rw   r   r   r   r   subtest_errorsri   s	   ` `      r9   addSkipzTestCaseFunction.addSkip%  s    	+*****	1 	1 	1 	1 	1 	1 	1  	HJJJFh)) 	HJJJ}(=, 2HhGGGGG )( '))dm.D.P$($A$A$C$C!~&&!++HJJJJJ ,+ 




rB   r   c                    	 t          t          |                     d S # t           j        $ r* |                     t	          j                               Y d S w xY wrb   )r   r)   r3   r   r0   r   )r@   r   r   rw   s       r9   addExpectedFailurez#TestCaseFunction.addExpectedFailureF  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   )rw   r   r3   r   r0   r   )r@   r   rw   r   s       r9   addUnexpectedSuccessz%TestCaseFunction.addUnexpectedSuccessQ  s    
 # 	(''''C	-e$$$$$$~ 	- 	- 	-S\^^,,,,,,	-s   & 5AAc                    d S rb   rc   r   s     r9   
addSuccesszTestCaseFunction.addSuccess_  r   rB   c                    d S rb   rc   r   s     r9   stopTestzTestCaseFunction.stopTestb  r   rB   elapsedfloatc                    d S rb   rc   )r@   r   r   s      r9   addDurationzTestCaseFunction.addDuratione  r   rB   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 rb   rc   )argss    r9   rd   z*TestCaseFunction.runtest.<locals>.<lambda>  s    D rB   )_pytest.debuggingr   r   r   r*   r   r   r6   rI   config	getoptionr   r   setattrr(   delattr)r@   r   r   rU   s       r9   rY   zTestCaseFunction.runtesth  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_globalsrS   )rX   s    r9   rd   z4TestCaseFunction._traceback_filter.<locals>.<lambda>  s    !'+//=== rB   )r   _traceback_filterfilter)r@   r   r   
ntracebackr   s       r9   r   z"TestCaseFunction._traceback_filter  sK     GG--g66	%Y%==
 

  	#"JrB   r   r
   testr   r   ^ExceptionInfo[BaseException] | tuple[type[BaseException], BaseException, TracebackType] | Nonec           	     h   ddl m} |xt          d x\    t          |d          }n+ xxt          d x\   n xn n  |}n}t	          |           t          d          d |ddddd          }|j        |u rd nt          |j                  }| j        	                    | |          }	t          j        |	t          |t          |j                  	          d d 
          }
| j                            |
           t!          ||
          r| j                            | ||
           t$          j        dk     ro|                                 \  }}t+          |          dk    rGt+          |          dk    r6|d         }||d         u r&|D ]%\  }}|                     ||d           d S d S d S d S d S )Nr   )_subtest_msg_sentinelrc   T)	_ispytestcall)startstopdurationwhenr  )itemr  )r   kwargs)captured_outputcaptured_logs)report)noder  r  r!   r   Fr   )r   r   tupler   r   r   _messager)   ihookpytest_runtest_makereportr   _newr   dictparamspytest_runtest_logreportr   pytest_exception_interactr0   r   r   rm   r   )r@   r   r   r   r   exception_infounreachable	call_infor   r  
sub_reportr   non_subtest_skiplast_subset_errorr   rw   s                   r9   r   zTestCaseFunction.addSubTest  s<    	877777 !.x4!H!H!H '4444444!)[)))TN
 
 
	 m'<<<dd#dmBTBT554i5PP"'s4+<+<=== 	
 
 

 	
++:+>>>&y*== 	J00	* 1   
 g%%/3/L/L/N/N,N, #$$q((S-@-@1-D-D$22$6!0444,< N N(&XvuMMMM &%
 )(-D-D 54N NrB   tuple[list[Any], list[Any]]c                    ddl m t          j        dk     s
J d            | j        | j        S fd| j        j        j        D             }fd| j        j        j        D             }||f| _        ||fS )zMCompute or obtain the cached values for subtest errors and non-subtest skips.r   r   r!   z2This workaround only should be used in Python 3.10Nc                B    g | ]\  }}t          |          r|||fS rb   r   rh   rX   yr   s      r9   rk   z=TestCaseFunction._obtain_errors_and_skips.<locals>.<listcomp>  sB     
 
 
1!X&&
 ,-= F+8==rB   c                >    g | ]\  }}t          |          ||fS rc   r  r   s      r9   rk   z=TestCaseFunction._obtain_errors_and_skips.<locals>.<listcomp>  sA     
 
 
1a**
F
 
 
rB   )	r   r   r0   r   r   r   r   errorsrU   )r@   r   non_subtest_skipsr   s      @r9   r   z)TestCaseFunction._obtain_errors_and_skips  s    ******')))@ *)) (400
 
 
 
.5
 
 

 
 
 
.6
 
 

 *89J(K%000rB   r   )r   r   r,   r\   )r   r   r,   r\   )r   r   r   r   r,   r\   )r   r   rw   r)   r   r   r,   r\   )r   )r   r   r   r   rw   r)   r,   r\   rb   )r   r   rw   r   r,   r\   )r   r   r   r   r,   r\   )r   r   r,   r   )r   r
   r   r   r   r   r,   r\   )r,   r  )r   r   r   r   failfastr   __annotations__r   propertyr   ry   rz   r   r   r   r   r   r   r   r   r   r   rY   r   r   r   __classcell__)r   s   @r9   rR   rR      s        JHHLHLLLL* * *   XU U U U U U         A  A  A  AD% % % %% % % % TX     J 		- 	- 	- 	- 	- 6:- - - - -         - - - -B	 	 	 	 	 	8N 8N 8N 8Nt1 1 1 1 1 1 1 1rB   rR   T)tryfirstr  r   r  CallInfo[None]r\   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                 F    t          t           j                            S rb   )r   r)   r   )r   s   r9   rd   z+pytest_runtest_makereport.<locals>.<lambda>  s    c'-6H6H1I1I rB   )r   rR   r   popr   r   AttributeErrorr0   r1   rS   r   SkipTestr   	from_callr  )r  r  r/   call2r   s       @r9   r  r    s    $()) = 	=,,Q//DLKK!   
 {z**H %DL %Z0BHDU%V%V %,(()I)I)I)I49UU}% % % % % %s   A 
AAr   c                >    t          t          | dd                    S )zDReturn True if the given object has been marked with @unittest.skip.__unittest_skip__F)r   rH   r>   s    r9   rI   rI     s    0%88999rB   c                 x    t                      t          j        urddlm}  ddlm}  |t          |            dS dS )zRRegister the TestCaseFunction class as an IReporter if twisted.trial is available.r   )	IReporter)classImplementsN)_get_twisted_versionTwistedVersionNotInstalledtwisted.trial.itrialr5  zope.interfacer6  rR   )r5  r6  s     r9   pytest_configurer<    s\    ^%@@@222222222222()44444	 A@rB   c                  N    e Zd ZdZ e            Z e            Z e            ZdS )r8  z
    The Twisted version installed in the environment.

    We have different workarounds in place for different versions of Twisted.
    N)r   r   r   __doc__r   	Version24	Version25r9  rc   rB   r9   r8  r8    s;          II466LLLrB   r8  c                     dt           j        vrt          j        S dd l} dd l}| j                            d          }|j                            |          }|j	        dk    rt          j
        S t          j        S )NrG   r   twisted   )r0   r1   r8  r9  importlib.metadatapackaging.versionmetadataversionparsemajorr?  r@  )	importlib	packagingversion_strrG  s       r9   r7  r7    s}      s{22**$,,Y77K%%k22G}''''rB   _twisted_raw_excinfo)wrapperIterator[None]c              #    K   t                      t          j        u ridd lmc m} |j        j        	 dfd	}t          j	                    5 }|
                    |j        d|           d V cd d d            S # 1 swxY w Y   d S d V S )Nr   c                <   |t          j                    }n1|t          |          }|t          j                    d         }|||f}t          | t          t          |                     	  | ||||           d S # t          $ r  | |||           Y d S w xY w)Nr    )captureVars)r0   r   r[   r   TWISTED_RAW_EXCINFO_ATTRr  r   )r@   	exc_valueexc_typeexc_tbrR  raw_exc_infooriginal__init__s         r9   store_raw_exception_infoz9pytest_runtest_protocol.<locals>.store_raw_exception_info8  s      "|~~##IH> \^^A.F ()V<D2E,4G4GHHHD  )Xv;       D D D  y(FCCCCCCDs   -A? ?BB__init__)NNNN)r7  r8  r?  twisted.python.failurepythonfailureFailurerZ  r   contextr   )r  r8   rY  patcherrX  s       @r9   pytest_runtest_protocolra  0  s     !999+++++++++ :. KO	D 	D 	D 	D 	D 	D&  "" 	gOOBJ
4LMMMEE	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 s    A::A>A>r   _SysExcInfoType | BaseExceptionr   c                   t                      }|t          j        u r| S |t          j        u rCt	          | t
                    r,t          | t
                    }t          | t
                     |S | S |t          j        u rxt          | t                    raddl}t          | |j        j        j                  r>| j        }|t!          j                    d         }t%          | j                  | j        |fS | S J d|             )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.
    r   Nr    FzUnexpected Twisted version: )r7  r8  r9  r?  hasattrrS  rH   r   r@  r   r   r[  r\  r]  r^  __traceback__r0   r   r[   r   )r   twisted_versionsaved_exc_inforB  tbs        r9   r   r   R  s    +,,O.555 	N4	4	4 :788 	"$Z1IJJNJ 8999!!	N4	4	4j-00 	D))))*gn&<&DEE D-:*BJ,--z/?CC 	GF_FFFFFrB   )r&   r'   r(   r)   r*   r+   r,   r-   )r  r   r  r*  r,   r\   )r,   r   r   )r,   r8  )r  r   r,   rO  )r   rb  r,   r   )Gr>  
__future__r   collections.abcr   r   r   r   enumr   r	   r4   r0   r   typestypingr
   r   r/   r   _pytest._coder   r   _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.unittestrB  r  r[   r   r   r:   r6   rR   r  rI   r<  r8  r7  rS  ra  r   rc   rB   r9   <module>rz     s;   : : " " " " " " $ $ $ $ $ $ % % % % % % $ $ $ $ $ $ $ $ $ $ $ $              



                                  ' ' ' ' ' ' ' ' ' ' ' ' , , , , , , # # # # # # + + + + + + + + + + + + # # # # # #       ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! " " " " " "             # # # # # # ! ! ! ! ! ! # # # # # # 6 6 6 6 6 6 + + + + + + * * * * * * BQB'!!------ "######OOO!!!! 
$}
}e.A
AB C C C C(@
 @
 @
 @
 @
5 @
 @
 @
FS1 S1 S1 S1 S1x S1 S1 S1l 
4% % % %$: : : :
5 5 5 5    T   ( ( ( (, 2  
$   B&G &G &G &G &G &GrB   