-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathpyproject.toml
More file actions
139 lines (127 loc) · 5.03 KB
/
Copy pathpyproject.toml
File metadata and controls
139 lines (127 loc) · 5.03 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
[build-system]
requires = ["hatchling"]
build-backend = "hatchling.build"
[project]
name = "wads"
version = "0.2.33"
description = "Tools for packaging and publishing to pypi for those who just do not want to deal with it"
readme = "README.md"
requires-python = ">=3.10"
license = "Apache-2.0"
keywords = [
"packaging",
"publishing",
"pypi",
"pyproject",
"hatchling",
"ci",
"github-actions",
"uv",
"project-template",
"documentation",
]
authors = [{ name = "Thor Whalen" }]
classifiers = [
"Development Status :: 4 - Beta",
"Intended Audience :: Developers",
"Operating System :: OS Independent",
"Programming Language :: Python :: 3",
"Programming Language :: Python :: 3 :: Only",
"Programming Language :: Python :: 3.10",
"Programming Language :: Python :: 3.11",
"Programming Language :: Python :: 3.12",
"Programming Language :: Python :: 3.13",
"Topic :: Software Development :: Build Tools",
"Topic :: Software Development :: Code Generators",
"Topic :: System :: Software Distribution",
]
# Core (light) dependencies: enough to read config ([tool.wads.ci] /
# package.json wads.ci), run the templating engine, and `import wads`. Kept
# deliberately small so CI-side use stays cheap. Heavier project-creation /
# publishing tools live in the `create` extra (see below).
dependencies = [
"jinja2", # templating engine
"pyyaml", # light YAML reads
"packaging", # version parsing
"cw>=0.1.1,<0.2", # CLI dispatch (MIT, zero-dependency)
"tomli>=1.0.0; python_version<'3.11'",
"tomli-w>=0.4.0",
]
[project.optional-dependencies]
# Full project-creation / publishing toolchain (heavier). Install with
# `pip install wads[create]` when scaffolding or publishing projects.
create = [
"requests", # GitHub repo metadata, PyPI version checks
"build", # PEP 517 build (publish)
"wheel", # wheel building (publish)
"ruamel.yaml", # round-tripping GitHub Actions YAML (CI migration tools)
"tomlkit", # comment-preserving pyproject edits (wads-secrets)
]
docs = ["epythet"]
# AI agent skills tooling. The `skill` package is the layout authority that
# wads-skillify defers to (its skill-package-setup skill + the `skill` CLI for
# validate/link). Install with `pip install wads[skills]`.
skills = ["skill"]
test = ["pytest>=7.0", "pytest-cov"]
all = ["wads[create,docs]"]
[project.urls]
Homepage = "https://github.com/i2mint/wads"
Repository = "https://github.com/i2mint/wads"
Documentation = "https://i2mint.github.io/wads/"
Issues = "https://github.com/i2mint/wads/issues"
[project.scripts]
pack = "wads.pack:main"
populate = "wads.populate:main"
wads = "wads.__main__:main"
wads-ci-debug = "wads.agents.ci_debug_agent:main"
wads-deps = "wads.agents.dependency_resolver:main"
wads-test-analyze = "wads.agents.test_analyzer:main"
wads-migrate = "wads.migration:main"
wads-install-skills = "wads.install_skills:main"
wads-secrets = "wads.secrets_cli:main"
wads-licence-check = "wads.licence_check:main"
[tool.hatch.build]
# Without this, hatchling's sdist walk follows the .claude/skills/<name> ->
# wads/data/skills/<name> symlinks (issue #89): .claude sorts before wads
# alphabetically, so the real directory is marked "already seen" by the time
# the walk reaches its canonical wads/data/skills/<name> path and is skipped
# there -- the sdist (and the wheel built from it) end up with the skill
# content living only under .claude/skills/, not under the documented,
# pip-installable wads/data/skills/ path. skip-excluded-dirs stops the walk
# from entering .claude at all, so the canonical path is never pre-empted.
skip-excluded-dirs = true
[tool.hatch.build.targets.sdist]
exclude = [".claude", ".github", "scrap"]
[tool.hatch.build.targets.wheel]
packages = ["wads"]
include = [
"*/docs_gen/_static/**/*",
"README.md",
"wads/data/*",
]
[tool.ruff]
line-length = 88
target-version = "py38"
# wads/data holds *templates* (some are not valid standalone Python until
# rendered, e.g. `import << name >>`), so they must not be linted/formatted.
exclude = ["tests", "examples", "scrap", "wads/data"]
[tool.ruff.lint]
select = ["D100"]
[tool.ruff.lint.per-file-ignores]
"**/tests/*" = ["D"]
"**/examples/*" = ["D"]
"**/scrap/*" = ["D"]
[tool.pytest.ini_options]
minversion = "6.0"
# The whole package, not just wads/tests: run-tests-uv calls pytest with no
# path, so testpaths alone decides what CI collects, and the package's own
# doctests must be in it (i2mint/wads#56). wads/data (templates) is left out
# by collect_ignore in the root conftest.py.
testpaths = ["wads"]
doctest_optionflags = ["NORMALIZE_WHITESPACE", "ELLIPSIS"]
[tool.wads.ci.install]
# wads's own test suite exercises the full creation/publish flow (e.g. building
# a generated package), so CI must install the heavier `create` extra in
# addition to the light core. Consumed by the reusable workflow via
# read-ci-config -> install-deps-uv (.[create]).
extras = "create"