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
parent b4c7db6a50
commit 697b6e8e05
5 changed files with 11 additions and 17 deletions

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}")