diff --git a/pyproject.toml b/pyproject.toml index 20e87ad327d..6f47f360b37 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -14,8 +14,10 @@ readme = "README.md" keywords = [ "Imaging", ] -license = {text = "HPND"} -authors = [{name = "Jeffrey A. Clark", email = "aclark@aclark.net"}] +license = { text = "HPND" } +authors = [ + { name = "Jeffrey A. Clark", email = "aclark@aclark.net" }, +] requires-python = ">=3.8" classifiers = [ "Development Status :: 6 - Mature", @@ -38,8 +40,7 @@ classifiers = [ dynamic = [ "version", ] -[project.optional-dependencies] -docs = [ +optional-dependencies.docs = [ "furo", "olefile", "sphinx>=7.3", @@ -47,13 +48,13 @@ docs = [ "sphinx-inline-tabs", "sphinxext-opengraph", ] -fpx = [ +optional-dependencies.fpx = [ "olefile", ] -mic = [ +optional-dependencies.mic = [ "olefile", ] -tests = [ +optional-dependencies.tests = [ "check-manifest", "coverage", "defusedxml", @@ -65,28 +66,29 @@ tests = [ "pytest-cov", "pytest-timeout", ] -typing = [ - 'typing-extensions; python_version < "3.10"', +optional-dependencies.typing = [ + "typing-extensions; python_version<'3.10'", ] -xmp = [ +optional-dependencies.xmp = [ "defusedxml", ] -[project.urls] -Changelog = "https://github.com/python-pillow/Pillow/blob/main/CHANGES.rst" -Documentation = "https://pillow.readthedocs.io" -Funding = "https://tidelift.com/subscription/pkg/pypi-pillow?utm_source=pypi-pillow&utm_medium=pypi" -Homepage = "https://python-pillow.org" -Mastodon = "https://fosstodon.org/@pillow" -"Release notes" = "https://pillow.readthedocs.io/en/stable/releasenotes/index.html" -Source = "https://github.com/python-pillow/Pillow" +urls.Changelog = "https://github.com/python-pillow/Pillow/blob/main/CHANGES.rst" +urls.Documentation = "https://pillow.readthedocs.io" +urls.Funding = "https://tidelift.com/subscription/pkg/pypi-pillow?utm_source=pypi-pillow&utm_medium=pypi" +urls.Homepage = "https://python-pillow.org" +urls.Mastodon = "https://fosstodon.org/@pillow" +urls."Release notes" = "https://pillow.readthedocs.io/en/stable/releasenotes/index.html" +urls.Source = "https://github.com/python-pillow/Pillow" [tool.setuptools] -packages = ["PIL"] +packages = [ + "PIL", +] include-package-data = true -package-dir = {"" = "src"} +package-dir = { "" = "src" } [tool.setuptools.dynamic] -version = {attr = "PIL.__version__"} +version = { attr = "PIL.__version__" } [tool.cibuildwheel] before-all = ".github/workflows/wheels-dependencies.sh" @@ -98,42 +100,47 @@ test-extras = "tests" [tool.ruff] fix = true -[tool.ruff.lint] -select = [ - "C4", # flake8-comprehensions - "E", # pycodestyle errors - "EM", # flake8-errmsg - "F", # pyflakes errors - "I", # isort - "ISC", # flake8-implicit-str-concat - "LOG", # flake8-logging - "PGH", # pygrep-hooks - "PYI", # flake8-pyi +lint.select = [ + "C4", # flake8-comprehensions + "E", # pycodestyle errors + "EM", # flake8-errmsg + "F", # pyflakes errors + "I", # isort + "ISC", # flake8-implicit-str-concat + "LOG", # flake8-logging + "PGH", # pygrep-hooks + "PYI", # flake8-pyi "RUF100", # unused noqa (yesqa) - "UP", # pyupgrade - "W", # pycodestyle warnings - "YTT", # flake8-2020 -] -ignore = [ - "E203", # Whitespace before ':' - "E221", # Multiple spaces before operator - "E226", # Missing whitespace around arithmetic operator - "E241", # Multiple spaces after ',' + "UP", # pyupgrade + "W", # pycodestyle warnings + "YTT", # flake8-2020 +] +lint.ignore = [ + "E203", # Whitespace before ':' + "E221", # Multiple spaces before operator + "E226", # Missing whitespace around arithmetic operator + "E241", # Multiple spaces after ',' "PYI026", # flake8-pyi: typing.TypeAlias added in Python 3.10 "PYI034", # flake8-pyi: typing.Self added in Python 3.11 ] - -[tool.ruff.lint.per-file-ignores] -"Tests/oss-fuzz/fuzz_font.py" = ["I002"] -"Tests/oss-fuzz/fuzz_pillow.py" = ["I002"] - -[tool.ruff.lint.isort] -known-first-party = ["PIL"] -required-imports = ["from __future__ import annotations"] +lint.per-file-ignores."Tests/oss-fuzz/fuzz_font.py" = [ + "I002", +] +lint.per-file-ignores."Tests/oss-fuzz/fuzz_pillow.py" = [ + "I002", +] +lint.isort.known-first-party = [ + "PIL", +] +lint.isort.required-imports = [ + "from __future__ import annotations", +] [tool.pytest.ini_options] addopts = "-ra --color=yes" -testpaths = ["Tests"] +testpaths = [ + "Tests", +] [tool.mypy] python_version = "3.8"