-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathpyproject.toml
More file actions
105 lines (92 loc) · 2.47 KB
/
Copy pathpyproject.toml
File metadata and controls
105 lines (92 loc) · 2.47 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
[build-system]
requires = ["uv-build>=0.3.0"]
build-backend = "uv_build"
[project]
name = "decree"
version = "0.2.0"
description = "Decree: Python 3.11+ reimplementation of adr-tools with a typed API and Typer CLI."
readme = "README.md"
requires-python = ">=3.11"
license = { text = "BSD-3-Clause" }
authors = [{ name = "Steven Cutting" }]
classifiers = [
"License :: OSI Approved :: BSD License",
"Programming Language :: Python :: 3",
"Programming Language :: Python :: 3.11",
"Programming Language :: Python :: 3.12",
"Programming Language :: Python :: 3.13",
"Environment :: Console",
"Topic :: Documentation",
]
dependencies = [
"typer>=0.12.0",
"beartype>=0.18.5",
"boltons>=25.0.0",
]
[project.optional-dependencies]
dev = [
"pytest>=8.2",
"pytest-cov>=5.0",
"coverage>=7.6",
"nox>=2024.4.15",
"ruff>=0.6.9",
"mypy>=1.11",
"types-setuptools",
"types-python-dateutil",
"pymarkdownlnt>=0.9.17",
]
[dependency-groups]
dev = [
"ipython>=9.6.0",
"pre-commit>=4.3.0",
]
[project.scripts]
decree = "decree.cli:main"
dev = "dev.cli:main"
[tool.uv]
[tool.uv.pip]
generate-hashes = true
[tool.ruff]
line-length = 100
target-version = "py311"
[tool.ruff.lint]
select = ["ALL"] # enable all stable rule families
ignore = [
"COM812", # avoid formatter conflicts with ruff-format
"D203", # incompatible with D211 (no-blank-line-before-class)
"D213", # incompatible with D212 (multi-line-summary-first-line
"TC003", # type annotation only imports are used by beartype at runtime.
]
[tool.ruff.lint.per-file-ignores]
"tests/**/*.py" = [
"D100", # tests do not require module-level docstrings
"D101", # tests do not require class docstrings
"D102", # tests do not require method docstrings
"D103", # tests do not require function docstrings
"S101", # pytest assertions rely on bare assert statements
]
"tests/decree/test_cli_success_paths.py" = [
"SLF001", # tests intentionally exercise a private helper for error handling
]
[tool.mypy]
python_version = "3.11"
strict = true
warn_unused_configs = true
warn_redundant_casts = true
disallow_any_generics = true
disallow_subclassing_any = true
no_implicit_optional = true
show_error_codes = true
exclude = "(?x)(^third_party/|^packaging/)"
[[tool.mypy.overrides]]
module = "boltons.*"
ignore_missing_imports = true
[tool.pytest.ini_options]
addopts = "-q --disable-warnings"
testpaths = ["tests"]
[tool.coverage.run]
branch = true
source = ["decree"]
[tool.coverage.report]
fail_under = 90
show_missing = true