forked from langchain-ai/langserve
-
Notifications
You must be signed in to change notification settings - Fork 2
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Create a module for pydantic v1 (langchain-ai#187)
Create a module for pydantic v1 code, so we don't have to worry about conditional imports or try/except blocks in the codebase.
- Loading branch information
Showing
6 changed files
with
32 additions
and
29 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file was deleted.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,25 @@ | ||
from importlib import metadata | ||
|
||
## 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. | ||
|
||
try: | ||
# F401: imported but unused | ||
from pydantic.v1 import BaseModel, Field, ValidationError # noqa: F401 | ||
except ImportError: | ||
from pydantic import BaseModel, Field, ValidationError # noqa: F401 | ||
|
||
|
||
# This is not a pydantic v1 thing, but it feels too small to create a new module for. | ||
try: | ||
_PYDANTIC_MAJOR_VERSION: int = int(metadata.version("pydantic").split(".")[0]) | ||
except metadata.PackageNotFoundError: | ||
_PYDANTIC_MAJOR_VERSION = -1 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters