o
    rh<                     @  s  d 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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 rddl(m)Z) erddl*Z*ddl+Z,eeee- e-ej.f ed f Z/d<d%d&Z0G d'd( d(e!Z1G d)d* d*e"Z2ed+d,d=d2d3Z3d4a4ed+d5d>d7d8Z5d?d:d;Z6dS )@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)NNN	collectorModule | ClassnamestrobjobjectreturnUnitTestCase | Nonec                 C  sT   zt jd }t||jsW d S W n
 ty   Y d S w t|r"d S tj| ||dS )Nunittest)r   r    )	sysmodules
issubclassTestCase	Exceptioninspect
isabstractUnitTestCasefrom_parent)r   r   r    ut r/   N/var/www/html/alpaca_bot/venv/lib/python3.10/site-packages/_pytest/unittest.pypytest_pycollect_makeitem3   s   

r1   c                   @  s6   e Zd ZdZdd ZdddZdddZdddZdS )r,   Tc                 C  s
   |  dS )NrunTestr    selfr/   r/   r0   newinstanceL   s   
zUnitTestCase.newinstancer"   Iterable[Item | Collector]c           
      c  s   ddl m} | j}t|ddsd S t|}|s&| | | | |   | jj	
|  | j | }d}|| jD ]}t| j|}t|ddsKq<tj| |dV  d}q<|s~t| jdd }|d urtjdd }	|	d u st||	jjkrtj| ddV  d S d S d S d S )	Nr   )
TestLoader__test__TF)r   r2   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parsefactoriesr6   nodeidgetTestCaseNamesTestCaseFunctionr-   r%   r&   getr(   r2   )
r5   r8   clsskippedloaderfoundsomethingr   xruntestr.   r/   r/   r0   collectT   s8   

zUnitTestCase.collectrG   typeNonec                   s   t ddt dddu rdu rdS t ddd  dfd	d
d fdd}| jjjdj || jddd dS )zSRegister an auto-use fixture to invoke setUpClass and
        tearDownClass (#517).
setUpClassNtearDownClassdoClassCleanupsc                   S     d S Nr/   r/   r/   r/   r0   <lambda>z       zEUnitTestCase._register_unittest_setup_class_fixture.<locals>.<lambda>r"   rO   c                    s@   t  dd } | s
d S dd | D }t|dkr|d td|)NtearDown_exceptionsc                 S  s   g | ]\}}}|qS r/   r/   ).0_excr/   r/   r0   
<listcomp>   s    zlUnitTestCase._register_unittest_setup_class_fixture.<locals>.process_teardown_exceptions.<locals>.<listcomp>   r   zUnittest class cleanup errors)r;   lenr   )	exc_infos
exceptions)rG   r/   r0   process_teardown_exceptions|   s   
zXUnitTestCase._register_unittest_setup_class_fixture.<locals>.process_teardown_exceptionsrequestr   Generator[None]c                 3  s    | j }t|r|j}tjj|ddd ur+z  W n ty*         w d V  zd ur?  W      d S W      d S      w NT)_use_item_location)rG   r<   __unittest_skip_why__pytestr   r)   )ra   rG   reason)cleanupr`   setupteardownr/   r0   unittest_setup_class_fixture   s0   


zYUnitTestCase._register_unittest_setup_class_fixture.<locals>.unittest_setup_class_fixture_unittest_setUpClass_fixture_classTr   funcrC   scopeautouser"   rO   ra   r   r"   rb   r;   r@   rA   _register_fixture__qualname__rC   )r5   rG   rk   r/   )rh   rG   r`   ri   rj   r0   r>   s   s   

