Ë
    :vžj´8  ã                  óÔ  — U d dl mZ d dlZd dlmc mZ d dlZd dl	Z	d dl
Z
d dlmZmZmZ d dlmZmZ d dlmZmZmZ d dlmZmZmZ d dlZd dlmZmZ d dlmZ d d	l m!Z! d
dl"m#Z# d
dl$m%Z%m&Z&m'Z'm(Z( d
dl)m*Z* erd
dl+m,Z, e
jZ                  dk  rd dl.m/Z/ erd dl0m1Z2 n	 d dl0m2Z2 da4de5d<   da6de5d<   d a7d0d„Z8e	 	 	 	 	 	 d1d„«       Z9d2d„Z:d3d„Z;d4d„Z< ejz                  d¬«      d5d„«       Z> ejz                  d¬«      	 	 	 	 	 	 	 	 d6d „«       Z?d7d"„Z@ ejz                  d¬«      d8d#„«       ZA ej„                  d$ e#«       ¬%«      d9d&„«       ZCej„                  d:d'„«       ZDej„                  d;d(„«       ZE G d)„ d*«      ZF ej„                  d!¬+«      d<d,„«       ZG ej„                  d!¬+«      d<d-„«       ZHej„                  d=d.„«       ZIej„                  d>d/„«       ZJy# e3$ r
 d dl0m1Z2 Y �ŒBw xY w)?é    )Ú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                ó  — 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    úd/workspace/moltex-experiments/.pixi/envs/default/lib/python3.12/site-packages/anyio/pytest_plugin.pyÚextract_backend_and_optionsr,   /   sq   € Ü�'œ3ÔØ˜ˆ{ÐÜ	�GœUÔ	#¬¨G«¸Ò(9Ü�g˜a‘j¤#Ô&¬:°g¸a±jÄ$Ô+GÜœœc¤4¬¬S¨¡>Ð1Ñ2°GÓ<Ð<ä
ÐVÓ
WÐWó    c           	   #  ó–  K  — t         €nt        | «      }t        «       at	        «       €%t        | «      }t        j                  t        |«       |xs i }t        j                  |j                  |«      «      a t        dz  a
	 t         –— t        dz  a
t        sÎd }t        |u}|s¥t        j                  d|fdt        |f«      dt        j                  «       v st        j                  t        «      rt        j                   t        «      ndt        j                   |«      dœz  }dd|iz  }t#        t        j$                  |«      «      ‚d x}}t        j'                  «        d xaa y y # t        dz  a
t        sÎd }t        |u}|s¥t        j                  d|fdt        |f«      dt        j                  «       v st        j                  t        «      rt        j                   t        «      ndt        j                   |«      dœz  }dd|iz  }t#        t        j$                  |«      «      ‚d x}}t        j'                  «        d xaa w w xY w­w)Nr   )úis not)z%(py0)s is not %(py3)sr!   )Úpy0Úpy3zassert %(py5)sÚpy5)r    r   r   r!   r   r   Úcallbackr   Úenter_contextÚcreate_test_runnerÚ_runner_leasesÚ
@pytest_arÚ_call_reprcompareÚ@py_builtinsÚlocalsÚ_should_repr_global_nameÚ	_safereprÚAssertionErrorÚ_format_explanationÚclose)Úbackend_nameÚbackend_optionsÚasynclibÚtokenÚ@py_assert2Ú@py_assert1Ú@py_format4Ú@py_format6s           r+   Ú
get_runnerrH   9   s‰  è ø€ ô
 ÐÜ$ \Ó2ˆÜ!›ˆÜ Ó"Ð*ô .¨lÓ;ˆEÜ×"Ñ"Ô#>ÀÔFà)Ò/¨RˆÜ'×5Ñ5Ø×'Ñ'¨Ó8ó
