opentrons 8.4.1a2__py2.py3-none-any.whl → 8.5.0__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.
Files changed (67) hide show
  1. opentrons/config/defaults_ot3.py +1 -1
  2. opentrons/hardware_control/backends/flex_protocol.py +25 -0
  3. opentrons/hardware_control/backends/ot3controller.py +76 -1
  4. opentrons/hardware_control/backends/ot3simulator.py +27 -0
  5. opentrons/hardware_control/instruments/ot3/pipette_handler.py +1 -0
  6. opentrons/hardware_control/ot3api.py +32 -0
  7. opentrons/legacy_commands/commands.py +16 -4
  8. opentrons/legacy_commands/robot_commands.py +51 -0
  9. opentrons/legacy_commands/types.py +91 -2
  10. opentrons/protocol_api/_liquid.py +60 -15
  11. opentrons/protocol_api/_liquid_properties.py +149 -90
  12. opentrons/protocol_api/_transfer_liquid_validation.py +43 -14
  13. opentrons/protocol_api/core/engine/instrument.py +367 -221
  14. opentrons/protocol_api/core/engine/protocol.py +14 -15
  15. opentrons/protocol_api/core/engine/robot.py +2 -2
  16. opentrons/protocol_api/core/engine/transfer_components_executor.py +275 -163
  17. opentrons/protocol_api/core/engine/well.py +16 -0
  18. opentrons/protocol_api/core/instrument.py +11 -5
  19. opentrons/protocol_api/core/legacy/legacy_instrument_core.py +11 -5
  20. opentrons/protocol_api/core/legacy/legacy_protocol_core.py +2 -2
  21. opentrons/protocol_api/core/legacy/legacy_well_core.py +8 -0
  22. opentrons/protocol_api/core/legacy_simulator/legacy_instrument_core.py +11 -5
  23. opentrons/protocol_api/core/protocol.py +3 -3
  24. opentrons/protocol_api/core/well.py +8 -0
  25. opentrons/protocol_api/instrument_context.py +478 -111
  26. opentrons/protocol_api/labware.py +10 -0
  27. opentrons/protocol_api/module_contexts.py +5 -2
  28. opentrons/protocol_api/protocol_context.py +76 -11
  29. opentrons/protocol_api/robot_context.py +48 -6
  30. opentrons/protocol_api/validation.py +15 -8
  31. opentrons/protocol_engine/commands/command_unions.py +10 -10
  32. opentrons/protocol_engine/commands/generate_command_schema.py +1 -1
  33. opentrons/protocol_engine/commands/get_next_tip.py +2 -2
  34. opentrons/protocol_engine/commands/load_labware.py +0 -19
  35. opentrons/protocol_engine/commands/pick_up_tip.py +9 -3
  36. opentrons/protocol_engine/commands/robot/__init__.py +20 -20
  37. opentrons/protocol_engine/commands/robot/close_gripper_jaw.py +34 -24
  38. opentrons/protocol_engine/commands/robot/open_gripper_jaw.py +29 -20
  39. opentrons/protocol_engine/commands/seal_pipette_to_tip.py +1 -1
  40. opentrons/protocol_engine/commands/unsafe/__init__.py +17 -1
  41. opentrons/protocol_engine/commands/unsafe/unsafe_drop_tip_in_place.py +1 -2
  42. opentrons/protocol_engine/execution/labware_movement.py +9 -2
  43. opentrons/protocol_engine/execution/movement.py +12 -9
  44. opentrons/protocol_engine/execution/queue_worker.py +8 -1
  45. opentrons/protocol_engine/execution/thermocycler_movement_flagger.py +52 -19
  46. opentrons/protocol_engine/resources/labware_validation.py +7 -1
  47. opentrons/protocol_engine/state/_well_math.py +2 -2
  48. opentrons/protocol_engine/state/commands.py +14 -28
  49. opentrons/protocol_engine/state/frustum_helpers.py +11 -7
  50. opentrons/protocol_engine/state/labware.py +12 -0
  51. opentrons/protocol_engine/state/modules.py +1 -1
  52. opentrons/protocol_engine/state/pipettes.py +8 -0
  53. opentrons/protocol_engine/state/tips.py +46 -83
  54. opentrons/protocol_engine/state/update_types.py +8 -23
  55. opentrons/protocol_engine/types/liquid_level_detection.py +68 -8
  56. opentrons/protocol_runner/legacy_command_mapper.py +12 -6
  57. opentrons/protocol_runner/run_orchestrator.py +1 -1
  58. opentrons/protocols/advanced_control/transfers/common.py +54 -11
  59. opentrons/protocols/advanced_control/transfers/transfer_liquid_utils.py +55 -28
  60. opentrons/protocols/api_support/definitions.py +1 -1
  61. opentrons/types.py +6 -6
  62. {opentrons-8.4.1a2.dist-info → opentrons-8.5.0.dist-info}/METADATA +4 -4
  63. {opentrons-8.4.1a2.dist-info → opentrons-8.5.0.dist-info}/RECORD +67 -66
  64. {opentrons-8.4.1a2.dist-info → opentrons-8.5.0.dist-info}/LICENSE +0 -0
  65. {opentrons-8.4.1a2.dist-info → opentrons-8.5.0.dist-info}/WHEEL +0 -0
  66. {opentrons-8.4.1a2.dist-info → opentrons-8.5.0.dist-info}/entry_points.txt +0 -0
  67. {opentrons-8.4.1a2.dist-info → opentrons-8.5.0.dist-info}/top_level.txt +0 -0
@@ -4,7 +4,10 @@ from __future__ import annotations
4
4
  from typing import Literal, Sequence, List, Optional, TYPE_CHECKING
5
5
  from dataclasses import dataclass
6
6
 
7
- from opentrons.protocol_engine.errors import LiquidHeightUnknownError
7
+ from opentrons.protocol_engine.errors import (
8
+ LiquidHeightUnknownError,
9
+ IncompleteLabwareDefinitionError,
10
+ )
8
11
  from opentrons.protocol_engine.state._well_math import (
9
12
  wells_covered_by_pipette_configuration,
10
13
  )
@@ -25,30 +28,26 @@ class LocationCheckDescriptors:
25
28
 
26
29
  def raise_if_location_inside_liquid(
27
30
  location: Location,
28
- well_location: Location,
29
31
  well_core: WellCore,
30
32
  location_check_descriptors: LocationCheckDescriptors,
31
33
  logger: Logger,
32
34
  ) -> None:
33
35
  """Raise an error if the location in question would be inside the liquid.
34
36
 
35
- This checker will raise an error if:
36
- - the location in question is below the target well location during aspirate/dispense or,
37
- - if we can find the liquid height AND the location in question is below this height.
38
- If we can't find the liquid height, then we simply log a warning and no error is raised.
37
+ This checker will raise an error if we can find the liquid height
38
+ AND the location in question is below this height.
39
+
40
+ If we can't find the liquid height, then we simply log the details and no error is raised.
39
41
  """
40
- if location.point.z < well_location.point.z:
41
- raise RuntimeError(
42
- f"Received {location_check_descriptors.location_type} location of {location}"
43
- f" and {location_check_descriptors.pipetting_action} location of {well_location}."
44
- f" {location_check_descriptors.location_type.capitalize()} location z should not be lower"
45
- f" than the {location_check_descriptors.pipetting_action} location z."
46
- )
47
42
  try:
48
43
  liquid_height_from_bottom = well_core.current_liquid_height()
49
- except LiquidHeightUnknownError:
44
+ except (IncompleteLabwareDefinitionError, LiquidHeightUnknownError):
45
+ # IncompleteLabwareDefinitionError is raised when there's no inner geometry
46
+ # defined for the well. So, we can't find the liquid height even if liquid volume is known.
47
+ # LiquidHeightUnknownError is raised when we don't have liquid volume info
48
+ # and no probing has been done either.
50
49
  liquid_height_from_bottom = None
51
- if liquid_height_from_bottom is not None:
50
+ if isinstance(liquid_height_from_bottom, (int, float)):
52
51
  if liquid_height_from_bottom + well_core.get_bottom(0).z > location.point.z:
