opentrons 8.6.0__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.

Potentially problematic release.


This version of opentrons might be problematic. Click here for more details.

Files changed (601) hide show
  1. opentrons/__init__.py +150 -0
  2. opentrons/_version.py +34 -0
  3. opentrons/calibration_storage/__init__.py +54 -0
  4. opentrons/calibration_storage/deck_configuration.py +62 -0
  5. opentrons/calibration_storage/encoder_decoder.py +31 -0
  6. opentrons/calibration_storage/file_operators.py +142 -0
  7. opentrons/calibration_storage/helpers.py +103 -0
  8. opentrons/calibration_storage/ot2/__init__.py +34 -0
  9. opentrons/calibration_storage/ot2/deck_attitude.py +85 -0
  10. opentrons/calibration_storage/ot2/mark_bad_calibration.py +27 -0
  11. opentrons/calibration_storage/ot2/models/__init__.py +0 -0
  12. opentrons/calibration_storage/ot2/models/v1.py +149 -0
  13. opentrons/calibration_storage/ot2/pipette_offset.py +129 -0
  14. opentrons/calibration_storage/ot2/tip_length.py +281 -0
  15. opentrons/calibration_storage/ot3/__init__.py +31 -0
  16. opentrons/calibration_storage/ot3/deck_attitude.py +83 -0
  17. opentrons/calibration_storage/ot3/gripper_offset.py +156 -0
  18. opentrons/calibration_storage/ot3/models/__init__.py +0 -0
  19. opentrons/calibration_storage/ot3/models/v1.py +122 -0
  20. opentrons/calibration_storage/ot3/module_offset.py +138 -0
  21. opentrons/calibration_storage/ot3/pipette_offset.py +95 -0
  22. opentrons/calibration_storage/types.py +45 -0
  23. opentrons/cli/__init__.py +21 -0
  24. opentrons/cli/__main__.py +5 -0
  25. opentrons/cli/analyze.py +557 -0
  26. opentrons/config/__init__.py +631 -0
  27. opentrons/config/advanced_settings.py +871 -0
  28. opentrons/config/defaults_ot2.py +214 -0
  29. opentrons/config/defaults_ot3.py +499 -0
  30. opentrons/config/feature_flags.py +86 -0
  31. opentrons/config/gripper_config.py +55 -0
  32. opentrons/config/reset.py +203 -0
  33. opentrons/config/robot_configs.py +187 -0
  34. opentrons/config/types.py +183 -0
  35. opentrons/drivers/__init__.py +0 -0
  36. opentrons/drivers/absorbance_reader/__init__.py +11 -0
  37. opentrons/drivers/absorbance_reader/abstract.py +72 -0
  38. opentrons/drivers/absorbance_reader/async_byonoy.py +352 -0
  39. opentrons/drivers/absorbance_reader/driver.py +81 -0
  40. opentrons/drivers/absorbance_reader/hid_protocol.py +161 -0
  41. opentrons/drivers/absorbance_reader/simulator.py +84 -0
  42. opentrons/drivers/asyncio/__init__.py +0 -0
  43. opentrons/drivers/asyncio/communication/__init__.py +22 -0
  44. opentrons/drivers/asyncio/communication/async_serial.py +187 -0
  45. opentrons/drivers/asyncio/communication/errors.py +88 -0
  46. opentrons/drivers/asyncio/communication/serial_connection.py +557 -0
  47. opentrons/drivers/command_builder.py +102 -0
  48. opentrons/drivers/flex_stacker/__init__.py +13 -0
  49. opentrons/drivers/flex_stacker/abstract.py +214 -0
  50. opentrons/drivers/flex_stacker/driver.py +768 -0
  51. opentrons/drivers/flex_stacker/errors.py +68 -0
  52. opentrons/drivers/flex_stacker/simulator.py +309 -0
  53. opentrons/drivers/flex_stacker/types.py +367 -0
  54. opentrons/drivers/flex_stacker/utils.py +19 -0
  55. opentrons/drivers/heater_shaker/__init__.py +5 -0
  56. opentrons/drivers/heater_shaker/abstract.py +76 -0
  57. opentrons/drivers/heater_shaker/driver.py +204 -0
  58. opentrons/drivers/heater_shaker/simulator.py +94 -0
  59. opentrons/drivers/mag_deck/__init__.py +6 -0
  60. opentrons/drivers/mag_deck/abstract.py +44 -0
  61. opentrons/drivers/mag_deck/driver.py +208 -0
  62. opentrons/drivers/mag_deck/simulator.py +63 -0
  63. opentrons/drivers/rpi_drivers/__init__.py +33 -0
  64. opentrons/drivers/rpi_drivers/dev_types.py +94 -0
  65. opentrons/drivers/rpi_drivers/gpio.py +282 -0
  66. opentrons/drivers/rpi_drivers/gpio_simulator.py +127 -0
  67. opentrons/drivers/rpi_drivers/interfaces.py +15 -0
  68. opentrons/drivers/rpi_drivers/types.py +364 -0
  69. opentrons/drivers/rpi_drivers/usb.py +102 -0
  70. opentrons/drivers/rpi_drivers/usb_simulator.py +22 -0
  71. opentrons/drivers/serial_communication.py +151 -0
  72. opentrons/drivers/smoothie_drivers/__init__.py +4 -0
  73. opentrons/drivers/smoothie_drivers/connection.py +51 -0
  74. opentrons/drivers/smoothie_drivers/constants.py +121 -0
  75. opentrons/drivers/smoothie_drivers/driver_3_0.py +1933 -0
  76. opentrons/drivers/smoothie_drivers/errors.py +49 -0
  77. opentrons/drivers/smoothie_drivers/parse_utils.py +143 -0
  78. opentrons/drivers/smoothie_drivers/simulator.py +99 -0
  79. opentrons/drivers/smoothie_drivers/types.py +16 -0
  80. opentrons/drivers/temp_deck/__init__.py +10 -0
  81. opentrons/drivers/temp_deck/abstract.py +54 -0
  82. opentrons/drivers/temp_deck/driver.py +197 -0
  83. opentrons/drivers/temp_deck/simulator.py +57 -0
  84. opentrons/drivers/thermocycler/__init__.py +12 -0
  85. opentrons/drivers/thermocycler/abstract.py +99 -0
  86. opentrons/drivers/thermocycler/driver.py +395 -0
  87. opentrons/drivers/thermocycler/simulator.py +126 -0
  88. opentrons/drivers/types.py +107 -0
  89. opentrons/drivers/utils.py +222 -0
  90. opentrons/execute.py +742 -0
  91. opentrons/hardware_control/__init__.py +65 -0
  92. opentrons/hardware_control/__main__.py +77 -0
  93. opentrons/hardware_control/adapters.py +98 -0
  94. opentrons/hardware_control/api.py +1347 -0
  95. opentrons/hardware_control/backends/__init__.py +7 -0
  96. opentrons/hardware_control/backends/controller.py +400 -0
  97. opentrons/hardware_control/backends/errors.py +9 -0
  98. opentrons/hardware_control/backends/estop_state.py +164 -0
  99. opentrons/hardware_control/backends/flex_protocol.py +497 -0
  100. opentrons/hardware_control/backends/ot3controller.py +1930 -0
  101. opentrons/hardware_control/backends/ot3simulator.py +900 -0
  102. opentrons/hardware_control/backends/ot3utils.py +664 -0
  103. opentrons/hardware_control/backends/simulator.py +442 -0
  104. opentrons/hardware_control/backends/status_bar_state.py +240 -0
  105. opentrons/hardware_control/backends/subsystem_manager.py +431 -0
  106. opentrons/hardware_control/backends/tip_presence_manager.py +173 -0
  107. opentrons/hardware_control/backends/types.py +14 -0
  108. opentrons/hardware_control/constants.py +6 -0
  109. opentrons/hardware_control/dev_types.py +125 -0
  110. opentrons/hardware_control/emulation/__init__.py +0 -0
  111. opentrons/hardware_control/emulation/abstract_emulator.py +21 -0
  112. opentrons/hardware_control/emulation/app.py +56 -0
  113. opentrons/hardware_control/emulation/connection_handler.py +38 -0
  114. opentrons/hardware_control/emulation/heater_shaker.py +150 -0
  115. opentrons/hardware_control/emulation/magdeck.py +60 -0
  116. opentrons/hardware_control/emulation/module_server/__init__.py +8 -0
  117. opentrons/hardware_control/emulation/module_server/client.py +78 -0
  118. opentrons/hardware_control/emulation/module_server/helpers.py +130 -0
  119. opentrons/hardware_control/emulation/module_server/models.py +31 -0
  120. opentrons/hardware_control/emulation/module_server/server.py +110 -0
  121. opentrons/hardware_control/emulation/parser.py +74 -0
  122. opentrons/hardware_control/emulation/proxy.py +241 -0
  123. opentrons/hardware_control/emulation/run_emulator.py +68 -0
  124. opentrons/hardware_control/emulation/scripts/__init__.py +0 -0
  125. opentrons/hardware_control/emulation/scripts/run_app.py +54 -0
  126. opentrons/hardware_control/emulation/scripts/run_module_emulator.py +72 -0
  127. opentrons/hardware_control/emulation/scripts/run_smoothie.py +37 -0
  128. opentrons/hardware_control/emulation/settings.py +119 -0
  129. opentrons/hardware_control/emulation/simulations.py +133 -0
  130. opentrons/hardware_control/emulation/smoothie.py +192 -0
  131. opentrons/hardware_control/emulation/tempdeck.py +69 -0
  132. opentrons/hardware_control/emulation/thermocycler.py +128 -0
  133. opentrons/hardware_control/emulation/types.py +10 -0
  134. opentrons/hardware_control/emulation/util.py +38 -0
  135. opentrons/hardware_control/errors.py +43 -0
  136. opentrons/hardware_control/execution_manager.py +164 -0
  137. opentrons/hardware_control/instruments/__init__.py +5 -0
  138. opentrons/hardware_control/instruments/instrument_abc.py +39 -0
  139. opentrons/hardware_control/instruments/ot2/__init__.py +0 -0
  140. opentrons/hardware_control/instruments/ot2/instrument_calibration.py +152 -0
  141. opentrons/hardware_control/instruments/ot2/pipette.py +777 -0
  142. opentrons/hardware_control/instruments/ot2/pipette_handler.py +995 -0
  143. opentrons/hardware_control/instruments/ot3/__init__.py +0 -0
  144. opentrons/hardware_control/instruments/ot3/gripper.py +420 -0
  145. opentrons/hardware_control/instruments/ot3/gripper_handler.py +173 -0
  146. opentrons/hardware_control/instruments/ot3/instrument_calibration.py +214 -0
  147. opentrons/hardware_control/instruments/ot3/pipette.py +858 -0
  148. opentrons/hardware_control/instruments/ot3/pipette_handler.py +1030 -0
  149. opentrons/hardware_control/module_control.py +332 -0
  150. opentrons/hardware_control/modules/__init__.py +69 -0
  151. opentrons/hardware_control/modules/absorbance_reader.py +373 -0
  152. opentrons/hardware_control/modules/errors.py +7 -0
  153. opentrons/hardware_control/modules/flex_stacker.py +948 -0
  154. opentrons/hardware_control/modules/heater_shaker.py +426 -0
  155. opentrons/hardware_control/modules/lid_temp_status.py +35 -0
  156. opentrons/hardware_control/modules/magdeck.py +233 -0
  157. opentrons/hardware_control/modules/mod_abc.py +245 -0
  158. opentrons/hardware_control/modules/module_calibration.py +93 -0
  159. opentrons/hardware_control/modules/plate_temp_status.py +61 -0
  160. opentrons/hardware_control/modules/tempdeck.py +299 -0
  161. opentrons/hardware_control/modules/thermocycler.py +731 -0
  162. opentrons/hardware_control/modules/types.py +417 -0
  163. opentrons/hardware_control/modules/update.py +255 -0
  164. opentrons/hardware_control/modules/utils.py +73 -0
  165. opentrons/hardware_control/motion_utilities.py +318 -0
  166. opentrons/hardware_control/nozzle_manager.py +422 -0
  167. opentrons/hardware_control/ot3_calibration.py +1171 -0
  168. opentrons/hardware_control/ot3api.py +3227 -0
  169. opentrons/hardware_control/pause_manager.py +31 -0
  170. opentrons/hardware_control/poller.py +112 -0
  171. opentrons/hardware_control/protocols/__init__.py +106 -0
  172. opentrons/hardware_control/protocols/asyncio_configurable.py +11 -0
  173. opentrons/hardware_control/protocols/calibratable.py +45 -0
  174. opentrons/hardware_control/protocols/chassis_accessory_manager.py +90 -0
  175. opentrons/hardware_control/protocols/configurable.py +48 -0
  176. opentrons/hardware_control/protocols/event_sourcer.py +18 -0
  177. opentrons/hardware_control/protocols/execution_controllable.py +33 -0
  178. opentrons/hardware_control/protocols/flex_calibratable.py +96 -0
  179. opentrons/hardware_control/protocols/flex_instrument_configurer.py +52 -0
  180. opentrons/hardware_control/protocols/gripper_controller.py +55 -0
  181. opentrons/hardware_control/protocols/hardware_manager.py +51 -0
  182. opentrons/hardware_control/protocols/identifiable.py +16 -0
  183. opentrons/hardware_control/protocols/instrument_configurer.py +206 -0
  184. opentrons/hardware_control/protocols/liquid_handler.py +266 -0
  185. opentrons/hardware_control/protocols/module_provider.py +16 -0
  186. opentrons/hardware_control/protocols/motion_controller.py +243 -0
  187. opentrons/hardware_control/protocols/position_estimator.py +45 -0
  188. opentrons/hardware_control/protocols/simulatable.py +10 -0
  189. opentrons/hardware_control/protocols/stoppable.py +9 -0
  190. opentrons/hardware_control/protocols/types.py +27 -0
  191. opentrons/hardware_control/robot_calibration.py +224 -0
  192. opentrons/hardware_control/scripts/README.md +28 -0
  193. opentrons/hardware_control/scripts/__init__.py +1 -0
  194. opentrons/hardware_control/scripts/gripper_control.py +208 -0
  195. opentrons/hardware_control/scripts/ot3gripper +7 -0
  196. opentrons/hardware_control/scripts/ot3repl +7 -0
  197. opentrons/hardware_control/scripts/repl.py +187 -0
  198. opentrons/hardware_control/scripts/tc_control.py +97 -0
  199. opentrons/hardware_control/scripts/update_module_fw.py +274 -0
  200. opentrons/hardware_control/simulator_setup.py +260 -0
  201. opentrons/hardware_control/thread_manager.py +431 -0
  202. opentrons/hardware_control/threaded_async_lock.py +97 -0
  203. opentrons/hardware_control/types.py +792 -0
  204. opentrons/hardware_control/util.py +234 -0
  205. opentrons/legacy_broker.py +53 -0
  206. opentrons/legacy_commands/__init__.py +1 -0
  207. opentrons/legacy_commands/commands.py +483 -0
  208. opentrons/legacy_commands/helpers.py +153 -0
  209. opentrons/legacy_commands/module_commands.py +276 -0
  210. opentrons/legacy_commands/protocol_commands.py +54 -0
  211. opentrons/legacy_commands/publisher.py +155 -0
  212. opentrons/legacy_commands/robot_commands.py +51 -0
  213. opentrons/legacy_commands/types.py +1186 -0
  214. opentrons/motion_planning/__init__.py +32 -0
  215. opentrons/motion_planning/adjacent_slots_getters.py +168 -0
  216. opentrons/motion_planning/deck_conflict.py +501 -0
  217. opentrons/motion_planning/errors.py +35 -0
  218. opentrons/motion_planning/types.py +42 -0
  219. opentrons/motion_planning/waypoints.py +218 -0
  220. opentrons/ordered_set.py +138 -0
  221. opentrons/protocol_api/__init__.py +105 -0
  222. opentrons/protocol_api/_liquid.py +157 -0
  223. opentrons/protocol_api/_liquid_properties.py +814 -0
  224. opentrons/protocol_api/_nozzle_layout.py +31 -0
  225. opentrons/protocol_api/_parameter_context.py +300 -0
  226. opentrons/protocol_api/_parameters.py +31 -0
  227. opentrons/protocol_api/_transfer_liquid_validation.py +108 -0
  228. opentrons/protocol_api/_types.py +43 -0
  229. opentrons/protocol_api/config.py +23 -0
  230. opentrons/protocol_api/core/__init__.py +23 -0
  231. opentrons/protocol_api/core/common.py +33 -0
  232. opentrons/protocol_api/core/core_map.py +74 -0
  233. opentrons/protocol_api/core/engine/__init__.py +22 -0
  234. opentrons/protocol_api/core/engine/_default_labware_versions.py +179 -0
  235. opentrons/protocol_api/core/engine/deck_conflict.py +400 -0
  236. opentrons/protocol_api/core/engine/exceptions.py +19 -0
  237. opentrons/protocol_api/core/engine/instrument.py +2391 -0
  238. opentrons/protocol_api/core/engine/labware.py +238 -0
  239. opentrons/protocol_api/core/engine/load_labware_params.py +73 -0
  240. opentrons/protocol_api/core/engine/module_core.py +1027 -0
  241. opentrons/protocol_api/core/engine/overlap_versions.py +20 -0
  242. opentrons/protocol_api/core/engine/pipette_movement_conflict.py +358 -0
  243. opentrons/protocol_api/core/engine/point_calculations.py +64 -0
  244. opentrons/protocol_api/core/engine/protocol.py +1153 -0
  245. opentrons/protocol_api/core/engine/robot.py +139 -0
  246. opentrons/protocol_api/core/engine/stringify.py +74 -0
  247. opentrons/protocol_api/core/engine/transfer_components_executor.py +1006 -0
  248. opentrons/protocol_api/core/engine/well.py +241 -0
  249. opentrons/protocol_api/core/instrument.py +459 -0
  250. opentrons/protocol_api/core/labware.py +151 -0
  251. opentrons/protocol_api/core/legacy/__init__.py +11 -0
  252. opentrons/protocol_api/core/legacy/_labware_geometry.py +37 -0
  253. opentrons/protocol_api/core/legacy/deck.py +369 -0
  254. opentrons/protocol_api/core/legacy/labware_offset_provider.py +108 -0
  255. opentrons/protocol_api/core/legacy/legacy_instrument_core.py +709 -0
  256. opentrons/protocol_api/core/legacy/legacy_labware_core.py +235 -0
  257. opentrons/protocol_api/core/legacy/legacy_module_core.py +592 -0
  258. opentrons/protocol_api/core/legacy/legacy_protocol_core.py +612 -0
  259. opentrons/protocol_api/core/legacy/legacy_well_core.py +162 -0
  260. opentrons/protocol_api/core/legacy/load_info.py +67 -0
  261. opentrons/protocol_api/core/legacy/module_geometry.py +547 -0
  262. opentrons/protocol_api/core/legacy/well_geometry.py +148 -0
  263. opentrons/protocol_api/core/legacy_simulator/__init__.py +16 -0
  264. opentrons/protocol_api/core/legacy_simulator/legacy_instrument_core.py +624 -0
  265. opentrons/protocol_api/core/legacy_simulator/legacy_protocol_core.py +85 -0
  266. opentrons/protocol_api/core/module.py +484 -0
  267. opentrons/protocol_api/core/protocol.py +311 -0
  268. opentrons/protocol_api/core/robot.py +51 -0
  269. opentrons/protocol_api/core/well.py +116 -0
  270. opentrons/protocol_api/core/well_grid.py +45 -0
  271. opentrons/protocol_api/create_protocol_context.py +177 -0
  272. opentrons/protocol_api/deck.py +223 -0
  273. opentrons/protocol_api/disposal_locations.py +244 -0
  274. opentrons/protocol_api/instrument_context.py +3272 -0
  275. opentrons/protocol_api/labware.py +1579 -0
  276. opentrons/protocol_api/module_contexts.py +1447 -0
  277. opentrons/protocol_api/module_validation_and_errors.py +61 -0
  278. opentrons/protocol_api/protocol_context.py +1688 -0
  279. opentrons/protocol_api/robot_context.py +303 -0
  280. opentrons/protocol_api/validation.py +761 -0
  281. opentrons/protocol_engine/__init__.py +155 -0
  282. opentrons/protocol_engine/actions/__init__.py +65 -0
  283. opentrons/protocol_engine/actions/action_dispatcher.py +30 -0
  284. opentrons/protocol_engine/actions/action_handler.py +13 -0
  285. opentrons/protocol_engine/actions/actions.py +302 -0
  286. opentrons/protocol_engine/actions/get_state_update.py +38 -0
  287. opentrons/protocol_engine/clients/__init__.py +5 -0
  288. opentrons/protocol_engine/clients/sync_client.py +174 -0
  289. opentrons/protocol_engine/clients/transports.py +197 -0
  290. opentrons/protocol_engine/commands/__init__.py +757 -0
  291. opentrons/protocol_engine/commands/absorbance_reader/__init__.py +61 -0
  292. opentrons/protocol_engine/commands/absorbance_reader/close_lid.py +154 -0
  293. opentrons/protocol_engine/commands/absorbance_reader/common.py +6 -0
  294. opentrons/protocol_engine/commands/absorbance_reader/initialize.py +151 -0
  295. opentrons/protocol_engine/commands/absorbance_reader/open_lid.py +154 -0
  296. opentrons/protocol_engine/commands/absorbance_reader/read.py +226 -0
  297. opentrons/protocol_engine/commands/air_gap_in_place.py +162 -0
  298. opentrons/protocol_engine/commands/aspirate.py +244 -0
  299. opentrons/protocol_engine/commands/aspirate_in_place.py +184 -0
  300. opentrons/protocol_engine/commands/aspirate_while_tracking.py +211 -0
  301. opentrons/protocol_engine/commands/blow_out.py +146 -0
  302. opentrons/protocol_engine/commands/blow_out_in_place.py +119 -0
  303. opentrons/protocol_engine/commands/calibration/__init__.py +60 -0
  304. opentrons/protocol_engine/commands/calibration/calibrate_gripper.py +166 -0
  305. opentrons/protocol_engine/commands/calibration/calibrate_module.py +117 -0
  306. opentrons/protocol_engine/commands/calibration/calibrate_pipette.py +96 -0
  307. opentrons/protocol_engine/commands/calibration/move_to_maintenance_position.py +156 -0
  308. opentrons/protocol_engine/commands/command.py +308 -0
  309. opentrons/protocol_engine/commands/command_unions.py +974 -0
  310. opentrons/protocol_engine/commands/comment.py +57 -0
  311. opentrons/protocol_engine/commands/configure_for_volume.py +108 -0
  312. opentrons/protocol_engine/commands/configure_nozzle_layout.py +115 -0
  313. opentrons/protocol_engine/commands/custom.py +67 -0
  314. opentrons/protocol_engine/commands/dispense.py +194 -0
  315. opentrons/protocol_engine/commands/dispense_in_place.py +179 -0
  316. opentrons/protocol_engine/commands/dispense_while_tracking.py +204 -0
  317. opentrons/protocol_engine/commands/drop_tip.py +232 -0
  318. opentrons/protocol_engine/commands/drop_tip_in_place.py +205 -0
  319. opentrons/protocol_engine/commands/flex_stacker/__init__.py +64 -0
  320. opentrons/protocol_engine/commands/flex_stacker/common.py +900 -0
  321. opentrons/protocol_engine/commands/flex_stacker/empty.py +293 -0
  322. opentrons/protocol_engine/commands/flex_stacker/fill.py +281 -0
  323. opentrons/protocol_engine/commands/flex_stacker/retrieve.py +339 -0
  324. opentrons/protocol_engine/commands/flex_stacker/set_stored_labware.py +328 -0
  325. opentrons/protocol_engine/commands/flex_stacker/store.py +339 -0
  326. opentrons/protocol_engine/commands/generate_command_schema.py +61 -0
  327. opentrons/protocol_engine/commands/get_next_tip.py +134 -0
  328. opentrons/protocol_engine/commands/get_tip_presence.py +87 -0
  329. opentrons/protocol_engine/commands/hash_command_params.py +38 -0
  330. opentrons/protocol_engine/commands/heater_shaker/__init__.py +102 -0
  331. opentrons/protocol_engine/commands/heater_shaker/close_labware_latch.py +83 -0
  332. opentrons/protocol_engine/commands/heater_shaker/deactivate_heater.py +82 -0
  333. opentrons/protocol_engine/commands/heater_shaker/deactivate_shaker.py +84 -0
  334. opentrons/protocol_engine/commands/heater_shaker/open_labware_latch.py +110 -0
  335. opentrons/protocol_engine/commands/heater_shaker/set_and_wait_for_shake_speed.py +125 -0
  336. opentrons/protocol_engine/commands/heater_shaker/set_target_temperature.py +90 -0
  337. opentrons/protocol_engine/commands/heater_shaker/wait_for_temperature.py +102 -0
  338. opentrons/protocol_engine/commands/home.py +100 -0
  339. opentrons/protocol_engine/commands/identify_module.py +86 -0
  340. opentrons/protocol_engine/commands/labware_handling_common.py +29 -0
  341. opentrons/protocol_engine/commands/liquid_probe.py +464 -0
  342. opentrons/protocol_engine/commands/load_labware.py +210 -0
  343. opentrons/protocol_engine/commands/load_lid.py +154 -0
  344. opentrons/protocol_engine/commands/load_lid_stack.py +272 -0
  345. opentrons/protocol_engine/commands/load_liquid.py +95 -0
  346. opentrons/protocol_engine/commands/load_liquid_class.py +144 -0
  347. opentrons/protocol_engine/commands/load_module.py +223 -0
  348. opentrons/protocol_engine/commands/load_pipette.py +167 -0
  349. opentrons/protocol_engine/commands/magnetic_module/__init__.py +32 -0
  350. opentrons/protocol_engine/commands/magnetic_module/disengage.py +97 -0
  351. opentrons/protocol_engine/commands/magnetic_module/engage.py +119 -0
  352. opentrons/protocol_engine/commands/move_labware.py +546 -0
  353. opentrons/protocol_engine/commands/move_relative.py +102 -0
  354. opentrons/protocol_engine/commands/move_to_addressable_area.py +176 -0
  355. opentrons/protocol_engine/commands/move_to_addressable_area_for_drop_tip.py +198 -0
  356. opentrons/protocol_engine/commands/move_to_coordinates.py +107 -0
  357. opentrons/protocol_engine/commands/move_to_well.py +119 -0
  358. opentrons/protocol_engine/commands/movement_common.py +338 -0
  359. opentrons/protocol_engine/commands/pick_up_tip.py +241 -0
  360. opentrons/protocol_engine/commands/pipetting_common.py +443 -0
  361. opentrons/protocol_engine/commands/prepare_to_aspirate.py +121 -0
  362. opentrons/protocol_engine/commands/pressure_dispense.py +155 -0
  363. opentrons/protocol_engine/commands/reload_labware.py +90 -0
  364. opentrons/protocol_engine/commands/retract_axis.py +75 -0
  365. opentrons/protocol_engine/commands/robot/__init__.py +70 -0
  366. opentrons/protocol_engine/commands/robot/close_gripper_jaw.py +96 -0
  367. opentrons/protocol_engine/commands/robot/common.py +18 -0
  368. opentrons/protocol_engine/commands/robot/move_axes_relative.py +101 -0
  369. opentrons/protocol_engine/commands/robot/move_axes_to.py +100 -0
  370. opentrons/protocol_engine/commands/robot/move_to.py +94 -0
  371. opentrons/protocol_engine/commands/robot/open_gripper_jaw.py +86 -0
  372. opentrons/protocol_engine/commands/save_position.py +109 -0
  373. opentrons/protocol_engine/commands/seal_pipette_to_tip.py +353 -0
  374. opentrons/protocol_engine/commands/set_rail_lights.py +67 -0
  375. opentrons/protocol_engine/commands/set_status_bar.py +89 -0
  376. opentrons/protocol_engine/commands/temperature_module/__init__.py +46 -0
  377. opentrons/protocol_engine/commands/temperature_module/deactivate.py +86 -0
  378. opentrons/protocol_engine/commands/temperature_module/set_target_temperature.py +97 -0
  379. opentrons/protocol_engine/commands/temperature_module/wait_for_temperature.py +104 -0
  380. opentrons/protocol_engine/commands/thermocycler/__init__.py +152 -0
  381. opentrons/protocol_engine/commands/thermocycler/close_lid.py +87 -0
  382. opentrons/protocol_engine/commands/thermocycler/deactivate_block.py +80 -0
  383. opentrons/protocol_engine/commands/thermocycler/deactivate_lid.py +80 -0
  384. opentrons/protocol_engine/commands/thermocycler/open_lid.py +87 -0
  385. opentrons/protocol_engine/commands/thermocycler/run_extended_profile.py +171 -0
  386. opentrons/protocol_engine/commands/thermocycler/run_profile.py +124 -0
  387. opentrons/protocol_engine/commands/thermocycler/set_target_block_temperature.py +140 -0
  388. opentrons/protocol_engine/commands/thermocycler/set_target_lid_temperature.py +100 -0
  389. opentrons/protocol_engine/commands/thermocycler/wait_for_block_temperature.py +93 -0
  390. opentrons/protocol_engine/commands/thermocycler/wait_for_lid_temperature.py +89 -0
  391. opentrons/protocol_engine/commands/touch_tip.py +189 -0
  392. opentrons/protocol_engine/commands/unsafe/__init__.py +161 -0
  393. opentrons/protocol_engine/commands/unsafe/unsafe_blow_out_in_place.py +100 -0
  394. opentrons/protocol_engine/commands/unsafe/unsafe_drop_tip_in_place.py +121 -0
  395. opentrons/protocol_engine/commands/unsafe/unsafe_engage_axes.py +82 -0
  396. opentrons/protocol_engine/commands/unsafe/unsafe_place_labware.py +208 -0
  397. opentrons/protocol_engine/commands/unsafe/unsafe_stacker_close_latch.py +94 -0
  398. opentrons/protocol_engine/commands/unsafe/unsafe_stacker_manual_retrieve.py +295 -0
  399. opentrons/protocol_engine/commands/unsafe/unsafe_stacker_open_latch.py +91 -0
  400. opentrons/protocol_engine/commands/unsafe/unsafe_stacker_prepare_shuttle.py +136 -0
  401. opentrons/protocol_engine/commands/unsafe/unsafe_ungrip_labware.py +77 -0
  402. opentrons/protocol_engine/commands/unsafe/update_position_estimators.py +90 -0
  403. opentrons/protocol_engine/commands/unseal_pipette_from_tip.py +153 -0
  404. opentrons/protocol_engine/commands/verify_tip_presence.py +100 -0
  405. opentrons/protocol_engine/commands/wait_for_duration.py +76 -0
  406. opentrons/protocol_engine/commands/wait_for_resume.py +75 -0
  407. opentrons/protocol_engine/create_protocol_engine.py +193 -0
  408. opentrons/protocol_engine/engine_support.py +28 -0
  409. opentrons/protocol_engine/error_recovery_policy.py +81 -0
  410. opentrons/protocol_engine/errors/__init__.py +191 -0
  411. opentrons/protocol_engine/errors/error_occurrence.py +182 -0
  412. opentrons/protocol_engine/errors/exceptions.py +1308 -0
  413. opentrons/protocol_engine/execution/__init__.py +50 -0
  414. opentrons/protocol_engine/execution/command_executor.py +216 -0
  415. opentrons/protocol_engine/execution/create_queue_worker.py +102 -0
  416. opentrons/protocol_engine/execution/door_watcher.py +119 -0
  417. opentrons/protocol_engine/execution/equipment.py +819 -0
  418. opentrons/protocol_engine/execution/error_recovery_hardware_state_synchronizer.py +101 -0
  419. opentrons/protocol_engine/execution/gantry_mover.py +686 -0
  420. opentrons/protocol_engine/execution/hardware_stopper.py +147 -0
  421. opentrons/protocol_engine/execution/heater_shaker_movement_flagger.py +207 -0
  422. opentrons/protocol_engine/execution/labware_movement.py +297 -0
  423. opentrons/protocol_engine/execution/movement.py +350 -0
  424. opentrons/protocol_engine/execution/pipetting.py +607 -0
  425. opentrons/protocol_engine/execution/queue_worker.py +86 -0
  426. opentrons/protocol_engine/execution/rail_lights.py +25 -0
  427. opentrons/protocol_engine/execution/run_control.py +33 -0
  428. opentrons/protocol_engine/execution/status_bar.py +34 -0
  429. opentrons/protocol_engine/execution/thermocycler_movement_flagger.py +188 -0
  430. opentrons/protocol_engine/execution/thermocycler_plate_lifter.py +81 -0
  431. opentrons/protocol_engine/execution/tip_handler.py +550 -0
  432. opentrons/protocol_engine/labware_offset_standardization.py +194 -0
  433. opentrons/protocol_engine/notes/__init__.py +17 -0
  434. opentrons/protocol_engine/notes/notes.py +59 -0
  435. opentrons/protocol_engine/plugins.py +104 -0
  436. opentrons/protocol_engine/protocol_engine.py +683 -0
  437. opentrons/protocol_engine/resources/__init__.py +26 -0
  438. opentrons/protocol_engine/resources/deck_configuration_provider.py +232 -0
  439. opentrons/protocol_engine/resources/deck_data_provider.py +94 -0
  440. opentrons/protocol_engine/resources/file_provider.py +161 -0
  441. opentrons/protocol_engine/resources/fixture_validation.py +68 -0
  442. opentrons/protocol_engine/resources/labware_data_provider.py +106 -0
  443. opentrons/protocol_engine/resources/labware_validation.py +73 -0
  444. opentrons/protocol_engine/resources/model_utils.py +32 -0
  445. opentrons/protocol_engine/resources/module_data_provider.py +44 -0
  446. opentrons/protocol_engine/resources/ot3_validation.py +21 -0
  447. opentrons/protocol_engine/resources/pipette_data_provider.py +379 -0
  448. opentrons/protocol_engine/slot_standardization.py +128 -0
  449. opentrons/protocol_engine/state/__init__.py +1 -0
  450. opentrons/protocol_engine/state/_abstract_store.py +27 -0
  451. opentrons/protocol_engine/state/_axis_aligned_bounding_box.py +50 -0
  452. opentrons/protocol_engine/state/_labware_origin_math.py +636 -0
  453. opentrons/protocol_engine/state/_move_types.py +83 -0
  454. opentrons/protocol_engine/state/_well_math.py +193 -0
  455. opentrons/protocol_engine/state/addressable_areas.py +699 -0
  456. opentrons/protocol_engine/state/command_history.py +309 -0
  457. opentrons/protocol_engine/state/commands.py +1164 -0
  458. opentrons/protocol_engine/state/config.py +39 -0
  459. opentrons/protocol_engine/state/files.py +57 -0
  460. opentrons/protocol_engine/state/fluid_stack.py +138 -0
  461. opentrons/protocol_engine/state/geometry.py +2408 -0
  462. opentrons/protocol_engine/state/inner_well_math_utils.py +548 -0
  463. opentrons/protocol_engine/state/labware.py +1432 -0
  464. opentrons/protocol_engine/state/liquid_classes.py +82 -0
  465. opentrons/protocol_engine/state/liquids.py +73 -0
  466. opentrons/protocol_engine/state/module_substates/__init__.py +45 -0
  467. opentrons/protocol_engine/state/module_substates/absorbance_reader_substate.py +35 -0
  468. opentrons/protocol_engine/state/module_substates/flex_stacker_substate.py +112 -0
  469. opentrons/protocol_engine/state/module_substates/heater_shaker_module_substate.py +115 -0
  470. opentrons/protocol_engine/state/module_substates/magnetic_block_substate.py +17 -0
  471. opentrons/protocol_engine/state/module_substates/magnetic_module_substate.py +65 -0
  472. opentrons/protocol_engine/state/module_substates/temperature_module_substate.py +67 -0
  473. opentrons/protocol_engine/state/module_substates/thermocycler_module_substate.py +163 -0
  474. opentrons/protocol_engine/state/modules.py +1515 -0
  475. opentrons/protocol_engine/state/motion.py +373 -0
  476. opentrons/protocol_engine/state/pipettes.py +905 -0
  477. opentrons/protocol_engine/state/state.py +421 -0
  478. opentrons/protocol_engine/state/state_summary.py +36 -0
  479. opentrons/protocol_engine/state/tips.py +420 -0
  480. opentrons/protocol_engine/state/update_types.py +904 -0
  481. opentrons/protocol_engine/state/wells.py +290 -0
  482. opentrons/protocol_engine/types/__init__.py +310 -0
  483. opentrons/protocol_engine/types/automatic_tip_selection.py +39 -0
  484. opentrons/protocol_engine/types/command_annotations.py +53 -0
  485. opentrons/protocol_engine/types/deck_configuration.py +81 -0
  486. opentrons/protocol_engine/types/execution.py +96 -0
  487. opentrons/protocol_engine/types/hardware_passthrough.py +25 -0
  488. opentrons/protocol_engine/types/instrument.py +47 -0
  489. opentrons/protocol_engine/types/instrument_sensors.py +47 -0
  490. opentrons/protocol_engine/types/labware.py +131 -0
  491. opentrons/protocol_engine/types/labware_movement.py +22 -0
  492. opentrons/protocol_engine/types/labware_offset_location.py +111 -0
  493. opentrons/protocol_engine/types/labware_offset_vector.py +16 -0
  494. opentrons/protocol_engine/types/liquid.py +40 -0
  495. opentrons/protocol_engine/types/liquid_class.py +59 -0
  496. opentrons/protocol_engine/types/liquid_handling.py +13 -0
  497. opentrons/protocol_engine/types/liquid_level_detection.py +191 -0
  498. opentrons/protocol_engine/types/location.py +194 -0
  499. opentrons/protocol_engine/types/module.py +310 -0
  500. opentrons/protocol_engine/types/partial_tip_configuration.py +76 -0
  501. opentrons/protocol_engine/types/run_time_parameters.py +133 -0
  502. opentrons/protocol_engine/types/tip.py +18 -0
  503. opentrons/protocol_engine/types/util.py +21 -0
  504. opentrons/protocol_engine/types/well_position.py +124 -0
  505. opentrons/protocol_reader/__init__.py +37 -0
  506. opentrons/protocol_reader/extract_labware_definitions.py +66 -0
  507. opentrons/protocol_reader/file_format_validator.py +152 -0
  508. opentrons/protocol_reader/file_hasher.py +27 -0
  509. opentrons/protocol_reader/file_identifier.py +284 -0
  510. opentrons/protocol_reader/file_reader_writer.py +90 -0
  511. opentrons/protocol_reader/input_file.py +16 -0
  512. opentrons/protocol_reader/protocol_files_invalid_error.py +6 -0
  513. opentrons/protocol_reader/protocol_reader.py +188 -0
  514. opentrons/protocol_reader/protocol_source.py +124 -0
  515. opentrons/protocol_reader/role_analyzer.py +86 -0
  516. opentrons/protocol_runner/__init__.py +26 -0
  517. opentrons/protocol_runner/create_simulating_orchestrator.py +118 -0
  518. opentrons/protocol_runner/json_file_reader.py +55 -0
  519. opentrons/protocol_runner/json_translator.py +314 -0
  520. opentrons/protocol_runner/legacy_command_mapper.py +852 -0
  521. opentrons/protocol_runner/legacy_context_plugin.py +116 -0
  522. opentrons/protocol_runner/protocol_runner.py +530 -0
  523. opentrons/protocol_runner/python_protocol_wrappers.py +179 -0
  524. opentrons/protocol_runner/run_orchestrator.py +496 -0
  525. opentrons/protocol_runner/task_queue.py +95 -0
  526. opentrons/protocols/__init__.py +6 -0
  527. opentrons/protocols/advanced_control/__init__.py +0 -0
  528. opentrons/protocols/advanced_control/common.py +38 -0
  529. opentrons/protocols/advanced_control/mix.py +60 -0
  530. opentrons/protocols/advanced_control/transfers/__init__.py +0 -0
  531. opentrons/protocols/advanced_control/transfers/common.py +180 -0
  532. opentrons/protocols/advanced_control/transfers/transfer.py +972 -0
  533. opentrons/protocols/advanced_control/transfers/transfer_liquid_utils.py +231 -0
  534. opentrons/protocols/api_support/__init__.py +0 -0
  535. opentrons/protocols/api_support/constants.py +8 -0
  536. opentrons/protocols/api_support/deck_type.py +110 -0
  537. opentrons/protocols/api_support/definitions.py +18 -0
  538. opentrons/protocols/api_support/instrument.py +151 -0
  539. opentrons/protocols/api_support/labware_like.py +233 -0
  540. opentrons/protocols/api_support/tip_tracker.py +175 -0
  541. opentrons/protocols/api_support/types.py +32 -0
  542. opentrons/protocols/api_support/util.py +403 -0
  543. opentrons/protocols/bundle.py +89 -0
  544. opentrons/protocols/duration/__init__.py +4 -0
  545. opentrons/protocols/duration/errors.py +5 -0
  546. opentrons/protocols/duration/estimator.py +628 -0
  547. opentrons/protocols/execution/__init__.py +0 -0
  548. opentrons/protocols/execution/dev_types.py +181 -0
  549. opentrons/protocols/execution/errors.py +40 -0
  550. opentrons/protocols/execution/execute.py +84 -0
  551. opentrons/protocols/execution/execute_json_v3.py +275 -0
  552. opentrons/protocols/execution/execute_json_v4.py +359 -0
  553. opentrons/protocols/execution/execute_json_v5.py +28 -0
  554. opentrons/protocols/execution/execute_python.py +169 -0
  555. opentrons/protocols/execution/json_dispatchers.py +87 -0
  556. opentrons/protocols/execution/types.py +7 -0
  557. opentrons/protocols/geometry/__init__.py +0 -0
  558. opentrons/protocols/geometry/planning.py +297 -0
  559. opentrons/protocols/labware.py +312 -0
  560. opentrons/protocols/models/__init__.py +0 -0
  561. opentrons/protocols/models/json_protocol.py +679 -0
  562. opentrons/protocols/parameters/__init__.py +0 -0
  563. opentrons/protocols/parameters/csv_parameter_definition.py +77 -0
  564. opentrons/protocols/parameters/csv_parameter_interface.py +96 -0
  565. opentrons/protocols/parameters/exceptions.py +34 -0
  566. opentrons/protocols/parameters/parameter_definition.py +272 -0
  567. opentrons/protocols/parameters/types.py +17 -0
  568. opentrons/protocols/parameters/validation.py +267 -0
  569. opentrons/protocols/parse.py +671 -0
  570. opentrons/protocols/types.py +159 -0
  571. opentrons/py.typed +0 -0
  572. opentrons/resources/scripts/lpc21isp +0 -0
  573. opentrons/resources/smoothie-edge-8414642.hex +23010 -0
  574. opentrons/simulate.py +1065 -0
  575. opentrons/system/__init__.py +6 -0
  576. opentrons/system/camera.py +51 -0
  577. opentrons/system/log_control.py +59 -0
  578. opentrons/system/nmcli.py +856 -0
  579. opentrons/system/resin.py +24 -0
  580. opentrons/system/smoothie_update.py +15 -0
  581. opentrons/system/wifi.py +204 -0
  582. opentrons/tools/__init__.py +0 -0
  583. opentrons/tools/args_handler.py +22 -0
  584. opentrons/tools/write_pipette_memory.py +157 -0
  585. opentrons/types.py +618 -0
  586. opentrons/util/__init__.py +1 -0
  587. opentrons/util/async_helpers.py +166 -0
  588. opentrons/util/broker.py +84 -0
  589. opentrons/util/change_notifier.py +47 -0
  590. opentrons/util/entrypoint_util.py +278 -0
  591. opentrons/util/get_union_elements.py +26 -0
  592. opentrons/util/helpers.py +6 -0
  593. opentrons/util/linal.py +178 -0
  594. opentrons/util/logging_config.py +265 -0
  595. opentrons/util/logging_queue_handler.py +61 -0
  596. opentrons/util/performance_helpers.py +157 -0
  597. opentrons-8.6.0.dist-info/METADATA +37 -0
  598. opentrons-8.6.0.dist-info/RECORD +601 -0
  599. opentrons-8.6.0.dist-info/WHEEL +4 -0
  600. opentrons-8.6.0.dist-info/entry_points.txt +3 -0
  601. opentrons-8.6.0.dist-info/licenses/LICENSE +202 -0