ˆô �aÑ€Nð3ÜÒä˜!ÑˆÝØ(,Ð,”=¨Ð,×,×,Õ,”=¨×,×,×,×,×,Ñ,”=×,×,Ó,”=×,×,Ô,¨×,×,×,×,×,×,Ñ,Ü×ÑÔ!Ø.2Ð2ˆM™Oð øô 	˜!ÑˆÝØ(,Ð,”=¨Ð,×,×,Õ,”=¨×,×,×,×,×,Ñ,”=×,×,Ó,”=×,×,Ô,¨×,×,×,×,×,×,Ñ,Ü×ÑÔ!Ø.2Ð2ˆM™Oð üs    ‚A>I	ÂE' Â	CI	Å'CIÉI	c                óx   — | j                  d«      }| j                  ddd¬«       |j                  dd dd¬«       y )	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)
        )rM   ÚdestrN   )ÚgetgroupÚaddiniÚ	addoption)ÚparserÚgroups     r+   Úpytest_addoptionrU   W   sK   € Ø�O‰O˜GÓ$€EØ
‡M�MØØØ<ð ô ð
 
‡O�OØØØðð	 õ 	r-   c                óZ   — | j                  |d ¬«      dk(  xs | j                  |«      dk(  S )N)rM   Úauto)Ú	getoptionÚgetini)ÚconfigÚmodes     r+   Ú_is_auto_moder\   j   s3   € à×Ñ˜ tÐÓ,°Ñ6ÒW¸&¿-¹-ÈÓ:MÐQWÑ:Wðr-   c                óÞ   — | j                  dd«       t        | d«      rO| j                  j                  d«      r3t        | d«      r&| j	                  t        j                  d«      d«       y y y y )NÚmarkerszManyio: mark the (coroutine function) test to be run asynchronously via anyio.rK   ÚasyncioÚasyncio_modezlAnyIO auto mode has been enabled together with pytest-asyncio auto mode. This may cause unexpected behavior.r   )Úaddinivalue_liner\   ÚpluginmanagerÚ
has_pluginÚissue_config_time_warningÚpytestÚPytestConfigWarning)rZ   s    r+   Úpytest_configurerg   p   su   € Ø
×ÑØØWôô
 	�f˜lÔ+Ø× Ñ ×+Ñ+¨IÔ6Ü˜& .Ô1à×(Ñ(Ü×&Ñ&ð<óð õ	
ð 2ð 7ð 	,r-   T)Úhookwrapperc              #  óŽ  ‡‡‡K  — dˆˆˆfd„}| j                   Št        ‰«      st        ‰«      r~d|j                  v rp|| _         | j                  }d| j                  v xŠs| xj                  dz  c_        d| j                  v xŠs| xj                  dz  c_        	 d –—‰| _         || _        S d –—S # ‰| _         || _        w xY w­w)NÚanyio_backendÚrequestc              ;  ó  •K  — |j                   r[t        ‰«      rPt        ‰j                  «      t        |j                   «      u r&‰j                  j                  |j                   «      }n‰}t        | «      \  }}‰r| |d<   ‰	r||d<   t        ||«      5 }|j                  «       rt        d«      ‚t        |«      r|j                  ||«      E d {  –—†  n|j                  ||«      –— d d d «       y 7 Œ"# 1 sw Y   y xY w­w)Nrj   rk   z�Cannot 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,   rH   Ú
is_runningÚRuntimeErrorr	   Úrun_asyncgen_fixtureÚrun_fixture)
rj   rk   ÚkwargsÚ
local_funcr@   rA   ÚrunnerÚfuncÚhas_backend_argÚhas_request_args
          €€€r+   Úwrapperz%pytest_fixture_setup.<locals>.wrapper…   sô   øè ø€ ð ×ÒÜ˜”Ü�T—]‘]Ó#¤t¨G×,<Ñ,<Ó'=Ñ=àŸ™×.Ñ.¨w×/?Ñ/?Ó@‰JàˆJä(CÀMÓ(RÑ%ˆ�oÙØ&3ˆF�?Ñ#áØ 'ˆF�9Ñä˜ oÔ6¸&ð × Ñ Ô"Ü"ðVóð ô
 " *Ô-Ø!×6Ñ6°zÀ6ÓJ×JÑJà×(Ñ(¨°VÓ<Ò<÷! 7Ð6ð Kø÷ 7Ð6üs0   ƒBDÂ<C6ÃC4ÃC6Ã+	DÃ4C6Ã6C?Ã;D©rj   ©rk   )rj   r   rk   r   rv   r   Úreturnr   )ry   r	   r
   ÚfixturenamesÚargnames)Ú
