
    kKjK                        d Z ddlm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 e	r$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 ddlmZ  G d de      Zy)zWrappedProvider for immutable transform composition.

This module provides `_WrappedProvider`, an internal class that wraps a provider
with an additional transform. Created by `Provider.wrap_transform()`.
    )annotations)AsyncIteratorSequence)asynccontextmanager)TYPE_CHECKING)Provider)VersionSpecPromptResourceResourceTemplate)	TransformTool)FastMCPComponentc                       e Zd ZdZd fdZddZddZ	 d	 	 	 	 	 ddZddZddZ	ddZ
	 d	 	 	 	 	 dd	Zdd
Z	 d	 	 	 	 	 ddZddZ	 d	 	 	 	 	 ddZddZedd       Z xZS )_WrappedProvidera  Internal provider that wraps another provider with a transform.

    Created by Provider.wrap_transform(). Delegates all component sourcing
    to the inner provider's public methods (which apply inner's transforms),
    then applies the wrapper's transform on top.

    This enables immutable transform composition - the inner provider is
    unchanged, and the wrapper adds its transform layer.
    c                f    t         |           || _        | j                  j	                  |       y)zInitialize wrapped provider.

        Args:
            inner: The provider to wrap.
            transform: The transform to apply on top of inner's results.
        N)super__init___inner_transformsappend)selfinner	transform	__class__s      z/Users/ahmed/devFolder/Ultron/claude-voice/.venv/lib/python3.12/site-packages/fastmcp/server/providers/wrapped_provider.pyr   z_WrappedProvider.__init__$   s-     	 		*    c                <    d| j                   d| j                  dS )Nz_WrappedProvider(z, transforms=))r   r   r   s    r    __repr__z_WrappedProvider.__repr__1   s#    "4;;/t?O?O>RRSTTr!   c                R   K   | j                   j                          d{   S 7 w)z=Delegate to inner's list_tools (includes inner's transforms).N)r   
list_toolsr$   s    r    _list_toolsz_WrappedProvider._list_tools8   s     [[++----   '%'c                V   K   | j                   j                  ||       d{   S 7 w)z;Delegate to inner's get_tool (includes inner's transforms).N)r   get_toolr   nameversions      r    	_get_toolz_WrappedProvider._get_tool<   s%      [[))$8888    )')c                V   K   | j                   j                  ||       d{   S 7 wz7Delegate to inner, bypassing this wrapper's transforms.N)r   get_app_tool)r   app_name	tool_names      r    r3   z_WrappedProvider.get_app_toolB   s#     [[--h	BBBBr0   c                V   K   | j                   j                  ||       d{   S 7 wr2   )r   get_tool_by_hash)r   	tool_hashr5   s      r    r7   z!_WrappedProvider.get_tool_by_hashF   s#     [[11)YGGGGr0   c                R   K   | j                   j                          d{   S 7 w)zADelegate to inner's list_resources (includes inner's transforms).N)r   list_resourcesr$   s    r    _list_resourcesz _WrappedProvider._list_resourcesJ   s     [[//1111r)   c                V   K   | j                   j                  ||       d{   S 7 w)z?Delegate to inner's get_resource (includes inner's transforms).N)r   get_resourcer   urir.   s      r    _get_resourcez_WrappedProvider._get_resourceN   s%      [[--c7;;;;r0   c                R   K   | j                   j                          d{   S 7 w)zJDelegate to inner's list_resource_templates (includes inner's transforms).N)r   list_resource_templatesr$   s    r    _list_resource_templatesz)_WrappedProvider._list_resource_templatesT   s     [[88::::r)   c                V   K   | j                   j                  ||       d{   S 7 w)zHDelegate to inner's get_resource_template (includes inner's transforms).N)r   get_resource_templater>   s      r    _get_resource_templatez'_WrappedProvider._get_resource_templateX   s%      [[66sGDDDDr0   c                R   K   | j                   j                          d{   S 7 w)z?Delegate to inner's list_prompts (includes inner's transforms).N)r   list_promptsr$   s    r    _list_promptsz_WrappedProvider._list_prompts^   s     [[--////r)   c                V   K   | j                   j                  ||       d{   S 7 w)z=Delegate to inner's get_prompt (includes inner's transforms).N)r   
get_promptr,   s      r    _get_promptz_WrappedProvider._get_promptb   s%      [[++D'::::r0   c                  K   ddl m} ddlm} ddlm} ddlm} t        | j                  j                          d{         }|D cg c]  }t        ||      s| }}|D cg c]  }t        ||      s| }}|D cg c]  }t        ||      s| }	}|D cg c]  }t        ||      s| }
}| j                  D ]f  }|j                  |       d{   }|j                  |       d{   }|j                  |	       d{   }	|j!                  |
       d{   }
h g |||	|
D cg c]  }|j"                  j%                         r|  c}S 7  c c}w c c}w c c}w c c}w 7 7 7 l7 Uc c}w w)z=Delegate to inner's get_tasks and apply wrapper's transforms.r   r
   r   r   r   N)fastmcp.prompts.baser   fastmcp.resources.baser   fastmcp.resources.templater   fastmcp.tools.baser   listr   	get_tasks
isinstance
transformsr'   r:   rB   rH   task_configsupports_tasks)r   r   r   r   r   
componentsctools	resources	templatespromptsr   s               r    rS   z_WrappedProvider.get_tasksh   s     	03?+  5 5 778
 '>Jq*Q*=J> *F
1jH.EQ
	F *N
1j<L.MQ
	N(BjJq&,A1jB I#..u55E'66yAAI'??	JJI%227;;G	 )  		
 }}++- 	
 		
! 8 ?FNB 6AJ;	
s   ;FEF
E E  F&E%8E%<FE*E*FE/0E/4%FE4F2E63FE8F$E:%F7#E<F F6F8F:F<Fc                  K   | j                   j                         4 d{    d ddd      d{    y7 7 # 1 d{  7  sw Y   yxY ww)z%Combine lifespan with inner provider.N)r   lifespanr$   s    r    r_   z_WrappedProvider.lifespan   s7      ;;'')) *))))))s>   A<AA A>AA AA	AA)r   r   r   r   returnNone)r`   str)r`   zSequence[Tool])N)r-   rb   r.   VersionSpec | Noner`   Tool | None)r4   rb   r5   rb   r`   rd   )r8   rb   r5   rb   r`   rd   )r`   zSequence[Resource])r?   rb   r.   rc   r`   zResource | None)r`   zSequence[ResourceTemplate])r?   rb   r.   rc   r`   zResourceTemplate | None)r`   zSequence[Prompt])r-   rb   r.   rc   r`   zPrompt | None)r`   zSequence[FastMCPComponent])r`   zAsyncIterator[None])__name__
__module____qualname____doc__r   r%   r(   r/   r3   r7   r;   r@   rC   rF   rI   rL   rS   r   r_   __classcell__)r   s   @r    r   r      s    +U.
 8<99"49	9CH2
 7;<<!3<	<;
 7;EE!3E	 E0
 8<;;"4;	;"
P  r!   r   N)rh   
__future__r   collections.abcr   r   
contextlibr   typingr   fastmcp.server.providers.baser   fastmcp.utilities.versionsr	   rN   r   rO   r   rP   r   fastmcp.server.transformsr   rQ   r   fastmcp.utilities.componentsr   r    r!   r    <module>rs      sA    # 3 *   2 2+/;3'={x {r!   