diff --git a/.github/workflows/imports.yml b/.github/workflows/doc_lint.yml similarity index 54% rename from .github/workflows/imports.yml rename to .github/workflows/doc_lint.yml index 7ad315f1b92..1c50a18e19f 100644 --- a/.github/workflows/imports.yml +++ b/.github/workflows/doc_lint.yml @@ -1,5 +1,5 @@ --- -name: Imports +name: Documentation Lint on: push: @@ -18,6 +18,5 @@ jobs: - name: Run import check run: | # We should not encourage imports directly from main init file - # Expect for __version__ and hub - # And of course expect for this file - git grep 'from langchain import' | grep -vE 'from langchain import (__version__|hub)' | grep -v '.github/workflows/check-imports.yml' && exit 1 || exit 0 + # Expect for hub + git grep 'from langchain import' docs | grep -vE 'from langchain import (hub)' && exit 1 || exit 0 diff --git a/libs/langchain/Makefile b/libs/langchain/Makefile index 14b7ec338c0..bec663579c8 100644 --- a/libs/langchain/Makefile +++ b/libs/langchain/Makefile @@ -77,6 +77,7 @@ lint_diff format_diff: PYTHON_FILES=$(shell git diff --relative=libs/langchain - lint lint_diff: ./scripts/check_pydantic.sh . + ./scripts/check_imports.sh poetry run ruff . poetry run black $(PYTHON_FILES) --check poetry run mypy $(PYTHON_FILES) diff --git a/libs/langchain/scripts/check_imports.sh b/libs/langchain/scripts/check_imports.sh new file mode 100755 index 00000000000..2ac2f48bb54 --- /dev/null +++ b/libs/langchain/scripts/check_imports.sh @@ -0,0 +1,14 @@ +#!/bin/bash + +set -eu + +git grep 'from langchain import' langchain | grep -vE 'from langchain import (__version__|hub)' && exit 1 || exit 0 + +# Pydantic bridge should not import from any other module +git grep 'from langchain ' langchain/pydantic_v1 && exit 1 || exit 0 + +# load should not import from anything except itself and pydantic_v1 +git grep 'from langchain' langchain/load | grep -vE 'from langchain.(pydantic_v1)' && exit 1 || exit 0 + +# utils should not import from anything except itself and pydantic_v1 +git grep 'from langchain' langchain/utils | grep -vE 'from langchain.(pydantic_v1|utils)' && exit 1 || exit 0