fixturedefrk   r|   Úoriginal_argnamery   rz   r{   s       @@@r+   Úpytest_fixture_setupr„   ƒ   sÆ   úè ø€ ÷"=ðL �?‰?€DÜ˜$ÔÔ#6°tÔ#<Ø˜g×2Ñ2Ñ2Ø%ˆJŒOØ)×2Ñ2Ðà'6¸*×:MÑ:MÐ'MÐM�OÐMØ×#Ò#Ð'9Ñ9Õ#à'0°J×4GÑ4GÐ'GÐG�OÐGØ×#Ò# |Ñ3Õ#ð7Úà"&�
”Ø&6�
Õ#â€Nøð #'�
”Ø&6�
Õ#üs   …BCÂB2 ÂCÂ2CÃC)Útryfirstc                óh  — | j                  ||«      r t        |d«      r|j                  j                  n|}t	        |«      rpt        | j                  d«      }| j                  d«      }t        |dd«      }|s|st        d„ |D «       «      r%t        j                  j                  d«      |«       y y y y )NÚ
hypothesisrK   rJ   Ú
pytestmark© c              3  ó:   K  — | ]  }|j                   d k(  –— Œ y­w)rJ   N)Úname)Ú.0Úmarkers     r+   Ú	<genexpr>z,pytest_pycollect_makeitem.<locals>.<genexpr>Í   s   è ø€ ÐH¹K°&�v—{‘{ gÕ-¹Kùs   ‚rj   )ÚistestfunctionÚhasattrr‡   Ú
inner_testr
   r\   rZ   Úget_closest_markerÚgetattrÚanyre   ÚmarkÚusefixtures)Ú	collectorr‹   ÚobjÚ
inner_funcÚanyio_auto_moder�   Úown_markerss          r+   Úpytest_pycollect_makeitemrœ   À   s¢   € ð ×Ñ  TÔ*Ü29¸#¸|Ô2L�S—^‘^×.Ò.ÐRUˆ
Ü˜zÔ*Ü+¨I×,<Ñ,<¸lÓKˆOØ×1Ñ1°'Ó:ˆFÜ! # |°RÓ8ˆKáÙÜÑH¹KÓHÔHä—‘×'Ñ'¨Ó8¸Õ=ð Ið +ð +r-   Úsessionc                óP  — t        t        t        | j                  «      «      «      D �]Ü  \  }}t	        |t
        j                  «      sŒ"t        |j                  «      sŒ8|j                  d«      €ŒJd|j                  vsŒYg }	 t        j                  t        «      D �ch c]  }|j                  ’Œ }}t        t#        «       «      D �](  \  }}d|v r&t        d|id|idt$        j&                  i|gg ¬«      }n&t        i d|id|idt$        j&                  i|gg ¬«      }|j(                  }	t        |	j*                  «      }
d|
vr|
j-                  d«       t/        |	j0                  |	j2                  |
|	j4                  ¬«      }t
        j                  j7                  |j8                  |j:                  › d|› d�||j<                  ||j>                  |j:                  ¬	«      }|j-                  |«       �Œ+ || j                  ||d
