Ë
    #täiç1  ã                  ór  — U d dl 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 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 ddlm Z m!Z!m"Z"m#Z# ddl$m%Z% ddl&m'Z' ejP                  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„«       Z0d0d„Z1d1d„Z2 ejf                  d¬«      d2d„«       Z4 ejf                  d¬«      	 	 	 	 	 	 	 	 d3d„«       Z5d4d „Z6 ejf                  d¬«      d5d!„«       Z7 ejp                  d" e«       ¬#«      d6d$„«       Z9ejp                  d7d%„«       Z:ejp                  d8d&„«       Z; G d'„ d(«      Z< ejp                  d¬)«      d9d*„«       Z= ejp                  d¬)«      d9d+„«       Z>ejp                  d:d,„«       Z?ejp                  d;d-„«       Z@y)<é    )ÚannotationsN)ÚCallableÚ	GeneratorÚIterator)Ú	ExitStackÚcontextmanager)ÚisasyncgenfunctionÚiscoroutinefunctionÚismethod)ÚAnyÚcast)ÚFuncFixtureInfoÚ
SubRequest)ÚExit)Ú	CallSpec2)ÚScopeé   )Úget_available_backends)Úcurrent_async_libraryÚget_async_backendÚreset_current_async_libraryÚset_current_async_library)Ú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    úb/Volumes/fast/ai/experiments/MLX_z-image/.venv/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!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   r   r   Úcallbackr   Úenter_contextÚcreate_test_runnerÚ_runner_leasesÚclose)Úbackend_nameÚbackend_optionsÚasynclibÚtokens       r)   Ú
get_runnerr7   -   sï   è ø€ ô
 ÐÜ$ \Ó2ˆÜ!›ˆÜ Ó"Ð*ô .¨lÓ;ˆEÜ×"Ñ"Ô#>ÀÔFà)Ò/¨RˆÜ'×5Ñ5Ø×'Ñ'¨Ó8ó
ˆô �aÑ€Nð3ÜÒä˜!ÑˆÝÜ Ð,Ð,Ð,Ü×ÑÔ!Ø.2Ð2ˆM™Oð øô 	˜!ÑˆÝÜ Ð,Ð,Ð,Ü×ÑÔ!Ø.2Ð2ˆM™Oð üs   ‚A>C/ÂB: Â	1C/Â:2C,Ã,C/c                ó,   — | j                  ddd¬«       y )NÚ
anyio_modeÚstrictz-AnyIO plugin mode (either "strict" or "auto"))ÚdefaultÚhelp)Úaddini)Úparsers    r)   Úpytest_addoptionr?   K   s   € Ø
‡M�MØØØ<ð õ r+   c                óþ   — | j                  dd«       | j                  d«      dk(  rW| j                  j                  d«      r;| j                  d«      dk(  r&| j	                  t        j                  d«      d«       y y y y )	NÚmarkerszManyio: mark the (coroutine function) test to be run asynchronously via anyio.r9   Ú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_configurerM   S   sƒ   € Ø
×ÑØØWôð
 	�‰�lÓ# vÒ-Ø× Ñ ×+Ñ+¨IÔ6Ø�M‰M˜.Ó)¨VÒ3à×(Ñ(Ü×&Ñ&ð<óð õ	
ð 4ð 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 }t        |«      r|j                  ||«      E d {  –—†  n|j                  ||«      –— d d d «       y 7 Œ"# 1 sw Y   y xY w­w)NrP   rQ   )Úinstancer   ÚtypeÚ__self__Ú__func__Ú__get__r*   r7   r	   Úrun_asyncgen_fixtureÚrun_fixture)
rP   rQ   ÚkwargsÚ
local_funcr3   r4   ÚrunnerÚfuncÚhas_backend_argÚhas_request_args
          €€€r)   Úwrapperz%pytest_fixture_setup.<locals>.wrapperh   sÎ   øè ø€ ð ×ÒÜ˜”Ü�T—]‘]Ó#¤t¨G×,<Ñ,<Ó'=Ñ=àŸ™×.Ñ.¨w×/?Ñ/?Ó@‰JàˆJä(CÀMÓ(RÑ%ˆ�oÙØ&3ˆF�?Ñ#áØ 'ˆF�9Ñä˜ oÔ6¸&Ü! *Ô-Ø!×6Ñ6°zÀ6ÓJ×JÑJà×(Ñ(¨°VÓ<Ò<÷	 7Ð6àJø÷ 7Ð6üs0   ƒBC'Â!CÂ6CÂ7CÃ	C'ÃCÃC$Ã C'©rP   ©rQ   )rP   r   rQ   r   rZ   r   Úreturnr   )r]   r	   r
   ÚfixturenamesÚargnames)Ú