53
52
  raise RuntimeError(
54
53
  f"{location_check_descriptors.location_type.capitalize()} location {location} is"
@@ -59,11 +58,12 @@ def raise_if_location_inside_liquid(
59
58
  # We could raise an error here but that would restrict the use of
60
59
  # liquid classes-based transfer to only when LPD is enabled or when liquids are
61
60
  # loaded in protocols using `load_liquid`. This can be quite restrictive
62
- # so we will not raise but just log a warning.
63
- logger.warning(
61
+ # so we will not raise but just log the details.
62
+ logger.info(
64
63
  f"Could not verify height of liquid in well {well_core.get_display_name()}, either"
65
- f" because the liquid in this well has not been probed or because"
66
- f" liquid was not loaded in this well using `load_liquid`."
64
+ f" because the liquid in this well has not been probed or"
65
+ f" liquid was not loaded in this well using `load_liquid` or"
66
+ f" inner geometry is not available for the target well."
67
67
  f" Proceeding without verifying if {location_check_descriptors.location_type}"
68
68
  f" location is outside the liquid."
69
69
  )
@@ -72,6 +72,7 @@ def raise_if_location_inside_liquid(
72
72
  def group_wells_for_multi_channel_transfer(
73
73
  targets: Sequence[Well],
74
74
  nozzle_map: NozzleMapInterface,
75
+ target_name: Literal["source", "destination"],
75
76
  ) -> List[Well]:
76
77
  """Takes a list of wells and a nozzle map and returns a list of target wells to address every well given
77
78
 
@@ -94,13 +95,20 @@ def group_wells_for_multi_channel_transfer(
94
95
  or (configuration == NozzleConfigurationType.ROW and active_nozzles == 12)
95
96
  or active_nozzles == 96
96
97
  ):
97
- return _group_wells_for_nozzle_configuration(list(targets), nozzle_map)
98
+ return _group_wells_for_nozzle_configuration(
99
+ list(targets), nozzle_map, target_name
100
+ )
98
101
  else:
99
- raise ValueError("Unsupported tip configuration for well grouping")
102
+ raise ValueError(
103
+ "Unsupported nozzle configuration for well grouping. Set group_wells to False"
104
+ " to only target wells with the primary nozzle for this configuration."
105
+ )
100
106
 
101
107
 
102
108
  def _group_wells_for_nozzle_configuration( # noqa: C901
103
- targets: List[Well], nozzle_map: NozzleMapInterface
109
+ targets: List[Well],
110
+ nozzle_map: NozzleMapInterface,
111
+ target_name: Literal["source", "destination"],
104
112
  ) -> List[Well]:
105
113
  """Groups wells together for a column, row, or full 96 configuration and returns a reduced list of target wells."""
106
114
  grouped_wells = []
@@ -132,8 +140,9 @@ def _group_wells_for_nozzle_configuration( # noqa: C901
132
140
  if active_wells_covered:
133
141
  if well.parent != active_labware:
134
142
  raise ValueError(
135
- "Could not resolve wells provided to pipette's nozzle configuration. "
136
- "Please ensure wells are ordered to match pipette's nozzle layout."
143
+ f"Could not group {target_name} wells to match pipette's nozzle configuration. Ensure that the"
144
+ " wells are ordered correctly (e.g. rows() for a row layout or columns() for a column layout), or"
145
+ " set group_wells to False to only target wells with the primary nozzle."
137
146
  )
138
147
 
139
148
  if well.well_name in active_wells_covered:
@@ -165,8 +174,9 @@ def _group_wells_for_nozzle_configuration( # noqa: C901
165
174
  alternate_384_well_coverage_count += 1
166
175
  else:
167
176
  raise ValueError(
168
- "Could not resolve wells provided to pipette's nozzle configuration. "
169
- "Please ensure wells are ordered to match pipette's nozzle layout."
177
+ f"Could not group {target_name} wells to match pipette's nozzle configuration. Ensure that the"
178
+ " wells are ordered correctly (e.g. rows() for a row layout or columns() for a column layout), or"
179
+ " set group_wells to False to only target wells with the primary nozzle."
170
180
  )
171
181
  # If we have no active wells covered to account for, add a new target well and list of covered wells to check
172
182
  else:
@@ -193,8 +203,8 @@ def _group_wells_for_nozzle_configuration( # noqa: C901
193
203
 
194
204
  if active_wells_covered:
195
205
  raise ValueError(
196
- "Could not target all wells provided without aspirating or dispensing from other wells. "
197
- f"Other wells that would be targeted: {active_wells_covered}"
206
+ f"Pipette will access {target_name} wells not provided in the liquid handling command."
207
+ f" Set group_wells to False or include these wells: {active_wells_covered}"
198
208
  )
199
209
 
200
210
  # If we reversed the lookup of wells, reverse the grouped wells we will return
@@ -202,3 +212,20 @@ def _group_wells_for_nozzle_configuration( # noqa: C901
202
212
  grouped_wells.reverse()
203
213
 
204
214
  return grouped_wells
215
+
216
+
217
+ def check_current_volume_before_dispensing(
218
+ current_volume: float,
219
+ dispense_volume: float,
220
+ ) -> None:
221
+ """Check if the current volume is valid for dispensing the dispense volume."""
222
+ if current_volume < dispense_volume:
223
+ # Although this should never happen, we can get into an unexpected state
224
+ # following error recovery and not have the expected amount of liquid in the tip.
225
+ # If this happens, we want to raise a useful error so the user can understand
226
+ # the cause of the problem. If we don't make this check for current volume,
227
+ # an unhelpful error might get raised when a '..byVolume' property encounters
228
+ # a negative volume (current_volume - dispense_volume).
229
+ raise RuntimeError(
230
+ f"Cannot dispense {dispense_volume}uL when the tip has only {current_volume}uL."
231
+ )
@@ -1,6 +1,6 @@
1
1
  from .types import APIVersion
2
2
 
3
- MAX_SUPPORTED_VERSION = APIVersion(2, 23)
3
+ MAX_SUPPORTED_VERSION = APIVersion(2, 24)
4
4
  """The maximum supported protocol API version in this release."""
5
5
 
6
6
  MIN_SUPPORTED_VERSION = APIVersion(2, 0)
opentrons/types.py CHANGED
@@ -35,12 +35,6 @@ class Point(NamedTuple):
35
35
  y: float = 0.0
36
36
  z: float = 0.0
37
37
 
38
- def __eq__(self, other: Any) -> bool:
39
- if not isinstance(other, Point):
40
- return False
41
- pairs = ((self.x, other.x), (self.y, other.y), (self.z, other.z))
42
- return all(isclose(s, o, rel_tol=1e-05, abs_tol=1e-08) for s, o in pairs)
43
-
44
38
  def __add__(self, other: Any) -> Point:
45
39
  if not isinstance(other, Point):
46
40
  return NotImplemented
@@ -75,6 +69,12 @@ class Point(NamedTuple):
75
69
  z_diff = self.z - other.z
76
70
  return sqrt(x_diff**2 + y_diff**2 + z_diff**2)
77
71
 
72
+ def elementwise_isclose(
73
+ self, other: Point, *, rel_tol: float = 1e-05, abs_tol: float = 1e-08
74
+ ) -> bool:
75
+ pairs = ((self.x, other.x), (self.y, other.y), (self.z, other.z))
76
+ return all(isclose(s, o, rel_tol=rel_tol, abs_tol=abs_tol) for s, o in pairs)
77
+
78
78
 
79
79
  LocationLabware = Union[
80
80
  "Labware",
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: opentrons
3
- Version: 8.4.1a2
3
+ Version: 8.5.0
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.4.1a2)
24
+ Requires-Dist: opentrons-shared-data (==8.5.0)
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.4.1a2) ; extra == 'flex-hardware'
38
+ Requires-Dist: opentrons-hardware[flex] (==8.5.0) ; extra == 'flex-hardware'
39
39
  Provides-Extra: ot2-hardware
40
- Requires-Dist: opentrons-hardware (==8.4.1a2) ; extra == 'ot2-hardware'
40
+ Requires-Dist: opentrons-hardware (==8.5.0) ; extra == 'ot2-hardware'
41
41
 
42
42
  .. _Full API Documentation: http://docs.opentrons.com
43
43
 
@@ -5,7 +5,7 @@ opentrons/legacy_broker.py,sha256=XnuEBBlrHCThc31RFW2UR0tGqctqWZ-CZ9vSC4L9whU,15
5
5
  opentrons/ordered_set.py,sha256=g-SB3qA14yxHu9zjGyc2wC7d2TUCBE6fKZlHAtbPzI8,4082
6
6
  opentrons/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
7
7
  opentrons/simulate.py,sha256=de_hZ3GGMxFB2U0nlvISSWpvzPClNsOI-cQ39Aj39RU,42225
8
- opentrons/types.py,sha256=eb4y2ParVirGs9KO9PEQVxdNlEt9Bqm8s20866N-gv0,18310
8
+ opentrons/types.py,sha256=C4hlZixE0U9bfgRD9A0gjoRepANKLVVjIqNIHnaDc9U,18328
9
9
  opentrons/calibration_storage/__init__.py,sha256=Zmc89u8dQh1uc8CzV5hKaSX4DeS2-P0r4PDCAXfS3z4,1608
10
10
  opentrons/calibration_storage/deck_configuration.py,sha256=Zmqw8Vu8jmPYLlqC5ivIBGluAjYbWrg6LMZ7s_qgnUw,2178
11
11
  opentrons/calibration_storage/encoder_decoder.py,sha256=xzXWz-T7snGV56nx6uGmnMpNqZbYFlzIq7gup29-Ds8,938
@@ -32,7 +32,7 @@ opentrons/cli/analyze.py,sha256=70ZR9bTZCedmvaYcrklRZXozgINf_gZseYgb1oSZVJ8,1483
32
32
  opentrons/config/__init__.py,sha256=B4kGZSsy6ESki_-K33sd0mRNrN_h2_bcZL8zEDOxHEg,21251
33
33
  opentrons/config/advanced_settings.py,sha256=pixIHtmbbAoIrQyvy98TtZoZ1uo3BpETQMPx7Wgfaio,26447
34
34
  opentrons/config/defaults_ot2.py,sha256=_l63QNW0aWTh0HGZcgF592ETJg8-W4M0XrQbbzkAPjA,6031
35
- opentrons/config/defaults_ot3.py,sha256=T2NlloDzdwbZBM4Mev2cj7BWcJQbbYOb2OPonvi2gfc,14750
35
+ opentrons/config/defaults_ot3.py,sha256=9GhAn1uCvrClzVgAJ2igXlFvLGQcd_TztY1Fe3a6S1U,14750
36
36
  opentrons/config/feature_flags.py,sha256=qiuHQ8Rna-iyhcOmCk-r91iOE6-dXWSC5fhOagHXoDA,2368
37
37
  opentrons/config/gripper_config.py,sha256=ch3PtyP96KOCQi6otf4U6Okt04JrEYhqpQM0SkmP_cA,1721
38
38
  opentrons/config/reset.py,sha256=qwq6UVhfra8tEglG35iS_uy-Tq5HXjqunE0fR7tmxdM,6740
@@ -105,7 +105,7 @@ opentrons/hardware_control/module_control.py,sha256=u0RpbOgr5pV5exgKg3qvNQdwdVuy
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=NkR2EoNq47dkHEXAdF6PI9atuPTxW0X51TFnRrMq5JU,44723
108
- opentrons/hardware_control/ot3api.py,sha256=nrqEkElCDdsno6Ct2IROX05u3UU1pOY5OWeHpF6W8is,124577
108
+ opentrons/hardware_control/ot3api.py,sha256=Y5O80lfFveRzRYOv7ctGudV-nQbvDSUdGW4U3s-zHCA,126014
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
@@ -118,9 +118,9 @@ opentrons/hardware_control/backends/__init__.py,sha256=u5Dg3AFZuvDV7hFqJ8I4F9D1d
118
118
  opentrons/hardware_control/backends/controller.py,sha256=MOVMq9s1rY_jHhajHB1hQ1MgXXyY54-gMrrvAuMsOFg,14622
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
- opentrons/hardware_control/backends/flex_protocol.py,sha256=jRfqqwt5OShcbJpmvdGVaqqcGsqJ3lFMQBvvDzOJP_0,12338
122
- opentrons/hardware_control/backends/ot3controller.py,sha256=e5f_9SvArE9mhCllgDJqhh3IkLEhBydfbBggQBW4MWM,67132
123
- opentrons/hardware_control/backends/ot3simulator.py,sha256=rmEKUtwwQV6Der-gqOWcfqXdVfnFR9Xx9zXG9aSH-CQ,29726
121
+ opentrons/hardware_control/backends/flex_protocol.py,sha256=yNspQsWBbL4wSLJnWHbqiKP_4Y-z89o70yASpOlUBIw,13068
122
+ opentrons/hardware_control/backends/ot3controller.py,sha256=b9xtI-bKSJzsAUYF5CVGrLSFSghSkhPoOc_bhwk_Q4U,70019
123
+ opentrons/hardware_control/backends/ot3simulator.py,sha256=W-iSqKuROba2odK_C3ETET7T1wxu1tKPhF000SsC15c,30486
124
124
  opentrons/hardware_control/backends/ot3utils.py,sha256=VYpyvaE3M9CzhgLL4ObgcXP3gmSGyaOyiRVqcbudCn0,23087
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=ftNn2ouBhPZiFbUm79I4z6ndup7XDmcNowhb-KREspE,8529
@@ -163,7 +163,7 @@ opentrons/hardware_control/instruments/ot3/gripper.py,sha256=BuXxrkh1UC12Ki1e0X9
163
163
  opentrons/hardware_control/instruments/ot3/gripper_handler.py,sha256=GVz6QreaYSo-Vt2b-NHnMV2ehjlDxJCWaqq5ufQYCYM,6055
164
164
  opentrons/hardware_control/instruments/ot3/instrument_calibration.py,sha256=9ERAxnUHc2BBoLPloLwGoNDqssKsjzBQv1cOjwp8umk,5432
165
165
  opentrons/hardware_control/instruments/ot3/pipette.py,sha256=t3K28QLEmj3DS_KXoXbeBjEE5PfQJlSePzvSNt4GXsI,32376
166
- opentrons/hardware_control/instruments/ot3/pipette_handler.py,sha256=evUNsLBhkUTSptsSWUpD_7iiTT189QaHAE88UKDW9Cw,39334
166
+ opentrons/hardware_control/instruments/ot3/pipette_handler.py,sha256=MRUMYXTVVe4kaoYYMJ2bIqb4uJwxpXP12kllkr47CnQ,39383
167
167
  opentrons/hardware_control/modules/__init__.py,sha256=9tLhyYJ4AQ2Kch8oD4-NEZ_dGC7IqY5hOdGLyKqJjLs,1549
168
168
  opentrons/hardware_control/modules/absorbance_reader.py,sha256=e1b-CxYEdFva0H5DuQ51B3hxfGlqktIvKpvkYkyGozI,13609
169
169
  opentrons/hardware_control/modules/errors.py,sha256=cREqoMc6nwGxQbLvZYDfIlq1mCv0alN42J7qxNBNiOY,165
@@ -204,12 +204,13 @@ opentrons/hardware_control/scripts/gripper_control.py,sha256=aUt9MAo6DXDhY4BfJRe
204
204
  opentrons/hardware_control/scripts/repl.py,sha256=RojtHjYV6sa6O4SeNEgs5SvnAK0imQK_XqoLQTKlzWU,5982
205
205
  opentrons/hardware_control/scripts/tc_control.py,sha256=V6hOzoRXL3xqIUEz8Raldd45aO2JgN5m5Hr08c1G8Ko,2741
206
206
  opentrons/legacy_commands/__init__.py,sha256=erkaz7hc2iHsTtjpFDWrR1V5n47it3U1qxD2zL9CkuE,63
207
- opentrons/legacy_commands/commands.py,sha256=8OtS9-_z8kotvByrVKtMaYnFiq8ZqDoTk6c-1Ne-iO0,13029
207
+ opentrons/legacy_commands/commands.py,sha256=fedAN-qkCvxBIhePqbISsqOK2xnZUXYWSt_J58vaBqk,13457
208
208
  opentrons/legacy_commands/helpers.py,sha256=Bc7mjK6V7b4h472NCx_qSwD0ojd_DM7mPg18tjo1DIQ,5228
209
209
  opentrons/legacy_commands/module_commands.py,sha256=EO2YtrfzCCaGPYjGXWfk6jjSHiEqk1E6D8Ef2qDi1qI,7769
210
210
  opentrons/legacy_commands/protocol_commands.py,sha256=nPYBrm7j9co83IGWjzae2GOVkEZdu58pXQv3eOdpLzg,1383
211
211
  opentrons/legacy_commands/publisher.py,sha256=n7hT9n4zahM3N2LNIAEs7hqs5RbHHie_tev2M8pke4Y,5441
212
- opentrons/legacy_commands/types.py,sha256=uMr5U8zDs6-2Da-2yQUao3zuOciaal7zB4xAwEgUE1Q,25649
212
+ opentrons/legacy_commands/robot_commands.py,sha256=c51gVAh-98PxhxmEL_3P80rejkaY58gAQ7S6wNwctao,1642
213
+ opentrons/legacy_commands/types.py,sha256=I3OZL5XjfKZGk0fXGWw_02QIkeW0646metQq46WCJWc,28007
213
214
  opentrons/motion_planning/__init__.py,sha256=Gma3SLAvKbL7QuhVGtL9zFx5vlk_7YBF0TjYZQSiv9s,755
214
215
  opentrons/motion_planning/adjacent_slots_getters.py,sha256=z7HkfC8ymAdGHdFq-sC_1_cERX_v29b9x4HKtJ6gp9I,5390
215
216
  opentrons/motion_planning/deck_conflict.py,sha256=gJG0dCQOvdEP-rr9EbVSGJCQPDXgvd04Jn4crGEbYLo,12604
@@ -217,62 +218,62 @@ opentrons/motion_planning/errors.py,sha256=-TOop0-NWaWb6KNYRoYLpWMca_kwsxxXEf31W
217
218
  opentrons/motion_planning/types.py,sha256=C4jXv5b02iBQmePMLrujgvHwqvEphBWtY18MPfKQpj4,1188
218
219
  opentrons/motion_planning/waypoints.py,sha256=Oo5BD7FKNN5WHDLA-ptHMurc3pmRPA-a6srazVyiUXs,8210
219
220
  opentrons/protocol_api/__init__.py,sha256=ZzmlAkCkLLDE2OLJXGIswjEmc_eiU5o91MUgknE79EY,2535
220
- opentrons/protocol_api/_liquid.py,sha256=Z9irWcYnDbL6nl-A3DG4PmD2JYsyyzzIL0B38sdrb_Y,3506
221
- opentrons/protocol_api/_liquid_properties.py,sha256=JJksL7GGVonHSkq0jHYrWCPV7E2q3SimGITI-Xavhm8,25853
221
+ opentrons/protocol_api/_liquid.py,sha256=exYaa5UjQQzmDROVBCnyqOVkbyZs0G1ZBMhH2bORNJY,5031
222
+ opentrons/protocol_api/_liquid_properties.py,sha256=DHdDHoset72mKq2sLaf355Zz1XdsP3hIiTkQZbUscb0,27913
222
223
  opentrons/protocol_api/_nozzle_layout.py,sha256=-WA71bRDISs9bLwHdWqAyM7HBc53sOA8_BOVqYsuN3g,1095
223
224
  opentrons/protocol_api/_parameter_context.py,sha256=dvGMVObWDSERrXfTKSIwc4YeIdF_RD-q8ASNaSBTcxw,12967
224
225
  opentrons/protocol_api/_parameters.py,sha256=BGH50BFawoNnh7NRDh0tRrNncdwz_Ta25tbQfwtlYoM,1298
225
- opentrons/protocol_api/_transfer_liquid_validation.py,sha256=h4GKve38RQhRqv9b8q_7AiyT6i50mtUVKhiuGDkb_VQ,3308
226
+ opentrons/protocol_api/_transfer_liquid_validation.py,sha256=wYuvW3UwF0JcK_Hmxim-Fmy1VkSR1TLBW-7u59XADL0,4443
226
227
  opentrons/protocol_api/_types.py,sha256=6tPCuOmZ5GNtu-24zyY6O-KkXEqzhTAlHlKHQH3Dvzs,1413
227
228
  opentrons/protocol_api/config.py,sha256=r9lyvXjagTX_g3q5FGURPpcz2IA9sSF7Oa_1mKx-7cw,625
228
229
  opentrons/protocol_api/create_protocol_context.py,sha256=wwsZje0L__oDnu1Yrihau320_f-ASloR9eL1QCtkOh8,7612
229
230
  opentrons/protocol_api/deck.py,sha256=94vFceg1SC1bAGd7TvC1ZpYwnJR-VlzurEZ6jkacYeg,8910
230
231
  opentrons/protocol_api/disposal_locations.py,sha256=NRiSGmDR0LnbyEkWSOM-o64uR2fUoB1NWJG7Y7SsJSs,7920
231
- opentrons/protocol_api/instrument_context.py,sha256=6KW5cQ-G0HOrYTMH7835dEqMJZ2F2yPH48sl0Eu9eW8,120754
232
- opentrons/protocol_api/labware.py,sha256=KRt91dOzmCX6l8LQ5Wny7kIk_L0Y69Uzpolp-geE0MY,60458
233
- opentrons/protocol_api/module_contexts.py,sha256=3tVXj6Q7n-WuTJPU_dvIQLzzGv1P-jsMuDtMVpuhAf8,48291
232
+ opentrons/protocol_api/instrument_context.py,sha256=mtflJtJfzHbnU3dFkQp8a2D4dqE1VRzy8JkqbDVpAJc,139254
233
+ opentrons/protocol_api/labware.py,sha256=AhL1JX10Xt-mpB85CAnEOBvz9r5v3xncJuLMkiY1FPM,60934
234
+ opentrons/protocol_api/module_contexts.py,sha256=Mzut2a92Gcv23wFPdNVU9fj2P--7WDqBx27xAJ7z8eo,48361
234
235
  opentrons/protocol_api/module_validation_and_errors.py,sha256=XL_m72P8rcvGO2fynY7UzXLcpGuI6X4s0V6Xf735Iyc,1464
235
- opentrons/protocol_api/protocol_context.py,sha256=RBdvcgWwyD6yoIocCtQiqVRszrGiz1SXheZlX8FJAkA,66227
236
- opentrons/protocol_api/robot_context.py,sha256=hlxFOYx0SkqK7TihT25leYt-RJ_VvhDDzzclf1L8DKw,10405
237
- opentrons/protocol_api/validation.py,sha256=uiVTHyJF3wSh5LLfaIDBTELoMNCAT17E767ursB_s1g,28684
236
+ opentrons/protocol_api/protocol_context.py,sha256=PkedIdTuE8EBd4I7E6q1HjfXQWwmO_j3Q8dmNwLVJ90,70060
237
+ opentrons/protocol_api/robot_context.py,sha256=D6ZdpFX30VTtVUDHitsVjabJQXD5TxOV9_Z6sik1LvE,11891
238
+ opentrons/protocol_api/validation.py,sha256=73QwpdK5337yu9g8jvpHHizOD0Mf3m6Wr9S8eikrHIc,28993
238
239
  opentrons/protocol_api/core/__init__.py,sha256=-g74o8OtBB0LmmOvwkRvPgrHt7fF7T8FRHDj-x_-Onk,736
239
240
  opentrons/protocol_api/core/common.py,sha256=q9ZbfpRdBvB3iDAOCyONtupvkYP5n1hjE-bwqGcwP_U,1172
240
241
  opentrons/protocol_api/core/core_map.py,sha256=gq3CIYPxuPvozf8yj8FprqBfs3e4ZJGQ6s0ViPbwV08,1757
241
- opentrons/protocol_api/core/instrument.py,sha256=iDYCzLtO5fOpbS4dOneMsYFovYjS-GCirHm3jDZSUq4,13712
242
+ opentrons/protocol_api/core/instrument.py,sha256=RCLvsoh3ybHIRxVFQaKEdcxbUA72q8n5Srq2pPhT39s,14202
242
243
  opentrons/protocol_api/core/labware.py,sha256=-ZOjkalikXCV3ptehKCNaWGAdKxIdwne8LRFQW9NAm4,4290
243
244
  opentrons/protocol_api/core/module.py,sha256=z2STDyqqxZX3y6UyJVDnajeFXMEn1ie2NRBYHhry_XE,13838
244
- opentrons/protocol_api/core/protocol.py,sha256=v7v28jfeHSfOf-tqFDW2chGtrEatPiZ1y6YNwHfmtAs,9058
245
+ opentrons/protocol_api/core/protocol.py,sha256=4ixn9qY0ca0GYyhTkSdKKm0slFdtzY5mXG_lgjGflns,9089
245
246
  opentrons/protocol_api/core/robot.py,sha256=QMAqj5Oqq3_IhTDyUF4jpWI4j2LRPP9crUiaYD_RUv4,1385
246
- opentrons/protocol_api/core/well.py,sha256=LUPOoSouNdRkTknryNjArtzDLz2Bl8-y9bscP3peVjM,3135
247
+ opentrons/protocol_api/core/well.py,sha256=Lf89YYEyq-ahRSRIFJw42vxIP8Fw6kzIUh9K1HEijUQ,3487
247
248
  opentrons/protocol_api/core/well_grid.py,sha256=BU28DKaBgEU_JdZ6pEzrwNxmuh6TkO4zlg7Pq1Rf5Xk,1516
248
249
  opentrons/protocol_api/core/engine/__init__.py,sha256=B_5T7zgkWDb1mXPg4NbT-wBkQaK-WVokMMnJRNu7xiM,582
249
250
  opentrons/protocol_api/core/engine/deck_conflict.py,sha256=q3JViIAHDthIqq6ce7h2gxw3CHRfYsm5kkwzuXB-Gnc,12334
250
251
  opentrons/protocol_api/core/engine/exceptions.py,sha256=aZgNrmYEeuPZm21nX_KZYtvyjv5h_zPjxxgPkEV7_bw,725
251
- opentrons/protocol_api/core/engine/instrument.py,sha256=A6ku8gzJBUGpi9qcLSsuJxZavtzUVhWxw8RHCasY5a8,96442
252
+ opentrons/protocol_api/core/engine/instrument.py,sha256=HCc9SMglY9gumz1sAg7PU9cb7pR36Qkn0Cf6G1779_o,103900
252
253
  opentrons/protocol_api/core/engine/labware.py,sha256=1xvzguNnK7aecFLiJK0gtRrZ5kpwtzLS73HnKvdJ5lc,8413
253
254
  opentrons/protocol_api/core/engine/load_labware_params.py,sha256=I4Cb8rqpBhmykQuZE8QRG802APrdCy_TYS88rm_9oGA,7159
254
255
  opentrons/protocol_api/core/engine/module_core.py,sha256=MLPgYSRJHUZPZ9rTLvsg3GlpL5b6-Pjk5UBgXCGrL6U,30994
255
256
  opentrons/protocol_api/core/engine/overlap_versions.py,sha256=PyGvQtQUg1wzNtkuGZtxwXm019PoIjq7em2JiWaxbXc,675
256
257
  opentrons/protocol_api/core/engine/pipette_movement_conflict.py,sha256=mMns5sKw3Qpfu3IJQf1q098zSdBSOKiHAaQshovZIh8,15225
257
258
  opentrons/protocol_api/core/engine/point_calculations.py,sha256=C2eF0fvJQGMqQv3DzNhc1-m8HTAXTyTsHPJEPrEUEmo,2502
258
- opentrons/protocol_api/core/engine/protocol.py,sha256=_1gdg4lq2B21LWV9Tqb924E39HCPCgozAHxaCRGDSIk,46759
259
- opentrons/protocol_api/core/engine/robot.py,sha256=o252HrC11tmZ5LRKT6NwXCoTeqcQFXHeNjszfxbJHjo,5366
259
+ opentrons/protocol_api/core/engine/protocol.py,sha256=OvE8kDONIR0z5S-FV10KUw5v5_HskPk7aqFNyTSUasc,46919
260
+ opentrons/protocol_api/core/engine/robot.py,sha256=bzUt23NG-clD-9-QFsV_6nm3fMgSmvYEG9DyyZI1xgw,5366
260
261
  opentrons/protocol_api/core/engine/stringify.py,sha256=GwFgEhFMk-uPfFQhQG_2mkaf4cxaItiY8RW7rZwiooQ,2794
261
- opentrons/protocol_api/core/engine/transfer_components_executor.py,sha256=96SsftBRPB5WCeChLokXkdPJcmjP8FqlXEZXhNAlZKA,37582
262
- opentrons/protocol_api/core/engine/well.py,sha256=9_BgB8O7gE4Y3XgoyJMNtcZasgxSPqDEyAzrQjI60qU,8161
262
+ opentrons/protocol_api/core/engine/transfer_components_executor.py,sha256=2RAcqU-a2uB6YQw7MGKIjeFhNkVFTD3AQySPGgrmpxc,43661
263
+ opentrons/protocol_api/core/engine/well.py,sha256=IaaFK-3hoUfabfn_twIT7zcAynhzAmRxDnvABss2szo,8923
263
264
  opentrons/protocol_api/core/legacy/__init__.py,sha256=_9jCJNKG3SlS_vljVu8HHkZmtLf4F-f-JHALLF5d5go,401
264
265
  opentrons/protocol_api/core/legacy/deck.py,sha256=qHqcGo-Kdkl9L1aOE0pwrm9tsAnwkXbt4rIOr_VEP-s,13955
265
266
  opentrons/protocol_api/core/legacy/labware_offset_provider.py,sha256=2DLIby9xmUrwLb2ht8hZbvNTxqPhNzWijd7yCb2cqP8,3783
266
- opentrons/protocol_api/core/legacy/legacy_instrument_core.py,sha256=MMB5t77J8AceBa58Ri2NBA9jUfibEFr8IwkWpacg2BM,26508
267
+ opentrons/protocol_api/core/legacy/legacy_instrument_core.py,sha256=Q4zYHMElPRSRG4dcm4eXQ0sj5I8ZpuJwwtfJeTlYv4E,27010
267
268
  opentrons/protocol_api/core/legacy/legacy_labware_core.py,sha256=WQOgtMlq--zv0Ch7mmraYr9rQBT4ie2zHqwgamBq9J8,8606
268
269
  opentrons/protocol_api/core/legacy/legacy_module_core.py,sha256=tUhj88NKBMjCmCg6wjh1e2HX4d5hxjh8ZeJiYXaTaGY,23111
269
- opentrons/protocol_api/core/legacy/legacy_protocol_core.py,sha256=ZIFC7W6YA61oWWkq5xYGTcI_2S2pmALz16uB1R8HVyQ,23670
270
- opentrons/protocol_api/core/legacy/legacy_well_core.py,sha256=LNMF0q3A6tUJQb7zM5eBg0IGpb85OLPzDdsex8y3hNU,5210
270
+ opentrons/protocol_api/core/legacy/legacy_protocol_core.py,sha256=fodiDwsBi1_Yd6Hgf8Kx-iTvky_J6WHmGhwmeRBHqmE,23702
271
+ opentrons/protocol_api/core/legacy/legacy_well_core.py,sha256=wxeiPBqaS8YQwRpDGwF7ykJ0s2y3bExwVGpNbUZMmFg,5560
271
272
  opentrons/protocol_api/core/legacy/load_info.py,sha256=r-WaH5ZJb3TRCp_zvbMMh0P4BhbZM8HsBs1K_pU98dk,1857
272
273
  opentrons/protocol_api/core/legacy/module_geometry.py,sha256=lvWFHZ81-JFw-1VZUW1R3yUIb59xpXT6H3jwlRintRo,21082
273
274
  opentrons/protocol_api/core/legacy/well_geometry.py,sha256=n5bEsvYZXXTAqYSAqlXd5t40bUPPrJ2Oj2frBZafQHA,4719
274
275
  opentrons/protocol_api/core/legacy_simulator/__init__.py,sha256=m9bLHGDJ6LSYC2WPm8tpOuu0zWSOPIrlybQgjRQBw9k,647
275
- opentrons/protocol_api/core/legacy_simulator/legacy_instrument_core.py,sha256=j_EAItSq1mZ61qcRwacDDsXS9tJzG6rDtX8OQOFynG8,22947
276
+ opentrons/protocol_api/core/legacy_simulator/legacy_instrument_core.py,sha256=_C-9nxssbYXh5tuQdM-wqL3lptcuHPlXZM3tiO-Qm9A,23449
276
277
  opentrons/protocol_api/core/legacy_simulator/legacy_protocol_core.py,sha256=28HrrHzeUfnGKXpZqQ-VM8WbPiadqVhKj2S9y33q6Lo,2910
277
278
  opentrons/protocol_engine/__init__.py,sha256=UPSk7MbidkiSH_h4V3yxMvyTePKpRr5DM9-wfkJrlSo,4094
278
279
  opentrons/protocol_engine/create_protocol_engine.py,sha256=tfDIsC7_JKlRiCXPB_8tuxRsssU6o0ViRmWbGPtX9QA,7582
@@ -298,7 +299,7 @@ opentrons/protocol_engine/commands/aspirate_while_tracking.py,sha256=se1GIJWxxVC
298
299
  opentrons/protocol_engine/commands/blow_out.py,sha256=3gboq4x5S8fq7j4ZZGNClXFDlOjcdW1v2g58GPdhaPI,4338
299
300
  opentrons/protocol_engine/commands/blow_out_in_place.py,sha256=jm2XXyJfIP9-AAFwXhD59_13nX18-i6QqpLGb-lK7sI,3391
300
301
  opentrons/protocol_engine/commands/command.py,sha256=1hWH_KWg_WDL4R4VXe1ZH2vO6pYt5SA-ZpuPPF1oV5E,10149
301
- opentrons/protocol_engine/commands/command_unions.py,sha256=-jCoa27fy6SGFG1VBgjhScxyE7pvQprVZAlFuPPBNuU,26399
302
+ opentrons/protocol_engine/commands/command_unions.py,sha256=OaWhzMLxBLEj-toqAEp1Q2RzRWWG80wzhceL-SZIfcg,26399
302
303
  opentrons/protocol_engine/commands/comment.py,sha256=-6o07x-MZ6-IvZas84OVFmqF0gAbbKWJZIlGVYThCqM,1638
303
304
  opentrons/protocol_engine/commands/configure_for_volume.py,sha256=Ntx0Qi55GtJ5Gm4ZMBCCxo4xWIgb1tHy4Sn1BRzPlKc,3612
304
305
  opentrons/protocol_engine/commands/configure_nozzle_layout.py,sha256=M_s5Ee03a7sSnbvkibDHzEqZwkca0y8J7F60EnSEq7A,3849
@@ -308,14 +309,14 @@ opentrons/protocol_engine/commands/dispense_in_place.py,sha256=gcj0HXUkPrU3Qz_Db
308
309
  opentrons/protocol_engine/commands/dispense_while_tracking.py,sha256=vn0nw5D4ggpTEwarConFPHUVI4gNShehs5v1U5Kn9sY,6644
309
310
  opentrons/protocol_engine/commands/drop_tip.py,sha256=ZZ63IoiT4dgWcemAHhNQfV4DUhkl-ToJyTRTxIiyAkc,7895
310
311
  opentrons/protocol_engine/commands/drop_tip_in_place.py,sha256=gwSNEKBwds7kOTucXKSK74ozrDe7Cqhta7NR6IqKV3g,7062
311
- opentrons/protocol_engine/commands/generate_command_schema.py,sha256=21Al_XQyRMNTb2ssVaxcNSPlgreOsCtKVXf8kZgpvR4,2296
312
- opentrons/protocol_engine/commands/get_next_tip.py,sha256=JS5hN_UScAiUIo_j7KT2cR1GDj3hDvaNPTSovWbgTHo,4828
312
+ opentrons/protocol_engine/commands/generate_command_schema.py,sha256=e88q7DCxjEM1xSrnXV8jBdo6AgMc15_W8cC-i-ESvy0,2312
313
+ opentrons/protocol_engine/commands/get_next_tip.py,sha256=4jpFlG_QQbsjtpAUXdMIYWt7YnyKUjGGDAjhPFSAz54,4830
313
314
  opentrons/protocol_engine/commands/get_tip_presence.py,sha256=vK80XN5qCzK44SOSxH3QJkIj9dPmvri4J4FZJeP1X08,2543
314
315
  opentrons/protocol_engine/commands/hash_command_params.py,sha256=obWy4TbVH97SyhNqrSD6iP1wgZ20JoaH1rilZCjXxIs,1530
315
316
  opentrons/protocol_engine/commands/home.py,sha256=g77hewv-puMxEHFy0PPnl8-Nkbb7K-2qk36HbWG_Nik,3326
316
317
  opentrons/protocol_engine/commands/labware_handling_common.py,sha256=WtkdGIjQ5GBiBWsenyLyPLkSn6phgoesfWxCFTmG1AU,1074
317
318
  opentrons/protocol_engine/commands/liquid_probe.py,sha256=wjD-a_xUasEAQSfigexcIJ0FkjhEejlFUh6hpm-Y-JA,15899
318
- opentrons/protocol_engine/commands/load_labware.py,sha256=p02iOEbnYtq5gklOKTF2RNmYLVR4Ak7lnEUpSZjaHYc,8625
319
+ opentrons/protocol_engine/commands/load_labware.py,sha256=z919MRjzva9a7QW-brAnDu1BH0VLyyllHFmXGeBwdw8,7611
319
320
  opentrons/protocol_engine/commands/load_lid.py,sha256=8zRWBfdAQHSULLtjzYPEflkXC_rSSLZML9vJ4TJjxoQ,5484
320
321
  opentrons/protocol_engine/commands/load_lid_stack.py,sha256=WgSBr9bd4rRwv6yYztYuz-mIHMByPom6G0Vzo4znpAY,10572
321
322
  opentrons/protocol_engine/commands/load_liquid.py,sha256=KSS3Ps4PDdSrqHTStbioQP7P1xVzParlOH_AXLy2B1A,3417
@@ -329,14 +330,14 @@ opentrons/protocol_engine/commands/move_to_addressable_area_for_drop_tip.py,sha2
329
330
  opentrons/protocol_engine/commands/move_to_coordinates.py,sha256=2qZliN1ZLdgNDiGdaTafgKB2gxvHCpMbvX01kJ-kQuM,3179
330
331
  opentrons/protocol_engine/commands/move_to_well.py,sha256=m3GnX34Aimf7WCDjkxOMFF31kCyXVo_RqY-2S8H8Vp4,3418
331
332
  opentrons/protocol_engine/commands/movement_common.py,sha256=bnJuwcp6nkyoxkTXqfSXnnKgZ7TKflkMGZSHXuPWsRk,11950
332
- opentrons/protocol_engine/commands/pick_up_tip.py,sha256=pa2PXDvPyh5ZIYQeu_9XUnybE9CQ6VXooDO07gXCS5U,7726
333
+ opentrons/protocol_engine/commands/pick_up_tip.py,sha256=VtDQ44VOW8VcNy1Rf8tCcS7lAhJjWptAeaD65d52Oks,7942
333
334
  opentrons/protocol_engine/commands/pipetting_common.py,sha256=WoO_kCFznxvAO1vayiNvpI1-b7EQsaj_aWjhfQXTnEE,15355
334
335
  opentrons/protocol_engine/commands/prepare_to_aspirate.py,sha256=qs1GtVfzyk_Lzv8g6K8GIZg4NwwH4Uop9_df6YFsBDA,3559
335
336
  opentrons/protocol_engine/commands/pressure_dispense.py,sha256=mGCJDFKwy6MPHg-AOttDg9TffHmp-eM_1y6x8CaErJE,4711
336
337
  opentrons/protocol_engine/commands/reload_labware.py,sha256=eB1X7M9rHso1qc0beBTVHm5SHbjS6IODsIDj9RhR3mI,2910
337
338
  opentrons/protocol_engine/commands/retract_axis.py,sha256=3h0eb6O3fjrCBY89q9tnjDFUGQXN9qafURxvXGcmCm4,2889
338
339
  opentrons/protocol_engine/commands/save_position.py,sha256=koxPh6t8s7Cl1vjPt9e6raZz5_rQtXsg_IGdWqAPzPI,3395
339
- opentrons/protocol_engine/commands/seal_pipette_to_tip.py,sha256=xGCcoYbkSwRSPsuZm4idK5UQgdaAvVDtB3_JKwZ8Wj0,12290
340
+ opentrons/protocol_engine/commands/seal_pipette_to_tip.py,sha256=XcofbN6KpqzSZ_-hf26sn05XyMh0WdVPQNDO_66v4PQ,12286
340
341
  opentrons/protocol_engine/commands/set_rail_lights.py,sha256=QfB-NKw2ktBvSge1jOi9wYVLD19Vj6HiKw22Fsn0aSo,2090
341
342
  opentrons/protocol_engine/commands/set_status_bar.py,sha256=LJGFBteL8bD8tG8yMPQir93mWnGYlPy3er00THbp6kk,2834
342
343
  opentrons/protocol_engine/commands/touch_tip.py,sha256=620D8mXSKQdjXQonNVztz_ENOqjuHQd_oa-nHFiM2Ls,5713
@@ -375,13 +376,13 @@ opentrons/protocol_engine/commands/heater_shaker/wait_for_temperature.py,sha256=
375
376
  opentrons/protocol_engine/commands/magnetic_module/__init__.py,sha256=Y9RCovlGHc1unTllpbjcib1Y1qvzSYuV9EeAMzaHyeI,586
376
377
  opentrons/protocol_engine/commands/magnetic_module/disengage.py,sha256=yS4vXR_ajLpuk8TDGtTcnL5TvkJG7KRf1G113EyPQdk,3181
377
378
  opentrons/protocol_engine/commands/magnetic_module/engage.py,sha256=O9lDRSfcvWD5MZVpeL_heq1vk4e3C1htDYduI3OKVCk,4169
378
- opentrons/protocol_engine/commands/robot/__init__.py,sha256=Qnt1wwq5-dveHoJlIUqQvYmc-DyDMgmxFys7vDI6Mow,1583
379
- opentrons/protocol_engine/commands/robot/close_gripper_jaw.py,sha256=7RcAX5ayZle81A9HSMJQ1nipOPALvGcJOmlmp1RlKiI,2508
379
+ opentrons/protocol_engine/commands/robot/__init__.py,sha256=tbrYizmAau3raFOf7ydps5KmAGtElGz363mwPcNoGzc,1583
380
+ opentrons/protocol_engine/commands/robot/close_gripper_jaw.py,sha256=sqOYMXiWG-gQUzFkYI3cyLdQfl8xtc8HxmsalpIgHLw,2803
380
381
  opentrons/protocol_engine/commands/robot/common.py,sha256=CFJl5rwMwYsBr2_3-RGmJ4GJS6tF2j7MSrXkLV9HQjA,589
381
382
  opentrons/protocol_engine/commands/robot/move_axes_relative.py,sha256=lV6O-UE3-RveCKIx6iyc8_6RhBXyixBgw9ehQkWkxho,3180
382
383
  opentrons/protocol_engine/commands/robot/move_axes_to.py,sha256=furx9WyRwauk3i5tKF7SmmI9Au44Co8YWH0ItTjTaW4,3236
383
384
  opentrons/protocol_engine/commands/robot/move_to.py,sha256=Wzj7Wlk-fVgM1hrpI-vV4zYWIzzRCKfOwHoDN_OjNZ0,2726
384
- opentrons/protocol_engine/commands/robot/open_gripper_jaw.py,sha256=go0FHP2wBej0lVs1x3XhKTrdxg567l8AXNeBaw-5gsA,2106
385
+ opentrons/protocol_engine/commands/robot/open_gripper_jaw.py,sha256=QGR0wEpv5k3itq6WysbvaYKbJPQ37CaCi-xa0cXpqTE,2370
385
386
  opentrons/protocol_engine/commands/temperature_module/__init__.py,sha256=DKzhgXNdCHop_U4ogP8AMcAVq90pBQX0MVZjkiDH-Ds,1276
386
387
  opentrons/protocol_engine/commands/temperature_module/deactivate.py,sha256=IIEIKle1Ac_qPB-hUqvWu9qPlpNIHaj9ncpRuxz_hbU,2892
387
388
  opentrons/protocol_engine/commands/temperature_module/set_target_temperature.py,sha256=A0WaSxbyrU5uMV-eRHz38QOpFtD2yNRYEY89jKBya1k,3462
@@ -397,9 +398,9 @@ opentrons/protocol_engine/commands/thermocycler/set_target_block_temperature.py,
397
398
  opentrons/protocol_engine/commands/thermocycler/set_target_lid_temperature.py,sha256=3qsG2WBatgD53vdsFR-GZU2VXwydmD-r_0J2Uj8mM1M,3384
398
399
  opentrons/protocol_engine/commands/thermocycler/wait_for_block_temperature.py,sha256=Wc8NQBIOcSl5nwsts6KlUfJXHcvXnSF1td_olzqJGec,3101
399
400
  opentrons/protocol_engine/commands/thermocycler/wait_for_lid_temperature.py,sha256=KZHt1dUWPrWUk_d0hl0TiAQhfaVdc_YZcxyMcZ0FLq8,2971
400
- opentrons/protocol_engine/commands/unsafe/__init__.py,sha256=lx3TFW_78XK0bdtLFuGXrvUGaeYrSFj5pHucEL-IYHI,2499
401
+ opentrons/protocol_engine/commands/unsafe/__init__.py,sha256=wmBrVOjkiLma8ncul0wb5Oe_V3vDObM_WUc_Yc_TIwo,3229
401
402
  opentrons/protocol_engine/commands/unsafe/unsafe_blow_out_in_place.py,sha256=uK9240g-lx0JE1N1f6Nfj_crhf9olHmzcxbUk6sMZoU,3374
402
- opentrons/protocol_engine/commands/unsafe/unsafe_drop_tip_in_place.py,sha256=BHBK14fC4P9B3IWILj-qWfK8QFdfntnJAwP1eRkThnM,4061
403
+ opentrons/protocol_engine/commands/unsafe/unsafe_drop_tip_in_place.py,sha256=z5ewHGQieq-x6GwwpTXlhSi5fT9gQIDAUesGWuf-fwA,4041
403
404
  opentrons/protocol_engine/commands/unsafe/unsafe_engage_axes.py,sha256=Ze5hLslsXdd7l3lF0GKOPoWCdTmqTTGIjiTQyNhL-W4,2502
404
405
  opentrons/protocol_engine/commands/unsafe/unsafe_place_labware.py,sha256=mcIPhcQvVCUL_wfb2-JPrCvIFTXMVD93VeJb4H1LmhM,7873
405
406
  opentrons/protocol_engine/commands/unsafe/unsafe_ungrip_labware.py,sha256=9Sjx92JZhi-tRY1P77M--jJp4JzIGESXUakIpstESwQ,2461
@@ -416,14 +417,14 @@ opentrons/protocol_engine/execution/error_recovery_hardware_state_synchronizer.p
416
417
  opentrons/protocol_engine/execution/gantry_mover.py,sha256=LFTPmzuGRuP6IspgXxIEyJIXV0tHkc4UWDDjWFCClYo,26477
417
418
  opentrons/protocol_engine/execution/hardware_stopper.py,sha256=wlIl7U3gvnOiCvwrixHDcrfqXy3l4GFp0G232nASL8g,5857
418
419
  opentrons/protocol_engine/execution/heater_shaker_movement_flagger.py,sha256=BSFLzSSeELAYZCrCUfJZx5DdlrwU06Ur92TYd0T-hzM,9084
419
- opentrons/protocol_engine/execution/labware_movement.py,sha256=XYVcxZOQ6_udpxcpwkIJpVD8-lgWLhizJAcRD9BclIo,12247
420
- opentrons/protocol_engine/execution/movement.py,sha256=AWcj7xlrOh3QrvoaH0sZO63yrPCEc7VE8hKfJNxxtP0,12527
420
+ opentrons/protocol_engine/execution/labware_movement.py,sha256=vqatNazzTz4NOxKQIlaTyiiqL-2dLDCtc5VW-CxeUyQ,12496
421
+ opentrons/protocol_engine/execution/movement.py,sha256=jgpMoYLV3WhLQ7wNL09LDpua7pgWb5Njf-kg5RTAbyw,12747
421
422
  opentrons/protocol_engine/execution/pipetting.py,sha256=cnJYbLiJ2QD1xziD8dkRm0mZG3xOk00klW8Ff8rgSG4,22199
422
- opentrons/protocol_engine/execution/queue_worker.py,sha256=riVVywKIOQ3Lx-woFuuSqqBtfeKFt23nCUnsk7gSVoI,2860
423
+ opentrons/protocol_engine/execution/queue_worker.py,sha256=LM753TrQzJoKUSIrtcaHDOWLe58zcpx-fUOLVpyDlHM,3302
423
424
  opentrons/protocol_engine/execution/rail_lights.py,sha256=eiJT6oI_kFk7rFuFkZzISZiLNnpf7Kkh86Kyk9wQ_Jo,590
424
425
  opentrons/protocol_engine/execution/run_control.py,sha256=ksvI2zkguC4G3lR3HJgAF8uY1PNcaRfi7UOYu-oIZgo,1144
425
426
  opentrons/protocol_engine/execution/status_bar.py,sha256=tR7CHS_y1ARQxcSKDO4YFU2cqVQhePzalmzsyH8b23A,970
426
- opentrons/protocol_engine/execution/thermocycler_movement_flagger.py,sha256=Ouljgjtm7-sCXwDcpfbir84dAZh5y89DNiuKedYimyg,6790
427
+ opentrons/protocol_engine/execution/thermocycler_movement_flagger.py,sha256=A4VD_0W5oqEx05UIsDnNbTYCFH0VEabxJqHFkssBPHs,8249
427
428
  opentrons/protocol_engine/execution/thermocycler_plate_lifter.py,sha256=j33nYV8rkeAYUOau8wFIyJVWjWkjyildleYHCysez-o,3375
428
429
  opentrons/protocol_engine/execution/tip_handler.py,sha256=Ouunj3KVqz-UMbkjFIbJJr2zpfgcUht_r4_60uHEx3M,19731
429
430
  opentrons/protocol_engine/notes/__init__.py,sha256=G0bIQswsov7MrJU0ArrOaWcOTxJU9BCUmNR3LRoNg-Q,311
@@ -434,7 +435,7 @@ opentrons/protocol_engine/resources/deck_data_provider.py,sha256=63c-Hmwy5IbVSoA
434
435
  opentrons/protocol_engine/resources/file_provider.py,sha256=6btMCDN7NsyFlV7Icy5vDO7xsgbmtkeAM_KCuQ-GvRo,5903
435
436
  opentrons/protocol_engine/resources/fixture_validation.py,sha256=WBGWFTmBwLPjOBFeqJYxnaSRHvo4pwxvdhT4XUW_FMY,1857
436
437
  opentrons/protocol_engine/resources/labware_data_provider.py,sha256=i0otj_dACWHK23mBGjXGwTJtE4sooov2_YQOMIulzJo,3836
437
- opentrons/protocol_engine/resources/labware_validation.py,sha256=fahspda2v_rrPluABTjBjbWJyrlG_qn54CkVr6iRqT8,2563
438
+ opentrons/protocol_engine/resources/labware_validation.py,sha256=6UkWktVvGNpOrRov4vEZ2A8qbjJMuKlisSQvr4Z749A,2747
438
439
  opentrons/protocol_engine/resources/model_utils.py,sha256=C3OHUi-OtuFUm3dS5rApSU3EJ0clnaCZEyBku5sTjzA,941
439
440
  opentrons/protocol_engine/resources/module_data_provider.py,sha256=DaTv3QqrlpKEXlIfBCSgXwlyOrV2YqWcxlHD0MGKWWw,1558
440
441
  opentrons/protocol_engine/resources/ot3_validation.py,sha256=0x81JoZBXcj2xUVcOF7v5ETc8y5T_sbs-jTPxuSnooE,744
@@ -442,25 +443,25 @@ opentrons/protocol_engine/resources/pipette_data_provider.py,sha256=zyaasVJuWb_3
442
443
  opentrons/protocol_engine/state/__init__.py,sha256=hDdA4GjXbi9h7K_FMbQGT9tOw3YtRNn5LIryMdkotS8,36
443
444
  opentrons/protocol_engine/state/_abstract_store.py,sha256=b5cqKZhI6ERZj6gyL0kDutD6ogdQngR3T-JmPATvhi8,631
444
445
  opentrons/protocol_engine/state/_move_types.py,sha256=STLssWsXMY92F_asAQrixv10A6QsCkHYAvKQs0igTGE,2230
445
- opentrons/protocol_engine/state/_well_math.py,sha256=HWVy4ezd-tRWIgAXtXTLXbzZiPec3mOzQFtNZQoo_d4,9705
446
+ opentrons/protocol_engine/state/_well_math.py,sha256=hppbOs4G6yQ6wgvKQWNhOs2zdYA_MwFW7qKgg2bGyx0,9714
446
447
  opentrons/protocol_engine/state/addressable_areas.py,sha256=vHshe5bjiJDBAvcI0k7i6vVy5zz0NAhw4VOFYiRjoiw,28760
447
448
  opentrons/protocol_engine/state/command_history.py,sha256=ZwP7DD8AMohoo1iDZgnpV50_RZvlSrYpEFzcc2kKXyA,11574
448
- opentrons/protocol_engine/state/commands.py,sha256=aoON_C5DbiIEPxOGATvwCsSG9eHsFe-_f798WZPh0NI,45371
449
+ opentrons/protocol_engine/state/commands.py,sha256=8CI3xIaDThD0XgOp8itsoiHMJpMBfcMYCaWOSkDPB1U,44435
449
450
  opentrons/protocol_engine/state/config.py,sha256=7jSGxC6Vqj1eA8fqZ2I3zjlxVXg8pxvcBYMztRIx9Mg,1515
450
451
  opentrons/protocol_engine/state/files.py,sha256=w8xxxg8HY0RqKKEGSfHWfrjV54Gb02O3dwtisJ-9j8E,1753
451
452
  opentrons/protocol_engine/state/fluid_stack.py,sha256=uwkf0qYk1UX5iU52xmk-e3yLPK8OG-TtMCcBqrkVFpM,5932
452
- opentrons/protocol_engine/state/frustum_helpers.py,sha256=0xWDgYV_FyGKRmae3_5dKY6OJbRgvjC-veEFuZj_0-4,17194
453
+ opentrons/protocol_engine/state/frustum_helpers.py,sha256=9yUJP6YJgGxcvq2TNzR7hufB7wkd1RjiQVOlPIwUvUY,17220
453
454
  opentrons/protocol_engine/state/geometry.py,sha256=dDCrhiyYUn-0KxEVHrIoN0V_jBDV1DFJ5f3XIjp_ZLk,98690
454
- opentrons/protocol_engine/state/labware.py,sha256=rehy7R1HIhxx3DTtTHIKxqHoBQJ_1tDhhiculMJeIy8,57556
455
+ opentrons/protocol_engine/state/labware.py,sha256=qb9F2xUtoyhg2FdhBR0wFlW3aUJeHrBUh-NvYHzbM8k,58243
455
456
  opentrons/protocol_engine/state/liquid_classes.py,sha256=u_z75UYdiFAKG0yB3mr1il4T3qaS0Sotq8sL7KLODP8,2990
456
457
  opentrons/protocol_engine/state/liquids.py,sha256=NoesktcQdJUjIVmet1uqqJPf-rzbo4SGemXwQC295W0,2338
457
- opentrons/protocol_engine/state/modules.py,sha256=U3CUhV0KOz_eKBED5QNEanWq4JICqrzHdTbmV3nDouM,58786
458
+ opentrons/protocol_engine/state/modules.py,sha256=OKVSXd8udbDV1UrWMvyshhRqRrVyerE5QRHrEZDEkrg,58796
458
459
  opentrons/protocol_engine/state/motion.py,sha256=pWt28-vBaO6dz_rtvoliUsGDvls_ML6sRfDOwmD0F7g,15086
459
- opentrons/protocol_engine/state/pipettes.py,sha256=nqeJWn98S8wSDW-CPJnjEl5hEIkmhZOInmDzn0-kxDM,36921
460
+ opentrons/protocol_engine/state/pipettes.py,sha256=FAFid3yC1YbuLELgWT4E069Fi0lp_PsN-1bUojJNL0s,37337
460
461
  opentrons/protocol_engine/state/state.py,sha256=gHmXrlq17kx3sTbizq8gPoJQx_0nazxnooLODvrLY5k,15468
461
462
  opentrons/protocol_engine/state/state_summary.py,sha256=tu-xJYKbKzeLk9Z0RwSaz0tUs6blYuxSA5V2n7_zSGk,1180
462
- opentrons/protocol_engine/state/tips.py,sha256=XAFP7IpR-L9p6BKz4HWcAnRxXO4FHXrK5pIR_9eshfE,20145
463
- opentrons/protocol_engine/state/update_types.py,sha256=2PUsBE50y2PRhLosooESyLXkVTWyaM0-8Su1JD-_Hfg,27148
463
+ opentrons/protocol_engine/state/tips.py,sha256=kvYG3VO98VGloJiGiWNoNJ1JOfqPGWx6Yz--LXHcfK4,18307
464
+ opentrons/protocol_engine/state/update_types.py,sha256=QcEBV11dcmjrpUlNKibVX1AAGzf6-n4ADNzErN-MJSA,26898
464
465
  opentrons/protocol_engine/state/wells.py,sha256=rCFiyS8EOgvmsrFr2pHU3SY79ZRkZg_nhFfoH1pMjb0,10996
465
466
  opentrons/protocol_engine/state/module_substates/__init__.py,sha256=7OIzc7Zzm-7WRys6M90ZzJ7BZhivuZ1BHJ35TdOPasE,1377
466
467
  opentrons/protocol_engine/state/module_substates/absorbance_reader_substate.py,sha256=jiD8WqFEafGnka5n46vJ_qhS8Ofh--hTxuBWXk8eefE,1431
@@ -485,7 +486,7 @@ opentrons/protocol_engine/types/labware_offset_vector.py,sha256=5Hhyv60I8KpZdUDn
485
486
  opentrons/protocol_engine/types/liquid.py,sha256=6Ec0fC0SEN3jKHYeFSwbQxdEAj5hxDPHlDcL1wXlx6k,810
486
487
  opentrons/protocol_engine/types/liquid_class.py,sha256=SF5WS3s38S87efUqawRGSIYqjhwa4pNx7fB1xdiGHl0,2384
487
488
  opentrons/protocol_engine/types/liquid_handling.py,sha256=Xx1GihrNRJJdJJA5zIwWvIYNydbSXAHjSUAliF18Iu0,319
488
- opentrons/protocol_engine/types/liquid_level_detection.py,sha256=0Pf9B_w6tTZ110pGbjgZVoigmOIEF0DVuXVHvhRKeNQ,4395
489
+ opentrons/protocol_engine/types/liquid_level_detection.py,sha256=hdSztrZcexko7p4lEkC8YuKlepv3j6ovKhMeQZuUHcg,6348
489
490
  opentrons/protocol_engine/types/location.py,sha256=qIYBs86RO1ws2aXStmdx0CqEVNF9enlj-ACknf75nSs,5707
490
491
  opentrons/protocol_engine/types/module.py,sha256=E2tQVGRBPL9DCbbY8dfC4PQafRz-ws6UJRkF9i-3q9Q,10249
491
492
  opentrons/protocol_engine/types/partial_tip_configuration.py,sha256=4RMtHOAX-dgpXWA737tthj_izTBnhKphBcA24LAKmhI,2760
@@ -508,11 +509,11 @@ opentrons/protocol_runner/__init__.py,sha256=Sr0gBDzNv3nuHPapeNy_IWadhohtwmlhfnB
508
509
  opentrons/protocol_runner/create_simulating_orchestrator.py,sha256=S1Fu9TMa3NrujcPYTfULHpfqLTkrZPYz7CbcXtcDes0,4249
509
510
  opentrons/protocol_runner/json_file_reader.py,sha256=dE9ujq3sWyKF1yFg0AN8h-roGVfvqf1tEcIq5wxHbxE,2341
510
511
  opentrons/protocol_runner/json_translator.py,sha256=lrDzHOOkQ19ac4KEdUbfEOnfx-F_QCO-6oGqQZegy4g,12134
511
- opentrons/protocol_runner/legacy_command_mapper.py,sha256=ubZenLW4Wy-sxWpcHYvFWPYdH7pEtpnl03VWiXMTTNM,36703
512
+ opentrons/protocol_runner/legacy_command_mapper.py,sha256=t_TTa5_68qNvnFR1zt5RNyCqWnCK1HboUNSXagemTPg,36936
512
513
  opentrons/protocol_runner/legacy_context_plugin.py,sha256=G_qpeyaLvsCjb72_n96Luy8CPSfgPZpt0QKVzKc6LKY,4730
513
514
  opentrons/protocol_runner/protocol_runner.py,sha256=YUHZvttojkYghq82IWYWvTfN2kUZ1oZdm8Fm4K-zftI,21658
514
515
  opentrons/protocol_runner/python_protocol_wrappers.py,sha256=KEuM4M7rYD4zLjTqK89T47CiBIZJ42kG0JXWarLUq4E,6511
515
- opentrons/protocol_runner/run_orchestrator.py,sha256=iQPhdZERs_w6C-uGXPYszOHn2UP0A-5cjNQWynqy_dk,19269
516
+ opentrons/protocol_runner/run_orchestrator.py,sha256=cdvySp-3IdMitg74SCTaGb5f2G5_9DUkjGjL7mnFWNU,19275
516
517
  opentrons/protocol_runner/task_queue.py,sha256=YH8_lvuLBYjfzXAOJU8DYXizQcbaxGmUiAPmd7kHERw,2581
517
518
  opentrons/protocols/__init__.py,sha256=cOUxilkIvdlqGvN4nYJQYr0TGdIWnzxBaTfoz3svmw8,245
518
519
  opentrons/protocols/bundle.py,sha256=QW_2kwnxgdG_nNPl2e110A5ehOH9Ej63-9TBx-F9Yvw,3666
@@ -523,13 +524,13 @@ opentrons/protocols/advanced_control/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeu
523
524
  opentrons/protocols/advanced_control/common.py,sha256=AuEzt2PfIE55DK5c5e1pC-ieSJfwbU1BcCSOML6aRMQ,873
524
525
  opentrons/protocols/advanced_control/mix.py,sha256=GobQ9E6F2gARjfhNp2xdyWQXFBSwOiU3MQ1UeW85v5Y,2057
525
526
  opentrons/protocols/advanced_control/transfers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
526
- opentrons/protocols/advanced_control/transfers/common.py,sha256=TO1XK07OWo4l3Bm3J0TrLepXQqUPLK9jdH2FeqFdc34,3743
527
+ opentrons/protocols/advanced_control/transfers/common.py,sha256=Mal5AKO35nCXqjwxR6tDityEoLYg09Yty3Jv1fgOHnQ,5498
527
528
  opentrons/protocols/advanced_control/transfers/transfer.py,sha256=-vE1uZq2BqAagSGeiuTxTyL1wT6fza_fwkO_V_OMMFc,37318
528
- opentrons/protocols/advanced_control/transfers/transfer_liquid_utils.py,sha256=EMOOPNj2PkI0xCZ3TicKgzjdMvoDvl9stHcz1Eyz95g,9237
529
+ opentrons/protocols/advanced_control/transfers/transfer_liquid_utils.py,sha256=wCyAi0nbAWR0qFetRb2w7PYzyaIbpeFkZn9tbcumJgE,10571
529
530
  opentrons/protocols/api_support/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
530
531
  opentrons/protocols/api_support/constants.py,sha256=pI_zJ8oORr6FUOaF508ttll3KOIYqRRgcwVFwnqZuqc,262
531
532
  opentrons/protocols/api_support/deck_type.py,sha256=cBxm-IQqFyL1QtYTMGtLXOlyuh-67xWgnJSP6rkg8oc,3942
532
- opentrons/protocols/api_support/definitions.py,sha256=kmQCHIJT7W8_tMgZZIVHmJVp9PXfkPhPoggrR7hJ6eI,727
533
+ opentrons/protocols/api_support/definitions.py,sha256=uXbzIp9G7DGRchWCFW3pFW0S-_QmWXWm175EDw8xWYI,727
533
534
  opentrons/protocols/api_support/instrument.py,sha256=xbgFKbJU_gL1QjbH_mgGHJx2USQIQisjEkBHiFfYEqA,5712
534
535
  opentrons/protocols/api_support/labware_like.py,sha256=JArK3XIYSMzDJTnpsVg9KNcMBEaRLMllmbV4ZtcI02s,7701
535
536
  opentrons/protocols/api_support/tip_tracker.py,sha256=ztngh5wGworD77ycKHm3_f9EqjT24VFXIAARAGcCPns,7407
@@ -583,9 +584,9 @@ opentrons/util/linal.py,sha256=IlKAP9HkNBBgULeSf4YVwSKHdx9jnCjSr7nvDvlRALg,5753
583
584
  opentrons/util/logging_config.py,sha256=7et4YYuQdWdq_e50U-8vFS_QyNBRgdnqPGAQJm8qrIo,9954
584
585
  opentrons/util/logging_queue_handler.py,sha256=ZsSJwy-oV8DXwpYiZisQ1PbYwmK2cOslD46AcyJ1E4I,2484
585
586
  opentrons/util/performance_helpers.py,sha256=ew7H8XD20iS6-2TJAzbQeyzStZkkE6PzHt_Adx3wbZQ,5172
586
- opentrons-8.4.1a2.dist-info/LICENSE,sha256=z8d0m5b2O9McPEK1xHG_dWgUBT6EfBDz6wA0F7xSPTA,11358
587
- opentrons-8.4.1a2.dist-info/METADATA,sha256=aCwtDGtuulciEgDZTW2DKWxk8EmPufNcFWQbKLSACHA,5084
588
- opentrons-8.4.1a2.dist-info/WHEEL,sha256=qUzzGenXXuJTzyjFah76kDVqDvnk-YDzY00svnrl84w,109
589
- opentrons-8.4.1a2.dist-info/entry_points.txt,sha256=fTa6eGCYkvOtv0ov-KVE8LLGetgb35LQLF9x85OWPVw,106
590
- opentrons-8.4.1a2.dist-info/top_level.txt,sha256=wk6whpbMZdBQpcK0Fg0YVfUGrAgVOFON7oQAhOMGMW8,10
591
- opentrons-8.4.1a2.dist-info/RECORD,,
587
+ opentrons-8.5.0.dist-info/LICENSE,sha256=z8d0m5b2O9McPEK1xHG_dWgUBT6EfBDz6wA0F7xSPTA,11358
588
+ opentrons-8.5.0.dist-info/METADATA,sha256=6GpvqLdTKfM9der_sX7C8N9uAZsRLHV-Nfo_5hQ_CbQ,5076
589
+ opentrons-8.5.0.dist-info/WHEEL,sha256=qUzzGenXXuJTzyjFah76kDVqDvnk-YDzY00svnrl84w,109
590
+ opentrons-8.5.0.dist-info/entry_points.txt,sha256=fTa6eGCYkvOtv0ov-KVE8LLGetgb35LQLF9x85OWPVw,106
591
+ opentrons-8.5.0.dist-info/top_level.txt,sha256=wk6whpbMZdBQpcK0Fg0YVfUGrAgVOFON7oQAhOMGMW8,10
592
+ opentrons-8.5.0.dist-info/RECORD,,