Skip to content
Open
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
4 changes: 2 additions & 2 deletions .github/workflows/ruff.yml
Original file line number Diff line number Diff line change
Expand Up @@ -13,8 +13,8 @@ jobs:
timeout-minutes: 1
steps:
- uses: actions/checkout@v4
- name: Install Python
uses: actions/setup-python@v5

- uses: actions/setup-python@v5
with:
python-version: "3.12"
- name: Install dependencies
Expand Down
3 changes: 2 additions & 1 deletion .github/workflows/unit_tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ jobs:
- name: Install dependencies
run: |
pip install uv
uv pip install --system -e ".[dev]"
echo "scikit-build-core<0.10" > /tmp/build-constraints.txt
UV_BUILD_CONSTRAINT=/tmp/build-constraints.txt uv pip install --system -e ".[dev]"
- name: Test with pytest
run: pytest -n auto
24 changes: 24 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -136,6 +136,30 @@ Full setup, remote layout, API reference, and linear rail docs: [`docs/products/

## Advanced: Motor Configuration

## CI

Every push and pull request to `main` runs two workflows:

| Workflow | What it does | ~Time |
|----------|-------------|-------|
| **ruff_CI** | Lints the codebase with `ruff check` | ~1 min |
| **unit_tests_CI** | Installs the package and runs `pytest -n auto` | ~5 min |

Both also run weekly on a Sunday schedule.

### Run locally before pushing

```bash
pip install ruff==0.15.4
ruff check .
pip install -e ".[dev]" && pytest -n auto
```
### Adding a new check

1. Edit the relevant file under `.github/workflows/` (`ruff.yml` or `unit_tests.yml`), or create a new workflow file
2. Push to a feature branch — the workflows run automatically on your PR
3. If CI fails, check the Actions tab on your PR for logs, fix, and push again

### Safety timeout

The factory default is a **400 ms timeout** — motors enter damping mode if no command is received within 400 ms.
Expand Down
3 changes: 3 additions & 0 deletions pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,9 @@ dev = [
[tool.flit.module]
name = "i2rt"

[tool.uv]
build-constraint-dependencies = ["scikit-build-core<0.10"]

[tool.ruff]
line-length = 119 # Set the max line length to 119 characters.
lint.select = [
Expand Down