Skip to content

docs(api): lids updates in 8.4 #17914

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
wants to merge 20 commits into from

Conversation

emilyburghardt
Copy link
Collaborator

@emilyburghardt emilyburghardt commented Mar 27, 2025

Overview

API docs update for new lids methods in API 2.23: load_lid_stack, move_lid, and lids loaded onto labware.

Test Plan and Hands on Testing

sandbox: http://sandbox.docs.opentrons.com/docs-lids-in-8.4/v2/

Changelog

  • light editing to API reference entries; including removing a TODO
  • Loading Labware section: updating well plate used throughout the section so we can demonstrate loading a lid onto it; adding a new "Loading Lids" subsection
  • Moving Labware section: new "Moving Lids" section that can grow as we add more lids, like cell culture lids, compatible with move_lid

Review requests

Code blocks correct? Anything missing? Do we like where new information was added?

Maybe update the Auto-Sealing Lids section for the Thermocycler module example?

Risk assessment

Low.

@emilyburghardt emilyburghardt requested a review from a team as a code owner March 27, 2025 22:58
Copy link
Contributor

@CaseyBatten CaseyBatten left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looking good so far, some comments below regarding a few edge cases.

Use ``move_lid()`` again to move a used ``opentrons_tough_pcr_auto_sealing_lid`` to a ``WasteChute`` or ``TrashBin`` loaded in your protocol.

.. note::
You can only move an ``opentrons_flex_tip_rack_lid`` from a new tip rack to the ``WasteChute`` or ``TrashBin``, either manually or with the Flex gripper. The tip rack lid must be defined in your protocol using the ``lid`` parameter of ``load_labware``. For more, see :ref:`loading-lids`.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You can also move them onto another tip rack which does not currently have a lid. The example case being, you load one tiprack with a lid and one tiprack without a lid. On step two, you move the lid from tiprack A to tiprack B.

