
    zbj8                       % S SK Jr  S SK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Jr  S SKrS SKJrJr  S SKJr  S S	KJr  S
SKJr  S
SKJrJ r J!r!J"r"  S
SK#J$r$  \(       a  S
SK%J&r&  \RN                  S:  a  S SK(J)r)  \(       a  S SK*J+r,  O S SK*J,r,  Sq.S\/S'   Sq0S\/S'   S q1S0S jr2\      S1S j5       r3S2S jr4S3S jr5S4S jr6\Rn                  " SS9S5S j5       r8\Rn                  " SS9        S6S  j5       r9S7S" jr:\Rn                  " SS9S8S# j5       r;\Rx                  " S$\" 5       S%9S9S& j5       r=\Rx                  S:S' j5       r>\Rx                  S;S( j5       r? " S) S*5      r@\Rx                  " S!S+9S<S, j5       rA\Rx                  " S!S+9S<S- j5       rB\Rx                  S=S. j5       rC\Rx                  S>S/ j5       rDg! \- a
    S SK*J+r,   GNAf = f)?    )annotationsN)Callable	GeneratorIterator)	ExitStackcontextmanager)isasyncgenfunctioniscoroutinefunctionismethod)TYPE_CHECKINGAnycast)FuncFixtureInfo
SubRequest)Exit)Scope   )get_available_backends)current_async_libraryget_async_backendreset_current_async_libraryset_current_async_library)iterate_exceptions)
TestRunner)      )ExceptionGroup)	CallSpec2)CallSpecz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    ڏ/tmp/claude-0/-home-danvics-docker-quiz/c1e0577a-e42c-4a3d-b1ea-3edd61103a4e/scratchpad/stt/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              #    #    [         ct  [        U 5      n[        5       q[	        5       c%  [        U 5      n[        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!   r   r   callbackr   enter_contextcreate_test_runner_runner_leasesclose)backend_namebackend_optionsasynclibtokens       r+   
get_runnerr9   9   s     
 $\2! "* .l;E""#>F)/R'55''8
 aN3!~ ,,,!.22MO  	!~ ,,,!.22MO s   BDC 7D8C??Dc                l    U R                  S5      nU R                  SSSS9  UR                  SS SSS9  g )	Nanyio
anyio_modestrictz-AnyIO plugin mode (either "strict" or "auto"))defaulthelpz--anyio-modez
        'auto'   - All async test functions will be handled by AnyIO pytest plugin
        'strict' - Disabling autoprocessing(useful when anyio tests
            need to coexist with other async test plugins)
        )r>   destr?   )getgroupaddini	addoption)parsergroups     r+   pytest_addoptionrF   W   sK    OOG$E
MM<  
 
OO	  	r-   c                ^    U R                  US S9S:H  =(       d    U R                  U5      S:H  $ )N)r>   auto)	getoptiongetini)configmodes     r+   _is_auto_moderM   j   s3    t,6W&--:MQW:Wr-   c                    U R                  SS5        [        U S5      (       aZ  U R                  R                  S5      (       a9  [        U S5      (       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.r<   asyncioasyncio_modezlAnyIO auto mode has been enabled together with pytest-asyncio auto mode. This may cause unexpected behavior.r   )addinivalue_linerM   pluginmanager
has_pluginissue_config_time_warningpytestPytestConfigWarning)rK   s    r+   pytest_configurerX   p   s~    
W
 	fl++  ++I66&.11((&&< 	
 2 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              ;  D  >#    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R                  5       (       a  [        S5      e[        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)Nr[   r\   zCannot schedule a coroutine in the test runner while another is already running; likely caused by request.getfixturevalue() on an async fixture.)instancer   type__self____func____get__r,   r9   
is_runningRuntimeErrorr	   run_asyncgen_fixturerun_fixture)
r[   r\   kwargs
local_funcr5   r6   runnerfunchas_backend_arghas_request_args
          r+   wrapper%pytest_fixture_setup.<locals>.wrapper   s      T]]#tG,<,<'==..w/?/?@JJ(CM(R%&3?# '96&   """V 
 "*--!66zJJJ((<<! 76 K 76s1   B#D &AD+D,D	D D
DD r[   r\   )r[   r   r\   r   rg   r   returnr   )rj   r	   r
   fixturenamesargnames)
fixturedefr\   rm   original_argnamerj   rk   rl   s       @@@r+   pytest_fixture_setuprv      s     "= "=L ??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                  S5      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
hypothesisr<   r;   
pytestmark c              3  >   #    U  H  oR                   S :H  v   M     g7f)r;   N)name).0markers     r+   	<genexpr>,pytest_pycollect_makeitem.<locals>.<genexpr>   s     HK&{{g-Ks   r[   )istestfunctionhasattrry   
inner_testr
   rM   rK   get_closest_markergetattranyrV   markusefixtures)	collectorr}   obj
