opentrons 8.6.0a11__py3-none-any.whl → 8.7.0a0__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.
Files changed (27) hide show
  1. opentrons/_version.py +2 -2
  2. opentrons/cli/analyze.py +58 -2
  3. opentrons/hardware_control/backends/ot3controller.py +22 -13
  4. opentrons/hardware_control/backends/ot3simulator.py +1 -1
  5. opentrons/hardware_control/ot3api.py +1 -1
  6. opentrons/protocol_api/core/engine/_default_liquid_class_versions.py +54 -0
  7. opentrons/protocol_api/core/engine/protocol.py +11 -2
  8. opentrons/protocol_api/core/engine/transfer_components_executor.py +36 -20
  9. opentrons/protocol_api/core/legacy/legacy_protocol_core.py +1 -1
  10. opentrons/protocol_api/core/protocol.py +1 -1
  11. opentrons/protocol_api/labware.py +36 -2
  12. opentrons/protocol_api/module_contexts.py +100 -13
  13. opentrons/protocol_api/protocol_context.py +162 -12
  14. opentrons/protocol_api/validation.py +4 -0
  15. opentrons/protocol_engine/commands/command_unions.py +2 -0
  16. opentrons/protocol_engine/commands/flex_stacker/common.py +13 -0
  17. opentrons/protocol_engine/commands/flex_stacker/store.py +20 -2
  18. opentrons/protocol_engine/execution/labware_movement.py +5 -11
  19. opentrons/protocol_engine/state/labware.py +66 -0
  20. opentrons/protocol_engine/types/__init__.py +2 -0
  21. opentrons/protocol_engine/types/labware.py +9 -0
  22. opentrons/protocols/api_support/definitions.py +1 -1
  23. {opentrons-8.6.0a11.dist-info → opentrons-8.7.0a0.dist-info}/METADATA +4 -4
  24. {opentrons-8.6.0a11.dist-info → opentrons-8.7.0a0.dist-info}/RECORD +27 -26
  25. {opentrons-8.6.0a11.dist-info → opentrons-8.7.0a0.dist-info}/WHEEL +0 -0
  26. {opentrons-8.6.0a11.dist-info → opentrons-8.7.0a0.dist-info}/entry_points.txt +0 -0
  27. {opentrons-8.6.0a11.dist-info → opentrons-8.7.0a0.dist-info}/licenses/LICENSE +0 -0
@@ -46,6 +46,7 @@ from ..types import (
46
46
  AddressableAreaLocation,
47
47
  NonStackedLocation,
48
48
  Dimensions,
49
+ GripSpecs,
49
50
  LabwareOffset,
50
51
  LabwareOffsetVector,
51
52
  LabwareOffsetLocationSequence,
@@ -1430,3 +1431,68 @@ class LabwareView:
1430
1431
  ):
1431
1432
  return Dimensions(0, 0, 0)
1432
1433
  return Dimensions(max_x - min_x, max_y - min_y, max_z)
1434
+
1435
+ def _gripper_uncertainty_narrower(
1436
+ self, labware_bbox: Dimensions, well_bbox: Dimensions, target_grip_width: float
1437
+ ) -> float:
1438
+ """Most narrower the gripper can be than the target while still likely gripping successfully.
1439
+
1440
+ This number can't just be the 0, because that is not going to be accurate if the labware is
1441
+ skirted - the dimensions are a full bounding box including the skirt, and the labware is
1442
+ narrower than that at the point where it is gripped. The general heuristic is that we can't
1443
+ get to the wells; but some labware don't have wells, so we need alternate values.
1444
+
1445
+ The number will be interpreted relative to the target width, which is (for now) the labware
1446
+ outer bounding box.
1447
+
1448
+ TODO: This should be a number looked up from the definition.
1449
+ """
1450
+ if well_bbox.y == 0:
1451
+ # This labware has no wells; use a fixed minimum
1452
+ return 5
1453
+ if well_bbox.y > labware_bbox.y:
1454
+ # This labware has a very odd definition with wells outside its dimensions.
1455
+ # Return the smaller value.
1456
+ return 0
1457
+ # An ok heuristic for successful grip is if we don't get all the way to the wells.
1458
+ return target_grip_width - well_bbox.y
1459
+
1460
+ def _gripper_uncertainty_wider(
1461
+ self, labware_bbox: Dimensions, well_bbox: Dimensions, target_grip_width: float
1462
+ ) -> float:
1463
+ """Most wider the gripper can be than the target while still likely gripping successfully.
1464
+
1465
+ This can be a lot closer to 0, since the bounding box of the labware will certainly be the
1466
+ widest point (if it's defined without error), but since there might be error in the
1467
+ definition we allow some slop.
1468
+
1469
+ The number will be interpreted relative to the target width, which is (for now) the labware
1470
+ outer bounding box.
1471
+
1472
+ TODO: This should be a number looked up from the definition.
1473
+ """
1474
+ # This will be 0 unless the wells are wider than the labware
1475
+ return max(well_bbox.y - target_grip_width, 0)
1476
+
1477
+ def get_gripper_width_specs(
1478
+ self, labware_definition: LabwareDefinition
1479
+ ) -> GripSpecs:
1480
+ """Get the target and bounds for a successful grip of this labware."""
1481
+ outer_bounds = self.get_dimensions(labware_definition=labware_definition)
1482
+ well_bounds = self.get_well_bbox(labware_definition=labware_definition)
1483
+ narrower = self._gripper_uncertainty_narrower(
1484
+ labware_bbox=outer_bounds,
1485
+ well_bbox=well_bounds,
1486
+ target_grip_width=outer_bounds.y,
1487
+ )
1488
+ wider = self._gripper_uncertainty_wider(
1489
+ labware_bbox=outer_bounds,
1490
+ well_bbox=well_bounds,
1491
+ target_grip_width=outer_bounds.y,
1492
+ )
1493
+ return GripSpecs(
1494
+ # TODO: This should be a number looked up from the definition.
1495
+ targetY=outer_bounds.y,
1496
+ uncertaintyNarrower=narrower,
1497
+ uncertaintyWider=wider,
1498
+ )
@@ -102,6 +102,7 @@ from .labware import (
102
102
  LoadedLabware,
103
103
  LabwareParentDefinition,
104
104
  LabwareWellId,
105
+ GripSpecs,
105
106
  )
