Skip to content
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
45 changes: 45 additions & 0 deletions .github/workflows/ci_workflow.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
---
name: CI Workflow

on:
push:
branches: ["main"]
pull_request:
branches: ["main"]

jobs:
ci_workflow:
runs-on: ubuntu-latest
container: python:3.12-slim
steps:
- name: Checkout
uses: actions/checkout@v4

- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install --default-timeout=60 --retries=5 -r requirements-ci.txt

- name: Install project package in editable mode
run: |
pip install -e .

- name: Lint with ruff
run: ruff check --output-format=github --line-length 79

- name: Run mypy
run: |
mypy \
--install-types \
--non-interactive \
--ignore-missing-imports \
--disallow-untyped-defs \
.

- name: YAML Lint
run: yamllint --strict .

- name: Run tests with coverage
run: |
coverage run -m pytest --maxfail=2 --disable-warnings
coverage report
6 changes: 6 additions & 0 deletions .yamllint.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
---
extends: default

ignore: |
.*/*
venv/*
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ A **direct data-driven controller** maps measured input-output data from an unkn

## Requirements
This package requires the following:
- **Python** (>=3.8, <3.13). Python 3.13 is not fully supported, as some dependencies have not been compiled for this version yet. We recommend using Python 3.8 to 3.12.
- **Python** (>=3.10, <3.13). Python 3.13 is not fully supported, as some dependencies have not been compiled for this version yet. We recommend using Python 3.10 to 3.12.
- **FFmpeg**: Required for saving animations (e.g., GIF or MP4).
- **On Windows**: You can download FFmpeg from [the official FFmpeg website](https://ffmpeg.org/download.html). Ensure it's correctly added to your system's `PATH`.
- **On Unix**: You can install it using your package manager. For Debian/Ubuntu:
Expand Down
10 changes: 10 additions & 0 deletions requirements-ci.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
numpy==2.2.5
matplotlib==3.10.1
cvxpy==1.6.5
tqdm==4.67.1
PyYAML==6.0.2
ruff==0.11.7
mypy==1.15.0
yamllint==1.37.0
pytest==8.3.5
coverage==7.8.0
2 changes: 2 additions & 0 deletions tests/test_placeholder.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
def test_placeholder() -> None:
assert True