@@ -14,8 +14,10 @@ readme = "README.md"
14
14
keywords = [
15
15
" Imaging" ,
16
16
]
17
- license = {text = " HPND" }
18
- authors = [{name = " Jeffrey A. Clark" , email = " aclark@aclark.net" }]
17
+ license = { text = " HPND" }
18
+ authors = [
19
+ { name = " Jeffrey A. Clark" , email = " aclark@aclark.net" },
20
+ ]
19
21
requires-python = " >=3.8"
20
22
classifiers = [
21
23
" Development Status :: 6 - Mature" ,
@@ -38,22 +40,21 @@ classifiers = [
38
40
dynamic = [
39
41
" version" ,
40
42
]
41
- [project .optional-dependencies ]
42
- docs = [
43
+ optional-dependencies.docs = [
43
44
" furo" ,
44
45
" olefile" ,
45
46
" sphinx>=7.3" ,
46
47
" sphinx-copybutton" ,
47
48
" sphinx-inline-tabs" ,
48
49
" sphinxext-opengraph" ,
49
50
]
50
- fpx = [
51
+ optional-dependencies. fpx = [
51
52
" olefile" ,
52
53
]
53
- mic = [
54
+ optional-dependencies. mic = [
54
55
" olefile" ,
55
56
]
56
- tests = [
57
+ optional-dependencies. tests = [
57
58
" check-manifest" ,
58
59
" coverage" ,
59
60
" defusedxml" ,
@@ -65,28 +66,29 @@ tests = [
65
66
" pytest-cov" ,
66
67
" pytest-timeout" ,
67
68
]
68
- typing = [
69
- ' typing-extensions; python_version < " 3.10" ' ,
69
+ optional-dependencies. typing = [
70
+ " typing-extensions; python_version<' 3.10' " ,
70
71
]
71
- xmp = [
72
+ optional-dependencies. xmp = [
72
73
" defusedxml" ,
73
74
]
74
- [project .urls ]
75
- Changelog = " https://github.com/python-pillow/Pillow/blob/main/CHANGES.rst"
76
- Documentation = " https://pillow.readthedocs.io"
77
- Funding = " https://tidelift.com/subscription/pkg/pypi-pillow?utm_source=pypi-pillow&utm_medium=pypi"
78
- Homepage = " https://python-pillow.org"
79
- Mastodon = " https://fosstodon.org/@pillow"
80
- "Release notes" = " https://pillow.readthedocs.io/en/stable/releasenotes/index.html"
81
- Source = " https://github.com/python-pillow/Pillow"
75
+ urls.Changelog = " https://github.com/python-pillow/Pillow/blob/main/CHANGES.rst"
76
+ urls.Documentation = " https://pillow.readthedocs.io"
77
+ urls.Funding = " https://tidelift.com/subscription/pkg/pypi-pillow?utm_source=pypi-pillow&utm_medium=pypi"
78
+ urls.Homepage = " https://python-pillow.org"
79
+ urls.Mastodon = " https://fosstodon.org/@pillow"
80
+ urls."Release notes" = " https://pillow.readthedocs.io/en/stable/releasenotes/index.html"
81
+ urls.Source = " https://github.com/python-pillow/Pillow"
82
82
83
83
[tool .setuptools ]
84
- packages = [" PIL" ]
84
+ packages = [
85
+ " PIL" ,
86
+ ]
85
87
include-package-data = true
86
- package-dir = {"" = " src" }
88
+ package-dir = { "" = " src" }
87
89
88
90
[tool .setuptools .dynamic ]
89
- version = {attr = " PIL.__version__" }
91
+ version = { attr = " PIL.__version__" }
90
92
91
93
[tool .cibuildwheel ]
92
94
before-all = " .github/workflows/wheels-dependencies.sh"
@@ -98,42 +100,47 @@ test-extras = "tests"
98
100
[tool .ruff ]
99
101
fix = true
100
102
101
- [tool .ruff .lint ]
102
- select = [
103
- " C4" , # flake8-comprehensions
104
- " E" , # pycodestyle errors
105
- " EM" , # flake8-errmsg
106
- " F" , # pyflakes errors
107
- " I" , # isort
108
- " ISC" , # flake8-implicit-str-concat
109
- " LOG" , # flake8-logging
110
- " PGH" , # pygrep-hooks
111
- " PYI" , # flake8-pyi
103
+ lint.select = [
104
+ " C4" , # flake8-comprehensions
105
+ " E" , # pycodestyle errors
106
+ " EM" , # flake8-errmsg
107
+ " F" , # pyflakes errors
108
+ " I" , # isort
109
+ " ISC" , # flake8-implicit-str-concat
110
+ " LOG" , # flake8-logging
111
+ " PGH" , # pygrep-hooks
112
+ " PYI" , # flake8-pyi
112
113
" RUF100" , # unused noqa (yesqa)
113
- " UP" , # pyupgrade
114
- " W" , # pycodestyle warnings
115
- " YTT" , # flake8-2020
116
- ]
117
- ignore = [
118
- " E203" , # Whitespace before ':'
119
- " E221" , # Multiple spaces before operator
120
- " E226" , # Missing whitespace around arithmetic operator
121
- " E241" , # Multiple spaces after ','
114
+ " UP" , # pyupgrade
115
+ " W" , # pycodestyle warnings
116
+ " YTT" , # flake8-2020
117
+ ]
118
+ lint. ignore = [
119
+ " E203" , # Whitespace before ':'
120
+ " E221" , # Multiple spaces before operator
121
+ " E226" , # Missing whitespace around arithmetic operator
122
+ " E241" , # Multiple spaces after ','
122
123
" PYI026" , # flake8-pyi: typing.TypeAlias added in Python 3.10
123
124
" PYI034" , # flake8-pyi: typing.Self added in Python 3.11
124
125
]
125
-
126
- [tool .ruff .lint .per-file-ignores ]
127
- "Tests/oss-fuzz/fuzz_font.py" = [" I002" ]
128
- "Tests/oss-fuzz/fuzz_pillow.py" = [" I002" ]
129
-
130
- [tool .ruff .lint .isort ]
131
- known-first-party = [" PIL" ]
132
- required-imports = [" from __future__ import annotations" ]
126
+ lint.per-file-ignores."Tests/oss-fuzz/fuzz_font.py" = [
127
+ " I002" ,
128
+ ]
129
+ lint.per-file-ignores."Tests/oss-fuzz/fuzz_pillow.py" = [
130
+ " I002" ,
131
+ ]
132
+ lint.isort.known-first-party = [
133
+ " PIL" ,
134
+ ]
135
+ lint.isort.required-imports = [
136
+ " from __future__ import annotations" ,
137
+ ]
133
138
134
139
[tool .pytest .ini_options ]
135
140
addopts = " -ra --color=yes"
136
- testpaths = [" Tests" ]
141
+ testpaths = [
142
+ " Tests" ,
143
+ ]
137
144
138
145
[tool .mypy ]
139
146
python_version = " 3.8"
0 commit comments