
    ~h                        d dl mZ d dlZd dlmZmZ d dlmZm	Z	 d dl
mZ d dlm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 er	  ee      Z G d d      Zy)    )annotationsN)	AwaitableCallable)TYPE_CHECKINGAny)GetPromptResult)settings)NotFoundErrorPromptError)FunctionPromptPromptPromptResult)DuplicateBehavior)
get_loggerc                  ~    e Zd ZdZ	 	 d
	 	 	 ddZddZddZ	 	 	 d	 	 	 	 	 	 	 	 	 ddZdddZ	 d	 	 	 	 	 ddZ	dd	Z
y)PromptManagerzManages FastMCP prompts.Nc                    i | _         |xs t        j                  | _        |d}|t        j                  vr.t        d| ddj                  t        j                               || _        y )NwarnzInvalid duplicate_behavior: z. Must be one of: z, )_promptsr	   mask_error_detailsr   __args__
ValueErrorjoinduplicate_behavior)selfr   r   s      Z/opt/mcp/mcp-sentiment/venv/lib/python3.12/site-packages/fastmcp/prompts/prompt_manager.py__init__zPromptManager.__init__   s}    
 ,."4"S8S8S %!'%6%?%??./A.B C##'99->-G-G#H"IK 
 #5    c                X    || j                   v r| j                   |   S t        d|       )zGet prompt by key.Unknown prompt: )r   r
   r   keys     r   
get_promptzPromptManager.get_prompt,   s0    $--==%%.se455r   c                    | j                   S )z6Get all registered prompts, indexed by registered key.r   )r   s    r   get_promptszPromptManager.get_prompts2   s    }}r   c                    t        j                  dt        d       t        j                  ||||      }| j                  |      S )z Create a prompt from a function.zkPromptManager.add_prompt_from_fn() is deprecated. Use Prompt.from_function() and call add_prompt() instead.   )
stacklevel)namedescriptiontags)warningsr   DeprecationWarningr   from_function
add_prompt)r   fnr*   r+   r,   prompts         r   add_prompt_from_fnz PromptManager.add_prompt_from_fn6   sE     	y	

  --T{
 v&&r   c                   |xs |j                   }| j                  j                  |      }|r| j                  dk(  r)t        j                  d|        || j                  |<   |S | j                  dk(  r|| j                  |<   |S | j                  dk(  rt        d|       | j                  dk(  r|S |S || j                  |<   |S )zAdd a prompt to the manager.r   zPrompt already exists: replaceerrorignore)r*   r   getr   loggerwarningr   )r   r2   r"   existings       r   r0   zPromptManager.add_promptI   s     V[[ ==$$S)&&&0!8>?%+c"  ((I5%+c"  ((G3 #:3%!@AA((H4  "(DMM#r   c                  K   | j                  |      }|st        d|       	 |j                  |       d{   }t        |j                  |      S 7 # t
        $ r"}t        j                  d|d|        |d}~wt        $ rK}t        j                  d|d|        | j                  rt        d|      t        d|d|       d}~ww xY ww)z'Render a prompt by name with arguments.r    N)r+   messageszError rendering prompt z: )
r#   r
   renderr   r+   r   r9   	exception	Exceptionr   )r   r*   	argumentsr2   r=   es         r   render_promptzPromptManager.render_prompt]   s      &"24& 9::	K#]]955H"v/A/AHUU 6  	6thbDEG  	K6thbDE&&!$;D8"DEE "$;D82aS"IJJ	KsE   "CA AA CA 	C A==C	ACCCc                    || j                   v S )zCheck if a prompt exists.r%   r!   s     r   
has_promptzPromptManager.has_promptz   s    dmm##r   )NN)r   zDuplicateBehavior | Noner   zbool | None)r"   strreturnr   )rG   zdict[str, Prompt])NNN)
r1   z5Callable[..., PromptResult | Awaitable[PromptResult]]r*   
str | Noner+   rH   r,   zset[str] | NonerG   r   )N)r2   r   r"   rH   rG   r   )r*   rF   rA   zdict[str, Any] | NonerG   r   )r"   rF   rG   bool)__name__
__module____qualname____doc__r   r#   r&   r3   r0   rC   rE    r   r   r   r      s    " 8<*.545 (5(6  "& $'A' '  	'
 ' 
'&. ,0KK )K 
	K:$r   r   )
__future__r   _annotationsr-   collections.abcr   r   typingr   r   mcpr   fastmcpr	   fastmcp.exceptionsr
   r   fastmcp.prompts.promptr   r   r   fastmcp.settingsr   fastmcp.utilities.loggingr   rJ   r9   r   rN   r   r   <module>rY      sB    2  / %   9 G G . 0	H	g$ g$r   