
     @g                       U d dl mZ d dlmZ d dlmZmZ d dlmZm	Z	m
Z
mZmZ d dlZd dlZddlmZmZ ddlmZ dad	ed
<   d+dZed,d            Zd-dZd.dZ ej        d          d/d"            Z ej        d          d0d%            Z ej         e            &          d1d'            Zej        d2d)            Zej        d3d*            Z dS )4    )annotations)contextmanager)isasyncgenfunctioniscoroutinefunction)AnyDict	GeneratorTuplecastN   )get_all_backendsget_asynclib)
TestRunnerzTestRunner | None_current_runnerbackendobjectreturntuple[str, dict[str, Any]]c                   t          | t                    r| i fS t          | t                    rt          |           dk    rot          | d         t                    rTt          | d         t                    r9t          t          t          t          t          t          f         f         |           S t          d          )N   r   r   z@anyio_backend must be either a string or tuple of (string, dict))

isinstancestrtuplelendictr   r
   r   r   	TypeError)r   s    G/var/www/piapp/venv/lib/python3.11/site-packages/anyio/pytest_plugin.pyextract_backend_and_optionsr      s    '3 ={	GU	#	# =G(9(9gaj#&& 	=:gaj$+G+G 	=c4S>12G<<<
V
W
WW    backend_namer   backend_optionsdict[str, Any]#Generator[TestRunner, object, None]c              #    K   t           rt           V  d S t          |           }d }t          j                            d           t          j                            |           }	 |pi } |j        di |5 }|a |V  d d d            n# 1 swxY w Y   d a |r!t          j                            |           d S d S # d a |r t          j                            |           w w xY w)N )r   r   sniffiocurrent_async_library_cvargetsetr   reset)r    r!   asynclibtokenrunners        r   
get_runnerr.      sP     
  L))HE)--d33;266|DD<)/R X 33?33 	v$OLLL	 	 	 	 	 	 	 	 	 	 	 	 	 	 	  	<.44U;;;;;	< 	<  	<.44U;;;;	<s0   %B; 6B	=B; 	BB; BB; ;&C!configr   Nonec                2    |                      dd           d S )NmarkerszManyio: mark the (coroutine function) test to be run asynchronously via anyio.)addinivalue_line)r/   s    r   pytest_configurer4   4   s,    
	$    r   
fixturedefrequestc                    fd}| j         t                    st                    r/d|j        v r$d| j        v || _         s| xj        dz  c_        d S d S d S d S )Nc              ?    K   t          |           \  }}r| |d<   t          ||          5 }t                    r|                    |          E d {V  n|                    |          V  d d d            d S # 1 swxY w Y   d S )Nanyio_backend)r   r.   r   run_asyncgen_fixturerun_fixture)r9   argskwargsr    r!   r-   funchas_backend_args         r   wrapperz%pytest_fixture_setup.<locals>.wrapper=   s      (CM(R(R%o 	4&3F?#o66 	7&!$'' 7!66tVDDDDDDDDDD((v66666		7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7s   AA??BBr9   r9   )r>   r   r   fixturenamesargnames)r5   r6   r@   r>   r?   s      @@r   pytest_fixture_setuprD   <   s    	7 	7 	7 	7 	7 	7 ?D$ :#6t#<#< :g222-1DDO%JO" :##'99####	 32: :: :r   T)tryfirst	collectornameobjc                h   |                      ||          rt          |d          r|j        j        n|}t	          |          rl|                     d          }t          |dd          }|st          d |D                       r-t          j	        
                    d          |           d S d S d S d S )N
hypothesisanyio
pytestmarkr%   c              3  ,   K   | ]}|j         d k    V  dS )rK   N)rG   ).0markers     r   	<genexpr>z,pytest_pycollect_makeitem.<locals>.<genexpr>Z   s)      NNV[G3NNNNNNr   r9   )istestfunctionhasattrrJ   
inner_testr   get_closest_markergetattranypytestmarkusefixtures)rF   rG   rH   
inner_funcrO   own_markerss         r   pytest_pycollect_makeitemr\   S   s    T** >29#|2L2LUS^..RU
z** 	>11'::F!#|R88K >NN+NNNNN >''88=====> >	> 	>> >r   
pyfuncitembool | Nonec                   d
fd}| j                             d          }|rt          |          \  t          | j        d          rC| j        j        j        j        |j        k    r t                    r|| j        j        _        d S t          | j                  rd| j         fd| j	        j
        D             }t                    5 }|                    | j        |           d d d            n# 1 swxY w Y   d	S d S )Nr=   r   r   r0   c                     t                    5 }|                    |            d d d            d S # 1 swxY w Y   d S N)r.   run_test)r=   r-   r    r!   original_funcs     r   run_with_hypothesisz/pytest_pyfunc_call.<locals>.run_with_hypothesis`   s    o66 	3&OOM6222	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3s   6::r9   rJ   c                "    i | ]}||         S r%   r%   )rN   argfuncargss     r   
<dictcomp>z&pytest_pyfunc_call.<locals>.<dictcomp>s   s    WWWsXc]WWWr   T)r=   r   r   r0   )rg   r(   r   rR   rH   rJ   rS   __qualname__r   _fixtureinforC   r.   rb   )	r]   rd   r   testargsr-   r    r!   rg   rc   s	        @@@@r   pytest_pyfunc_callrl   ^   ss   3 3 3 3 3 3 3 3 !%%o66G (CG(L(L%o:><00 	&N5@M)-@-MMM&}55 O;NJN-84z~.. 	!*HWWWWj6M6VWWWHL/:: :f
999: : : : : : : : : : : : : : : 44s   C>>DD)paramsc                    | j         S ra   )param)r6   s    r   r9   r9   |   s
    =r   r9   c                @    t          | t                    r| S | d         S )Nr   r   r   rA   s    r   anyio_backend_namerr      s%    -%%  Qr   c                @    t          | t                    ri S | d         S )Nr   rq   rA   s    r   anyio_backend_optionsrt      s$    -%%  	Qr   )r   r   r   r   )r    r   r!   r"   r   r#   )r/   r   r   r0   )r5   r   r6   r   r   r0   )rF   r   rG   r   rH   r   r   r0   )r]   r   r   r^   )r6   r   r   r   )r9   r   r   r   )r9   r   r   r"   )!
__future__r   
contextlibr   inspectr   r   typingr   r   r	   r
   r   rW   r&   _core._eventloopr   r   abcr   r   __annotations__r   r.   r4   rD   hookimplr\   rl   fixturer9   rr   rt   r%   r   r   <module>r~      s   " " " " " " " % % % % % % ; ; ; ; ; ; ; ; 4 4 4 4 4 4 4 4 4 4 4 4 4 4   < < < < < < < <      %) ) ) ) )X X X X < < < <2   : : : :. $> > >  > $    : ''))***   +*                    r   