Aligned pyproject.toml with standard tooling conventions.
CI / Formatting (push) Successful in 29s
CI / Linting (push) Successful in 6s
CI / Tests (push) Successful in 7s
CI / Type Checking (push) Successful in 10s
CI / Spelling (push) Successful in 5s

This commit is contained in:
2026-06-11 13:28:18 -04:00
parent de19074fc0
commit b22b1ffab5
+29 -13
View File
@@ -2,11 +2,11 @@
name = "crabstero"
dynamic = ["version"]
description = "The simple nonversation Discord bot."
requires-python = ">=3.14"
license = "Apache-2.0"
authors = [
{ name = "Logan Fick" },
]
license = "Apache-2.0"
requires-python = ">=3.14"
dependencies = [
"discord.py>=2.7.1",
"aiosqlite>=0.22.1",
@@ -21,10 +21,6 @@ crabstero = "crabstero.__main__:main"
[project.urls]
Repository = "https://git.logal.dev/LogalDeveloper/Crabstero"
[build-system]
requires = ["hatchling>=1.29.0", "hatch-vcs>=0.5.0"]
build-backend = "hatchling.build"
[dependency-groups]
dev = [
"codespell>=2.4.2",
@@ -40,6 +36,10 @@ dev = [
extra-index-url = ["https://git.logal.dev/api/packages/LogalDeveloper/pypi/simple/"]
publish-url = "https://git.logal.dev/api/packages/LogalDeveloper/pypi"
[build-system]
requires = ["hatchling>=1.29.0", "hatch-vcs>=0.5.0"]
build-backend = "hatchling.build"
[tool.hatch.version]
source = "vcs"
@@ -55,6 +55,10 @@ strict = true
warn_unreachable = true
explicit_package_bases = true
[tool.pytest.ini_options]
asyncio_mode = "auto"
asyncio_default_fixture_loop_scope = "function"
[tool.ruff]
target-version = "py314"
extend-exclude = ["crabstero/_version.py"] # auto-generated by hatch-vcs
@@ -62,27 +66,39 @@ extend-exclude = ["crabstero/_version.py"] # auto-generated by hatch-vcs
[tool.ruff.lint]
select = ["ALL"]
ignore = [
"ANN401", # Any is valid at system boundaries; mypy strict handles real issues
"C901", # McCabe complexity: noisy and not actionable
"COM812", # handled by the formatter
"D203", # incompatible with D211 (no blank line before class docstring)
"D213", # incompatible with D212 (summary on first line)
"EM", # exception message style: inline literals are fine
"PLR0911", # too many return statements: flat early-returns are clear
"PLR0912", # too many branches: inherent in parsers, validators, CLI
"PLR0913", # too many arguments: API surfaces and constructors need them
"PLR0915", # too many statements: inherent in parsers, validators, CLI
"TRY003", # inline exception messages are fine (complements EM ignore)
"TRY301", # raise inside try: guard clauses don't need helper functions
]
[tool.pytest.ini_options]
asyncio_mode = "auto"
[tool.ruff.lint.per-file-ignores]
"crabstero/__init__.py" = ["E402"] # version fallback is resolved before public imports
"tests/**" = [
"S101", # assert is standard for pytest
"S311", # pseudo-random generators are fine in tests
"SLF001", # tests legitimately access private members for verification
"ARG001", # unused args are normal for fixtures and handler stubs
"PLR2004", # magic values are clear in test assertions
]
[tool.codespell]
skip = "crabstero/_version.py,uv.lock"
[tool.coverage.run]
source = ["crabstero"]
omit = ["crabstero/_version.py"]
omit = [
"crabstero/_version.py",
]
[tool.coverage.report]
show_missing = true
skip_empty = true
[tool.codespell]
skip = "uv.lock"