[WIP] async ramp in Mercury iPS
This PR adds new async functionality, since the majority of the time during ramping MercuryiPS fields is spent on polling the instrument ramp state. awaiting sleep instead of blocking on sleep allows for other tasks to run without needing a multithreaded application. For instance, using the cancelling context manager in this PR, it's easy to add an async task that reports the current magnetic field of a controller whenever the main thread is idle. Since this uses the default event loop, it is manifestly single-threaded unless a user explicitly installs a threadpool executor.
This PR originally also introduced improvements related to field vectors but those were moved to the separate PR https://github.com/QCoDeS/Qcodes/pull/1398.
Codecov Report
Merging #1348 into master will increase coverage by
2.64%. The diff coverage is67.44%.
@@ Coverage Diff @@
## master #1348 +/- ##
==========================================
+ Coverage 70.52% 73.16% +2.64%
==========================================
Files 103 80 -23
Lines 11608 9272 -2336
==========================================
- Hits 8186 6784 -1402
+ Misses 3422 2488 -934
+@QCoDeS/core for async impact.
A new PR https://github.com/QCoDeS/Qcodes/pull/1398 is opened for the changes in this PR that are not related to async. The work on this branch (either in this PR or in a new PR) on the async ramping will continue later and independently.
The title and description of this PR has been adjusted accordingly.