Move SetupTools metadata into pyproject.toml
authorJeremy Stanley <fungi@yuggoth.org>
Thu, 26 May 2022 16:50:08 +0000 (16:50 +0000)
committerJeremy Stanley <fungi@yuggoth.org>
Thu, 26 May 2022 16:55:25 +0000 (16:55 +0000)
SetupTools 61 adds experimental support for reading metadata from
pyproject.toml files instead of traditional setup.py or setup.cfg.
PBR still seems to require the package name in setup.cfg for now,
but otherwise hollow this file out moving everything to the new
solution. Because this is experimental, silence a warning from
SetupTools which states that. Also work around newer SetupTools
complaints about namespace packages included as data by informing it
that mudpy.tests and mudpy.tests.fixtures are included modules even
though they really aren't.

pyproject.toml
setup.cfg
tox.ini

index 01b888b..e03fc14 100644 (file)
@@ -3,5 +3,54 @@
 # provided in the LICENSE file distributed with this software.
 
 [build-system]
-requires = ["pbr>=5.8.0", "setuptools>=36.6.0"]
+requires = ["pbr>=5.8", "setuptools>=61"]
 build-backend = "pbr.build"
+
+[project]
+authors = [{email = "fungi@yuggoth.org"}, {name = "Jeremy Stanley"}]
+classifiers = [
+    "License :: OSI Approved :: ISC License (ISCL)",
+    "Operating System :: POSIX",
+    "Operating System :: Unix",
+    "Programming Language :: Python",
+    "Programming Language :: Python :: 3",
+    "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 :: Only",
+    "Topic :: Communications",
+    "Topic :: Communications :: BBS",
+    "Topic :: Communications :: Chat",
+    "Topic :: Games/Entertainment",
+    "Topic :: Games/Entertainment :: Multi-User Dungeons (MUD)",
+    "Topic :: Games/Entertainment :: Role-Playing",
+    "Topic :: Internet",
+]
+dependencies = ["passlib>=1.7", "pyyaml"]
+description = "The mudpy MUD server engine."
+dynamic = ["version"]
+keywords = ["game", "mud", "telnet"]
+maintainers = [{email = "fungi@yuggoth.org"}, {name = "Jeremy Stanley"}]
+name = "mudpy"
+readme = {charset = "UTF-8", content-type = "text/x-rst", file = "README"}
+requires-python = ">=3.7"
+
+[project.scripts]
+mudpy = "mudpy.daemon:main"
+mudpy_selftest = "mudpy.tests.selftest:main"
+
+[project.urls]
+"Big ChangeLog" = "https://mudpy.org/clog/mudpy/"
+"Browse Source" = "https://mudpy.org/code/mudpy/"
+"Bug Reporting" = "https://mudpy.org/bugs/mudpy/"
+"Documentation" = "https://mudpy.org/docs/mudpy/"
+"Git Clone URL" = "https://mudpy.org/code/mudpy/"
+"License Texts" = "https://mudpy.org/license/"
+"Release Files" = "https://mudpy.org/dist/mudpy/"
+
+[tool.setuptools]
+# Silence a warning about namespace packages included as data because we ship
+# subdirectories inside the mudpy package tree
+packages = ["mudpy", "mudpy.tests", "mudpy.tests.fixtures"]
index deccc06..f6b4429 100644 (file)
--- a/setup.cfg
+++ b/setup.cfg
@@ -4,54 +4,3 @@
 
 [metadata]
 name = mudpy
-summary = The mudpy MUD server engine.
-long_description = file: README
-long_description_content_type = text/x-rst; charset=UTF-8
-author = Jeremy Stanley
-author_email = fungi@yuggoth.org
-url = https://mudpy.org/
-project_urls =
-    Big ChangeLog = https://mudpy.org/clog/mudpy/
-    Browse Source = https://mudpy.org/code/mudpy/
-    Bug Reporting = https://mudpy.org/bugs/mudpy/
-    Documentation = https://mudpy.org/docs/mudpy/
-    Git Clone URL = https://mudpy.org/code/mudpy/
-    License Texts = https://mudpy.org/license/
-    Release Files = https://mudpy.org/dist/mudpy/
-keywords = mud game telnet
-license = ISC License (ISCL)
-platforms = POSIX/Unix
-classifiers =
-    License :: OSI Approved :: ISC License (ISCL)
-    Operating System :: POSIX
-    Operating System :: Unix
-    Programming Language :: Python
-    Programming Language :: Python :: 3
-    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 :: Only
-    Topic :: Communications
-    Topic :: Communications :: BBS
-    Topic :: Communications :: Chat
-    Topic :: Games/Entertainment
-    Topic :: Games/Entertainment :: Multi-User Dungeons (MUD)
-    Topic :: Games/Entertainment :: Role-Playing
-    Topic :: Internet
-
-[options]
-install_requires =
-    passlib>=1.7
-    pyyaml
-python_requires = >=3.7
-
-[files]
-packages =
-    mudpy
-
-[entry_points]
-console_scripts =
-    mudpy = mudpy.daemon:main
-    mudpy_selftest = mudpy.tests.selftest:main
diff --git a/tox.ini b/tox.ini
index 61d1cd3..11e535f 100644 (file)
--- a/tox.ini
+++ b/tox.ini
@@ -53,6 +53,11 @@ basepython = python3
 #   setuptools._deprecation_warning.SetuptoolsDeprecationWarning "easy_install
 #   command is deprecated. Use build and pip and other standards-based tools."
 #   but only the message can be matched because the exception is private
