opentrons 8.3.0a2__py2.py3-none-any.whl → 8.3.0a5__py2.py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- opentrons/hardware_control/api.py +5 -1
- opentrons/hardware_control/ot3api.py +18 -8
- opentrons/hardware_control/protocols/liquid_handler.py +4 -1
- opentrons/hardware_control/protocols/motion_controller.py +1 -0
- opentrons/legacy_commands/commands.py +37 -0
- opentrons/legacy_commands/types.py +39 -0
- opentrons/protocol_api/core/engine/instrument.py +109 -0
- opentrons/protocol_api/core/instrument.py +27 -0
- opentrons/protocol_api/core/legacy/legacy_instrument_core.py +50 -0
- opentrons/protocol_api/core/legacy_simulator/legacy_instrument_core.py +24 -0
- opentrons/protocol_api/instrument_context.py +141 -0
- opentrons/protocol_api/labware.py +17 -2
- opentrons/protocol_engine/commands/__init__.py +40 -0
- opentrons/protocol_engine/commands/absorbance_reader/close_lid.py +1 -1
- opentrons/protocol_engine/commands/absorbance_reader/initialize.py +1 -1
- opentrons/protocol_engine/commands/absorbance_reader/open_lid.py +1 -1
- opentrons/protocol_engine/commands/absorbance_reader/read.py +4 -1
- opentrons/protocol_engine/commands/air_gap_in_place.py +1 -1
- opentrons/protocol_engine/commands/command_unions.py +39 -0
- opentrons/protocol_engine/commands/evotip_dispense.py +156 -0
- opentrons/protocol_engine/commands/evotip_seal_pipette.py +331 -0
- opentrons/protocol_engine/commands/evotip_unseal_pipette.py +160 -0
- opentrons/protocol_engine/commands/get_next_tip.py +1 -1
- opentrons/protocol_engine/commands/liquid_probe.py +63 -12
- opentrons/protocol_engine/commands/load_labware.py +5 -0
- opentrons/protocol_engine/commands/load_lid.py +1 -1
- opentrons/protocol_engine/commands/load_lid_stack.py +1 -1
- opentrons/protocol_engine/commands/load_liquid_class.py +1 -1
- opentrons/protocol_engine/commands/move_labware.py +9 -0
- opentrons/protocol_engine/commands/robot/close_gripper_jaw.py +1 -1
- opentrons/protocol_engine/commands/robot/move_axes_relative.py +1 -1
- opentrons/protocol_engine/commands/robot/move_axes_to.py +1 -1
- opentrons/protocol_engine/commands/robot/move_to.py +1 -1
- opentrons/protocol_engine/commands/robot/open_gripper_jaw.py +1 -1
- opentrons/protocol_engine/commands/thermocycler/run_extended_profile.py +1 -1
- opentrons/protocol_engine/commands/unsafe/unsafe_blow_out_in_place.py +1 -1
- opentrons/protocol_engine/commands/unsafe/unsafe_drop_tip_in_place.py +1 -1
- opentrons/protocol_engine/commands/unsafe/unsafe_engage_axes.py +1 -1
- opentrons/protocol_engine/commands/unsafe/unsafe_place_labware.py +1 -1
- opentrons/protocol_engine/commands/unsafe/unsafe_ungrip_labware.py +1 -1
- opentrons/protocol_engine/commands/unsafe/update_position_estimators.py +1 -1
- opentrons/protocol_engine/errors/__init__.py +4 -0
- opentrons/protocol_engine/errors/exceptions.py +26 -0
- opentrons/protocol_engine/execution/gantry_mover.py +5 -0
- opentrons/protocol_engine/execution/hardware_stopper.py +7 -7
- opentrons/protocol_engine/execution/tip_handler.py +30 -9
- opentrons/protocol_engine/resources/labware_validation.py +13 -0
- opentrons/protocol_engine/state/commands.py +6 -2
- opentrons/protocol_engine/state/frustum_helpers.py +13 -44
- opentrons/protocol_engine/state/labware.py +13 -1
- opentrons/protocol_engine/state/pipettes.py +5 -0
- {opentrons-8.3.0a2.dist-info → opentrons-8.3.0a5.dist-info}/METADATA +4 -4
- {opentrons-8.3.0a2.dist-info → opentrons-8.3.0a5.dist-info}/RECORD +57 -54
- {opentrons-8.3.0a2.dist-info → opentrons-8.3.0a5.dist-info}/LICENSE +0 -0
- {opentrons-8.3.0a2.dist-info → opentrons-8.3.0a5.dist-info}/WHEEL +0 -0
- {opentrons-8.3.0a2.dist-info → opentrons-8.3.0a5.dist-info}/entry_points.txt +0 -0
- {opentrons-8.3.0a2.dist-info → opentrons-8.3.0a5.dist-info}/top_level.txt +0 -0
|
@@ -65,7 +65,7 @@ class HardwareStopper:
|
|
|
65
65
|
axes=[MotorAxis.X, MotorAxis.Y, MotorAxis.LEFT_Z, MotorAxis.RIGHT_Z]
|
|
66
66
|
)
|
|
67
67
|
|
|
68
|
-
async def
|
|
68
|
+
async def _try_to_drop_tips(self) -> None:
|
|
69
69
|
"""Drop currently attached tip, if any, into trash after a run cancel."""
|
|
70
70
|
attached_tips = self._state_store.pipettes.get_all_attached_tips()
|
|
71
71
|
|
|
@@ -134,9 +134,9 @@ class HardwareStopper:
|
|
|
134
134
|
PostRunHardwareState.HOME_THEN_DISENGAGE,
|
|
135
135
|
)
|
|
136
136
|
if drop_tips_after_run:
|
|
137
|
-
await self.
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
137
|
+
await self._try_to_drop_tips()
|
|
138
|
+
|
|
139
|
+
await self._hardware_api.stop(home_after=False)
|
|
140
|
+
|
|
141
|
+
if home_after_stop:
|
|
142
|
+
await self._home_everything_except_plungers()
|
|
@@ -62,6 +62,7 @@ class TipHandler(TypingProtocol):
|
|
|
62
62
|
pipette_id: str,
|
|
63
63
|
labware_id: str,
|
|
64
64
|
well_name: str,
|
|
65
|
+
do_not_ignore_tip_presence: bool = True,
|
|
65
66
|
) -> TipGeometry:
|
|
66
67
|
"""Pick up the named tip.
|
|
67
68
|
|
|
@@ -75,7 +76,13 @@ class TipHandler(TypingProtocol):
|
|
|
75
76
|
"""
|
|
76
77
|
...
|
|
77
78
|
|
|
78
|
-
async def drop_tip(
|
|
79
|
+
async def drop_tip(
|
|
80
|
+
self,
|
|
81
|
+
pipette_id: str,
|
|
82
|
+
home_after: Optional[bool],
|
|
83
|
+
do_not_ignore_tip_presence: bool = True,
|
|
84
|
+
ignore_plunger: bool = False,
|
|
85
|
+
) -> None:
|
|
79
86
|
"""Drop the attached tip into the current location.
|
|
80
87
|
|
|
81
88
|
Pipette should be in place over the destination prior to calling this method.
|
|
@@ -230,6 +237,7 @@ class HardwareTipHandler(TipHandler):
|
|
|
230
237
|
pipette_id: str,
|
|
231
238
|
labware_id: str,
|
|
232
239
|
well_name: str,
|
|
240
|
+
do_not_ignore_tip_presence: bool = True,
|
|
233
241
|
) -> TipGeometry:
|
|
234
242
|
"""See documentation on abstract base class."""
|
|
235
243
|
hw_mount = self._get_hw_mount(pipette_id)
|
|
@@ -253,10 +261,11 @@ class HardwareTipHandler(TipHandler):
|
|
|
253
261
|
await self._hardware_api.tip_pickup_moves(
|
|
254
262
|
mount=hw_mount, presses=None, increment=None
|
|
255
263
|
)
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
264
|
+
if do_not_ignore_tip_presence:
|
|
265
|
+
try:
|
|
266
|
+
await self.verify_tip_presence(pipette_id, TipPresenceStatus.PRESENT)
|
|
267
|
+
except TipNotAttachedError as e:
|
|
268
|
+
raise PickUpTipTipNotAttachedError(tip_geometry=tip_geometry) from e
|
|
260
269
|
|
|
261
270
|
self.cache_tip(pipette_id, tip_geometry)
|
|
262
271
|
|
|
@@ -264,7 +273,13 @@ class HardwareTipHandler(TipHandler):
|
|
|
264
273
|
|
|
265
274
|
return tip_geometry
|
|
266
275
|
|
|
267
|
-
async def drop_tip(
|
|
276
|
+
async def drop_tip(
|
|
277
|
+
self,
|
|
278
|
+
pipette_id: str,
|
|
279
|
+
home_after: Optional[bool],
|
|
280
|
+
do_not_ignore_tip_presence: bool = True,
|
|
281
|
+
ignore_plunger: bool = False,
|
|
282
|
+
) -> None:
|
|
268
283
|
"""See documentation on abstract base class."""
|
|
269
284
|
hw_mount = self._get_hw_mount(pipette_id)
|
|
270
285
|
|
|
@@ -275,10 +290,13 @@ class HardwareTipHandler(TipHandler):
|
|
|
275
290
|
else:
|
|
276
291
|
kwargs = {}
|
|
277
292
|
|
|
278
|
-
await self._hardware_api.tip_drop_moves(
|
|
293
|
+
await self._hardware_api.tip_drop_moves(
|
|
294
|
+
mount=hw_mount, ignore_plunger=ignore_plunger, **kwargs
|
|
295
|
+
)
|
|
279
296
|
|
|
280
|
-
|
|
281
|
-
|
|
297
|
+
if do_not_ignore_tip_presence:
|
|
298
|
+
# Allow TipNotAttachedError to propagate.
|
|
299
|
+
await self.verify_tip_presence(pipette_id, TipPresenceStatus.ABSENT)
|
|
282
300
|
|
|
283
301
|
self.remove_tip(pipette_id)
|
|
284
302
|
|
|
@@ -383,6 +401,7 @@ class VirtualTipHandler(TipHandler):
|
|
|
383
401
|
pipette_id: str,
|
|
384
402
|
labware_id: str,
|
|
385
403
|
well_name: str,
|
|
404
|
+
do_not_ignore_tip_presence: bool = True,
|
|
386
405
|
) -> TipGeometry:
|
|
387
406
|
"""Pick up a tip at the current location using a virtual pipette.
|
|
388
407
|
|
|
@@ -424,6 +443,8 @@ class VirtualTipHandler(TipHandler):
|
|
|
424
443
|
self,
|
|
425
444
|
pipette_id: str,
|
|
426
445
|
home_after: Optional[bool],
|
|
446
|
+
do_not_ignore_tip_presence: bool = True,
|
|
447
|
+
ignore_plunger: bool = False,
|
|
427
448
|
) -> None:
|
|
428
449
|
"""Pick up a tip at the current location using a virtual pipette.
|
|
429
450
|
|
|
@@ -14,6 +14,11 @@ def is_absorbance_reader_lid(load_name: str) -> bool:
|
|
|
14
14
|
return load_name == "opentrons_flex_lid_absorbance_plate_reader_module"
|
|
15
15
|
|
|
16
16
|
|
|
17
|
+
def is_evotips(load_name: str) -> bool:
|
|
18
|
+
"""Check if a labware is an evotips tiprack."""
|
|
19
|
+
return load_name == "evotips_opentrons_96_labware"
|
|
20
|
+
|
|
21
|
+
|
|
17
22
|
def validate_definition_is_labware(definition: LabwareDefinition) -> bool:
|
|
18
23
|
"""Validate that one of the definition's allowed roles is `labware`.
|
|
19
24
|
|
|
@@ -44,6 +49,14 @@ def validate_labware_can_be_stacked(
|
|
|
44
49
|
return below_labware_load_name in top_labware_definition.stackingOffsetWithLabware
|
|
45
50
|
|
|
46
51
|
|
|
52
|
+
def validate_labware_can_be_ondeck(definition: LabwareDefinition) -> bool:
|
|
53
|
+
"""Validate that the labware being loaded onto the deck can sit in a slot."""
|
|
54
|
+
return (
|
|
55
|
+
definition.parameters.quirks is None
|
|
56
|
+
or "stackingOnly" not in definition.parameters.quirks
|
|
57
|
+
)
|
|
58
|
+
|
|
59
|
+
|
|
47
60
|
def validate_gripper_compatible(definition: LabwareDefinition) -> bool:
|
|
48
61
|
"""Validate that the labware definition does not have a quirk disallowing movement with gripper."""
|
|
49
62
|
return (
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
"""Protocol engine commands sub-state."""
|
|
2
|
+
|
|
2
3
|
from __future__ import annotations
|
|
3
4
|
|
|
4
5
|
import enum
|
|
@@ -304,7 +305,7 @@ class CommandStore(HasState[CommandState], HandlesActions):
|
|
|
304
305
|
# TODO(mc, 2021-06-22): mypy has trouble with this automatic
|
|
305
306
|
# request > command mapping, figure out how to type precisely
|
|
306
307
|
# (or wait for a future mypy version that can figure it out).
|
|
307
|
-
queued_command = action.request._CommandCls.model_construct(
|
|
308
|
+
queued_command = action.request._CommandCls.model_construct(
|
|
308
309
|
id=action.command_id,
|
|
309
310
|
key=(
|
|
310
311
|
action.request.key
|
|
@@ -506,7 +507,10 @@ class CommandStore(HasState[CommandState], HandlesActions):
|
|
|
506
507
|
pass
|
|
507
508
|
case QueueStatus.RUNNING | QueueStatus.PAUSED:
|
|
508
509
|
self._state.queue_status = QueueStatus.PAUSED
|
|
509
|
-
case
|
|
510
|
+
case (
|
|
511
|
+
QueueStatus.AWAITING_RECOVERY
|
|
512
|
+
| QueueStatus.AWAITING_RECOVERY_PAUSED
|
|
513
|
+
):
|
|
510
514
|
self._state.queue_status = QueueStatus.AWAITING_RECOVERY_PAUSED
|
|
511
515
|
elif action.door_state == DoorState.CLOSED:
|
|
512
516
|
self._state.is_door_blocking = False
|
|
@@ -82,19 +82,12 @@ def _circular_frustum_polynomial_roots(
|
|
|
82
82
|
|
|
83
83
|
|
|
84
84
|
def _volume_from_height_circular(
|
|
85
|
-
target_height: float,
|
|
86
|
-
total_frustum_height: float,
|
|
87
|
-
bottom_radius: float,
|
|
88
|
-
top_radius: float,
|
|
85
|
+
target_height: float, segment: ConicalFrustum
|
|
89
86
|
) -> float:
|
|
90
87
|
"""Find the volume given a height within a circular frustum."""
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
total_frustum_height=total_frustum_height,
|
|
95
|
-
)
|
|
96
|
-
volume = a * (target_height**3) + b * (target_height**2) + c * target_height
|
|
97
|
-
return volume
|
|
88
|
+
heights = segment.height_to_volume_table.keys()
|
|
89
|
+
best_fit_height = min(heights, key=lambda x: abs(x - target_height))
|
|
90
|
+
return segment.height_to_volume_table[best_fit_height]
|
|
98
91
|
|
|
99
92
|
|
|
100
93
|
def _volume_from_height_rectangular(
|
|
@@ -138,26 +131,12 @@ def _volume_from_height_squared_cone(
|
|
|
138
131
|
|
|
139
132
|
|
|
140
133
|
def _height_from_volume_circular(
|
|
141
|
-
|
|
142
|
-
total_frustum_height: float,
|
|
143
|
-
bottom_radius: float,
|
|
144
|
-
top_radius: float,
|
|
134
|
+
target_volume: float, segment: ConicalFrustum
|
|
145
135
|
) -> float:
|
|
146
|
-
"""Find the height given a volume within a
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
total_frustum_height=total_frustum_height,
|
|
151
|
-
)
|
|
152
|
-
d = volume * -1
|
|
153
|
-
x_intercept_roots = (a, b, c, d)
|
|
154
|
-
|
|
155
|
-
height_from_volume_roots = roots(x_intercept_roots)
|
|
156
|
-
height = _reject_unacceptable_heights(
|
|
157
|
-
potential_heights=list(height_from_volume_roots),
|
|
158
|
-
max_height=total_frustum_height,
|
|
159
|
-
)
|
|
160
|
-
return height
|
|
136
|
+
"""Find the height given a volume within a squared cone segment."""
|
|
137
|
+
volumes = segment.volume_to_height_table.keys()
|
|
138
|
+
best_fit_volume = min(volumes, key=lambda x: abs(x - target_volume))
|
|
139
|
+
return segment.volume_to_height_table[best_fit_volume]
|
|
161
140
|
|
|
162
141
|
|
|
163
142
|
def _height_from_volume_rectangular(
|
|
@@ -243,9 +222,7 @@ def _get_segment_capacity(segment: WellSegment) -> float:
|
|
|
243
222
|
return (
|
|
244
223
|
_volume_from_height_circular(
|
|
245
224
|
target_height=section_height,
|
|
246
|
-
|
|
247
|
-
bottom_radius=(segment.bottomDiameter / 2),
|
|
248
|
-
top_radius=(segment.topDiameter / 2),
|
|
225
|
+
segment=segment,
|
|
249
226
|
)
|
|
250
227
|
* segment.count
|
|
251
228
|
)
|
|
@@ -293,12 +270,7 @@ def height_at_volume_within_section(
|
|
|
293
270
|
radius_of_curvature=section.radiusOfCurvature,
|
|
294
271
|
)
|
|
295
272
|
case ConicalFrustum():
|
|
296
|
-
return _height_from_volume_circular(
|
|
297
|
-
volume=target_volume_relative,
|
|
298
|
-
top_radius=(section.bottomDiameter / 2),
|
|
299
|
-
bottom_radius=(section.topDiameter / 2),
|
|
300
|
-
total_frustum_height=section_height,
|
|
301
|
-
)
|
|
273
|
+
return _height_from_volume_circular(target_volume_relative, section)
|
|
302
274
|
case CuboidalFrustum():
|
|
303
275
|
return _height_from_volume_rectangular(
|
|
304
276
|
volume=target_volume_relative,
|
|
@@ -334,10 +306,7 @@ def volume_at_height_within_section(
|
|
|
334
306
|
case ConicalFrustum():
|
|
335
307
|
return (
|
|
336
308
|
_volume_from_height_circular(
|
|
337
|
-
target_height=target_height_relative,
|
|
338
|
-
total_frustum_height=section_height,
|
|
339
|
-
bottom_radius=(section.bottomDiameter / 2),
|
|
340
|
-
top_radius=(section.topDiameter / 2),
|
|
309
|
+
target_height=target_height_relative, segment=section
|
|
341
310
|
)
|
|
342
311
|
* section.count
|
|
343
312
|
)
|
|
@@ -427,7 +396,7 @@ def _find_height_in_partial_frustum(
|
|
|
427
396
|
if (
|
|
428
397
|
bottom_section_volume
|
|
429
398
|
< target_volume
|
|
430
|
-
|
|
399
|
+
<= (bottom_section_volume + section_volume)
|
|
431
400
|
):
|
|
432
401
|
relative_target_volume = target_volume - bottom_section_volume
|
|
433
402
|
section_height = section.topHeight - section.bottomHeight
|
|
@@ -524,7 +524,6 @@ class LabwareView:
|
|
|
524
524
|
will be used.
|
|
525
525
|
"""
|
|
526
526
|
definition = self.get_definition(labware_id)
|
|
527
|
-
|
|
528
527
|
if well_name is None:
|
|
529
528
|
well_name = definition.ordering[0][0]
|
|
530
529
|
|
|
@@ -887,6 +886,19 @@ class LabwareView:
|
|
|
887
886
|
f"Labware {labware.loadName} is already present at {location}."
|
|
888
887
|
)
|
|
889
888
|
|
|
889
|
+
def raise_if_labware_cannot_be_ondeck(
|
|
890
|
+
self,
|
|
891
|
+
location: LabwareLocation,
|
|
892
|
+
labware_definition: LabwareDefinition,
|
|
893
|
+
) -> None:
|
|
894
|
+
"""Raise an error if the labware cannot be in the specified location."""
|
|
895
|
+
if isinstance(
|
|
896
|
+
location, (DeckSlotLocation, AddressableAreaLocation)
|
|
897
|
+
) and not labware_validation.validate_labware_can_be_ondeck(labware_definition):
|
|
898
|
+
raise errors.LabwareCannotSitOnDeckError(
|
|
899
|
+
f"{labware_definition.parameters.loadName} cannot sit in a slot by itself."
|
|
900
|
+
)
|
|
901
|
+
|
|
890
902
|
def raise_if_labware_incompatible_with_plate_reader(
|
|
891
903
|
self,
|
|
892
904
|
labware_definition: LabwareDefinition,
|
|
@@ -331,6 +331,11 @@ class PipetteStore(HasState[PipetteState], HandlesActions):
|
|
|
331
331
|
def _update_aspirated(
|
|
332
332
|
self, update: update_types.PipetteAspiratedFluidUpdate
|
|
333
333
|
) -> None:
|
|
334
|
+
if self._state.pipette_contents_by_id[update.pipette_id] is None:
|
|
335
|
+
self._state.pipette_contents_by_id[
|
|
336
|
+
update.pipette_id
|
|
337
|
+
] = fluid_stack.FluidStack()
|
|
338
|
+
|
|
334
339
|
self._fluid_stack_log_if_empty(update.pipette_id).add_fluid(update.fluid)
|
|
335
340
|
|
|
336
341
|
def _update_ejected(self, update: update_types.PipetteEjectedFluidUpdate) -> None:
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: opentrons
|
|
3
|
-
Version: 8.3.
|
|
3
|
+
Version: 8.3.0a5
|
|
4
4
|
Summary: The Opentrons API is a simple framework designed to make writing automated biology lab protocols easy.
|
|
5
5
|
Author: Opentrons
|
|
6
6
|
Author-email: engineering@opentrons.com
|
|
@@ -21,7 +21,7 @@ Classifier: Programming Language :: Python :: 3.10
|
|
|
21
21
|
Classifier: Topic :: Scientific/Engineering
|
|
22
22
|
Requires-Python: >=3.10
|
|
23
23
|
License-File: ../LICENSE
|
|
24
|
-
Requires-Dist: opentrons-shared-data (==8.3.
|
|
24
|
+
Requires-Dist: opentrons-shared-data (==8.3.0a5)
|
|
25
25
|
Requires-Dist: aionotify (==0.3.1)
|
|
26
26
|
Requires-Dist: anyio (<4.0.0,>=3.6.1)
|
|
27
27
|
Requires-Dist: jsonschema (<4.18.0,>=3.0.1)
|
|
@@ -35,9 +35,9 @@ Requires-Dist: pyusb (==1.2.1)
|
|
|
35
35
|
Requires-Dist: packaging (>=21.0)
|
|
36
36
|
Requires-Dist: importlib-metadata (>=1.0) ; python_version < "3.8"
|
|
37
37
|
Provides-Extra: flex-hardware
|
|
38
|
-
Requires-Dist: opentrons-hardware[flex] (==8.3.
|
|
38
|
+
Requires-Dist: opentrons-hardware[flex] (==8.3.0a5) ; extra == 'flex-hardware'
|
|
39
39
|
Provides-Extra: ot2-hardware
|
|
40
|
-
Requires-Dist: opentrons-hardware (==8.3.
|
|
40
|
+
Requires-Dist: opentrons-hardware (==8.3.0a5) ; extra == 'ot2-hardware'
|
|
41
41
|
|
|
42
42
|
.. _Full API Documentation: http://docs.opentrons.com
|
|
43
43
|
|
|
@@ -96,7 +96,7 @@ opentrons/drivers/thermocycler/simulator.py,sha256=2yVZVar5z1o6K5nRE-IQS9KFXJ3dg
|
|
|
96
96
|
opentrons/hardware_control/__init__.py,sha256=5t_YhGQ1uw4iB6QYtNz7qV8AcwLjaWtjmMP5B4YekEE,2353
|
|
97
97
|
opentrons/hardware_control/__main__.py,sha256=DnlYdphZKLHiLCeXmnMDer6CclhberfTk_wCAbiy9Gc,2585
|
|
98
98
|
opentrons/hardware_control/adapters.py,sha256=mm-gumoaF7CFrP0ad6W4xafbJRq6RaOD0GffSibWR-Q,3888
|
|
99
|
-
opentrons/hardware_control/api.py,sha256=
|
|
99
|
+
opentrons/hardware_control/api.py,sha256=btjNm4GmPT2JYc-xasJ7-GFe6UFsxd0SLvSVz6xfhd8,50897
|
|
100
100
|
opentrons/hardware_control/constants.py,sha256=Ku-XABo7AN9JQ0tef8oPk-JlUuhQQLeP9S0h7kx5GEA,227
|
|
101
101
|
opentrons/hardware_control/dev_types.py,sha256=GFOe3U3Xi_SpcGm5xuMTJobLeJC0ncmRbONjRAiJLsg,3446
|
|
102
102
|
opentrons/hardware_control/errors.py,sha256=NMF5_AvX22ENTHPpUlElgF-0aeaxEhYXnOq2lfIzuiM,1433
|
|
@@ -105,7 +105,7 @@ opentrons/hardware_control/module_control.py,sha256=u0RpbOgr5pV5exgKg3qvNQdwdVuy
|
|
|
105
105
|
opentrons/hardware_control/motion_utilities.py,sha256=rD0sP_hfrGbsafKQvK7qp7_hn4u7h_RVBAT3wk-dESQ,9482
|
|
106
106
|
opentrons/hardware_control/nozzle_manager.py,sha256=dqD8XlYsOu0PFFyxvmsMypBB52Gi6x-VIwhykV7JhuU,16868
|
|
107
107
|
opentrons/hardware_control/ot3_calibration.py,sha256=NkR2EoNq47dkHEXAdF6PI9atuPTxW0X51TFnRrMq5JU,44723
|
|
108
|
-
opentrons/hardware_control/ot3api.py,sha256=
|
|
108
|
+
opentrons/hardware_control/ot3api.py,sha256=k9nizxiHBs_B93izfYDQbQP9GyPvIwXTlaOPAqMGKsU,119580
|
|
109
109
|
opentrons/hardware_control/pause_manager.py,sha256=wmNmraimE2yZQVqCxX_rtQHUWRzpzyQEaym9fLMgyww,888
|
|
110
110
|
opentrons/hardware_control/poller.py,sha256=rx6Q-UxbUIj3ek69IlYenFh7BFuasszRO-GzzhRPuHQ,3885
|
|
111
111
|
opentrons/hardware_control/robot_calibration.py,sha256=ilszGjZPspKiEk8MQPaHm2B-ljeisAYflKl8UyQ_D0U,7155
|
|
@@ -191,9 +191,9 @@ opentrons/hardware_control/protocols/gripper_controller.py,sha256=SUFoSDu3Qri4en
|
|
|
191
191
|
opentrons/hardware_control/protocols/hardware_manager.py,sha256=S9BSJ0XsnU5A9nFLMDZfmiizx3T41WhU_91VYj4bUVE,1629
|
|
192
192
|
opentrons/hardware_control/protocols/identifiable.py,sha256=YmhScb4Tr4mxVObL1i7pI-EouTMAmV-2oqKbovhdnrE,575
|
|
193
193
|
opentrons/hardware_control/protocols/instrument_configurer.py,sha256=5zUCAchtoJ6QPFqcGRb7FOsnt2nxjxlRJdt18IidKqQ,7729
|
|
194
|
-
opentrons/hardware_control/protocols/liquid_handler.py,sha256=
|
|
194
|
+
opentrons/hardware_control/protocols/liquid_handler.py,sha256=vgeDOaPD-wNP3mJ69j0ATT9saMs4Hj7MQVAOFI-LduM,8403
|
|
195
195
|
opentrons/hardware_control/protocols/module_provider.py,sha256=QDKCWqrW-6IeI91IICBTJClK0C__mgq3A0-M3Wa9ee8,487
|
|
196
|
-
opentrons/hardware_control/protocols/motion_controller.py,sha256=
|
|
196
|
+
opentrons/hardware_control/protocols/motion_controller.py,sha256=mWUHVDqju9gcMDU9adk6UzueZ9i-x2nU5hmcd_fHHyk,9737
|
|
197
197
|
opentrons/hardware_control/protocols/position_estimator.py,sha256=BrqK5AJn9747c4LX0ZWBJWgWHjyX977CHBI7WVvO-9Q,1922
|
|
198
198
|
opentrons/hardware_control/protocols/simulatable.py,sha256=ED3VHoO8q1h9FhBDv31g5N7YdTKB5hj7lp7BZcCaL7o,247
|
|
199
199
|
opentrons/hardware_control/protocols/stoppable.py,sha256=ukI1WrJzXwsJm5ty2trhMqGJr0sT13ttlv914YMAUt8,226
|
|
@@ -203,12 +203,12 @@ opentrons/hardware_control/scripts/gripper_control.py,sha256=aUt9MAo6DXDhY4BfJRe
|
|
|
203
203
|
opentrons/hardware_control/scripts/repl.py,sha256=RojtHjYV6sa6O4SeNEgs5SvnAK0imQK_XqoLQTKlzWU,5982
|
|
204
204
|
opentrons/hardware_control/scripts/tc_control.py,sha256=V6hOzoRXL3xqIUEz8Raldd45aO2JgN5m5Hr08c1G8Ko,2741
|
|
205
205
|
opentrons/legacy_commands/__init__.py,sha256=erkaz7hc2iHsTtjpFDWrR1V5n47it3U1qxD2zL9CkuE,63
|
|
206
|
-
opentrons/legacy_commands/commands.py,sha256=
|
|
206
|
+
opentrons/legacy_commands/commands.py,sha256=e2xYTc3lNqDD0DKPDsfORkzRj_zKpptKE5oXCLABd4o,10063
|
|
207
207
|
opentrons/legacy_commands/helpers.py,sha256=dRtOWQdeRnDn23yBHdPQfahug5OFwuUzdkT7qRj1gRM,2675
|
|
208
208
|
opentrons/legacy_commands/module_commands.py,sha256=EO2YtrfzCCaGPYjGXWfk6jjSHiEqk1E6D8Ef2qDi1qI,7769
|
|
209
209
|
opentrons/legacy_commands/protocol_commands.py,sha256=nPYBrm7j9co83IGWjzae2GOVkEZdu58pXQv3eOdpLzg,1383
|
|
210
210
|
opentrons/legacy_commands/publisher.py,sha256=n7hT9n4zahM3N2LNIAEs7hqs5RbHHie_tev2M8pke4Y,5441
|
|
211
|
-
opentrons/legacy_commands/types.py,sha256=
|
|
211
|
+
opentrons/legacy_commands/types.py,sha256=miO8RDnnyxN61IC1CGuhNslYqbWsTbAONXY_wvnZuFk,24429
|
|
212
212
|
opentrons/motion_planning/__init__.py,sha256=Gma3SLAvKbL7QuhVGtL9zFx5vlk_7YBF0TjYZQSiv9s,755
|
|
213
213
|
opentrons/motion_planning/adjacent_slots_getters.py,sha256=z7HkfC8ymAdGHdFq-sC_1_cERX_v29b9x4HKtJ6gp9I,5390
|
|
214
214
|
opentrons/motion_planning/deck_conflict.py,sha256=gJG0dCQOvdEP-rr9EbVSGJCQPDXgvd04Jn4crGEbYLo,12604
|
|
@@ -226,8 +226,8 @@ opentrons/protocol_api/config.py,sha256=r9lyvXjagTX_g3q5FGURPpcz2IA9sSF7Oa_1mKx-
|
|
|
226
226
|
opentrons/protocol_api/create_protocol_context.py,sha256=wwsZje0L__oDnu1Yrihau320_f-ASloR9eL1QCtkOh8,7612
|
|
227
227
|
opentrons/protocol_api/deck.py,sha256=94vFceg1SC1bAGd7TvC1ZpYwnJR-VlzurEZ6jkacYeg,8910
|
|
228
228
|
opentrons/protocol_api/disposal_locations.py,sha256=NRiSGmDR0LnbyEkWSOM-o64uR2fUoB1NWJG7Y7SsJSs,7920
|
|
229
|
-
opentrons/protocol_api/instrument_context.py,sha256=
|
|
230
|
-
opentrons/protocol_api/labware.py,sha256=
|
|
229
|
+
opentrons/protocol_api/instrument_context.py,sha256=m6J8W5J9jy-gHU5f5A_hoFtAt1v3iP7Q0uKKgL8bEWo,107284
|
|
230
|
+
opentrons/protocol_api/labware.py,sha256=mgnk1SiiN4CnBwBUolE4C4gRaBZqAoLylsJANPCyWHU,59241
|
|
231
231
|
opentrons/protocol_api/module_contexts.py,sha256=jU3IMPE5L78-KuZRfaPwB6xO0kiTup65IteqMPFOFR0,42262
|
|
232
232
|
opentrons/protocol_api/module_validation_and_errors.py,sha256=XL_m72P8rcvGO2fynY7UzXLcpGuI6X4s0V6Xf735Iyc,1464
|
|
233
233
|
opentrons/protocol_api/protocol_context.py,sha256=Y9jCj1t3wzawarPyOVcp-8qUmEnIhpyVSaHujVfT9Nk,60601
|
|
@@ -236,7 +236,7 @@ opentrons/protocol_api/validation.py,sha256=DBwHNSI8c6konumlahq7B-Q-4Ipjs2yfGuza
|
|
|
236
236
|
opentrons/protocol_api/core/__init__.py,sha256=-g74o8OtBB0LmmOvwkRvPgrHt7fF7T8FRHDj-x_-Onk,736
|
|
237
237
|
opentrons/protocol_api/core/common.py,sha256=AR-V6nsK6jnw9olO_sTRO0rNqOg5FPQOoNbLx7m_OZ8,1088
|
|
238
238
|
opentrons/protocol_api/core/core_map.py,sha256=gq3CIYPxuPvozf8yj8FprqBfs3e4ZJGQ6s0ViPbwV08,1757
|
|
239
|
-
opentrons/protocol_api/core/instrument.py,sha256=
|
|
239
|
+
opentrons/protocol_api/core/instrument.py,sha256=zipwHqXBSJwTBwAteyC3T7cJFY7n-5IKObToUzBySm8,11500
|
|
240
240
|
opentrons/protocol_api/core/labware.py,sha256=EtDbwtlN-ZXH6W2aXE4FnbXl-Lxpifj1niF_pqTGoNM,4222
|
|
241
241
|
opentrons/protocol_api/core/module.py,sha256=p02IstVzfSqTpwbfiCYkPv_xpeb78Hi__PQKJPePxNs,12548
|
|
242
242
|
opentrons/protocol_api/core/protocol.py,sha256=WdbSFxVr_04Kef1DWbdZJ4zMPq0BvuM7uJyXs7f6cU8,8096
|
|
@@ -246,7 +246,7 @@ opentrons/protocol_api/core/well_grid.py,sha256=BU28DKaBgEU_JdZ6pEzrwNxmuh6TkO4z
|
|
|
246
246
|
opentrons/protocol_api/core/engine/__init__.py,sha256=B_5T7zgkWDb1mXPg4NbT-wBkQaK-WVokMMnJRNu7xiM,582
|
|
247
247
|
opentrons/protocol_api/core/engine/deck_conflict.py,sha256=0viwOidafVd0XhS8C7V72i68-ZYzHfDUNeqGozTA1G8,12012
|
|
248
248
|
opentrons/protocol_api/core/engine/exceptions.py,sha256=aZgNrmYEeuPZm21nX_KZYtvyjv5h_zPjxxgPkEV7_bw,725
|
|
249
|
-
opentrons/protocol_api/core/engine/instrument.py,sha256=
|
|
249
|
+
opentrons/protocol_api/core/engine/instrument.py,sha256=WDNVbNAfOre01xYttuWA1VLAbEyHcq9n6xoX15ll8BU,42842
|
|
250
250
|
opentrons/protocol_api/core/engine/labware.py,sha256=RLlBnFPrnbud5vCSDmjCosw-bDMq0Xijf7BURfvLsK0,8276
|
|
251
251
|
opentrons/protocol_api/core/engine/load_labware_params.py,sha256=cwbmGyYp5ZOyANtEm6KKwT_n8fnYc5RysBst9nRh7Ls,4607
|
|
252
252
|
opentrons/protocol_api/core/engine/module_core.py,sha256=TWqMqRgekBISMOEtlveDByJQI6JfSu-rvYOnqQbTgGY,26923
|
|
@@ -260,7 +260,7 @@ opentrons/protocol_api/core/engine/well.py,sha256=I63FOBGaEW061HYF1kMbvQhyBbWEu5
|
|
|
260
260
|
opentrons/protocol_api/core/legacy/__init__.py,sha256=_9jCJNKG3SlS_vljVu8HHkZmtLf4F-f-JHALLF5d5go,401
|
|
261
261
|
opentrons/protocol_api/core/legacy/deck.py,sha256=qHqcGo-Kdkl9L1aOE0pwrm9tsAnwkXbt4rIOr_VEP-s,13955
|
|
262
262
|
opentrons/protocol_api/core/legacy/labware_offset_provider.py,sha256=uNNeHecIz_A9u19QalpVKF7pxloHqLg27EFcD9dbYtc,3735
|
|
263
|
-
opentrons/protocol_api/core/legacy/legacy_instrument_core.py,sha256=
|
|
263
|
+
opentrons/protocol_api/core/legacy/legacy_instrument_core.py,sha256=bX43ZnvQM9a1DjhLXGdHyo1boGBrvxbPNmasPXd7ZGw,25060
|
|
264
264
|
opentrons/protocol_api/core/legacy/legacy_labware_core.py,sha256=eAnwAHwmX76-1ZRWMmiDABS1fmPRvuTTsx4fI-V5uJU,8295
|
|
265
265
|
opentrons/protocol_api/core/legacy/legacy_module_core.py,sha256=tUhj88NKBMjCmCg6wjh1e2HX4d5hxjh8ZeJiYXaTaGY,23111
|
|
266
266
|
opentrons/protocol_api/core/legacy/legacy_protocol_core.py,sha256=1f-niL47WAZItbFJ9IQubGUfKPRYFScBelzh6H5stwc,22429
|
|
@@ -270,7 +270,7 @@ opentrons/protocol_api/core/legacy/load_info.py,sha256=j-fzoUKwvXNS_5CQsE43XI5YO
|
|
|
270
270
|
opentrons/protocol_api/core/legacy/module_geometry.py,sha256=wbWeHomppdCDmp_nKrnNWbnRAapOamkhFMnaoY7ShTw,20886
|
|
271
271
|
opentrons/protocol_api/core/legacy/well_geometry.py,sha256=dCsDIpMbaIpb0AW_VrnSIJdRYi8ombyMpaA7n1X46Jg,4643
|
|
272
272
|
opentrons/protocol_api/core/legacy_simulator/__init__.py,sha256=m9bLHGDJ6LSYC2WPm8tpOuu0zWSOPIrlybQgjRQBw9k,647
|
|
273
|
-
opentrons/protocol_api/core/legacy_simulator/legacy_instrument_core.py,sha256=
|
|
273
|
+
opentrons/protocol_api/core/legacy_simulator/legacy_instrument_core.py,sha256=l8CnI9dZSi8jIMSme7bcQx4g_HU43_jyFDn40MMwI_c,20772
|
|
274
274
|
opentrons/protocol_api/core/legacy_simulator/legacy_protocol_core.py,sha256=28HrrHzeUfnGKXpZqQ-VM8WbPiadqVhKj2S9y33q6Lo,2910
|
|
275
275
|
opentrons/protocol_engine/__init__.py,sha256=XJbITFkal0o_5izTZ4IMnNUabhDZw4puRolaI7drAkA,3361
|
|
276
276
|
opentrons/protocol_engine/create_protocol_engine.py,sha256=tfDIsC7_JKlRiCXPB_8tuxRsssU6o0ViRmWbGPtX9QA,7582
|
|
@@ -288,14 +288,14 @@ opentrons/protocol_engine/actions/get_state_update.py,sha256=tsnfhZDFHWER6y6UV57
|
|
|
288
288
|
opentrons/protocol_engine/clients/__init__.py,sha256=ILmfVL5SOkWzRpL2XXh0Q0MizOj7E2i-WObVuIsWAQE,161
|
|
289
289
|
opentrons/protocol_engine/clients/sync_client.py,sha256=hOwDYOo5-UrmpvZXbDi8-JMDKtO0fKfHiPo6mcGYNHM,5591
|
|
290
290
|
opentrons/protocol_engine/clients/transports.py,sha256=QejmtG5TjgOLUXpNhOzor_q-7MFI1qNfsguwkzY6Rxc,7177
|
|
291
|
-
opentrons/protocol_engine/commands/__init__.py,sha256=
|
|
292
|
-
opentrons/protocol_engine/commands/air_gap_in_place.py,sha256=
|
|
291
|
+
opentrons/protocol_engine/commands/__init__.py,sha256=xvEbKtPOtL--FrUwjpBP-s2an8-HQJQtakMnXpnuWKE,16945
|
|
292
|
+
opentrons/protocol_engine/commands/air_gap_in_place.py,sha256=0pHGdUitN2si1Evj-2uTeC9qUYcUANs8igzrfUSDi7s,5270
|
|
293
293
|
opentrons/protocol_engine/commands/aspirate.py,sha256=gWZaI0TL_CMU-OvcjEur2K6Fz2_5s2Am_AN8Iohp_c8,7793
|
|
294
294
|
opentrons/protocol_engine/commands/aspirate_in_place.py,sha256=1oAq0QYSJqeTcPAcxvZ-Uwy-4pri0Gf-3I-HBN_hpIk,6416
|
|
295
295
|
opentrons/protocol_engine/commands/blow_out.py,sha256=5HyPqRFTDEIulrCvNUBGCgdpYsIoh0fCcsIP-NHpe3I,4216
|
|
296
296
|
opentrons/protocol_engine/commands/blow_out_in_place.py,sha256=C9tu4m5QnlKXew38g_gGLlCqJWH4I8o6Zd2qBgzuWg4,3264
|
|
297
297
|
opentrons/protocol_engine/commands/command.py,sha256=1hWH_KWg_WDL4R4VXe1ZH2vO6pYt5SA-ZpuPPF1oV5E,10149
|
|
298
|
-
opentrons/protocol_engine/commands/command_unions.py,sha256=
|
|
298
|
+
opentrons/protocol_engine/commands/command_unions.py,sha256=qNGcHlHEqYVoIBhJR5nloK5Om2nIlaVQIuoF0a4d4M0,24059
|
|
299
299
|
opentrons/protocol_engine/commands/comment.py,sha256=-6o07x-MZ6-IvZas84OVFmqF0gAbbKWJZIlGVYThCqM,1638
|
|
300
300
|
opentrons/protocol_engine/commands/configure_for_volume.py,sha256=bEjRuGDQW2ks1YU3ktnIdy6GgtLAtgdCUm_NhKuWWc8,3487
|
|
301
301
|
opentrons/protocol_engine/commands/configure_nozzle_layout.py,sha256=M_s5Ee03a7sSnbvkibDHzEqZwkca0y8J7F60EnSEq7A,3849
|
|
@@ -304,20 +304,23 @@ opentrons/protocol_engine/commands/dispense.py,sha256=wbDBDpc80c14AudywUoFTQYWPL
|
|
|
304
304
|
opentrons/protocol_engine/commands/dispense_in_place.py,sha256=h2ASkZW-PlrJViN7ZNBDaaklIeF5n3sZkIAdrPcTqgA,6147
|
|
305
305
|
opentrons/protocol_engine/commands/drop_tip.py,sha256=2L4tGsDFh8xQwro5FKiZ6onVgo5FRpGVe708vvhsDs4,6900
|
|
306
306
|
opentrons/protocol_engine/commands/drop_tip_in_place.py,sha256=pVC0Yh_LkRTuTjzmFJufBWDlgRyMT8sJBl3TLAZFSUc,4497
|
|
307
|
+
opentrons/protocol_engine/commands/evotip_dispense.py,sha256=RKnItIOHJHTa0J_SioyWI2s4DuRrbnakA6lGp6UrPXI,4847
|
|
308
|
+
opentrons/protocol_engine/commands/evotip_seal_pipette.py,sha256=N2vCLnH9TQ9AuRfikHk7StJ_LU1wQFd8U3ppP-0BcD4,11474
|
|
309
|
+
opentrons/protocol_engine/commands/evotip_unseal_pipette.py,sha256=JBhG8Kbu5PFrDa5b_Q8n-O582oq55ZgPn65kUAZwh0A,5363
|
|
307
310
|
opentrons/protocol_engine/commands/generate_command_schema.py,sha256=OzjMuHNJ7uCyjA7XBrQ18-j0L48W2kLPDFJ6FBM5aUo,1184
|
|
308
|
-
opentrons/protocol_engine/commands/get_next_tip.py,sha256=
|
|
311
|
+
opentrons/protocol_engine/commands/get_next_tip.py,sha256=JS5hN_UScAiUIo_j7KT2cR1GDj3hDvaNPTSovWbgTHo,4828
|
|
309
312
|
opentrons/protocol_engine/commands/get_tip_presence.py,sha256=vK80XN5qCzK44SOSxH3QJkIj9dPmvri4J4FZJeP1X08,2543
|
|
310
313
|
opentrons/protocol_engine/commands/hash_command_params.py,sha256=obWy4TbVH97SyhNqrSD6iP1wgZ20JoaH1rilZCjXxIs,1530
|
|
311
314
|
opentrons/protocol_engine/commands/home.py,sha256=g77hewv-puMxEHFy0PPnl8-Nkbb7K-2qk36HbWG_Nik,3326
|
|
312
|
-
opentrons/protocol_engine/commands/liquid_probe.py,sha256=
|
|
313
|
-
opentrons/protocol_engine/commands/load_labware.py,sha256=
|
|
314
|
-
opentrons/protocol_engine/commands/load_lid.py,sha256=
|
|
315
|
-
opentrons/protocol_engine/commands/load_lid_stack.py,sha256=
|
|
315
|
+
opentrons/protocol_engine/commands/liquid_probe.py,sha256=pC_wbfOm8kEtm345TutvzMDffLB41myHA2goEJMvskg,15286
|
|
316
|
+
opentrons/protocol_engine/commands/load_labware.py,sha256=hE1JFK1UvSkcgfWSIMZ15lXUZ2xJEbzWWpZrKoTD0DU,8822
|
|
317
|
+
opentrons/protocol_engine/commands/load_lid.py,sha256=AduXlkH8NDnnfE4egahKZ5vKFtlLPAhzfhK8Eigx2s4,5118
|
|
318
|
+
opentrons/protocol_engine/commands/load_lid_stack.py,sha256=ia554JXnoBmU1M5IkVovQ92WB-xCKSnsL0geFbHBZgo,6896
|
|
316
319
|
opentrons/protocol_engine/commands/load_liquid.py,sha256=KSS3Ps4PDdSrqHTStbioQP7P1xVzParlOH_AXLy2B1A,3417
|
|
317
|
-
opentrons/protocol_engine/commands/load_liquid_class.py,sha256=
|
|
320
|
+
opentrons/protocol_engine/commands/load_liquid_class.py,sha256=NTm7kyvlZNSItWj3RTnQg7JkyPcPNvWhysUo3s4sMg4,4944
|
|
318
321
|
opentrons/protocol_engine/commands/load_module.py,sha256=pQhBhiRIGsGFpxhAaCgMbZZvxiwMwGNpJpsJegDkIKA,8383
|
|
319
322
|
opentrons/protocol_engine/commands/load_pipette.py,sha256=4Pgu8IF_chAHtLB4KJszSUY6dsI92u8WQfBU2HzuHAM,5879
|
|
320
|
-
opentrons/protocol_engine/commands/move_labware.py,sha256=
|
|
323
|
+
opentrons/protocol_engine/commands/move_labware.py,sha256=Iucon7NzRk2bHagVH4kSs8dMUJkkVvZCLiDyaZ7VX1Y,16325
|
|
321
324
|
opentrons/protocol_engine/commands/move_relative.py,sha256=EczlVmwUvQc-bPpcXMW-fmH8PpPxdLxAVGdrWddiHvc,3057
|
|
322
325
|
opentrons/protocol_engine/commands/move_to_addressable_area.py,sha256=JtHftnSjbLpTJUrVP44D2kTUr8Bcq8Le4p1IziNFp3c,6453
|
|
323
326
|
opentrons/protocol_engine/commands/move_to_addressable_area_for_drop_tip.py,sha256=aVbxdVwCqhZxOn9ByAseqgaOl5TUd42bcyBMbuQu-8Q,7479
|
|
@@ -337,10 +340,10 @@ opentrons/protocol_engine/commands/verify_tip_presence.py,sha256=UUwUWdlryfh-mU8
|
|
|
337
340
|
opentrons/protocol_engine/commands/wait_for_duration.py,sha256=G-Lmo97BoqW8KA-cZDGQkqUmEE7lrLdw5j-2_LBF5gg,2396
|
|
338
341
|
opentrons/protocol_engine/commands/wait_for_resume.py,sha256=IE_I7fqoKBrlBumaCp5Tm5ihyA6i5VAzG25xdVdRnVw,2372
|
|
339
342
|
opentrons/protocol_engine/commands/absorbance_reader/__init__.py,sha256=umS98LlkBEAToRCvxLpr4k43tRPPTfkYu-81-bLy5DU,1251
|
|
340
|
-
opentrons/protocol_engine/commands/absorbance_reader/close_lid.py,sha256=
|
|
341
|
-
opentrons/protocol_engine/commands/absorbance_reader/initialize.py,sha256=
|
|
342
|
-
opentrons/protocol_engine/commands/absorbance_reader/open_lid.py,sha256
|
|
343
|
-
opentrons/protocol_engine/commands/absorbance_reader/read.py,sha256=
|
|
343
|
+
opentrons/protocol_engine/commands/absorbance_reader/close_lid.py,sha256=Z3tdTzr8dXXG_LBrFMa6XCJ0pgiyGMxS-DirCOEPOeY,5481
|
|
344
|
+
opentrons/protocol_engine/commands/absorbance_reader/initialize.py,sha256=XzUyZ7tEUw_TNqrzzU4GorV6rY7w16WzRgpk-Ylkpuk,5878
|
|
345
|
+
opentrons/protocol_engine/commands/absorbance_reader/open_lid.py,sha256=u8iFbWgWtptcCCCczKoVROAEVAiRdPHvM9SSWyED5Rg,5473
|
|
346
|
+
opentrons/protocol_engine/commands/absorbance_reader/read.py,sha256=5nTs1z1_Wuslx6Rm1XYYm_zZs1fVQii_FUSaVxB6eZY,9333
|
|
344
347
|
opentrons/protocol_engine/commands/calibration/__init__.py,sha256=JjNnULLBM3j8VtpfHOvH51em9jVLR_ezyrUJUWqxuYI,1611
|
|
345
348
|
opentrons/protocol_engine/commands/calibration/calibrate_gripper.py,sha256=b9NM4Qj8w1z1Hh6iiH11JDklvUEF-MkMP5FfEz5091g,5831
|
|
346
349
|
opentrons/protocol_engine/commands/calibration/calibrate_module.py,sha256=0PfDsnk97mQjKeRz9iULTcwnx4A4iMh-xGLNrKICQzE,4179
|
|
@@ -358,12 +361,12 @@ opentrons/protocol_engine/commands/magnetic_module/__init__.py,sha256=Y9RCovlGHc
|
|
|
358
361
|
opentrons/protocol_engine/commands/magnetic_module/disengage.py,sha256=yS4vXR_ajLpuk8TDGtTcnL5TvkJG7KRf1G113EyPQdk,3181
|
|
359
362
|
opentrons/protocol_engine/commands/magnetic_module/engage.py,sha256=O9lDRSfcvWD5MZVpeL_heq1vk4e3C1htDYduI3OKVCk,4169
|
|
360
363
|
opentrons/protocol_engine/commands/robot/__init__.py,sha256=Qnt1wwq5-dveHoJlIUqQvYmc-DyDMgmxFys7vDI6Mow,1583
|
|
361
|
-
opentrons/protocol_engine/commands/robot/close_gripper_jaw.py,sha256=
|
|
364
|
+
opentrons/protocol_engine/commands/robot/close_gripper_jaw.py,sha256=7RcAX5ayZle81A9HSMJQ1nipOPALvGcJOmlmp1RlKiI,2508
|
|
362
365
|
opentrons/protocol_engine/commands/robot/common.py,sha256=CFJl5rwMwYsBr2_3-RGmJ4GJS6tF2j7MSrXkLV9HQjA,589
|
|
363
|
-
opentrons/protocol_engine/commands/robot/move_axes_relative.py,sha256=
|
|
364
|
-
opentrons/protocol_engine/commands/robot/move_axes_to.py,sha256=
|
|
365
|
-
opentrons/protocol_engine/commands/robot/move_to.py,sha256=
|
|
366
|
-
opentrons/protocol_engine/commands/robot/open_gripper_jaw.py,sha256=
|
|
366
|
+
opentrons/protocol_engine/commands/robot/move_axes_relative.py,sha256=lV6O-UE3-RveCKIx6iyc8_6RhBXyixBgw9ehQkWkxho,3180
|
|
367
|
+
opentrons/protocol_engine/commands/robot/move_axes_to.py,sha256=furx9WyRwauk3i5tKF7SmmI9Au44Co8YWH0ItTjTaW4,3236
|
|
368
|
+
opentrons/protocol_engine/commands/robot/move_to.py,sha256=Wzj7Wlk-fVgM1hrpI-vV4zYWIzzRCKfOwHoDN_OjNZ0,2726
|
|
369
|
+
opentrons/protocol_engine/commands/robot/open_gripper_jaw.py,sha256=go0FHP2wBej0lVs1x3XhKTrdxg567l8AXNeBaw-5gsA,2106
|
|
367
370
|
opentrons/protocol_engine/commands/temperature_module/__init__.py,sha256=DKzhgXNdCHop_U4ogP8AMcAVq90pBQX0MVZjkiDH-Ds,1276
|
|
368
371
|
opentrons/protocol_engine/commands/temperature_module/deactivate.py,sha256=IIEIKle1Ac_qPB-hUqvWu9qPlpNIHaj9ncpRuxz_hbU,2892
|
|
369
372
|
opentrons/protocol_engine/commands/temperature_module/set_target_temperature.py,sha256=A0WaSxbyrU5uMV-eRHz38QOpFtD2yNRYEY89jKBya1k,3462
|
|
@@ -373,30 +376,30 @@ opentrons/protocol_engine/commands/thermocycler/close_lid.py,sha256=K83l4SkqVgZn
|
|
|
373
376
|
opentrons/protocol_engine/commands/thermocycler/deactivate_block.py,sha256=7mp7HR8tBRqTUmH0326kL8tNe1O6Zcrhyw_kR8QHOfU,2680
|
|
374
377
|
opentrons/protocol_engine/commands/thermocycler/deactivate_lid.py,sha256=I1nKZpmauO-6h5o3baZtr7NubDmRg2EHbkWAr7PyPPk,2612
|
|
375
378
|
opentrons/protocol_engine/commands/thermocycler/open_lid.py,sha256=Aw29xFLL92xBV107gwmEfcdl1VpkLWQq5PDAzqHl34I,2900
|
|
376
|
-
opentrons/protocol_engine/commands/thermocycler/run_extended_profile.py,sha256=
|
|
379
|
+
opentrons/protocol_engine/commands/thermocycler/run_extended_profile.py,sha256=C1bH-jmd66X8CusTsO0zGcUWE_Mcnx2J4joRifviz7w,5769
|
|
377
380
|
opentrons/protocol_engine/commands/thermocycler/run_profile.py,sha256=l3A1cIJJsTMMYJrHHUa38UEN-SGPipxWaiojZkO8JSM,4169
|
|
378
381
|
opentrons/protocol_engine/commands/thermocycler/set_target_block_temperature.py,sha256=V6BmoNKBuWDOlFmF9sTJCCz-QZKOQH7fXKzFgyt9H4I,4756
|
|
379
382
|
opentrons/protocol_engine/commands/thermocycler/set_target_lid_temperature.py,sha256=3qsG2WBatgD53vdsFR-GZU2VXwydmD-r_0J2Uj8mM1M,3384
|
|
380
383
|
opentrons/protocol_engine/commands/thermocycler/wait_for_block_temperature.py,sha256=Wc8NQBIOcSl5nwsts6KlUfJXHcvXnSF1td_olzqJGec,3101
|
|
381
384
|
opentrons/protocol_engine/commands/thermocycler/wait_for_lid_temperature.py,sha256=KZHt1dUWPrWUk_d0hl0TiAQhfaVdc_YZcxyMcZ0FLq8,2971
|
|
382
385
|
opentrons/protocol_engine/commands/unsafe/__init__.py,sha256=lx3TFW_78XK0bdtLFuGXrvUGaeYrSFj5pHucEL-IYHI,2499
|
|
383
|
-
opentrons/protocol_engine/commands/unsafe/unsafe_blow_out_in_place.py,sha256=
|
|
384
|
-
opentrons/protocol_engine/commands/unsafe/unsafe_drop_tip_in_place.py,sha256=
|
|
385
|
-
opentrons/protocol_engine/commands/unsafe/unsafe_engage_axes.py,sha256=
|
|
386
|
-
opentrons/protocol_engine/commands/unsafe/unsafe_place_labware.py,sha256=
|
|
387
|
-
opentrons/protocol_engine/commands/unsafe/unsafe_ungrip_labware.py,sha256=
|
|
388
|
-
opentrons/protocol_engine/commands/unsafe/update_position_estimators.py,sha256=
|
|
389
|
-
opentrons/protocol_engine/errors/__init__.py,sha256=
|
|
386
|
+
opentrons/protocol_engine/commands/unsafe/unsafe_blow_out_in_place.py,sha256=UkwMnxSY-r-r5AoRecJs06MU1AupTshy4QaDWdi04zE,3248
|
|
387
|
+
opentrons/protocol_engine/commands/unsafe/unsafe_drop_tip_in_place.py,sha256=F-JEMbZYpSPPIT41SIXDUj_9eiVNtp91_yRZDdT7az0,3898
|
|
388
|
+
opentrons/protocol_engine/commands/unsafe/unsafe_engage_axes.py,sha256=Ze5hLslsXdd7l3lF0GKOPoWCdTmqTTGIjiTQyNhL-W4,2502
|
|
389
|
+
opentrons/protocol_engine/commands/unsafe/unsafe_place_labware.py,sha256=mcIPhcQvVCUL_wfb2-JPrCvIFTXMVD93VeJb4H1LmhM,7873
|
|
390
|
+
opentrons/protocol_engine/commands/unsafe/unsafe_ungrip_labware.py,sha256=9Sjx92JZhi-tRY1P77M--jJp4JzIGESXUakIpstESwQ,2461
|
|
391
|
+
opentrons/protocol_engine/commands/unsafe/update_position_estimators.py,sha256=xLe3u3rYu1eOvWxDtA2xsvNy7H6TVtljqo-78nOtFLI,2994
|
|
392
|
+
opentrons/protocol_engine/errors/__init__.py,sha256=5IfgGt6Xf2OJ-GdT3a9ykL16q_-kaHteyVAaJhlylVc,5650
|
|
390
393
|
opentrons/protocol_engine/errors/error_occurrence.py,sha256=ODyXHxVO4iXDxpcLaC3uO7ocTOOGPqWwcC1uaiytv0c,7846
|
|
391
|
-
opentrons/protocol_engine/errors/exceptions.py,sha256=
|
|
394
|
+
opentrons/protocol_engine/errors/exceptions.py,sha256=WhsIoHKs-B3hEYV5ZW-YIdL8vOQElYs6eDHfSLH5Oic,43331
|
|
392
395
|
opentrons/protocol_engine/execution/__init__.py,sha256=X8qTYYOc1v84JIDM1xYpIo3VG_BPnsrfl2jm9UUQGwQ,1384
|
|
393
396
|
opentrons/protocol_engine/execution/command_executor.py,sha256=SxE6W9_8HgiCLiPu6Q8hJr2HKsO1Ta-V1PdmFDxa7rQ,8208
|
|
394
397
|
opentrons/protocol_engine/execution/create_queue_worker.py,sha256=6hMuOqbqwfMn63idsrAgro0NJZoyX4VVH7AV3le2EWM,3372
|
|
395
398
|
opentrons/protocol_engine/execution/door_watcher.py,sha256=WxPdM3ZKL69cI9-UAzCNNmiYk8vdcxd6Grki-heNLg4,4577
|
|
396
399
|
opentrons/protocol_engine/execution/equipment.py,sha256=Cf17VX8itFMX85KDgESepgihj2Xu_T1_GelNgPunlXk,26143
|
|
397
400
|
opentrons/protocol_engine/execution/error_recovery_hardware_state_synchronizer.py,sha256=tLhMbYOetXSSWF8B6wCL4ksxvs71IGqJD6syMbB9A1E,4352
|
|
398
|
-
opentrons/protocol_engine/execution/gantry_mover.py,sha256=
|
|
399
|
-
opentrons/protocol_engine/execution/hardware_stopper.py,sha256=
|
|
401
|
+
opentrons/protocol_engine/execution/gantry_mover.py,sha256=LFTPmzuGRuP6IspgXxIEyJIXV0tHkc4UWDDjWFCClYo,26477
|
|
402
|
+
opentrons/protocol_engine/execution/hardware_stopper.py,sha256=wlIl7U3gvnOiCvwrixHDcrfqXy3l4GFp0G232nASL8g,5857
|
|
400
403
|
opentrons/protocol_engine/execution/heater_shaker_movement_flagger.py,sha256=BSFLzSSeELAYZCrCUfJZx5DdlrwU06Ur92TYd0T-hzM,9084
|
|
401
404
|
opentrons/protocol_engine/execution/labware_movement.py,sha256=-qnohEyIt9AxsFjhbg_IZiO_1ZwlDqmuWhWirkeo9wc,12269
|
|
402
405
|
opentrons/protocol_engine/execution/movement.py,sha256=AWcj7xlrOh3QrvoaH0sZO63yrPCEc7VE8hKfJNxxtP0,12527
|
|
@@ -407,7 +410,7 @@ opentrons/protocol_engine/execution/run_control.py,sha256=ksvI2zkguC4G3lR3HJgAF8
|
|
|
407
410
|
opentrons/protocol_engine/execution/status_bar.py,sha256=tR7CHS_y1ARQxcSKDO4YFU2cqVQhePzalmzsyH8b23A,970
|
|
408
411
|
opentrons/protocol_engine/execution/thermocycler_movement_flagger.py,sha256=Ouljgjtm7-sCXwDcpfbir84dAZh5y89DNiuKedYimyg,6790
|
|
409
412
|
opentrons/protocol_engine/execution/thermocycler_plate_lifter.py,sha256=j33nYV8rkeAYUOau8wFIyJVWjWkjyildleYHCysez-o,3375
|
|
410
|
-
opentrons/protocol_engine/execution/tip_handler.py,sha256=
|
|
413
|
+
opentrons/protocol_engine/execution/tip_handler.py,sha256=mn8RakB9LAJMy8hIYB4o-nqd2DoIpJjZj2rab1a7O1c,18153
|
|
411
414
|
opentrons/protocol_engine/notes/__init__.py,sha256=G0bIQswsov7MrJU0ArrOaWcOTxJU9BCUmNR3LRoNg-Q,311
|
|
412
415
|
opentrons/protocol_engine/notes/notes.py,sha256=A5C9xHExlS9GAK7o_mYiKJgibBm6EEgHQ4PJor0IET0,1993
|
|
413
416
|
opentrons/protocol_engine/resources/__init__.py,sha256=yvGFYpmLoxHYQff_IwiaEH9viZUfal5D5K91UjYLwwY,805
|
|
@@ -416,7 +419,7 @@ opentrons/protocol_engine/resources/deck_data_provider.py,sha256=iw4oKv6-dSxF4hZ
|
|
|
416
419
|
opentrons/protocol_engine/resources/file_provider.py,sha256=6btMCDN7NsyFlV7Icy5vDO7xsgbmtkeAM_KCuQ-GvRo,5903
|
|
417
420
|
opentrons/protocol_engine/resources/fixture_validation.py,sha256=WBGWFTmBwLPjOBFeqJYxnaSRHvo4pwxvdhT4XUW_FMY,1857
|
|
418
421
|
opentrons/protocol_engine/resources/labware_data_provider.py,sha256=Ks-_iUNZQWcmZWp5aMGVQc0bVmCOp9bwte7ADycwKHs,2726
|
|
419
|
-
opentrons/protocol_engine/resources/labware_validation.py,sha256=
|
|
422
|
+
opentrons/protocol_engine/resources/labware_validation.py,sha256=Q6Zii0ju_s4zhrrKEn9KWUHeNGKMaKFiO_XCAXxdEuM,2568
|
|
420
423
|
opentrons/protocol_engine/resources/model_utils.py,sha256=C3OHUi-OtuFUm3dS5rApSU3EJ0clnaCZEyBku5sTjzA,941
|
|
421
424
|
opentrons/protocol_engine/resources/module_data_provider.py,sha256=DaTv3QqrlpKEXlIfBCSgXwlyOrV2YqWcxlHD0MGKWWw,1558
|
|
422
425
|
opentrons/protocol_engine/resources/ot3_validation.py,sha256=0x81JoZBXcj2xUVcOF7v5ETc8y5T_sbs-jTPxuSnooE,744
|
|
@@ -427,18 +430,18 @@ opentrons/protocol_engine/state/_move_types.py,sha256=STLssWsXMY92F_asAQrixv10A6
|
|
|
427
430
|
opentrons/protocol_engine/state/_well_math.py,sha256=HWVy4ezd-tRWIgAXtXTLXbzZiPec3mOzQFtNZQoo_d4,9705
|
|
428
431
|
opentrons/protocol_engine/state/addressable_areas.py,sha256=XXfdwjiBQAidDPhs_dQs-QaqYZYQe8BXhMf5u6h-eY0,26758
|
|
429
432
|
opentrons/protocol_engine/state/command_history.py,sha256=ZwP7DD8AMohoo1iDZgnpV50_RZvlSrYpEFzcc2kKXyA,11574
|
|
430
|
-
opentrons/protocol_engine/state/commands.py,sha256=
|
|
433
|
+
opentrons/protocol_engine/state/commands.py,sha256=aoON_C5DbiIEPxOGATvwCsSG9eHsFe-_f798WZPh0NI,45371
|
|
431
434
|
opentrons/protocol_engine/state/config.py,sha256=7jSGxC6Vqj1eA8fqZ2I3zjlxVXg8pxvcBYMztRIx9Mg,1515
|
|
432
435
|
opentrons/protocol_engine/state/files.py,sha256=w8xxxg8HY0RqKKEGSfHWfrjV54Gb02O3dwtisJ-9j8E,1753
|
|
433
436
|
opentrons/protocol_engine/state/fluid_stack.py,sha256=uwkf0qYk1UX5iU52xmk-e3yLPK8OG-TtMCcBqrkVFpM,5932
|
|
434
|
-
opentrons/protocol_engine/state/frustum_helpers.py,sha256=
|
|
437
|
+
opentrons/protocol_engine/state/frustum_helpers.py,sha256=RmhSGPPuHS026K9XF_VkmCTZIcAe4FNtpDaKVtd35HE,16249
|
|
435
438
|
opentrons/protocol_engine/state/geometry.py,sha256=q9iPDS7k9ZLof_HBDFm0VLXQ97ZZEub7C9zXPgmO7kg,70127
|
|
436
|
-
opentrons/protocol_engine/state/labware.py,sha256=
|
|
439
|
+
opentrons/protocol_engine/state/labware.py,sha256=Vq1Usz0Y0-NJhD-m7SeMy0ES-Jmnig1zn-jmIY57HAc,48308
|
|
437
440
|
opentrons/protocol_engine/state/liquid_classes.py,sha256=u_z75UYdiFAKG0yB3mr1il4T3qaS0Sotq8sL7KLODP8,2990
|
|
438
441
|
opentrons/protocol_engine/state/liquids.py,sha256=NoesktcQdJUjIVmet1uqqJPf-rzbo4SGemXwQC295W0,2338
|
|
439
442
|
opentrons/protocol_engine/state/modules.py,sha256=HwKqul6utVlwUlQuJFVNMvyfpnwJ8fyCCelby9NE0Yg,53229
|
|
440
443
|
opentrons/protocol_engine/state/motion.py,sha256=pWt28-vBaO6dz_rtvoliUsGDvls_ML6sRfDOwmD0F7g,15086
|
|
441
|
-
opentrons/protocol_engine/state/pipettes.py,sha256=
|
|
444
|
+
opentrons/protocol_engine/state/pipettes.py,sha256=dDak7RGVTUIJxhdOd02qMZrI1ZQX_gdYyI5m6xsbYQ0,34674
|
|
442
445
|
opentrons/protocol_engine/state/state.py,sha256=oPqJgE3kze7uZJ37xvhU1XfULk8VLCQgnxlHK606gXg,15462
|
|
443
446
|
opentrons/protocol_engine/state/state_summary.py,sha256=tu-xJYKbKzeLk9Z0RwSaz0tUs6blYuxSA5V2n7_zSGk,1180
|
|
444
447
|
opentrons/protocol_engine/state/tips.py,sha256=nXLmOsXx2pCQmA5H5HskTnU4IMcKAc6u2LbI2BCQaWc,19396
|
|
@@ -539,9 +542,9 @@ opentrons/util/helpers.py,sha256=3hr801bWGbxEcOFAS7f-iOhmnUhoK5qahbB8SIvaCfY,165
|
|
|
539
542
|
opentrons/util/linal.py,sha256=IlKAP9HkNBBgULeSf4YVwSKHdx9jnCjSr7nvDvlRALg,5753
|
|
540
543
|
opentrons/util/logging_config.py,sha256=UHoY7dyD6WMYNP5GKowbMxUSG_hlXeI5TaIwksR5u-U,6887
|
|
541
544
|
opentrons/util/performance_helpers.py,sha256=ew7H8XD20iS6-2TJAzbQeyzStZkkE6PzHt_Adx3wbZQ,5172
|
|
542
|
-
opentrons-8.3.
|
|
543
|
-
opentrons-8.3.
|
|
544
|
-
opentrons-8.3.
|
|
545
|
-
opentrons-8.3.
|
|
546
|
-
opentrons-8.3.
|
|
547
|
-
opentrons-8.3.
|
|
545
|
+
opentrons-8.3.0a5.dist-info/LICENSE,sha256=z8d0m5b2O9McPEK1xHG_dWgUBT6EfBDz6wA0F7xSPTA,11358
|
|
546
|
+
opentrons-8.3.0a5.dist-info/METADATA,sha256=075Ncjn22SffDSSPBIimlfK2Nk0MBEYlui7F7G91CTQ,5084
|
|
547
|
+
opentrons-8.3.0a5.dist-info/WHEEL,sha256=qUzzGenXXuJTzyjFah76kDVqDvnk-YDzY00svnrl84w,109
|
|
548
|
+
opentrons-8.3.0a5.dist-info/entry_points.txt,sha256=fTa6eGCYkvOtv0ov-KVE8LLGetgb35LQLF9x85OWPVw,106
|
|
549
|
+
opentrons-8.3.0a5.dist-info/top_level.txt,sha256=wk6whpbMZdBQpcK0Fg0YVfUGrAgVOFON7oQAhOMGMW8,10
|
|
550
|
+
opentrons-8.3.0a5.dist-info/RECORD,,
|