o
    Ú­jÙ9  ã                   @   sh  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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( 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"d#„Z1G d$d!„ d!e"ƒZ2de3d%e/d&e/d'e
e/ d(e(d)e4fd*d+„Z5G d,d-„ d-e#ƒZ6ed.d/�d0ed1e&d d dfd2d3„ƒZ7ed.d4�d0ed ed fd5d6„ƒZ8g fd7e	e9 d dfd8d9„Z:d e4fd:d;„Z;dS )<z4Discover and run std-library "unittest" style tests.é    N)ÚAny)ÚCallable)Ú	Generator)ÚIterable)ÚList)ÚOptional)ÚTuple)ÚType)ÚTYPE_CHECKING)ÚUnion)Ú	getimfunc)Úis_async_function)Úhookimpl)ÚFixtureRequest)Ú	Collector)ÚItem)Úexit)Úfail)Úskip)Úxfail)ÚClass)ÚFunction)ÚModule)ÚCallInfo)ÚScope©NNNÚ	collectorÚnameÚobjÚreturnÚUnitTestCasec                 C   sJ   zt jd }t||jƒsW d S W n
 ty   Y d S w tj| ||d�}|S )NÚunittest)r   r   )ÚsysÚmodulesÚ
issubclassÚTestCaseÚ	Exceptionr    Úfrom_parent)r   r   r   ÚutÚitem© r*   úM/var/www/html/CropPilot/venv/lib/python3.10/site-packages/_pytest/unittest.pyÚpytest_pycollect_makeitem,   s   
ÿÿr,   c                   @   s<   e Zd ZdZdeeeef  fdd„Zde	ddfdd„Z
dS )	r    Tr   c                 c   s  � ddl m} | j}t|ddƒsd S t|ƒ}|s!|  |¡ |  ¡  | jjj	| dd� |ƒ }d}| 
| j¡D ]}t| j|ƒ}t|ddƒsDq5t|ƒ}tj| ||d�V  d}q5|s|t| jdd ƒ}	|	d ur~tj d	d ¡}
|
d u sr|	|
jjkr€tj| dd
�V  d S d S d S d S )Nr   )Ú
TestLoaderÚ__test__T)r!   F)r   ÚcallobjÚrunTestútwisted.trial.unittest)r   )r!   r-   r   ÚgetattrÚ_is_skippedÚ_inject_setup_teardown_fixturesÚ_inject_setup_class_fixtureÚsessionÚ_fixturemanagerÚparsefactoriesÚgetTestCaseNamesr   ÚTestCaseFunctionr'   r"   r#   Úgetr%   r0   )Úselfr-   ÚclsÚskippedÚloaderÚfoundsomethingr   ÚxÚfuncobjÚruntestr(   r*   r*   r+   ÚcollectA   s8   €
úzUnitTestCase.collectr=   Nc                 C   sH   t |dddtjdd�}|r||_t |dddtjd	d�}|r"||_dS dS )
zxInjects a hidden auto-use fixture to invoke setUpClass/setup_method and corresponding
        teardown functions (#517).Ú
setUpClassÚtearDownClassÚdoClassCleanupsF)ÚscopeÚ	pass_selfÚsetup_methodÚteardown_methodNT)Ú_make_xunit_fixturer   r   Ú!_UnitTestCase__pytest_class_setupr   Ú"_UnitTestCase__pytest_method_setup)r<   r=   Úclass_fixtureÚmethod_fixturer*   r*   r+   r4   `   s*   úú
ÿz,UnitTestCase._inject_setup_teardown_fixtures)Ú__name__Ú
__module__Ú__qualname__Ú
nofuncargsr   r   r   r   rD   Útyper4   r*   r*   r*   r+   r    <   s    Ú
setup_nameÚteardown_nameÚcleanup_namerH   rI   c                    sŽ   t | |d ƒ‰t | |d ƒ‰ˆd u rˆd u rd S |r!t | |dd„ ƒ‰ ndd„ ‰ tj|jdd|› d| j› �d�d	td
td f‡ ‡‡‡fdd„ƒ}|S )Nc                  W   ó   d S ©Nr*   ©Úargsr*   r*   r+   Ú<lambda>ˆ   ó    z%_make_xunit_fixture.<locals>.<lambda>c                  W   rY   rZ   r*   r[   r*   r*   r+   Úcleanup‹   ó   z$_make_xunit_fixture.<locals>.cleanupTÚ
_unittest_Ú	_fixture_)rH   Úautouser   Úrequestr   r   c                 3   sÄ   � t | ƒr| j}tjj|dd�‚ˆd ur5zˆrˆ| |jƒ nˆƒ  W n ty4   ˆr0ˆ | ƒ ‚ ˆ ƒ  ‚ w d V  zˆd urIˆrFˆ| |jƒ nˆƒ  W ˆrRˆ | ƒ d S ˆ ƒ  d S ˆr^ˆ | ƒ w ˆ ƒ  w ©NT)Ú_use_item_location)r3   Ú__unittest_skip_why__Úpytestr   r&   Úfunction)r<   rd   Úreason©r_   rI   ÚsetupÚteardownr*   r+   ÚfixtureŽ   s<   €€þú€
ý
z$_make_xunit_fixture.<locals>.fixture)r2   rh   rn   ÚvaluerS   r   r   )r   rV   rW   rX   rH   rI   rn   r*   rk   r+   rL   z   s   ü" rL   c                	       sF  e Zd ZU dZdZeeejj	e
   ed< dZed ed< dd„ Zd-d	d
