From f00421d097ea99e9403b4c5ae0dc48dcae3914a2 Mon Sep 17 00:00:00 2001 From: Dulmandakh Date: Sat, 31 Aug 2024 18:28:29 +0800 Subject: [PATCH] modernize packaging using pyproject.toml --- .github/workflows/release.yml | 8 ++-- pyproject.toml | 70 +++++++++++++++++++++++++++++------ setup.cfg | 2 - setup.py | 38 ------------------- 4 files changed, 61 insertions(+), 57 deletions(-) delete mode 100644 setup.cfg delete mode 100644 setup.py diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index a68e39e80..3fb485840 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -32,19 +32,17 @@ jobs: uses: actions/cache@v2 with: path: ${{ steps.pip-cache.outputs.dir }} - key: release-${{ hashFiles('**/setup.py') }} + key: release-${{ hashFiles('**/pyproject.toml') }} restore-keys: | release- - name: Install dependencies run: | - python -m pip install -U pip - python -m pip install -U setuptools twine wheel + python -m pip install -U pip build twine - name: Build package run: | - python setup.py --version - python setup.py sdist --format=gztar bdist_wheel + python -m build twine check dist/* - name: Upload packages to Jazzband diff --git a/pyproject.toml b/pyproject.toml index 972c0d2f7..32127c13a 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,17 +1,63 @@ -[tool.coverage.run] -source = ["sorl"] -omit = [ - "*/sorl-thumbnail/sorl/__init__.py", - "*/sorl/thumbnail/__init__.py", - "*/sorl/thumbnail/conf/__init__.py", - "*/sorl/thumbnail/admin/__init__.py", -] +[build-system] +requires = ["setuptools>=64", "setuptools_scm>=8"] +build-backend = "setuptools.build_meta" -[tool.coverage.report] -exclude_lines = [ - "pragma: no cover", - "if __name__ == .__main__.:", +[project] +name = "sorl-thumbnail" +dynamic = ["version"] +description = "Thumbnails for Django" +readme = "README.rst" +license = {file = "LICENSE"} +keywords = ["django", "thumbnail", "sorl"] +authors = [ + {name = "Mikko Hellsing", email = "mikko@aino.se"}, +] +maintainers = [ + {name = "Jazzband", email = "roadies@jazzband.co"} ] +requires-python = ">= 3.8" +classifiers=[ + 'Development Status :: 5 - Production/Stable', + 'Environment :: Web Environment', + 'Intended Audience :: Developers', + 'License :: OSI Approved :: BSD License', + 'Operating System :: OS Independent', + 'Programming Language :: Python', + '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', + 'Topic :: Internet :: WWW/HTTP :: Dynamic Content', + 'Topic :: Multimedia :: Graphics', + 'Framework :: Django', + 'Framework :: Django :: 4.2', + 'Framework :: Django :: 5.0', + 'Framework :: Django :: 5.1', +] + +[project.urls] +Homepage = "https://sorl-thumbnail.readthedocs.io/en/latest/" +Repository = "https://github.com/jazzband/sorl-thumbnail" + + +[tool.coverage.run] + source = ["sorl"] + omit = [ + "*/sorl-thumbnail/sorl/__init__.py", + "*/sorl/thumbnail/__init__.py", + "*/sorl/thumbnail/conf/__init__.py", + "*/sorl/thumbnail/admin/__init__.py", + ] + + [tool.coverage.report] + exclude_lines = [ + "pragma: no cover", + "if __name__ == .__main__.:", + ] + +# below line is required to generating versions with setuptools_scm +[tool.setuptools_scm] [tool.ruff] exclude = [ diff --git a/setup.cfg b/setup.cfg deleted file mode 100644 index 526aeb281..000000000 --- a/setup.cfg +++ /dev/null @@ -1,2 +0,0 @@ -[bdist_wheel] -universal = 0 diff --git a/setup.py b/setup.py deleted file mode 100644 index 548cfa96a..000000000 --- a/setup.py +++ /dev/null @@ -1,38 +0,0 @@ -from setuptools import find_packages, setup - -setup( - name='sorl-thumbnail', - use_scm_version=True, - description='Thumbnails for Django', - long_description=open('README.rst').read(), - author="Mikko Hellsing", - author_email='mikko@aino.se', - maintainer="Jazzband", - maintainer_email="roadies@jazzband.co", - license="BSD", - url='https://github.com/jazzband/sorl-thumbnail', - packages=find_packages(exclude=['tests', 'tests.*']), - platforms='any', - python_requires='>=3.8', - zip_safe=False, - classifiers=[ - 'Development Status :: 5 - Production/Stable', - 'Environment :: Web Environment', - 'Intended Audience :: Developers', - 'License :: OSI Approved :: BSD License', - 'Operating System :: OS Independent', - 'Programming Language :: Python', - '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', - 'Topic :: Internet :: WWW/HTTP :: Dynamic Content', - 'Topic :: Multimedia :: Graphics', - 'Framework :: Django', - 'Framework :: Django :: 4.2', - 'Framework :: Django :: 5.0', - 'Framework :: Django :: 5.1', - ], - setup_requires=['setuptools_scm'], -)