opentrons 8.6.0a10__py3-none-any.whl → 8.6.0a11__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/_version.py CHANGED
@@ -28,7 +28,7 @@ version_tuple: VERSION_TUPLE
28
28
  commit_id: COMMIT_ID
29
29
  __commit_id__: COMMIT_ID
30
30
 
31
- __version__ = version = '8.6.0a10'
32
- __version_tuple__ = version_tuple = (8, 6, 0, 'a10')
31
+ __version__ = version = '8.6.0a11'
32
+ __version_tuple__ = version_tuple = (8, 6, 0, 'a11')
33
33
 
34
34
  __commit_id__ = commit_id = None
@@ -1,4 +1,4 @@
1
- from typing import List
1
+ from typing import Any, List
2
2
  from math import trunc
3
3
 
4
4
  from opentrons.drivers import utils
@@ -213,3 +213,64 @@ def heater_shaker_deactivate_heater() -> command_types.HeaterShakerDeactivateHea
213
213
  "name": command_types.HEATER_SHAKER_DEACTIVATE_HEATER,
214
214
  "payload": {"text": text},
215
215
  }
216
+
217
+
218
+ # FLex Stacker
219
+
220
+
221
+ def flex_stacker_set_stored_labware(
222
+ self: Any,
223
+ load_name: str,
224
+ namespace: str | None = None,
225
+ version: int | None = None,
226
+ adapter: str | None = None,
227
+ lid: str | None = None,
228
+ count: int | None = None,
229
+ stacking_offset_z: float | None = None,
230
+ ) -> command_types.FlexStackerSetStoredLabwareCommand:
231
+ uri = f"{namespace}/{load_name}/{version}"
232
+ text = f"Configuring {self} with {count} labware {uri}, adapter: {adapter}, lid: {lid}, stacking_offset_z: {stacking_offset_z}"
233
+ return {
234
+ "name": command_types.FLEX_STACKER_SET_STORED_LABWARE,
235
+ "payload": {"text": text},
236
+ }
237
+
238
+
239
+ def flex_stacker_retrieve(
240
+ self: Any,
241
+ ) -> command_types.FlexStackerRetrieveCommand:
242
+ text = f"Retrieving labware from {self}"
243
+ return {
244
+ "name": command_types.FLEX_STACKER_RETRIEVE,
245
+ "payload": {"text": text},
246
+ }
247
+
248
+
249
+ def flex_stacker_store(
250
+ self: Any,
251
+ ) -> command_types.FlexStackerStoreCommand:
252
+ text = f"Storing labware to {self}"
253
+ return {
254
+ "name": command_types.FLEX_STACKER_STORE,
255
+ "payload": {"text": text},
256
+ }
257
+
258
+
259
+ def flex_stacker_empty(
260
+ self: Any,
261
+ ) -> command_types.FlexStackerEmptyCommand:
262
+ text = f"Emptying {self}"
263
+ return {
264
+ "name": command_types.FLEX_STACKER_EMPTY,
265
+ "payload": {"text": text},
266
+ }
267
+
268
+
269
+ def flex_stacker_fill(
270
+ self: Any, count: int | None = None
271
+ ) -> command_types.FlexStackerFillCommand:
272
+ text = f"Filling {self} with {count} labware"
273
+ return {
274
+ "name": command_types.FLEX_STACKER_FILL,
275
+ "payload": {"text": text},
276
+ }
@@ -89,6 +89,12 @@ THERMOCYCLER_SET_LID_TEMP: Final = "command.THERMOCYCLER_SET_LID_TEMP"
89
89
  THERMOCYCLER_DEACTIVATE_LID: Final = "command.THERMOCYCLER_DEACTIVATE_LID"
90
90
  THERMOCYCLER_DEACTIVATE_BLOCK: Final = "command.THERMOCYCLER_DEACTIVATE_BLOCK"
91
91
 