z    �Œß y c c}w # t        $ r t!        «       }Y �Œpw xY w)NrJ   rj   Ú
_arg2scope)ÚparamsÚindicesrŸ   Ú_idlistÚmarks)Úfuncargsr    r¡   Ú	arg2scopeÚidlistr£   )r�   ÚinitialnamesÚnames_closureÚname2fixturedefsÚ[Ú])r‹   ÚcallspecÚcallobjÚfixtureinfoÚkeywordsÚoriginalnamer   ) ÚreversedÚlistÚ	enumerateÚitemsr$   re   ÚFunctionr
   Úfunctionr’   r€   ÚdataclassesÚfieldsr   r‹   r)   Úsetr   r   ÚModuleÚ_fixtureinfor¨   Úappendr   r�   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Ó:×;‰ˆˆ4ä�tœVŸ_™_Õ-Ü# D§M¡MÕ2Ø×'Ñ'¨Ó0Ñ<Ø t×'8Ñ'8Ò8àˆIð"Ü-8×-?Ñ-?ÄÔ-IÓJÑ-I¨˜QŸV›VÐ-I�	ÐJô )2Ô2HÓ2J×(KÑ$�˜WØ 9Ñ,Ü'Ø /°Ð9Ø!0°+Ð >Ø$3´U·\±\Ð#BØ!( 	Ø ô ‘Hô  (Ø!#Ø /°Ð9Ø!0°+Ð >Ø#2´E·L±LÐ"AØ '˜yØ ô �Hð ×&Ñ&�Ü$(¨×)9Ñ)9Ó$:Ð!Ø"Ð*;Ñ;Ø%×,Ñ,¨_Ô=ä"1ØŸ[™[Ø!#§¡Ø"3Ø%'×%8Ñ%8ô	#�ô "Ÿ?™?×6Ñ6Ø—K‘KØ ×-Ñ-Ð.¨a°¨y¸Ð:Ø%Ø ŸH™HØ /Ø!Ÿ]™]Ø!%×!2Ñ!2ð 7ó �ð × Ñ  Ö*ðO )LðR (1ˆG�M‰M˜!˜a !™eÒ$ñm <ùò KøÜò "Ü›E“	ð"ús$   ÂHÂH	Â2HÈ	HÈH%È$H%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)rH   Úrun_test)rv   rx   r@   rA   Úoriginal_funcs     €€€r+   Úrun_with_hypothesisz/pytest_pyfunc_call.<locals>.run_with_hypothesis  s)   ø€ Ü˜ oÔ6¸&Ø�O‰O˜M¨6Ô2÷ 7×6Ñ6ús   Ž*ª3rj   r‡   T)rv   r   r   ÚNone)r¤   Úgetr,   r�   r˜   r‡   r‘   Ú__qualname__r
   r»   r�   rH   rÍ   r   r   r$   r   ÚKeyboardInterruptÚ
