feat(api): prepare for aspirate in air gap#17919
feat(api): prepare for aspirate in air gap#17919sfoster1 merged 3 commits intochore_release-8.4.0from
Conversation
Codecov ReportAll modified and coverable lines are covered by tests ✅
Additional details and impacted files@@ Coverage Diff @@
## chore_release-8.4.0 #17919 +/- ##
====================================================
Coverage 25.82% 25.82%
====================================================
Files 3005 3005
Lines 227433 227433
Branches 18912 18912
====================================================
Hits 58724 58724
Misses 168696 168696
Partials 13 13
Flags with carried forward coverage won't be shown. Click here to find out more. 🚀 New features to boost your workflow:
|
Small nitpick: Until recently, protocols that were missing the |
| state_update = StateUpdate() | ||
| if params.failIfNotPreparedToAspirate: | ||
| raise PipetteNotReadyToAspirateError( | ||
| "Pipette cannot air gap in place because of a previous blow out." |
There was a problem hiding this comment.
Could you also update this error message to make it easier for users to figure out what's wrong? The problem we ran into last time was due to a push out, not a blow out.
But do it in the API.
Otherwise this could actually cause a spurious dispense.
fc36f94 to
ace126d
Compare
| target = loc.labware.as_well().top(height) | ||
| self.move_to(target, publish=False) | ||
| if self.api_version >= _AIR_GAP_TRACKING_ADDED_IN: | ||
| self._core.prepare_to_aspirate() |
There was a problem hiding this comment.
_AIR_GAP_TRACKING_ADDED_IN is 2.22 but we're about to release 2.23. Does this not need another api_version gate, or is it harmless enough that we're not worrying about it?
…#18314) # Overview After the recent PAPI changes to support `air_gap()` in-place, we can now generate Python for the `airGapInPlace` CommandCreator. This in turn completes the support for the `airGapInTrash` and `airGapInWasteChute` compound commands. Note that in the `airGapInTrash` and `airGapInWasteChute` CommandCreators, we suppress the Python for `prepareToAspirate`, because the Python `air_gap()` command automatically issues `prepare_to_aspirate()` (PR #17919). ## Test Plan and Hands on Testing Added unit tests. I also tried PD Python export for a protocol that used air gaps, and confirmed that it passed analysis. ## Risk assessment Low.
We should add a prepare-to-aspirate to the python protocol api
air_gapcommand, where it can issue the command after we've moved to a known-dry position and before we actually dispense the airgap command. We know the position is dry and therefore it's safe to do a prepare.However, to be able to unconditionally do a prepare, we also need to add a fix to the engine prepare command to no-op if the pipette is already prepared to aspirate. This is pretty important because if we've already aspirated some liquid, we really don't want to move back to the bottom position and dispense it all.
Useful testing protocol:
Closes EXEC-1391