@@ -10,12 +10,11 @@ name = "attrs"
10
10
authors = [{ name = " Hynek Schlawack" , email = " hs@ox.cx" }]
11
11
license = " MIT"
12
12
license-files = [" LICENSE" ]
13
- requires-python = " >=3.8 "
13
+ requires-python = " >=3.9 "
14
14
description = " Classes Without Boilerplate"
15
15
keywords = [" class" , " attribute" , " boilerplate" ]
16
16
classifiers = [
17
17
" Development Status :: 5 - Production/Stable" ,
18
- " Programming Language :: Python :: 3.8" ,
19
18
" Programming Language :: Python :: 3.9" ,
20
19
" Programming Language :: Python :: 3.10" ,
21
20
" Programming Language :: Python :: 3.11" ,
@@ -28,29 +27,41 @@ classifiers = [
28
27
dependencies = []
29
28
dynamic = [" version" , " readme" ]
30
29
31
- [project .optional-dependencies ]
30
+ [project .urls ]
31
+ Documentation = " https://www.attrs.org/"
32
+ Changelog = " https://www.attrs.org/en/stable/changelog.html"
33
+ GitHub = " https://github.com/python-attrs/attrs"
34
+ Funding = " https://github.com/sponsors/hynek"
35
+ Tidelift = " https://tidelift.com/subscription/pkg/pypi-attrs?utm_source=pypi-attrs&utm_medium=pypi"
36
+
37
+
38
+ [dependency-groups ]
32
39
tests-mypy = [
33
40
' pytest-mypy-plugins; platform_python_implementation == "CPython" and python_version >= "3.10"' ,
34
41
# Since the mypy error messages keep changing, we have to keep updating this
35
42
# pin.
36
43
' mypy>=1.11.1; platform_python_implementation == "CPython" and python_version >= "3.10"' ,
37
44
]
38
45
tests = [
46
+ { include-group = " tests-mypy" },
39
47
# For regression test to ensure cloudpickle compat doesn't break.
40
48
' cloudpickle; platform_python_implementation == "CPython"' ,
41
49
" hypothesis" ,
42
50
" pympler" ,
43
51
# 4.3.0 dropped last use of `convert`
44
52
" pytest>=4.3.0" ,
45
- " pytest-xdist[psutil]" ,
46
- " attrs[tests-mypy]" ,
47
53
]
48
54
cov = [
49
- " attrs[ tests] " ,
55
+ { include-group = " tests" } ,
50
56
# Ensure coverage is new enough for `source_pkgs`.
51
57
" coverage[toml]>=5.3" ,
52
58
]
53
- benchmark = [" pytest-codspeed" , " pytest-xdist[psutil]" , " attrs[tests]" ]
59
+ pyright = [" pyright" , { include-group = " tests" }]
60
+ benchmark = [
61
+ { include-group = " tests" },
62
+ " pytest-codspeed" ,
63
+ " pytest-xdist[psutil]" ,
64
+ ]
54
65
docs = [
55
66
" cogapp" ,
56
67
" furo" ,
@@ -59,17 +70,10 @@ docs = [
59
70
" sphinx-notfound-page" ,
60
71
" sphinxcontrib-towncrier" ,
61
72
# See https://github.com/sphinx-contrib/sphinxcontrib-towncrier/issues/92
62
- # Pin also present in tox.ini
63
73
" towncrier<24.7" ,
64
74
]
65
- dev = [" attrs[tests]" , " pre-commit-uv" ]
66
-
67
- [project .urls ]
68
- Documentation = " https://www.attrs.org/"
69
- Changelog = " https://www.attrs.org/en/stable/changelog.html"
70
- GitHub = " https://github.com/python-attrs/attrs"
71
- Funding = " https://github.com/sponsors/hynek"
72
- Tidelift = " https://tidelift.com/subscription/pkg/pypi-attrs?utm_source=pypi-attrs&utm_medium=pypi"
75
+ docs-watch = [{ include-group = " docs" }, " watchfiles" ]
76
+ dev = [{ include-group = " tests" }]
73
77
74
78
75
79
[tool .hatch .version ]
@@ -227,6 +231,8 @@ ignore = [
227
231
" TD" , # we don't follow other people's todo style
228
232
" TRY301" , # I'm sorry, but this makes not sense for us.
229
233
" UP031" , # format() is slow as molasses; % and f'' FTW.
234
+ " UP006" , # replace Dict etc by dict etc later.
235
+ " UP035" , # replace Dict etc by dict etc later.
230
236
]
231
237
232
238
[tool .ruff .lint .per-file-ignores ]
@@ -254,10 +260,10 @@ ignore = [
254
260
"src/*/*.pyi" = [" ALL" ] # TODO
255
261
"tests/test_annotations.py" = [" FA100" ]
256
262
"tests/typing_example.py" = [
257
- " E741" , # ambiguous variable names don't matter in type checks
258
- " B018" , # useless expressions aren't useless in type checks
259
- " B015" , # pointless comparison in type checks aren't pointless
260
- " UP037" , # we test some older syntaxes on purpose
263
+ " E741" , # ambiguous variable names don't matter in type checks
264
+ " B018" , # useless expressions aren't useless in type checks
265
+ " B015" , # pointless comparison in type checks aren't pointless
266
+ " UP037" , # we test some older syntaxes on purpose
261
267
]
262
268
263
269
[tool .ruff .lint .isort ]
0 commit comments