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 +[![Pipeline](https://github.com/ewoks-kit/ewoksserver/actions/workflows/test.yml/badge.svg?branch=main)](https://github.com/ewoks-kit/ewoksserver/actions/workflows/test.yml) +[![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black) +[![License](https://img.shields.io/github/license/ewoks-kit/ewoksserver)](https://github.com/ewoks-kit/ewoksserver/blob/main/LICENSE.md) +[![Coverage](https://codecov.io/gh/ewoks-kit/ewoksserver/branch/main/graph/badge.svg)](https://codecov.io/gh/ewoks-kit/ewoksserver) +[![Docs](https://readthedocs.org/projects/ewoksserver/badge/?version=latest)](https://ewoksserver.readthedocs.io/en/latest/?badge=latest) +[![PyPI](https://img.shields.io/pypi/v/ewoksserver)](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)