inner_funcanyio_auto_moder   own_markerss          r+   pytest_pycollect_makeitemr      s     **29#|2L2LS^^..RU
z**+I,<,<lKO11':F!#|R8KHKHHH''8= I + +r-   sessionc                j   [        [        [        U R                  5      5      5       GH  u  p[	        U[
        R                  5      (       d  M'  [        UR                  5      (       d  MC  UR                  S5      c  MW  SUR                  ;  d  Mi  / n [        R                  " [        5       Vs1 s H  oDR                  iM     nn[        [#        5       5       GH   u  pgSU;   a#  [        SU0SU0S[$        R&                  0U// S9nO#[        0 SU0SU0S[$        R&                  0U// S9nUR(                  n	[        U	R*                  5      n
SU
;  a  U
R-                  S5        [/        U	R0                  U	R2                  U
U	R4                  S9n[
        R                  R7                  UR8                  UR:                   SU S3UUR<                  UUR>                  UR:                  S	9nUR-                  U5        GM#     X0R                  XS
-   & GM     g s  snf ! [         a    [!        5       n GNjf = f)Nr;   r[   
_arg2scope)paramsindicesr   _idlistmarks)funcargsr   r   	arg2scopeidlistr   )rs   initialnamesnames_closurename2fixturedefs[])r}   callspeccallobjfixtureinfokeywordsoriginalnamer   ) reversedlist	enumerateitemsr$   rV   Functionr
   functionr   rr   dataclassesfieldsr   r}   r)   setr   r   Module_fixtureinfor   appendr   rs   r   r   from_parentparentr   r   r   )r   iitem	new_itemsf	cs_fieldsparam_indexr*   r   finew_names_closurenew_fixtureinfonew_items                r+   pytest_collection_finishr      s   D7==!9:;tV__--#DMM22''0<t'8'88I"-8-?-?-IJ-IVV-I	J )22H2J(K$9,' /9!0+ >$3U\\#B!(	  H  (!# /9!0+ >#2ELL"A 'y  H &&$()9)9$:!"*;;%,,_="1[[!#"3%'%8%8	# "??66KK --.ay:% HH /!]]!%!2!2 7    *O )LR (1MM!!e$m < K "E	"s$   H0HHHH21H2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)r9   run_test)rg   ri   r5   r6   original_funcs     r+   run_with_hypothesis/pytest_pyfunc_call.<locals>.run_with_hypothesis  s)    o6&OOM62 766s   *
8r[   ry   T)rg   r   rq   None)r   getr,   r   r   ry   r   __qualname__r
   r   rs   r9   r   r   r   r$   r   KeyboardInterrupt
SystemExit)
pyfuncitemr   r*   r   argtestargsri   excgrpexcr5   r6   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)scoper   c                    U R                   $ r   )paramrp   s    r+   r[   r[   1  s    ==r-   c                :    [        U [        5      (       a  U $ U S   $ )Nr   r$   r%   ro   s    r+   anyio_backend_namer   6  s     -%%Qr-   c                :    [        U [        5      (       a  0 $ U S   $ r/   r   ro   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)FreePortFactoryiF  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__T  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.kindX  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                   " XPR                  5      5      nU[         R                  :X  a  SOSn UR                  Xs4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_ipv6r   AF_INET6r   r1   r   bindOSErrorgetsocknamer   add)r   familyfamiliesportstackfamsockaddrs           r+   __call__FreePortFactory.__call__a  s     xH'H0D#C ..v}}S**/MND$'6??$: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.SocketKindrq   r   )rq   r   r   )r   zsocket.AddressFamily | Nonerq   r   )
__name__
__module__r   __firstlineno____doc__r   propertyr   r   __static_attributes__r{   r-   r+   r   r   F  s*    %  $ $r-   r   )r   c                 4    [        [        R                  5      $ r   )r   r   SOCK_STREAMr{   r-   r+   free_tcp_port_factoryr     s    6--..r-   c                 4    [        [        R                  5      $ r   )r   r   
SOCK_DGRAMr{   r-   r+   free_udp_port_factoryr    s    6,,--r-   c                    U " 5       $ r   r{   )r   s    r+   free_tcp_portr         ""r-   c                    U " 5       $ r   r{   )r  s    r+   free_udp_portr    r  r-   )r*   objectrq   ztuple[str, dict[str, Any]])r5   r%   r6   dict[str, Any]rq   zIterator[TestRunner])rD   zpytest.Parserrq   r   )rK   pytest.ConfigrL   r%   rq   bool)rK   r
  rq   r   )rt   r   r\   r   rq   zGenerator[Any])r   zpytest.Module | pytest.Classr}   r%   r   r  rq   r   )r   zpytest.Sessionrq   r   )r   r   rq   zbool | None)r\   r   rq   r   )r[   r   rq   r%   )r[   r   rq   r	  )rq   r   )r   Callable[[], int]rq   r   )r  r  rq   r   )E
__future__r   r   r   syscollections.abcr   r   r   
contextlibr   r   inspectr	   r
   r   typingr   r   r   rV   _pytest.fixturesr   r   _pytest.outcomesr   _pytest.scoper    r   _core._eventloopr   r   r   r   _core._exceptionsr   abcr   version_infoexceptiongroupr   _pytest.pythonr   r   ImportErrorr    __annotations__r!   r3   r,   r9   rF   rM   rX   hookimplrv   r   r   r   fixturer[   r   r   r   r   r  r  r  r{   r-   r+   <module>r!     s)   "   
 9 9 0 E E + +  8 !  $  2g-49 	, &*" )"& &X 33(633 3:&
& T"9 #9x $>+>36>=C>	>  >"71t $!  !H h'='?@ A        :$ :$z i / !/ i . !. # # # #Y  9889s   G G$#G$