92
+ FLEX_STACKER_SET_STORED_LABWARE: Final = "command.FLEX_STACKER_SET_STORED_LABWARE"
93
+ FLEX_STACKER_RETRIEVE: Final = "command.FLEX_STACKER_RETRIEVE"
94
+ FLEX_STACKER_STORE: Final = "command.FLEX_STACKER_STORE"
95
+ FLEX_STACKER_EMPTY: Final = "command.FLEX_STACKER_EMPTY"
96
+ FLEX_STACKER_FILL: Final = "command.FLEX_STACKER_FILL"
97
+
92
98
  # Robot #
93
99
  ROBOT_MOVE_TO: Final = "command.ROBOT_MOVE_TO"
94
100
  ROBOT_MOVE_AXES_TO: Final = "command.ROBOT_MOVE_AXES_TO"
@@ -154,6 +160,9 @@ class ResumeCommand(TypedDict):
154
160
  payload: ResumeCommandPayload
155
161
 
156
162
 
163
+ # Module commands
164
+
165
+
157
166
  class HeaterShakerSetTargetTemperaturePayload(TextOnlyPayload):
158
167
  pass
159
168
 
@@ -371,6 +380,34 @@ class ThermocyclerCloseCommand(TypedDict):
371
380
  payload: ThermocyclerCloseCommandPayload
372
381
 
373
382
 
383
+ class FlexStackerSetStoredLabwareCommand(TypedDict):
384
+ name: Literal["command.FLEX_STACKER_SET_STORED_LABWARE"]
385
+ payload: TextOnlyPayload
386
+
387
+
388
+ class FlexStackerRetrieveCommand(TypedDict):
389
+ name: Literal["command.FLEX_STACKER_RETRIEVE"]
390
+ payload: TextOnlyPayload
391
+
392
+
393
+ class FlexStackerStoreCommand(TypedDict):
394
+ name: Literal["command.FLEX_STACKER_STORE"]
395
+ payload: TextOnlyPayload
396
+
397
+
398
+ class FlexStackerEmptyCommand(TypedDict):
399
+ name: Literal["command.FLEX_STACKER_EMPTY"]
400
+ payload: TextOnlyPayload
401
+
402
+
403
+ class FlexStackerFillCommand(TypedDict):
404
+ name: Literal["command.FLEX_STACKER_FILL"]
405
+ payload: TextOnlyPayload
406
+
407
+
408
+ # Module command end
409
+
410
+
374
411
  class HomeCommandPayload(TextOnlyPayload):
375
412
  axis: str
376
413
 
@@ -739,6 +776,12 @@ Command = Union[
739
776
  RobotMoveAxisRelativeCommand,
740
777
  RobotOpenGripperJawCommand,
741
778
  RobotCloseGripperJawCommand,
779
+ # Flex Stacker commands
780
+ FlexStackerSetStoredLabwareCommand,
781
+ FlexStackerRetrieveCommand,
782
+ FlexStackerStoreCommand,
783
+ FlexStackerEmptyCommand,
784
+ FlexStackerFillCommand,
742
785
  ]
743
786
 
744
787
 
@@ -1019,6 +1062,28 @@ class MagdeckEngageMessage(CommandMessageFields, MagdeckEngageCommand):
1019
1062
  pass
1020
1063
 
1021
1064
 
1065
+ class FlexStackerSetStoredLabwareMessage(
1066
+ CommandMessageFields, FlexStackerSetStoredLabwareCommand
1067
+ ):
1068
+ pass
1069
+
1070
+
1071
+ class FlexStackerRetrieveMessage(CommandMessageFields, FlexStackerRetrieveCommand):
1072
+ pass
1073
+
1074
+
1075
+ class FlexStackerStoreMessage(CommandMessageFields, FlexStackerStoreCommand):
1076
+ pass
1077
+
1078
+
1079
+ class FlexStackerEmptyMessage(CommandMessageFields, FlexStackerEmptyCommand):
1080
+ pass
1081
+
1082
+
1083
+ class FlexStackerFillMessage(CommandMessageFields, FlexStackerFillCommand):
1084
+ pass
1085
+
1086
+
1022
1087
  class ResumeMessage(CommandMessageFields, ResumeCommand):
1023
1088
  pass
1024
1089
 
