jw-pkg/conf/templates/pyproject.toml
Jan Lindemann a3e46121da pyproject.toml: Enable mypy.truthy-iterable
Add the truthy-iterable error code to the mypy configuration. This
detects Iterable parameters that are used in boolean contexts (if not
names, etc.) since Iterable values are always truthy.

The fix is to change Iterable[str] parameters to Collection[str] when
they are tested for emptiness, since Collection guarantees __len__.

Assisted-by: unsloth/Qwen3.6-35B-A3B-GGUF:IQ4_NL and pi.dev 0.81.1
Signed-off-by: Jan Lindemann <jan@janware.com>
2026-08-09 11:32:03 +00:00

100 lines
1.7 KiB
TOML

[tool.mypy]
{mypypath}
warn_redundant_casts = true
strict_equality = true
disallow_any_generics = true
warn_unused_ignores = true
enable_error_code = [
"explicit-override",
"ignore-without-code",
"possibly-undefined",
"truthy-bool",
"truthy-iterable",
]
[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