From 84f0219e9b2a8ee9264a717cf8e6647c050a53fc Mon Sep 17 00:00:00 2001 From: Andre Anjos <andre.dos.anjos@gmail.com> Date: Wed, 20 Mar 2024 18:13:47 +0100 Subject: [PATCH] [pyproject] Use hatch and versioningit for modern project management --- MANIFEST.in | 7 -- conda/meta.yaml | 4 +- pyproject.toml | 111 ++++++++++-------- setup.py | 7 -- src/idiap_devtools/click.py | 2 - src/idiap_devtools/conda.py | 2 - src/idiap_devtools/gitlab/__init__.py | 2 - src/idiap_devtools/gitlab/changelog.py | 2 - src/idiap_devtools/gitlab/release.py | 2 - src/idiap_devtools/gitlab/runners.py | 2 - src/idiap_devtools/profile.py | 2 - src/idiap_devtools/python.py | 2 - src/idiap_devtools/scripts/cli.py | 2 - src/idiap_devtools/scripts/env.py | 4 +- src/idiap_devtools/scripts/fullenv.py | 2 - src/idiap_devtools/scripts/gitlab/__init__.py | 2 - src/idiap_devtools/scripts/gitlab/badges.py | 2 - .../scripts/gitlab/changelog.py | 2 - src/idiap_devtools/scripts/gitlab/getpath.py | 2 - src/idiap_devtools/scripts/gitlab/jobs.py | 2 - src/idiap_devtools/scripts/gitlab/lasttag.py | 2 - src/idiap_devtools/scripts/gitlab/release.py | 2 - src/idiap_devtools/scripts/gitlab/runners.py | 2 - src/idiap_devtools/scripts/gitlab/settings.py | 2 - src/idiap_devtools/scripts/update_pins.py | 2 - src/idiap_devtools/update_pins.py | 2 - src/idiap_devtools/utils.py | 2 - 27 files changed, 66 insertions(+), 111 deletions(-) delete mode 100644 MANIFEST.in delete mode 100644 setup.py diff --git a/MANIFEST.in b/MANIFEST.in deleted file mode 100644 index 175644b..0000000 --- a/MANIFEST.in +++ /dev/null @@ -1,7 +0,0 @@ -# Copyright © 2022 Idiap Research Institute <contact@idiap.ch> -# -# SPDX-License-Identifier: BSD-3-Clause - -include LICENSES/*.txt -recursive-include doc *.rst *.ico *.png *.json *.txt -recursive-include tests *.py diff --git a/conda/meta.yaml b/conda/meta.yaml index fe2828f..d62ef88 100644 --- a/conda/meta.yaml +++ b/conda/meta.yaml @@ -6,7 +6,7 @@ package: name: {{ data['project']['name'] }} - version: {{ data['project']['version'] }} + version: {{ environ.get('PACKAGE_VERSION', environ.get('GIT_DESCRIBE_TAG')) }} source: path: .. @@ -23,6 +23,8 @@ requirements: host: - python >=3.10 - pip + - hatchling + - versioningit run: - python >=3.10 - pip diff --git a/pyproject.toml b/pyproject.toml index 36ed5da..9da1ad7 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -3,41 +3,65 @@ # SPDX-License-Identifier: BSD-3-Clause [build-system] - requires = ["setuptools>=61.0.0", "wheel"] - build-backend = "setuptools.build_meta" +requires = ["hatchling", "versioningit"] +build-backend = "hatchling.build" [project] name = "idiap-devtools" -version = "1.0.1b0" +dynamic = ["version"] requires-python = ">=3.10" description = "This package contains a *pot-pourri* of various tools required to develop python packages at Idiap's GitLab infrastructure" readme = "README.md" -license = {text = "BSD 3-Clause License"} -authors = [ - {name = "Andre Anjos", email = "andre.anjos@idiap.ch"}, -] +license = { text = "BSD 3-Clause License" } +authors = [{ name = "Andre Anjos", email = "andre.anjos@idiap.ch" }] classifiers = [ - "Development Status :: 4 - Beta", - "Intended Audience :: Developers", - "License :: OSI Approved :: BSD License", - "Natural Language :: English", - "Programming Language :: Python :: 3", - "Topic :: Software Development :: Libraries :: Python Modules", + "Development Status :: 4 - Beta", + "Intended Audience :: Developers", + "License :: OSI Approved :: BSD License", + "Natural Language :: English", + "Programming Language :: Python :: 3", + "Topic :: Software Development :: Libraries :: Python Modules", ] dependencies = [ - "click>=8", - "cookiecutter", - "gitpython", - "packaging", - "python-dateutil", - "python-gitlab", - "pytz", - "pyyaml", - "setuptools", - "tomli", - "tomlkit", - "xdg", - ] + "click>=8", + "cookiecutter", + "gitpython", + "packaging", + "python-dateutil", + "python-gitlab", + "pytz", + "pyyaml", + "setuptools", + "tomli", + "tomlkit", + "xdg", +] + +[tool.hatch.version] +source = "versioningit" + +[tool.versioningit.next-version] +method = "smallest" + +[tool.versioningit.format] +# Example formatted version: 1.2.4.dev42+ge174a1f +distance = "{next_version}.dev{distance}+{vcs}{rev}" +# Example formatted version: 1.2.4.dev42+ge174a1f.d20230922 +distance-dirty = "{next_version}.dev{distance}+{vcs}{rev}.d{build_date:%Y%m%d}" + +[tool.hatch.build.targets.sdist] +include = [ + "src/**/*.py", + "tests/**/*.py", + "doc/**/*.rst", + "doc/**/*.py", + "doc/*.json", + "doc/*.txt", + "LICENSES/*.txt", +] + +[tool.hatch.build.targets.wheel] +packages = ["src/idiap_devtools"] [project.urls] documentation = "https://idiap-devtools.readthedocs.io/en/latest/" @@ -48,30 +72,19 @@ changelog = "https://gitlab.idiap.ch/software/idiap-devtools/-/releases" [project.optional-dependencies] qa = ["pre-commit"] doc = [ - "sphinx", - "furo", - "sphinx-autodoc-typehints", - "sphinx-copybutton", - "sphinx-inline-tabs", - "sphinx-click", - "auto-intersphinx", - ] -test = [ - "pytest", - "pytest-cov", - "coverage", - ] + "sphinx", + "furo", + "sphinx-autodoc-typehints", + "sphinx-copybutton", + "sphinx-inline-tabs", + "sphinx-click", + "auto-intersphinx", +] +test = ["pytest", "pytest-cov", "coverage"] [project.scripts] devtool = "idiap_devtools.scripts.cli:cli" -[tool.setuptools] -zip-safe = true -package-dir = {"" = "src"} - -[tool.distutils.bdist_wheel] -universal = true - [tool.isort] profile = "black" line_length = 80 @@ -83,9 +96,9 @@ line-length = 80 [tool.pytest.ini_options] addopts = [ - "--cov=idiap_devtools", - "--cov-report=term-missing", - "--import-mode=append", + "--cov=idiap_devtools", + "--cov-report=term-missing", + "--import-mode=append", ] junit_logging = "all" junit_log_passing_tests = false diff --git a/setup.py b/setup.py deleted file mode 100644 index 6aeeebe..0000000 --- a/setup.py +++ /dev/null @@ -1,7 +0,0 @@ -# Copyright © 2022 Idiap Research Institute <contact@idiap.ch> -# -# SPDX-License-Identifier: BSD-3-Clause - -from setuptools import setup - -setup() diff --git a/src/idiap_devtools/click.py b/src/idiap_devtools/click.py index 0d6d1a7..fcd9e97 100644 --- a/src/idiap_devtools/click.py +++ b/src/idiap_devtools/click.py @@ -2,8 +2,6 @@ # # SPDX-License-Identifier: BSD-3-Clause -from __future__ import annotations - import logging import typing diff --git a/src/idiap_devtools/conda.py b/src/idiap_devtools/conda.py index 02df01f..ddc8ce4 100644 --- a/src/idiap_devtools/conda.py +++ b/src/idiap_devtools/conda.py @@ -2,8 +2,6 @@ # # SPDX-License-Identifier: BSD-3-Clause -from __future__ import annotations - import contextlib import copy import logging diff --git a/src/idiap_devtools/gitlab/__init__.py b/src/idiap_devtools/gitlab/__init__.py index ff6dd88..4fd9f56 100644 --- a/src/idiap_devtools/gitlab/__init__.py +++ b/src/idiap_devtools/gitlab/__init__.py @@ -3,8 +3,6 @@ # SPDX-License-Identifier: BSD-3-Clause """Utilities to interact with GitLab.""" -from __future__ import annotations - import logging import os import pathlib diff --git a/src/idiap_devtools/gitlab/changelog.py b/src/idiap_devtools/gitlab/changelog.py index cbb17d9..df7e3aa 100644 --- a/src/idiap_devtools/gitlab/changelog.py +++ b/src/idiap_devtools/gitlab/changelog.py @@ -3,8 +3,6 @@ # SPDX-License-Identifier: BSD-3-Clause """Utilities for retrieving, parsing and auto-generating changelogs.""" -from __future__ import annotations - import datetime import io import logging diff --git a/src/idiap_devtools/gitlab/release.py b/src/idiap_devtools/gitlab/release.py index fe02ede..6662c79 100644 --- a/src/idiap_devtools/gitlab/release.py +++ b/src/idiap_devtools/gitlab/release.py @@ -3,8 +3,6 @@ # SPDX-License-Identifier: BSD-3-Clause """Utilities to needed to release packages.""" -from __future__ import annotations - import difflib import logging import re diff --git a/src/idiap_devtools/gitlab/runners.py b/src/idiap_devtools/gitlab/runners.py index 8392edf..983faf5 100644 --- a/src/idiap_devtools/gitlab/runners.py +++ b/src/idiap_devtools/gitlab/runners.py @@ -2,8 +2,6 @@ # # SPDX-License-Identifier: BSD-3-Clause -from __future__ import annotations - import logging import pathlib import typing diff --git a/src/idiap_devtools/profile.py b/src/idiap_devtools/profile.py index 8edfffc..2e49c2f 100644 --- a/src/idiap_devtools/profile.py +++ b/src/idiap_devtools/profile.py @@ -2,8 +2,6 @@ # # SPDX-License-Identifier: BSD-3-Clause -from __future__ import annotations - import io import os import pathlib diff --git a/src/idiap_devtools/python.py b/src/idiap_devtools/python.py index 83f48a8..64b9e66 100644 --- a/src/idiap_devtools/python.py +++ b/src/idiap_devtools/python.py @@ -2,8 +2,6 @@ # # SPDX-License-Identifier: BSD-3-Clause -from __future__ import annotations - import pkg_resources import tomli diff --git a/src/idiap_devtools/scripts/cli.py b/src/idiap_devtools/scripts/cli.py index 62cc419..5c9a87c 100644 --- a/src/idiap_devtools/scripts/cli.py +++ b/src/idiap_devtools/scripts/cli.py @@ -2,8 +2,6 @@ # # SPDX-License-Identifier: BSD-3-Clause -from __future__ import annotations - import click from ..click import AliasedGroup diff --git a/src/idiap_devtools/scripts/env.py b/src/idiap_devtools/scripts/env.py index d0d55dc..784633a 100644 --- a/src/idiap_devtools/scripts/env.py +++ b/src/idiap_devtools/scripts/env.py @@ -2,8 +2,6 @@ # # SPDX-License-Identifier: BSD-3-Clause -from __future__ import annotations - import sys import typing @@ -258,7 +256,7 @@ def _add_missing_conda_pins( epilog=""" Examples: - 1. Creates an environment installation plan for developing the currently + 1. Creates a conda environment installation plan for developing the currently checked-out package, and the development profile in ``../profile``: .. code:: sh diff --git a/src/idiap_devtools/scripts/fullenv.py b/src/idiap_devtools/scripts/fullenv.py index b6eb41f..bfa83c5 100644 --- a/src/idiap_devtools/scripts/fullenv.py +++ b/src/idiap_devtools/scripts/fullenv.py @@ -2,8 +2,6 @@ # # SPDX-License-Identifier: BSD-3-Clause -from __future__ import annotations - import sys import click diff --git a/src/idiap_devtools/scripts/gitlab/__init__.py b/src/idiap_devtools/scripts/gitlab/__init__.py index 72fad1f..ad63e2b 100644 --- a/src/idiap_devtools/scripts/gitlab/__init__.py +++ b/src/idiap_devtools/scripts/gitlab/__init__.py @@ -2,8 +2,6 @@ # # SPDX-License-Identifier: BSD-3-Clause -from __future__ import annotations - import click from ...click import AliasedGroup diff --git a/src/idiap_devtools/scripts/gitlab/badges.py b/src/idiap_devtools/scripts/gitlab/badges.py index 1eb2699..22968f5 100644 --- a/src/idiap_devtools/scripts/gitlab/badges.py +++ b/src/idiap_devtools/scripts/gitlab/badges.py @@ -2,8 +2,6 @@ # # SPDX-License-Identifier: BSD-3-Clause -from __future__ import annotations - import click from ...click import PreserveIndentCommand, verbosity_option diff --git a/src/idiap_devtools/scripts/gitlab/changelog.py b/src/idiap_devtools/scripts/gitlab/changelog.py index 8e6d606..d286bdc 100644 --- a/src/idiap_devtools/scripts/gitlab/changelog.py +++ b/src/idiap_devtools/scripts/gitlab/changelog.py @@ -2,8 +2,6 @@ # # SPDX-License-Identifier: BSD-3-Clause -from __future__ import annotations - import sys import click diff --git a/src/idiap_devtools/scripts/gitlab/getpath.py b/src/idiap_devtools/scripts/gitlab/getpath.py index 67de11f..4e0d763 100644 --- a/src/idiap_devtools/scripts/gitlab/getpath.py +++ b/src/idiap_devtools/scripts/gitlab/getpath.py @@ -2,8 +2,6 @@ # # SPDX-License-Identifier: BSD-3-Clause -from __future__ import annotations - import click from ...click import PreserveIndentCommand, verbosity_option diff --git a/src/idiap_devtools/scripts/gitlab/jobs.py b/src/idiap_devtools/scripts/gitlab/jobs.py index d37bebf..a69e3d9 100644 --- a/src/idiap_devtools/scripts/gitlab/jobs.py +++ b/src/idiap_devtools/scripts/gitlab/jobs.py @@ -2,8 +2,6 @@ # # SPDX-License-Identifier: BSD-3-Clause -from __future__ import annotations - import click from ...click import PreserveIndentCommand, verbosity_option diff --git a/src/idiap_devtools/scripts/gitlab/lasttag.py b/src/idiap_devtools/scripts/gitlab/lasttag.py index f1c986d..936b894 100644 --- a/src/idiap_devtools/scripts/gitlab/lasttag.py +++ b/src/idiap_devtools/scripts/gitlab/lasttag.py @@ -2,8 +2,6 @@ # # SPDX-License-Identifier: BSD-3-Clause -from __future__ import annotations - import click from ...click import PreserveIndentCommand, verbosity_option diff --git a/src/idiap_devtools/scripts/gitlab/release.py b/src/idiap_devtools/scripts/gitlab/release.py index 51278b2..cb198d6 100644 --- a/src/idiap_devtools/scripts/gitlab/release.py +++ b/src/idiap_devtools/scripts/gitlab/release.py @@ -2,8 +2,6 @@ # # SPDX-License-Identifier: BSD-3-Clause -from __future__ import annotations - import typing import click diff --git a/src/idiap_devtools/scripts/gitlab/runners.py b/src/idiap_devtools/scripts/gitlab/runners.py index 362d477..217229d 100644 --- a/src/idiap_devtools/scripts/gitlab/runners.py +++ b/src/idiap_devtools/scripts/gitlab/runners.py @@ -2,8 +2,6 @@ # # SPDX-License-Identifier: BSD-3-Clause -from __future__ import annotations - import os import click diff --git a/src/idiap_devtools/scripts/gitlab/settings.py b/src/idiap_devtools/scripts/gitlab/settings.py index e9de2d1..ed6f866 100644 --- a/src/idiap_devtools/scripts/gitlab/settings.py +++ b/src/idiap_devtools/scripts/gitlab/settings.py @@ -2,8 +2,6 @@ # # SPDX-License-Identifier: BSD-3-Clause -from __future__ import annotations - import typing import click diff --git a/src/idiap_devtools/scripts/update_pins.py b/src/idiap_devtools/scripts/update_pins.py index c1c2609..362c7e3 100644 --- a/src/idiap_devtools/scripts/update_pins.py +++ b/src/idiap_devtools/scripts/update_pins.py @@ -2,8 +2,6 @@ # # SPDX-License-Identifier: BSD-3-Clause -from __future__ import annotations - import sys import click diff --git a/src/idiap_devtools/update_pins.py b/src/idiap_devtools/update_pins.py index 9a15837..6202063 100644 --- a/src/idiap_devtools/update_pins.py +++ b/src/idiap_devtools/update_pins.py @@ -2,8 +2,6 @@ # # SPDX-License-Identifier: BSD-3-Clause -from __future__ import annotations - import contextlib import copy import logging diff --git a/src/idiap_devtools/utils.py b/src/idiap_devtools/utils.py index 2097f82..4fe17b0 100644 --- a/src/idiap_devtools/utils.py +++ b/src/idiap_devtools/utils.py @@ -2,8 +2,6 @@ # # SPDX-License-Identifier: BSD-3-Clause -from __future__ import annotations - import logging import os import subprocess -- GitLab