@@ -1112,4 +1177,10 @@ CommandMessage = Union[
1112
1177
  RobotMoveAxisRelativeMessage,
1113
1178
  RobotOpenGripperJawMessage,
1114
1179
  RobotCloseGripperJawMessage,
1180
+ # Flex Stacker Messages
1181
+ FlexStackerSetStoredLabwareMessage,
1182
+ FlexStackerRetrieveMessage,
1183
+ FlexStackerStoreMessage,
1184
+ FlexStackerEmptyMessage,
1185
+ FlexStackerFillMessage,
1115
1186
  ]
@@ -1140,6 +1140,7 @@ class FlexStackerContext(ModuleContext):
1140
1140
  return self._core.get_serial_number()
1141
1141
 
1142
1142
  @requires_version(2, 25)
1143
+ @publish(command=cmds.flex_stacker_retrieve)
1143
1144
  def retrieve(self) -> Labware:
1144
1145
  """Retrieve a labware from the Flex Stacker and move it onto the shuttle.
1145
1146
 
@@ -1160,6 +1161,7 @@ class FlexStackerContext(ModuleContext):
1160
1161
  )
1161
1162
 
1162
1163
  @requires_version(2, 25)
1164
+ @publish(command=cmds.flex_stacker_store)
1163
1165
  def store(self) -> None:
1164
1166
  """Move a labware currently on the Flex Stacker shuttle into the Flex Stacker.
1165
1167
 
@@ -1318,6 +1320,7 @@ class FlexStackerContext(ModuleContext):
1318
1320
  )
1319
1321
 
1320
1322
  @requires_version(2, 25)
1323
+ @publish(command=cmds.flex_stacker_set_stored_labware)
1321
1324
  def set_stored_labware(
1322
1325
  self,
1323
1326
  load_name: str,
@@ -1392,6 +1395,7 @@ class FlexStackerContext(ModuleContext):
1392
1395
  )
1393
1396
 
1394
1397
  @requires_version(2, 25)
1398
+ @publish(command=cmds.flex_stacker_fill)
1395
1399
  def fill(self, count: int | None = None, message: str | None = None) -> None:
1396
1400
  """Pause the protocol to add labware to the Flex Stacker.
1397
1401
 
@@ -1418,6 +1422,7 @@ class FlexStackerContext(ModuleContext):
1418
1422
  self._core.fill_items(self._labware_to_cores(labware), message)
1419
1423
 
1420
1424
  @requires_version(2, 25)
1425
+ @publish(command=cmds.flex_stacker_empty)
1421
1426
  def empty(self, message: str | None = None) -> None:
1422
1427
  """Pause the protocol to remove all labware stored in the Flex Stacker.
1423
1428
 
@@ -10,6 +10,8 @@ from opentrons.hardware_control.modules.types import (
10
10
  MagneticModuleModel,
11
11
  ThermocyclerModuleModel,
12
12
  HeaterShakerModuleModel,
13
+ AbsorbanceReaderModel,
14
+ FlexStackerModuleModel,
13
15
  )
14
16
  from opentrons_shared_data.pipette.types import PipetteNameType
15
17
  from opentrons.types import MountType, DeckSlotName, Location
@@ -78,6 +80,8 @@ _HARDWARE_TO_PE_MODULE: Dict[HardwareModuleModel, pe_types.ModuleModel] = {
78
80
  ThermocyclerModuleModel.THERMOCYCLER_V1: pe_types.ModuleModel.THERMOCYCLER_MODULE_V1,
79
81
  ThermocyclerModuleModel.THERMOCYCLER_V2: pe_types.ModuleModel.THERMOCYCLER_MODULE_V2,
80
82
  HeaterShakerModuleModel.HEATER_SHAKER_V1: pe_types.ModuleModel.HEATER_SHAKER_MODULE_V1,
83
+ AbsorbanceReaderModel.ABSORBANCE_READER_V1: pe_types.ModuleModel.ABSORBANCE_READER_V1,
84
+ FlexStackerModuleModel.FLEX_STACKER_V1: pe_types.ModuleModel.FLEX_STACKER_MODULE_V1,
81
85
  }
82
86
 
