
    k7i                        S SK Jr  S SKrS SKJrJr  S SKJr  S SK	J
r
  S SKJr  S SKJrJr  S SKJrJrJr  S S	KJr  S S
KJr  \" \5      r " S S5      rg)    )annotationsN)	AwaitableCallable)Any)GetPromptResult)settings)NotFoundErrorPromptError)FunctionPromptPromptPromptResult)DuplicateBehavior)
get_loggerc                      \ rS rSrSr  S   SS jjrSS jrSS jrSS jr   S         SS jjr	SS	 jr
 S     SS
 jjrSrg)PromptManager   zManages FastMCP prompts.Nc                    0 U l         U=(       d    [        R                  U l        Uc  SnU[        R                  ;  a.  [        SU SSR                  [        R                  5       35      eXl        g )NwarnzInvalid duplicate_behavior: z. Must be one of: z, )_promptsr   mask_error_detailsr   __args__
ValueErrorjoinduplicate_behavior)selfr   r   s      X/home/james-whalen/.local/lib/python3.13/site-packages/fastmcp/prompts/prompt_manager.py__init__PromptManager.__init__   s{    
 ,."4"S8S8S %!'%6%?%??./A.B C##'99->-G-G#H"IK 
 #5    c                F   #    U R                  5       I Sh  vN nX;   $  N7f)zCheck if a prompt exists.N)get_promptsr   keypromptss      r   
has_promptPromptManager.has_prompt)   s#     ((**~ +s   !	!c                l   #    U R                  5       I Sh  vN nX;   a  X!   $ [        SU 35      e N7f)zGet prompt by key.NzUnknown prompt: )r!   r	   r"   s      r   
get_promptPromptManager.get_prompt.   s;     ((**><.se455 +s   424c                4   #    [        U R                  5      $ 7f)z;
Gets the complete, unfiltered inventory of local prompts.
)dictr   )r   s    r   r!   PromptManager.get_prompts5   s      DMM""s   c                    [         R                  (       a  [        R                  " S[        SS9  [
        R                  " XX4S9nU R                  U5      $ )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)r   deprecation_warningswarningsr   DeprecationWarningr   from_function
add_prompt)r   fnr0   r1   r2   prompts         r   add_prompt_from_fn PromptManager.add_prompt_from_fn;   sJ     ((MM}"
  --{
 v&&r   c                   U R                   R                  UR                  5      nU(       a  U R                  S:X  a<  [        R                  SUR                   35        XR                   UR                  '   U$ U R                  S:X  a  XR                   UR                  '   U$ U R                  S:X  a  [        SUR                   35      eU R                  S:X  a  U$  U$ XR                   UR                  '   U$ )zAdd a prompt to the manager.r   zPrompt already exists: replaceerrorignore)r   getr#   r   loggerwarningr   )r   r9   existings      r   r7   PromptManager.add_promptO   s     ==$$VZZ0&&&0!8EF,2fjj)  ((I5,2fjj)  ((G3 #:6::,!GHH((H4 5  )/MM&**%r   c                  #    U R                  U5      I Sh  vN n UR                  U5      I Sh  vN n[        UR                  US9$  N2 N! [         a   n[
        R                  SU< 35        UeSnAf[         aR  n[
        R                  SU< 35        U R                  (       a  [	        SU< 35      Ue[	        SU< SU 35      UeSnAff = f7f)z^
Internal API for servers: Finds and renders a prompt, respecting the
filtered protocol path.
N)r1   messageszError rendering prompt z: )	r(   renderr   r1   r
   rA   	exception	Exceptionr   )r   r0   	argumentsr9   rF   es         r   render_promptPromptManager.render_prompta   s      t,,	R#]]955H"v/A/AHUU -5 	6th?@G 	R6th?@&&!$;D8"DE1L!$;D82aS"IJPQQ	RsO   CA
CA AA 	CA 
CA33C ACCC)r   r   r   )NN)r   zDuplicateBehavior | Noner   zbool | None)r#   strreturnbool)r#   rN   rO   r   )rO   zdict[str, Prompt])NNN)
r8   z5Callable[..., PromptResult | Awaitable[PromptResult]]r0   
str | Noner1   rQ   r2   zset[str] | NonerO   r   )r9   r   rO   r   )N)r0   rN   rJ   zdict[str, Any] | NonerO   r   )__name__
__module____qualname____firstlineno____doc__r   r%   r(   r!   r:   r7   rL   __static_attributes__ r   r   r   r      s    " 8<*.545 (5(
6#  "& $'A' '  	'
 ' 
'(* ,0RR )R 
	R Rr   r   )
__future__r   _annotationsr4   collections.abcr   r   typingr   mcpr   fastmcpr   fastmcp.exceptionsr	   r
   fastmcp.prompts.promptr   r   r   fastmcp.settingsr   fastmcp.utilities.loggingr   rR   rA   r   rX   r   r   <module>rc      s>    2  /    9 G G . 0	H	dR dRr   