mirror of
https://github.com/Mintplex-Labs/langchain-python.git
synced 2026-07-21 00:35:23 -04:00
a8db594012
Both black and mypy expect a list of files or directories as input.
As-is the Makefile computes a list files changed relative to the last
commit; these are passed to black and mypy in the `format_diff` and
`lint_diff` targets. This is done by way of the Makefile variable
`PYTHON_FILES`. This is to save time by skipping running mypy and black
over the whole source tree.
When no changes have been made, this variable is empty, so the call to
black (and mypy) lacks input files. The call exits with error causing
the Makefile target to error out with:
```bash
$ make format_diff
poetry run black
Usage: black [OPTIONS] SRC ...
One of 'SRC' or 'code' is required.
make: *** [format_diff] Error 1
```
This is unexpected and undesirable, as the naive caller (that's me! 😄 )
will think something else is wrong. This commit smooths over this by
short circuiting when `PYTHON_FILES` is empty.
94 lines
3.4 KiB
Makefile
94 lines
3.4 KiB
Makefile
.PHONY: all clean docs_build docs_clean docs_linkcheck api_docs_build api_docs_clean api_docs_linkcheck format lint test tests test_watch integration_tests docker_tests help extended_tests
|
|
|
|
# Default target executed when no arguments are given to make.
|
|
all: help
|
|
|
|
######################
|
|
# TESTING AND COVERAGE
|
|
######################
|
|
|
|
# Define a variable for the test file path.
|
|
TEST_FILE ?= tests/unit_tests/
|
|
|
|
# Run unit tests and generate a coverage report.
|
|
coverage:
|
|
poetry run pytest --cov \
|
|
--cov-config=.coveragerc \
|
|
--cov-report xml \
|
|
--cov-report term-missing:skip-covered \
|
|
$(TEST_FILE)
|
|
|
|
test tests:
|
|
poetry run pytest --disable-socket --allow-unix-socket $(TEST_FILE)
|
|
|
|
extended_tests:
|
|
poetry run pytest --disable-socket --allow-unix-socket --only-extended tests/unit_tests
|
|
|
|
test_watch:
|
|
poetry run ptw --now . -- tests/unit_tests
|
|
|
|
integration_tests:
|
|
poetry run pytest tests/integration_tests
|
|
|
|
scheduled_tests:
|
|
poetry run pytest -m scheduled tests/integration_tests
|
|
|
|
docker_tests:
|
|
docker build -t my-langchain-image:test .
|
|
docker run --rm my-langchain-image:test
|
|
|
|
######################
|
|
# LINTING AND FORMATTING
|
|
######################
|
|
|
|
# Define a variable for Python and notebook files.
|
|
PYTHON_FILES=.
|
|
lint format: PYTHON_FILES=.
|
|
lint_diff format_diff: PYTHON_FILES=$(shell git diff --relative=libs/langchain --name-only --diff-filter=d master | grep -E '\.py$$|\.ipynb$$')
|
|
|
|
lint lint_diff:
|
|
./scripts/check_pydantic.sh .
|
|
./scripts/check_imports.sh
|
|
poetry run ruff .
|
|
[ "$(PYTHON_FILES)" = "" ] || poetry run black $(PYTHON_FILES) --check
|
|
[ "$(PYTHON_FILES)" = "" ] || poetry run mypy $(PYTHON_FILES)
|
|
|
|
format format_diff:
|
|
[ "$(PYTHON_FILES)" = "" ] || poetry run black $(PYTHON_FILES)
|
|
[ "$(PYTHON_FILES)" = "" ] || poetry run ruff --select I --fix $(PYTHON_FILES)
|
|
|
|
spell_check:
|
|
poetry run codespell --toml pyproject.toml
|
|
|
|
spell_fix:
|
|
poetry run codespell --toml pyproject.toml -w
|
|
|
|
######################
|
|
# HELP
|
|
######################
|
|
|
|
help:
|
|
@echo '===================='
|
|
@echo 'clean - run docs_clean and api_docs_clean'
|
|
@echo 'docs_build - build the documentation'
|
|
@echo 'docs_clean - clean the documentation build artifacts'
|
|
@echo 'docs_linkcheck - run linkchecker on the documentation'
|
|
@echo 'api_docs_build - build the API Reference documentation'
|
|
@echo 'api_docs_clean - clean the API Reference documentation build artifacts'
|
|
@echo 'api_docs_linkcheck - run linkchecker on the API Reference documentation'
|
|
@echo '-- LINTING --'
|
|
@echo 'format - run code formatters'
|
|
@echo 'lint - run linters'
|
|
@echo 'spell_check - run codespell on the project'
|
|
@echo 'spell_fix - run codespell on the project and fix the errors'
|
|
@echo '-- TESTS --'
|
|
@echo 'coverage - run unit tests and generate coverage report'
|
|
@echo 'test - run unit tests'
|
|
@echo 'tests - run unit tests (alias for "make test")'
|
|
@echo 'test TEST_FILE=<test_file> - run all tests in file'
|
|
@echo 'extended_tests - run only extended unit tests'
|
|
@echo 'test_watch - run unit tests in watch mode'
|
|
@echo 'integration_tests - run integration tests'
|
|
@echo 'docker_tests - run unit tests in docker'
|
|
@echo '-- DOCUMENTATION tasks are from the top-level Makefile --'
|