fixturedefrQ   r`   Úoriginal_argnamer]   r^   r_   s       @@@r)   Úpytest_fixture_setuprh   f   sÅ   úè ø€ ÷=ð4 �?‰?€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                óx  — | j                  ||«      r¨t        |d«      r|j                  j                  n|}t	        |«      rx| j
                  j                  d«      dk(  }| j                  d«      }t        |dd«      }|s|st        d„ |D «       «      r%t        j                  j                  d«      |«       y y y y )	NÚ
hypothesisr9   rB   ÚanyioÚ
pytestmark© c              3  ó:   K  — | ]  }|j                   d k(  –— Œ y­w)rl   N)Úname)Ú.0Úmarkers     r)   Ú	<genexpr>z,pytest_pycollect_makeitem.<locals>.<genexpr>¤   s   è ø€ ÐH¹K°&�v—{‘{ gÕ-¹Kùs   ‚rP   )ÚistestfunctionÚhasattrrk   Ú
inner_testr
   rL   rF   Úget_closest_markerÚgetattrÚanyrJ   ÚmarkÚusefixtures)Ú	collectorrp   ÚobjÚ
inner_funcÚanyio_auto_moderr   Úown_markerss          r)   Úpytest_pycollect_makeitemr�   —   s«   € ð ×Ñ  TÔ*Ü29¸#¸|Ô2L�S—^‘^×.Ò.ÐRUˆ
Ü˜zÔ*Ø'×.Ñ.×5Ñ5°lÓCÀvÑMˆ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)Nrl   rP   Ú
_arg2scope)ÚparamsÚindicesr„   Ú_idlistÚmarks)Úfuncargsr…   r†   Ú	arg2scopeÚidlistrˆ   )re   ÚinitialnamesÚnames_closureÚname2fixturedefsÚ[Ú])rp   ÚcallspecÚcallobjÚfixtureinfoÚkeywordsÚoriginalnamer   ) ÚreversedÚlistÚ	enumerateÚitemsr"   rJ   ÚFunctionr
   Úfunctionrw   rd   ÚdataclassesÚfieldsr   rp   r'   Úsetr   r   ÚModuleÚ_fixtureinfor�   Úappendr   re   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×-?Ñ-?Ä	Ô-JÓKÑ-J¨˜QŸV›VÐ-J�	ÐKô )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 <ùò LøÜò "Ü›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)r7   Úrun_test)rZ   r\   r3   r4   Ú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rP   rk   T)rZ   r   rc   ÚNone)r‰   Úgetr*   ru   r}   rk   rv   Ú__qualname__r
   r    re   r7   r²   r   r   r"   r   ÚKeyboardInterruptÚ
SystemExit)Ú
pyfuncitemr´   r(   r‰   ÚargÚtestargsr\   ÚexcgrpÚexcr3   r4   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±   )Úparamrb   s    r)   rP   rP     s   € à�=‰=Ðr+   c                ó0   — t        | t        «      r| S | d   S )Nr   ©r"   r#   ra   s    r)   Úanyio_backend_namerÆ     s   € ä�-¤Ô%ØÐà˜QÑÐr+   c                ó0   — t        | t        «      ri S | d   S r-   rÅ   ra   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__+  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.kind/  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   r/   rÌ   ÚbindÚOSErrorÚgetsocknamerÎ   Úadd)rÏ   ÚfamilyÚfamiliesÚportÚstackÚsockÚaddrs          r)   Ú__call__zFreePortFactory.__call__8  sø   € ð ÐØ�x‰HäŸ™Ð'ˆHÜ�ŠØ—‘¤§¡Ô0àØˆDÜ” Û&�FØ ×.Ñ.¬v¯}©}¸VÀTÇZÁZÓ/PÓQ�DØ$*¬f¯o©oÒ$=™5À;�DðØŸ	™	 4¨ ,Ô/ò  Ø#×/Ñ/Ó1°!Ñ4™ð 'ð  4§?¡?Ñ2ØŸ™×+Ñ+¨DÔ1Ø#÷ —‘ð øô #ò Úðú÷ �ús7   ÁADÂ!D	Â4DÂ7?DÄ		DÄDÄDÄDÄD")rÐ   úsocket.SocketKindrc   rµ   )rc   rã   r±   )rÜ   zsocket.AddressFamily | Nonerc   rÍ   )Ú__name__Ú
__module__r·   Ú__doc__rÑ   ÚpropertyrÐ   râ   rn   r+   r)   rÊ   rÊ     s%   „ ñó%ð òó ðõ$r+   rÊ   )rÁ   c                 ó4   — t        t        j                  «      S r±   )rÊ   rÔ   ÚSOCK_STREAMrn   r+   r)   Úfree_tcp_port_factoryrê   Z  s   € äœ6×-Ñ-Ó.Ð.r+   c                 ó4   — t        t        j                  «      S r±   )rÊ   rÔ   Ú
SOCK_DGRAMrn   r+   r)   Úfree_udp_port_factoryrí   _  s   € äœ6×,Ñ,Ó-Ð-r+   c                ó   —  | «       S r±   rn   )rê   s    r)   Úfree_tcp_portrï   d  ó   € á Ó"Ð"r+   c                ó   —  | «       S r±   rn   )rí   s    r)   Úfree_udp_portrò   i  rð   r+   )r(   Úobjectrc   ztuple[str, dict[str, Any]])r3   r#   r4   údict[str, Any]rc   zIterator[TestRunner])r>   zpytest.Parserrc   rµ   )rL   zpytest.Configrc   rµ   )rf   r   rQ   r   rc   zGenerator[Any])r|   zpytest.Module | pytest.Classrp   r#   r}   ró   rc   rµ   )r‚   zpytest.Sessionrc   rµ   )rº   r   rc   zbool | None)rQ   r   rc   r   )rP   r   rc   r#   )rP   r   rc   rô   )rc   rÊ   )rê   úCallable[[], int]rc   rÍ   )rí   rõ   rc   rÍ   )AÚ
__future__r   rœ   rÔ   ÚsysÚcollections.abcr   r   r   Ú
contextlibr   r   Úinspectr	   r
   r   Útypingr   r   rJ   Ú_pytest.fixturesr   r   Ú_pytest.outcomesr   Ú_pytest.pythonr   Ú_pytest.scoper   Ú r   Ú_core._eventloopr   r   r   r   Ú_core._exceptionsr   Úabcr   Úversion_infoÚexceptiongroupr   r   Ú__annotations__r   r1   r*   r7   r?   rM   Úhookimplrh   r�   r®   r¿   ÚfixturerP   rÆ   rÈ   rÊ   rê   rí   rï   rò   rn   r+   r)   Ú<module>r	     s  ðÞ "ã Û Û 
ß 9Ñ 9ß 0ß EÑ Eß ã ß 8Ý !Ý $Ý å $÷ó õ 2Ý à×Ñ�gÒÝ-à%)€Ð"Ó )Ø"&€ÐÓ &Ø€óXð ð3Øð3Ø(6ð3àò3ó ð3ó:ó
ð& €‡�˜TÔ"ò-ó #ð-ð` €‡�˜$Ôð>Ø+ð>Ø36ð>Ø=Cð>à	ò>ó  ð>ó"71ðt €‡�˜$Ôò!ó  ð!ðH €‡��hÑ'=Ó'?Ô@òó Aðð ‡�ò ó ð ð ‡�ò ó ð ÷:$ñ :$ðz €‡��iÔ ò/ó !ð/ð €‡��iÔ ò.ó !ð.ð ‡�ò#ó ð#ð ‡�ò#ó ñ#r+   