langchain,core: Deprecate pydantic.v1 shims (#26280)

Deprecate shim namespace
This commit is contained in:
Eugene Yurtsev
2024-09-10 16:19:20 -04:00
committed by GitHub
parent c62772885a
commit bee8994b7e
6 changed files with 120 additions and 0 deletions

View File

@@ -1,5 +1,7 @@
from importlib import metadata from importlib import metadata
from langchain_core._api.deprecation import warn_deprecated
## Create namespaces for pydantic v1 and v2. ## Create namespaces for pydantic v1 and v2.
# This code must stay at the top of the file before other modules may # This code must stay at the top of the file before other modules may
# attempt to import pydantic since it adds pydantic_v1 and pydantic_v2 to sys.modules. # attempt to import pydantic since it adds pydantic_v1 and pydantic_v2 to sys.modules.
@@ -21,3 +23,21 @@ try:
_PYDANTIC_MAJOR_VERSION: int = int(metadata.version("pydantic").split(".")[0]) _PYDANTIC_MAJOR_VERSION: int = int(metadata.version("pydantic").split(".")[0])
except metadata.PackageNotFoundError: except metadata.PackageNotFoundError:
_PYDANTIC_MAJOR_VERSION = 0 _PYDANTIC_MAJOR_VERSION = 0
warn_deprecated(
"0.3.0",
removal="1.0.0",
alternative="pydantic.v1 or pydantic",
message=(
"As of langchain-core 0.3.0, LangChain uses pydantic v2 internally. "
"The langchain_core.pydantic_v1 module was a "
"compatibility shim for pydantic v1, and should no longer be used. "
"Please update the code to import from Pydantic directly.\n\n"
"For example, replace imports like: "
"`from langchain_core.pydantic_v1 import BaseModel`\n"
"with: `from pydantic import BaseModel`\n"
"or the v1 compatibility namespace if you are working in a code base "
"that has not been fully upgraded to pydantic 2 yet. "
"\tfrom pydantic.v1 import BaseModel\n"
),
)

View File

@@ -1,4 +1,24 @@
from langchain_core._api import warn_deprecated
try: try:
from pydantic.v1.dataclasses import * # noqa: F403 from pydantic.v1.dataclasses import * # noqa: F403
except ImportError: except ImportError:
from pydantic.dataclasses import * # type: ignore # noqa: F403 from pydantic.dataclasses import * # type: ignore # noqa: F403
warn_deprecated(
"0.3.0",
removal="1.0.0",
alternative="pydantic.v1 or pydantic",
message=(
"As of langchain-core 0.3.0, LangChain uses pydantic v2 internally. "
"The langchain_core.pydantic_v1 module was a "
"compatibility shim for pydantic v1, and should no longer be used. "
"Please update the code to import from Pydantic directly.\n\n"
"For example, replace imports like: "
"`from langchain_core.pydantic_v1 import BaseModel`\n"
"with: `from pydantic import BaseModel`\n"
"or the v1 compatibility namespace if you are working in a code base "
"that has not been fully upgraded to pydantic 2 yet. "
"\tfrom pydantic.v1 import BaseModel\n"
),
)

View File

@@ -1,4 +1,24 @@
from langchain_core._api import warn_deprecated
try: try:
from pydantic.v1.main import * # noqa: F403 from pydantic.v1.main import * # noqa: F403
except ImportError: except ImportError:
from pydantic.main import * # type: ignore # noqa: F403 from pydantic.main import * # type: ignore # noqa: F403
warn_deprecated(
"0.3.0",
removal="1.0.0",
alternative="pydantic.v1 or pydantic",
message=(
"As of langchain-core 0.3.0, LangChain uses pydantic v2 internally. "
"The langchain_core.pydantic_v1 module was a "
"compatibility shim for pydantic v1, and should no longer be used. "
"Please update the code to import from Pydantic directly.\n\n"
"For example, replace imports like: "
"`from langchain_core.pydantic_v1 import BaseModel`\n"
"with: `from pydantic import BaseModel`\n"
"or the v1 compatibility namespace if you are working in a code base "
"that has not been fully upgraded to pydantic 2 yet. "
"\tfrom pydantic.v1 import BaseModel\n"
),
)

View File

@@ -1,5 +1,7 @@
from importlib import metadata from importlib import metadata
from langchain_core._api import warn_deprecated
## Create namespaces for pydantic v1 and v2. ## Create namespaces for pydantic v1 and v2.
# This code must stay at the top of the file before other modules may # This code must stay at the top of the file before other modules may
# attempt to import pydantic since it adds pydantic_v1 and pydantic_v2 to sys.modules. # attempt to import pydantic since it adds pydantic_v1 and pydantic_v2 to sys.modules.
@@ -21,3 +23,21 @@ try:
_PYDANTIC_MAJOR_VERSION: int = int(metadata.version("pydantic").split(".")[0]) _PYDANTIC_MAJOR_VERSION: int = int(metadata.version("pydantic").split(".")[0])
except metadata.PackageNotFoundError: except metadata.PackageNotFoundError:
_PYDANTIC_MAJOR_VERSION = 0 _PYDANTIC_MAJOR_VERSION = 0
warn_deprecated(
"0.3.0",
removal="1.0.0",
alternative="pydantic.v1 or pydantic",
message=(
"As of langchain-core 0.3.0, LangChain uses pydantic v2 internally. "
"The langchain.pydantic_v1 module was a "
"compatibility shim for pydantic v1, and should no longer be used. "
"Please update the code to import from Pydantic directly.\n\n"
"For example, replace imports like: "
"`from langchain.pydantic_v1 import BaseModel`\n"
"with: `from pydantic import BaseModel`\n"
"or the v1 compatibility namespace if you are working in a code base "
"that has not been fully upgraded to pydantic 2 yet. "
"\tfrom pydantic.v1 import BaseModel\n"
),
)

View File

@@ -1,4 +1,24 @@
from langchain_core._api import warn_deprecated
try: try:
from pydantic.v1.dataclasses import * # noqa: F403 from pydantic.v1.dataclasses import * # noqa: F403
except ImportError: except ImportError:
from pydantic.dataclasses import * # type: ignore # noqa: F403 from pydantic.dataclasses import * # type: ignore # noqa: F403
warn_deprecated(
"0.3.0",
removal="1.0.0",
alternative="pydantic.v1 or pydantic",
message=(
"As of langchain-core 0.3.0, LangChain uses pydantic v2 internally. "
"The langchain.pydantic_v1 module was a "
"compatibility shim for pydantic v1, and should no longer be used. "
"Please update the code to import from Pydantic directly.\n\n"
"For example, replace imports like: "
"`from langchain.pydantic_v1 import BaseModel`\n"
"with: `from pydantic import BaseModel`\n"
"or the v1 compatibility namespace if you are working in a code base "
"that has not been fully upgraded to pydantic 2 yet. "
"\tfrom pydantic.v1 import BaseModel\n"
),
)

View File

@@ -1,4 +1,24 @@
from langchain_core._api import warn_deprecated
try: try:
from pydantic.v1.main import * # noqa: F403 from pydantic.v1.main import * # noqa: F403
except ImportError: except ImportError:
from pydantic.main import * # type: ignore # noqa: F403 from pydantic.main import * # type: ignore # noqa: F403
warn_deprecated(
"0.3.0",
removal="1.0.0",
alternative="pydantic.v1 or pydantic",
message=(
"As of langchain-core 0.3.0, LangChain uses pydantic v2 internally. "
"The langchain.pydantic_v1 module was a "
"compatibility shim for pydantic v1, and should no longer be used. "
"Please update the code to import from Pydantic directly.\n\n"
"For example, replace imports like: "
"`from langchain.pydantic_v1 import BaseModel`\n"
"with: `from pydantic import BaseModel`\n"
"or the v1 compatibility namespace if you are working in a code base "
"that has not been fully upgraded to pydantic 2 yet. "
"\tfrom pydantic.v1 import BaseModel\n"
),
)