SystemExit)Ú
pyfuncitemrÏ   r*   r¤   ÚargÚtestargsrx   ÚexcgrpÚexcr@   rA   rÎ   s            @@@r+   Úpytest_pyfunc_callrÚ     sJ  ú€ ÷3ð ×!Ñ!×%Ñ% oÓ6€GÚÜ(CÀGÓ(LÑ%ˆ�oä�:—>‘> <Ô0à&ŸN™N×5Ñ5×@Ñ@ˆMØ×)Ñ)Ð-@×-MÑ-MÒMÜ& }Ô5Ø;N�J—N‘N×-Ñ-Ô8àä˜zŸ~™~Ô.Ø!×*Ñ*ˆHØ6@×6MÑ6M×6VÒ6VÓWÑ6V¨s˜˜X c™]Ñ*Ð6VˆHÐWÜ˜L¨/Ô:¸fðØ—O‘O J§N¡N°HÕ=÷ ;ð àùò Xøô &ò Ü1°&Ö9˜Ü% c¬DÔ2CÄZÐ+PÕQØ"%¨6Ð1ð  :ð ûðú÷ ;ð ús6   Ã'D+ÄE0ÄD0Ä0	E-Ä9)E(Å#E(Å(E-Å-E0Å0E9Úmodule)Úscoper    c                ó   — | j                   S rÌ   )Úparamr~   s    r+   rj   rj   1  s   € à�=‰=Ðr-   c                ó0   — t        | t        «      r| S | d   S )Nr   ©r$   r%   r}   s    r+   Úanyio_backend_namerá   6  s   € ä�-¤Ô%ØÐà˜QÑÐr-   c                ó0   — t        | t        «      ri S | d   S )Nr   rà   r}   s    r+   Úanyio_backend_optionsrã   >  s   € ä�-¤Ô%Øˆ	à˜QÑÐr-   c                  ó4   — e Zd ZdZdd„Zedd„«       Zdd	d„Zy)
Ú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                ó>   — || _         t        t           «       | _        y rÌ   )Ú_kindr¹   ÚintÚ
_generated)ÚselfÚkinds     r+   Ú__init__zFreePortFactory.__init__T  s   € ØˆŒ
Üœc™(›*ˆ�r-   c                ó   — | j                   S )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ë   zFreePortFactory.kindX  s   € ð �z‰zÐr-   Nc                óJ  — |�|g}n@t         j                  g}t         j                  r|j                  t         j                  «       	 d}t        «       5 }|D ]r  }|j                  t        j                   || j                  «      «      }|t         j                  k(  rdnd}	 |j                  ||f«       |rŒ`|j                  «       d   }Œt || j                  vr&| j                  j                  |«       |cddd«       S ddd«       ŒÁ# t        $ r Y  Œw xY w# 1 sw Y   ŒxY w)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   r4   rç   ÚbindÚOSErrorÚgetsocknameré   Úadd)rê   ÚfamilyÚfamiliesÚportÚstackÚfamÚsockÚaddrs           r+   Ú__call__zFreePortFactory.__call__a  sø   € ð ÐØ�x‰HäŸ™Ð'ˆHÜ�ŠØ—‘¤§¡Ô0àØˆDÜ” Û#�CØ ×.Ñ.¬v¯}©}¸SÀ$Ç*Á*Ó/MÓN�DØ$'¬6¯?©?Ò$:™5À�DðØŸ	™	 4¨ ,Ô/ò  Ø#×/Ñ/Ó1°!Ñ4™ð $ð  4§?¡?Ñ2ØŸ™×+Ñ+¨DÔ1Ø#÷ —‘ð øô #ò Úðú÷ �ús7   ÁADÂ!D	Â4DÂ7?DÄ		DÄDÄDÄDÄD")rë   úsocket.SocketKindr   rÐ   )r   rÿ   rÌ   )r÷   zsocket.AddressFamily | Noner   rè   )Ú__name__Ú
__module__rÒ   Ú__doc__rì   Úpropertyrë   rþ   r‰   r-   r+   rå   rå   F  s%   „ ñó%ð òó ðõ$r-   rå   )rÜ   c                 ó4   — t        t        j                  «      S rÌ   )rå   rï   ÚSOCK_STREAMr‰   r-   r+   Úfree_tcp_port_factoryr  ƒ  s   € äœ6×-Ñ-Ó.Ð.r-   c                 ó4   — t        t        j                  «      S rÌ   )rå   rï   Ú
SOCK_DGRAMr‰   r-   r+   Úfree_udp_port_factoryr	  ˆ  s   € äœ6×,Ñ,Ó-Ð-r-   c                ó   —  | «       S rÌ   r‰   )r  s    r+   Úfree_tcp_portr  �  ó   € á Ó"Ð"r-   c                ó   —  | «       S rÌ   r‰   )r	  s    r+   Úfree_udp_portr  ’  r  r-   )r*   Úobjectr   ztuple[str, dict[str, Any]])r@   r%   rA   údict[str, Any]r   zIterator[TestRunner])rS   zpytest.Parserr   rÐ   )rZ   úpytest.Configr[   r%   r   Úbool)rZ   r  r   rÐ   )r‚   r   rk   r   r   zGenerator[Any])r—   zpytest.Module | pytest.Classr‹   r%   r˜   r  r   rÐ   )r�   zpytest.Sessionr   rÐ   )rÕ   r   r   zbool | None)rk   r   r   r   )rj   r   r   r%   )rj   r   r   r  )r   rå   )r  úCallable[[], int]r   rè   )r	  r  r   rè   )KÚ
__future__r   Úbuiltinsr9   Ú_pytest.assertion.rewriteÚ	assertionÚrewriter7   r·   rï   ÚsysÚcollections.abcr   r   r   Ú
contextlibr   r   Úinspectr	   r
   r   Útypingr   r   r   re   Ú_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!   r6   r,   rH   rU   r\   rg   Úhookimplr„   rœ   rÉ   rÚ   Úfixturerj   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1ðt €‡�˜$Ôò!ó  ð!ðH €‡��hÑ'=Ó'?Ô@òó Aðð ‡�ò ó ð ð ‡�ò ó ð ÷:$ñ :$ðz €‡��iÔ ò/ó !ð/ð €‡��iÔ ò.ó !ð.ð ‡�ò#ó ð#ð ‡�ò#ó ñ#øðY ò 9ß8Ð8ð9ús   ÂG ÇG'Ç&G'