-
Notifications
You must be signed in to change notification settings - Fork 31
Expand file tree
/
Copy pathpyproject.toml
More file actions
154 lines (138 loc) · 4.46 KB
/
pyproject.toml
File metadata and controls
154 lines (138 loc) · 4.46 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
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
[build-system]
# Use uv's PEP 517 build backend for fast, reproducible builds
build-backend = "uv_build"
requires = ["uv-build<0.11"]
[project]
name = "watchmaker"
version = "0.29.4"
description = "Applied Configuration Management"
readme = {file = "README.md", content-type = "text/markdown"}
license = "Apache-2.0"
license-files = ["LICENSE", "AUTHORS.md"]
authors = [
{name = "Plus3IT Maintainers of Watchmaker", email = "projects@plus3it.com"},
]
requires-python = ">=3.8"
classifiers = [
"Development Status :: 4 - Beta",
"Intended Audience :: Developers",
"Intended Audience :: System Administrators",
"Operating System :: POSIX :: Linux",
"Operating System :: Microsoft :: Windows",
"Programming Language :: Python",
"Programming Language :: Python :: 3",
"Programming Language :: Python :: 3.8",
"Programming Language :: Python :: 3.9",
"Programming Language :: Python :: 3.10",
"Programming Language :: Python :: 3.11",
"Programming Language :: Python :: 3.12",
"Programming Language :: Python :: 3.13",
"Programming Language :: Python :: 3.14",
"Programming Language :: Python :: Implementation :: CPython",
"Programming Language :: Python :: Implementation :: PyPy",
"Topic :: Utilities",
]
dependencies = [
"backoff",
"click",
"defusedxml; platform_system=='Windows'",
"distro",
"importlib_resources; python_version<'3.9'",
"pywin32; platform_system=='Windows'",
"PyYAML",
"compatibleversion>=0.1.2",
"oschmod>=0.1.3",
]
[project.urls]
Homepage = "https://github.com/plus3it/watchmaker"
Repository = "https://github.com/plus3it/watchmaker"
Documentation = "https://watchmaker.cloudarmor.io"
Changelog = "https://watchmaker.cloudarmor.io/en/stable/changelog.html"
[project.scripts]
wam = "watchmaker.cli:main"
watchmaker = "watchmaker.cli:main"
[tool.uv.build-backend]
source-include = [
"CHANGELOG.md",
"CONTRIBUTING.md",
]
source-exclude = [
".bumpversion.cfg",
".editorconfig",
".git",
".gitattributes",
".gitignore",
".gitkeep",
".github",
".travis.yml",
".mergify.yml",
".pydocstyle",
".pylintrc",
".yamllint.yml",
"tests",
]
[tool.ruff]
# Line length and excludes chosen to match prior flake8 settings
line-length = 88
exclude = [
".git",
"__pycache__",
".eggs",
"*.egg",
"build",
"dist",
"htmlcov",
"*/static/salt/formulas/*",
]
[tool.ruff.lint]
ignore = [
"B905", # zip() without strict= - requires Python 3.10+, project supports 3.8+
"D107", # __init__ docstrings are documented at the class level to avoid duplication
"D203", # Conflicts with D211 (no-blank-line-before-class). Project uses D211 style.
"D212", # Conflicts with D213 (multi-line-summary-first-line). Project uses D213 style.
"S202", # tarfile.extractall without filter - requires Python 3.12+ or custom validation
"EXE001", # Only occurs in CI when source is restored as artifact (loses executable bit)
"ANN", # 500+ missing type annotations across src/tests; keep ignored for now; see staged plan below
]
select = ["ALL"]
[tool.ruff.lint.per-file-ignores]
"tests/**" = ["S101", "S314", "SLF", "ARG", "PLR2004", "PLR0913", "INP001"]
"docs/conf.py" = ["ERA001", "INP001"]
"ci/**" = ["INP001"]
"src/watchmaker/config/__init__.py" = ["PLR0915"]
# Prepare for future gradual enabling of ANN (flake8-annotations) with saner defaults
[tool.ruff.lint.flake8-annotations]
# Don't require explicit "-> None" on __init__ (aligns with mypy default)
mypy-init-return = true
# Allow using Any for *args/**kwargs without error
allow-star-arg-any = true
# Don't flag unused conventional dummy args like _ or unused parameters in callbacks
suppress-dummy-args = true
# Don't require explicit -> None on functions that implicitly return None
suppress-none-returning = true
[tool.pytest.ini_options]
# Limit discovery to dedicated test directory
testpaths = ["tests"]
# Only consider filenames starting with test_
python_files = ["test_*.py"]
# Exclude large static datasets, build artifacts, generated hook dirs, and non-source roots
norecursedirs = [
".git",
".env",
".venv",
"__pycache__",
"ci/pyinstaller",
"dist",
"docs",
"build",
"htmlcov",
"src/watchmaker/static/salt/formulas",
]
# Additional pytest options: -r (show extra summary info for skips) and -a (all except passes)
addopts = [
"-raxEfsw",
"--strict-markers",
"--doctest-modules",
"--doctest-glob=*.md",
"--tb=short",
]