-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathpyproject.toml
More file actions
91 lines (79 loc) · 3.2 KB
/
Copy pathpyproject.toml
File metadata and controls
91 lines (79 loc) · 3.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
[project]
name = "pape"
version = "0.1.1"
description = "A package for personalized Python add-ons, created by Carter Pape"
readme = "README.md"
requires-python = ">=3.13"
license = "GPL-3.0-or-later"
license-files = ["LICENSE"]
classifiers = [
"Programming Language :: Python",
"Operating System :: OS Independent",
"Natural Language :: English",
]
dependencies = ["tzlocal>=5.3.1"]
[[project.authors]]
name = "Carter Pape"
email = "author@newsbot.carterpape.com"
[project.urls]
"Homepage" = "https://github.com/CarterPape/pape-python-package"
"Bug Tracker" = "https://github.com/CarterPape/pape-python-package/issues"
[build-system]
requires = ["uv_build>=0.11.2,<0.12.0"]
build-backend = "uv_build"
[dependency-groups]
dev = ["pyright>=1.1.408", "pytest>=8.0", "pytest-cov>=6.0", "ruff>=0.15.7"]
[tool.pytest.ini_options]
testpaths = ["tests"]
addopts = [
"--cov=pape",
"--cov-report=term-missing",
"--cov-report=json",
]
[tool.coverage.run]
source = ["src"]
branch = true
omit = ["tests/*"]
[tool.coverage.report]
fail_under = 100
show_missing = true
exclude_lines = [
"pragma: no cover",
"if __name__ == .__main__.:",
"raise NotImplementedError",
"^\\s*\\.\\.\\.", # Protocol/abstract stub bodies
"if (typing\\.)?TYPE_CHECKING:", # Type-checking-only blocks never run at runtime
]
[tool.ruff]
line-length = 100
[tool.ruff.lint]
select = ["ALL"]
ignore = [
"D212", # multi-line-summary-first-line - Conflicts with preferred rule D213 (multi-line-summary-second-line) - Ignoring D212 ensures we DO put the summary line of multi-line docstrings on the line after the tripe quotations, treating the triple quotations as a Markdown-like fence
"D203", # incorrect-blank-line-before-class - Conflicts with preferred rule D211 (blank-line-before-class) - Ignoring D203 ensures we DO add a blank line between a class and its docstring, creating more breathing room in the source file
"COM812", # missing-trailing-comma - Conflicts with ruff's formatter; ruff itself warns to disable this rule when both the linter and formatter are enabled
"E501", # line-too-long - The formatter reflows code to line-length; long strings/comments it can't break shouldn't fail lint
"ICN001", # unconventional-import-alias - Full names of imports are always preferable to aliases
]
[tool.ruff.lint.per-file-ignores]
"tests/*" = [
"SLF001", # protected-access: Tests should be allowed to modify the protected methods and variables of the instances and classes they are testing
"S101", # assert: Tests rely on assertions
"D103", # missing-docstring-in-public-function: Test names are self-documenting
"D104", # missing-docstring-in-public-package: Empty __init__.py test packages are fine
"PLR2004", # magic-value-comparison: Expected values in assertions are intentional literals
]
[tool.ruff.format]
quote-style = "double"
indent-style = "space"
skip-magic-trailing-comma = false
[tool.pyright]
typeCheckingMode = "standard"
pythonVersion = "3.13"
exclude = ["**/node_modules", "**/__pycache__", "**/.*", ".venv"]
strictDictionaryInference = true
strictListInference = true
strictSetInference = true
deprecateTypingAliases = true
disableBytesTypePromotions = true
enableReachabilityAnalysis = true