
    i'                    4   % S SK Jr  S SKrS SKrS SKJrJrJr  S SKJ	r	J
r
  S SKJrJrJr  S SKJrJr  S SKrS SKrS SKJr  S SKJr  S	S
KJrJr  S	SKJr  S	SKJr  \R>                  S:  a  S SK J!r!  Sq"S\#S'   Sq$S\#S'   S q%S*S jr&\
      S+S j5       r'S,S jr(S-S jr)\RT                  " SS9S.S j5       r+\RT                  " SS9        S/S j5       r,\RT                  " SS9S0S j5       r-\R\                  " S\" 5       S9S1S j5       r/\R\                  S2S  j5       r0\R\                  S3S! j5       r1 " S" S#5      r2\R\                  " S$S%9S4S& j5       r3\R\                  " S$S%9S4S' j5       r4\R\                  S5S( j5       r5\R\                  S6S) j5       r6g)7    )annotationsN)Callable	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_stackc                F   [        U [        5      (       a  U 0 4$ [        U [        5      (       ai  [        U 5      S:X  aZ  [        U S   [        5      (       aB  [        U S   [        5      (       a*  [        [        [        [        [        [        4   4   U 5      $ [        S5      e)N   r   r   z@anyio_backend must be either a string or tuple of (string, dict))
