diff --git a/.github/workflows/rename.yml b/.github/workflows/rename.yml index 54b7f3df0..e6d73c62e 100644 --- a/.github/workflows/rename.yml +++ b/.github/workflows/rename.yml @@ -30,8 +30,8 @@ jobs: mv discord selfcord sed -i -e 's/import discord/import selfcord/g' -e '/from discord_protos/!{s/from discord/from selfcord/g}' -e '/from discord_protos/!{s/from discord/from selfcord/g}' -e 's/discord\.py-self/selfcord\.py/g' -e '/\(discord\.com\|discord\.gg\|discord\.new\)/! s/discord\./selfcord\./g' $(find selfcord examples -name "*.py") - sed -i -e 's/discord/selfcord/g' pyproject.toml MANIFEST.in - sed -i -e "s/prefix = 'discord'/prefix = 'selfcord'/" setup.py + sed -i -e 's/discord/selfcord/g' MANIFEST.in + sed -i -E 's/^name = "discord\.py-self"/name = "selfcord.py"/; /http/!s/\bdiscord\b/selfcord/g' pyproject.toml - name: Push changes run: | diff --git a/pyproject.toml b/pyproject.toml index 9ca336c53..cf787f8d6 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,7 +1,93 @@ [build-system] -requires = ["setuptools", "wheel"] +requires = ["setuptools"] build-backend = "setuptools.build_meta" +[project] +name = "discord.py-self" +description = "A Python wrapper for the Discord user API" +readme = { file = "README.rst", content-type = "text/x-rst" } +license = { file = "LICENSE" } +requires-python = ">=3.8" +authors = [{ name = "Dolfies", email = "me@dolfi.es" }] +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", + "Programming Language :: Python :: 3.13", + "Topic :: Internet", + "Topic :: Software Development :: Libraries", + "Topic :: Software Development :: Libraries :: Python Modules", + "Topic :: Utilities", + "Typing :: Typed", +] +dynamic = ["version", "dependencies"] + +[project.urls] +Documentation = "https://discordpy-self.readthedocs.io/en/latest/" +"Issue tracker" = "https://github.com/dolfies/discord.py-self/issues" +"Project updates" = "https://t.me/dpy_self" +"Discussion & support" = "https://t.me/dpy_self_discussions" + +[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", + # TODO: Remove this when moving to Sphinx >= 6.6 + "imghdr-lts==1.0.0; python_version>='3.13'", +] +speed = [ + "orjson>=3.5.4", + "aiodns>=1.1; sys_platform != 'win32'", + "Brotli", + "cchardet==2.1.7; python_version < '3.10'", + "mmh3>=2.5", + "zstandard>=0.23.0", +] +test = [ + "coverage[toml]", + "pytest", + "pytest-asyncio", + "pytest-cov", + "pytest-mock", + "typing-extensions>=4.3,<5", + "tzdata; sys_platform == 'win32'", +] +dev = [ + "black==22.6", + "typing_extensions>=4.3,<5", +] + +[tool.setuptools] +packages = [ + "discord", + "discord.types", + "discord.webhook", + "discord.ext.commands", + "discord.ext.tasks", +] +include-package-data = true + [tool.black] line-length = 125 skip-string-normalization = true @@ -17,7 +103,7 @@ omit = [ [tool.coverage.report] exclude_lines = [ "pragma: no cover", - "@overload" + "@overload", ] [tool.isort] diff --git a/setup.py b/setup.py index 40aec7d06..4a656023f 100644 --- a/setup.py +++ b/setup.py @@ -1,111 +1,31 @@ -from setuptools import setup, find_packages +from setuptools import setup import re -prefix = 'discord' # This will be changed with regular expressions if necessary +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) # type: ignore -requirements = [] -with open('requirements.txt') as f: - requirements = f.read().splitlines() + if not version: + raise RuntimeError('version is not set') -version = '' -with open(f'{prefix}/__init__.py') as f: - version = re.search(r'^__version__\s*=\s*[\'"]([^\'"]*)[\'"]', f.read(), re.MULTILINE).group(1) + if version.endswith(('a', 'b', 'rc')): + # append version identifier based on commit count + try: + import subprocess -if not version: - raise RuntimeError('version is not set') + 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 -if version.endswith(('a', 'b', 'rc')): - # append version identifier based on commit count - try: - import subprocess + return version - 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; sys_platform != "win32"', - 'Brotli', - 'cchardet==2.1.7; python_version < "3.10"', - 'mmh3>=2.5', - 'zstandard>=0.23.0', - ], - 'test': [ - 'coverage[toml]', - 'pytest', - 'pytest-asyncio', - 'pytest-cov', - 'pytest-mock', - 'typing-extensions>=4.3,<5', - 'tzdata; sys_platform == "win32"', - ], -} - -setup( - name='discord.py-self' if prefix == 'discord' else f'{prefix}.py', - author='Dolfies', - author_email='me@dolfi.es', - url='https://github.com/dolfies/discord.py-self', - project_urls={ - 'Documentation': 'https://discordpy-self.readthedocs.io/en/latest/', - 'Issue tracker': 'https://github.com/dolfies/discord.py-self/issues', - 'Project updates': 'https://t.me/dpy_self', - 'Discussion & support': 'https://t.me/dpy_self_discussions', - }, - version=version, - packages=find_packages() + [f'{prefix}.ext.commands', f'{prefix}.ext.tasks'], - license='MIT', - description='A Python wrapper for the Discord user 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', - 'Programming Language :: Python :: 3.13', - 'Topic :: Internet', - 'Topic :: Software Development :: Libraries', - 'Topic :: Software Development :: Libraries :: Python Modules', - 'Topic :: Utilities', - 'Typing :: Typed', - ], -) +setup(version=derive_version())