@@ -0,0 +1,102 @@
1
+ """Heater-Shaker Module protocol commands."""
2
+
3
+ from .wait_for_temperature import (
4
+ WaitForTemperature,
5
+ WaitForTemperatureCreate,
6
+ WaitForTemperatureParams,
7
+ WaitForTemperatureResult,
8
+ WaitForTemperatureCommandType,
9
+ )
10
+
11
+ from .set_target_temperature import (
12
+ SetTargetTemperature,
13
+ SetTargetTemperatureCreate,
14
+ SetTargetTemperatureParams,
15
+ SetTargetTemperatureResult,
16
+ SetTargetTemperatureCommandType,
17
+ )
18
+
19
+ from .deactivate_heater import (
20
+ DeactivateHeater,
21
+ DeactivateHeaterCreate,
22
+ DeactivateHeaterParams,
23
+ DeactivateHeaterResult,
24
+ DeactivateHeaterCommandType,
25
+ )
26
+
27
+ from .set_and_wait_for_shake_speed import (
28
+ SetAndWaitForShakeSpeed,
29
+ SetAndWaitForShakeSpeedCreate,
30
+ SetAndWaitForShakeSpeedParams,
31
+ SetAndWaitForShakeSpeedResult,
32
+ SetAndWaitForShakeSpeedCommandType,
33
+ )
34
+
35
+ from .deactivate_shaker import (
36
+ DeactivateShaker,
37
+ DeactivateShakerCreate,
38
+ DeactivateShakerParams,
39
+ DeactivateShakerResult,
40
+ DeactivateShakerCommandType,
41
+ )
42
+
43
+ from .open_labware_latch import (
44
+ OpenLabwareLatch,
45
+ OpenLabwareLatchCreate,
46
+ OpenLabwareLatchParams,
47
+ OpenLabwareLatchResult,
48
+ OpenLabwareLatchCommandType,
49
+ )
50
+
51
+ from .close_labware_latch import (
52
+ CloseLabwareLatch,
53
+ CloseLabwareLatchCreate,
54
+ CloseLabwareLatchParams,
55
+ CloseLabwareLatchResult,
56
+ CloseLabwareLatchCommandType,
57
+ )
58
+
59
+ __all__ = [
60
+ # heaterShaker/waitForTemperature
61
+ "WaitForTemperature",
62
+ "WaitForTemperatureCreate",
63
+ "WaitForTemperatureParams",
64
+ "WaitForTemperatureResult",
65
+ "WaitForTemperatureCommandType",
66
+ # heaterShaker/setTargetTemperature
67
+ "SetTargetTemperature",
68
+ "SetTargetTemperatureCreate",
69
+ "SetTargetTemperatureParams",
70
+ "SetTargetTemperatureResult",
71
+ "SetTargetTemperatureCommandType",
72
+ # heaterShaker/deactivateHeater
73
+ "DeactivateHeater",
74
+ "DeactivateHeaterCreate",
75
+ "DeactivateHeaterParams",
76
+ "DeactivateHeaterResult",
77
+ "DeactivateHeaterCommandType",
78
+ # heaterShaker/setAndWaitForShakeSpeed
79
+ "SetAndWaitForShakeSpeed",
80
+ "SetAndWaitForShakeSpeedCreate",
81
+ "SetAndWaitForShakeSpeedParams",
82
+ "SetAndWaitForShakeSpeedResult",
83
+ "SetAndWaitForShakeSpeedCommandType",
84
+ # heaterShaker/deactivateShaker
85
+ "DeactivateShaker",
86
+ "DeactivateShakerCreate",
87
+ "DeactivateShakerParams",
88
+ "DeactivateShakerResult",
89
+ "DeactivateShakerCommandType",
90
+ # heaterShaker/openLabwareLatch
91
+ "OpenLabwareLatch",
92
+ "OpenLabwareLatchCreate",
93
+ "OpenLabwareLatchParams",
94
+ "OpenLabwareLatchResult",
95
+ "OpenLabwareLatchCommandType",
96
+ # heaterShaker/closeLabwareLatch
97
+ "CloseLabwareLatch",
98
+ "CloseLabwareLatchCreate",
99
+ "CloseLabwareLatchParams",
100
+ "CloseLabwareLatchResult",
101
+ "CloseLabwareLatchCommandType",
102
+ ]
@@ -0,0 +1,83 @@
1
+ """Command models to close the Heater-Shaker Module's labware latch."""
2
+ from __future__ import annotations
3
+ from typing import Optional, TYPE_CHECKING
4
+ from typing_extensions import Literal, Type
5
+
6
+ from pydantic import BaseModel, Field
7
+
8
+ from ..command import AbstractCommandImpl, BaseCommand, BaseCommandCreate, SuccessData
9
+ from ...errors.error_occurrence import ErrorOccurrence
10
+
11
+ if TYPE_CHECKING:
12
+ from opentrons.protocol_engine.state.state import StateView
13
+ from opentrons.protocol_engine.execution import EquipmentHandler
14
+
15
+
16
+ CloseLabwareLatchCommandType = Literal["heaterShaker/closeLabwareLatch"]
17
+
18
+
19
+ class CloseLabwareLatchParams(BaseModel):
20
+ """Input parameters to close a Heater-Shaker Module's labware latch."""
21
+
22
+ moduleId: str = Field(..., description="Unique ID of the Heater-Shaker Module.")
23
+
24
+
25
+ class CloseLabwareLatchResult(BaseModel):
26
+ """Result data from closing a Heater-Shaker's labware latch."""
27
+
28
+
29
+ class CloseLabwareLatchImpl(
30
+ AbstractCommandImpl[CloseLabwareLatchParams, SuccessData[CloseLabwareLatchResult]]
31
+ ):
32
+ """Execution implementation of a Heater-Shaker's close labware latch command."""
33
+
34
+ def __init__(
35
+ self,
36
+ state_view: StateView,
37
+ equipment: EquipmentHandler,
38
+ **unused_dependencies: object,
39
+ ) -> None:
40
+ self._state_view = state_view
41
+ self._equipment = equipment
42
+
43
+ async def execute(
44
+ self, params: CloseLabwareLatchParams
45
+ ) -> SuccessData[CloseLabwareLatchResult]:
46
+ """Close a Heater-Shaker's labware latch."""
47
+ # Allow propagation of ModuleNotLoadedError and WrongModuleTypeError.
48
+ hs_module_substate = self._state_view.modules.get_heater_shaker_module_substate(
49
+ module_id=params.moduleId
50
+ )
51
+
52
+ # Allow propagation of ModuleNotAttachedError.
53
+ hs_hardware_module = self._equipment.get_module_hardware_api(
54
+ hs_module_substate.module_id
55
+ )
56
+
57
+ if hs_hardware_module is not None:
58
+ await hs_hardware_module.close_labware_latch()
59
+
60
+ return SuccessData(
61
+ public=CloseLabwareLatchResult(),
62
+ )
63
+
64
+
65
+ class CloseLabwareLatch(
66
+ BaseCommand[CloseLabwareLatchParams, CloseLabwareLatchResult, ErrorOccurrence]
67
+ ):
68
+ """A command to close a Heater-Shaker's latch."""
69
+
70
+ commandType: CloseLabwareLatchCommandType = "heaterShaker/closeLabwareLatch"
71
+ params: CloseLabwareLatchParams
72
+ result: Optional[CloseLabwareLatchResult] = None
73
+
74
+ _ImplementationCls: Type[CloseLabwareLatchImpl] = CloseLabwareLatchImpl
75
+
76
+
77
+ class CloseLabwareLatchCreate(BaseCommandCreate[CloseLabwareLatchParams]):
78
+ """A request to create a Heater-Shaker's close latch command."""
79
+
80
+ commandType: CloseLabwareLatchCommandType = "heaterShaker/closeLabwareLatch"
81
+ params: CloseLabwareLatchParams
82
+
83
+ _CommandCls: Type[CloseLabwareLatch] = CloseLabwareLatch
@@ -0,0 +1,82 @@
1
+ """Command models to stop heating Heater-Shaker Module."""
2
+ from __future__ import annotations
3
+ from typing import Optional, TYPE_CHECKING
4
+ from typing_extensions import Literal, Type
5
+
6
+ from pydantic import BaseModel, Field
7
+
8
+ from ..command import AbstractCommandImpl, BaseCommand, BaseCommandCreate, SuccessData
9
+ from ...errors.error_occurrence import ErrorOccurrence
10
+
11
+ if TYPE_CHECKING:
12
+ from opentrons.protocol_engine.state.state import StateView
13
+ from opentrons.protocol_engine.execution import EquipmentHandler
14
+
15
+
16
+ DeactivateHeaterCommandType = Literal["heaterShaker/deactivateHeater"]
17
+
18
+
19
+ class DeactivateHeaterParams(BaseModel):
20
+ """Input parameters to unset a Heater-Shaker's target temperature."""
21
+
22
+ moduleId: str = Field(..., description="Unique ID of the Heater-Shaker Module.")
23
+
24
+
25
+ class DeactivateHeaterResult(BaseModel):
26
+ """Result data from unsetting a Heater-Shaker's target temperature."""
27
+
28
+
29
+ class DeactivateHeaterImpl(
30
+ AbstractCommandImpl[DeactivateHeaterParams, SuccessData[DeactivateHeaterResult]]
31
+ ):
32
+ """Execution implementation of a Heater-Shaker's deactivate heater command."""
33
+
34
+ def __init__(
35
+ self,
36
+ state_view: StateView,
37
+ equipment: EquipmentHandler,
38
+ **unused_dependencies: object,
39
+ ) -> None:
40
+ self._state_view = state_view
41
+ self._equipment = equipment
42
+
43
+ async def execute(
44
+ self, params: DeactivateHeaterParams
45
+ ) -> SuccessData[DeactivateHeaterResult]:
46
+ """Unset a Heater-Shaker's target temperature."""
47
+ hs_module_substate = self._state_view.modules.get_heater_shaker_module_substate(
48
+ module_id=params.moduleId
49
+ )
50
+
51
+ # Allow propagation of ModuleNotAttachedError.
52
+ hs_hardware_module = self._equipment.get_module_hardware_api(
53
+ hs_module_substate.module_id
54
+ )
55
+
56
+ if hs_hardware_module is not None:
57
+ await hs_hardware_module.deactivate_heater()
58
+
59
+ return SuccessData(
60
+ public=DeactivateHeaterResult(),
61
+ )
62
+
63
+
64
+ class DeactivateHeater(
65
+ BaseCommand[DeactivateHeaterParams, DeactivateHeaterResult, ErrorOccurrence]
66
+ ):
67
+ """A command to unset a Heater-Shaker's target temperature."""
68
+
69
+ commandType: DeactivateHeaterCommandType = "heaterShaker/deactivateHeater"
70
+ params: DeactivateHeaterParams
71
+ result: Optional[DeactivateHeaterResult] = None
72
+
73
+ _ImplementationCls: Type[DeactivateHeaterImpl] = DeactivateHeaterImpl
74
+
75
+
76
+ class DeactivateHeaterCreate(BaseCommandCreate[DeactivateHeaterParams]):
77
+ """A request to create a Heater-Shaker's deactivate heater command."""
78
+
79
+ commandType: DeactivateHeaterCommandType = "heaterShaker/deactivateHeater"
80
+ params: DeactivateHeaterParams
81
+
82
+ _CommandCls: Type[DeactivateHeater] = DeactivateHeater
@@ -0,0 +1,84 @@
1
+ """Command models to deactivate shaker for the Heater-Shaker Module."""
2
+ from __future__ import annotations
3
+ from typing import Optional, TYPE_CHECKING
4
+ from typing_extensions import Literal, Type
5
+
6
+ from pydantic import BaseModel, Field
7
+
8
+ from ..command import AbstractCommandImpl, BaseCommand, BaseCommandCreate, SuccessData
9
+ from ...errors.error_occurrence import ErrorOccurrence
10
+
11
+ if TYPE_CHECKING:
12
+ from opentrons.protocol_engine.state.state import StateView
13
+ from opentrons.protocol_engine.execution import EquipmentHandler
14
+
15
+ DeactivateShakerCommandType = Literal["heaterShaker/deactivateShaker"]
16
+
17
+
18
+ class DeactivateShakerParams(BaseModel):
19
+ """Input parameters to deactivate shaker for a Heater-Shaker Module."""
20
+
21
+ moduleId: str = Field(..., description="Unique ID of the Heater-Shaker Module.")
22
+
23
+
24
+ class DeactivateShakerResult(BaseModel):
25
+ """Result data from deactivating shaker for a Heater-Shaker."""
26
+
27
+
28
+ class DeactivateShakerImpl(
29
+ AbstractCommandImpl[DeactivateShakerParams, SuccessData[DeactivateShakerResult]]
30
+ ):
31
+ """Execution implementation of a Heater-Shaker's deactivate shaker command."""
32
+
33
+ def __init__(
34
+ self,
35
+ state_view: StateView,
36
+ equipment: EquipmentHandler,
37
+ **unused_dependencies: object,
38
+ ) -> None:
39
+ self._state_view = state_view
40
+ self._equipment = equipment
41
+
42
+ async def execute(
43
+ self, params: DeactivateShakerParams
44
+ ) -> SuccessData[DeactivateShakerResult]:
45
+ """Deactivate shaker for a Heater-Shaker."""
46
+ # Allow propagation of ModuleNotLoadedError and WrongModuleTypeError.
47
+ hs_module_substate = self._state_view.modules.get_heater_shaker_module_substate(
48
+ module_id=params.moduleId
49
+ )
50
+
51
+ hs_module_substate.raise_if_labware_latch_not_closed()
52
+
53
+ # Allow propagation of ModuleNotAttachedError.
54
+ hs_hardware_module = self._equipment.get_module_hardware_api(
55
+ hs_module_substate.module_id
56
+ )
57
+
58
+ if hs_hardware_module is not None:
59
+ await hs_hardware_module.deactivate_shaker()
60
+
61
+ return SuccessData(
62
+ public=DeactivateShakerResult(),
63
+ )
64
+
65
+
66
+ class DeactivateShaker(
67
+ BaseCommand[DeactivateShakerParams, DeactivateShakerResult, ErrorOccurrence]
68
+ ):
69
+ """A command to deactivate shaker for a Heater-Shaker."""
70
+
71
+ commandType: DeactivateShakerCommandType = "heaterShaker/deactivateShaker"
72
+ params: DeactivateShakerParams
73
+ result: Optional[DeactivateShakerResult] = None
74
+
75
+ _ImplementationCls: Type[DeactivateShakerImpl] = DeactivateShakerImpl
76
+
77
+
78
+ class DeactivateShakerCreate(BaseCommandCreate[DeactivateShakerParams]):
79
+ """A request to create a Heater-Shaker's deactivate shaker command."""
80
+
81
+ commandType: DeactivateShakerCommandType = "heaterShaker/deactivateShaker"
82
+ params: DeactivateShakerParams
83
+
84
+ _CommandCls: Type[DeactivateShaker] = DeactivateShaker
@@ -0,0 +1,110 @@
1
+ """Command models to open the Heater-Shaker Module's labware latch."""
2
+ from __future__ import annotations
3
+ from typing import Optional, TYPE_CHECKING
4
+ from typing_extensions import Literal, Type
5
+ from pydantic import BaseModel, Field
6
+
7
+ from ..command import AbstractCommandImpl, BaseCommand, BaseCommandCreate, SuccessData
8
+ from ...errors.error_occurrence import ErrorOccurrence
9
+ from ...state import update_types
10
+
11
+ if TYPE_CHECKING:
12
+ from opentrons.protocol_engine.state.state import StateView
13
+ from opentrons.protocol_engine.execution import EquipmentHandler, MovementHandler
14
+
15
+ OpenLabwareLatchCommandType = Literal["heaterShaker/openLabwareLatch"]
16
+
17
+
18
+ class OpenLabwareLatchParams(BaseModel):
19
+ """Input parameters to open a Heater-Shaker Module's labware latch."""
20
+
21
+ moduleId: str = Field(..., description="Unique ID of the Heater-Shaker Module.")
22
+
23
+
24
+ class OpenLabwareLatchResult(BaseModel):
25
+ """Result data from opening a Heater-Shaker's labware latch."""
26
+
27
+ pipetteRetracted: bool = Field(
28
+ ...,
29
+ description=(
30
+ "Whether this command automatically retracted the pipettes"
31
+ " before opening the latch, to avoid a potential collision."
32
+ ),
33
+ )
34
+
35
+
36
+ class OpenLabwareLatchImpl(
37
+ AbstractCommandImpl[OpenLabwareLatchParams, SuccessData[OpenLabwareLatchResult]]
38
+ ):
39
+ """Execution implementation of a Heater-Shaker's open latch labware command."""
40
+
41
+ def __init__(
42
+ self,
43
+ state_view: StateView,
44
+ equipment: EquipmentHandler,
45
+ movement: MovementHandler,
46
+ **unused_dependencies: object,
47
+ ) -> None:
48
+ self._state_view = state_view
49
+ self._equipment = equipment
50
+ self._movement = movement
51
+
52
+ async def execute(
53
+ self, params: OpenLabwareLatchParams
54
+ ) -> SuccessData[OpenLabwareLatchResult]:
55
+ """Open a Heater-Shaker's labware latch."""
56
+ state_update = update_types.StateUpdate()
57
+
58
+ # Allow propagation of ModuleNotLoadedError and WrongModuleTypeError.
59
+ hs_module_substate = self._state_view.modules.get_heater_shaker_module_substate(
60
+ module_id=params.moduleId
61
+ )
62
+
63
+ hs_module_substate.raise_if_shaking()
64
+
65
+ pipette_should_retract = (
66
+ self._state_view.motion.check_pipette_blocking_hs_latch(
67
+ hs_module_substate.module_id
68
+ )
69
+ )
70
+ if pipette_should_retract:
71
+ # Move pipette away if it is close to the heater-shaker
72
+ # TODO(jbl 2022-07-28) replace home movement with a retract movement
73
+ await self._movement.home(
74
+ axes=self._state_view.motion.get_robot_mount_axes()
75
+ )
76
+ state_update.clear_all_pipette_locations()
77
+
78
+ # Allow propagation of ModuleNotAttachedError.
79
+ hs_hardware_module = self._equipment.get_module_hardware_api(
80
+ hs_module_substate.module_id
81
+ )
82
+
83
+ if hs_hardware_module is not None:
84
+ await hs_hardware_module.open_labware_latch()
85
+
86
+ return SuccessData(
87
+ public=OpenLabwareLatchResult(pipetteRetracted=pipette_should_retract),
88
+ state_update=state_update,
89
+ )
90
+
91
+
92
+ class OpenLabwareLatch(
93
+ BaseCommand[OpenLabwareLatchParams, OpenLabwareLatchResult, ErrorOccurrence]
94
+ ):
95
+ """A command to open a Heater-Shaker's labware latch."""
96
+
97
+ commandType: OpenLabwareLatchCommandType = "heaterShaker/openLabwareLatch"
98
+ params: OpenLabwareLatchParams
99
+ result: Optional[OpenLabwareLatchResult] = None
100
+
101
+ _ImplementationCls: Type[OpenLabwareLatchImpl] = OpenLabwareLatchImpl
102
+
103
+
104
+ class OpenLabwareLatchCreate(BaseCommandCreate[OpenLabwareLatchParams]):
105
+ """A request to create a Heater-Shaker's open labware latch command."""
106
+
107
+ commandType: OpenLabwareLatchCommandType = "heaterShaker/openLabwareLatch"
108
+ params: OpenLabwareLatchParams
109
+
110
+ _CommandCls: Type[OpenLabwareLatch] = OpenLabwareLatch
@@ -0,0 +1,125 @@
1
+ """Command models to set and wait for a shake speed for a Heater-Shaker Module."""
2
+ from __future__ import annotations
3
+ from typing import Optional, TYPE_CHECKING
4
+ from typing_extensions import Literal, Type
5
+ from pydantic import BaseModel, Field
6
+
7
+ from ..command import AbstractCommandImpl, BaseCommand, BaseCommandCreate, SuccessData
8
+ from ...errors.error_occurrence import ErrorOccurrence
9
+ from ...state import update_types
10
+
11
+ if TYPE_CHECKING:
12
+ from opentrons.protocol_engine.state.state import StateView
13
+ from opentrons.protocol_engine.execution import EquipmentHandler, MovementHandler
14
+
15
+ SetAndWaitForShakeSpeedCommandType = Literal["heaterShaker/setAndWaitForShakeSpeed"]
16
+
17
+
18
+ class SetAndWaitForShakeSpeedParams(BaseModel):
19
+ """Input parameters to set and wait for a shake speed for a Heater-Shaker Module."""
20
+
21
+ moduleId: str = Field(..., description="Unique ID of the Heater-Shaker Module.")
22
+ rpm: float = Field(..., description="Target speed in rotations per minute.")
23
+
24
+
25
+ class SetAndWaitForShakeSpeedResult(BaseModel):
26
+ """Result data from setting and waiting for a Heater-Shaker's shake speed."""
27
+
28
+ pipetteRetracted: bool = Field(
29
+ ...,
30
+ description=(
31
+ "Whether this command automatically retracted the pipettes"
32
+ " before starting the shake, to avoid a potential collision."
33
+ ),
34
+ )
35
+
36
+
37
+ class SetAndWaitForShakeSpeedImpl(
38
+ AbstractCommandImpl[
39
+ SetAndWaitForShakeSpeedParams, SuccessData[SetAndWaitForShakeSpeedResult]
40
+ ]
41
+ ):
42
+ """Execution implementation of Heater-Shaker's set and wait shake speed command."""
43
+
44
+ def __init__(
45
+ self,
46
+ state_view: StateView,
47
+ equipment: EquipmentHandler,
48
+ movement: MovementHandler,
49
+ **unused_dependencies: object,
50
+ ) -> None:
51
+ self._state_view = state_view
52
+ self._equipment = equipment
53
+ self._movement = movement
54
+
55
+ async def execute(
56
+ self,
57
+ params: SetAndWaitForShakeSpeedParams,
58
+ ) -> SuccessData[SetAndWaitForShakeSpeedResult]:
59
+ """Set and wait for a Heater-Shaker's target shake speed."""
60
+ state_update = update_types.StateUpdate()
61
+
62
+ # Allow propagation of ModuleNotLoadedError and WrongModuleTypeError.
63
+ hs_module_substate = self._state_view.modules.get_heater_shaker_module_substate(
64
+ module_id=params.moduleId
65
+ )
66
+
67
+ hs_module_substate.raise_if_labware_latch_not_closed()
68
+
69
+ # Verify speed from hs module view
70
+ validated_speed = hs_module_substate.validate_target_speed(params.rpm)
71
+
72
+ pipette_should_retract = (
73
+ self._state_view.motion.check_pipette_blocking_hs_shaker(
74
+ hs_module_substate.module_id
75
+ )
76
+ )
77
+ if pipette_should_retract:
78
+ # Move pipette away if it is close to the heater-shaker
79
+ # TODO(jbl 2022-07-28) replace home movement with a retract movement
80
+ await self._movement.home(
81
+ axes=self._state_view.motion.get_robot_mount_axes()
82
+ )
83
+ state_update.clear_all_pipette_locations()
84
+
85
+ # Allow propagation of ModuleNotAttachedError.
86
+ hs_hardware_module = self._equipment.get_module_hardware_api(
87
+ hs_module_substate.module_id
88
+ )
89
+
90
+ if hs_hardware_module is not None:
91
+ await hs_hardware_module.set_speed(rpm=validated_speed)
92
+
93
+ return SuccessData(
94
+ public=SetAndWaitForShakeSpeedResult(
95
+ pipetteRetracted=pipette_should_retract
96
+ ),
97
+ state_update=state_update,
98
+ )
99
+
100
+
101
+ class SetAndWaitForShakeSpeed(
102
+ BaseCommand[
103
+ SetAndWaitForShakeSpeedParams, SetAndWaitForShakeSpeedResult, ErrorOccurrence
104
+ ]
105
+ ):
106
+ """A command to set and wait for a Heater-Shaker's shake speed."""
107
+
108
+ commandType: SetAndWaitForShakeSpeedCommandType = (
109
+ "heaterShaker/setAndWaitForShakeSpeed"
110
+ )
111
+ params: SetAndWaitForShakeSpeedParams
112
+ result: Optional[SetAndWaitForShakeSpeedResult] = None
113
+
114
+ _ImplementationCls: Type[SetAndWaitForShakeSpeedImpl] = SetAndWaitForShakeSpeedImpl
115
+
116
+
117
+ class SetAndWaitForShakeSpeedCreate(BaseCommandCreate[SetAndWaitForShakeSpeedParams]):
118
+ """A request to create a Heater-Shaker's set and wait for shake speed command."""
119
+
120
+ commandType: SetAndWaitForShakeSpeedCommandType = (
121
+ "heaterShaker/setAndWaitForShakeSpeed"
122
+ )
123
+ params: SetAndWaitForShakeSpeedParams
124
+
125
+ _CommandCls: Type[SetAndWaitForShakeSpeed] = SetAndWaitForShakeSpeed
@@ -0,0 +1,90 @@
1
+ """Command models to start heating a Heater-Shaker Module."""
2
+ from __future__ import annotations
3
+ from typing import Optional, TYPE_CHECKING
4
+ from typing_extensions import Literal, Type
5
+
6
+ from pydantic import BaseModel, Field
7
+
8
+ from ..command import AbstractCommandImpl, BaseCommand, BaseCommandCreate, SuccessData
9
+ from ...errors.error_occurrence import ErrorOccurrence
10
+
11
+ if TYPE_CHECKING:
12
+ from opentrons.protocol_engine.state.state import StateView
13
+ from opentrons.protocol_engine.execution import EquipmentHandler
14
+
15
+
16
+ SetTargetTemperatureCommandType = Literal["heaterShaker/setTargetTemperature"]
17
+
18
+
19
+ class SetTargetTemperatureParams(BaseModel):
20
+ """Input parameters to set a Heater-Shaker's target temperature."""
21
+
22
+ moduleId: str = Field(..., description="Unique ID of the Heater-Shaker Module.")
23
+ celsius: float = Field(..., description="Target temperature in °C.")
24
+
25
+
26
+ class SetTargetTemperatureResult(BaseModel):
27
+ """Result data from setting a Heater-Shaker's target temperature."""
28
+
29
+
30
+ class SetTargetTemperatureImpl(
31
+ AbstractCommandImpl[
32
+ SetTargetTemperatureParams, SuccessData[SetTargetTemperatureResult]
33
+ ]
34
+ ):
35
+ """Execution implementation of a Heater-Shaker's set temperature command."""
36
+
37
+ def __init__(
38
+ self,
39
+ state_view: StateView,
40
+ equipment: EquipmentHandler,
41
+ **unused_dependencies: object,
42
+ ) -> None:
43
+ self._state_view = state_view
44
+ self._equipment = equipment
45
+
46
+ async def execute(
47
+ self,
48
+ params: SetTargetTemperatureParams,
49
+ ) -> SuccessData[SetTargetTemperatureResult]:
50
+ """Set a Heater-Shaker's target temperature."""
51
+ # Allow propagation of ModuleNotLoadedError and WrongModuleTypeError.
52
+ hs_module_substate = self._state_view.modules.get_heater_shaker_module_substate(
53
+ module_id=params.moduleId
54
+ )
55
+
56
+ # Verify temperature from hs module view
57
+ validated_temp = hs_module_substate.validate_target_temperature(params.celsius)
58
+
59
+ # Allow propagation of ModuleNotAttachedError.
60
+ hs_hardware_module = self._equipment.get_module_hardware_api(
61
+ hs_module_substate.module_id
62
+ )
63
+
64
+ if hs_hardware_module is not None:
65
+ await hs_hardware_module.start_set_temperature(validated_temp)
66
+
67
+ return SuccessData(
68
+ public=SetTargetTemperatureResult(),
69
+ )
70
+
71
+
72
+ class SetTargetTemperature(
73
+ BaseCommand[SetTargetTemperatureParams, SetTargetTemperatureResult, ErrorOccurrence]
74
+ ):
75
+ """A command to set a Heater-Shaker's target temperature."""
76
+
77
+ commandType: SetTargetTemperatureCommandType = "heaterShaker/setTargetTemperature"
78
+ params: SetTargetTemperatureParams
79
+ result: Optional[SetTargetTemperatureResult] = None
80
+
81
+ _ImplementationCls: Type[SetTargetTemperatureImpl] = SetTargetTemperatureImpl
82
+
83
+
84
+ class SetTargetTemperatureCreate(BaseCommandCreate[SetTargetTemperatureParams]):
85
+ """A request to create a Heater-Shaker's set temperature command."""
86
+
87
+ commandType: SetTargetTemperatureCommandType = "heaterShaker/setTargetTemperature"
88
+ params: SetTargetTemperatureParams
89
+
90
+ _CommandCls: Type[SetTargetTemperature] = SetTargetTemperature