@@ -1391,13 +1391,13 @@ def load_lid_stack(
version: Optional[int] = None,
) -> Labware:
"""
Load a stack of Lids onto a valid Deck Location or Adapter.
Load a stack of Opentrons Tough Auto-Sealing Lids onto a valid deck location or adapter.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Load lid stack can in theory be used by any stackable lids (of which only the auto-sealing lids apply), so we might want to use more general terminology.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I like limiting it to what's possible now — we can always update when we add more labware and this becomes a more broadly applicable feature.

quantity="4")

## move an Opentrons Tough PCR Auto-Sealing Lid to a compatible well plate in the Thermocycler
protocol.move_lid(
Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@CaseyBatten do we not specify the load name for the lid being moved?

lid="opentrons_flex_tiprack_lid")


You might need multiple lids during your protocol. Use ``load_lid_stack`` to stack up to five Opentrons Tough Auto-Sealing Lids on a deck slot, riser, or compatible adapter.
Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@CaseyBatten is there a maximum of 5? I can't find where I read this originally. If true, should also maybe add to API reference.

Copy link
Contributor

@CaseyBatten CaseyBatten Mar 28, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Its a maximum of 5 based on the stackLimit in the labware definition for the Tough Auto-Sealing lids. Technically a labware could have a stack limit of any number, so long as we define it as such. The auto sealing lids become unstable after 5 lids, so we limit them to 5.

@emilyburghardt emilyburghardt changed the base branch from edge to chore_release-8.4.0 March 28, 2025 20:51
@emilyburghardt emilyburghardt requested review from a team as code owners March 28, 2025 20:51
Copy link
Contributor

@jwwojak jwwojak left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Left some comments on the use of code formatting vs regular text formatting. My main takeaway:

  • When referring to literal code, use the code formatting.
  • When referring to an actual thing or general concepts or to enhance readability, sometimes plain text/regular text is better.

PS I have probably used the wrong full name for the auto-sealing PCR plate. I'm not really sure what that thing is called, its full, formal name.


You can move compatible Opentrons lids manually or with the Flex gripper, but some restrictions apply. For more, see :ref:`moving-lids`.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is minor, the "For more" perhaps should be:

Suggested change
You can move compatible Opentrons lids manually or with the Flex gripper, but some restrictions apply. For more, see :ref:`moving-lids`.
You can move compatible Opentrons lids manually or with the Flex gripper, but some restrictions apply. For more information, see :ref:`moving-lids`.

or just "See moving-lids"


Lids on well plates or tip racks can help prevent contamination on the deck and are required for use with some modules, like the Thermocycler. You can use :py:meth:`.ProtocolContext.move_lid` to move an ``opentrons_tough_pcr_auto_sealing_lid`` or ``opentrons_flex_tiprack_lid`` manually or using the Flex gripper.

An `opentrons_tough_pcr_auto_sealing_lid` can be moved between deck slots, lid stacks, or compatible labware, modules, and adapters loaded in your protocol.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sometimes, a bit of text can read easer if the noun is referred to by name rather than by code. If you're explicitly referring to a code example, then I'd use the code typeface, but this seems more like a "general" type example so I'd suggest regular text because the sentence is about the actual object, not the code.

Suggested change
An `opentrons_tough_pcr_auto_sealing_lid` can be moved between deck slots, lid stacks, or compatible labware, modules, and adapters loaded in your protocol.
An Opentrons Tough PCR lid can be moved between deck slots, lid stacks, or compatible labware, modules, and adapters loaded in your protocol.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I agree in general, prefer plain English names unless directly referring to something in a code block.

Comment on lines 226 to 229
Use ``move_lid()`` again to move a used ``opentrons_tough_pcr_auto_sealing_lid`` to a ``WasteChute`` or ``TrashBin`` loaded in your protocol.

.. note::
You can only move an ``opentrons_flex_tip_rack_lid`` from a new tip rack to the ``WasteChute`` or ``TrashBin``, either manually or with the Flex gripper. The tip rack lid must be defined in your protocol using the ``lid`` parameter of ``load_labware``. For more, see :ref:`loading-lids`.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I would suggest the same thing as my comment above, though this might be an ambiguous case. Consider this:

Suggested change
Use ``move_lid()`` again to move a used ``opentrons_tough_pcr_auto_sealing_lid`` to a ``WasteChute`` or ``TrashBin`` loaded in your protocol.
.. note::
You can only move an ``opentrons_flex_tip_rack_lid`` from a new tip rack to the ``WasteChute`` or ``TrashBin``, either manually or with the Flex gripper. The tip rack lid must be defined in your protocol using the ``lid`` parameter of ``load_labware``. For more, see :ref:`loading-lids`.
Use ``move_lid()`` again to move a used Opentrons Tough PCR lid to a waste chute or trash bin loaded in your protocol.
.. note::
You can only move an Opentrons Tough PCR lid from a new tip rack to the waste chute or trans bin, either manually or with the Flex gripper. The tip rack lid must be defined in your protocol using the ``lid`` parameter of ``load_labware``. For more information, see :ref:`loading-lids`.

The "note" is a good example here. You're moving a lid not a piece of code to other real, physical objects.

Now the last sentence of the note is ok because it is talking about code.

Copy link

codecov bot commented Mar 31, 2025

Codecov Report

Attention: Patch coverage is 33.53214% with 1003 lines in your changes missing coverage. Please review.

Project coverage is 26.47%. Comparing base (f134eb4) to head (de110bb).
Report is 12 commits behind head on chore_release-8.4.0.

Files with missing lines Patch % Lines
.../ErrorRecoveryFlows/hooks/useFailedLabwareUtils.ts 0.00% 128 Missing ⚠️
protocol-designer/src/steplist/formLevel/errors.ts 7.69% 96 Missing ⚠️
...organisms/ODD/QuickTransferFlow/utils/pythonDef.ts 0.00% 87 Missing ⚠️
protocol-designer/src/steplist/formLevel/index.ts 6.41% 73 Missing ⚠️
...rotocol-designer/src/step-forms/selectors/index.ts 0.00% 68 Missing ⚠️
app/src/organisms/ErrorRecoveryFlows/constants.ts 0.00% 63 Missing ⚠️
.../organisms/ErrorRecoveryFlows/RecoveryDoorOpen.tsx 0.00% 57 Missing ⚠️
step-generation/src/utils/misc.ts 51.00% 49 Missing ⚠️
...yFlows/RecoveryOptions/ManualReplaceLwAndRetry.tsx 0.00% 48 Missing ⚠️
...rrorRecoveryFlows/shared/LeftColumnLabwareInfo.tsx 0.00% 41 Missing ⚠️
... and 37 more
Additional details and impacted files

Impacted file tree graph

@@                   Coverage Diff                   @@
##           chore_release-8.4.0   #17914      +/-   ##
=======================================================
- Coverage                26.55%   26.47%   -0.08%     
=======================================================
  Files                     3111     3115       +4     
  Lines                   236772   237781    +1009     
  Branches                 19221    19194      -27     
=======================================================
+ Hits                     62880    62958      +78     
- Misses                  173870   174801     +931     
  Partials                    22       22              
Flag Coverage Δ
protocol-designer 18.73% <23.26%> (-0.09%) ⬇️
step-generation 4.46% <26.17%> (+0.11%) ⬆️

Flags with carried forward coverage won't be shown. Click here to find out more.

Files with missing lines Coverage Δ
...anisms/ErrorRecoveryFlows/hooks/useShowDoorInfo.ts 0.00% <ø> (ø)
...orRecoveryFlows/shared/RecoveryDoorOpenSpecial.tsx 0.00% <ø> (ø)
...c/components/organisms/AnnouncementModal/index.tsx 96.77% <100.00%> (+0.94%) ⬆️
...gner/src/components/organisms/Navigation/index.tsx 91.07% <ø> (-0.46%) ⬇️
...src/file-data/__fixtures__/createFile/v7Fixture.ts 100.00% <100.00%> (ø)
...ol-designer/src/file-data/selectors/fileCreator.ts 84.33% <ø> (ø)
protocol-designer/src/file-data/selectors/utils.ts 78.91% <ø> (-0.67%) ⬇️
protocol-designer/src/form-types.ts 80.64% <ø> (ø)
.../pages/Designer/DeckSetup/Overlays/BlockedSlot.tsx 100.00% <100.00%> (ø)
...src/pages/Designer/ProtocolSteps/Timeline/utils.ts 20.37% <100.00%> (ø)
... and 74 more

... and 11 files with indirect coverage changes

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@ecormany ecormany removed request for a team and smb2268 March 31, 2025 15:52
@ecormany ecormany added docs papi-v2 Python API V2 labels Apr 2, 2025
y3rsh and others added 10 commits April 2, 2025 11:33
Since we have isolated Robot Stack release 8.4 into
`chore_release-8.4.0` we must lock down command schema 12 for that Robot
Stack Release. If changes are needed to command schema 12 they must
first be done in `chore_release-8.4.0` then incorporated in `edge` via a
merge back.
This PR adds the ability to generate python for quick transfer behind a
feature flag. It also logs it in devtools so you can view the actual
python file, otherwise there is no other way to view the file.
…nds (#17881)

# Overview
We want to enable error recovery during a protocol if the Flex Stacker
shuttle is not detected. This PR does the first step, which is to catch
this error. The hardware controller layer now checks for the platform
status before executing dispense and store labware, and raises the
appropriate error.

closes EXEC-1287, EXEC-1200
…with liquid (#17818)

<!--
Thanks for taking the time to open a Pull Request (PR)! Please make sure
you've read the "Opening Pull Requests" section of our Contributing
Guide:


https://github.com/Opentrons/opentrons/blob/edge/CONTRIBUTING.md#opening-pull-requests

GitHub provides robust markdown to format your PR. Links, diagrams,
pictures, and videos along with text formatting make it possible to
create a rich and informative PR. For more information on GitHub
markdown, see:


https://docs.github.com/en/get-started/writing-on-github/getting-started-with-writing-and-formatting-on-github/basic-writing-and-formatting-syntax

To ensure your code is reviewed quickly and thoroughly, please fill out
the sections below to the best of your ability!
-->

# Overview

Removing instances where tips were returning with liquid in them

## Test Plan and Hands on Testing

Ran protocols and checked tip rack bases upon completion to ensure they
were empty.

## Changelog

<!--
List changes introduced by this PR considering future developers and the
end user. Give careful thought and clear documentation to breaking
changes.
-->

## Review requests

<!--
- What do you need from reviewers to feel confident this PR is ready to
merge?
- Ask questions.
-->

## Risk assessment

<!--
- Indicate the level of attention this PR needs.
- Provide context to guide reviewers.
- Discuss trade-offs, coupling, and side effects.
- Look for the possibility, even if you think it's small, that your
change may affect some other part of the system.
- For instance, changing return tip behavior may also change the
behavior of labware calibration.
- How do your unit tests and on hands on testing mitigate this PR's
risks and the risk of future regressions?
- Especially in high risk PRs, explain how you know your testing is
enough.
-->
…17899)

<!--
Thanks for taking the time to open a Pull Request (PR)! Please make sure
you've read the "Opening Pull Requests" section of our Contributing
Guide:


https://github.com/Opentrons/opentrons/blob/edge/CONTRIBUTING.md#opening-pull-requests

GitHub provides robust markdown to format your PR. Links, diagrams,
pictures, and videos along with text formatting make it possible to
create a rich and informative PR. For more information on GitHub
markdown, see:


https://docs.github.com/en/get-started/writing-on-github/getting-started-with-writing-and-formatting-on-github/basic-writing-and-formatting-syntax

To ensure your code is reviewed quickly and thoroughly, please fill out
the sections below to the best of your ability!
-->

# Overview

DVT Flex Stacker Accelerated Lifetime Test

## Test Plan and Hands on Testing

Ran in SZ

## Changelog

<!--
List changes introduced by this PR considering future developers and the
end user. Give careful thought and clear documentation to breaking
changes.
-->

## Review requests

<!--
- What do you need from reviewers to feel confident this PR is ready to
merge?
- Ask questions.
-->

## Risk assessment

<!--
- Indicate the level of attention this PR needs.
- Provide context to guide reviewers.
- Discuss trade-offs, coupling, and side effects.
- Look for the possibility, even if you think it's small, that your
change may affect some other part of the system.
- For instance, changing return tip behavior may also change the
behavior of labware calibration.
- How do your unit tests and on hands on testing mitigate this PR's
risks and the risk of future regressions?
- Especially in high risk PRs, explain how you know your testing is
enough.
-->
rclarke0 and others added 9 commits April 2, 2025 11:33
…ime Test (#17898)

<!--
Thanks for taking the time to open a Pull Request (PR)! Please make sure
you've read the "Opening Pull Requests" section of our Contributing
Guide:


https://github.com/Opentrons/opentrons/blob/edge/CONTRIBUTING.md#opening-pull-requests

GitHub provides robust markdown to format your PR. Links, diagrams,
pictures, and videos along with text formatting make it possible to
create a rich and informative PR. For more information on GitHub
markdown, see:


https://docs.github.com/en/get-started/writing-on-github/getting-started-with-writing-and-formatting-on-github/basic-writing-and-formatting-syntax

To ensure your code is reviewed quickly and thoroughly, please fill out
the sections below to the best of your ability!
-->

# Overview

DVT Flex Stacker Labware Compatibility Lifetime Test

## Test Plan and Hands on Testing

- Ran in SZ

## Changelog

<!--
List changes introduced by this PR considering future developers and the
end user. Give careful thought and clear documentation to breaking
changes.
-->

## Review requests

<!--
- What do you need from reviewers to feel confident this PR is ready to
merge?
- Ask questions.
-->

## Risk assessment

<!--
- Indicate the level of attention this PR needs.
- Provide context to guide reviewers.
- Discuss trade-offs, coupling, and side effects.
- Look for the possibility, even if you think it's small, that your
change may affect some other part of the system.
- For instance, changing return tip behavior may also change the
behavior of labware calibration.
- How do your unit tests and on hands on testing mitigate this PR's
risks and the risk of future regressions?
- Especially in high risk PRs, explain how you know your testing is
enough.
-->

---------

Co-authored-by: Carlos <[email protected]>
…uipment up in invariantContext (#17865)

Pretty big refactor with step-generation in particular (but also touched
a few files in PD and the app for quick transfer) where the
`invariantContext` type key `additionalEquipmentEntities` is split up to
4 separate keys. The total `InvariantContext` looks like this:

```
export interface InvariantContext {
  labwareEntities: LabwareEntities
  moduleEntities: ModuleEntities
  pipetteEntities: PipetteEntities
  wasteChuteEntities: WasteChuteEntities
  trashBinEntities: TrashBinEntities
  stagingAreaEntities: StagingAreaEntities
  gripperEntities: GripperEntities
  liquidEntities: LiquidEntities
  config: Config
}
…Props (#17843)

This PR utilizes the existing `propsForFields` structure to pass all
necessary fields to `CheckboxExpandStepFormField` for the implicated
checkbox stepform field. Instead of individually passing values for the
field props `value`, `updateValue`, `isChecked`, `tooltipText`, and
`disabled`, we can simply pass that field's `propsForFields`, and
destructure inside the checkbox expand component.
Covers EXEC-1266
Updates the Max pool limit  to accounts for the overlap of the last labware within a given pool over the first.
@ecormany
Copy link
Contributor

ecormany commented Apr 3, 2025

This PR is stuck in branch h*ck. Closing in favor of #17972, which is freshly branched from chore_release-8.4.0.

@ecormany ecormany closed this Apr 3, 2025
emilyburghardt added a commit that referenced this pull request Apr 14, 2025
Replacing #17914 

Below description from that PR.

# Overview
API docs update for new lids methods in API 2.23: `load_lid_stack`,
`move_lid`, and lids loaded onto labware.


## Test Plan and Hands on Testing


sandbox: http://sandbox.docs.opentrons.com/docs-lids-in-8.4/v2/

## Changelog

- light editing to API reference entries; including removing a TODO 
- Loading Labware section: updating well plate used throughout the
section so we can demonstrate loading a lid onto it; adding a new
"Loading Lids" subsection
- Moving Labware section: new "Moving Lids" section that can grow as we
add more lids, like cell culture lids, compatible with `move_lid`


## Review requests
Code blocks correct? Anything missing? Do we like where new information
was added?

Maybe update the Auto-Sealing Lids section for the [Thermocycler module
example](https://docs.opentrons.com/v2/modules/thermocycler.html)?


## Risk assessment


Low.

---------

Co-authored-by: emilyburghardt <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
docs papi-v2 Python API V2
Projects
None yet
Development

Successfully merging this pull request may close these issues.