z3UnitTestCase._register_unittest_setup_class_fixturec                   sb   t |dd t |dd du rdu rdS d fdd	}| jjjd
|j || jddd dS )zWRegister an auto-use fixture to invoke setup_method and
        teardown_method (#517).setup_methodNteardown_methodra   r   r"   rb   c                 3  s\    | j }t|r|j}tjj|dd d ur || j d V  d ur,|| j d S d S rc   )instancer<   re   rf   r   r)   function)ra   r5   rg   ri   rj   r/   r0   unittest_setup_method_fixture   s   z[UnitTestCase._register_unittest_setup_method_fixture.<locals>.unittest_setup_method_fixture_unittest_setup_method_fixture_rz   Trn   rs   rt   )r5   rG   r|   r/   r{   r0   r=      s   

z4UnitTestCase._register_unittest_setup_method_fixtureN)r"   r7   )rG   rN   r"   rO   )__name__
__module__rv   
nofuncargsr6   rM   r>   r=   r/   r/   r/   r0   r,   G   s    

8r,   c                      s   e Zd ZU dZdZded< dd Zedd Zd4 fddZ	d4 fddZ
d5ddZd6ddZd7ddZd7ddZd8ddZ	d9d:d d!Z	d;d<d#d$Zd5d%d&Zd5d'd(Zd=d+d,Zd4d-d.Zd> fd2d3Z  ZS )?rE   TNz7list[_pytest._code.ExceptionInfo[BaseException]] | None_excinfoc                 C  s   t | jtsJ | j| jS rT   )
isinstanceparentr,   r    r   r4   r/   r/   r0   _getinstance   s   zTestCaseFunction._getinstancec                 C  s   | j S rT   )ry   r4   r/   r/   r0   	_testcase   s   zTestCaseFunction._testcaser"   rO   c                   s   d | _ t   d S rT   )_explicit_tearDownsuperri   r4   	__class__r/   r0   ri      s   zTestCaseFunction.setupc                   s0   | j d ur|    d | _ d | _| `t   d S rT   )r   _obj	_instancer   rj   r4   r   r/   r0   rj      s   
zTestCaseFunction.teardowntestcaseunittest.TestCasec                 C  rS   rT   r/   r5   r   r/   r/   r0   	startTest      zTestCaseFunction.startTest
rawexcinfo_SysExcInfoTypec                 C  s   t |d|}ztjjt |}|j}|j}W nV tym   z5ztj	| }|
dd td|dd W n tjtfy@     tyQ   td|dd Y nw W n ty[     tjyj   tjj }Y nw Y n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)r5   r   excinforY   valuesr/   r/   r0   _addexcinfo   sF   


zTestCaseFunction._addexcinfoc                 C  sD   zt |d tjrt|d j W n	 ty   Y nw | | d S )Nr\   )r   r   r)   msgr   r   r5   r   r   r/   r/   r0   addError  s   zTestCaseFunction.addErrorc                 C  s   |  | d S rT   )r   r   r/   r/   r0   
addFailure  s   zTestCaseFunction.addFailurerg   r   c                 C  s6   zt jj|dd tjy   | t  Y d S w rc   )rf   r   r)   r   r%   exc_info)r5   r   rg   r/   r/   r0   addSkip  s
   zTestCaseFunction.addSkipr   c                 C  s8   z	t t| W d S  t jy   | t  Y d S w rT   )r   r   r)   r   r%   r   )r5   r   r   rg   r/   r/   r0   addExpectedFailure   s
   z#TestCaseFunction.addExpectedFailure"twisted.trial.unittest.Todo | Nonec                 C  sP   d}|r|d|j  7 }z	t|dd W d S  tjy'   | t  Y d S w )NzUnexpected successz: Fr   )rg   r   r)   r   r%   r   )r5   r   rg   r   r/   r/   r0   addUnexpectedSuccess+  s   z%TestCaseFunction.addUnexpectedSuccessc                 C  rS   rT   r/   r   r/   r/   r0   
