diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
new file mode 100644
index 0000000..74154e9
--- /dev/null
+++ b/.github/workflows/release.yml
@@ -0,0 +1,52 @@
+name: Release
+
+on:
+ workflow_dispatch:
+
+jobs:
+ # Build Python package
+ build:
+ uses: ewoks-kit/.github/.github/workflows/python-build.yml@main
+
+ # Run tests
+ tests:
+ needs: build
+ uses: ewoks-kit/.github/.github/workflows/python-tests.yml@main
+
+ # Publish package to TestPyPI
+ publish-testpypi:
+ needs: tests
+ runs-on: ubuntu-latest
+ environment:
+ name: release
+ permissions:
+ id-token: write
+ steps:
+ - uses: ewoks-kit/.github/.github/actions/setup-python-package@main
+ - uses: pypa/gh-action-pypi-publish@release/v1
+ with:
+ repository-url: https://test.pypi.org/legacy/
+
+ # Publish package to PyPI
+ publish-pypi:
+ needs: tests
+ runs-on: ubuntu-latest
+ environment:
+ name: release
+ permissions:
+ id-token: write
+ steps:
+ - uses: ewoks-kit/.github/.github/actions/setup-python-package@main
+ - uses: pypa/gh-action-pypi-publish@release/v1
+
+ # Tag
+ tag-release:
+ needs: publish-pypi
+ runs-on: ubuntu-latest
+ permissions:
+ contents: write
+ steps:
+ - uses: ewoks-kit/.github/.github/actions/setup-python-package@main
+ - uses: ewoks-kit/.github/.github/actions/tag-release@main
+ with:
+ github-token: ${{ secrets.GITHUB_TOKEN }}
diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml
new file mode 100644
index 0000000..b131cb1
--- /dev/null
+++ b/.github/workflows/test.yml
@@ -0,0 +1,92 @@
+name: Test
+
+on:
+ push:
+ branches:
+ - main
+ pull_request:
+ workflow_dispatch:
+ workflow_call:
+
+jobs:
+ # Build Python package
+ build:
+ uses: ewoks-kit/.github/.github/workflows/python-build.yml@main
+
+ # Run tests
+ tests:
+ needs: build
+ uses: ewoks-kit/.github/.github/workflows/python-tests.yml@main
+ secrets:
+ codecov_token: ${{ secrets.CODECOV_TOKEN }}
+ with:
+ os: ${{ matrix.os }}
+ python-version: ${{ matrix.python-version }}
+ pytest-args: >-
+ -v -ra -W error
+ ${{ matrix.extra-pytest-warnings }}
+ enable-coverage: ${{ matrix.enable-coverage }}
+ jupyter-platform-dirs: "1"
+ codecov-flags: "unit"
+ strategy:
+ 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"
+ enable-coverage: "false"
+ extra-pytest-warnings: ""
+
+ - os: windows-latest
+ python-version: "3.10"
+ enable-coverage: "false"
+ extra-pytest-warnings: ""
+
+ # Run linter / checks
+ checks:
+ uses: ewoks-kit/.github/.github/workflows/python-check.yml@main
+
+ # Build documentation
+ docs:
+ needs: build
+ uses: ewoks-kit/.github/.github/workflows/python-docs.yml@custom_docs
+ with:
+ pre-build-commands: |
+ echo "Save REST API specs"
+ ewoks-server-spec doc/spec.json
diff --git a/.gitignore b/.gitignore
index 6f26d21..163f553 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,6 +1,7 @@
# Hidden files
.*
!.gitignore
+!.github
!.readthedocs.yaml
!.flake8
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 5d4f734..9c14e5a 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -7,6 +7,12 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
## [Unreleased]
+## [2.1.2] - 2026-03-06
+
+### Changed
+
+- Project migrated to https://github.com/ewoks-kit/ewoksserver.
+
## [2.1.1] - 2025-08-02
## Fixed
@@ -191,7 +197,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- Serve ewoksweb frontend.
- Swagger API documentation.
-[unreleased]: https://github.com/ewoks-kit/ewoksserver/compare/v2.1.1...HEAD
+[unreleased]: https://github.com/ewoks-kit/ewoksserver/compare/v2.1.2...HEAD
+[2.1.2]: https://github.com/ewoks-kit/ewoksserver/compare/v2.1.1...v2.1.2
[2.1.1]: https://github.com/ewoks-kit/ewoksserver/compare/v2.1.0...v2.1.1
[2.1.0]: https://github.com/ewoks-kit/ewoksserver/compare/v2.0.1...v2.1.0
[2.0.1]: https://github.com/ewoks-kit/ewoksserver/compare/v2.0.0...v2.0.1
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index e2dfbff..b7e10c5 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -2,7 +2,7 @@
## General guidelines
-CONTRIBUTING.md
+CONTRIBUTING.md
## Starting the server
diff --git a/README.md b/README.md
index 80fc5cb..6564751 100644
--- a/README.md
+++ b/README.md
@@ -1,5 +1,12 @@
# ewoksserver
+[](https://github.com/ewoks-kit/ewoksserver/actions/workflows/test.yml)
+[](https://github.com/psf/black)
+[](https://github.com/ewoks-kit/ewoksserver/blob/main/LICENSE.md)
+[](https://codecov.io/gh/ewoks-kit/ewoksserver)
+[](https://ewoksserver.readthedocs.io/en/latest/?badge=latest)
+[](https://pypi.org/project/ewoksserver/)
+
ewoksserver is a REST server to manage and execute [ewoks](https://ewoks.readthedocs.io/) workflows.
It serves as a backend for [ewoksweb](https://ewoksweb.readthedocs.io/) and emits ewoks execution events over Socket.IO.
diff --git a/pyproject.toml b/pyproject.toml
index c9270f4..509319b 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
[project]
name = "ewoksserver"
-version = "2.1.1"
+version = "2.1.2"
authors = [{ name = "ESRF", email = "dau-pydev@esrf.fr" }]
description = "Backend for ewoksweb"
readme = { file = "README.md", content-type = "text/markdown" }
@@ -57,6 +57,7 @@ doc = [
"sphinx_design",
"pydata_sphinx_theme",
"sphinx-copybutton",
+ "setuptools<82", # Issue https://github.com/sphinx-contrib/redoc/issues/53
]
[tool.setuptools]
diff --git a/src/ewoksserver/tests/socketio_test.py b/src/ewoksserver/tests/socketio_test.py
index 8753222..1d4a619 100644
--- a/src/ewoksserver/tests/socketio_test.py
+++ b/src/ewoksserver/tests/socketio_test.py
@@ -44,5 +44,5 @@ def _run_coroutine(coroutine) -> Any:
loop = asyncio.get_event_loop()
except (DeprecationWarning, RuntimeError):
loop = asyncio.new_event_loop()
- asyncio.get_event_loop_policy().set_event_loop(loop)
+ asyncio.set_event_loop(loop)
return loop.run_until_complete(coroutine)