From fd1f3ca2136d0da7c49ff23893594db032974c70 Mon Sep 17 00:00:00 2001 From: Bagatur <22008038+baskaryan@users.noreply.github.com> Date: Wed, 4 Sep 2024 15:02:05 -0700 Subject: [PATCH] exa[major]: use pydantic v2 (#26069) --- libs/partners/exa/langchain_exa/retrievers.py | 23 ++++++++----------- libs/partners/exa/langchain_exa/tools.py | 23 +++++++++++-------- 2 files changed, 24 insertions(+), 22 deletions(-) diff --git a/libs/partners/exa/langchain_exa/retrievers.py b/libs/partners/exa/langchain_exa/retrievers.py index 9bf02ec5a82..b5da661c7b7 100644 --- a/libs/partners/exa/langchain_exa/retrievers.py +++ b/libs/partners/exa/langchain_exa/retrievers.py @@ -1,18 +1,14 @@ -from typing import ( # type: ignore[import-not-found, import-not-found] - Any, - Dict, - List, - Literal, - Optional, - Union, -) +from typing import Any, Dict, List, Literal, Optional, Union -from exa_py import Exa # type: ignore -from exa_py.api import HighlightsContentsOptions, TextContentsOptions # type: ignore +from exa_py import Exa # type: ignore[untyped-import] +from exa_py.api import ( + HighlightsContentsOptions, # type: ignore[untyped-import] + TextContentsOptions, # type: ignore[untyped-import] +) from langchain_core.callbacks import CallbackManagerForRetrieverRun from langchain_core.documents import Document -from langchain_core.pydantic_v1 import Field, SecretStr, root_validator from langchain_core.retrievers import BaseRetriever +from pydantic import Field, SecretStr, model_validator from langchain_exa._utilities import initialize_client @@ -64,8 +60,9 @@ class ExaSearchRetriever(BaseRetriever): exa_api_key: SecretStr = Field(default=None) exa_base_url: Optional[str] = None - @root_validator(pre=True) - def validate_environment(cls, values: Dict) -> Dict: + @model_validator(mode="before") + @classmethod + def validate_environment(cls, values: Dict) -> Any: """Validate the environment.""" values = initialize_client(values) return values diff --git a/libs/partners/exa/langchain_exa/tools.py b/libs/partners/exa/langchain_exa/tools.py index 808f6bdc57c..17fb501f931 100644 --- a/libs/partners/exa/langchain_exa/tools.py +++ b/libs/partners/exa/langchain_exa/tools.py @@ -1,14 +1,17 @@ -"""Tool for the Exa Search API.""" # type: ignore[import-not-found, import-not-found] +"""Tool for the Exa Search API.""" -from typing import Dict, List, Optional, Union +from typing import Any, Dict, List, Optional, Union -from exa_py import Exa # type: ignore -from exa_py.api import HighlightsContentsOptions, TextContentsOptions # type: ignore +from exa_py import Exa # type: ignore[untyped-import] +from exa_py.api import ( + HighlightsContentsOptions, # type: ignore[untyped-import] + TextContentsOptions, # type: ignore[untyped-import] +) from langchain_core.callbacks import ( CallbackManagerForToolRun, ) -from langchain_core.pydantic_v1 import Field, SecretStr, root_validator from langchain_core.tools import BaseTool +from pydantic import Field, SecretStr, model_validator from langchain_exa._utilities import initialize_client @@ -61,8 +64,9 @@ class ExaSearchResults(BaseTool): client: Exa = Field(default=None) exa_api_key: SecretStr = Field(default=None) - @root_validator(pre=True) - def validate_environment(cls, values: Dict) -> Dict: + @model_validator(mode="before") + @classmethod + def validate_environment(cls, values: Dict) -> Any: """Validate the environment.""" values = initialize_client(values) return values @@ -114,8 +118,9 @@ class ExaFindSimilarResults(BaseTool): exa_api_key: SecretStr = Field(default=None) exa_base_url: Optional[str] = None - @root_validator(pre=True) - def validate_environment(cls, values: Dict) -> Dict: + @model_validator(mode="before") + @classmethod + def validate_environment(cls, values: Dict) -> Any: """Validate the environment.""" values = initialize_client(values) return values