„Zd-dd„Zd.dd„Zd/dd„Z						d0dd„Z						d0dd„Zdddeddfdd„Z	d1dddddeddfdd„Z	d2ddded ddfdd „Zd.d!d"„Zd.d#d$„Zddd%eddfd&d'„Zd-d(d)„Zd*ejj	e
 dejjf‡ fd+d,„Z‡  ZS )3r:   TNÚ_excinfoúunittest.TestCaseÚ	_testcasec                 C   s   | j d usJ ‚t| j j| jƒS rZ   )Úparentr2   r   Úoriginalname©r<   r*   r*   r+   Ú_getobj¼   s   zTestCaseFunction._getobjr   c                 C   sP   d | _ | jd us
J ‚| j | j¡| _t| j| jƒ| _t| dƒr&| j 	¡  d S d S )NÚ_request)
Ú_explicit_tearDownrs   r   r   rr   r2   Ú_objÚhasattrrw   Ú_fillfixturesru   r*   r*   r+   rl   Å   s   
ÿzTestCaseFunction.setupc                 C   s(   | j d ur|   ¡  d | _ d | _d | _d S rZ   )rx   rr   ry   ru   r*   r*   r+   rm   Î   s
   

zTestCaseFunction.teardownÚtestcasec                 C   rY   rZ   r*   ©r<   r|   r*   r*   r+   Ú	startTestÕ   r`   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|f 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©Úpytracez8ERROR: Unknown Incompatible Exception representation:
%rrp   )r2   Ú_pytestÚ_codeÚExceptionInfoÚBaseExceptionÚfrom_exc_inforo   Ú	tracebackÚ	TypeErrorÚformat_exceptionÚinsertr   Újoinr&   ÚKeyboardInterruptÚfrom_currentÚ__dict__Ú
setdefaultÚappend)r<   r   ÚexcinfoÚvaluesr*   r*   r+   Ú_addexcinfoØ   sB   

þÿ
ýÿ€ÿ€ìzTestCaseFunction._addexcinfoc                 C   sD   zt |d tjƒrt|d jƒ W n	 ty   Y nw |  |¡ d S )Né   )Ú
isinstancer   r&   Úmsgr‹   r–   ©r<   r|   r   r*   r*   r+   ÚaddErrorù   s   €ÿzTestCaseFunction.addErrorc                 C   s   |   |¡ d S rZ   )r–   rš   r*   r*   r+   Ú
addFailure  s   zTestCaseFunction.addFailurerj   c                 C   s6   zt jj|dd�‚ tjy   |  t ¡ ¡ Y d S w re   )rh   r   r&   r–   r"   Úexc_info)r<   r|   rj   r*   r*   r+   ÚaddSkip  s
   ÿzTestCaseFunction.addSkipr‚   c                 C   s8   z	t t|ƒƒ W d S  t jy   |  t ¡ ¡ Y d S w rZ   )r   Ústrr&   r–   r"   r�   )r<   r|   r   rj   r*   r*   r+   ÚaddExpectedFailure  s
   ÿz#TestCaseFunction.addExpectedFailureztwisted.trial.unittest.Todoc                 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ƒ   )rj   r   r&   r–   r"   r�   )r<   r|   rj   r™   r*   r*   r+   ÚaddUnexpectedSuccess  s   ÿz%TestCaseFunction.addUnexpectedSuccessc                 C   rY   rZ   r*   r}   r*   r*   r+   Ú
addSuccess'  r`   zTestCaseFunction.addSuccessc                 C   rY   rZ   r*   r}   r*   r*   r+   ÚstopTest*  r`   zTestCaseFunction.stopTestÚelapsedc                 C   rY   rZ   r*   )r<   r|   r¤   r*   r*   r+   ÚaddDuration-  r`   zTestCaseFunction.addDurationc              	   C   sÒ   ddl m} | jd usJ ‚|| ƒ t| jƒr| j| d� d S t| jtƒs&J ‚t| jƒp0t| jjƒ}| j	 
d¡rG|sG| jj| _t| jddd„ ƒ t| j| j| jƒ z| j| d� W t| j| jƒ d S t| j| jƒ w )Nr   )Ú&maybe_wrap_pytest_function_for_tracing)ÚresultÚusepdbÚtearDownc                  W   rY   rZ   r*   r[   r*   r*   r+   r]   G  r^   z*TestCaseFunction.runtest.<locals>.<lambda>)Ú_pytest.debuggingr¦   rr   r   r   r˜   rs   r    r3   ÚconfigÚ	getoptionr©   rx   Úsetattrr   Údelattr)r<   r¦   r>   r*   r*   r+   rC   0  s   
	
