mirror of
https://github.com/hwchase17/langchain.git
synced 2025-09-27 22:37:46 +00:00
community[patch]: Re-add pydantic usage linter (#26390)
Re-add pydantic linter.
This commit is contained in:
@@ -45,6 +45,7 @@ lint_tests: PYTHON_FILES=tests
|
|||||||
lint_tests: MYPY_CACHE=.mypy_cache_test
|
lint_tests: MYPY_CACHE=.mypy_cache_test
|
||||||
|
|
||||||
lint lint_diff lint_package lint_tests:
|
lint lint_diff lint_package lint_tests:
|
||||||
|
./scripts/check_pydantic.sh .
|
||||||
./scripts/lint_imports.sh .
|
./scripts/lint_imports.sh .
|
||||||
./scripts/check_pickle.sh .
|
./scripts/check_pickle.sh .
|
||||||
[ "$(PYTHON_FILES)" = "" ] || poetry run ruff check $(PYTHON_FILES)
|
[ "$(PYTHON_FILES)" = "" ] || poetry run ruff check $(PYTHON_FILES)
|
||||||
|
55
libs/community/scripts/check_pydantic.sh
Executable file
55
libs/community/scripts/check_pydantic.sh
Executable file
@@ -0,0 +1,55 @@
|
|||||||
|
#!/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"
|
||||||
|
|
||||||
|
# Check that we are not using features that cannot be captured via init.
|
||||||
|
# pre-init is a custom decorator that we introduced to capture the same semantics
|
||||||
|
# as @root_validator(pre=False, skip_on_failure=False) available in pydantic 1.
|
||||||
|
count=$(git grep -E '(@root_validator)|(@validator)|(@field_validator)|(@pre_init)' -- "*.py" | wc -l)
|
||||||
|
# PRs that increase the current count will not be accepted.
|
||||||
|
# PRs that decrease update the code in the repository
|
||||||
|
# and allow decreasing the count of are welcome!
|
||||||
|
current_count=129
|
||||||
|
|
||||||
|
if [ "$count" -gt "$current_count" ]; then
|
||||||
|
echo "The PR seems to be introducing new usage of @root_validator and/or @field_validator."
|
||||||
|
echo "git grep -E '(@root_validator)|(@validator)|(@field_validator)|(@pre_init)' | wc -l returned $count"
|
||||||
|
echo "whereas the expected count should be equal or less than $current_count"
|
||||||
|
echo "Please update the code to instead use @model_validator or __init__"
|
||||||
|
exit 1
|
||||||
|
elif [ "$count" -lt "$current_count" ]; then
|
||||||
|
echo "Please update the $current_count variable in ./scripts/check_pydantic.sh to $count"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# We do not want to be using pydantic-settings. There's already a pattern to look
|
||||||
|
# up env settings in the code base, and we want to be using the existing pattern
|
||||||
|
# rather than relying on an external dependency.
|
||||||
|
count=$(git grep -E '^import pydantic_settings|^from pydantic_settings' -- "*.py" | wc -l)
|
||||||
|
|
||||||
|
# PRs that increase the current count will not be accepted.
|
||||||
|
# PRs that decrease update the code in the repository
|
||||||
|
# and allow decreasing the count of are welcome!
|
||||||
|
current_count=8
|
||||||
|
|
||||||
|
if [ "$count" -gt "$current_count" ]; then
|
||||||
|
echo "The PR seems to be introducing new usage pydantic_settings."
|
||||||
|
echo "git grep -E '^import pydantic_settings|^from pydantic_settings' | wc -l returned $count"
|
||||||
|
echo "whereas the expected count should be equal or less than $current_count"
|
||||||
|
echo "Please update the code to use Field(default_factory=from_env(..)) or Field(default_factory=secret_from_env(..))"
|
||||||
|
exit 1
|
||||||
|
elif [ "$count" -lt "$current_count" ]; then
|
||||||
|
echo "Please update the $current_count variable in ./scripts/check_pydantic.sh to $count"
|
||||||
|
exit 1
|
||||||
|
fi
|
Reference in New Issue
Block a user