106
107
  from .liquid import HexColor, EmptyLiquidId, LiquidId, Liquid, FluidKind, AspiratedFluid
107
108
  from .labware_offset_location import (
@@ -257,6 +258,7 @@ __all__ = [
257
258
  "LabwareOffsetVector",
258
259
  "LabwareParentDefinition",
259
260
  "LabwareWellId",
261
+ "GripSpecs",
260
262
  # Liquids
261
263
  "HexColor",
262
264
  "EmptyLiquidId",
@@ -23,6 +23,15 @@ from .module import ModuleDefinition
23
23
  from .deck_configuration import DeckLocationDefinition
24
24
 
25
25
 
26
+ @dataclass(frozen=True)
27
+ class GripSpecs:
28
+ """Data for how a labware should be gripped."""
29
+
30
+ uncertaintyWider: float
31
+ uncertaintyNarrower: float
32
+ targetY: float
33
+
34
+
26
35
  class OverlapOffset(Vec3f):
27
36
  """Offset representing overlap space of one labware on top of another labware or module."""
28
37
 
@@ -1,6 +1,6 @@
1
1
  from .types import APIVersion
2
2
 
3
- MAX_SUPPORTED_VERSION = APIVersion(2, 25)
3
+ MAX_SUPPORTED_VERSION = APIVersion(2, 26)
4
4
  """The maximum supported protocol API version in this release."""
5
5
 
6
6
  MIN_SUPPORTED_VERSION = APIVersion(2, 0)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: opentrons
3
- Version: 8.6.0a11
3
+ Version: 8.7.0a0
4
4
  Summary: The Opentrons API is a simple framework designed to make writing automated biology lab protocols easy.
5
5
  Project-URL: opentrons.com, https://www.opentrons.com
6
6
  Project-URL: Source Code On Github, https://github.com/Opentrons/opentrons/tree/edge/api
@@ -24,7 +24,7 @@ Requires-Dist: click<9,>=8.0.0
24
24
  Requires-Dist: importlib-metadata>=1.0; python_version < '3.8'
25
25
  Requires-Dist: jsonschema<4.18.0,>=3.0.1
26
26
  Requires-Dist: numpy<2,>=1.20.0
27
- Requires-Dist: opentrons-shared-data==8.6.0a11
27
+ Requires-Dist: opentrons-shared-data==8.7.0a0
28
28
  Requires-Dist: packaging>=21.0
29
29
  Requires-Dist: pydantic-settings<3,>=2
30
30
  Requires-Dist: pydantic<3,>=2.0.0
@@ -32,6 +32,6 @@ Requires-Dist: pyserial>=3.5
32
32
  Requires-Dist: pyusb==1.2.1
33
33
  Requires-Dist: typing-extensions<5,>=4.0.0
34
34
  Provides-Extra: flex-hardware
35
- Requires-Dist: opentrons-hardware[flex]==8.6.0a11; extra == 'flex-hardware'
35
+ Requires-Dist: opentrons-hardware[flex]==8.7.0a0; extra == 'flex-hardware'
36
36
  Provides-Extra: ot2-hardware
37
- Requires-Dist: opentrons-hardware==8.6.0a11; extra == 'ot2-hardware'
37
+ Requires-Dist: opentrons-hardware==8.7.0a0; extra == 'ot2-hardware'
@@ -1,5 +1,5 @@
1
1
  opentrons/__init__.py,sha256=TQ_Ca_zzAM3iLzAysWKkFkQHG8-imihxDPQbLCYrf-E,4533
2
- opentrons/_version.py,sha256=XzkMHritnW-N0LeUA3PW5LD3vls19RpD5UeJgpXrBuI,714
2
+ opentrons/_version.py,sha256=d3ve2LJJuyjX8J_41fIn96U4XlDfRGAll6nNIi4dBwY,712
3
3
  opentrons/execute.py,sha256=Y88qICDiHWQjU0L4Ou7DI5OXXu7zZcdkUvNUYmZqIfc,29282
4
4
  opentrons/legacy_broker.py,sha256=XnuEBBlrHCThc31RFW2UR0tGqctqWZ-CZ9vSC4L9whU,1553
5
5
  opentrons/ordered_set.py,sha256=g-SB3qA14yxHu9zjGyc2wC7d2TUCBE6fKZlHAtbPzI8,4082
@@ -28,7 +28,7 @@ opentrons/calibration_storage/ot3/models/__init__.py,sha256=47DEQpj8HBSa-_TImW-5
28
28
  opentrons/calibration_storage/ot3/models/v1.py,sha256=SZU9CilK4HjPNtE-6mLcGX4ZsT3o0PGX8-RPjogmwXY,4393
29
29
  opentrons/cli/__init__.py,sha256=zP_n-SnZnZc_yzb0JnnwvUvIBiIpupGOQrqPZrSmnRs,430
30
30
  opentrons/cli/__main__.py,sha256=Jvtl3eMKDT1eX00BGULAw6WqenKe911TMTg4b97y5dA,73
31
- opentrons/cli/analyze.py,sha256=70ZR9bTZCedmvaYcrklRZXozgINf_gZseYgb1oSZVJ8,14837
31
+ opentrons/cli/analyze.py,sha256=sZHRQxVyQASunYpjl0iks_Gkc8K6iX79cBuaipHfVys,16747
32
32
  opentrons/config/__init__.py,sha256=N_ls4aKFt5jrXiPg-M8g2ecc2PgEzH2qTjbPjlr2fFk,21488
33
33
  opentrons/config/advanced_settings.py,sha256=CzR1IzIMGMkvzyzwIjaVR7_ZIZ9_zr-Odgq2Ij4K4vU,27215
34
34
  opentrons/config/defaults_ot2.py,sha256=_l63QNW0aWTh0HGZcgF592ETJg8-W4M0XrQbbzkAPjA,6031
@@ -105,7 +105,7 @@ opentrons/hardware_control/module_control.py,sha256=0mmVH9fiZWNyc33ilCpJHajX1Dfh
105
105
  opentrons/hardware_control/motion_utilities.py,sha256=7VG60YQ9MSMAZ0hO-q-kRAdkcebzrx7uIPtc6FMCViE,10311
106
106
  opentrons/hardware_control/nozzle_manager.py,sha256=dqD8XlYsOu0PFFyxvmsMypBB52Gi6x-VIwhykV7JhuU,16868
107
107
  opentrons/hardware_control/ot3_calibration.py,sha256=vHB17U-FBzytvM8QeEu5kRYPo8lFwAo31ZEpiU4yf_0,45000
108
- opentrons/hardware_control/ot3api.py,sha256=E8WNL-9Y-tGdkyWeDVysxqHQR_DfK5RAiKulS_365EI,127869
108
+ opentrons/hardware_control/ot3api.py,sha256=1vPsaNPmtjsJI1EJF8JPKOd2Bj2GDJLvmKU8eMKGhi8,127869
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
@@ -119,8 +119,8 @@ opentrons/hardware_control/backends/controller.py,sha256=MOVMq9s1rY_jHhajHB1hQ1M
119
119
  opentrons/hardware_control/backends/errors.py,sha256=ZiVP16exHMTWWOajxffnXEqI6NNfeTw-4RkhXE0EBJA,249
120
120
  opentrons/hardware_control/backends/estop_state.py,sha256=_GYjI6OaD3CZNduWV2_RVeOtQ4K_Fg-SP8yU01ENhCY,6554
121
121
  opentrons/hardware_control/backends/flex_protocol.py,sha256=3S-OHbAnOSTF5PxzhMxD0TdEfxurLwecBrDkedl2O3s,13185
122
- opentrons/hardware_control/backends/ot3controller.py,sha256=R_BhVNuycoQyWJngFj4oCoCiOVAkT9yGqjLhP4rcN3g,70641
123
- opentrons/hardware_control/backends/ot3simulator.py,sha256=lmef2w4KeyHqswGAwsr9RTKO0OclH3h6snq7osEoRik,30385
122
+ opentrons/hardware_control/backends/ot3controller.py,sha256=w0LMGu0WWkGd4cEWaqlhMk1NQFHg1-Di83s5_KrKP3U,71374
123
+ opentrons/hardware_control/backends/ot3simulator.py,sha256=CtYnb7NpqIc1TNK91hI0UaK4OyaIecFDczsb-T7DX_w,30387
124
124
  opentrons/hardware_control/backends/ot3utils.py,sha256=HYlIZRGmLqudS1mIt0Io2LxQ1BrLrxVFQCjqudbTUWU,22374
125
125
  opentrons/hardware_control/backends/simulator.py,sha256=q_9PQlBdOyCa9sj2gLqYWZ-fG9v4mddDAiScL-yHCXY,17549
126
126
  opentrons/hardware_control/backends/status_bar_state.py,sha256=E8z9dCJDI3Nb4qfUA5y2_PrE2jSYzZJQVkk75UqY5ZE,9287
@@ -234,24 +234,25 @@ opentrons/protocol_api/create_protocol_context.py,sha256=wwsZje0L__oDnu1Yrihau32
234
234
  opentrons/protocol_api/deck.py,sha256=94vFceg1SC1bAGd7TvC1ZpYwnJR-VlzurEZ6jkacYeg,8910
235
235
  opentrons/protocol_api/disposal_locations.py,sha256=NRiSGmDR0LnbyEkWSOM-o64uR2fUoB1NWJG7Y7SsJSs,7920
236
236
  opentrons/protocol_api/instrument_context.py,sha256=dOg04iqYnNMJ7XnlHBX3tTGiEahc-7feIuErcevRdwY,141216
237
- opentrons/protocol_api/labware.py,sha256=ZP4QuGadoDp6xtyToupXVSJFnsx4NfWcskRQAH3iU4Y,61443
238
- opentrons/protocol_api/module_contexts.py,sha256=HYQ20RV2c-NNwgObQZNxyvVKmy2Ufkf--ILoRmhkcvA,59988
237
+ opentrons/protocol_api/labware.py,sha256=ZGukS0oE6vOltolNx9ZFXj_HFhm5BRaTnS0tJUKxGsE,63061
238
+ opentrons/protocol_api/module_contexts.py,sha256=cPyay45R3SeBckC4fk8txuC7DZoCSeoVSp1ALCMNipQ,63292
239
239
  opentrons/protocol_api/module_validation_and_errors.py,sha256=ljst-M_KK78GnyG3pyZ_6yoYkMY3HORS1QyQyWrme-U,2250
240
- opentrons/protocol_api/protocol_context.py,sha256=Hzgw3FbCRyd4kWmw4RZwZHJhoGZkmn7ug-Q7JZGCcqs,70298
240
+ opentrons/protocol_api/protocol_context.py,sha256=2F-awiZGGNwwdu2xxkjrVDCuemJaV3z4bSIBZoXVVlY,77105
241
241
  opentrons/protocol_api/robot_context.py,sha256=D6ZdpFX30VTtVUDHitsVjabJQXD5TxOV9_Z6sik1LvE,11891
242
- opentrons/protocol_api/validation.py,sha256=73QwpdK5337yu9g8jvpHHizOD0Mf3m6Wr9S8eikrHIc,28993
242
+ opentrons/protocol_api/validation.py,sha256=jFJcw_ixifViupEFaGrjEcuHyNIHG1gvo-n2jSqGnok,29227
243
243
  opentrons/protocol_api/core/__init__.py,sha256=-g74o8OtBB0LmmOvwkRvPgrHt7fF7T8FRHDj-x_-Onk,736
244
244
  opentrons/protocol_api/core/common.py,sha256=Ne7D4yBC3qywy35jIAC_1xI8HQwYt0HjPRXqIcyP06M,1276
245
245
  opentrons/protocol_api/core/core_map.py,sha256=NX06HEDi5Obmaz0Xwwc_dikH0M-bTnZcfnSdMLdQqms,2074
246
246
  opentrons/protocol_api/core/instrument.py,sha256=ZlEv60tzH5jxP0Wh9eyTc_28ju75RsllkQufMwYdIio,13985
247
247
  opentrons/protocol_api/core/labware.py,sha256=-ZOjkalikXCV3ptehKCNaWGAdKxIdwne8LRFQW9NAm4,4290
248
248
  opentrons/protocol_api/core/module.py,sha256=D8d9Xs_AgI53i8POkK2deUiu92V93Wt9-HG4FDKrHnE,15833
249
- opentrons/protocol_api/core/protocol.py,sha256=3K6D2ClT3-bPySuKJuAPWVwvxD8fTvAKUlQG26I9H4M,8685
249
+ opentrons/protocol_api/core/protocol.py,sha256=Jru2lRuPtgdzpZiuhU6VV6UGN2wbjCSoWm_CAbOVPiU,8695
250
250
  opentrons/protocol_api/core/robot.py,sha256=QMAqj5Oqq3_IhTDyUF4jpWI4j2LRPP9crUiaYD_RUv4,1385
251
251
  opentrons/protocol_api/core/well.py,sha256=Lf89YYEyq-ahRSRIFJw42vxIP8Fw6kzIUh9K1HEijUQ,3487
252
252
  opentrons/protocol_api/core/well_grid.py,sha256=BU28DKaBgEU_JdZ6pEzrwNxmuh6TkO4zlg7Pq1Rf5Xk,1516
253
253
  opentrons/protocol_api/core/engine/__init__.py,sha256=B_5T7zgkWDb1mXPg4NbT-wBkQaK-WVokMMnJRNu7xiM,582
254
254
  opentrons/protocol_api/core/engine/_default_labware_versions.py,sha256=hLKAp33c_eNLpvT5qUt8AOYy6PHhM_JnkdOXaMl80jA,7541
255
+ opentrons/protocol_api/core/engine/_default_liquid_class_versions.py,sha256=MCPKf-7fAULQ4oPVYxiyKHr4AYRAevwA9uhkdur3-kQ,1513
255
256
  opentrons/protocol_api/core/engine/deck_conflict.py,sha256=j3AJ-sYr5e-06UgeGueUldx9B3fn7AhN738kJxZO_vw,14693
256
257
  opentrons/protocol_api/core/engine/exceptions.py,sha256=aZgNrmYEeuPZm21nX_KZYtvyjv5h_zPjxxgPkEV7_bw,725
257
258
  opentrons/protocol_api/core/engine/instrument.py,sha256=lDrCqOZm7ceu1E50EYiSh7qTDMci5cgw4bM-AvLyMjE,98890
@@ -261,10 +262,10 @@ opentrons/protocol_api/core/engine/module_core.py,sha256=qxxcqpH-A4Zil9hHDxnvh4H
261
262
  opentrons/protocol_api/core/engine/overlap_versions.py,sha256=PyGvQtQUg1wzNtkuGZtxwXm019PoIjq7em2JiWaxbXc,675
262
263
  opentrons/protocol_api/core/engine/pipette_movement_conflict.py,sha256=x54RIYtkL1rdzvkSp2JgusLY3EEvY8bX3OwipeVKdsE,15511
263
264
  opentrons/protocol_api/core/engine/point_calculations.py,sha256=C2eF0fvJQGMqQv3DzNhc1-m8HTAXTyTsHPJEPrEUEmo,2502
264
- opentrons/protocol_api/core/engine/protocol.py,sha256=uX-qwATcTXiEUXe9gGDmp1cJ1Xd4eQnyy-q_jpiyAYY,46023
265
+ opentrons/protocol_api/core/engine/protocol.py,sha256=MQNMYNII1OxwaQGsKbOgVtmEH54mjDahzD-WHst9MH8,46247
265
266
  opentrons/protocol_api/core/engine/robot.py,sha256=bzUt23NG-clD-9-QFsV_6nm3fMgSmvYEG9DyyZI1xgw,5366
266
267
  opentrons/protocol_api/core/engine/stringify.py,sha256=GwFgEhFMk-uPfFQhQG_2mkaf4cxaItiY8RW7rZwiooQ,2794
267
- opentrons/protocol_api/core/engine/transfer_components_executor.py,sha256=PAH4hpg5QIp9gwsq0segY113_3ZyRgDV4OnDagNSrTE,44306
268
+ opentrons/protocol_api/core/engine/transfer_components_executor.py,sha256=mR59C-e6IHSZthlbQEwmRnh5ye8lhr6a0Qp5CNNi9n8,45211
268
269
  opentrons/protocol_api/core/engine/well.py,sha256=IaaFK-3hoUfabfn_twIT7zcAynhzAmRxDnvABss2szo,8923
269
270
  opentrons/protocol_api/core/legacy/__init__.py,sha256=_9jCJNKG3SlS_vljVu8HHkZmtLf4F-f-JHALLF5d5go,401
270
271
  opentrons/protocol_api/core/legacy/_labware_geometry.py,sha256=ugtMdfnSkUwBCC3Sdj5nP5aDUxX-Dr7BeiuPVmdjAtg,1091
@@ -273,7 +274,7 @@ opentrons/protocol_api/core/legacy/labware_offset_provider.py,sha256=2DLIby9xmUr
273
274
  opentrons/protocol_api/core/legacy/legacy_instrument_core.py,sha256=mEX2Kmx8vBag7ndk4pCIssKkH9C-FEk0xphDyogCLGQ,27023
274
275
  opentrons/protocol_api/core/legacy/legacy_labware_core.py,sha256=ksal6uzzGcMFEE3Ko2H9cbG8b8u4IprzejkkxdBHwHQ,8579
275
276
  opentrons/protocol_api/core/legacy/legacy_module_core.py,sha256=CFCuXN1g5zE2IXD1I09vkngBlOdDzQjuIaNlJ5tVXnQ,23231
276
- opentrons/protocol_api/core/legacy/legacy_protocol_core.py,sha256=fodiDwsBi1_Yd6Hgf8Kx-iTvky_J6WHmGhwmeRBHqmE,23702
277
+ opentrons/protocol_api/core/legacy/legacy_protocol_core.py,sha256=Owj8Vx3ysQEarPH81PcCpAA0MnVegMkjWXNz5-nRIqg,23712
277
278
  opentrons/protocol_api/core/legacy/legacy_well_core.py,sha256=wxeiPBqaS8YQwRpDGwF7ykJ0s2y3bExwVGpNbUZMmFg,5560
278
279
  opentrons/protocol_api/core/legacy/load_info.py,sha256=r-WaH5ZJb3TRCp_zvbMMh0P4BhbZM8HsBs1K_pU98dk,1857
279
280
  opentrons/protocol_api/core/legacy/module_geometry.py,sha256=lvWFHZ81-JFw-1VZUW1R3yUIb59xpXT6H3jwlRintRo,21082
@@ -305,7 +306,7 @@ opentrons/protocol_engine/commands/aspirate_while_tracking.py,sha256=d8-UBiXmBZ1
305
306
  opentrons/protocol_engine/commands/blow_out.py,sha256=3gboq4x5S8fq7j4ZZGNClXFDlOjcdW1v2g58GPdhaPI,4338
306
307
  opentrons/protocol_engine/commands/blow_out_in_place.py,sha256=jm2XXyJfIP9-AAFwXhD59_13nX18-i6QqpLGb-lK7sI,3391
307
308
  opentrons/protocol_engine/commands/command.py,sha256=1hWH_KWg_WDL4R4VXe1ZH2vO6pYt5SA-ZpuPPF1oV5E,10149
308
- opentrons/protocol_engine/commands/command_unions.py,sha256=MqZ4Otswq--gzPmkZOk7VLdtaOPvmqu4FiCkOWUPo58,27464
309
+ opentrons/protocol_engine/commands/command_unions.py,sha256=_2iINXrl9yc3H8X-AF8YBhYZQHLU0RHFEfl0MwE2H2w,27550
309
310
  opentrons/protocol_engine/commands/comment.py,sha256=-6o07x-MZ6-IvZas84OVFmqF0gAbbKWJZIlGVYThCqM,1638
310
311
  opentrons/protocol_engine/commands/configure_for_volume.py,sha256=wLt7-zJfKrRZhz9E0J9Xu_eayDMVPl8utdUYDMwgzFw,3615
311
312
  opentrons/protocol_engine/commands/configure_nozzle_layout.py,sha256=M_s5Ee03a7sSnbvkibDHzEqZwkca0y8J7F60EnSEq7A,3849
@@ -364,12 +365,12 @@ opentrons/protocol_engine/commands/calibration/calibrate_module.py,sha256=5QZ5zL
364
365
  opentrons/protocol_engine/commands/calibration/calibrate_pipette.py,sha256=YMH2MJ7RI0Nf7xjoXJLPlCuMCs5_Stj8zLj-oHcfnDk,3278
365
366
  opentrons/protocol_engine/commands/calibration/move_to_maintenance_position.py,sha256=Y5UI4zcnhhVdfQOYh1N07jkBiVChD0kS_H_ow7_qiCA,5311
366
367
  opentrons/protocol_engine/commands/flex_stacker/__init__.py,sha256=IJLskKdZZOGUA1eOm2e3fiP1C9GyTdbTS6uY6Hc4nUk,1369
367
- opentrons/protocol_engine/commands/flex_stacker/common.py,sha256=MHd3mIGK7JpTvL8NGdKQZFBg5yr20dyY4cJMq4TQqlw,34813
368
+ opentrons/protocol_engine/commands/flex_stacker/common.py,sha256=QHBtKawQxWssm6nSmtIpuJCH6BFlT54k4XQTBNSU8mY,35249
368
369
  opentrons/protocol_engine/commands/flex_stacker/empty.py,sha256=1R0AwQtLn_wfuFH0Og2yAngJU8T_XLqf0a__9CqZQy0,11492
369
370
  opentrons/protocol_engine/commands/flex_stacker/fill.py,sha256=3qhAQxJfaSp4EAFGIUotkrJVuOvdFrwzmkMCa2v6khA,10866
370
371
  opentrons/protocol_engine/commands/flex_stacker/retrieve.py,sha256=kh9Lh-FW-RrXmV4RS8txmTYPfPDKhQhjW0UXr8k0vhc,12763
371
372
  opentrons/protocol_engine/commands/flex_stacker/set_stored_labware.py,sha256=5VdqCcBdIHmpWqIJN3rCKeZ6IKwfxAdQTXMTD-KL-5w,12484
372
- opentrons/protocol_engine/commands/flex_stacker/store.py,sha256=8iS77NRj9CVp12S9uVfCJTl-Q0iaJkCQDcOJWZnSeI0,12770
373
+ opentrons/protocol_engine/commands/flex_stacker/store.py,sha256=Ed49qEUc16wo643PztZLYNPhVuLNZbx0lALSvpRYwDk,13632
373
374
  opentrons/protocol_engine/commands/heater_shaker/__init__.py,sha256=ImAPrYSUvP8tI7obvoHmrJbjwLldgGNTnFYRgfXj8hI,2757
374
375
  opentrons/protocol_engine/commands/heater_shaker/close_labware_latch.py,sha256=Q7sqFtzUD8wclRLL2PLWjnClIeLtJsiMCobStvzoJKc,2847
375
376
  opentrons/protocol_engine/commands/heater_shaker/deactivate_heater.py,sha256=UYeGrTmnGtfw22p0agefI2ZnpukKlIgFcmJv9v58Xnc,2755
@@ -426,7 +427,7 @@ opentrons/protocol_engine/execution/error_recovery_hardware_state_synchronizer.p
426
427
  opentrons/protocol_engine/execution/gantry_mover.py,sha256=LFTPmzuGRuP6IspgXxIEyJIXV0tHkc4UWDDjWFCClYo,26477
427
428
  opentrons/protocol_engine/execution/hardware_stopper.py,sha256=ZlhVYEdFfuKqp5slZBkustXcRPy5fJsw2rmfYzHuJkQ,6127
428
429
  opentrons/protocol_engine/execution/heater_shaker_movement_flagger.py,sha256=BSFLzSSeELAYZCrCUfJZx5DdlrwU06Ur92TYd0T-hzM,9084
429
- opentrons/protocol_engine/execution/labware_movement.py,sha256=Bl-Nx3y5-zMlsxL3fcXV04OyiU1JFyqPJTS1Fir_XkA,12962
430
+ opentrons/protocol_engine/execution/labware_movement.py,sha256=0QnTf98CpYItP1icvNpwUeIa2LUWk4w7yBCUVJw-64g,12656
430
431
  opentrons/protocol_engine/execution/movement.py,sha256=ZU4K4OHnzZYCZbk3RwfSOC6C3T2jtBlvYMppJhJSF08,12749
431
432
  opentrons/protocol_engine/execution/pipetting.py,sha256=cnJYbLiJ2QD1xziD8dkRm0mZG3xOk00klW8Ff8rgSG4,22199
432
433
  opentrons/protocol_engine/execution/queue_worker.py,sha256=LM753TrQzJoKUSIrtcaHDOWLe58zcpx-fUOLVpyDlHM,3302
@@ -463,7 +464,7 @@ opentrons/protocol_engine/state/files.py,sha256=w8xxxg8HY0RqKKEGSfHWfrjV54Gb02O3
463
464
  opentrons/protocol_engine/state/fluid_stack.py,sha256=uwkf0qYk1UX5iU52xmk-e3yLPK8OG-TtMCcBqrkVFpM,5932
464
465
  opentrons/protocol_engine/state/geometry.py,sha256=o8tefXS_Jekdt82dW4HHVJSnsxCsTFJuG6ogtri2wTY,104065
465
466
  opentrons/protocol_engine/state/inner_well_math_utils.py,sha256=UhemsPpcuKwVc-iGXI2-v--miOGNunAnAVznJTVADlQ,20598
466
- opentrons/protocol_engine/state/labware.py,sha256=bmNOa6vDFXa-Iow4x_1zNa3tIcNkUvu1OCg3ED2E4i4,59936
467
+ opentrons/protocol_engine/state/labware.py,sha256=vwagsqSBAIkVj4eupu0pIK6F3idnqqoRWDjVbp4ZwKQ,62977
467
468
  opentrons/protocol_engine/state/liquid_classes.py,sha256=u_z75UYdiFAKG0yB3mr1il4T3qaS0Sotq8sL7KLODP8,2990
468
469
  opentrons/protocol_engine/state/liquids.py,sha256=NoesktcQdJUjIVmet1uqqJPf-rzbo4SGemXwQC295W0,2338
469
470
  opentrons/protocol_engine/state/modules.py,sha256=SM_6j3YfZV4ZXWTGjwxQIVH-jtHEI-YFuJtoMyPBReo,61599
@@ -482,7 +483,7 @@ opentrons/protocol_engine/state/module_substates/magnetic_block_substate.py,sha2
482
483
  opentrons/protocol_engine/state/module_substates/magnetic_module_substate.py,sha256=IJ5zpufz5WSRbJqHOAi-WroDxpsRZz-GvwznIL4v7VQ,2468
483
484
  opentrons/protocol_engine/state/module_substates/temperature_module_substate.py,sha256=w9h6EBM1YY8SeUOlUz5-nW1Zoyce8-zua8Z6mX4sDNg,2310
484
485
  opentrons/protocol_engine/state/module_substates/thermocycler_module_substate.py,sha256=fLt2jMsbnfe8Q25vAjloxLBGdx8sotqM34VxbwfegpE,5167
485
- opentrons/protocol_engine/types/__init__.py,sha256=8nOYquZPSvQAqkCz9Jfev86SmQ1Tou-AL5RMMvSz07o,8344
486
+ opentrons/protocol_engine/types/__init__.py,sha256=8zInoWjiYEAir1Frq1ESEdFYj17aBH4zXjxL4odPLR0,8376
486
487
  opentrons/protocol_engine/types/automatic_tip_selection.py,sha256=I_B3iWei1Sl7F7IrMKqOn4S12heZXRnfKvtCTUXIMyM,1118
487
488
  opentrons/protocol_engine/types/command_annotations.py,sha256=5A4k_R_4A2_nGl0K85SKwNlnKA09fUhEIe_mdU55yro,1843
488
489
  opentrons/protocol_engine/types/deck_configuration.py,sha256=3dhkk3Z_PrJvqb26brkEdlyzMAGih_UopoEzu9k6SRk,2422
@@ -490,7 +491,7 @@ opentrons/protocol_engine/types/execution.py,sha256=6g_NvlF4niXjFQwDjkmTgKx-N6I8
490
491
  opentrons/protocol_engine/types/hardware_passthrough.py,sha256=tpTE3XHbRjXWQqY0rgosIfcOAGHqMkOpIU3IpIXgdAA,534
491
492
  opentrons/protocol_engine/types/instrument.py,sha256=sqiY6OKYgI0ViQ2UsuYMkL9MI6OpvdgLzC1mvclrp2M,984
492
493
  opentrons/protocol_engine/types/instrument_sensors.py,sha256=CGcChvuxpRXVJHLZP_wd1ej3XDD9x1S9biugMAnk0tM,1449
493
- opentrons/protocol_engine/types/labware.py,sha256=Htfoqz5lXCJmdib4hYIyXkETTsPZ67bfkZXrO1gmLtk,4441
494
+ opentrons/protocol_engine/types/labware.py,sha256=huIKtzEmWJcWuyKq5jN_3Ra4QXRDUbaK2Ck0O3vV5zU,4615
494
495
  opentrons/protocol_engine/types/labware_movement.py,sha256=BEZIDc-6YhU9LRACi0ozroIxuOIq-tngvrFE22uufjs,577
495
496
  opentrons/protocol_engine/types/labware_offset_location.py,sha256=gXOmIHLD1Hk6OhfhmV9Uf2HN0rIKD6syWSPfYehB9QQ,4237
496
497
  opentrons/protocol_engine/types/labware_offset_vector.py,sha256=2M_q0vSjOyjujt-0NY9NM0asQS27MHYElcFgoKCAZAY,377
@@ -541,7 +542,7 @@ opentrons/protocols/advanced_control/transfers/transfer_liquid_utils.py,sha256=w
541
542
  opentrons/protocols/api_support/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
542
543
  opentrons/protocols/api_support/constants.py,sha256=pI_zJ8oORr6FUOaF508ttll3KOIYqRRgcwVFwnqZuqc,262
543
544
  opentrons/protocols/api_support/deck_type.py,sha256=cBxm-IQqFyL1QtYTMGtLXOlyuh-67xWgnJSP6rkg8oc,3942
544
- opentrons/protocols/api_support/definitions.py,sha256=vjt7jgMqtntWL2MvYC6pAXcPWJ066Xf4coi3RwbArv8,727
545
+ opentrons/protocols/api_support/definitions.py,sha256=Sg0LIzkncnqTPz-e6EtLxdPmEVhogKkmDv3lTpGfmdI,727
545
546
  opentrons/protocols/api_support/instrument.py,sha256=xbgFKbJU_gL1QjbH_mgGHJx2USQIQisjEkBHiFfYEqA,5712
546
547
  opentrons/protocols/api_support/labware_like.py,sha256=JArK3XIYSMzDJTnpsVg9KNcMBEaRLMllmbV4ZtcI02s,7701
547
548
  opentrons/protocols/api_support/tip_tracker.py,sha256=ztngh5wGworD77ycKHm3_f9EqjT24VFXIAARAGcCPns,7407
@@ -594,8 +595,8 @@ opentrons/util/linal.py,sha256=IlKAP9HkNBBgULeSf4YVwSKHdx9jnCjSr7nvDvlRALg,5753
594
595
  opentrons/util/logging_config.py,sha256=7et4YYuQdWdq_e50U-8vFS_QyNBRgdnqPGAQJm8qrIo,9954
595
596
  opentrons/util/logging_queue_handler.py,sha256=ZsSJwy-oV8DXwpYiZisQ1PbYwmK2cOslD46AcyJ1E4I,2484
596
597
  opentrons/util/performance_helpers.py,sha256=ew7H8XD20iS6-2TJAzbQeyzStZkkE6PzHt_Adx3wbZQ,5172
597
- opentrons-8.6.0a11.dist-info/METADATA,sha256=uZEZHKsnnX6BkeHSzCP31LsjH-ipHwePKN-Ip8JI4hM,1611
598
- opentrons-8.6.0a11.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
599
- opentrons-8.6.0a11.dist-info/entry_points.txt,sha256=fTa6eGCYkvOtv0ov-KVE8LLGetgb35LQLF9x85OWPVw,106
600
- opentrons-8.6.0a11.dist-info/licenses/LICENSE,sha256=z8d0m5b2O9McPEK1xHG_dWgUBT6EfBDz6wA0F7xSPTA,11358
601
- opentrons-8.6.0a11.dist-info/RECORD,,
598
+ opentrons-8.7.0a0.dist-info/METADATA,sha256=U7gGnD5DR1XRNN5e9BqM9v9_NnJFeqsqVZI51jyMnoM,1607
599
+ opentrons-8.7.0a0.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
600
+ opentrons-8.7.0a0.dist-info/entry_points.txt,sha256=fTa6eGCYkvOtv0ov-KVE8LLGetgb35LQLF9x85OWPVw,106
601
+ opentrons-8.7.0a0.dist-info/licenses/LICENSE,sha256=z8d0m5b2O9McPEK1xHG_dWgUBT6EfBDz6wA0F7xSPTA,11358
602
+ opentrons-8.7.0a0.dist-info/RECORD,,