replace inefficient use of to_jsonable_python (#545)

This commit is contained in:
Samuel Colvin 2025-04-26 11:41:19 -07:00 • committed by GitHub
commit 697b6e8e05
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -9,7 +9,7 @@ from typing import Any
import anyio
import anyio.to_thread
import httpx
import pydantic.json
import pydantic
import pydantic_core
from pydantic import Field, ValidationInfo
@ -59,15 +59,12 @@ class FunctionResource(Resource):
)
if isinstance(result, Resource):
return await result.read()
if isinstance(result, bytes):
elif isinstance(result, bytes):
return result
if isinstance(result, str):
elif isinstance(result, str):
return result
try:
return json.dumps(pydantic_core.to_jsonable_python(result))
except (TypeError, pydantic_core.PydanticSerializationError):
# If JSON serialization fails, try str()
return str(result)
else:
return pydantic_core.to_json(result, fallback=str, indent=2).decode()
except Exception as e:
raise ValueError(f"Error reading resource {self.uri}: {e}")