
    $jK                        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dS )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	d0dZ
	 d,d1dZd2dZ	 d,d3d Zd4d"Z	 d,d5d$Zd6d&Zed7d(            Z xZS )8_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.
    innerr   	transformr   returnNonec                    t                                                       || _        | j                            |           dS )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)selfr   r   	__class__s      q/home/rurouni/.hermes/hermes-agent/venv/lib/python3.11/site-packages/fastmcp/server/providers/wrapped_provider.pyr   z_WrappedProvider.__init__$   sA     	 		*****    strc                (    d| j         d| j        dS )Nz_WrappedProvider(z, transforms=))r   r   r    s    r"   __repr__z_WrappedProvider.__repr__1   s     T4;TTt?OTTTTr#   Sequence[Tool]c                D   K   | j                                          d{V S )z=Delegate to inner's list_tools (includes inner's transforms).N)r   
list_toolsr'   s    r"   _list_toolsz_WrappedProvider._list_tools8   s,      [++---------r#   NnameversionVersionSpec | NoneTool | Nonec                H   K   | j                             ||           d{V S )z;Delegate to inner's get_tool (includes inner's transforms).N)r   get_toolr    r-   r.   s      r"   	_get_toolz_WrappedProvider._get_tool<   s2       [))$888888888r#   app_name	tool_namec                H   K   | j                             ||           d{V S z7Delegate to inner, bypassing this wrapper's transforms.N)r   get_app_tool)r    r5   r6   s      r"   r9   z_WrappedProvider.get_app_toolB   s0      [--h	BBBBBBBBBr#   	tool_hashc                H   K   | j                             ||           d{V S r8   )r   get_tool_by_hash)r    r:   r6   s      r"   r<   z!_WrappedProvider.get_tool_by_hashF   s0      [11)YGGGGGGGGGr#   Sequence[Resource]c                D   K   | j                                          d{V S )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111111r#   uriResource | Nonec                H   K   | j                             ||           d{V S )z?Delegate to inner's get_resource (includes inner's transforms).N)r   get_resourcer    rA   r.   s      r"   _get_resourcez_WrappedProvider._get_resourceN   s2       [--c7;;;;;;;;;r#   Sequence[ResourceTemplate]c                D   K   | j                                          d{V S )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#   ResourceTemplate | Nonec                H   K   | j                             ||           d{V S )zHDelegate to inner's get_resource_template (includes inner's transforms).N)r   get_resource_templaterE   s      r"   _get_resource_templatez'_WrappedProvider._get_resource_templateX   s2       [66sGDDDDDDDDDr#   Sequence[Prompt]c                D   K   | j                                          d{V S )z?Delegate to inner's list_prompts (includes inner's transforms).N)r   list_promptsr'   s    r"   _list_promptsz_WrappedProvider._list_prompts^   s,      [--/////////r#   Prompt | Nonec                H   K   | j                             ||           d{V S )z=Delegate to inner's get_prompt (includes inner's transforms).N)r   
get_promptr3   s      r"   _get_promptz_WrappedProvider._get_promptb   s2       [++D':::::::::r#   Sequence[FastMCPComponent]c                  	
K   ddl m ddlm ddlm	 ddlm
 t          | j	        
                                 d{V           }
fd|D             }fd|D             }	fd	|D             }fd
|D             }| j        D ]n}|                    |           d{V }|                    |           d{V }|                    |           d{V }|                    |           d{V }od g ||||D             S )z=Delegate to inner's get_tasks and apply wrapper's transforms.r   r
   r   r   r   Nc                4    g | ]}t          |          |S  
isinstance).0cr   s     r"   
<listcomp>z._WrappedProvider.get_tasks.<locals>.<listcomp>u   s(    >>>q*Q*=*=>>>>r#   c                4    g | ]}t          |          |S rZ   r[   )r]   r^   r   s     r"   r_   z._WrappedProvider.get_tasks.<locals>.<listcomp>v   s(    FFF1jH.E.EFQFFFr#   c                4    g | ]}t          |          |S rZ   r[   )r]   r^   r   s     r"   r_   z._WrappedProvider.get_tasks.<locals>.<listcomp>w   s)    NNN1j<L.M.MNQNNNr#   c                4    g | ]}t          |          |S rZ   r[   )r]   r^   r   s     r"   r_   z._WrappedProvider.get_tasks.<locals>.<listcomp>x   s(    BBBJq&,A,AB1BBBr#   c                D    g | ]}|j                                         |S rZ   )task_configsupports_tasks)r]   r^   s     r"   r_   z._WrappedProvider.get_tasks.<locals>.<listcomp>   s>     	
 	
 	
 }++--	
	
 	
 	
r#   )fastmcp.prompts.baser   fastmcp.resources.baser   fastmcp.resources.templater   fastmcp.tools.baser   listr   	get_tasks
transformsr+   r?   rI   rQ   )r    
componentstools	resources	templatespromptsr   r   r   r   r   s          @@@@r"   rk   z_WrappedProvider.get_tasksh   s      	0/////333333??????++++++  5 5 7 777777788
 ?>>>J>>>FFFF
FFF	NNNN
NNN	BBBBjBBB  	< 	<I#..u55555555E'66yAAAAAAAAI'??	JJJJJJJJI%227;;;;;;;;GG	
 	
  		
 	
 	
 		
r#   AsyncIterator[None]c                  K   | j                                         4 d{V  dW V  ddd          d{V  dS # 1 d{V swxY w Y   dS )z%Combine lifespan with inner provider.N)r   lifespanr'   s    r"   rt   z_WrappedProvider.lifespan   s       ;'')) 	 	 	 	 	 	 	 	EEEE	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   ;
AA)r   r   r   r   r   r   )r   r$   )r   r)   )N)r-   r$   r.   r/   r   r0   )r5   r$   r6   r$   r   r0   )r:   r$   r6   r$   r   r0   )r   r=   )rA   r$   r.   r/   r   rB   )r   rG   )rA   r$   r.   r/   r   rK   )r   rO   )r-   r$   r.   r/   r   rS   )r   rW   )r   rr   )__name__
__module____qualname____doc__r   r(   r,   r4   r9   r<   r@   rF   rJ   rN   rR   rV   rk   r   rt   __classcell__)r!   s   @r"   r   r      s        + + + + + +U U U U. . . .
 8<9 9 9 9 9C C C CH H H H2 2 2 2
 7;< < < < <; ; ; ;
 7;E E E E E0 0 0 0
 8<; ; ; ; ;"
 "
 "
 "
P        r#   r   N)rx   
__future__r   collections.abcr   r   
contextlibr   typingr   fastmcp.server.providers.baser   fastmcp.utilities.versionsr	   rf   r   rg   r   rh   r   fastmcp.server.transformsr   ri   r   fastmcp.utilities.componentsr   r   rZ   r#   r"   <module>r      s5    # " " " " " 3 3 3 3 3 3 3 3 * * * * * *             2 2 2 2 2 2 2 2 2 2 2 2 >++++++//////;;;;;;333333''''''======{ { { { {x { { { { {r#   