Skip to content

Refactor shaker backend API to use start_shaking#907

Open
j0nch wants to merge 1 commit intoPyLabRobot:mainfrom
j0nch:shaking_update
Open

Refactor shaker backend API to use start_shaking#907
j0nch wants to merge 1 commit intoPyLabRobot:mainfrom
j0nch:shaking_update

Conversation

@j0nch
Copy link
Contributor

@j0nch j0nch commented Feb 24, 2026

Summary

This PR refactors shaker backend naming to make backend semantics explicit and consistent:

  • Backend API now uses start_shaking(...) + stop_shaking(...).
  • Frontend Shaker.shake(..., duration=None) remains the orchestration entrypoint for users.
  • Deprecated backend shake(...) aliases are kept in concrete implementations for compatibility.

Motivation

Previously, backend shake(...) semantically meant "start shaking", while frontend Shaker.shake(...) also handled optional duration/stop behavior. This naming overlap was ambiguous.

Using start_shaking(...) at backend level makes intent clearer and aligns with stop_shaking(...).

Changes

Shaker backend contract

  • pylabrobot/shaking/backend.py
    • ShakerBackend now defines abstract start_shaking(speed: float).

Shaker frontend

  • pylabrobot/shaking/shaker.py
    • Shaker.shake(...) now calls backend.start_shaking(...).
    • Frontend remains the single user-facing orchestration method (duration support unchanged).

Chatterbox backend

  • pylabrobot/shaking/chatterbox.py
    • Implements start_shaking(...).
    • Adds deprecated shake(...) alias with warning, forwarding to start_shaking(...) for migration parity with hardware backends.

Heater-shaker backend implementations aligned

  • pylabrobot/heating_shaking/hamilton_backend.py
    • Implements start_shaking(...).
    • Keeps deprecated shake(...) alias forwarding to start_shaking(...).
  • pylabrobot/heating_shaking/inheco/thermoshake_backend.py
    • Implements start_shaking(...).
    • Keeps deprecated shake(...) alias forwarding to start_shaking(...).
  • pylabrobot/heating_shaking/bioshake_backend.py
    • Implements start_shaking(...)
    • Keeps deprecated shake(...) alias forwarding to start_shaking(...).

Backward compatibility

  • Existing backend calls to .shake(...) continue to work in concrete backends via deprecation aliases.
  • New code should call .start_shaking(...) at backend level.

Testing / validation

Executed:

python -m pytest -q pylabrobot/shaking/shaker_tests.py pylabrobot/heating_shaking/heater_shaker_tests.py

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant