Skip to content

Commit

Permalink
Migrate to pyproject.toml, remove setup.cfg, pyscaffold (#71)
Browse files Browse the repository at this point in the history
  • Loading branch information
andmat900 authored Oct 3, 2024
1 parent b127e86 commit 4969c9b
Show file tree
Hide file tree
Showing 12 changed files with 199 additions and 259 deletions.
2 changes: 1 addition & 1 deletion .github/workflows/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ jobs:
- name: Install Tox
run: pip install tox
- name: Upgrade setuptools
run: pip install -U setuptools
run: pip install -U setuptools setuptools_scm[toml]
- name: Run Tox on suite runner
run: tox
working-directory: ./projects/etos_suite_runner
Expand Down
2 changes: 1 addition & 1 deletion Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ FROM python:3.9-bookworm AS build

COPY . /src
WORKDIR /src/projects/etos_suite_runner
RUN python3 setup.py bdist_wheel
RUN pip install --no-cache-dir build==1.2.2 && python3 -m build

FROM python:3.9-slim-bookworm

Expand Down
2 changes: 1 addition & 1 deletion Dockerfile.log_listener
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ FROM python:3.9-bookworm AS build

COPY . /src
WORKDIR /src/projects/log_listener
RUN python3 setup.py bdist_wheel
RUN pip install --no-cache-dir build==1.2.2 && python3 -m build

FROM python:3.9-slim-bookworm

Expand Down
65 changes: 65 additions & 0 deletions projects/etos_suite_runner/pyproject.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
[build-system]
requires = ["setuptools>72", "wheel", "setuptools_scm[toml]>=8"]

[project]
name = "etos_suite_runner"
dynamic = ["version"]
description = "ETOS Suite Runner"
authors = [{name = "Tobias Persson", email = "[email protected]"}]
license = { text = "Apache License, Version 2.0" }
readme = "README.rst"
classifiers = [
"Development Status :: 4 - Beta",
"Programming Language :: Python :: 3",
"License :: OSI Approved :: Apache Software License"
]
dependencies = [
"packageurl-python~=0.11",
"cryptography>=42.0.4,<43.0.0",
"etos_lib==4.3.6",
"etos_environment_provider==5.1.1",
"opentelemetry-api~=1.21",
"opentelemetry-exporter-otlp~=1.21",
"opentelemetry-sdk~=1.21",
]

[options]
zip_safe = false
include_package_data = true
python_requires = ">=3.4"

[options.packages.find]
where = "src"
exclude = ["tests"]

[project.urls]
Documentation = "https://etos.readthedocs.io/"
Homepage = "https://github.com/eiffel-community/etos-suite-runner"
Repository = "https://github.com/eiffel-community/etos-suite-runner"

[project.scripts]

[project.optional-dependencies]
testing = ["pytest", "pytest-cov"]

[test]
extras = true

[tool.build_sphinx]
source_dir = "docs"
build_dir = "build/sphinx"

[tool.devpi.upload]
no-vcs = 1
formats = "bdist_wheel"

[tool.flake8]
exclude = [".tox", "build", "dist", ".eggs", "docs/conf.py"]

[tool.pytest.ini_options]
addopts = "--cov etos_suite_runner --cov-report term-missing --verbose"
norecursedirs = ["dist", "build", ".tox"]
testpaths = ["tests"]

[tool.setuptools_scm]
root = "../.."
25 changes: 0 additions & 25 deletions projects/etos_suite_runner/requirements.txt

This file was deleted.

91 changes: 0 additions & 91 deletions projects/etos_suite_runner/setup.cfg

This file was deleted.

50 changes: 34 additions & 16 deletions projects/etos_suite_runner/setup.py
Original file line number Diff line number Diff line change
@@ -1,24 +1,42 @@
#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""Setup file for etos_suite_runner.
"""Setup file for etos-suite-runner."""
from setuptools import setup
from setuptools_scm.version import get_local_dirty_tag

Use setup.cfg to configure your project.

This file was generated with PyScaffold 3.2.3.
PyScaffold helps you to put up the scaffold of your new Python project.
Learn more under: https://pyscaffold.org/
"""
import sys
def version_scheme(version) -> str:
"""Get version component for the current commit.
from pkg_resources import VersionConflict, require
from setuptools import setup
Used by setuptools_scm.
"""
if version.tag and version.distance == 0:
# If the current commit has a tag, use the tag as version, regardless of branch.
# Note: Github CI creates releases from detached HEAD, not from a particular branch.
return f"{version.tag}"
elif version.branch == "main" and version.tag and version.distance > 0:
# For untagged commits on the release branch always add a distance like ".post3"
return f"{version.tag}.post{version.distance}"
else:
# For non-release branches, mark the version as dev and distance:
return f"{version.tag}.dev{version.distance}"


def local_scheme(version) -> str:
"""Get local version component for the current Git commit.
Used by setuptools_scm.
"""
# If current version is dirty, always add dirty suffix, regardless of branch.
dirty_tag = get_local_dirty_tag(version) if version.dirty else ""
if dirty_tag:
return f"{dirty_tag}.{version.node}"

try:
require("setuptools>=38.3")
except VersionConflict:
print("Error: version of setuptools is too old (<38.3)!")
sys.exit(1)
if version.distance == 0:
# If the current commit has a tag, do not add a local component, regardless of branch.
return ""
# For all other cases, always add the git reference (like "g7839952")
return f"+{version.node}"


if __name__ == "__main__":
setup(use_pyscaffold=True)
setup(use_scm_version={"local_scheme": local_scheme, "version_scheme": version_scheme})
2 changes: 2 additions & 0 deletions projects/etos_suite_runner/test-requirements.txt
Original file line number Diff line number Diff line change
Expand Up @@ -2,3 +2,5 @@ mock
pytest
pytest-cov
mongomock
setuptools>=72
setuptools_scm~=8.0
61 changes: 61 additions & 0 deletions projects/log_listener/pyproject.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
[build-system]
requires = ["setuptools>=72", "wheel", "setuptools_scm[toml]>=8"]

[project]
name = "etos_log_listener"
dynamic = ["version"]
description = "Tool for listening to logs within ETOS."
authors = [{name = "Tobias Persson", email = "[email protected]"}]
license = { text = "Apache License, Version 2.0" }
readme = "README.rst"
classifiers = [
"Development Status :: 4 - Beta",
"Programming Language :: Python :: 3",
"License :: OSI Approved :: Apache Software License"
]
dependencies = [
"eiffellib[rabbitmq]==2.4.1",
"fastapi==0.109.1",
"uvicorn==0.22.0",
]

[options]
zip_safe = false
include_package_data = true
python_requires = ">=3.4"

[options.packages.find]
where = "src"
exclude = ["tests"]

[project.urls]
Documentation = "https://etos.readthedocs.io/"
Homepage = "https://github.com/eiffel-community/etos-suite-runner"
Repository = "https://github.com/eiffel-community/etos-suite-runner"

[project.scripts]

[project.optional-dependencies]
testing = ["pytest", "pytest-cov"]

[test]
extras = true

[tool.build_sphinx]
source_dir = "docs"
build_dir = "build/sphinx"

[tool.devpi.upload]
no-vcs = 1
formats = "bdist_wheel"

[tool.flake8]
exclude = [".tox", "build", "dist", ".eggs", "docs/conf.py"]

[tool.pytest.ini_options]
addopts = "--cov etos_suite_runner --cov-report term-missing --verbose"
norecursedirs = ["dist", "build", ".tox"]
testpaths = ["tests"]

[tool.setuptools_scm]
root = "../.."
21 changes: 0 additions & 21 deletions projects/log_listener/requirements.txt

This file was deleted.

Loading

0 comments on commit 4969c9b

Please sign in to comment.