105 lines
2.9 KiB
TOML
105 lines
2.9 KiB
TOML
|
|
[project]
|
||
|
|
name = "mews"
|
||
|
|
version = "0.1.0"
|
||
|
|
description = "Page validator and site directory for the Mews Profile"
|
||
|
|
authors = [{name = "Mews Profile developers"}]
|
||
|
|
license = {text = "MIT"}
|
||
|
|
requires-python = ">=3.12"
|
||
|
|
dependencies = [
|
||
|
|
"lxml>=5.0",
|
||
|
|
"httpx>=0.27",
|
||
|
|
"publicsuffixlist>=0.10",
|
||
|
|
"waitress>=3.0",
|
||
|
|
]
|
||
|
|
|
||
|
|
[project.scripts]
|
||
|
|
mewsd = "mews.cli:main"
|
||
|
|
mewslint = "mews.lint:main"
|
||
|
|
|
||
|
|
[dependency-groups]
|
||
|
|
dev = [
|
||
|
|
"pytest>=8.0",
|
||
|
|
"ruff>=0.15",
|
||
|
|
# md2mews.py declares this in its own script header; tests import the
|
||
|
|
# script to check its page emitter still matches mews.pages.
|
||
|
|
"mistune>=3.0",
|
||
|
|
]
|
||
|
|
|
||
|
|
[tool.ruff]
|
||
|
|
line-length = 88
|
||
|
|
# Both predate this configuration and run standalone from their own dependency
|
||
|
|
# headers, so they are left as they are rather than reformatted.
|
||
|
|
extend-exclude = ["md2mews.py", "dtd/check_dtd.py"]
|
||
|
|
|
||
|
|
[tool.ruff.lint]
|
||
|
|
select = [
|
||
|
|
"B", # flake8-bugbear
|
||
|
|
"BLE", # flake8-blind-except
|
||
|
|
"C4", # flake8-comprehensions
|
||
|
|
"D", # pydocstyle
|
||
|
|
"E", # pycodestyle
|
||
|
|
"F", # pyflakes
|
||
|
|
"I", # isort
|
||
|
|
"ICN", # flake8-import-conventions
|
||
|
|
"ISC", # flake8-implicit-str-concat
|
||
|
|
"PGH", # pygrep-hooks
|
||
|
|
"PL", # pylint
|
||
|
|
"RET", # flake8-return
|
||
|
|
"RUF", # ruff-specific rules
|
||
|
|
"SIM", # flake8-simplify
|
||
|
|
"T10", # flake8-debugger
|
||
|
|
"T20", # flake8-print
|
||
|
|
"TID", # flake8-tidy-imports
|
||
|
|
"TRY", # tryceratops
|
||
|
|
"UP", # pyupgrade
|
||
|
|
"W", # pycodestyle
|
||
|
|
"YTT", # flake8-2020
|
||
|
|
]
|
||
|
|
|
||
|
|
ignore = [
|
||
|
|
"D100", # missing docstring in public module
|
||
|
|
"D104", # missing docstring in public package
|
||
|
|
"D203", # blank line before class docstring
|
||
|
|
"D213", # multi-line docstring summary should start at the second line
|
||
|
|
"ISC001", # disabled so `ruff format` works without warning
|
||
|
|
"D105", # missing docstring in magic method
|
||
|
|
"D107", # missing docstring in __init__
|
||
|
|
"PLR0911", # too many return statements
|
||
|
|
"PLR0912", # too many branches
|
||
|
|
"PLR0913", # too many arguments
|
||
|
|
"PLR0915", # too many statements
|
||
|
|
"TRY003", # exception messages are the text shown to the author
|
||
|
|
"PLR0917", # too many positional arguments: page() mirrors md2mews.page()
|
||
|
|
# The messages authors read are wrapped across lines inside two-element
|
||
|
|
# tuples, where a missing comma would raise rather than merge two items.
|
||
|
|
"ISC004",
|
||
|
|
]
|
||
|
|
|
||
|
|
[tool.ruff.lint.isort]
|
||
|
|
combine-as-imports = true
|
||
|
|
force-sort-within-sections = true
|
||
|
|
known-first-party = ["mews"]
|
||
|
|
|
||
|
|
[tool.ruff.lint.per-file-ignores]
|
||
|
|
"tests/*" = [
|
||
|
|
"D103", # a test name says what it tests
|
||
|
|
"PLC0415", # imports inside a test keep it self-contained
|
||
|
|
"PLE2502", # fixtures deliberately carry bidi overrides
|
||
|
|
"PLR2004", # expected values belong in the assertion
|
||
|
|
"D401", # a fixture docstring names what the fixture is
|
||
|
|
]
|
||
|
|
# These print their results: they are the command line interface.
|
||
|
|
"mews/cli.py" = ["T201"]
|
||
|
|
"mews/lint.py" = ["T201"]
|
||
|
|
|
||
|
|
[tool.pytest.ini_options]
|
||
|
|
testpaths = ["tests"]
|
||
|
|
|
||
|
|
[build-system]
|
||
|
|
requires = ["uv_build>=0.8"]
|
||
|
|
build-backend = "uv_build"
|
||
|
|
|
||
|
|
[tool.uv.build-backend]
|
||
|
|
module-root = ""
|
||
|
|
module-name = "mews"
|