-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathpyproject.toml
More file actions
149 lines (134 loc) · 4.84 KB
/
pyproject.toml
File metadata and controls
149 lines (134 loc) · 4.84 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
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
[build-system]
requires = [ "setuptools>=65.0.0", "wheel" ]
build-backend = "setuptools.build_meta"
[project]
name = "la-stack-scripts"
version = "0.1.0"
description = "Python utility scripts for the la-stack Rust library"
readme = "README.md"
requires-python = ">=3.12"
license = { text = "BSD-3-Clause" }
authors = [
{ name = "Adam Getchell", email = "adam@adamgetchell.org" },
]
keywords = [ "linear-algebra", "benchmarking", "utilities", "la-stack" ]
classifiers = [
"Development Status :: 4 - Beta",
"Intended Audience :: Developers",
"Intended Audience :: Science/Research",
"License :: OSI Approved :: BSD License",
"Operating System :: OS Independent",
"Programming Language :: Python :: 3",
"Programming Language :: Python :: 3.12",
"Programming Language :: Python :: 3.13",
"Topic :: Scientific/Engineering :: Mathematics",
"Topic :: System :: Benchmarking",
]
# No runtime dependencies currently; scripts rely on the standard library.
dependencies = [ ]
[project.urls]
"Homepage" = "https://github.com/acgetchell/la-stack"
"Documentation" = "https://docs.rs/la-stack"
"Repository" = "https://github.com/acgetchell/la-stack"
"Bug Tracker" = "https://github.com/acgetchell/la-stack/issues"
[project.scripts]
archive-changelog = "archive_changelog:main"
bench-compare = "bench_compare:main"
criterion-dim-plot = "criterion_dim_plot:main"
postprocess-changelog = "postprocess_changelog:main"
tag-release = "tag_release:main"
# Configure setuptools to find modules in scripts/ directory.
[tool.setuptools]
package-dir = { "" = "scripts" }
py-modules = [ "archive_changelog", "bench_compare", "check_semgrep_fixtures", "criterion_dim_plot", "postprocess_changelog", "subprocess_utils", "tag_release" ]
[tool.ruff]
line-length = 160
target-version = "py312"
src = [ "scripts" ]
[tool.ruff.lint]
select = [ "E", "F", "W", "I", "N", "UP", "YTT", "S", "BLE", "FBT", "B", "A", "COM", "C4", "DTZ", "T10", "EM", "EXE", "ISC", "ICN", "G", "INP", "PIE", "T20", "PYI", "PT", "Q", "RSE", "RET", "SLF", "SIM", "TID", "TCH", "ARG", "PTH", "ERA", "PD", "PGH", "PL", "TRY", "NPY", "RUF" ]
fixable = [ "ALL" ]
unfixable = [ ]
ignore = [
# Formatter conflicts
"COM812", # Trailing comma missing (conflicts with formatter)
"ISC001", # Implicitly concatenated string literals (conflicts with formatter)
# CLI script patterns
"PLR2004", # Magic value used in comparison - OK for CLI constants and thresholds
"FBT001", # Boolean-typed positional argument - OK for CLI flags
"FBT002", # Boolean default positional argument - OK for CLI flags
"BLE001", # Do not catch blind exception - OK for CLI robustness
"T201", # print found - OK for CLI output
"TRY300", # Consider moving statement to else block - OK for CLI control flow
"TRY301", # Abstract raise to inner function - OK for straightforward CLI error handling
"ARG001", # Unused function argument - common in callbacks
"ERA001", # Found commented-out code - OK for explanatory comments
"EXE001", # Shebang present but file not executable - handled by packaging
"PTH123", # open() should be replaced by Path.open() - OK for some call sites
"EM102", # Exception must not use f-string - OK for CLI error messages
"TRY003", # Avoid specifying long messages outside exception class - OK for CLI reporting
]
[tool.ruff.lint.per-file-ignores]
"scripts/tests/**/*.py" = [
"S101", # asserts are fine in tests
"SLF001", # tests may call internal helpers
"PT019", # @patch decorator params are not pytest fixtures
"PLC0415", # test helpers may import inside functions
]
[tool.ruff.lint.isort]
known-first-party = [
"archive_changelog",
"bench_compare",
"check_semgrep_fixtures",
"criterion_dim_plot",
"postprocess_changelog",
"subprocess_utils",
"tag_release",
]
force-single-line = false
split-on-trailing-comma = true
combine-as-imports = true
order-by-type = true
section-order = [
"future",
"standard-library",
"third-party",
"first-party",
"local-folder",
]
[tool.ruff.format]
quote-style = "double"
indent-style = "space"
skip-magic-trailing-comma = false
line-ending = "auto"
[tool.pytest.ini_options]
minversion = "9.0"
addopts = [ "-ra", "--strict-markers", "--strict-config", "--color=yes" ]
testpaths = [ "scripts/tests" ]
python_files = [ "test_*.py", "*_test.py" ]
python_classes = [ "Test*" ]
python_functions = [ "test_*" ]
[tool.mypy]
python_version = "3.12"
mypy_path = "scripts"
warn_unused_configs = true
no_implicit_optional = true
strict_equality = true
warn_redundant_casts = true
warn_no_return = true
show_error_codes = true
show_column_numbers = true
pretty = true
allow_untyped_calls = true
allow_incomplete_defs = true
[tool.uv]
package = true
[dependency-groups]
dev = [
"actionlint-py==1.7.12.24",
"mypy>=1.19.0",
"pytest==9.0.3",
"ruff>=0.15.14",
"semgrep==1.164.0",
"ty>=0.0.40",
]