Skip to content
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

chore(release): 7.2.0 #14440

Merged
merged 300 commits into from
Mar 6, 2024
Merged

chore(release): 7.2.0 #14440

merged 300 commits into from
Mar 6, 2024

Conversation

sfoster1
Copy link
Member

@sfoster1 sfoster1 commented Feb 7, 2024

This is the tracking branch for release 7.2.0

erictleung and others added 30 commits January 3, 2024 15:51
* docs(api): replace double quotes with single quotes

* docs(api): add missing single quote

* docs(api): use double quotes in v1 docs

* docs(api): use double quotes for v2 example protocols

* docs(api): use double quotes in v2 docs
refactors choose robot slideout usage of getRobotUpdateDisplayInfo to eliminate selector console
warnings

closes RAUT-909
his PR contains updates required to handle Opentrons/oe-core#110 and Opentrons/buildroot#213 which update the flex operating system and ot-2 operating system respectively to more recent versions of, well everything. Perhaps most significantly to us, both PRs update the python that runs on the machine to 3.10, which requires a lot of changes to a lot of our code.

This PR makes those changes by updating the python versions used in our test harnesses to 3.10; setting those dependencies explicitly captured by the system builders to their new versions from the new versions of the system builders; and bumping other dependencies the minimum required to make it all work. Further work may increase dependency versions further.

The big ones are updating pydantic to 1.9, which is something we've been putting off for a while and probably unlocks further updates. This update is because of the following, which is typical of the process:

    system builders updated numpy, which is locked in because it must be cross-compiled, to 1.17
    numpy 1.17 includes type annotations via .pyi
    mypy must be updated to 0.981 because previous versions interpreted .pyi files as-if the python version was 3.7, but the .pyis had some >3.7-only features
    pydantic must be updated to 1.9 because 1.8 doesn't work with that updated mypy because of a change to internal mypy hooks
    a lot of server code and tests have to be slightly altered because pydantic 1.9 doesn't elide None keys, which is (IMO) good anyway

This should hopefully free us to update mypy to the latest again, and hopefully the changes to explicit handling of none keys will let us update pydantic further.

Anyway, there's a fair amount of "just run the robot" style testing to do here, and we have to decide what to do about loading pickles; handling user-installed dependencies; and further support of 3.7. But all the tests should now pass.
* refactor(app): change the word from OT-3 to Flex in code
* refactor(app): add tests and clean up components
* refactor(app): update tests for react 18 update
* chore: do not try and set acls in docs and labware

* trigger ll sandbox deploys on action changes
fixes the logic to surface a magnetic module fixture conflict if one exists and suppress conflicts
with staging area fixtures. changes the background color of the magnetic module item. splits out a
ModuleTable component for readability.

closes RAUT-913
* add missing docstrings for Well properties

* 2-way ref between well_name and dictionary access
when add fixture modal options are provided (during protocol setup on ODD), only show those options
and do not allow the modal to close without selecting an option

closes RAUT-911
* docs(doc): add corepack usage
…#14295)

list not configured/conflicted fixtures at the top of the ODD fixture table

