Skip to content

Merge back 'chore_release-pd-8.5.0' into 'edge' #18660

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

Merged
merged 12 commits into from
Jun 17, 2025
Merged

Conversation

ddcc4
Copy link
Contributor

@ddcc4 ddcc4 commented Jun 17, 2025

This picks up our changes in chore_release-8.5.0 and chore_release-pd-8.5.0 from the past few days.

Will commit this merge at the end-of-day.

smb2268 and others added 11 commits June 13, 2025 13:29
…ntinue (#18627)

Fixes logic for showing form errors, especially when reopening an
errored-out saved form. We previously used a state variable for whether
or not to show the form errors, such that they would only show if a user
tried to continue/save a form containing an error. After a large error
handling [refactor](#18437)
was merged, this state was unused, such that errors would show
automatically when reopening a form.

This PR adds logic to the `makeSingleEditFieldProps` util to show form
errors in the following scenarios:
1. the error is due to the field being required, and the form is saved
and reopened
2. the error is of any type, the form is pre-saved or saved, and the
user attempts to continue or save

I also wire up a new optional property of the form error to specify
whether or not to show the error upon reopening in scenario 1 above.
Here, we remove the `updatePatchPathField` from
`dependentFieldsUpdateMoveLiquid`.
Labware labels are passed through from the protocol api all the way to
the commands and eventually the client with little actual
_functionality_ dependent on their types or their values. That means
that the only thing that checks them is pydantic model validation, and
if you avoid that - as the legacy command mapper does by using
model_construct() - then other downstream things won't be happy.

In this case, OT-2 LPC starts its session by echoing commands it reads
from the robot analysis back out to a maintenance run. When a client
uses HTTP to create commands, pydantic model validation _does_ run, and
it would fail, and this wasn't an anticipated error scenario because,
well, it's echoed from the protocol! But the incorrect data made it
through.

Another way to handle this would be to do pydantic model validation on
the protocol inputs, but that would break any old protocols that
implicitly depended on this working. Compatibility! Also IMO it's silly
that we enforce this if the entire system works just fine if you give it
an integer.

Closes RESC-423
# Overview

We had defined a `pd_step` context manager so that we could group Python
commands from the same PD step together, and so that we could emit
fields from PD that are not expressible in the Python API (step name,
step description, step form parameters, etc.). We were planning to use
it like this:
```
with pd_step(name="My Mix Step", description="Mix very well", ...):
  pipette_left.pick_up_tip()
  pipette_left.mix(...)
```

However, command annotations serve the same purpose, and command
annotations will also provide a context manager for grouping steps. So
I'm removing our `pd_step` context manager.

Command annotations are not available in the public API yet, but we'll
just wait for it and use it when it's available.

## Test Plan and Hands on Testing

Updated unit tests.

## Risk assessment

Low. Feature has never been released publicly.
Fixes following bugs that i found while testing advanced settings for py
interop with consolidate and distribute
1. use correct `fixtureId` for consolidate and distribute blowout
location in a trash bin/waste chute
2. cast the `delay.duration` values as numbers to avoid them appearing
as strings
3. if dispense destination is a `trash_bin` or `waste_chute` then remove
the array
4. `pipetteName` in the custom liquid class definition should be the api
pipette name, not the JS pipette name
5. emit `configure_nozzle_layout` for 96-channel full and partial tip
support
@ddcc4 ddcc4 requested review from sfoster1, ncdiehl11 and jerader June 17, 2025 19:19
@ddcc4 ddcc4 requested review from a team as code owners June 17, 2025 19:19
)

This PR wires up OT-2 default values when creating a new moveLiquid
step, including aspirate/dispense submerge/retract speeds and default
disposal volumes for multiDispense path transfers. I also refactor the
logic for stepping through the moveLiquid step form in attempt to share
logic as much as possible for Flex and OT-2 protocol moveLiquid step
creation. Lastly, I wire up aspirate/dispense submerge/retract speeds
required, as well as remove liquid class compatibility warnings for
OT-2.
Copy link

codecov bot commented Jun 17, 2025

Codecov Report

Attention: Patch coverage is 0% with 38 lines in your changes missing coverage. Please review.

Project coverage is 24.12%. Comparing base (9645df8) to head (b19784c).
Report is 525 commits behind head on edge.

Files with missing lines Patch % Lines
.prettierrc.js 0.00% 22 Missing ⚠️
.storybook/preview.tsx 0.00% 9 Missing ⚠️
.storybook/main.ts 0.00% 4 Missing ⚠️
__mocks__/electron-updater.js 0.00% 2 Missing ⚠️
__mocks__/electron-store.js 0.00% 1 Missing ⚠️

❗ There is a different number of reports uploaded between BASE (9645df8) and HEAD (b19784c). Click for more details.

HEAD has 2 uploads less than BASE
Flag BASE (9645df8) HEAD (b19784c)
protocol-designer 3 2
step-generation 2 1
Additional details and impacted files

Impacted file tree graph

@@             Coverage Diff             @@
##             edge   #18660       +/-   ##
===========================================
- Coverage   59.83%   24.12%   -35.72%     
===========================================
  Files        3218     3282       +64     
  Lines      277818   285236     +7418     
  Branches    28320    28696      +376     
===========================================
- Hits       166244    68808    -97436     
- Misses     111388   216403   +105015     
+ Partials      186       25      -161     
Flag Coverage Δ
protocol-designer 19.24% <0.00%> (-2.36%) ⬇️
step-generation 5.24% <0.00%> (+0.26%) ⬆️

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

Files with missing lines Coverage Δ
app-shell-odd/src/actions.ts 0.00% <ø> (-16.97%) ⬇️
app-shell-odd/src/config/index.ts 0.00% <ø> (-18.92%) ⬇️
app-shell-odd/src/config/migrate.ts 0.00% <ø> (-87.09%) ⬇️
app-shell-odd/src/config/update.ts 0.00% <ø> (-83.79%) ⬇️
app-shell-odd/src/constants.ts 0.76% <ø> (-99.24%) ⬇️
app-shell-odd/src/dialogs/index.ts 0.00% <ø> (-72.23%) ⬇️
app-shell-odd/src/discovery.ts 0.00% <ø> (-79.20%) ⬇️
app-shell-odd/src/early.ts 0.00% <ø> (-66.67%) ⬇️
app-shell-odd/src/http.ts 0.00% <ø> (-31.82%) ⬇️
app-shell-odd/src/log.ts 0.00% <ø> (-10.00%) ⬇️
... and 54 more

... and 2257 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.

@ddcc4 ddcc4 merged commit ab6b0a7 into edge Jun 17, 2025
58 of 61 checks passed
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.

7 participants