Refactor keyboard interrupt handling
Explanation of changes
The handling of keyboard interrupts to exit the measurement loop contained two errors, described in #375 (closed). This MR resolves them by implementing a support class that encapsulates all the keyboard interrupt related code and should be used as a context manager on code blocks that require this functionality.
Motivation of changes
- A separate class (as opposed to integrated in
MeasurementControl
) hides implementation details from the MC code. - A context manager is the robust solution for situations where guaranteed clean-up is needed.
Merge checklist
See also merge request guidelines
-
Merge request has been reviewed (in-depth by a knowledgeable contributor), and is approved by a project maintainer. -
New code is covered by unit tests (or N/A). -
New code is documented and docstrings use numpydoc format (or N/A). -
New functionality: considered making private instead of extending public API (or N/A). -
Public API changed: added @deprecated
(or N/A). -
Newly added/adjusted documentation and docstrings render properly (or N/A). -
Pipeline fix or dependency update: post in #software-for-developers
channel to mergemain
back in or update local packages (or N/A). -
Tested on hardware (or N/A). -
CHANGELOG.md
andAUTHORS.md
have been updated (or N/A). -
Windows tests in CI pipeline pass (manually triggered by maintainers before merging). - Maintainers do not hit Auto-merge, we need to actively check as manual tests do not block pipeline
For reference, the issues workflow is described in the contribution guidelines.
Edited by Viacheslav Ostroukh