From 0c353548e22f53d9c90e073349f06caedbb00d2b Mon Sep 17 00:00:00 2001 From: Thanos <111999343+Sachaa-Thanasius@users.noreply.github.com> Date: Sun, 5 May 2024 23:39:37 -0400 Subject: [PATCH] Move most static metadata to pyproject.toml --- pyproject.toml | 81 ++++++++++++++++++++++++++++- setup.py | 138 ++++++++++--------------------------------------- 2 files changed, 107 insertions(+), 112 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index 559b24b4ba55..d36c85c82741 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,7 +1,84 @@ [build-system] -requires = ["setuptools", "wheel"] +requires = ["setuptools"] build-backend = "setuptools.build_meta" +[project] +name = "discord.py" +description = "A Python wrapper for the Discord API" +readme = { file = "README.rst", content-type = "text/x-rst" } +license = { file = "LICENSE" } +requires-python = ">=3.8" +authors = [{ name = "Rapptz" }] +classifiers = [ + "Development Status :: 5 - Production/Stable", + "License :: OSI Approved :: MIT License", + "Intended Audience :: Developers", + "Natural Language :: English", + "Operating System :: OS Independent", + "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", + "Topic :: Software Development :: Libraries", + "Topic :: Software Development :: Libraries :: Python Modules", + "Topic :: Utilities", + "Typing :: Typed", +] +dynamic = ["version", "dependencies"] + +[project.urls] +Documentation = "https://discordpy.readthedocs.io/en/latest/" +"Issue tracker" = "https://github.com/Rapptz/discord.py/issues" + +[tool.setuptools.dynamic] +dependencies = { file = "requirements.txt" } + +[project.optional-dependencies] +voice = ["PyNaCl>=1.3.0,<1.6"] +docs = [ + "sphinx==4.4.0", + "sphinxcontrib_trio==1.1.2", + # TODO: bump these when migrating to a newer Sphinx version + "sphinxcontrib-websupport==1.2.4", + "sphinxcontrib-applehelp==1.0.4", + "sphinxcontrib-devhelp==1.0.2", + "sphinxcontrib-htmlhelp==2.0.1", + "sphinxcontrib-jsmath==1.0.1", + "sphinxcontrib-qthelp==1.0.3", + "sphinxcontrib-serializinghtml==1.1.5", + "typing-extensions>=4.3,<5", + "sphinx-inline-tabs==2023.4.21", +] +speed = [ + "orjson>=3.5.4", + "aiodns>=1.1", + "Brotli", + "cchardet==2.1.7; python_version < '3.10'", +] +test = [ + "coverage[toml]", + "pytest", + "pytest-asyncio", + "pytest-cov", + "pytest-mock", + "typing-extensions>=4.3,<5", + "tzdata; sys_platform == 'win32'", +] + +[tool.setuptools] +packages = [ + "discord", + "discord.types", + "discord.ui", + "discord.webhook", + "discord.app_commands", + "discord.ext.commands", + "discord.ext.tasks", +] +include-package-data = true + [tool.black] line-length = 125 skip-string-normalization = true @@ -16,7 +93,7 @@ omit = [ [tool.coverage.report] exclude_lines = [ "pragma: no cover", - "@overload" + "@overload", ] [tool.isort] diff --git a/setup.py b/setup.py index ffe3057fe305..2481afeb428c 100644 --- a/setup.py +++ b/setup.py @@ -1,113 +1,31 @@ from setuptools import setup import re -requirements = [] -with open('requirements.txt') as f: - requirements = f.read().splitlines() - -version = '' -with open('discord/__init__.py') as f: - version = re.search(r'^__version__\s*=\s*[\'"]([^\'"]*)[\'"]', f.read(), re.MULTILINE).group(1) - -if not version: - raise RuntimeError('version is not set') - -if version.endswith(('a', 'b', 'rc')): - # append version identifier based on commit count - try: - import subprocess - - p = subprocess.Popen(['git', 'rev-list', '--count', 'HEAD'], stdout=subprocess.PIPE, stderr=subprocess.PIPE) - out, err = p.communicate() - if out: - version += out.decode('utf-8').strip() - p = subprocess.Popen(['git', 'rev-parse', '--short', 'HEAD'], stdout=subprocess.PIPE, stderr=subprocess.PIPE) - out, err = p.communicate() - if out: - version += '+g' + out.decode('utf-8').strip() - except Exception: - pass - -readme = '' -with open('README.rst') as f: - readme = f.read() - -extras_require = { - 'voice': ['PyNaCl>=1.3.0,<1.6'], - 'docs': [ - 'sphinx==4.4.0', - 'sphinxcontrib_trio==1.1.2', - # TODO: bump these when migrating to a newer Sphinx version - 'sphinxcontrib-websupport==1.2.4', - 'sphinxcontrib-applehelp==1.0.4', - 'sphinxcontrib-devhelp==1.0.2', - 'sphinxcontrib-htmlhelp==2.0.1', - 'sphinxcontrib-jsmath==1.0.1', - 'sphinxcontrib-qthelp==1.0.3', - 'sphinxcontrib-serializinghtml==1.1.5', - 'typing-extensions>=4.3,<5', - 'sphinx-inline-tabs==2023.4.21', - ], - 'speed': [ - 'orjson>=3.5.4', - 'aiodns>=1.1', - 'Brotli', - 'cchardet==2.1.7; python_version < "3.10"', - ], - 'test': [ - 'coverage[toml]', - 'pytest', - 'pytest-asyncio', - 'pytest-cov', - 'pytest-mock', - 'typing-extensions>=4.3,<5', - 'tzdata; sys_platform == "win32"', - ], -} - -packages = [ - 'discord', - 'discord.types', - 'discord.ui', - 'discord.webhook', - 'discord.app_commands', - 'discord.ext.commands', - 'discord.ext.tasks', -] - -setup( - name='discord.py', - author='Rapptz', - url='https://github.com/Rapptz/discord.py', - project_urls={ - 'Documentation': 'https://discordpy.readthedocs.io/en/latest/', - 'Issue tracker': 'https://github.com/Rapptz/discord.py/issues', - }, - version=version, - packages=packages, - license='MIT', - description='A Python wrapper for the Discord API', - long_description=readme, - long_description_content_type='text/x-rst', - include_package_data=True, - install_requires=requirements, - extras_require=extras_require, - python_requires='>=3.8.0', - classifiers=[ - 'Development Status :: 5 - Production/Stable', - 'License :: OSI Approved :: MIT License', - 'Intended Audience :: Developers', - 'Natural Language :: English', - 'Operating System :: OS Independent', - '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', - 'Topic :: Software Development :: Libraries', - 'Topic :: Software Development :: Libraries :: Python Modules', - 'Topic :: Utilities', - 'Typing :: Typed', - ], -) +def derive_version() -> str: + version = '' + with open('discord/__init__.py') as f: + version = re.search(r'^__version__\s*=\s*[\'"]([^\'"]*)[\'"]', f.read(), re.MULTILINE).group(1) + + if not version: + raise RuntimeError('version is not set') + + if version.endswith(('a', 'b', 'rc')): + # append version identifier based on commit count + try: + import subprocess + + p = subprocess.Popen(['git', 'rev-list', '--count', 'HEAD'], stdout=subprocess.PIPE, stderr=subprocess.PIPE) + out, err = p.communicate() + if out: + version += out.decode('utf-8').strip() + p = subprocess.Popen(['git', 'rev-parse', '--short', 'HEAD'], stdout=subprocess.PIPE, stderr=subprocess.PIPE) + out, err = p.communicate() + if out: + version += '+g' + out.decode('utf-8').strip() + except Exception: + pass + + return version + + +setup(version=derive_version())