
    ՟f                       U d dl mZ d dlZd dlmZ d dlmZmZ d dl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mZ dd
lmZ ddlmZ ej2                  dk  rd dlmZ daded<   daded<   d addZ e	 	 	 	 	 	 d d       Z!d!dZ"d"dZ# ejH                  d      d#d       Z% ejH                  d      d$d       Z& ejN                  d e             d%d       Z(ejN                  d&d       Z)ejN                  d'd       Z*y)(    )annotationsN)Iterator)	ExitStackcontextmanager)isasyncgenfunctioniscoroutinefunction)Anycast)Exit   )get_all_backendsget_async_backend)iterate_exceptions)
TestRunner)      )ExceptionGroupzTestRunner | None_current_runnerzExitStack | None_runner_stackc                   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	   	TypeError)backends    N/var/www/cvtools/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         t        |       }t               at        j
                  j                  d       Mt        j
                  j                  |       }t        j                  t        j
                  j                  |       |xs i }t        j                  |j                  |            a t        dz  a	 t          t        dz  at        s!t        J t        j                          d xaa y y # t        dz  at        s!t        J t        j                          d xaa w w xY wwNr   )r   r   r   r   sniffiocurrent_async_library_cvargetsetcallbackresetenter_contextcreate_test_runner_runner_leasesclose)backend_namebackend_optionsasynclibtokens       r   
get_runnerr2   #   s    
 $\2!--11$7? 66::<HE""7#E#E#K#KUS)/R'55''8
 aN3! ,,,!.22MO  	! ,,,!.22MO s   B;D,>C7 1D,72D))D,c                (    | j                  dd       y )NmarkerszManyio: mark the (coroutine function) test to be run asynchronously via anyio.)addinivalue_line)configs    r   pytest_configurer7   A   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    r2   r   run_asyncgen_fixturerun_fixture)r:   argskwargsr.   r/   runnerfunchas_backend_args         r   wrapperz%pytest_fixture_setup.<locals>.wrapperJ   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r:   r:   )r@   r   r   fixturenamesargnames)
fixturedefrequestrB   r@   rA   s      @@r   pytest_fixture_setuprH   I   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
pytestmark c              3  :   K   | ]  }|j                   d k(    yw)rL   N)name).0markers     r   	<genexpr>z,pytest_pycollect_makeitem.<locals>.<genexpr>g   s     NV[[G3Ns   r:   )istestfunctionhasattrrK   
inner_testr   get_closest_markergetattranypytestmarkusefixtures)	collectorrP   obj
inner_funcrR   own_markerss         r   pytest_pycollect_makeitemra   `   s    T*29#|2LS^^..RU
z*11':F!#|R8KN+NN''8= O + +r!   c           	       	
 d	
fd}| j                   j                  d      }|r t        |      \  	
t        | j                  d      r`| j                  j
                  j                  j                  |j                  k7  r&t              r|| j                  j
                  _        y t        | j                        rg| j                   }| j                  j                  D ci c]  }|||   
 }}t        	
      5 }	 |j                  | j                  |       	 d d d        yy c c}w # t        $ r4}t        |      D ]   }t        |t         t"        t$        f      s||  d }~ww xY 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)r2   run_test)r>   r?   r.   r/   original_funcs     r   run_with_hypothesisz/pytest_pyfunc_call.<locals>.run_with_hypothesism   s2    o6 	3&OOM62	3 	3 	3s   *3r:   rK   T)r>   r	   returnNone)funcargsr&   r    rU   r^   rK   rV   __qualname__r   _fixtureinforE   r2   re   r   r   r   r   KeyboardInterrupt
SystemExit)
pyfuncitemrg   r   rj   argtestargsr?   excgrpexcr.   r/   rf   s            @@@r   pytest_pyfunc_callrt   k   sQ   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OOJNNH=  X & 1&9 2%cD2CZ+PQ"%612  s6   'D+E0D00	E-9)E(#E((E--E00E9module)scopeparamsc                    | j                   S rd   )param)rG   s    r   r:   r:      s    ==r!   c                0    t        | t              r| S | d   S )Nr   r   r   rC   s    r   anyio_backend_namer|      s    -%Qr!   c                0    t        | t              ri S | d   S r#   r{   rC   s    r   anyio_backend_optionsr~      s    -%	Qr!   )r   objectrh   ztuple[str, dict[str, Any]])r.   r   r/   dict[str, Any]rh   zIterator[TestRunner])r6   r	   rh   ri   )rF   r	   rG   r	   rh   ri   )r]   r	   rP   r	   r^   r	   rh   ri   )ro   r	   rh   zbool | None)rG   r	   rh   r	   )r:   r	   rh   r   )r:   r	   rh   r   )+
__future__r   syscollections.abcr   
contextlibr   r   inspectr   r   typingr	   r
   rZ   r$   _pytest.outcomesr   _core._eventloopr   r   _core._exceptionsr   abcr   version_infoexceptiongroupr   r   __annotations__r   r,   r    r2   r7   rH   hookimplra   rt   fixturer:   r|   r~   rN   r!   r   <module>r      s%   " 
 $ 0 ;    ! A 1 g-%)" )"& &X 33(633 3::. $>  > $!  !H h'7'9: ;        r!   