"zTestCaseFunction.runtestr”   c                    s&   t ƒ  |¡}| dd„ ¡}|s|}|S )Nc                 S   s   | j j d¡ S )NÚ
__unittest)ÚframeÚ	f_globalsr;   )rA   r*   r*   r+   r]   V  ó    z4TestCaseFunction._traceback_filter.<locals>.<lambda>)ÚsuperÚ_traceback_filterÚfilter)r<   r”   rŠ   Ú
ntraceback©Ú	__class__r*   r+   r´   Q  s   ÿz"TestCaseFunction._traceback_filter)r   N)r|   rq   r   N)r   r€   r   N)r|   rq   r   r€   r   N)r‚   rZ   ) rQ   rR   rS   rT   rp   r   r   r…   r†   r‡   rˆ   Ú__annotations__rr   rv   rl   rm   r~   r–   r›   rœ   rŸ   rž   r    r¡   r¢   r£   Úfloatr¥   rC   Ú	Tracebackr´   Ú__classcell__r*   r*   r·   r+   r:   ·   sf   
 
	
	

!ÿÿ
þ
ÿÿ
þ
üþýü
ûýþý
ü


!
ÿþr:   T)Útryfirstr)   Úcallc                    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 rZ   )rh   r   rŸ   ro   r*   ©r”   r*   r+   r]   s  r²   z+pytest_runtest_makereport.<locals>.<lambda>)r˜   r:   rp   Úpopr”   r§   ÚAttributeErrorr"   r#   r;   ro   ÚSkipTestr   Ú	from_callÚwhen)r)   r¾   r!   Úcall2r*   r¿   r+   Úpytest_runtest_makereport]  s*   
ÿÿþýÿ÷rÆ   )Úhookwrapperc                 #   sb   � t | tƒr,dtjv r,tjd }|jj‰ tƒ  	 d‡ fdd„	}||j_d V  ˆ |j_d S d V  d S )Nr1   ztwisted.python.failurec                    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�   rU   r‹   )r<   Ú	exc_valueÚexc_typeÚexc_tbrÈ   ©ÚFailure__init__r*   r+   Úexcstore‚  s   
ÿÿz)pytest_runtest_protocol.<locals>.excstore)NNNN)r˜   r:   r"   r#   ÚFailureÚ__init__Ú(check_testcase_implements_trial_reporter)r)   r(   rÎ   r*   rÌ   r+   Úpytest_runtest_protocol{  s   €
ÿ
rÒ   Údonec                 C   s8   | rd S ddl m} ddlm} |t|ƒ |  d¡ d S )Nr   )ÚclassImplements)Ú	IReporterr—   )Úzope.interfacerÔ   Útwisted.trial.itrialrÕ   r:   r“   )rÓ   rÔ   rÕ   r*   r*   r+   rÑ   ™  s   
rÑ   c                 C   s   t t| ddƒƒS )zDReturn True if the given object has been marked with @unittest.skip.Ú__unittest_skip__F)Úboolr2   )r   r*   r*   r+   r3   £  s   r3   )<Ú__doc__r"   rŠ   ÚtypesÚtypingr   r   r   r   r   r   r   r	   r
   r   Ú_pytest._coder…   rh   Ú_pytest.compatr   r   Ú_pytest.configr   Ú_pytest.fixturesr   Ú_pytest.nodesr   r   Ú_pytest.outcomesr   r   r   r   Ú_pytest.pythonr   r   r   Ú_pytest.runnerr   Ú_pytest.scoper   r!   Útwisted.trial.unittestÚtwistedrˆ   ÚTracebackTyper€   rŸ   Úobjectr,   r    rU   rÙ   rL   r:   rÆ   rÒ   ÚintrÑ   r3   r*   r*   r*   r+   Ú<module>   sŒ    ÿÿ
ÿÿÿ
þ>ÿþýüû
ú= '
