Skip to content

Commit

Permalink
Migrate to pyproject.toml, remove setup.cfg, pyscaffold (#53)
Browse files Browse the repository at this point in the history
  • Loading branch information
andmat900 authored Oct 10, 2024
1 parent 157c54f commit 6fdd561
Show file tree
Hide file tree
Showing 6 changed files with 100 additions and 126 deletions.
62 changes: 62 additions & 0 deletions pyproject.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
[build-system]
requires = ["setuptools>=72", "wheel", "setuptools_scm[toml]>=8"]

[project]
name = "etos_test_runner"
dynamic = ["version"]
description = "ETOS Test Runner"
authors = [{name = "Tobias Persson", email = "tobias.persson@axis.com"}]
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 = [
"etos_lib==4.3.6",
"cryptography>=42.0.4,<43.0.0",
"packageurl-python==0.9.1",
"jsontas==1.3.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-test-runner"
Repository = "https://github.com/eiffel-community/etos-test-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_test_runner --cov-report term-missing --verbose"
norecursedirs = ["dist", "build", ".tox"]
testpaths = ["tests"]

[tool.setuptools.package-data]
"*" = ["*.sh"]
21 changes: 0 additions & 21 deletions requirements.txt

This file was deleted.

86 changes: 0 additions & 86 deletions setup.cfg

This file was deleted.

49 changes: 34 additions & 15 deletions setup.py
Original file line number Diff line number Diff line change
@@ -1,23 +1,42 @@
# -*- coding: utf-8 -*-
"""Setup file for etos_test_runner.
"""Setup file for etos-test-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})
4 changes: 2 additions & 2 deletions src/etos_test_runner/lib/executor.py
Original file line number Diff line number Diff line change
Expand Up @@ -249,7 +249,7 @@ def _finished(self, test_name, result):

def _call(
self, cmd, shell=False, env=None, executable=None, output=None, wait_output=True
): # pylint:disable=too-many-arguments
): # pylint:disable=too-many-positional-arguments,too-many-arguments
"""Call a system command.
:param cmd: Command to run.
Expand Down Expand Up @@ -280,7 +280,7 @@ def _call(

def _iterable_call(
self, cmd, shell=False, env=None, executable=None, output=None, wait_output=True
): # pylint:disable=too-many-arguments
): # pylint:disable=too-many-positional-arguments,too-many-arguments
"""Call a system command and yield the output.
:param cmd: Command to run.
Expand Down
4 changes: 2 additions & 2 deletions src/etos_test_runner/lib/log_area.py
Original file line number Diff line number Diff line change
Expand Up @@ -244,7 +244,7 @@ def upload_artifacts(self, artifacts):

def __upload(
self, context, log, name, main_suite_id, sub_suite_id
): # pylint:disable=too-many-arguments
): # pylint:disable=too-many-positional-arguments,too-many-arguments
"""Upload log to a storage location.
:param context: Context for the http request.
Expand Down Expand Up @@ -303,7 +303,7 @@ def __upload(

def __retry_upload(
self, verb, url, file_contents, timeout=None, as_json=True, **requests_kwargs
): # pylint:disable=too-many-arguments
): # pylint:disable=too-many-positional-arguments,too-many-arguments
"""Attempt to connect to url for x time.
:param verb: Which HTTP verb to use. GET, PUT, POST
Expand Down

0 comments on commit 6fdd561

Please sign in to comment.