Aligned pyproject.toml with standard tooling conventions.
This commit is contained in:
+29
-13
@@ -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"
|
||||
|
||||
Reference in New Issue
Block a user