-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathpyproject.toml
More file actions
68 lines (59 loc) · 2.34 KB
/
Copy pathpyproject.toml
File metadata and controls
68 lines (59 loc) · 2.34 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
[build-system]
requires = ["setuptools>=68"]
build-backend = "setuptools.build_meta"
[project]
name = "acoustic-dataset"
version = "0.0.1"
description = "Acoustic Reference Book Phase 1 — schema-driven XML Acoustic Dataset pipeline (scaffold)"
readme = "README.md"
# Target system is constrained to exactly Python 3.9.4; the devcontainer and CI pin
# that patch, while this floor stops us depending on 3.10+ syntax. See docs/decisions/0007.
requires-python = ">=3.9,<3.13"
license = { text = "See LICENSE" }
dependencies = [
# Generate typed dataclasses from the XSD and bind objects <-> XML. Pinned to 25.7 — the
# last xsdata line supporting the Python 3.9.4 target (26.x requires >=3.10) — so `make
# generate` is byte-reproducible on the target for the CI drift gate. Bump deliberately and
# re-run `make generate` to refresh the committed models. See docs/decisions/0001 and 0008.
"xsdata[cli,lxml]==25.7",
# Pure-Python XSD validation gate (XSD 1.1 capable). See docs/decisions/0003.
"xmlschema>=3.0",
]
[project.optional-dependencies]
dev = [
"pytest>=7.0",
"ruff>=0.5",
"mypy>=1.8",
]
# Attractive HTML docs with native Mermaid ERDs. See docs/decisions/0009.
docs = [
"mkdocs-material>=9.5",
]
[project.scripts]
# Stable CLI surface (see specs/001-codespace-xml-scaffold/contracts/cli-commands.md).
acoustic = "acoustic_dataset.cli:main"
[tool.setuptools.packages.find]
where = ["src"]
[tool.ruff]
# Enforce 3.9 compatibility: ruff will flag 3.10+ syntax (e.g. `X | Y` unions
# in runtime positions) so we stay on the production floor. See docs/decisions/0007.
target-version = "py39"
line-length = 100
src = ["src", "tests"]
[tool.ruff.lint]
select = ["E", "F", "I", "UP", "B"]
[tool.ruff.lint.per-file-ignores]
# Generated bindings are artifacts, never hand-edited — do not lint them.
"src/acoustic_dataset/models/*" = ["ALL"]
"src/acoustic_dataset/input_models/*" = ["ALL"]
[tool.mypy]
python_version = "3.9"
# Check the hand-written source by path (not as an installed package — no py.typed needed),
# so a bare `mypy` in `make verify` works.
files = ["src/acoustic_dataset"]
ignore_missing_imports = true
# Generated bindings (output + input) are excluded from type-checking (they are artifacts).
exclude = "src/acoustic_dataset/(models|input_models)/"
[tool.pytest.ini_options]
testpaths = ["tests"]
addopts = "-q"