equinor / equinor/isar-turtlebot
PR1: chore — modernize Python packaging and CI
- Dominant language
- Python
- Stars
- 3
- Forks
- 20
- PR merge metrics
- No merged PRs in 30d
Description
Part of #168.
## Goal
Get the Python package onto Python 3.14, uv, and the reusable armada CI workflow. The robot logic still imports from the old `robot_interface` API and will fail at runtime against current ISAR — that is fixed in the next sub-issue. CI in this PR runs lint + build only, not integration.
## Changes
- Replace `setup.py` + `setup.cfg` with `pyproject.toml` modelled on `isar-robot/pyproject.toml`:
- `name = "isar-turtlebot"`, dynamic version via `setuptools_scm` (writing `src/isar_turtlebot/version.py`).
- `requires-python = ">=3.14"`.
- Runtime deps: `alitra`, `isar>=2.1.2`, `roslibpy`, `numpy`, `scipy`, `Pillow`.
- Dev deps: `black`, `mypy`, `pytest`, `pytest-mock`, `ruff`.
- `[tool.uv.sources] isar = { path = "../isar", editable = true }`.
- `[tool.ruff]`, `[tool.black]`, `[tool.mypy]` blocks copied from `isar-robot`.
- Add `Makefile` with at minimum `run: uv run isar-start`.
- Add/refresh `.pre-commit-config.yaml` aligned with `isar-robot`.
- Add `catalog-info.yaml` (Backstage), modelled on `isar-robot/catalog-info.yaml`.
- Replace `.github/workflows/pythonpackage.yml` with `test_and_lint_python_package.yml` calling the reusable `equinor/armada/.github/workflows/test_and_lint_python_package.yml@main` on `python-versions: '["3.14"]'`.
- Add `.github/workflows/compile_python_requirements_and_create_pr.yml` consistent with isar-robot.
- Remove `Dockerfile.Isar` (hardcodes `isar:v1.16.6`); the deploy image is rebuilt in the Docker PR.
- Delete `tests/interfaces/test_robotinterface.py` (imports removed symbol) and replace with a smoke test that imports `isar_turtlebot.robotinterface.Robot` and asserts subclass of `RobotInterface`.
## Out of scope
- Any change to the `Robot` class, ROS launch files, or simulator Dockerfile.
## Definition of done
- [ ] `uv sync` succeeds on Python 3.14.
- [ ] Reusable armada lint/test workflow green.
- [ ] `pyproject.toml`, `Makefile`, `catalog-info.yaml`, updated `.pre-commit-config.yaml` present.
- [ ] `setup.py`, `setup.cfg`, `Dockerfile.Isar` removed.
- [ ] No behavior change to robot logic.
Contributor guide
No contributing guide indexed for this repository
Research direction
Start by comparing the existing setup.py and setup.cfg with isar-robot/pyproject.toml, catalog-info.yaml, pre-commit configuration, and reusable workflow examples named in the issue. Run uv sync on Python 3.14 and inspect the smoke test replacing tests/interfaces/test_robotinterface.py. Done means packaging and lint/test CI pass, required files and removals match the checklist, and robot logic remains unchanged.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- docker, github-actions, python
- Domain
- build-system, ci-cd, devtools
- Issue type
- Refactor
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Quiet
- Clarity
- Mostly clear
- Newbie friendliness
- 48/100