Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Migrate to pyproject.toml, remove setup.cfg, pyscaffold #71

Merged
merged 9 commits into from
Oct 3, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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
Loading