py-topdir.mk: Add machinery to generate pyproject.toml
pyproject.toml is currently copied unchanged from conf/topdir to the
toplevel directory. Set up machinery in py-topdir.mk to render it
from a template in conf/templates instead, replacing {mypypath} in
the process.
Signed-off-by: Jan Lindemann <jan@janware.com>
This commit is contained in:
parent
9ba6c70dee
commit
850efda804
2 changed files with 13 additions and 2 deletions
80
conf/templates/pyproject.toml
Normal file
80
conf/templates/pyproject.toml
Normal file
|
|
@ -0,0 +1,80 @@
|
||||||
|
[tool.isort]
|
||||||
|
|
||||||
|
lines_between_sections = 1
|
||||||
|
lines_between_types = 1
|
||||||
|
|
||||||
|
# Make sure external deps are classified above
|
||||||
|
known_third_party = [
|
||||||
|
"yaml",
|
||||||
|
]
|
||||||
|
|
||||||
|
# Define semantic/dependency layers.
|
||||||
|
sections = [
|
||||||
|
"FUTURE",
|
||||||
|
"STDLIB",
|
||||||
|
"THIRDPARTY",
|
||||||
|
"JW_BASIC",
|
||||||
|
"FIRSTPARTY",
|
||||||
|
"LOCALFOLDER",
|
||||||
|
]
|
||||||
|
|
||||||
|
known_jw_basic = [
|
||||||
|
"jw.pkg",
|
||||||
|
]
|
||||||
|
|
||||||
|
# Catch other jw.* imports not assigned to a finer section.
|
||||||
|
known_first_party = [
|
||||||
|
"jw",
|
||||||
|
]
|
||||||
|
|
||||||
|
|
||||||
|
[tool.ruff]
|
||||||
|
line-length = 88
|
||||||
|
output-format = "concise"
|
||||||
|
|
||||||
|
[tool.ruff.format]
|
||||||
|
|
||||||
|
quote-style = "single"
|
||||||
|
|
||||||
|
[tool.ruff.lint]
|
||||||
|
|
||||||
|
future-annotations = true
|
||||||
|
|
||||||
|
select = [
|
||||||
|
"F", # Pyflakes, includes F401
|
||||||
|
"E", # pycodestyle errors
|
||||||
|
"W", # pycodestyle warnings
|
||||||
|
"TC", # type-checking import placement rules
|
||||||
|
"FA", # future annotations rules
|
||||||
|
]
|
||||||
|
|
||||||
|
ignore = [
|
||||||
|
"E251",
|
||||||
|
]
|
||||||
|
|
||||||
|
unfixable = [
|
||||||
|
"E251",
|
||||||
|
]
|
||||||
|
|
||||||
|
[tool.yapf]
|
||||||
|
|
||||||
|
based_on_style = "pep8"
|
||||||
|
column_limit = 88
|
||||||
|
indent_width = 4
|
||||||
|
continuation_indent_width = 4
|
||||||
|
|
||||||
|
continuation_align_style = "space"
|
||||||
|
|
||||||
|
dedent_closing_brackets = true
|
||||||
|
coalesce_brackets = false
|
||||||
|
|
||||||
|
split_all_comma_separated_values = false
|
||||||
|
split_all_top_level_comma_separated_values = true
|
||||||
|
|
||||||
|
split_before_first_argument = true
|
||||||
|
split_arguments_when_comma_terminated = true
|
||||||
|
split_before_expression_after_opening_paren = true
|
||||||
|
|
||||||
|
spaces_around_default_or_named_assign = true
|
||||||
|
blank_line_before_nested_class_or_def = true
|
||||||
|
blank_lines_around_top_level_definition = 1
|
||||||
|
|
@ -1,6 +1,12 @@
|
||||||
TD_COPY_FILES += pyproject.toml
|
include $(JWBDIR)/make/ldlibpath.mk
|
||||||
|
|
||||||
|
TD_GENERATE_FILES += pyproject.toml
|
||||||
|
|
||||||
PY_CHECK_EXCLUDE ?=
|
PY_CHECK_EXCLUDE ?=
|
||||||
|
|
||||||
|
MYPY_CONFIG_PATH = $(subst :,:$$MYPY_CONFIG_FILE_DIR/,:$(PYTHONPATH))
|
||||||
|
MYPY_PATH_DIRECTIVE = mypy_path = "$(MYPY_CONFIG_PATH)"
|
||||||
|
|
||||||
ifndef PY_CHECK_ROOTS
|
ifndef PY_CHECK_ROOTS
|
||||||
PY_CHECK_ROOTS += $(wildcard $(TOPDIR)/src $(TOPDIR)/tools)
|
PY_CHECK_ROOTS += $(wildcard $(TOPDIR)/src $(TOPDIR)/tools)
|
||||||
endif
|
endif
|
||||||
|
|
@ -70,7 +76,12 @@ clean.topdir: clean.py-check
|
||||||
clean.py-check:
|
clean.py-check:
|
||||||
rm -rf .mypy_cache
|
rm -rf .mypy_cache
|
||||||
|
|
||||||
|
pyproject.toml:
|
||||||
|
$(PYTHON) $(JWB_SCRIPT_DIR)/jw-pkg.py -p $(PROJECTS_DIR) -t $(TOPDIR) --topdir-format unaltered projects create-file --format tmpl \
|
||||||
|
--template-name $@ --search-path $(JW_PKG_CONF_BASE_DIR)/templates --field mypypath='$(MYPY_PATH_DIRECTIVE)' $(PROJECT) > $@.tmp
|
||||||
|
mv $@.tmp $@
|
||||||
|
|
||||||
pyrightconfig.json:
|
pyrightconfig.json:
|
||||||
$(PYTHON) $(JWB_SCRIPT_DIR)/jw-pkg.py -p $(PROJECTS_DIR) -t $(TOPDIR) --topdir-format unaltered projects create-file --format pyright \
|
$(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
|
--field base=$(JW_PKG_CONF_BASE_DIR)/project/pyrightconfig-base.json $(addprefix --field include=,$(wildcard src/python tools/python)) $(PROJECT) > $@.tmp
|
||||||
mv $@.tmp $@
|
mv $@.tmp $@
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue