From d5fa8a4bebeb288bcf46b207bda4de93bdf1f18f Mon Sep 17 00:00:00 2001 From: Loic Huder Date: Thu, 12 Mar 2026 09:32:27 +0100 Subject: [PATCH] Use Python 3.10+ and ruff --- .github/workflows/test.yml | 35 ++++++--------------------- .gitignore | 1 + CHANGELOG.md | 4 +++ CONTRIBUTING.md | 2 +- pyproject.toml | 24 +++++++++++------- src/ewoksserver/tests/api_versions.py | 12 ++++----- 6 files changed, 34 insertions(+), 44 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 544da8d..5f1fe0b 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -32,55 +32,34 @@ jobs: fail-fast: false matrix: include: - - os: ubuntu-latest - python-version: "3.8" - enable-coverage: "false" - extra-pytest-warnings: "" - - - os: ubuntu-latest - python-version: "3.9" - enable-coverage: "false" - # https://github.com/networkx/networkx/issues/7372 - extra-pytest-warnings: "-W ignore::RuntimeWarning:networkx.utils.backends" - - os: ubuntu-latest python-version: "3.10" - enable-coverage: "false" - extra-pytest-warnings: "" - - - os: ubuntu-latest - python-version: "3.11" - enable-coverage: "false" - extra-pytest-warnings: "" - - - os: ubuntu-latest - python-version: "3.12" enable-coverage: "true" extra-pytest-warnings: "" - - os: ubuntu-latest - python-version: "3.13" - enable-coverage: "false" - extra-pytest-warnings: "" - - os: ubuntu-latest python-version: "3.14" enable-coverage: "false" extra-pytest-warnings: "" - os: windows-latest - python-version: "3.9" + python-version: "3.10" enable-coverage: "false" extra-pytest-warnings: "" - os: windows-latest - python-version: "3.10" + python-version: "3.14" enable-coverage: "false" extra-pytest-warnings: "" # Run linter / checks checks: uses: ewoks-kit/.github/.github/workflows/python-check.yml@main + with: + enable-black: "false" + enable-flake8: "false" + enable-isort: "false" + enable-ruff: "true" # Build documentation docs: diff --git a/.gitignore b/.gitignore index 163f553..54df2e6 100644 --- a/.gitignore +++ b/.gitignore @@ -18,6 +18,7 @@ __pycache__/ *.egg-info/ .eggs/ html +uv.lock # workflows, tasks and icons folders /workflows diff --git a/CHANGELOG.md b/CHANGELOG.md index 9c14e5a..7df4f05 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +### Changed + +- Minimal Python version is now 3.10 + ## [2.1.2] - 2026-03-06 ### Changed diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index b7e10c5..2f826a9 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -2,7 +2,7 @@ ## General guidelines -CONTRIBUTING.md +CONTRIBUTING.md ## Starting the server diff --git a/pyproject.toml b/pyproject.toml index 509319b..d361984 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -14,7 +14,7 @@ classifiers = [ "License :: OSI Approved :: MIT License", "Programming Language :: Python :: 3", ] -requires-python = ">=3.8" +requires-python = ">=3.10" dependencies = [ "fastapi", "uvicorn[standard]", @@ -34,19 +34,18 @@ Changelog = "https://github.com/ewoks-kit/ewoksserver/blob/main/CHANGELOG.md" [project.optional-dependencies] frontend = [ - "ewoksjob[sql]" + "ewoksjob[sql]", ] test = [ "pytest >=7", "pytest-celery", "ewoksserver[frontend]", "pytest-mock", - "httpx <1.0.dev1", # https://github.com/encode/starlette/issues/2960 + "httpx <1.0.dev1", # https://github.com/encode/starlette/issues/2960 ] dev = [ "ewoksserver[test]", - "black >=25", - "flake8 >=4", + "ruff", "isort", ] doc = [ @@ -57,7 +56,7 @@ doc = [ "sphinx_design", "pydata_sphinx_theme", "sphinx-copybutton", - "setuptools<82", # Issue https://github.com/sphinx-contrib/redoc/issues/53 + "setuptools<82", # Issue https://github.com/sphinx-contrib/redoc/issues/53 ] [tool.setuptools] @@ -76,6 +75,13 @@ omit = ['*/tests/*'] ewoks-server = "ewoksserver.__main__:main" ewoks-server-spec = "ewoksserver.spec:save" -[tool.isort] -profile = "black" -force_single_line = "True" +[tool.ruff.lint] +select = ["E", "F", "I"] +ignore = ["E501"] + +[tool.ruff.lint.per-file-ignores] +# Ignore `S101` (assert used violations) in all test files +"src/ewoksserver/tests/*.py" = ["S101"] + +[tool.ruff.lint.isort] +force-single-line = true diff --git a/src/ewoksserver/tests/api_versions.py b/src/ewoksserver/tests/api_versions.py index 50fffb7..ed01a36 100644 --- a/src/ewoksserver/tests/api_versions.py +++ b/src/ewoksserver/tests/api_versions.py @@ -52,14 +52,14 @@ def api_root( if min_api_version: min_api_version_tuple = tuple(map(int, min_api_version.split("."))) - assert ( - len(min_api_version_tuple) == 3 - ), "min_api_version must be of the form 'x.y.z'" + assert len(min_api_version_tuple) == 3, ( + "min_api_version must be of the form 'x.y.z'" + ) if max_api_version: max_api_version_tuple = tuple(map(int, max_api_version.split("."))) - assert ( - len(max_api_version_tuple) == 3 - ), "max_api_version must be of the form 'x.y.z'" + assert len(max_api_version_tuple) == 3, ( + "max_api_version must be of the form 'x.y.z'" + ) if min_api_version and version_tuple < min_api_version_tuple: pytest.skip(f"requires API >= {min_api_version}")