mirror of
https://github.com/hwchase17/langchain
synced 2024-10-31 15:20:26 +00:00
2e0ddd6fb8
As mentioned in #18322, the current PydanticOutputParser won't work for anyone trying to parse to pydantic v2 models. This PR adds a separate `PydanticV2OutputParser`, as well as a `langchain_core.pydantic_v2` namespace that will fail on import to any projects using pydantic<2. Happy to update the docs for output parsers if this is something we're interesting in adding. On a separate note, I also updated `check_pydantic.sh` to detect pydantic imports with leading whitespace and excluded the internal namespaces. That change can be separated into its own PR if needed. --------- Co-authored-by: Jan Nissen <jan23@gmail.com>
32 lines
1.0 KiB
Bash
Executable File
32 lines
1.0 KiB
Bash
Executable File
#!/bin/bash
|
|
#
|
|
# This script searches for lines starting with "import pydantic" or "from pydantic"
|
|
# in tracked files within a Git repository.
|
|
#
|
|
# Usage: ./scripts/check_pydantic.sh /path/to/repository
|
|
|
|
# Check if a path argument is provided
|
|
if [ $# -ne 1 ]; then
|
|
echo "Usage: $0 /path/to/repository"
|
|
exit 1
|
|
fi
|
|
|
|
repository_path="$1"
|
|
|
|
# Search for lines matching the pattern within the specified repository
|
|
result=$(
|
|
git -C "$repository_path" grep -E '^[[:space:]]*import pydantic|^[[:space:]]*from pydantic' \
|
|
-- ':!langchain_core/pydantic_*' ':!langchain_core/utils' | grep -v 'pydantic: ignore'
|
|
)
|
|
|
|
# Check if any matching lines were found
|
|
if [ -n "$result" ]; then
|
|
echo "ERROR: The following lines need to be updated:"
|
|
echo "$result"
|
|
echo "Please replace the code with an import from langchain_core.pydantic_v1."
|
|
echo "For example, replace 'from pydantic import BaseModel'"
|
|
echo "with 'from langchain_core.pydantic_v1 import BaseModel'"
|
|
echo "If this was intentional, you can add # pydantic: ignore after the import to ignore this error."
|
|
exit 1
|
|
fi
|