§
    %ÈjÌ  ã                  óš  — d Z ddlmZ ddlZddlmZmZ ddlmZm	Z	m
Z
 ddlmZ ddlmZmZmZmZmZ dd	lmZ dd
lmZ  ed¦  «        Zedeee         z  e	e         z  ee         z  f         Z G d„ dee         ¦  «        Z G d„ dee         ¦  «        Zedd„¦   «         Zedd„¦   «         Zedd„¦   «         Zed d„¦   «         Zd!d„ZdS )"z6Factory-based dependencies: Depends and its internals.é    )ÚannotationsN)Ú	AwaitableÚCallable)ÚAbstractAsyncContextManagerÚAbstractContextManagerÚAsyncExitStack)Ú
ContextVar)ÚAnyÚClassVarÚTypeVarÚcastÚoverloadé   )Ú
Dependency)Úget_dependency_parametersÚR.c                  ó.   — e Zd ZU dZded<   dd„Zdd„ZdS )Ú_FunctionalDependencyz3Base for dependencies that wrap a factory function.úDependencyFactory[R]ÚfactoryÚreturnÚNonec                ó   — || _         d S ©N©r   )Úselfr   s     ú_/home/rurouni/.hermes/hermes-agent/venv/lib/python3.11/site-packages/uncalled_for/functional.pyÚ__init__z_FunctionalDependency.__init__   s   € ØˆŒˆˆó    Ústackr   Ú	raw_valueúMR | Awaitable[R] | AbstractContextManager[R] | AbstractAsyncContextManager[R]r   c              ƒ  ó‚  K  — t          |t          ¦  «        r|                     |¦  «        ƒ d {V —†S t          |t          ¦  «        r|                     |¦  «        S t          j        |¦  «        st          |t          ¦  «        r&t          t          t                   |¦  «        ƒ d {V —†S t          t          |¦  «        S r   )
Ú
isinstancer   Úenter_async_contextr   Úenter_contextÚinspectÚiscoroutiner   r   r   )r   r    r!   s      r   Ú_resolve_factory_valuez,_FunctionalDependency._resolve_factory_value!   sÂ   è è € õ iÕ!<Ñ=Ô=ð 	&Ø×2Ò2°9Ñ=Ô=Ð=Ð=Ð=Ð=Ð=Ð=Ð=Ý˜	Õ#9Ñ:Ô:ð 	&Ø×&Ò& yÑ1Ô1Ð1ÝÔ  Ñ+Ô+ð 	&­z¸)ÅYÑ/OÔ/Oð 	&Ýi­œl¨IÑ6Ô6Ð6Ð6Ð6Ð6Ð6Ð6Ð6å˜9Ñ%Ô%Ð%r   N)r   r   r   r   )r    r   r!   r"   r   r   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__Ú__annotations__r   r)   © r   r   r   r      sP   € € € € € € Ø=Ð=à!Ð!Ð!Ñ!ðð ð ð ð&ð &ð &ð &ð &ð &r   r   c                  ód   — e Zd ZU dZ ed¦  «        Zded<    ed¦  «        Zded<   dd„Zdd„Z	dS )Ú_Dependsz5Call-scoped dependency, resolved fresh for each call.Úuncalled_for_cachez7ClassVar[ContextVar[dict[DependencyFactory[Any], Any]]]ÚcacheÚuncalled_for_stackz$ClassVar[ContextVar[AsyncExitStack]]r    ÚfunctionúCallable[..., Any]r   údict[str, Any]c              ƒ  óÎ   K  — | j                              ¦   «         }i }t          |¦  «        }|                     ¦   «         D ]#\  }}|                     |¦  «        ƒ d {V —†||<   Œ$|S r   )r    Úgetr   Úitemsr%   )r   r5   r    Ú	argumentsÚ
parametersÚ	parameterÚ
dependencys          r   Ú_resolve_parametersz_Depends._resolve_parameters=   s€   è è € ð ”
—’Ñ Ô ˆØ$&ˆ	Ý.¨xÑ8Ô8ˆ
à%/×%5Ò%5Ñ%7Ô%7ð 	Oð 	OÑ!ˆIzØ).×)BÒ)BÀ:Ñ)NÔ)NÐ#NÐ#NÐ#NÐ#NÐ#NÐ#NˆIiÑ Ð àÐr   r   c              ƒ  ó@  K  — | j                              ¦   «         }| j        |v r|| j                 S | j                             ¦   «         }|                      | j        ¦  «        ƒ d {V —†} | j        di |¤Ž}|                      ||¦  «        ƒ d {V —†}||| j        <   |S )Nr/   )r3   r9   r   r    r?   r)   )r   r3   r    r;   r!   Úresolved_values         r   Ú
__aenter__z_Depends.__aenter__J   s¹   è è € Ø”
—’Ñ Ô ˆàŒ<˜5Ð Ð Ø˜œÔ&Ð&à”
—’Ñ Ô ˆØ×2Ò2°4´<Ñ@Ô@Ð@Ð@Ð@Ð@Ð@Ð@ˆ	Ø D”LÐ-Ð- 9Ð-Ð-ˆ	Ø#×:Ò:¸5À)ÑLÔLÐLÐLÐLÐLÐLÐLˆà,ˆˆdŒlÑØÐr   N)r5   r6   r   r7   )r   r   )
r*   r+   r,   r-   r	   r3   r.   r    r?   rB   r/   r   r   r1   r1   5   sŒ   € € € € € € Ø?Ð?àEOÀZØñFô F€Eð ð ð ñ ð 3=°*Ð=QÑ2RÔ2R€EÐRÐRÐRÑRðð ð ð ðð ð ð ð ð r   r1   r   ú-Callable[..., AbstractAsyncContextManager[R]]r   c                ó   — d S r   r/   r   s    r   ÚDependsrE   Y   s   € ØJMÈ#r   ú(Callable[..., AbstractContextManager[R]]c                ó   — d S r   r/   r   s    r   rE   rE   [   s   € ØEHÀSr   úCallable[..., Awaitable[R]]c                ó   — d S r   r/   r   s    r   rE   rE   ]   s   € Ø8;¸r   úCallable[..., R]c                ó   — d S r   r/   r   s    r   rE   rE   _   s   € Ø-0¨Sr   r   c                óF   — t          t          t          | ¦  «        ¦  «        S )a‚  Declare a dependency on a factory function.

    The factory is called once per resolution scope. It may be:

    - A sync function returning a value
    - An async function returning a value
    - A sync generator (context manager) yielding a value
    - An async generator (async context manager) yielding a value

    Context managers get proper enter/exit lifecycle management.
    )r   r   r1   r   s    r   rE   rE   a   s   € õ ••8˜GÑ$Ô$Ñ%Ô%Ð%r   )r   rC   r   r   )r   rF   r   r   )r   rH   r   r   )r   rJ   r   r   )r   r   r   r   )r-   Ú
__future__r   r'   Úcollections.abcr   r   Ú
contextlibr   r   r   Úcontextvarsr	   Útypingr
   r   r   r   r   Úbaser   Úintrospectionr   r   ÚDependencyFactoryr   r1   rE   r/   r   r   ú<module>rU      sé  ðØ <Ð <à "Ð "Ð "Ð "Ð "Ð "à €€€Ø /Ð /Ð /Ð /Ð /Ð /Ð /Ð /ðð ð ð ð ð ð ð ð ð ð
 #Ð "Ð "Ð "Ð "Ð "Ø 9Ð 9Ð 9Ð 9Ð 9Ð 9Ð 9Ð 9Ð 9Ð 9Ð 9Ð 9Ð 9Ð 9à Ð Ð Ð Ð Ð Ø 4Ð 4Ð 4Ð 4Ð 4Ð 4à€GˆCL„L€àØˆˆYqŒ\Ñ	Ð2°1Ô5Ñ	5Ð8SÐTUÔ8VÑ	VÐVôÐ ð
&ð &ð &ð &ð &˜J qœMñ &ô &ð &ð8!ð !ð !ð !ð !Ð$ QÔ'ñ !ô !ð !ðH 
Ø MÐ MÐ Mñ 
„Ø MØ	Ø HÐ HÐ Hñ 
„Ø HØ	Ø ;Ð ;Ð ;ñ 
„Ø ;Ø	Ø 0Ð 0Ð 0ñ 
„Ø 0ð&ð &ð &ð &ð &ð &r   