From 5f5c0bff18f3c154cc1c387e6b981b89856f7190 Mon Sep 17 00:00:00 2001 From: Mathieu Dupuy Date: Thu, 1 Feb 2024 00:06:12 +0100 Subject: [PATCH 1/2] migrate to setup.cfg --- .github/workflows/publish.yml | 4 +- requirements/packaging.txt | 1 + setup.cfg | 54 +++++++++++++++++ setup.py | 110 +--------------------------------- 4 files changed, 60 insertions(+), 109 deletions(-) create mode 100644 setup.cfg diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index a8bfd1ce..86bd97f6 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -23,4 +23,6 @@ jobs: TWINE_USERNAME: ${{ secrets.PYPI_USERNAME }} TWINE_PASSWORD: ${{ secrets.PYPI_PASSWORD }} run: | - python setup.py publish \ No newline at end of file + python -m build + twine check dist/* + twine upload dist/* diff --git a/requirements/packaging.txt b/requirements/packaging.txt index 1eae9429..e851240a 100644 --- a/requirements/packaging.txt +++ b/requirements/packaging.txt @@ -1,3 +1,4 @@ twine>=3.1.1 wheel>=0.34.2 +build setuptools diff --git a/setup.cfg b/setup.cfg new file mode 100644 index 00000000..c22158bd --- /dev/null +++ b/setup.cfg @@ -0,0 +1,54 @@ +[metadata] +name = drf-spectacular +version = attr: drf_spectacular.__version__ +author = T. Franzel +author_email = tfranzel@gmail.com +license = BSD +description = Sane and flexible OpenAPI 3 schema generation for Django REST framework +url = https://github.com/tfranzel/drf-spectacular +long_description = file: README.rst +long_description_content_type = text/x-rst +classifiers = + Development Status :: 5 - Production/Stable + Environment :: Web Environment + Framework :: Django + Framework :: Django :: 2.2 + Framework :: Django :: 3.2 + Framework :: Django :: 4.0 + Framework :: Django :: 4.1 + Framework :: Django :: 4.2 + Intended Audience :: Developers + License :: OSI Approved :: BSD License + Operating System :: OS Independent + Natural Language :: English + Programming Language :: Python :: 3 + Programming Language :: Python :: 3.6 + Programming Language :: Python :: 3.7 + 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 + Topic :: Documentation + Topic :: Software Development :: Code Generators +project_urls = + Source = https://github.com/tfranzel/drf-spectacular + Documentation = https://drf-spectacular.readthedocs.io + +[options] +install_requires = + Django>=2.2 + djangorestframework>=3.10.3 + uritemplate>=2.0.0 + PyYAML>=5.1 + jsonschema>=2.6.0 + inflection>=0.3.1 + typing-extensions; python_version < "3.10" +packages = find: +include_package_data = True +python_requires = >=3.6 + +[options.extras_require] +offline = drf-spectacular-sidecar +sidecar = drf-spectacular-sidecar diff --git a/setup.py b/setup.py index 488db677..60684932 100644 --- a/setup.py +++ b/setup.py @@ -1,109 +1,3 @@ -#!/usr/bin/env python -# -*- coding: utf-8 -*- -import os -import re -import shutil -import sys +from setuptools import setup -from setuptools import find_namespace_packages, setup - -name = 'drf-spectacular' -package = 'drf_spectacular' -description = 'Sane and flexible OpenAPI 3 schema generation for Django REST framework' -url = 'https://github.com/tfranzel/drf-spectacular' -author = 'T. Franzel' -author_email = 'tfranzel@gmail.com' -license = 'BSD' - -with open('README.rst') as readme: - long_description = readme.read() - -with open('requirements/base.txt') as fh: - requirements = [r for r in fh.read().split('\n') if not r.startswith('#')] - - -def get_version(package): - """ - Return package version as listed in `__version__` in `init.py`. - """ - init_py = open(os.path.join(package, '__init__.py')).read() - return re.search("^__version__ = ['\"]([^'\"]+)['\"]", - init_py, re.MULTILINE).group(1) - - -version = get_version(package) - - -if sys.argv[-1] == 'publish': - if os.system("pip freeze | grep twine"): - print("twine not installed.\nUse `pip install twine`.\nExiting.") - sys.exit(1) - os.system("python setup.py sdist bdist_wheel") - if os.system("twine check dist/*"): - print("twine check failed. Packages might be outdated.") - print("Try using `pip install -U twine wheel`.\nExiting.") - sys.exit(1) - if os.system("twine upload dist/*"): - print("failed to upload package") - sys.exit(1) - if os.environ.get('CI'): - os.system("git config user.name github-actions") - os.system("git config user.email github-actions@github.com") - os.system(f"git tag -a {version} -m 'version {version}'") - if os.system("git push --tags"): - print("failed pushing release tag") - sys.exit(1) - shutil.rmtree('dist') - shutil.rmtree('build') - shutil.rmtree('drf_spectacular.egg-info') - sys.exit() - - -setup( - name=name, - version=version, - url=url, - license=license, - description=description, - long_description=long_description, - long_description_content_type='text/x-rst', - author=author, - author_email=author_email, - packages=[p for p in find_namespace_packages(exclude=('tests*',)) if p.startswith(package)], - include_package_data=True, - python_requires=">=3.6", - install_requires=requirements, - extras_require={ - "offline": ["drf-spectacular-sidecar"], - "sidecar": ["drf-spectacular-sidecar"], - }, - classifiers=[ - 'Development Status :: 5 - Production/Stable', - 'Environment :: Web Environment', - 'Framework :: Django', - 'Framework :: Django :: 2.2', - 'Framework :: Django :: 3.2', - 'Framework :: Django :: 4.0', - 'Framework :: Django :: 4.1', - 'Framework :: Django :: 4.2', - 'Intended Audience :: Developers', - 'License :: OSI Approved :: BSD License', - 'Operating System :: OS Independent', - 'Natural Language :: English', - 'Programming Language :: Python :: 3', - 'Programming Language :: Python :: 3.6', - 'Programming Language :: Python :: 3.7', - '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', - 'Topic :: Documentation', - 'Topic :: Software Development :: Code Generators', - ], - project_urls={ - 'Source': 'https://github.com/tfranzel/drf-spectacular', - 'Documentation': 'https://drf-spectacular.readthedocs.io', - }, -) +setup() From ae6789557107aae346833959bfbfe3fe9625ad6f Mon Sep 17 00:00:00 2001 From: Mathieu Dupuy Date: Sat, 7 Dec 2024 15:38:19 +0100 Subject: [PATCH 2/2] migrate to pyproject.toml --- pyproject.toml | 67 ++++++++++++++++++++++++++++++++++++++++++++++++++ setup.cfg | 54 ---------------------------------------- 2 files changed, 67 insertions(+), 54 deletions(-) create mode 100644 pyproject.toml delete mode 100644 setup.cfg diff --git a/pyproject.toml b/pyproject.toml new file mode 100644 index 00000000..9158042f --- /dev/null +++ b/pyproject.toml @@ -0,0 +1,67 @@ +[build-system] +requires = ["setuptools>=61.2"] +build-backend = "setuptools.build_meta" + +[project] +name = "drf-spectacular" +authors = [{name = "T. Franzel", email = "tfranzel@gmail.com"}] +license = {text = "BSD"} +description = "Sane and flexible OpenAPI 3 schema generation for Django REST framework" +classifiers = [ + "Development Status :: 5 - Production/Stable", + "Environment :: Web Environment", + "Framework :: Django", + "Framework :: Django :: 2.2", + "Framework :: Django :: 3.2", + "Framework :: Django :: 4.0", + "Framework :: Django :: 4.1", + "Framework :: Django :: 4.2", + "Intended Audience :: Developers", + "License :: OSI Approved :: BSD License", + "Operating System :: OS Independent", + "Natural Language :: English", + "Programming Language :: Python :: 3", + "Programming Language :: Python :: 3.6", + "Programming Language :: Python :: 3.7", + "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", + "Topic :: Documentation", + "Topic :: Software Development :: Code Generators", +] +requires-python = ">=3.6" +dependencies = [ + "Django>=2.2", + "djangorestframework>=3.10.3", + "uritemplate>=2.0.0", + "PyYAML>=5.1", + "jsonschema>=2.6.0", + "inflection>=0.3.1", + 'typing-extensions; python_version < "3.10"', +] +dynamic = ["version"] + +[project.readme] +file = "README.rst" +content-type = "text/x-rst" + +[project.urls] +Homepage = "https://github.com/tfranzel/drf-spectacular" +Source = "https://github.com/tfranzel/drf-spectacular" +Documentation = "https://drf-spectacular.readthedocs.io" + +[project.optional-dependencies] +offline = ["drf-spectacular-sidecar"] +sidecar = ["drf-spectacular-sidecar"] + +[tool.setuptools] +include-package-data = true + +[tool.setuptools.packages] +find = {namespaces = false} + +[tool.setuptools.dynamic] +version = {attr = "drf_spectacular.__version__"} diff --git a/setup.cfg b/setup.cfg deleted file mode 100644 index c22158bd..00000000 --- a/setup.cfg +++ /dev/null @@ -1,54 +0,0 @@ -[metadata] -name = drf-spectacular -version = attr: drf_spectacular.__version__ -author = T. Franzel -author_email = tfranzel@gmail.com -license = BSD -description = Sane and flexible OpenAPI 3 schema generation for Django REST framework -url = https://github.com/tfranzel/drf-spectacular -long_description = file: README.rst -long_description_content_type = text/x-rst -classifiers = - Development Status :: 5 - Production/Stable - Environment :: Web Environment - Framework :: Django - Framework :: Django :: 2.2 - Framework :: Django :: 3.2 - Framework :: Django :: 4.0 - Framework :: Django :: 4.1 - Framework :: Django :: 4.2 - Intended Audience :: Developers - License :: OSI Approved :: BSD License - Operating System :: OS Independent - Natural Language :: English - Programming Language :: Python :: 3 - Programming Language :: Python :: 3.6 - Programming Language :: Python :: 3.7 - 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 - Topic :: Documentation - Topic :: Software Development :: Code Generators -project_urls = - Source = https://github.com/tfranzel/drf-spectacular - Documentation = https://drf-spectacular.readthedocs.io - -[options] -install_requires = - Django>=2.2 - djangorestframework>=3.10.3 - uritemplate>=2.0.0 - PyYAML>=5.1 - jsonschema>=2.6.0 - inflection>=0.3.1 - typing-extensions; python_version < "3.10" -packages = find: -include_package_data = True -python_requires = >=3.6 - -[options.extras_require] -offline = drf-spectacular-sidecar -sidecar = drf-spectacular-sidecar