a
    ^g8                     @  s  U d dl mZ d dlZd dlmZmZ d dlmZmZ d dl	m
Z
mZmZ d dlmZ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mZ d	dlmZ d	dlmZ ejdk rd dlmZ da de!d< da"de!d< d a#dddddZ$eddddddZ%ddd d!d"Z&ej'd#d$ddd%d&d'd(Z(ej'd#d)ddddd*d+d,Z)ej'd#d)dd-d.d/d0Z*ej+d1e d2ddd3d4d5Z,ej+ddd6d7d8Z-ej+ddd6d9d:Z.dS );    )annotationsN)	GeneratorIterator)	ExitStackcontextmanager)isasyncgenfunctioniscoroutinefunctionismethod)Anycast)
SubRequest)Exit   )get_all_backendsget_async_backend)iterate_exceptions)
TestRunner)      )ExceptionGroupzTestRunner | None_current_runnerzExitStack | None_runner_stackobjectztuple[str, dict[str, Any]])backendreturnc                 C  sj   t | tr| i fS t | tr^t| dkr^t | d tr^t | d tr^ttttttf f | S tdd S )N   r   r   z@anyio_backend must be either a string or tuple of (string, dict))
isinstancestrtuplelendictr   r
   	TypeError)r    r"   a/var/www/html/cobodadashboardai.evdpl.com/venv/lib/python3.9/site-packages/anyio/pytest_plugin.pyextract_backend_and_options   s    
r$   r   zdict[str, Any]zIterator[TestRunner])backend_namebackend_optionsr   c                 c  s   t d u rZt| }t atjd d u rBtj| }ttjj	| |pHi }t
||a td7 az2t V  W td8 atstd usJ t  d  aa n*td8 atstd usJ t  d  aa 0 d S Nr   )r   r   r   r   sniffioZcurrent_async_library_cvargetsetcallbackresetenter_contextZcreate_test_runner_runner_leasesclose)r%   r&   Zasynclibtokenr"   r"   r#   
get_runner$   s.    
r1   r
   None)configr   c                 C  s   |  dd d S )NmarkerszManyio: mark the (coroutine function) test to be run asynchronously via anyio.)Zaddinivalue_line)r3   r"   r"   r#   pytest_configureB   s    r5   T)ZhookwrapperzGenerator[Any])
fixturedefrequestr   c                 #  s   dddddd fdd}| j  t s4t rd|jv r|| _ | j}d| jv  sf|  jd7  _d| jv  s|  jd	7  _zd V W  | _ || _S  | _ || _0 d V S )
Nr
   r   )argsanyio_backendr7   kwargsr   c                 ?  s   |j r2t r2t jt|j u r2 j|j }n }t| \}}rN| |d< rZ||d< t||:}t|r|	||E d H  n|
||V  W d    n1 s0    Y  d S )Nr9   r7   )instancer	   type__self____func____get__r$   r1   r   Zrun_asyncgen_fixtureZrun_fixture)r9   r7   r8   r:   Z
local_funcr%   r&   runnerfuncZhas_backend_argZhas_request_argr"   r#   wrapperL   s"    z%pytest_fixture_setup.<locals>.wrapperr9   r9   r7   r7   )rB   r   r   Zfixturenamesargnames)r6   r7   rC   Zoriginal_argnamer"   rA   r#   pytest_fixture_setupJ   s(    
  rG   )Ztryfirst)	collectornameobjr   c                 C  sj   |  ||rft|dr|jjn|}t|rf| d}t|dd}|sVtdd |D rftj	
d| d S )N
hypothesisanyioZ
pytestmarkr"   c                 s  s   | ]}|j d kV  qdS )rL   N)rI   ).0markerr"   r"   r#   	<genexpr>       z,pytest_pycollect_makeitem.<locals>.<genexpr>r9   )ZistestfunctionhasattrrK   
inner_testr   Zget_closest_markergetattranypytestmarkZusefixtures)rH   rI   rJ   Z
inner_funcrN   Zown_markersr"   r"   r#   pytest_pycollect_makeitem}   s    
rW   zbool | None)
pyfuncitemr   c                   s(  ddd fdd}| j d}|r$t|\ t| jdrn| jjjj|jkrjtrj|| jj_d S t| jr$| j fdd	| j	j
D }t n}z|| j| W nJ ty } z2t|D ]}t|tttfr||q̂ W Y d }~n
d }~0 0 W d    n1 s0    Y  d
S d S )Nr
   r2   )r:   r   c                    s:   t  }||  W d    n1 s,0    Y  d S N)r1   run_test)r:   r@   )r%   r&   original_funcr"   r#   run_with_hypothesis   s    z/pytest_pyfunc_call.<locals>.run_with_hypothesisr9   rK   c                   s   i | ]}| | qS r"   r"   )rM   arg)funcargsr"   r#   
<dictcomp>   rP   z&pytest_pyfunc_call.<locals>.<dictcomp>T)r^   r)   r$   rQ   rJ   rK   rR   __qualname__r   Z_fixtureinforF   r1   rZ   r   r   r   r   KeyboardInterrupt
SystemExit)rX   r\   r   Ztestargsr@   Zexcgrpexcr"   )r%   r&   r^   r[   r#   pytest_pyfunc_call   s.    

8rd   module)scopeparams)r7   r   c                 C  s   | j S rY   )paramrE   r"   r"   r#   r9      s    r9   )r9   r   c                 C  s   t | tr| S | d S d S )Nr   r   r   rD   r"   r"   r#   anyio_backend_name   s    
rj   c                 C  s   t | tri S | d S d S r'   ri   rD   r"   r"   r#   anyio_backend_options   s    
rk   )/
__future__r   syscollections.abcr   r   
contextlibr   r   inspectr   r   r	   typingr
   r   rU   r(   Z_pytest.fixturesr   Z_pytest.outcomesr   Z_core._eventloopr   r   Z_core._exceptionsr   abcr   version_infoZexceptiongroupr   r   __annotations__r   r.   r$   r1   r5   ZhookimplrG   rW   rd   Zfixturer9   rj   rk   r"   r"   r"   r#   <module>   sB   


2


$