+# setuptools.config.pyprojecttoml raises
+#   setuptools.config.pyprojecttoml._ExperimentalProjectMetadata "Support for
+#   project metadata in `pyproject.toml` is still experimental and may be
+#   removed (or change) in future releases." but the parent Warning class has
+#   to be used instead
 # pip._vendor.certifi.core and pip._vendor.pep517.in_process raise
 #   DeprecationWarning "path is deprecated. Use files() instead. Refer to
 #   https://importlib-resources.readthedocs.io/en/latest/using.html#migrating-from-legacy
@@ -60,7 +65,7 @@ basepython = python3
 #   contains a colon
 setenv =
     PYTHONWARNDFAULTENCODING = 1
-    PYTHONWARNINGS = error, ignore::FutureWarning:Cython.Compiler.Main, ignore::DeprecationWarning:distutils.command.install, ignore:The distutils package is deprecated and slated for removal in Python 3.12. Use setuptools or check PEP 632 for potential alternatives:DeprecationWarning, ignore:Creating a LegacyVersion has been deprecated and will be removed in the next major release:DeprecationWarning, ignore:SelectableGroups dict interface is deprecated. Use select.:DeprecationWarning:flake8.plugins.manager, ignore:setup.py install is deprecated. Use build and pip and other standards-based tools., ignore:easy_install command is deprecated. Use build and pip and other standards-based tools., ignore::DeprecationWarning:pip._vendor.certifi.core, ignore::DeprecationWarning:pip._vendor.pep517.in_process, ignore:'cgi' is deprecated and slated for removal in Python 3.13:DeprecationWarning:pip._internal.index.collector, ignore:'cgi' is deprecated and slated for removal in Python 3.13:DeprecationWarning:Cython.Tempita, ignore:'crypt' is deprecated and slated for removal in Python 3.13:DeprecationWarning:passlib.utils, ignore:'telnetlib' is deprecated and slated for removal in Python 3.13:DeprecationWarning:mudpy.tests.selftest, ignore::Warning:setuptools.command.build_py
+    PYTHONWARNINGS = error, ignore::FutureWarning:Cython.Compiler.Main, ignore::DeprecationWarning:distutils.command.install, ignore:The distutils package is deprecated and slated for removal in Python 3.12. Use setuptools or check PEP 632 for potential alternatives:DeprecationWarning, ignore:Creating a LegacyVersion has been deprecated and will be removed in the next major release:DeprecationWarning, ignore:SelectableGroups dict interface is deprecated. Use select.:DeprecationWarning:flake8.plugins.manager, ignore:setup.py install is deprecated. Use build and pip and other standards-based tools., ignore:easy_install command is deprecated. Use build and pip and other standards-based tools., ignore::DeprecationWarning:pip._vendor.certifi.core, ignore::DeprecationWarning:pip._vendor.pep517.in_process, ignore:'cgi' is deprecated and slated for removal in Python 3.13:DeprecationWarning:pip._internal.index.collector, ignore:'cgi' is deprecated and slated for removal in Python 3.13:DeprecationWarning:Cython.Tempita, ignore:'crypt' is deprecated and slated for removal in Python 3.13:DeprecationWarning:passlib.utils, ignore:'telnetlib' is deprecated and slated for removal in Python 3.13:DeprecationWarning:mudpy.tests.selftest, ignore::Warning:setuptools.command.build_py, ignore:Support for project metadata in `pyproject.toml` is still experimental and may be removed (or change) in future releases.:Warning:setuptools.config.pyprojecttoml
     PYTHONUTF8 = 1
     VIRTUALENV_CREATOR = venv
 commands = mudpy_selftest mudpy/tests/fixtures/test_daemon.yaml