From 2c896845fac6b8b17c2e1370d14a910922165e15 Mon Sep 17 00:00:00 2001 From: Michael Jurasovic Date: Thu, 5 Dec 2024 19:04:38 +1100 Subject: [PATCH] Avoid new try_eval_type unavailable on older pydantic --- src/fastmcp/utilities/func_metadata.py | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/src/fastmcp/utilities/func_metadata.py b/src/fastmcp/utilities/func_metadata.py index 9bd49214d..53b86fa6e 100644 --- a/src/fastmcp/utilities/func_metadata.py +++ b/src/fastmcp/utilities/func_metadata.py @@ -8,7 +8,7 @@ from typing import ( ) from pydantic import Field from fastmcp.exceptions import InvalidSignature -from pydantic._internal._typing_extra import try_eval_type +from pydantic._internal._typing_extra import eval_type_lenient import json from pydantic import BaseModel from pydantic.fields import FieldInfo @@ -178,12 +178,7 @@ def func_metadata(func: Callable, skip_names: Sequence[str] = ()) -> FuncMetadat def _get_typed_annotation(annotation: Any, globalns: Dict[str, Any]) -> Any: if isinstance(annotation, str): annotation = ForwardRef(annotation) - annotation, status = try_eval_type(annotation, globalns, globalns) - - # This check and raise could perhaps be skipped, and we (FastMCP) just call - # model_rebuild right before using it 🤷 - if status is False: - raise InvalidSignature(f"Unable to evaluate type annotation {annotation}") + annotation = eval_type_lenient(annotation, globalns, globalns) return annotation