]L i':UddlmZddlZddlZddlmZmZmZddlm Z m Z ddl m Z m Z mZddlmZmZddlZddlZddlmZddlmZd d lmZmZd d lmZd d lmZej>d krddl m!Z!da"de#d<da$de#d<da%d*dZ&e d+dZ'd,dZ(d-dZ)ejTdd.dZ+ejTd d/dZ,ejTdd0dZ-ej\ded1dZ/ej\d2d Z0ej\d3d!Z1Gd"d#Z2ej\d$%d4d&Z3ej\d$%d4d'Z4ej\d5d(Z5ej\d6d)Z6y)7) annotationsN)Callable GeneratorIterator) ExitStackcontextmanager)isasyncgenfunctioniscoroutinefunctionismethod)Anycast) SubRequest)Exit)get_all_backendsget_async_backend)iterate_exceptions) TestRunner) )ExceptionGroupzTestRunner | None_current_runnerzExitStack | None _runner_stackct|tr|ifSt|tr^t|dk(rPt|dtr=t|dtr*t ttttt ff|Std)Nrrz@anyio_backend must be either a string or tuple of (string, dict)) isinstancestrtuplelendictr r TypeError)backends Y/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/anyio/pytest_plugin.pyextract_backend_and_optionsr$sq'3{ GU #G (9 gaj# &:gaj$+Gc4S>12G< < V WWc#\Ktt|}tatj j dMtj j|}tjtj j||xsi}tj|j|atdz a ttdza ts!tJtjdxaayy#tdza ts!tJtjdxaawwxYwwNr)rrrrsniffiocurrent_async_library_cvargetsetcallbackreset enter_contextcreate_test_runner_runner_leasesclose) backend_namebackend_optionsasynclibtokens r# get_runnerr6%s $\2!  - - 1 1$ 7 ?66::<HE  " "7#E#E#K#KU S)/R'55  ' ' 8 aN3! , ,,    !.2 2MO ! , ,,    !.2 2MOsB;D,>C71D,72D))D,c.|jddddy)N anyio_modestrictz-AnyIO plugin mode (either "strict" or "auto")string)defaulthelptype)addini)parsers r#pytest_addoptionr@Cs MM <  r%c|jdd|jddk(rW|jjdr;|jddk(r&|j t j ddyyyy) NmarkerszManyio: mark the (coroutine function) test to be run asynchronously via anyio.r8autoasyncio asyncio_modezlAnyIO auto mode has been enabled together with pytest-asyncio auto mode. This may cause unexpected behavior.r)addinivalue_linegetini pluginmanager has_pluginissue_config_time_warningpytestPytestConfigWarning)configs r#pytest_configurerNLs W  l#v-  + +I 6 MM. )V 3((  & &<     4 7 .r%T) hookwrapperc#Kdfd }|jts tr~d|jvrp||_|j}d|jvxs|xjdz c_d|jvxs|xjdz c_ d|_||_SdS#|_||_wxYww)N anyio_backendrequestc;K|jr[trPtjt|jur&jj |j}n}t |\}}r||d< r||d<t||5}t|r|j||Ed{n|j||dddy7"#1swYyxYww)NrQrR) instancer r=__self____func____get__r$r6r run_asyncgen_fixture run_fixture) rQrRkwargs local_funcr2r3runnerfunchas_backend_arghas_request_args r#wrapperz%pytest_fixture_setup..wrapperas   T]]#tG,<,<'==..w/?/?@JJ(CM(R% o &3F? #  'F9   o 6 =&!*-!66z6JJJ((V<<  = =J = =s0BC'!C6C7C C'CC$ C'rQrR)rQr rRrrZr returnr )r]r r fixturenamesargnames) fixturedefrRr`original_argnamer]r^r_s @@@r#pytest_fixture_setuprh_s=4 ??D$#6t#< g22 2%JO)22 '6*:M:M'MMOM##'99#'0J4G4G'GGOG##|3# 7"& &6 # N#' &6 #sBCB2C2CC)tryfirstcx|j||rt|dr|jjn|}t |rx|j j ddk(}|jd}t|dd}|s|std|Dr%tjjd|yyyy) N hypothesisr8rCanyio pytestmarkc3:K|]}|jdk(yw)rlN)name).0markers r# z,pytest_pycollect_makeitem..sH&v{{g-HsrQ) istestfunctionhasattrrk inner_testr rMrGget_closest_markergetattranyrKmark usefixtures) collectorrpobj inner_funcanyio_auto_moderr own_markerss r#pytest_pycollect_makeitemrsT*29#|2LS^^..RU z *'..55lCvMO11':F!#|R8KHKHH ''8=I ++r%c  d fd }|jjd}|rt|\ t|jdr`|jj j j|jk7r&t r||jj _yt|jrg|j}|jjDcic]}||| }}t 5} |j|j| dddyycc}w#t$r4}t|D] }t|t t"t$fs||d}~wwxYw#1swYyxYw)Nclt5}|j|dddy#1swYyxYwN)r6run_test)rZr\r2r3 original_funcs r#run_with_hypothesisz/pytest_pyfunc_call..run_with_hypothesiss2  o 6 3& OOM6 2 3 3 3s*3rQrkT)rZr rcNone)funcargsr*r$rur}rkrv __qualname__r _fixtureinforer6rrrrrKeyboardInterrupt SystemExit) pyfuncitemrr"rargtestargsr\excgrpexcr2r3rs @@@r#pytest_pyfunc_callrsQ3!!%%o6G(CG(L% o :>>< 0&NN55@@M))-@-M-MM&}5;NJNN--8 z~~ .!**H6@6M6M6V6VWsXc]*WHWL/: fOOJNNH=  X&1&92%cD2CZ+PQ"%612  s6' D+E0D00 E-9)E(#E((E--E00E9module)scopeparamsc|jSr)paramrbs r#rQrQs ==r%c0t|tr|S|dS)Nrrrras r#anyio_backend_namers-%Qr%c0t|triS|dSr'rras r#anyio_backend_optionsrs-% Qr%c4eZdZdZddZeddZdd dZy) FreePortFactoryaO 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>||_tt|_yr)_kindr+int _generated)selfkinds r#__init__zFreePortFactory.__init__s c(*r%c|jS)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)rs r#rzFreePortFactory.kindszzr%NcJ||g}n@tjg}tjr|jtj d}t 5}|D]r}|j tj||j}|tjk(rdnd} |j||f|r`|jd}t||jvr&|jj||cdddSddd#t$rYwxYw#1swYxYw)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 Nrz::1z 127.0.0.1r) socketAF_INEThas_ipv6appendAF_INET6rr.rbindOSError getsocknameradd)rfamilyfamiliesportstacksockaddrs r#__call__zFreePortFactory.__call__s   xH'H0D $& $F ..v}}VTZZ/PQD$*foo$=5;D 4,/ #//1!4 $4??2++D1# $ $ $#  $ $s7A D!D 4D7?D DDDDD")rsocket.SocketKindrcr)rcrr)rzsocket.AddressFamily | Nonercr)__name__ __module__r__doc__rpropertyrrrnr%r#rrs% %$r%rsession)rc4ttjSr)rr SOCK_STREAMrnr%r#free_tcp_port_factoryrs 6-- ..r%c4ttjSr)rr SOCK_DGRAMrnr%r#free_udp_port_factoryrs 6,, --r%c|Srrn)rs r# free_tcp_portr# ""r%c|Srrn)rs r# free_udp_portr(rr%)r"objectrcztuple[str, dict[str, Any]])r2rr3dict[str, Any]rczIterator[TestRunner])r?z pytest.Parserrcr)rMz pytest.Configrcr)rfr rRr rczGenerator[Any])r|zpytest.Module | pytest.Classrprr}rrcr)rr rcz bool | None)rRr rcr )rQr rcr)rQr rcr)rcr)rCallable[[], int]rcr)rrrcr)7 __future__rrsyscollections.abcrrr contextlibrrinspectr r r typingr r rKr(_pytest.fixturesr_pytest.outcomesr_core._eventlooprr_core._exceptionsrabcr version_infoexceptiongrouprr__annotations__rr0r$r6r@rNhookimplrhrrfixturerQrrrrrrrrnr%r#rs" 990EE '!A1g-%)")"& &X33(6333: &T"-#-`$>+>36>=C> > >"$! !Hh'7'9:;    :$:$zi /!/i .!.####r%