closes RAUT-912
…les (#14297)

* fix(app): never show module calibration banner for OT-2-specific modules

closes RQA-1527
… package (#14281)

In addition to properly exporting the necessary components in the bundled components library
artifact. Remove legacy usage of css modules and html parsing that posed portability risks in the
protocol library project.

In order to allow key components to be used in server side rendered environments, remove the
dependency on css modules and target exported directories for lib build
…ctions and types (#14291)

removes various unused utilities, components, and types related to deck config work
* docs(doc): change python version from 3.7 to 3.10
Closes RSS-128.

* Update command unions.
* Update stateless command unions.
* Work around Pydantic bug.
* Fix names and docstrings for union workarounds.
* Update tests.
* Update command schema.
* fix(app): fix lpc begin wizard long name display issue
* fix(app): replace cut-off success icon

closes RQA-2165
mjhuff and others added 27 commits February 27, 2024 15:29
…ct (#14547)

Closes RQA-2311
Closes RSS-490

# Overview

Does two things-
1. shared-data: adds (to pipette definitions) the offsets of back left
and front right corners of all pipettes' outer casing from their
respective mount position
2. api: updates the pipette movement conflict checker to use the above
mentioned pipette bounds that include the outer casing of pipettes,
instead of just the bounding nozzles.

# Test Plan

Main objective of this PR is to make sure a conflict with thermocycler
lid is caught in analysis.

On top of that, since this PR also updates the logic for checking
potential collisions, make sure that previously failing cases aren't
passing now and vice versa. Good news is that previous integration tests
for pipette movement conflict are still passing as expected.

Test protocol:

```
from opentrons.protocol_api import COLUMN, ALL

requirements = {
	"robotType": "Flex",
	"apiLevel": "2.16"
}

def run(ctx):
  tip_rack1 = ctx.load_labware("opentrons_flex_96_tiprack_50ul", "B3", adapter="opentrons_flex_96_tiprack_adapter")
  tip_rack2 = ctx.load_labware("opentrons_flex_96_tiprack_50ul", "D3")
  instrument = ctx.load_instrument('flex_96channel_1000', mount="left")
  
  my_pcr_plate = ctx.load_labware('nest_96_wellplate_200ul_flat', "C2")
  my_other_plate = ctx.load_labware('nest_96_wellplate_200ul_flat', "C1")

  thermocycler = ctx.load_module('thermocyclerModuleV2')
  tc_adjacent_plate = ctx.load_labware("nest_96_wellplate_200ul_flat", "A2")
  ctx.load_trash_bin("A3")
  
  instrument.configure_nozzle_layout(style=COLUMN, start="A12", tip_racks=[tip_rack2])
  
  instrument.pick_up_tip()  
  instrument.aspirate(50, my_pcr_plate.wells_by_name()["A4"])
  instrument.dispense(20, my_other_plate.wells_by_name()["A2"])
  
  # Should error out because conflict with thermocycler lid
  instrument.dispense(20, tc_adjacent_plate.wells_by_name()["A1"])

  instrument.drop_tip()
```

# Changelog

Shared-data:
- added `pipetteBoundingBoxOffsets` to pipette definitions

api:
- updated `PipetteDict` to include pipette bounding box offsets
- added pipette bounding box offsets to engine pipette state's config
data
- replaced bounding nozzles fetchers with pipette bounding box fetchers
- updated the logic that checks whether a pipette is over/ overlapping
with a certain slot.

# Review requests

- any objections to this addition of `pipetteBoundingBoxOffsets` to the
definitions?
- anything I'm missing with the changes in hardware controller?

# Risk assessment

Medium. Changes a pretty central part of the pipette movement conflict
checker but it's well-tested and only used during 96 channel partial
config.
provide padding in form for connecting to robot via IP address

closes RQA-2350
…r shared data (#14565)

# Overview
[RDEVOPS-62](https://opentrons.atlassian.net/browse/RDEVOPS-62)
This is a temporary fix for the 7.2.0 release so we may publish
shared-data. The real fix is in the work being done to move to Vite.

## Test Plan

Works locally

```shell
make -C shared-data lib-js
make: Entering directory '/root/github/opentrons/shared-data'
NODE_OPTIONS=--openssl-legacy-provider yarn webpack
yarn run v1.22.10
$ /root/github/opentrons/node_modules/.bin/webpack
Hash: 4c23879d2c6e65c2d53a
Version: webpack 4.46.0
Time: 3645ms
Built at: 02/29/2024 6:57:56 AM
                               Asset      Size  Chunks                          Chunk Names
            opentrons-shared-data.js   653 KiB       0  [emitted]        [big]  index
opentrons-shared-data.js.LICENSE.txt  95 bytes          [emitted]
        opentrons-shared-data.js.map   713 KiB       0  [emitted] [dev]         index
Entrypoint index [big] = opentrons-shared-data.js opentrons-shared-data.js.map
 [12] ./errors/definitions/1/errors.json 5.72 KiB {0} [built]
 [21] ./labware/schemas/2.json 12.3 KiB {0} [built]
 [22] ./deck/definitions/4/ot2_standard.json 10.1 KiB {0} [built]
 [39] ./pipette/definitions/1/pipetteNameSpecs.json 16 KiB {0} [built]
 [40] ./gripper/definitions/1/gripperV1.1.json 689 bytes {0} [built]
 [75] ./deck/definitions/4/ot3_standard.json 16 KiB {0} [built]
 [85] ./pipette/definitions/1/pipetteModelSpecs.json 262 KiB {0} [built]
 [86] ./module/definitions/3/magneticModuleV1.json 13.4 KiB {0} [built]
 [87] ./module/definitions/3/magneticModuleV2.json 14.4 KiB {0} [built]
 [88] ./module/definitions/3/temperatureModuleV1.json 4.84 KiB {0} [built]
 [89] ./module/definitions/3/temperatureModuleV2.json 7.36 KiB {0} [built]
 [90] ./module/definitions/3/thermocyclerModuleV1.json 54.3 KiB {0} [built]
 [91] ./module/definitions/3/thermocyclerModuleV2.json 150 KiB {0} [built]
 [92] ./module/definitions/3/heaterShakerModuleV1.json 16.1 KiB {0} [built]
[230] ./js/index.ts + 40 modules 98 KiB {0} [built]
      | ./js/index.ts 389 bytes [built]
      | ./js/constants.ts 11 KiB [built]
      | ./js/getLabware.ts 6.15 KiB [built]
      | ./js/fixtures.ts 4.1 KiB [built]
      | ./js/helpers/index.ts 12.5 KiB [built]
      | ./js/pipettes.ts 5.2 KiB [built]
      | ./js/types.ts 21 bytes [built]
      | ./js/labwareTools/index.ts 12.8 KiB [built]
      | ./js/modules.ts 2.47 KiB [built]
      | ./js/gripper.ts 810 bytes [built]
      | ./protocol/index.ts 55 bytes [built]
      | ./deck/index.ts 33 bytes [built]
      | ./js/titleCase.ts 913 bytes [built]
      | ./js/errors.ts 302 bytes [built]
      | ./js/helpers/get96Channel384WellPlateWells.ts 1.29 KiB [built]
      |     + 26 hidden modules
    + 216 hidden modules

WARNING in asset size limit: The following asset(s) exceed the recommended size limit (244 KiB).
This can impact web performance.
Assets:
  opentrons-shared-data.js (653 KiB)

WARNING in entrypoint size limit: The following entrypoint(s) combined asset size exceeds the recommended limit (244 KiB). This can impact web performance.
Entrypoints:
  index (653 KiB)
      opentrons-shared-data.js


WARNING in webpack performance recommendations:
You can limit the size of your bundles by using import() or require.ensure to lazy load some parts of your application.
For more info visit https://webpack.js.org/guides/code-splitting/
Done in 4.23s.
make: Leaving directory '/root/github/opentrons/shared-data'
```

## Changelog

- add `--openssl-legacy-provider` so that yarn webpack builds
shared-data

# Risk assessment

Would not want in permanently, Vite work in edge will solve.

[RDEVOPS-62]:
https://opentrons.atlassian.net/browse/RDEVOPS-62?atlOrigin=eyJpIjoiNWRkNTljNzYxNjVmNDY3MDlhMDU5Y2ZhYzA5YTRkZjUiLCJwIjoiZ2l0aHViLWNvbS1KU1cifQ
In protocols page, there is a help link to open the Protocol Library. Here, I update the link to direct to PL reborn's URL at library.opentrons.com

closes RQA-2414
fix(app): remove body text on module calibration in progress

closes RQA-2320
asyncio subprocess used to need loop; now it doesn't. For a
minimum-affected fix, just don't pass loop to the subprocess invocations
while keeping it in the top level environment.

Closes RQA-2417
…ttes and modules (#14573)

renders action needed in protocol setup step when pipette is missing (or
mismatched) or module is missing for both OT-2 and Flex

closes RQA-2406, RQA-2407
…14576)

A link in the "How labware offsets work" modal goes to a help center
page that only covers OT-2. The link is present when setting up Flex or
OT-2 protocols. We decided to remove the link for now.
In pipette overflow menu for OT-2 pipettes, the 'Pipette settings' menu item should be disabled during an active run.

closes [RQA-2427](https://opentrons.atlassian.net/browse/RQA-2427)
…scription (#14589)

Currently, components know to fallback to HTTP if the broker is unresponsive during the initial connection/subscription request to the MQTT broker. However, there is no logic to handle the edge case of falling back to HTTP during an active subscription (the component successfully subscribes to a topic, but during the active subscription, the broker becomes unresponsive).

Notify all components subscribed to any topic that they should fallback to HTTP if the broker becomes unresponsive after successfully subscribing.
…14588)

Reduce superfluous MQTT network traffic on the app side by keeping track of robots that have known blocked MQTT ports (or have an offline message broker).
8398c83 made a refactor to the way the
hardware controller retracts the last-moved mount to get it out of the
way when you change a move. This change allowed mounts that have
electronic brakes to have those brakes engaged more often, lowring
current consumption and heat generation. Unfortunately, it also
introduced an issue in a specific code path.

If you have a 96 channel attached and you've been moving a mount that is
not the left mount, so last_moved_mount is RIGHT or GRIPPER; and then
you call `_cache_and_maybe_retract_mount(LEFT)`; then
- the left mount is idle, so we home it with home_z
- home_z clears _last_moved_mount
- there is now no mount to retract, and so it is not retracted

The fix for this is to copy last_moved_mount to a local so altering the
cached value won't effect the rest of the method.

This fixes an issue where we use exactly this codepath: moving to
maintenance position immediately after calibrating the gripper.
_last_moved_mount is GRIPPER, but we always move the left mount to the
maintenance position. This hits the problem. Any other codepath of this
kind would also hit it.

This change should be strictly safer than the previous behavior.

Closes RABR-45, RQA-2380
This PR fixes two issues.
1. Often, after updating the firmware of the head or the gripper, homing
that subsystem's z axis would not cause the motor to move. The root
cause for this is in the firmware, but lessening the distance that we
home the axes also makes the errors happen after 2 minutes instead of
20.
2. Sometimes, after updating the firmware of the head or the gripper,
that axis would fall down. This is in fact pretty much the same issue -
it's to do with mechanics around how we handle the emergency brakes -
and is also fixed in firmware; but disabling these axes when we're about
to update them will help.

Also, wrap the entirety of `cache_instruments` in the motion lock rather
than just sections, which would sometimes lead to part of the calls
happening long before the rest of them.

Closes RQA-2301, RQA-2429

---------

Co-authored-by: ahiuchingau <[email protected]>
# Overview

Added a couple known issues that won't be addressed in 7.2.0.

# Review requests

Both issues sufficiently and accurately summarized?
Copy link
Member

@y3rsh y3rsh left a comment

Choose a reason for hiding this comment

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

Approved contingent on QA final signoff.

@sfoster1 sfoster1 merged commit be34672 into release Mar 6, 2024
137 of 138 checks passed
@koji koji deleted the chore_release-7.2.0 branch April 17, 2024 19:02
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.