isinstancestrtuplelendictr   r   	TypeError)backends    [/var/www/html/qgis-automation/mouza_env/lib/python3.13/site-packages/anyio/pytest_plugin.pyextract_backend_and_optionsr$      s}    '3{	GU	#	#G(9gaj#&&:gaj$+G+Gc4S>12G<<
V
WW    c              #    #    [         c  [        U 5      n[        5       q[        R
                  R                  S 5      cM  [        R
                  R                  U 5      n[        R                  [        R
                  R                  U5        U=(       d    0 n[        R                  UR                  U5      5      q [        S-  q [         v   [        S-  q[        (       d"  [        c   e[        R                  5         S =qq g g ! [        S-  q[        (       d"  [        c   e[        R                  5         S =qq f f = f7f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_runnerr6   %   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   CD?D 7D?8D<<D?c                (    U R                  SSSSS9  g )N
anyio_modestrictz-AnyIO plugin mode (either "strict" or "auto")string)defaulthelptype)addini)parsers    r#   pytest_addoptionr@   C   s    
MM<	  r%   c                   U R                  SS5        U R                  S5      S:X  a^  U R                  R                  S5      (       a=  U R                  S5      S:X  a'  U R	                  [
        R                  " S5      S5        g g g g )	NmarkerszManyio: mark the (coroutine function) test to be run asynchronously via anyio.r8   autoasyncioasyncio_modezlAnyIO auto mode has been enabled together with pytest-asyncio auto mode. This may cause unexpected behavior.r   )addinivalue_linegetinipluginmanager
has_pluginissue_config_time_warningpytestPytestConfigWarning)configs    r#   pytest_configurerN   L   s    
W
 	l#v-  ++I66MM.)V3((&&< 	
 4 7 	.r%   T)hookwrapperc              #    ^^^#    SUUU4S jjnU R                   m[        T5      (       d  [        T5      (       a  SUR                  ;   az  X l         U R                  nSU R                  ;   =m(       d  U =R                  S-  sl        SU R                  ;   =m(       d  U =R                  S-  sl         S v TU l         X0l        $ S v $ ! TU l         X0l        f = f7f)Nanyio_backendrequestc              ;    >#    UR                   (       aa  [        T5      (       aQ  [        TR                  5      [        UR                   5      L a&  TR                  R                  UR                   5      nOTn[        U 5      u  pET(       a  XS'   T	(       a  XS'   [        XE5       n[        U5      (       a  UR                  X25       S h  vN   OUR                  X25      v   S S S 5        g  N!! , (       d  f       g = f7f)NrQ   rR   )instancer   r=   __self____func____get__r$   r6   r	   run_asyncgen_fixturerun_fixture)
rQ   rR   kwargs
local_funcr2   r3   runnerfunchas_backend_arghas_request_args
          r#   wrapper%pytest_fixture_setup.<locals>.wrappera   s      T]]#tG,<,<'==..w/?/?@JJ(CM(R%&3?# '96&!*--!66zJJJ((<<	 76J 76s0   B#D &%C/C-C/$	D -C//
C=9D rQ   rR   )rQ   r   rR   r   rZ   r   returnr   )r]   r	   r
   fixturenamesargnames)
fixturedefrR   r`   original_argnamer]   r^   r_   s       @@@r#   pytest_fixture_setupri   _   s     = =4 ??D$#6t#<#<g222%O)22'6*:M:M'MMOM##'99#'0J4G4G'GGOG##|3#7"&
&6#N #'
&6#s   B/C5C
 8C
CC)tryfirstc                   U R                  X!5      (       a  [        US5      (       a  UR                  R                  OUn[	        U5      (       a  U R
                  R                  S5      S:H  nU R                  S5      n[        USS5      nU(       d  U(       d  [        S U 5       5      (       a&  [        R                  R                  S5      " U5        g g g g )	N
hypothesisr8   rC   anyio
pytestmark c              3  >   #    U  H  oR                   S :H  v   M     g7f)rm   N)name).0markers     r#   	<genexpr>,pytest_pycollect_makeitem.<locals>.<genexpr>   s     HK&{{g-Ks   rQ   )istestfunctionhasattrrl   
inner_testr
   rM   rG   get_closest_markergetattranyrK   markusefixtures)	collectorrq   obj
inner_funcanyio_auto_moders   own_markerss          r#   pytest_pycollect_makeitemr      s     **29#|2L2LS^^..RU
z**'..55lCvMO11':F!#|R8KHKHHH''8= I + +r%   c           	     >  ^	^
^ SU	U
U4S jjnU R                   R                  S5      nU(       Ga  [        U5      u  m	m
[        U R                  S5      (       ae  U R                  R
                  R                  mTR                  UR                  :w  a*  [        T5      (       a  XR                  R
                  l        g [        U R                  5      (       ah  U R                   nU R                  R                   Vs0 s H  oDX4   _M	     nn[        T	T
5       n UR                  U R                  U5         S S S 5        gg s  snf ! [         a:  n[        U5       H%  n[        U[         ["        [$        45      (       d  M%  Xe   e S nAff = f! , (       d  f       g= f)Nc                 v   > [        TT5       nUR                  TU 5        S S S 5        g ! , (       d  f       g = fN)r6   run_test)rZ   r\   r2   r3   original_funcs     r#   run_with_hypothesis/pytest_pyfunc_call.<locals>.run_with_hypothesis   s)    o6&OOM62 766s   *
8rQ   rl   T)rZ   r   rd   None)funcargsr*   r$   rw   r   rl   rx   __qualname__r
   _fixtureinforf   r6   r   r   r   r   r   KeyboardInterrupt
SystemExit)
pyfuncitemr   r"   r   argtestargsr\   excgrpexcr2   r3   r   s            @@@r#   pytest_pyfunc_callr      sV   3 3 !!%%o6G(CG(L%o:>><00&NN55@@M))-@-M-MM&}55;NNN--8z~~..!**H6@6M6M6V6VW6VsX]*6VHWL/:fOOJNNH= ;  X & 1&9%cD2CZ+PQQ"%1  :  ;: s6   =EFE
F,FFFF
Fmodule)scopeparamsc                    U R                   $ r   )paramrc   s    r#   rQ   rQ      s    ==r%   c                :    [        U [        5      (       a  U $ U S   $ )Nr   r   r   rb   s    r#   anyio_backend_namer      s     -%%Qr%   c                :    [        U [        5      (       a  0 $ U S   $ r'   r   rb   s    r#   anyio_backend_optionsr      s    -%%	Qr%   c                  D    \ rS rSrSrSS jr\S	S j5       rS
SS jjrSr	g)FreePortFactory   a+  
Manages port generation based on specified socket kind, ensuring no duplicate
ports are generated.

This class provides functionality for generating available free ports on the
system. It is initialized with a specific socket kind and can generate ports
for given address families while avoiding reuse of previously generated ports.

Users should not instantiate this class directly, but use the
``free_tcp_port_factory`` and ``free_udp_port_factory`` fixtures instead. For simple
uses cases, ``free_tcp_port`` and ``free_udp_port`` can be used instead.
c                >    Xl         [        [           " 5       U l        g r   )_kindr+   int
_generated)selfkinds     r#   __init__FreePortFactory.__init__   s    
c(*r%   c                    U R                   $ )z
The type of socket connection (e.g., :data:`~socket.SOCK_STREAM` or
:data:`~socket.SOCK_DGRAM`) used to bind for checking port availability

)r   )r   s    r#   r   FreePortFactory.kind   s     zzr%   Nc                x   Ub  U/nOE[         R                  /n[         R                  (       a  UR                  [         R                  5         Sn[        5        nU Hy  nUR                  [         R                   " XR                  5      5      nU[         R                  :X  a  SOSn UR                  Xc45        U(       a  Mf  UR                  5       S   nM{     X0R                  ;  a&  U R                  R                  U5        UsSSS5        $ SSS5        M  ! [         a       M  f = f! , (       d  f       N"= f)z
Return an unbound port for the given address family.

:param family: if omitted, both IPv4 and IPv6 addresses will be tried
:return: a port number

Nr   z::1z	127.0.0.1r   )socketAF_INEThas_ipv6appendAF_INET6r   r.   r   bindOSErrorgetsocknamer   add)r   familyfamiliesportstacksockaddrs          r#   __call__FreePortFactory.__call__   s     xH'H0D&F ..v}}VZZ/PQD$*foo$=5;D		4,/  4#//1!4 ' ??2++D1#   #  s8   AD+(D:D+AD+
D(#D+'D((D++
D9)r   r   )r   socket.SocketKindrd   r   )rd   r   r   )r   zsocket.AddressFamily | Nonerd   r   )
__name__
__module__r   __firstlineno____doc__r   propertyr   r   __static_attributes__ro   r%   r#   r   r      s*    %  $ $r%   r   session)r   c                 4    [        [        R                  5      $ r   )r   r   SOCK_STREAMro   r%   r#   free_tcp_port_factoryr     s    6--..r%   c                 4    [        [        R                  5      $ r   )r   r   
SOCK_DGRAMro   r%   r#   free_udp_port_factoryr     s    6,,--r%   c                    U " 5       $ r   ro   )r   s    r#   free_tcp_portr   #       ""r%   c                    U " 5       $ r   ro   )r   s    r#   free_udp_portr   (  r   r%   )r"   objectrd   ztuple[str, dict[str, Any]])r2   r   r3   dict[str, Any]rd   zIterator[TestRunner])r?   zpytest.Parserrd   r   )rM   zpytest.Configrd   r   )rg   r   rR   r   rd   zGenerator[Any])r~   zpytest.Module | pytest.Classrq   r   r   r   rd   r   )r   r   rd   zbool | None)rR   r   rd   r   )rQ   r   rd   r   )rQ   r   rd   r   )rd   r   )r   Callable[[], int]rd   r   )r   r   rd   r   )7
__future__r   r   syscollections.abcr   r   r   
contextlibr   r   inspectr	   r
   r   typingr   r   rK   r(   _pytest.fixturesr   _pytest.outcomesr   _core._eventloopr   r   _core._exceptionsr   abcr   version_infoexceptiongroupr   r   __annotations__r   r0   r$   r6   r@   rN   hookimplri   r   r   fixturerQ   r   r   r   r   r   r   r   ro   r%   r#   <module>r      s   "  
 9 9 0 E E    ' ! A 1 g-%)" )"& &X 33(633 3:
& T"- #-` $>+>36>=C>	>  >" $!  !H h'7'9: ;        :$ :$z i / !/ i . !. # # # #r%   