From bbd85135ea1a1cb9b183d168a1730399ce100f74 Mon Sep 17 00:00:00 2001 From: Denis Laxalde Date: Mon, 18 Nov 2024 14:08:03 +0100 Subject: [PATCH] Move project packaging and metadata in pyproject.toml --- .github/workflows/deb.yml | 6 +++--- .github/workflows/docs.yml | 2 +- docs/conf.py | 14 ++------------ pyproject.toml | 39 +++++++++++++++++++++++++++++++++++++- setup.py | 38 ------------------------------------- 5 files changed, 44 insertions(+), 55 deletions(-) delete mode 100644 setup.py diff --git a/.github/workflows/deb.yml b/.github/workflows/deb.yml index 2759310..594218b 100644 --- a/.github/workflows/deb.yml +++ b/.github/workflows/deb.yml @@ -12,12 +12,12 @@ jobs: - name: Build dependencies run: | sudo apt-get update -qq - sudo apt-get install -qq devscripts equivs + sudo apt-get install -qq devscripts equivs python3-build sudo apt-get -qq build-dep . - name: Make .orig.tar.gz run: | - python3 setup.py sdist - version=$(python3 setup.py --version) + python3 -m build --no-isolation --sdist + version=$(python3 -m setuptools_scm) mk-origtargz dist/pgtoolkit-$version.tar.gz - name: Build package run: dpkg-buildpackage diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml index 0e4e59e..4fd6a95 100644 --- a/.github/workflows/docs.yml +++ b/.github/workflows/docs.yml @@ -16,5 +16,5 @@ jobs: run: python -m pip install -r requirements-ci.txt -e . - name: Check documentation run: | - python setup.py --long-description | rst2html --strict >/dev/null + rst2html --strict README.rst > /dev/null make -C docs clean html diff --git a/docs/conf.py b/docs/conf.py index 477353b..a75912c 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -11,24 +11,14 @@ # add these directories to sys.path here. If the directory is relative to the # documentation root, use os.path.abspath to make it absolute, like shown here. # -import pathlib - import pkg_resources # import sys # sys.path.insert(0, os.path.abspath('.')) # -- Project information ----------------------------------------------------- - -setup_py = pathlib.Path(__file__).parent.parent / "setup.py" -setup_vars = {"__file__": str(setup_py)} -exec(setup_py.read_text(), setup_vars, setup_vars) -metadatas = setup_vars["metadatas"] -del setup_py -del setup_vars - -project = metadatas["name"] -author = metadatas["author"] +project = "pgtoolkit" +author = "Dalibo" copyright = "2018, Dalibo Labs" # The full version, including alpha/beta/rc tags diff --git a/pyproject.toml b/pyproject.toml index 7fce67e..fbcf778 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,43 @@ [build-system] -requires = ["setuptools>=30.3.0", "wheel", "setuptools_scm"] +requires = ["setuptools>=64", "wheel", "setuptools_scm>=8"] +build-backend = "setuptools.build_meta" + +[project] +name = "pgtoolkit" +description = "PostgreSQL Support from Python" +readme = "README.rst" +license = { text = "PostgreSQL" } +requires-python = ">=3.9" +authors = [ + { name = "Dalibo", email = "contact@dalibo.com" }, +] +maintainers = [ + { name = "Denis Laxalde", email = "denis.laxalde@dalibo.com" }, + { name = "Pierre Giraud", email = "pierre.giraud@dalibo.com" }, + { name = "Julian Vanden Broeck", email = "julian.vandenbroeck@dalibo.com" }, +] +keywords = ["postgresql", "postgresql.conf", "pg_hba", "pgpass", "pg_service.conf"] +classifiers = [ + "Development Status :: 3 - Alpha", + "Intended Audience :: Developers", + "License :: OSI Approved :: PostgreSQL License", + "Programming Language :: Python :: 3", + "Topic :: Database", +] +dynamic = ["version"] + +[project.urls] +Repository = "https://github.com/dalibo/pgtoolkit" +Documentation = "https://pgtoolkit.readthedocs.io/" [tool.isort] profile = "black" multi_line_output = 3 + +[tool.setuptools.packages.find] +where = ["."] + +[tool.setuptools.package-data] +pgtoolkit = ["py.typed"] + +[tool.setuptools_scm] diff --git a/setup.py b/setup.py deleted file mode 100644 index 7e5ad32..0000000 --- a/setup.py +++ /dev/null @@ -1,38 +0,0 @@ -import pathlib - -from setuptools import find_packages, setup - -here = pathlib.Path(__file__).parent - -with (here / "README.rst").open("r", encoding="utf-8") as fo: - long_description = fo.read() - -metadatas = dict( - name="pgtoolkit", - description="PostgreSQL Support from Python", - long_description=long_description, - long_description_content_type="text/x-rst", - author="Dalibo", - author_email="contact@dalibo.com", - url="https://github.com/dalibo/pgtoolkit", - license="PostgreSQL", - keywords="postgresql postgresql.conf pg_hba pgpass pg_service.conf", - classifiers=[ - "Development Status :: 3 - Alpha", - "Intended Audience :: Developers", - "License :: OSI Approved :: PostgreSQL License", - "Programming Language :: Python :: 3", - "Topic :: Database", - ], - use_scm_version=True, - setup_requires=["setuptools_scm"], -) - - -if __name__ == "__main__": - setup( - packages=find_packages("."), - package_data={"pgtoolkit": ["py.typed"]}, - python_requires=">=3.9", - **metadatas - )