Replace variable PY_SRC_ROOT by PY_CHECK_ROOTS. The name PY_SRC_ROOT was a bad choice, given that it isn't immediately obvious that it a) can contain multiple root locations to be checked, and that it b) specifically concerns static type checking.
As of this commit, it's possible to limit the type checking scope with PY_CHECK_ROOTS as in
PY_CHECK_ROOTS="src/python/jw/pkg/CmdBase.py src/python/jw/lib" \ make checkSigned-off-by: Jan Lindemann <jan@janware.com>
73 lines
2.2 KiB
Makefile
73 lines
2.2 KiB
Makefile
TD_COPY_FILES += pyproject.toml
|
|
|
|
PY_CHECK_EXCLUDE ?=
|
|
ifndef PY_CHECK_ROOTS
|
|
PY_CHECK_ROOTS += $(wildcard $(TOPDIR)/src $(TOPDIR)/tools)
|
|
endif
|
|
|
|
ifndef PY_CHECK_RUFF
|
|
PY_CHECK_RUFF := $(shell which ruff 2>/dev/null)
|
|
endif
|
|
|
|
ifndef PY_CHECK_YAPF
|
|
PY_CHECK_YAPF := $(firstword $(wildcard /usr/bin/yapf /usr/bin/yapf3))
|
|
endif
|
|
|
|
ifndef PY_CHECK_PYRIGHT
|
|
PY_CHECK_PYRIGHT := $(shell which pyright 2>/dev/null)
|
|
TD_GENERATE_FILES += pyrightconfig.json
|
|
endif
|
|
|
|
all:
|
|
|
|
format: py-format
|
|
check-syntax: py-check-syntax
|
|
check-format: py-check-format
|
|
|
|
py-check: py-check-syntax py-check-format
|
|
py-check-syntax:
|
|
ifneq ($(PY_CHECK_RUFF),)
|
|
$(PY_CHECK_RUFF) check $(addprefix --exclude ,$(PY_CHECK_EXCLUDE)) $(PY_CHECK_ROOTS)
|
|
endif
|
|
mypy $(addprefix --exclude ,$(PY_CHECK_EXCLUDE)) $(PY_CHECK_ROOTS)
|
|
ifneq ($(PY_CHECK_PYRIGHT),)
|
|
pyright $(PY_CHECK_ROOTS)
|
|
endif
|
|
|
|
py-check-format:
|
|
ifneq ($(PY_CHECK_YAPF),)
|
|
$(PY_CHECK_YAPF) --diff --recursive $(PY_CHECK_ROOTS)
|
|
endif
|
|
|
|
py-format:
|
|
find . -type f -name '*.py' -print0 | \
|
|
xargs -0 sed -i -E '1{/^# -\*- coding: utf-8 -\*-$$/{:a;N;/\n[[:space:]]*$$/ba;s/^# -\*- coding: utf-8 -\*-\n([[:space:]]*\n)*/ /;s/^ //}}'
|
|
ifneq ($(PY_CHECK_YAPF),)
|
|
$(PY_CHECK_YAPF) --in-place --recursive $(PY_CHECK_ROOTS)
|
|
endif
|
|
|
|
py-format-assignments:
|
|
find $(PY_CHECK_ROOTS) \
|
|
-path './.git' -prune -o \
|
|
-type f -name '*.py' \
|
|
-execdir /usr/bin/sed -i 's/^\(\s\+[a-zA-Z0-9_]\+\)=\([^,[:space:]]\+\)\([,(]\)*\s*$$/\1 = \2\3/g' {} '+'
|
|
git diff --exit-code
|
|
|
|
py-check-annotation-imports:
|
|
ifneq ($(PY_CHECK_RUFF),)
|
|
$(PY_CHECK_RUFF) check --select TC,FA --diff --unsafe-fixes $(PY_CHECK_ROOTS)
|
|
endif
|
|
|
|
py-format-annotation-imports:
|
|
ifneq ($(PY_CHECK_RUFF),)
|
|
$(PY_CHECK_RUFF) check --select TC,FA --fix --unsafe-fixes $(PY_CHECK_ROOTS)
|
|
endif
|
|
|
|
clean.topdir: clean.py-check
|
|
clean.py-check:
|
|
rm -rf .mypy_cache
|
|
|
|
pyrightconfig.json:
|
|
$(PYTHON) $(JWB_SCRIPT_DIR)/jw-pkg.py -p $(PROJECTS_DIR) -t $(TOPDIR) --topdir-format unaltered projects create-file --format pyright \
|
|
$(PROJECT) --field base=$(JW_PKG_CONF_BASE_DIR)/project/pyrightconfig-base.json $(addprefix --field include=,$(wildcard src/python tools/python)) > $@.tmp
|
|
mv $@.tmp $@
|