From 16d613488b16445ebd9d18a008bcedfaee790e4a Mon Sep 17 00:00:00 2001 From: Gabe Milani Date: Thu, 14 Aug 2025 18:52:56 -0300 Subject: [PATCH] fix: use json_schema_extra instead of deprecated Field extra args (#417) --- .../tools/exa_tools/exa_search_tool.py | 15 ++++++++++----- tests/tools/test_import_without_warnings.py | 10 ++++++++++ 2 files changed, 20 insertions(+), 5 deletions(-) create mode 100644 tests/tools/test_import_without_warnings.py diff --git a/src/crewai_tools/tools/exa_tools/exa_search_tool.py b/src/crewai_tools/tools/exa_tools/exa_search_tool.py index b3d97d7af..332576039 100644 --- a/src/crewai_tools/tools/exa_tools/exa_search_tool.py +++ b/src/crewai_tools/tools/exa_tools/exa_search_tool.py @@ -1,7 +1,8 @@ -from typing import Any, Optional, Type, List -from pydantic import BaseModel, Field -from crewai.tools import BaseTool, EnvVar import os +from typing import Any, List, Optional, Type + +from crewai.tools import BaseTool, EnvVar +from pydantic import BaseModel, Field try: from exa_py import Exa @@ -38,10 +39,14 @@ class EXASearchTool(BaseTool): type: Optional[str] = "auto" package_dependencies: List[str] = ["exa_py"] api_key: Optional[str] = Field( - default_factory=lambda: os.getenv("EXA_API_KEY"), description="API key for Exa services", required=False + default_factory=lambda: os.getenv("EXA_API_KEY"), + description="API key for Exa services", + json_schema_extra={"required": False}, ) env_vars: List[EnvVar] = [ - EnvVar(name="EXA_API_KEY", description="API key for Exa services", required=False), + EnvVar( + name="EXA_API_KEY", description="API key for Exa services", required=False + ), ] def __init__( diff --git a/tests/tools/test_import_without_warnings.py b/tests/tools/test_import_without_warnings.py new file mode 100644 index 000000000..5635832ed --- /dev/null +++ b/tests/tools/test_import_without_warnings.py @@ -0,0 +1,10 @@ +import pytest +from pydantic.warnings import PydanticDeprecatedSince20 + + +@pytest.mark.filterwarnings("error", category=PydanticDeprecatedSince20) +def test_import_tools_without_pydantic_deprecation_warnings(): + # This test is to ensure that the import of crewai_tools does not raise any Pydantic deprecation warnings. + import crewai_tools + + assert crewai_tools