From 0fbd5ca63782bf892100e67def43475a7fe0b1df Mon Sep 17 00:00:00 2001 From: Mason Daugherty Date: Wed, 8 Oct 2025 23:31:38 -0400 Subject: [PATCH 1/2] chore(core): delete `pydantic_v1/` --- .../langchain_core/pydantic_v1/__init__.py | 30 ------------------- .../langchain_core/pydantic_v1/dataclasses.py | 23 -------------- libs/core/langchain_core/pydantic_v1/main.py | 23 -------------- 3 files changed, 76 deletions(-) delete mode 100644 libs/core/langchain_core/pydantic_v1/__init__.py delete mode 100644 libs/core/langchain_core/pydantic_v1/dataclasses.py delete mode 100644 libs/core/langchain_core/pydantic_v1/main.py diff --git a/libs/core/langchain_core/pydantic_v1/__init__.py b/libs/core/langchain_core/pydantic_v1/__init__.py deleted file mode 100644 index 1f7c9cb86991f..0000000000000 --- a/libs/core/langchain_core/pydantic_v1/__init__.py +++ /dev/null @@ -1,30 +0,0 @@ -"""Pydantic v1 compatibility shim.""" - -from importlib import metadata - -from pydantic.v1 import * # noqa: F403 - -from langchain_core._api.deprecation import warn_deprecated - -try: - _PYDANTIC_MAJOR_VERSION: int = int(metadata.version("pydantic").split(".")[0]) -except metadata.PackageNotFoundError: - _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" - ), -) diff --git a/libs/core/langchain_core/pydantic_v1/dataclasses.py b/libs/core/langchain_core/pydantic_v1/dataclasses.py deleted file mode 100644 index cdcdb77e3a0b2..0000000000000 --- a/libs/core/langchain_core/pydantic_v1/dataclasses.py +++ /dev/null @@ -1,23 +0,0 @@ -"""Pydantic v1 compatibility shim.""" - -from pydantic.v1.dataclasses import * # noqa: F403 - -from langchain_core._api import warn_deprecated - -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" - ), -) diff --git a/libs/core/langchain_core/pydantic_v1/main.py b/libs/core/langchain_core/pydantic_v1/main.py deleted file mode 100644 index 005ad4ed347cd..0000000000000 --- a/libs/core/langchain_core/pydantic_v1/main.py +++ /dev/null @@ -1,23 +0,0 @@ -"""Pydantic v1 compatibility shim.""" - -from pydantic.v1.main import * # noqa: F403 - -from langchain_core._api import warn_deprecated - -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" - ), -) From 3f8f383f924adfe693e384fb717296ef05bc4e96 Mon Sep 17 00:00:00 2001 From: Mason Daugherty Date: Wed, 8 Oct 2025 23:34:32 -0400 Subject: [PATCH 2/2] more --- .../langchain_classic/pydantic_v1/__init__.py | 38 ------------------- .../pydantic_v1/dataclasses.py | 20 ---------- .../langchain_classic/pydantic_v1/main.py | 20 ---------- 3 files changed, 78 deletions(-) delete mode 100644 libs/langchain/langchain_classic/pydantic_v1/__init__.py delete mode 100644 libs/langchain/langchain_classic/pydantic_v1/dataclasses.py delete mode 100644 libs/langchain/langchain_classic/pydantic_v1/main.py diff --git a/libs/langchain/langchain_classic/pydantic_v1/__init__.py b/libs/langchain/langchain_classic/pydantic_v1/__init__.py deleted file mode 100644 index 8fceb791cc29b..0000000000000 --- a/libs/langchain/langchain_classic/pydantic_v1/__init__.py +++ /dev/null @@ -1,38 +0,0 @@ -from importlib import metadata - -from langchain_core._api import warn_deprecated - -## Create namespaces for pydantic v1 and v2. -# 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. -# -# This hack is done for the following reasons: -# * LangChain will attempt to remain compatible with both pydantic v1 and v2 since -# both dependencies and dependents may be stuck on either version of v1 or v2. -# * Creating namespaces for pydantic v1 and v2 should allow us to write code that -# unambiguously uses either v1 or v2 API. -# * This change is easier to roll out and roll back. -from pydantic.v1 import * # noqa: F403 - -try: - _PYDANTIC_MAJOR_VERSION: int = int(metadata.version("pydantic").split(".")[0]) -except metadata.PackageNotFoundError: - _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_classic.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" - ), -) diff --git a/libs/langchain/langchain_classic/pydantic_v1/dataclasses.py b/libs/langchain/langchain_classic/pydantic_v1/dataclasses.py deleted file mode 100644 index 78788016bb76e..0000000000000 --- a/libs/langchain/langchain_classic/pydantic_v1/dataclasses.py +++ /dev/null @@ -1,20 +0,0 @@ -from langchain_core._api import warn_deprecated -from pydantic.v1.dataclasses import * # 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_classic.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" - ), -) diff --git a/libs/langchain/langchain_classic/pydantic_v1/main.py b/libs/langchain/langchain_classic/pydantic_v1/main.py deleted file mode 100644 index 1895c08fb69ff..0000000000000 --- a/libs/langchain/langchain_classic/pydantic_v1/main.py +++ /dev/null @@ -1,20 +0,0 @@ -from langchain_core._api import warn_deprecated -from pydantic.v1.main import * # 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_classic.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" - ), -)