@@ -178,7 +178,8 @@ async def render(
178178 through unchanged so the multi-round-trip flow reaches the client.
179179
180180 Raises:
181- PromptValidationError: If required arguments are missing, or if rendering fails.
181+ PromptValidationError: If required arguments are missing.
182+ ValueError: If the prompt function itself raises an unexpected exception.
182183 """
183184 # Validate required arguments
184185 if self .arguments :
@@ -195,6 +196,7 @@ async def render(
195196 fn = self .fn
196197 if is_async_callable (fn ):
197198 result = await fn (** call_args )
199+
198200 else :
199201 result = await anyio .to_thread .run_sync (functools .partial (self .fn , ** call_args ))
200202
@@ -210,16 +212,21 @@ async def render(
210212 for msg in result : # type: ignore[reportUnknownVariableType]
211213 if isinstance (msg , Message ):
212214 messages .append (msg )
215+
213216 elif isinstance (msg , dict ):
214217 messages .append (message_validator .validate_python (msg ))
218+
215219 elif isinstance (msg , str | ContentBlock | Image | Audio ): # bare content is one user message
216220 messages .append (UserMessage (msg ))
221+
217222 else : # pragma: no cover
218223 content = pydantic_core .to_json (msg , fallback = str , indent = 2 ).decode ()
219224 messages .append (Message (role = "user" , content = content ))
220225
221226 return messages
227+
222228 except MCPError :
223229 raise
230+
224231 except Exception as e :
225232 raise ValueError (f"Error rendering prompt { self .name } : { e } " )
0 commit comments