-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathpyproject.toml
More file actions
89 lines (78 loc) · 2.89 KB
/
Copy pathpyproject.toml
File metadata and controls
89 lines (78 loc) · 2.89 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
[build-system]
requires = ["setuptools>=77.0", "wheel"]
build-backend = "setuptools.build_meta"
[project]
name = "deckwright"
version = "0.4.0"
description = "Compile declarative deck specs into branded PowerPoint files — themes, native charts, icons, imagery, animation and QA on python-pptx"
readme = "README.md"
requires-python = ">=3.12"
# The wheel bundles the Material icon set, which is Apache-2.0 as well, so one
# expression covers both. See src/deckwright/icons/glyphs/material/SOURCE.md, and
# NOTICE for the attributions Apache-2.0 section 4(d) makes travel with a copy.
license = "Apache-2.0"
license-files = [
"LICENSE",
"NOTICE",
"src/deckwright/icons/glyphs/material/LICENSE",
]
authors = [{ name = "Mike Farr" }]
dependencies = [
# pf-core foundation + the extras this project uses, pinned to a compatible
# release (picks up patch releases of 0.22, never 0.23).
"pf-core[cli]~=0.22.0",
# deck/slide generation + native charts (pulls lxml); compatible-release pinned
# because chart styling reaches into its oxml element classes.
"python-pptx~=1.0.2",
"markdown>=3.0", # HTML rendering of doc/figure snippets
"pillow>=12.0", # card autocrop, contact sheet, Image.get_flattened_data
"pyyaml>=6.0", # deck specs and theme files
]
[project.optional-dependencies]
dev = [
"pytest>=8.0",
# ruff and mypy are compatible-release pinned so a new minor cannot turn CI
# red on its own. Same lines pf-core gates on.
"ruff~=0.16.0",
"mypy~=2.3.0",
"types-PyYAML",
"types-Markdown",
"lxml-stubs",
"pre-commit>=3.0",
]
[project.scripts]
deckwright = "deckwright.cli:main"
[project.urls]
Repository = "https://github.com/phierceweb/deckwright"
Issues = "https://github.com/phierceweb/deckwright/issues"
Changelog = "https://github.com/phierceweb/deckwright/blob/main/CHANGELOG.md"
[tool.setuptools.packages.find]
where = ["src"]
# Data, not modules: without this the wheel has no glyphs and no `base` theme, and
# the glyph set's licence has to travel with its files. See docs/icons.md.
[tool.setuptools.package-data]
deckwright = [
"py.typed",
"theme/builtin/*.yaml",
"icons/glyphs/material/glyphs.zip",
"icons/glyphs/material/glyphs.sum",
"icons/glyphs/material/LICENSE",
"icons/glyphs/material/SOURCE.md",
]
[tool.pytest.ini_options]
testpaths = ["tests"]
# Type-check config — mypy. Non-strict: annotated code is checked, untyped defs
# are not forced. `files` scopes a bare `mypy` to the same surface CI checks.
[tool.mypy]
python_version = "3.12"
files = ["src"]
# Ruff config mirrors pf-core's conservative set. Layout is enforced separately
# by `ruff format` (bin/lint, pre-commit, CI), which is why E501 stays off.
[tool.ruff]
line-length = 100
target-version = "py312"
[tool.ruff.lint]
select = ["E", "W", "F", "B"]
ignore = ["E501", "B008", "B904"]
[tool.ruff.lint.per-file-ignores]
"tests/**/*.py" = ["B011"]