diff --git a/.ci/install.sh b/.ci/install.sh index 4748feb3d..cd9035f6a 100755 --- a/.ci/install.sh +++ b/.ci/install.sh @@ -46,6 +46,16 @@ if [[ $(uname) != CYGWIN* ]]; then python3 -m pip install pyqt6 fi + # Pyroma uses non-isolated build and fails with old setuptools + if [[ + $GHA_PYTHON_VERSION == pypy3.9 + || $GHA_PYTHON_VERSION == 3.8 + || $GHA_PYTHON_VERSION == 3.9 + ]]; then + # To match pyproject.toml + python3 -m pip install "setuptools>=67.8" + fi + # webp pushd depends && ./install_webp.sh && popd diff --git a/.flake8 b/.flake8 new file mode 100644 index 000000000..e19c0a585 --- /dev/null +++ b/.flake8 @@ -0,0 +1,3 @@ +[flake8] +extend-ignore = E203 +max-line-length = 88 diff --git a/MANIFEST.in b/MANIFEST.in index 2bbddefa3..9401ebbbf 100644 --- a/MANIFEST.in +++ b/MANIFEST.in @@ -7,6 +7,7 @@ include *.rst include *.sh include *.txt include *.yaml +include .flake8 include LICENSE include Makefile include tox.ini diff --git a/docs/installation.rst b/docs/installation.rst index 162880182..9f38a622c 100644 --- a/docs/installation.rst +++ b/docs/installation.rst @@ -356,7 +356,7 @@ for your machine (e.g. :file:`/usr` or :file:`/usr/local`), no additional configuration should be required. If they are installed in a non-standard location, you may need to configure setuptools to use those locations by editing :file:`setup.py` or -:file:`setup.cfg`, or by adding environment variables on the command +:file:`pyproject.toml`, or by adding environment variables on the command line:: CFLAGS="-I/usr/pkg/include" python3 -m pip install --upgrade Pillow --no-binary :all: diff --git a/pyproject.toml b/pyproject.toml index fd9c05f92..6f6ed6e93 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -6,3 +6,80 @@ requires = [ backend-path = [ "_custom_build", ] + +[project] +name = "pillow" +description = "Python Imaging Library (Fork)" +readme = "README.md" +keywords = [ + "Imaging", +] +license = {text = "HPND"} +authors = [{name = "Jeffrey A. Clark (Alex)", email = "aclark@aclark.net"}] +requires-python = ">=3.8" +classifiers = [ + "Development Status :: 6 - Mature", + "License :: OSI Approved :: Historical Permission Notice and Disclaimer (HPND)", + "Programming Language :: Python :: 3 :: Only", + "Programming Language :: Python :: 3.8", + "Programming Language :: Python :: 3.9", + "Programming Language :: Python :: 3.10", + "Programming Language :: Python :: 3.11", + "Programming Language :: Python :: 3.12", + "Programming Language :: Python :: Implementation :: CPython", + "Programming Language :: Python :: Implementation :: PyPy", + "Topic :: Multimedia :: Graphics", + "Topic :: Multimedia :: Graphics :: Capture :: Digital Camera", + "Topic :: Multimedia :: Graphics :: Capture :: Screen Capture", + "Topic :: Multimedia :: Graphics :: Graphics Conversion", + "Topic :: Multimedia :: Graphics :: Viewers", +] +dynamic = [ + "version", +] +[project.optional-dependencies] +docs = [ + "furo", + "olefile", + "sphinx>=2.4", + "sphinx-copybutton", + "sphinx-inline-tabs", + "sphinx-removed-in", + "sphinxext-opengraph", +] +tests = [ + "check-manifest", + "coverage", + "defusedxml", + "markdown2", + "olefile", + "packaging", + "pyroma", + "pytest", + "pytest-cov", + "pytest-timeout", +] +[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" +Twitter = "https://twitter.com/PythonPillow" + +[tool.setuptools] +packages = ["PIL"] +include-package-data = true +package-dir = {"" = "src"} + +[tool.setuptools.dynamic] +version = {attr = "PIL.__version__"} + +[tool.isort] +profile = "black" + +[tool.pytest.ini_options] +addopts = "-ra --color=yes" +testpaths = ["Tests"] diff --git a/setup.cfg b/setup.cfg deleted file mode 100644 index e560f9516..000000000 --- a/setup.cfg +++ /dev/null @@ -1,74 +0,0 @@ -[metadata] -name = Pillow -description = Python Imaging Library (Fork) -long_description = file: README.md -long_description_content_type = text/markdown -url = https://python-pillow.org -author = Jeffrey A. Clark (Alex) -author_email = aclark@aclark.net -license = HPND -classifiers = - Development Status :: 6 - Mature - License :: OSI Approved :: Historical Permission Notice and Disclaimer (HPND) - Programming Language :: Python :: 3 - Programming Language :: Python :: 3 :: Only - Programming Language :: Python :: 3.8 - Programming Language :: Python :: 3.9 - Programming Language :: Python :: 3.10 - Programming Language :: Python :: 3.11 - Programming Language :: Python :: 3.12 - Programming Language :: Python :: Implementation :: CPython - Programming Language :: Python :: Implementation :: PyPy - Topic :: Multimedia :: Graphics - Topic :: Multimedia :: Graphics :: Capture :: Digital Camera - Topic :: Multimedia :: Graphics :: Capture :: Screen Capture - Topic :: Multimedia :: Graphics :: Graphics Conversion - Topic :: Multimedia :: Graphics :: Viewers -keywords = Imaging -project_urls = - Documentation=https://pillow.readthedocs.io - Source=https://github.com/python-pillow/Pillow - Funding=https://tidelift.com/subscription/pkg/pypi-pillow?utm_source=pypi-pillow&utm_medium=pypi - Release notes=https://pillow.readthedocs.io/en/stable/releasenotes/index.html - Changelog=https://github.com/python-pillow/Pillow/blob/main/CHANGES.rst - Twitter=https://twitter.com/PythonPillow - Mastodon=https://fosstodon.org/@pillow - -[options] -packages = PIL -python_requires = >=3.8 -include_package_data = True -package_dir = - = src - -[options.extras_require] -docs = - furo - olefile - sphinx>=2.4 - sphinx-copybutton - sphinx-inline-tabs - sphinx-removed-in - sphinxext-opengraph -tests = - check-manifest - coverage - defusedxml - markdown2 - olefile - packaging - pyroma - pytest - pytest-cov - pytest-timeout - -[flake8] -extend-ignore = E203 -max-line-length = 88 - -[isort] -profile = black - -[tool:pytest] -addopts = -ra --color=yes -testpaths = Tests diff --git a/setup.py b/setup.py index 935166716..f13f03713 100755 --- a/setup.py +++ b/setup.py @@ -986,7 +986,6 @@ ext_modules = [ try: setup( - version=PILLOW_VERSION, cmdclass={"build_ext": pil_build_ext}, ext_modules=ext_modules, zip_safe=not (debug_build() or PLATFORM_MINGW),