equinor / equinor/isar-turtlebot

PR1: chore — modernize Python packaging and CI

Open
#170 0 comments 0 reactions 0 assignees View on GitHub
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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.