83
87
  _HIGHER_ORDER_COMMAND_TYPES = {
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: opentrons
3
- Version: 8.6.0a10
3
+ Version: 8.6.0a11
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.0a10
27
+ Requires-Dist: opentrons-shared-data==8.6.0a11
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.0a10; extra == 'flex-hardware'
35
+ Requires-Dist: opentrons-hardware[flex]==8.6.0a11; extra == 'flex-hardware'
36
36
  Provides-Extra: ot2-hardware
37
- Requires-Dist: opentrons-hardware==8.6.0a10; extra == 'ot2-hardware'
37
+ Requires-Dist: opentrons-hardware==8.6.0a11; extra == 'ot2-hardware'
@@ -1,5 +1,5 @@
1
1
  opentrons/__init__.py,sha256=TQ_Ca_zzAM3iLzAysWKkFkQHG8-imihxDPQbLCYrf-E,4533
2
- opentrons/_version.py,sha256=WOzpqMGqbeQfu1DNnQl-_lxA9A_N9iJAD333-1EKRCI,714
2
+ opentrons/_version.py,sha256=XzkMHritnW-N0LeUA3PW5LD3vls19RpD5UeJgpXrBuI,714
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
@@ -210,11 +210,11 @@ opentrons/hardware_control/scripts/update_module_fw.py,sha256=FqX4y5_Ghs-uY1_Kjb
210
210
  opentrons/legacy_commands/__init__.py,sha256=erkaz7hc2iHsTtjpFDWrR1V5n47it3U1qxD2zL9CkuE,63
211
211
  opentrons/legacy_commands/commands.py,sha256=lgImZ0Y3gZrMKDVioaOXWqa6mMJCNKDa8p-lQhTghWk,14530
212
212
  opentrons/legacy_commands/helpers.py,sha256=Bc7mjK6V7b4h472NCx_qSwD0ojd_DM7mPg18tjo1DIQ,5228
213
- opentrons/legacy_commands/module_commands.py,sha256=EO2YtrfzCCaGPYjGXWfk6jjSHiEqk1E6D8Ef2qDi1qI,7769
213
+ opentrons/legacy_commands/module_commands.py,sha256=bAqZmsAqXkjf3qzexo9fOs4QxZ-RvcZmdy0_QEcHd7U,9368
214
214
  opentrons/legacy_commands/protocol_commands.py,sha256=nPYBrm7j9co83IGWjzae2GOVkEZdu58pXQv3eOdpLzg,1383
215
215
  opentrons/legacy_commands/publisher.py,sha256=JRrpF-kG7qt5dwDFbCqeMjokCSwn8BdllMMYnJeDLn8,5440
216
216
  opentrons/legacy_commands/robot_commands.py,sha256=c51gVAh-98PxhxmEL_3P80rejkaY58gAQ7S6wNwctao,1642
217
- opentrons/legacy_commands/types.py,sha256=dtmHB2VOtsQHFzhdoZgjJZZc8pNGcCnleA5zsi5GTo0,28904
217
+ opentrons/legacy_commands/types.py,sha256=cbW_flEmurZIcAh-EOcJp3bgrUCvx3ASTrw1oRqMv10,30745
218
218
  opentrons/motion_planning/__init__.py,sha256=Gma3SLAvKbL7QuhVGtL9zFx5vlk_7YBF0TjYZQSiv9s,755
219
219
  opentrons/motion_planning/adjacent_slots_getters.py,sha256=z7HkfC8ymAdGHdFq-sC_1_cERX_v29b9x4HKtJ6gp9I,5390
220
220
  opentrons/motion_planning/deck_conflict.py,sha256=gIAQYJbSKEn5XM_AoBVCOdp-acQsc0nF5FHaeuF53vg,16757
@@ -235,7 +235,7 @@ opentrons/protocol_api/deck.py,sha256=94vFceg1SC1bAGd7TvC1ZpYwnJR-VlzurEZ6jkacYe
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
237
  opentrons/protocol_api/labware.py,sha256=ZP4QuGadoDp6xtyToupXVSJFnsx4NfWcskRQAH3iU4Y,61443
238
- opentrons/protocol_api/module_contexts.py,sha256=RF6T__0Y7cYoFDWLmRU2BxPEVtMshEflelCHdW7IDbM,59743
238
+ opentrons/protocol_api/module_contexts.py,sha256=HYQ20RV2c-NNwgObQZNxyvVKmy2Ufkf--ILoRmhkcvA,59988
239
239
  opentrons/protocol_api/module_validation_and_errors.py,sha256=ljst-M_KK78GnyG3pyZ_6yoYkMY3HORS1QyQyWrme-U,2250
240
240
  opentrons/protocol_api/protocol_context.py,sha256=Hzgw3FbCRyd4kWmw4RZwZHJhoGZkmn7ug-Q7JZGCcqs,70298
241
241
  opentrons/protocol_api/robot_context.py,sha256=D6ZdpFX30VTtVUDHitsVjabJQXD5TxOV9_Z6sik1LvE,11891
@@ -520,7 +520,7 @@ opentrons/protocol_runner/__init__.py,sha256=Sr0gBDzNv3nuHPapeNy_IWadhohtwmlhfnB
520
520
  opentrons/protocol_runner/create_simulating_orchestrator.py,sha256=S1Fu9TMa3NrujcPYTfULHpfqLTkrZPYz7CbcXtcDes0,4249
521
521
  opentrons/protocol_runner/json_file_reader.py,sha256=dE9ujq3sWyKF1yFg0AN8h-roGVfvqf1tEcIq5wxHbxE,2341
522
522
  opentrons/protocol_runner/json_translator.py,sha256=lrDzHOOkQ19ac4KEdUbfEOnfx-F_QCO-6oGqQZegy4g,12134
523
- opentrons/protocol_runner/legacy_command_mapper.py,sha256=SSCNe6eUZPZ4wXF6Pe6-plJou8YJkYvG4QdbppOvgS8,36890
523
+ opentrons/protocol_runner/legacy_command_mapper.py,sha256=yUCfnp4sNawFikrujyPo27Ba_aOy-kr-9F3dOK6Zu9Q,37125
524
524
  opentrons/protocol_runner/legacy_context_plugin.py,sha256=G_qpeyaLvsCjb72_n96Luy8CPSfgPZpt0QKVzKc6LKY,4730
525
525
  opentrons/protocol_runner/protocol_runner.py,sha256=YUHZvttojkYghq82IWYWvTfN2kUZ1oZdm8Fm4K-zftI,21658
526
526
  opentrons/protocol_runner/python_protocol_wrappers.py,sha256=KEuM4M7rYD4zLjTqK89T47CiBIZJ42kG0JXWarLUq4E,6511
@@ -594,8 +594,8 @@ opentrons/util/linal.py,sha256=IlKAP9HkNBBgULeSf4YVwSKHdx9jnCjSr7nvDvlRALg,5753
594
594
  opentrons/util/logging_config.py,sha256=7et4YYuQdWdq_e50U-8vFS_QyNBRgdnqPGAQJm8qrIo,9954
595
595
  opentrons/util/logging_queue_handler.py,sha256=ZsSJwy-oV8DXwpYiZisQ1PbYwmK2cOslD46AcyJ1E4I,2484
596
596
  opentrons/util/performance_helpers.py,sha256=ew7H8XD20iS6-2TJAzbQeyzStZkkE6PzHt_Adx3wbZQ,5172
597
- opentrons-8.6.0a10.dist-info/METADATA,sha256=hjGup8Y1ej9BXaAbYLKI-_0wSxiI2BR2JNPy01YO7Sk,1611
598
- opentrons-8.6.0a10.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
599
- opentrons-8.6.0a10.dist-info/entry_points.txt,sha256=fTa6eGCYkvOtv0ov-KVE8LLGetgb35LQLF9x85OWPVw,106
600
- opentrons-8.6.0a10.dist-info/licenses/LICENSE,sha256=z8d0m5b2O9McPEK1xHG_dWgUBT6EfBDz6wA0F7xSPTA,11358
601
- opentrons-8.6.0a10.dist-info/RECORD,,
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,,