§
    öŽ’jE  ã                   ód   — d Z ddlmZmZmZ ddlZ ed¦  «        Z G d„ dee         ¦  «        ZdS )zÌ
Resolver - An anyio-compatible future-like object for async result passing.

This provides a simple way to pass a result (or exception) from one coroutine
to another without depending on asyncio.Future.
é    )ÚGenericÚTypeVarÚcastNÚTc                   óR   — e Zd ZdZdd„Zdeddfd„Zdeddfd„Zdefd	„Z	de
fd
„ZdS )ÚResolverai  
    A simple resolver for passing results between coroutines.

    Unlike asyncio.Future, this works with any anyio-compatible async backend.

    Usage:
        resolver: Resolver[str] = Resolver()

        # In one coroutine:
        resolver.set_result("hello")

        # In another coroutine:
        result = await resolver.wait()  # returns "hello"
    ÚreturnNc                 óR   — t          j        ¦   «         | _        d | _        d | _        d S )N)ÚanyioÚEventÚ_eventÚ_valueÚ
_exception©Úselfs    úTC:\Projects\DSCons\.venv\Lib\site-packages\mcp\shared\experimental\tasks\resolver.pyÚ__init__zResolver.__init__   s!   € Ý”k‘m”mˆŒØ $ˆŒØ04ˆŒˆˆó    Úvaluec                 ó–   — | j                              ¦   «         rt          d¦  «        ‚|| _        | j                              ¦   «          dS )z)Set the result value and wake up waiters.úResolver already completedN)r   Úis_setÚRuntimeErrorr   Úset)r   r   s     r   Ú
set_resultzResolver.set_result$   sF   € àŒ;×ÒÑÔð 	=ÝÐ;Ñ<Ô<Ð<ØˆŒØŒ�ŠÑÔÐÐÐr   Úexcc                 ó–   — | j                              ¦   «         rt          d¦  «        ‚|| _        | j                              ¦   «          dS )z%Set an exception and wake up waiters.r   N)r   r   r   r   r   )r   r   s     r   Úset_exceptionzResolver.set_exception+   sF   € àŒ;×ÒÑÔð 	=ÝÐ;Ñ<Ô<Ð<ØˆŒØŒ�ŠÑÔÐÐÐr   c              ƒ   ó”   K  — | j                              ¦   «         ƒ d{V —† | j        �| j        ‚t          t          | j        ¦  «        S )z:Wait for the result and return it, or raise the exception.N)r   Úwaitr   r   r   r   r   s    r   r    zResolver.wait2   sN   è è € àŒk×ÒÑ Ô Ð Ð Ð Ð Ð Ð Ð ØŒ?Ð&Ø”/Ð!å•A�t”{Ñ#Ô#Ð#r   c                 ó4   — | j                              ¦   «         S )z/Return True if the resolver has been completed.)r   r   r   s    r   ÚdonezResolver.done:   s   € àŒ{×!Ò!Ñ#Ô#Ð#r   )r	   N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   r   ÚBaseExceptionr   r    Úboolr"   © r   r   r   r      s¬   € € € € € ðð ð5ð 5ð 5ð 5ð
 ð  dð ð ð ð ð ð °4ð ð ð ð ð$˜Að $ð $ð $ð $ð$�dð $ð $ð $ð $ð $ð $r   r   )r&   Útypingr   r   r   r   r   r   r)   r   r   ú<module>r+      s}   ððð ð *Ð )Ð )Ð )Ð )Ð )Ð )Ð )Ð )Ð )à €€€à€GˆC�L„L€ð-$ð -$ð -$ð -$ð -$ˆw�qŒzñ -$ô -$ð -$ð -$ð -$r   