addSuccess9  r   zTestCaseFunction.addSuccessc                 C  rS   rT   r/   r   r/   r/   r0   stopTest<  r   zTestCaseFunction.stopTestelapsedfloatc                 C  rS   rT   r/   )r5   r   r   r/   r/   r0   addDuration?  r   zTestCaseFunction.addDurationc              	   C  s   ddl m} | j}|d usJ ||  t| jr|| d d S t| jts'J t| jp1t| jj}| j	
drF|sF|j| _t|ddd  t|| j| j z|| d W t|| j d S t|| j w )Nr   )&maybe_wrap_pytest_function_for_tracing)resultusepdbtearDownc                  W  rS   rT   r/   )argsr/   r/   r0   rU   Y  rV   z*TestCaseFunction.runtest.<locals>.<lambda>)_pytest.debuggingr   ry   r   r    r   r   r,   r<   config	getoptionr   r   setattrr   delattr)r5   r   r   rH   r/   r/   r0   rL   B  s   
	zTestCaseFunction.runtestr   *_pytest._code.ExceptionInfo[BaseException]_pytest._code.Tracebackc                   s&   t  |}|dd }|s|}|S )Nc                 S  s   | j jd S )N
__unittest)frame	f_globalsrF   )rK   r/   r/   r0   rU   h      z4TestCaseFunction._traceback_filter.<locals>.<lambda>)r   _traceback_filterfilter)r5   r   r   
ntracebackr   r/   r0   r   c  s   z"TestCaseFunction._traceback_filterrr   )r   r   r"   rO   )r   r   r"   rO   )r   r   r   r   r"   rO   )r   r   rg   r   r"   rO   )r   )r   r   r   r   rg   r   r"   rO   rT   )r   r   rg   r   r"   rO   )r   r   r   r   r"   rO   )r   r   r"   r   )r~   r   rv   r   r   __annotations__r   propertyr   ri   rj   r   r   r   r   r   r   r   r   r   r   rL   r   __classcell__r/   r/   r   r0   rE      s,   
 



#







!rE   T)tryfirstitemr   callCallInfo[None]rO   c                   s   t | tr| jr| jd|_z|`W n	 ty   Y nw tj	d}|rF|jrHt |jj
|jrJ|j td   fdd|j}|j|_d S d S d S d S )Nr   r$   c                     s   t t jS rT   )rf   r   r   r   r/   r   r/   r0   rU     r   z+pytest_runtest_makereport.<locals>.<lambda>)r   rE   r   popr   r   AttributeErrorr%   r&   rF   r   SkipTestr   	from_callwhen)r   r   r$   call2r/   r   r0   pytest_runtest_makereporto  s    
r   F)wrapperGenerator[None, object, object]c                 #  s    t | trEdtjv rEtjd }|jj ts)ddlm} ddl	m
} |t| da	 d	 fdd	}||j_z
d V }W  |j_|S  |j_w d V }|S )
Nr:   ztwisted.python.failurer   )	IReporter)classImplementsTc                   sl   |d u r
t  | _n|d u rt|}|||f| _z | ||||d W d S  ty5    | ||| Y d S w )N)captureVars)r%   r   r   rN   r   )r5   	exc_valueexc_typeexc_tbr   Failure__init__r/   r0   excstore  s   
z)pytest_runtest_protocol.<locals>.excstore)NNNN)r   rE   r%   r&   Failure__init__classImplements_has_runtwisted.trial.itrialr   zope.interfacer   )r   r.   r   r   r   resr/   r   r0   pytest_runtest_protocol  s&   


r   boolc                 C  s   t t| ddS )zDReturn True if the given object has been marked with @unittest.skip.__unittest_skip__F)r   r;   r3   r/   r/   r0   r<     s   r<   )r   r   r   r   r    r!   r"   r#   )r   r   r   r   r"   rO   )r   r   r"   r   )r"   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   rf   version_infoexceptiongroupr   r$   twisted.trial.unittesttwistedr   TracebackTyper   r1   r,   rE   r   r   r   r<   r/   r/   r/   r0   <module>   sd   
  &&