-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathpyproject.toml
More file actions
125 lines (100 loc) · 3.38 KB
/
pyproject.toml
File metadata and controls
125 lines (100 loc) · 3.38 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
[build-system]
build-backend = "setuptools.build_meta"
requires = ["setuptools>=61"]
[project]
name = "pyfloyd"
description = "A parser generator and interpreter framework for Python."
authors = [
{name = "Dirk Pranke", email = "dpranke@gmail.com"},
]
license = "Apache-2.0"
readme = "README.md"
requires-python = ">= 3.11.0"
classifiers= [
'Development Status :: 3 - Alpha',
'Intended Audience :: Developers',
'Programming Language :: Python :: 3',
'Programming Language :: Python :: 3.11',
'Programming Language :: Python :: 3.12',
'Programming Language :: Python :: 3.13',
]
dynamic = [ "version" ]
[dependency-groups]
dev = [
"build>=1.3",
"coverage>=7.12",
"mypy>=1.19",
"pip>=25.3",
"pylint>=4.0.4",
"ruff>=0.14.7",
"twine>=6.2",
"typ",
]
[project.urls]
Repository = "https://github.com/dpranke/pyfloyd"
Issues = "https://github.com/dpranke/pyfloyd/issues"
Changelog = "https://github.com/dpranke/pyfloyd/blob/master/README.md"
[project.scripts]
fld = "pyfloyd.datafile.tool:main"
flc = "pyfloyd.tool:main"
flt = "pyfloyd.template:main"
[tool.pylint.basic]
# By default, pylint wants method names to be at most 31 chars long,
# but we want to allow up to 40 for regular names and 50 for test names.
method-rgx = "((disabled_)?(test_[a-zA-Z0-9_]{3,45})|([a-z_][a-zA-Z0-9_]{1,39}))$"
# By default, pylint only allows UPPER_CASE constants, but we want to
# allow snake_case as well in some situations.
const-rgx = "[a-zA-Z_][a-zA-Z0-9_]{0,20}$"
# By default, pylint wants all parameter names to be at least two chars long,
# but we want to allow single-char parameter names as well.
argument-rgx = "[a-z_][a-z0-9_]{0,19}$"
# By default, pylint wants all variable names to be at least two chars long,
# but we want to allow single-char variable names as well.
variable-rgx = "[a-z_][a-z0-9_]{0,19}$"
max-args = 8
max-positional-arguments = 8
# Recommend at most 65 statements per function/method
max-statements = 65
[tool.pylint.'messages control']
disable = [
# Too much is duplicated between generated parsers and other AST walkers.
"duplicate-code",
# Don't want warnings for these.
"fixme",
"missing-docstring",
# These are violated too often in practice.
"too-few-public-methods",
"too-many-branches",
"too-many-instance-attributes",
"too-many-locals",
"too-many-public-methods",
"too-many-return-statements",
# This will potentially complain on correct code like
# `foo, bar = baz` if baz is a list, and there's no way to
# tell it that this is correct other than disabling the warning :(.
"unbalanced-tuple-unpacking",
]
[tool.pylint.reports]
reports = false
[tool.pylint.score]
score = false
[tool.ruff]
include = ["pyproject.toml", "run", "src/**/*.py", "tests/**/*.py"]
line-length = 79
[tool.ruff.format]
quote-style = "single"
[tool.setuptools.packages.find]
where = ["src"]
[tool.setuptools.package-data]
"pyfloyd" = ["*.py", "*.df", "*.dft"]
[tool.setuptools.dynamic]
version = {attr = "pyfloyd.__version__"}
[tool.uv]
# 0.9.0 is the first version support Python 3.14
required-version = ">=0.9.0"
# By default, do not install/resolve to packages published within
# the past 30 days; this gives us some protection against automatically
# upgrading to a package that might have been newly compromised.
exclude-newer = "30 days"
[tool.uv.sources]
typ = { git = "https://github.com/dpranke/typ-dev", branch = "main" }