Files
gh-christianlouis-dmarq/pyproject.toml
T
2026-05-23 13:11:37 +00:00

113 lines
2.3 KiB
TOML

[project]
name = "dmarq"
version = "1.40.0"
description = "A modern, privacy-conscious DMARC monitoring and analysis platform"
readme = "README.md"
license = {text = "MIT"}
requires-python = ">=3.13"
[tool.semantic_release]
version_toml = ["pyproject.toml:project.version"]
version_variables = ["backend/app/__init__.py:__version__"]
commit_message = "chore(release): v{version}"
tag_format = "v{version}"
build_command = "python3 scripts/sync_version.py"
upload_to_pypi = false
[tool.semantic_release.changelog]
changelog_file = "CHANGELOG.md"
[tool.semantic_release.branches.main]
match = "main"
[tool.black]
line-length = 100
target-version = ['py313']
include = '\.pyi?$'
extend-exclude = '''
/(
# directories
\.eggs
| \.git
| \.hg
| \.mypy_cache
| \.tox
| \.venv
| venv
| _build
| buck-out
| build
| dist
)/
'''
[tool.isort]
profile = "black"
line_length = 100
multi_line_output = 3
include_trailing_comma = true
force_grid_wrap = 0
use_parentheses = true
ensure_newline_before_comments = true
known_first_party = ["app"]
skip = ["venv", ".venv", "migrations"]
[tool.pylint.main]
# Run from repo root: pylint backend/app
max-line-length = 100
[tool.pylint."messages control"]
disable = [
"C0111", # missing-docstring
"C0103", # invalid-name (e.g. SessionLocal, TestingSessionLocal)
"R0903", # too-few-public-methods
"R0913", # too-many-arguments
"W0212", # protected-access
]
[tool.pylint.basic]
good-names = ["i", "j", "k", "ex", "_", "id", "db"]
[tool.pytest.ini_options]
testpaths = ["backend/app/tests"]
python_files = ["test_*.py"]
python_classes = ["Test*"]
python_functions = ["test_*"]
addopts = [
"--verbose",
"--strict-markers",
"--tb=short",
]
markers = [
"slow: marks tests as slow",
"integration: marks tests as integration tests",
"security: marks tests as security-related",
]
[tool.coverage.run]
source = ["backend/app"]
omit = [
"*/tests/*",
"*/venv/*",
"*/__pycache__/*",
"*/migrations/*",
]
[tool.coverage.report]
precision = 2
show_missing = true
skip_covered = false
[tool.mypy]
python_version = "3.13"
warn_return_any = true
warn_unused_configs = true
disallow_untyped_defs = false
check_untyped_defs = true
ignore_missing_imports = true
no_implicit_optional = true
warn_redundant_casts = true
warn_unused_ignores = true
warn_no_return = true
strict_optional = true