-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathpyproject.toml
More file actions
133 lines (111 loc) · 5.06 KB
/
pyproject.toml
File metadata and controls
133 lines (111 loc) · 5.06 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
[build-system]
# Hatchling is the modern, lightweight build backend recommended by PyPA.
# It reads everything from this file — no setup.py, no setup.cfg needed.
requires = ["hatchling"]
build-backend = "hatchling.build"
# ── Core project metadata ─────────────────────────────────────────────────────
[project]
name = "packwarden"
version = "1.0.1"
description = "A self-contained, drop-in Python dependency management module."
readme = "README.md"
license = { file = "LICENSE" }
authors = [
{ name = "Aidan A. Bradley" },
]
# The lowest Python version you want to support.
# packwarden uses `from __future__ import annotations` to support 3.8+.
requires-python = ">=3.8"
# Runtime dependencies.
# packwarden is intentionally dependency-free — it uses only the stdlib.
dependencies = []
# Classifiers help PyPI categorise and filter your package.
# Full list: https://pypi.org/classifiers/
classifiers = [
"Development Status :: 4 - Beta",
"Intended Audience :: Developers",
"License :: OSI Approved :: MIT License",
"Operating System :: OS Independent",
"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",
"Topic :: Software Development :: Libraries :: Python Modules",
"Topic :: System :: Installation/Setup",
"Topic :: System :: Systems Administration",
]
# Keywords help with PyPI search.
keywords = [
"dependency", "management", "pip", "venv",
"virtualenv", "packages", "installer", "setup",
]
# ── Optional dependencies ─────────────────────────────────────────────────────
# These are not required to use the package, but are useful for
# contributors working on the project itself.
[project.optional-dependencies]
dev = [
"pytest>=7.0",
"pytest-cov",
"build", # python -m build
"twine", # for uploading to PyPI
"ruff", # linter + formatter
"mypy", # static type checker
]
# ── URLs shown on the PyPI project page ──────────────────────────────────────
[project.urls]
Homepage = "https://github.com/LinuxMainframe/packwarden"
Repository = "https://github.com/LinuxMainframe/packwarden"
Issues = "https://github.com/LinuxMainframe/packwarden/issues"
Changelog = "https://github.com/LinuxMainframe/packwarden/blob/main/CHANGELOG.md"
# ── Console script entry point ────────────────────────────────────────────────
# This is what creates the `packwarden` command when the package is installed.
# pip install packwarden → `packwarden` becomes available in the terminal.
# The value points to the function that should run: module:function
[project.scripts]
packwarden = "packwarden.packwarden:_cli_entry"
# ── Hatchling build configuration ────────────────────────────────────────────
[tool.hatch.build.targets.wheel]
# Tell hatchling where to find the package inside the src/ layout.
packages = ["src/packwarden"]
[tool.hatch.build.targets.sdist]
# Files to include in the source distribution (tarball uploaded to PyPI).
include = [
"src/",
"tests/",
"pyproject.toml",
"README.md",
"LICENSE",
"CHANGELOG.md",
]
# ── Ruff (linter + formatter) ─────────────────────────────────────────────────
[tool.ruff]
line-length = 88
target-version = "py38"
[tool.ruff.lint]
select = [
"E", # pycodestyle errors
"W", # pycodestyle warnings
"F", # pyflakes
"I", # isort
"UP", # pyupgrade
"S", # flake8-bandit (security)
"B", # flake8-bugbear
]
ignore = [
"S603", # subprocess call — we use it intentionally and safely
"S607", # partial executable path — shutil.which handles this
]
# ── Mypy (type checker) ───────────────────────────────────────────────────────
[tool.mypy]
python_version = "3.8"
warn_return_any = true
warn_unused_configs = true
disallow_untyped_defs = true
ignore_missing_imports = true
# ── Pytest ────────────────────────────────────────────────────────────────────
[tool.pytest.ini_options]
testpaths = ["tests"]
addopts = "-v --cov=packwarden --cov-report=term-missing"