Skip to content

Commit 871aae1

Browse files
committed
Merge back 'chore_release-pd-8.5.0' into 'edge' (#18743)
Manually fixed conflict in `hardware-testing/.flake8`.
2 parents 76bbde0 + 05d2623 commit 871aae1

File tree

37 files changed

+1030
-266
lines changed

37 files changed

+1030
-266
lines changed

.github/workflows/pd-test-build-deploy.yaml

Lines changed: 21 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -86,18 +86,20 @@ jobs:
8686
NODE_OPTIONS: '--max-old-space-size=5120'
8787
OT_PD_MIXPANEL_ID: ${{ secrets.OT_PD_MIXPANEL_ID }}
8888
OT_PD_MIXPANEL_DEV_ID: ${{ secrets.OT_PD_MIXPANEL_DEV_ID }}
89-
# OT_PD_SENTRY_DSN: ${{ secrets.OT_PD_SENTRY_DSN }}
90-
# OT_PD_SENTRY_DEV_DSN: ${{ secrets.OT_PD_SENTRY_DEV_DSN }}
89+
OT_PD_SENTRY_DSN: ${{ secrets.OT_PD_SENTRY_DSN }}
90+
OT_PD_SENTRY_DEV_DSN: ${{ secrets.OT_PD_SENTRY_DEV_DSN }}
9191
run: |
9292
make -C protocol-designer NODE_ENV=development
93-
# - name: 'upload sourcemaps to Sentry'
94-
# uses: getsentry/action-release@v3
95-
# env:
96-
# SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN }}
97-
# SENTRY_ORG: ${{ secrets.SENTRY_ORG }}
98-
# SENTRY_PROJECT: ${{ secrets.SENTRY_PROJECT }}
99-
# with:
100-
# sourcemaps: protocol-designer/dist
93+
- name: 'upload sourcemaps to Sentry'
94+
uses: getsentry/action-release@v3
95+
env:
96+
SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN }}
97+
SENTRY_ORG: ${{ secrets.SENTRY_ORG }}
98+
SENTRY_PROJECT: ${{ secrets.SENTRY_PROJECT }}
99+
with:
100+
sourcemaps: protocol-designer/dist
101+
set_commits: auto
102+
ignore_missing: true
101103
- name: 'upload github artifact'
102104
uses: actions/upload-artifact@v4
103105
with:
@@ -138,12 +140,12 @@ jobs:
138140
# invalidate both sandbox.opentrons.com and www.sandbox.opentrons.com cloudfront caches
139141
aws cloudfront create-invalidation --distribution-id ${{ secrets.PD_CLOUDFRONT_SANDBOX_DISTRIBUTION_ID }} --paths "/*"
140142
aws cloudfront create-invalidation --distribution-id ${{ secrets.PD_CLOUDFRONT_SANDBOX_WWW_DISTRIBUTION_ID }} --paths "/*"
141-
# - name: 'notify Sentry of prod deploy'
142-
# uses: getsentry/action-release@v3
143-
# env:
144-
# SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN }}
145-
# SENTRY_ORG: ${{ secrets.SENTRY_ORG }}
146-
# SENTRY_PROJECT: ${{ secrets.SENTRY_PROJECT }}
147-
# with:
148-
# version: ${{ steps.resolve-tag.outputs.tag }}
149-
# environment: production
143+
- name: 'notify Sentry of prod deploy'
144+
uses: getsentry/action-release@v3
145+
env:
146+
SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN }}
147+
SENTRY_ORG: ${{ secrets.SENTRY_ORG }}
148+
SENTRY_PROJECT: ${{ secrets.SENTRY_PROJECT }}
149+
with:
150+
version: ${{ steps.resolve-tag.outputs.tag }}
151+
environment: production

api/src/opentrons/protocol_api/_transfer_liquid_validation.py

Lines changed: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
from dataclasses import dataclass
2-
from typing import List, Union, Sequence, Optional
2+
from typing import List, Union, Sequence, Optional, Tuple
33

44
from opentrons.types import Location, NozzleMapInterface
55
from opentrons.protocols.api_support import instrument
@@ -13,6 +13,7 @@
1313

1414
from .disposal_locations import TrashBin, WasteChute
1515
from .labware import Labware, Well
16+
from .core.common import WellCore
1617
from . import validation
1718

1819

@@ -24,13 +25,14 @@ class TransferInfo:
2425
tip_policy: TransferTipPolicyV2
2526
tip_racks: List[Labware]
2627
trash_location: Union[Location, TrashBin, WasteChute]
28+
last_tip_location: Optional[Tuple[Location, WellCore]]
2729

2830

2931
def verify_and_normalize_transfer_args(
3032
source: Union[Well, Sequence[Well], Sequence[Sequence[Well]]],
3133
dest: Union[Well, Sequence[Well], Sequence[Sequence[Well]], TrashBin, WasteChute],
3234
tip_policy: TransferTipPolicyV2Type,
33-
last_tip_picked_up_from: Optional[Well],
35+
last_tip_well: Optional[Well],
3436
tip_racks: List[Labware],
3537
nozzle_map: NozzleMapInterface,
3638
group_wells_for_multi_channel: bool,
@@ -59,14 +61,14 @@ def verify_and_normalize_transfer_args(
5961

6062
valid_new_tip = validation.ensure_new_tip_policy(tip_policy)
6163
if valid_new_tip == TransferTipPolicyV2.NEVER:
62-
if last_tip_picked_up_from is None:
64+
if last_tip_well is None:
6365
raise RuntimeError(
6466
"Pipette has no tip attached to perform transfer."
6567
" Either do a pick_up_tip beforehand or specify a new_tip parameter"
6668
" of 'once' or 'always'."
6769
)
6870
else:
69-
valid_tip_racks = [last_tip_picked_up_from.parent]
71+
valid_tip_racks = [last_tip_well.parent]
7072
else:
7173
valid_tip_racks = tip_racks
7274
if current_volume != 0:
@@ -86,12 +88,22 @@ def verify_and_normalize_transfer_args(
8688
trash_location=_trash_location
8789
)
8890

91+
if last_tip_well is not None:
92+
parent_tip_rack = last_tip_well.parent
93+
last_tip_location = (
94+
Location(last_tip_well.top().point, parent_tip_rack),
95+
last_tip_well._core,
96+
)
97+
else:
98+
last_tip_location = None
99+
89100
return TransferInfo(
90101
source=flat_sources_list,
91102
dest=flat_dests_list if not isinstance(dest, (TrashBin, WasteChute)) else dest,
92103
tip_policy=valid_new_tip,
93104
tip_racks=valid_tip_racks,
94105
trash_location=valid_trash_location,
106+
last_tip_location=last_tip_location,
95107
)
96108

97109

0 commit comments

Comments
 (0)