-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathpyproject.toml
More file actions
118 lines (107 loc) · 4.2 KB
/
Copy pathpyproject.toml
File metadata and controls
118 lines (107 loc) · 4.2 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
[build-system]
requires = ["hatchling"]
build-backend = "hatchling.build"
[project]
name = "ctrlgrid"
# Read from ctrlgrid/__init__.py, so there is one version and not two. The
# release workflow compares the git tag against `ctrlgrid.__version__`, and
# that check only means something if the package cannot disagree with itself.
dynamic = ["version"]
description = "Dimensionally accurate PDF templates for paper and e-ink: graph paper, dot grids, staff paper, calendars, notebooks, mazes, box nets, folded booklets"
readme = "README.md"
license = "MIT"
license-files = ["LICENSE"]
requires-python = ">=3.11"
authors = [{ name = "DocAtPrompt (Alexander Erben)" }]
# Written the way a person types them into a search box, which is why several
# appear both hyphenated and as two words: a query for "graph paper" matches
# `graph-paper` poorly. Deliberately absent: other e-ink makes (Supernote, Boox,
# Kindle Scribe). Only reMarkable profiles ship, and a keyword is a claim.
keywords = [
"pdf", "pdf-generation", "printable", "template", "cli", "reproducible",
# the papers
"graph paper", "graph-paper", "grid paper", "squared paper", "ruled paper",
"millimeter paper", "dot grid", "dot-grid", "isometric paper",
"hexagonal paper", "calligraphy", "handwriting practice",
# the documents
"calendar", "printable calendar", "planner", "notebook", "bullet journal",
# music
"staff paper", "manuscript paper", "sheet music", "tablature",
# the rest of the blades
"maze", "maze generator", "mandala", "polar graph", "tiling",
"perspective grid", "graph paper generator",
# cut and fold
"box net", "papercraft", "origami", "dieline",
# print finishing
"booklet", "booklet imposition", "imposition", "saddle stitch", "n-up",
"zine",
# devices
"eink", "e-ink", "remarkable", "remarkable tablet",
]
classifiers = [
"Development Status :: 4 - Beta",
"Environment :: Console",
"Intended Audience :: End Users/Desktop",
"Intended Audience :: Education",
"License :: OSI Approved :: MIT License",
"Operating System :: OS Independent",
"Programming Language :: Python :: 3",
"Programming Language :: Python :: 3.11",
"Programming Language :: Python :: 3.12",
"Programming Language :: Python :: 3.13",
"Topic :: Artistic Software",
"Topic :: Multimedia :: Graphics",
"Topic :: Printing",
"Topic :: Utilities",
]
# Kept deliberately small. `Pillow` is the PNG writer (M7, § 10.4), confined to
# `writers/png.py` by the same architecture test that confines reportlab.
#
# `fontTools` is here for one job that reportlab cannot do (§ 10.3): reading
# the `fsType` field of the OS/2 table before embedding. A tool that embeds
# without asking produces PDFs which violate the font licence, and the answer
# to a font that forbids it is an abort naming the font — never a quiet
# substitution. It supplies the version string and the character coverage the
# cover sheet and `missing_glyphs` need besides.
dependencies = [
"fonttools>=4.40",
"pillow>=10.0",
"pydantic>=2.0",
"reportlab>=4.0",
"ruamel.yaml>=0.18",
"typer>=0.12",
]
[project.optional-dependencies]
dev = [
"pypdf>=4.0", # reads generated PDFs back for the dimensional test
"pytest>=8.0",
"ruff>=0.6",
]
[project.urls]
Homepage = "https://github.com/DocAtPrompt/ctrlgrid"
Documentation = "https://github.com/DocAtPrompt/ctrlgrid/blob/main/HANDBOOK.md"
Issues = "https://github.com/DocAtPrompt/ctrlgrid/issues"
Changelog = "https://github.com/DocAtPrompt/ctrlgrid/commits/main"
[project.scripts]
ctrlgrid = "ctrlgrid.cli:main"
[tool.hatch.version]
path = "ctrlgrid/__init__.py"
[tool.hatch.build.targets.wheel]
packages = ["ctrlgrid"]
[tool.hatch.build]
# Data files are part of the package: formats, device profiles, presets.
# Presets are documentation (§ 9.3), so they ship. The clef font (§ 15.3) and
# its OFL licence ship too — `clef: treble` must work with nothing to install.
artifacts = [
"ctrlgrid/data/**/*.yaml",
"ctrlgrid/data/**/*.ttf",
"ctrlgrid/data/**/*.txt",
]
[tool.pytest.ini_options]
testpaths = ["tests"]
addopts = "-q"
[tool.ruff]
line-length = 100
target-version = "py311"
[tool.ruff.lint]
select = ["E", "F", "I", "UP", "B", "SIM"]