
    +h                       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j4                  d      dd       Z ej4                  d      dd       Z ej:                   e             dd       Zej:                  dd       Zej:                  dd       Z y)     )annotations)contextmanager)isasyncgenfunctioniscoroutinefunction)AnyDict	GeneratorTuplecastN   )get_all_backendsget_asynclib)
TestRunnerzTestRunner | None_current_runnerc                   t        | t              r| i fS t        | t              r^t        |       dk(  rPt        | d   t              r=t        | d   t              r*t        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)backends    F/var/www/html/venv/lib/python3.12/site-packages/anyio/pytest_plugin.pyextract_backend_and_optionsr      sq    '3{	GU	#G(9gaj#&:gaj$+Gc4S>12G<<
V
WW    c              #    K   t         r	t          y t        |       }d }t        j                  j	                  d       t        j                  j                  |       }	 |xs i } |j                  di |5 }|a | d d d        d a |r t        j                  j                  |       y y # 1 sw Y   .xY w# d a |r t        j                  j                  |       w w xY ww)N )r   r   sniffiocurrent_async_library_cvargetsetr   reset)backend_namebackend_optionsasynclibtokenrunners        r   
get_runnerr)      s     
 L)HE))--d3;2266|D<)/R X  3?3 	v$OL	 ..44U; 	 	 ..44U; s6   ACB6 6B*=B6 %C*B3/B6 6&CCc                (    | j                  dd       y )NmarkerszManyio: mark the (coroutine function) test to be run asynchronously via anyio.)addinivalue_line)configs    r   pytest_configurer.   4   s    
	$r   c                    fd}| j                   t              st              r=d|j                  v r.d| j                  v || _         s| xj                  dz  c_        y y y y )Nc              ?     K   t        |       \  }}r| |d<   t        ||      5 }t              r|j                  |      E d {    n|j	                  |       d d d        y 7 "# 1 sw Y   y xY ww)Nanyio_backend)r   r)   r   run_asyncgen_fixturerun_fixture)r1   argskwargsr$   r%   r(   funchas_backend_args         r   wrapperz%pytest_fixture_setup.<locals>.wrapper=   s}     (CM(R%o&3F?#o6 	7&!$'!66tVDDD((v66		7 	7D	7 	7s.   "A7!A+A)A+ 	A7)A++A40A7r1   r1   )r6   r   r   fixturenamesargnames)
fixturedefrequestr8   r6   r7   s      @@r   pytest_fixture_setupr>   <   sl    	7 ??D$#6t#<g222-1D1DDO%JO"##'99# # 3 $=r   T)tryfirstc                8   | j                  ||      rt        |d      r|j                  j                  n|}t	        |      rX| j                  d      }t        |dd      }|st        d |D              r%t        j                  j                  d      |       y y y y )N
hypothesisanyio
pytestmarkr   c              3  :   K   | ]  }|j                   d k(    yw)rB   N)name).0markers     r   	<genexpr>z,pytest_pycollect_makeitem.<locals>.<genexpr>Z   s     NV[[G3Ns   r1   )istestfunctionhasattrrA   
inner_testr   get_closest_markergetattranypytestmarkusefixtures)	collectorrE   obj
inner_funcrG   own_markerss         r   pytest_pycollect_makeitemrV   S   s    T*29#|2LS^^..RU
z*11':F!#|R8KN+NN''8= O + +r   c                r  	 d	fd}| j                   j                  d      }|rt        |      \  t        | j                  d      r`| j                  j
                  j                  		j                  |j                  k7  r&t        	      r|| j                  j
                  _        y t        | j                        re| j                   }| j                  j                  D ci c]  }|||   
 }}t              5 }|j                  | j                  |       d d d        yy c c}w # 1 sw Y   yxY w)Nc                 l    t              5 }|j                  |        d d d        y # 1 sw Y   y xY wN)r)   run_test)r5   r(   r$   r%   original_funcs     r   run_with_hypothesisz/pytest_pyfunc_call.<locals>.run_with_hypothesis`   s2    o6 	3&OOM62	3 	3 	3s   *3r1   rA   T)r5   r   returnNone)funcargsr!   r   rJ   rS   rA   rK   __qualname__r   _fixtureinfor;   r)   rZ   )

pyfuncitemr\   r   r_   argtestargsr(   r$   r%   r[   s
          @@@r   pytest_pyfunc_callre   ^   s   3 !!%%o6G(CG(L%o:>><0&NN55@@M))-@-M-MM&}5;NJNN--8z~~.!**H6@6M6M6V6VWsXc]*WHWL/: :f
9:  X: s   &D(D--D6)paramsc                    | j                   S rY   )param)r=   s    r   r1   r1   |   s    ==r   c                0    t        | t              r| S | d   S )Nr   r   r   r9   s    r   anyio_backend_namerk      s    -%Qr   c                0    t        | t              ri S | d   S )Nr   rj   r9   s    r   anyio_backend_optionsrm      s    -%	Qr   )r   objectr]   ztuple[str, dict[str, Any]])r$   r   r%   dict[str, Any]r]   z#Generator[TestRunner, object, None])r-   r   r]   r^   )r<   r   r=   r   r]   r^   )rR   r   rE   r   rS   r   r]   r^   )rb   r   r]   zbool | None)r=   r   r]   r   )r1   r   r]   r   )r1   r   r]   ro   )!
__future__r   
contextlibr   inspectr   r   typingr   r   r	   r
   r   rO   r   _core._eventloopr   r   abcr   r   __annotations__r   r)   r.   r>   hookimplrV   re   fixturer1   rk   rm   r   r   r   <module>ry      s    " % ; 4 4   < %)" )X <<(6<(< <2:. $>  > $  : ')* +        r   