
    "d              
       ~   U 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
mZmZ d dlZd dlZd dlmZ ddlmZmZ ddlmZ erd d	lmZ dae
e         ed
<   dedeeeeef         f         fdZededeeef         de	eedf         fd            Zd$dZdededdfdZ ej         d          dedededdfd            Z! ej         d          dede
e"         fd            Z# ej$         e                      dedefd             Z%ej$        d!edefd"            Z&ej$        d!edeeef         fd#            Z'dS )%    )contextmanager)isasyncgenfunctioniscoroutinefunction)TYPE_CHECKINGAnyDict	GeneratorOptionalTuplecastN)FixtureRequest   )get_all_backendsget_asynclib)
TestRunner)Config_current_runnerbackendreturnc                    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    7D:\api_v1\venv\Lib\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_namebackend_optionsc              #     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   c                 2    |                      dd           d S )NmarkerszManyio: mark the (coroutine function) test to be run asynchronously via anyio.)addinivalue_line)r.   s    r   pytest_configurer2   6   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)r7   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r7   r7   )r<   r   r   fixturenamesargnames)r3   r4   r>   r<   r=   s      @@r   pytest_fixture_setuprB   >   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 )rI   N)rE   ).0markers     r   	<genexpr>z,pytest_pycollect_makeitem.<locals>.<genexpr>\   s)      NNV[G3NNNNNNr    r7   )istestfunctionhasattrrH   
inner_testr   get_closest_markergetattranypytestmarkusefixtures)rD   rE   rF   
inner_funcrM   own_markerss         r   pytest_pycollect_makeitemrZ   U   s    T** >29#|2L2LUS^..RU
z** 	>11'::F!#|R88K >NN+NNNNN >''88=====> >	> 	>> >r    
pyfuncitemc                 ,   dt           dd f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   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_hypothesisb   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::r7   rH   c                 "    i | ]}||         S r$   r$   )rL   argfuncargss     r   
<dictcomp>z&pytest_pyfunc_call.<locals>.<dictcomp>u   s    WWWsXc]WWWr    T)r   rd   r'   r   rP   rF   rH   rQ   __qualname__r   _fixtureinforA   r-   r_   )	r[   ra   r   testargsr,   r!   r"   rd   r`   s	        @@@@r   pytest_pyfunc_callri   `   s   3c 3d 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   DDD)paramsc                     | j         S r^   )param)r4   s    r   r7   r7   ~   s
    =r    r7   c                 @    t          | t                    r| S | d         S )Nr   r   r   r?   s    r   anyio_backend_namero      s%    -%%  Qr    c                 @    t          | t                    ri S | d         S )Nr   rn   r?   s    r   anyio_backend_optionsrq      s$    -%%  	Qr    )r.   r   r   N)(
contextlibr   inspectr   r   typingr   r   r   r	   r
   r   r   rU   r%   _pytest.fixturesr   _core._eventloopr   r   abcr   _pytest.configr   r   __annotations__objectr   r   r-   r2   rB   hookimplrZ   boolri   fixturer7   ro   rq   r$   r    r   <module>r~      s   % % % % % % % ; ; ; ; ; ; ; ; M M M M M M M M M M M M M M M M M M   + + + + + + < < < < < < < <       &%%%%%%(,*% , , ,X XE#tCH~:M4N X X X X <<(,S#X<z64'(< < < <2   :S :> :d : : : :. $> >C >c >d > > >  > $3 8D>     : ''))***3 3    +*  c  c            c3h            r    