opentrons 8.2.0__tar.gz → 8.2.0a1__tar.gz

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 (526) hide show
  1. {opentrons-8.2.0 → opentrons-8.2.0a1}/PKG-INFO +4 -4
  2. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/drivers/absorbance_reader/async_byonoy.py +4 -5
  3. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/hardware_control/backends/ot3utils.py +0 -1
  4. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/hardware_control/modules/absorbance_reader.py +0 -2
  5. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/hardware_control/ot3api.py +5 -5
  6. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/hardware_control/protocols/position_estimator.py +1 -3
  7. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/hardware_control/types.py +0 -2
  8. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_api/module_contexts.py +26 -56
  9. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/commands/absorbance_reader/initialize.py +7 -19
  10. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/commands/absorbance_reader/read.py +0 -4
  11. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/commands/aspirate_in_place.py +3 -3
  12. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/commands/command.py +1 -3
  13. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/commands/dispense_in_place.py +1 -1
  14. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/commands/drop_tip.py +1 -2
  15. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/commands/drop_tip_in_place.py +2 -7
  16. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/commands/pick_up_tip.py +1 -1
  17. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/commands/pipetting_common.py +1 -8
  18. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/commands/unsafe/unsafe_place_labware.py +3 -8
  19. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/commands/unsafe/unsafe_ungrip_labware.py +1 -3
  20. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/commands/unsafe/update_position_estimators.py +1 -5
  21. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/errors/__init__.py +0 -2
  22. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/errors/error_occurrence.py +3 -8
  23. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/errors/exceptions.py +0 -13
  24. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/state/modules.py +1 -4
  25. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_runner/run_orchestrator.py +0 -15
  26. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocols/parameters/csv_parameter_interface.py +1 -3
  27. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons.egg-info/PKG-INFO +4 -4
  28. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons.egg-info/requires.txt +3 -3
  29. {opentrons-8.2.0 → opentrons-8.2.0a1}/MANIFEST.in +0 -0
  30. {opentrons-8.2.0 → opentrons-8.2.0a1}/README.rst +0 -0
  31. {opentrons-8.2.0 → opentrons-8.2.0a1}/setup.cfg +0 -0
  32. {opentrons-8.2.0 → opentrons-8.2.0a1}/setup.py +0 -0
  33. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/__init__.py +0 -0
  34. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/_version.py +0 -0
  35. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/calibration_storage/__init__.py +0 -0
  36. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/calibration_storage/deck_configuration.py +0 -0
  37. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/calibration_storage/encoder_decoder.py +0 -0
  38. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/calibration_storage/file_operators.py +0 -0
  39. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/calibration_storage/helpers.py +0 -0
  40. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/calibration_storage/ot2/__init__.py +0 -0
  41. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/calibration_storage/ot2/deck_attitude.py +0 -0
  42. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/calibration_storage/ot2/mark_bad_calibration.py +0 -0
  43. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/calibration_storage/ot2/models/__init__.py +0 -0
  44. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/calibration_storage/ot2/models/defaults.py +0 -0
  45. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/calibration_storage/ot2/models/v1.py +0 -0
  46. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/calibration_storage/ot2/pipette_offset.py +0 -0
  47. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/calibration_storage/ot2/tip_length.py +0 -0
  48. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/calibration_storage/ot3/__init__.py +0 -0
  49. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/calibration_storage/ot3/deck_attitude.py +0 -0
  50. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/calibration_storage/ot3/gripper_offset.py +0 -0
  51. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/calibration_storage/ot3/models/__init__.py +0 -0
  52. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/calibration_storage/ot3/models/defaults.py +0 -0
  53. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/calibration_storage/ot3/models/v1.py +0 -0
  54. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/calibration_storage/ot3/module_offset.py +0 -0
  55. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/calibration_storage/ot3/pipette_offset.py +0 -0
  56. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/calibration_storage/types.py +0 -0
  57. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/cli/__init__.py +0 -0
  58. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/cli/__main__.py +0 -0
  59. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/cli/analyze.py +0 -0
  60. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/config/__init__.py +0 -0
  61. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/config/advanced_settings.py +0 -0
  62. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/config/defaults_ot2.py +0 -0
  63. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/config/defaults_ot3.py +0 -0
  64. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/config/feature_flags.py +0 -0
  65. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/config/gripper_config.py +0 -0
  66. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/config/reset.py +0 -0
  67. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/config/robot_configs.py +0 -0
  68. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/config/types.py +0 -0
  69. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/drivers/__init__.py +0 -0
  70. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/drivers/absorbance_reader/__init__.py +0 -0
  71. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/drivers/absorbance_reader/abstract.py +0 -0
  72. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/drivers/absorbance_reader/driver.py +0 -0
  73. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/drivers/absorbance_reader/hid_protocol.py +0 -0
  74. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/drivers/absorbance_reader/simulator.py +0 -0
  75. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/drivers/asyncio/__init__.py +0 -0
  76. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/drivers/asyncio/communication/__init__.py +0 -0
  77. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/drivers/asyncio/communication/async_serial.py +0 -0
  78. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/drivers/asyncio/communication/errors.py +0 -0
  79. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/drivers/asyncio/communication/serial_connection.py +0 -0
  80. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/drivers/command_builder.py +0 -0
  81. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/drivers/heater_shaker/__init__.py +0 -0
  82. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/drivers/heater_shaker/abstract.py +0 -0
  83. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/drivers/heater_shaker/driver.py +0 -0
  84. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/drivers/heater_shaker/simulator.py +0 -0
  85. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/drivers/mag_deck/__init__.py +0 -0
  86. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/drivers/mag_deck/abstract.py +0 -0
  87. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/drivers/mag_deck/driver.py +0 -0
  88. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/drivers/mag_deck/simulator.py +0 -0
  89. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/drivers/rpi_drivers/__init__.py +0 -0
  90. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/drivers/rpi_drivers/dev_types.py +0 -0
  91. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/drivers/rpi_drivers/gpio.py +0 -0
  92. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/drivers/rpi_drivers/gpio_simulator.py +0 -0
  93. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/drivers/rpi_drivers/interfaces.py +0 -0
  94. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/drivers/rpi_drivers/types.py +0 -0
  95. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/drivers/rpi_drivers/usb.py +0 -0
  96. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/drivers/rpi_drivers/usb_simulator.py +0 -0
  97. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/drivers/serial_communication.py +0 -0
  98. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/drivers/smoothie_drivers/__init__.py +0 -0
  99. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/drivers/smoothie_drivers/connection.py +0 -0
  100. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/drivers/smoothie_drivers/constants.py +0 -0
  101. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/drivers/smoothie_drivers/driver_3_0.py +0 -0
  102. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/drivers/smoothie_drivers/errors.py +0 -0
  103. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/drivers/smoothie_drivers/parse_utils.py +0 -0
  104. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/drivers/smoothie_drivers/simulator.py +0 -0
  105. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/drivers/smoothie_drivers/types.py +0 -0
  106. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/drivers/temp_deck/__init__.py +0 -0
  107. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/drivers/temp_deck/abstract.py +0 -0
  108. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/drivers/temp_deck/driver.py +0 -0
  109. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/drivers/temp_deck/simulator.py +0 -0
  110. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/drivers/thermocycler/__init__.py +0 -0
  111. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/drivers/thermocycler/abstract.py +0 -0
  112. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/drivers/thermocycler/driver.py +0 -0
  113. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/drivers/thermocycler/simulator.py +0 -0
  114. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/drivers/types.py +0 -0
  115. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/drivers/utils.py +0 -0
  116. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/execute.py +0 -0
  117. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/hardware_control/__init__.py +0 -0
  118. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/hardware_control/__main__.py +0 -0
  119. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/hardware_control/adapters.py +0 -0
  120. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/hardware_control/api.py +0 -0
  121. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/hardware_control/backends/__init__.py +0 -0
  122. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/hardware_control/backends/controller.py +0 -0
  123. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/hardware_control/backends/errors.py +0 -0
  124. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/hardware_control/backends/estop_state.py +0 -0
  125. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/hardware_control/backends/flex_protocol.py +0 -0
  126. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/hardware_control/backends/ot3controller.py +0 -0
  127. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/hardware_control/backends/ot3simulator.py +0 -0
  128. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/hardware_control/backends/simulator.py +0 -0
  129. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/hardware_control/backends/status_bar_state.py +0 -0
  130. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/hardware_control/backends/subsystem_manager.py +0 -0
  131. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/hardware_control/backends/tip_presence_manager.py +0 -0
  132. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/hardware_control/backends/types.py +0 -0
  133. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/hardware_control/constants.py +0 -0
  134. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/hardware_control/dev_types.py +0 -0
  135. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/hardware_control/emulation/__init__.py +0 -0
  136. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/hardware_control/emulation/abstract_emulator.py +0 -0
  137. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/hardware_control/emulation/app.py +0 -0
  138. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/hardware_control/emulation/connection_handler.py +0 -0
  139. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/hardware_control/emulation/heater_shaker.py +0 -0
  140. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/hardware_control/emulation/magdeck.py +0 -0
  141. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/hardware_control/emulation/module_server/__init__.py +0 -0
  142. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/hardware_control/emulation/module_server/client.py +0 -0
  143. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/hardware_control/emulation/module_server/helpers.py +0 -0
  144. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/hardware_control/emulation/module_server/models.py +0 -0
  145. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/hardware_control/emulation/module_server/server.py +0 -0
  146. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/hardware_control/emulation/parser.py +0 -0
  147. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/hardware_control/emulation/proxy.py +0 -0
  148. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/hardware_control/emulation/run_emulator.py +0 -0
  149. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/hardware_control/emulation/scripts/__init__.py +0 -0
  150. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/hardware_control/emulation/scripts/run_app.py +0 -0
  151. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/hardware_control/emulation/scripts/run_module_emulator.py +0 -0
  152. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/hardware_control/emulation/scripts/run_smoothie.py +0 -0
  153. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/hardware_control/emulation/settings.py +0 -0
  154. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/hardware_control/emulation/simulations.py +0 -0
  155. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/hardware_control/emulation/smoothie.py +0 -0
  156. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/hardware_control/emulation/tempdeck.py +0 -0
  157. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/hardware_control/emulation/thermocycler.py +0 -0
  158. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/hardware_control/emulation/types.py +0 -0
  159. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/hardware_control/emulation/util.py +0 -0
  160. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/hardware_control/errors.py +0 -0
  161. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/hardware_control/execution_manager.py +0 -0
  162. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/hardware_control/instruments/__init__.py +0 -0
  163. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/hardware_control/instruments/instrument_abc.py +0 -0
  164. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/hardware_control/instruments/ot2/__init__.py +0 -0
  165. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/hardware_control/instruments/ot2/instrument_calibration.py +0 -0
  166. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/hardware_control/instruments/ot2/pipette.py +0 -0
  167. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/hardware_control/instruments/ot2/pipette_handler.py +0 -0
  168. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/hardware_control/instruments/ot3/__init__.py +0 -0
  169. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/hardware_control/instruments/ot3/gripper.py +0 -0
  170. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/hardware_control/instruments/ot3/gripper_handler.py +0 -0
  171. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/hardware_control/instruments/ot3/instrument_calibration.py +0 -0
  172. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/hardware_control/instruments/ot3/pipette.py +0 -0
  173. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/hardware_control/instruments/ot3/pipette_handler.py +0 -0
  174. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/hardware_control/module_control.py +0 -0
  175. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/hardware_control/modules/__init__.py +0 -0
  176. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/hardware_control/modules/errors.py +0 -0
  177. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/hardware_control/modules/heater_shaker.py +0 -0
  178. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/hardware_control/modules/lid_temp_status.py +0 -0
  179. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/hardware_control/modules/magdeck.py +0 -0
  180. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/hardware_control/modules/mod_abc.py +0 -0
  181. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/hardware_control/modules/module_calibration.py +0 -0
  182. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/hardware_control/modules/plate_temp_status.py +0 -0
  183. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/hardware_control/modules/tempdeck.py +0 -0
  184. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/hardware_control/modules/thermocycler.py +0 -0
  185. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/hardware_control/modules/types.py +0 -0
  186. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/hardware_control/modules/update.py +0 -0
  187. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/hardware_control/modules/utils.py +0 -0
  188. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/hardware_control/motion_utilities.py +0 -0
  189. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/hardware_control/nozzle_manager.py +0 -0
  190. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/hardware_control/ot3_calibration.py +0 -0
  191. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/hardware_control/pause_manager.py +0 -0
  192. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/hardware_control/poller.py +0 -0
  193. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/hardware_control/protocols/__init__.py +0 -0
  194. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/hardware_control/protocols/asyncio_configurable.py +0 -0
  195. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/hardware_control/protocols/calibratable.py +0 -0
  196. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/hardware_control/protocols/chassis_accessory_manager.py +0 -0
  197. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/hardware_control/protocols/configurable.py +0 -0
  198. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/hardware_control/protocols/event_sourcer.py +0 -0
  199. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/hardware_control/protocols/execution_controllable.py +0 -0
  200. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/hardware_control/protocols/flex_calibratable.py +0 -0
  201. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/hardware_control/protocols/flex_instrument_configurer.py +0 -0
  202. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/hardware_control/protocols/gripper_controller.py +0 -0
  203. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/hardware_control/protocols/hardware_manager.py +0 -0
  204. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/hardware_control/protocols/identifiable.py +0 -0
  205. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/hardware_control/protocols/instrument_configurer.py +0 -0
  206. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/hardware_control/protocols/liquid_handler.py +0 -0
  207. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/hardware_control/protocols/module_provider.py +0 -0
  208. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/hardware_control/protocols/motion_controller.py +0 -0
  209. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/hardware_control/protocols/simulatable.py +0 -0
  210. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/hardware_control/protocols/stoppable.py +0 -0
  211. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/hardware_control/protocols/types.py +0 -0
  212. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/hardware_control/robot_calibration.py +0 -0
  213. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/hardware_control/scripts/__init__.py +0 -0
  214. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/hardware_control/scripts/gripper_control.py +0 -0
  215. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/hardware_control/scripts/repl.py +0 -0
  216. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/hardware_control/scripts/tc_control.py +0 -0
  217. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/hardware_control/simulator_setup.py +0 -0
  218. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/hardware_control/thread_manager.py +0 -0
  219. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/hardware_control/threaded_async_lock.py +0 -0
  220. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/hardware_control/util.py +0 -0
  221. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/legacy_broker.py +0 -0
  222. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/legacy_commands/__init__.py +0 -0
  223. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/legacy_commands/commands.py +0 -0
  224. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/legacy_commands/helpers.py +0 -0
  225. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/legacy_commands/module_commands.py +0 -0
  226. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/legacy_commands/protocol_commands.py +0 -0
  227. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/legacy_commands/publisher.py +0 -0
  228. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/legacy_commands/types.py +0 -0
  229. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/motion_planning/__init__.py +0 -0
  230. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/motion_planning/adjacent_slots_getters.py +0 -0
  231. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/motion_planning/deck_conflict.py +0 -0
  232. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/motion_planning/errors.py +0 -0
  233. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/motion_planning/types.py +0 -0
  234. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/motion_planning/waypoints.py +0 -0
  235. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/ordered_set.py +0 -0
  236. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_api/__init__.py +0 -0
  237. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_api/_liquid.py +0 -0
  238. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_api/_nozzle_layout.py +0 -0
  239. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_api/_parameter_context.py +0 -0
  240. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_api/_parameters.py +0 -0
  241. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_api/_types.py +0 -0
  242. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_api/config.py +0 -0
  243. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_api/core/__init__.py +0 -0
  244. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_api/core/common.py +0 -0
  245. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_api/core/core_map.py +0 -0
  246. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_api/core/engine/__init__.py +0 -0
  247. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_api/core/engine/deck_conflict.py +0 -0
  248. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_api/core/engine/exceptions.py +0 -0
  249. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_api/core/engine/instrument.py +0 -0
  250. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_api/core/engine/labware.py +0 -0
  251. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_api/core/engine/load_labware_params.py +0 -0
  252. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_api/core/engine/module_core.py +0 -0
  253. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_api/core/engine/overlap_versions.py +0 -0
  254. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_api/core/engine/pipette_movement_conflict.py +0 -0
  255. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_api/core/engine/point_calculations.py +0 -0
  256. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_api/core/engine/protocol.py +0 -0
  257. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_api/core/engine/stringify.py +0 -0
  258. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_api/core/engine/well.py +0 -0
  259. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_api/core/instrument.py +0 -0
  260. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_api/core/labware.py +0 -0
  261. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_api/core/legacy/__init__.py +0 -0
  262. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_api/core/legacy/deck.py +0 -0
  263. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_api/core/legacy/labware_offset_provider.py +0 -0
  264. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_api/core/legacy/legacy_instrument_core.py +0 -0
  265. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_api/core/legacy/legacy_labware_core.py +0 -0
  266. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_api/core/legacy/legacy_module_core.py +0 -0
  267. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_api/core/legacy/legacy_protocol_core.py +0 -0
  268. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_api/core/legacy/legacy_well_core.py +0 -0
  269. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_api/core/legacy/load_info.py +0 -0
  270. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_api/core/legacy/module_geometry.py +0 -0
  271. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_api/core/legacy/well_geometry.py +0 -0
  272. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_api/core/legacy_simulator/__init__.py +0 -0
  273. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_api/core/legacy_simulator/legacy_instrument_core.py +0 -0
  274. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_api/core/legacy_simulator/legacy_protocol_core.py +0 -0
  275. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_api/core/module.py +0 -0
  276. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_api/core/protocol.py +0 -0
  277. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_api/core/well.py +0 -0
  278. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_api/core/well_grid.py +0 -0
  279. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_api/create_protocol_context.py +0 -0
  280. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_api/deck.py +0 -0
  281. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_api/disposal_locations.py +0 -0
  282. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_api/instrument_context.py +0 -0
  283. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_api/labware.py +0 -0
  284. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_api/module_validation_and_errors.py +0 -0
  285. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_api/protocol_context.py +0 -0
  286. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_api/robot_context.py +0 -0
  287. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_api/validation.py +0 -0
  288. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/__init__.py +0 -0
  289. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/actions/__init__.py +0 -0
  290. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/actions/action_dispatcher.py +0 -0
  291. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/actions/action_handler.py +0 -0
  292. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/actions/actions.py +0 -0
  293. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/actions/get_state_update.py +0 -0
  294. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/clients/__init__.py +0 -0
  295. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/clients/sync_client.py +0 -0
  296. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/clients/transports.py +0 -0
  297. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/commands/__init__.py +0 -0
  298. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/commands/absorbance_reader/__init__.py +0 -0
  299. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/commands/absorbance_reader/close_lid.py +0 -0
  300. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/commands/absorbance_reader/open_lid.py +0 -0
  301. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/commands/aspirate.py +0 -0
  302. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/commands/blow_out.py +0 -0
  303. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/commands/blow_out_in_place.py +0 -0
  304. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/commands/calibration/__init__.py +0 -0
  305. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/commands/calibration/calibrate_gripper.py +0 -0
  306. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/commands/calibration/calibrate_module.py +0 -0
  307. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/commands/calibration/calibrate_pipette.py +0 -0
  308. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/commands/calibration/move_to_maintenance_position.py +0 -0
  309. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/commands/command_unions.py +0 -0
  310. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/commands/comment.py +0 -0
  311. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/commands/configure_for_volume.py +0 -0
  312. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/commands/configure_nozzle_layout.py +0 -0
  313. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/commands/custom.py +0 -0
  314. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/commands/dispense.py +0 -0
  315. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/commands/generate_command_schema.py +0 -0
  316. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/commands/get_tip_presence.py +0 -0
  317. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/commands/hash_command_params.py +0 -0
  318. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/commands/heater_shaker/__init__.py +0 -0
  319. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/commands/heater_shaker/close_labware_latch.py +0 -0
  320. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/commands/heater_shaker/deactivate_heater.py +0 -0
  321. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/commands/heater_shaker/deactivate_shaker.py +0 -0
  322. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/commands/heater_shaker/open_labware_latch.py +0 -0
  323. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/commands/heater_shaker/set_and_wait_for_shake_speed.py +0 -0
  324. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/commands/heater_shaker/set_target_temperature.py +0 -0
  325. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/commands/heater_shaker/wait_for_temperature.py +0 -0
  326. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/commands/home.py +0 -0
  327. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/commands/liquid_probe.py +0 -0
  328. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/commands/load_labware.py +0 -0
  329. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/commands/load_liquid.py +0 -0
  330. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/commands/load_module.py +0 -0
  331. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/commands/load_pipette.py +0 -0
  332. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/commands/magnetic_module/__init__.py +0 -0
  333. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/commands/magnetic_module/disengage.py +0 -0
  334. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/commands/magnetic_module/engage.py +0 -0
  335. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/commands/move_labware.py +0 -0
  336. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/commands/move_relative.py +0 -0
  337. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/commands/move_to_addressable_area.py +0 -0
  338. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/commands/move_to_addressable_area_for_drop_tip.py +0 -0
  339. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/commands/move_to_coordinates.py +0 -0
  340. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/commands/move_to_well.py +0 -0
  341. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/commands/prepare_to_aspirate.py +0 -0
  342. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/commands/reload_labware.py +0 -0
  343. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/commands/retract_axis.py +0 -0
  344. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/commands/robot/__init__.py +0 -0
  345. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/commands/save_position.py +0 -0
  346. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/commands/set_rail_lights.py +0 -0
  347. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/commands/set_status_bar.py +0 -0
  348. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/commands/temperature_module/__init__.py +0 -0
  349. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/commands/temperature_module/deactivate.py +0 -0
  350. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/commands/temperature_module/set_target_temperature.py +0 -0
  351. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/commands/temperature_module/wait_for_temperature.py +0 -0
  352. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/commands/thermocycler/__init__.py +0 -0
  353. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/commands/thermocycler/close_lid.py +0 -0
  354. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/commands/thermocycler/deactivate_block.py +0 -0
  355. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/commands/thermocycler/deactivate_lid.py +0 -0
  356. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/commands/thermocycler/open_lid.py +0 -0
  357. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/commands/thermocycler/run_extended_profile.py +0 -0
  358. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/commands/thermocycler/run_profile.py +0 -0
  359. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/commands/thermocycler/set_target_block_temperature.py +0 -0
  360. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/commands/thermocycler/set_target_lid_temperature.py +0 -0
  361. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/commands/thermocycler/wait_for_block_temperature.py +0 -0
  362. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/commands/thermocycler/wait_for_lid_temperature.py +0 -0
  363. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/commands/touch_tip.py +0 -0
  364. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/commands/unsafe/__init__.py +0 -0
  365. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/commands/unsafe/unsafe_blow_out_in_place.py +0 -0
  366. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/commands/unsafe/unsafe_drop_tip_in_place.py +0 -0
  367. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/commands/unsafe/unsafe_engage_axes.py +0 -0
  368. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/commands/verify_tip_presence.py +0 -0
  369. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/commands/wait_for_duration.py +0 -0
  370. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/commands/wait_for_resume.py +0 -0
  371. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/create_protocol_engine.py +0 -0
  372. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/engine_support.py +0 -0
  373. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/error_recovery_policy.py +0 -0
  374. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/execution/__init__.py +0 -0
  375. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/execution/command_executor.py +0 -0
  376. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/execution/create_queue_worker.py +0 -0
  377. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/execution/door_watcher.py +0 -0
  378. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/execution/equipment.py +0 -0
  379. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/execution/error_recovery_hardware_state_synchronizer.py +0 -0
  380. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/execution/gantry_mover.py +0 -0
  381. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/execution/hardware_stopper.py +0 -0
  382. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/execution/heater_shaker_movement_flagger.py +0 -0
  383. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/execution/labware_movement.py +0 -0
  384. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/execution/movement.py +0 -0
  385. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/execution/pipetting.py +0 -0
  386. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/execution/queue_worker.py +0 -0
  387. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/execution/rail_lights.py +0 -0
  388. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/execution/run_control.py +0 -0
  389. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/execution/status_bar.py +0 -0
  390. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/execution/thermocycler_movement_flagger.py +0 -0
  391. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/execution/thermocycler_plate_lifter.py +0 -0
  392. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/execution/tip_handler.py +0 -0
  393. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/notes/__init__.py +0 -0
  394. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/notes/notes.py +0 -0
  395. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/plugins.py +0 -0
  396. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/protocol_engine.py +0 -0
  397. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/resources/__init__.py +0 -0
  398. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/resources/deck_configuration_provider.py +0 -0
  399. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/resources/deck_data_provider.py +0 -0
  400. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/resources/file_provider.py +0 -0
  401. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/resources/fixture_validation.py +0 -0
  402. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/resources/labware_data_provider.py +0 -0
  403. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/resources/labware_validation.py +0 -0
  404. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/resources/model_utils.py +0 -0
  405. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/resources/module_data_provider.py +0 -0
  406. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/resources/ot3_validation.py +0 -0
  407. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/resources/pipette_data_provider.py +0 -0
  408. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/slot_standardization.py +0 -0
  409. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/state/__init__.py +0 -0
  410. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/state/_abstract_store.py +0 -0
  411. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/state/_move_types.py +0 -0
  412. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/state/addressable_areas.py +0 -0
  413. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/state/command_history.py +0 -0
  414. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/state/commands.py +0 -0
  415. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/state/config.py +0 -0
  416. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/state/files.py +0 -0
  417. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/state/frustum_helpers.py +0 -0
  418. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/state/geometry.py +0 -0
  419. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/state/labware.py +0 -0
  420. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/state/liquids.py +0 -0
  421. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/state/module_substates/__init__.py +0 -0
  422. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/state/module_substates/absorbance_reader_substate.py +0 -0
  423. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/state/module_substates/heater_shaker_module_substate.py +0 -0
  424. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/state/module_substates/magnetic_block_substate.py +0 -0
  425. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/state/module_substates/magnetic_module_substate.py +0 -0
  426. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/state/module_substates/temperature_module_substate.py +0 -0
  427. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/state/module_substates/thermocycler_module_substate.py +0 -0
  428. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/state/motion.py +0 -0
  429. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/state/pipettes.py +0 -0
  430. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/state/state.py +0 -0
  431. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/state/state_summary.py +0 -0
  432. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/state/tips.py +0 -0
  433. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/state/update_types.py +0 -0
  434. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/state/wells.py +0 -0
  435. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/types.py +0 -0
  436. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_reader/__init__.py +0 -0
  437. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_reader/extract_labware_definitions.py +0 -0
  438. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_reader/file_format_validator.py +0 -0
  439. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_reader/file_hasher.py +0 -0
  440. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_reader/file_identifier.py +0 -0
  441. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_reader/file_reader_writer.py +0 -0
  442. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_reader/input_file.py +0 -0
  443. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_reader/protocol_files_invalid_error.py +0 -0
  444. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_reader/protocol_reader.py +0 -0
  445. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_reader/protocol_source.py +0 -0
  446. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_reader/role_analyzer.py +0 -0
  447. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_runner/__init__.py +0 -0
  448. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_runner/create_simulating_orchestrator.py +0 -0
  449. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_runner/json_file_reader.py +0 -0
  450. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_runner/json_translator.py +0 -0
  451. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_runner/legacy_command_mapper.py +0 -0
  452. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_runner/legacy_context_plugin.py +0 -0
  453. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_runner/protocol_runner.py +0 -0
  454. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_runner/python_protocol_wrappers.py +0 -0
  455. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_runner/task_queue.py +0 -0
  456. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocols/__init__.py +0 -0
  457. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocols/advanced_control/__init__.py +0 -0
  458. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocols/advanced_control/mix.py +0 -0
  459. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocols/advanced_control/transfers.py +0 -0
  460. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocols/api_support/__init__.py +0 -0
  461. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocols/api_support/constants.py +0 -0
  462. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocols/api_support/deck_type.py +0 -0
  463. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocols/api_support/definitions.py +0 -0
  464. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocols/api_support/instrument.py +0 -0
  465. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocols/api_support/labware_like.py +0 -0
  466. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocols/api_support/tip_tracker.py +0 -0
  467. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocols/api_support/types.py +0 -0
  468. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocols/api_support/util.py +0 -0
  469. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocols/bundle.py +0 -0
  470. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocols/duration/__init__.py +0 -0
  471. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocols/duration/errors.py +0 -0
  472. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocols/duration/estimator.py +0 -0
  473. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocols/execution/__init__.py +0 -0
  474. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocols/execution/dev_types.py +0 -0
  475. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocols/execution/errors.py +0 -0
  476. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocols/execution/execute.py +0 -0
  477. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocols/execution/execute_json_v3.py +0 -0
  478. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocols/execution/execute_json_v4.py +0 -0
  479. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocols/execution/execute_json_v5.py +0 -0
  480. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocols/execution/execute_python.py +0 -0
  481. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocols/execution/json_dispatchers.py +0 -0
  482. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocols/execution/types.py +0 -0
  483. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocols/geometry/__init__.py +0 -0
  484. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocols/geometry/labware_geometry.py +0 -0
  485. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocols/geometry/planning.py +0 -0
  486. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocols/labware.py +0 -0
  487. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocols/models/__init__.py +0 -0
  488. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocols/models/json_protocol.py +0 -0
  489. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocols/parameters/__init__.py +0 -0
  490. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocols/parameters/csv_parameter_definition.py +0 -0
  491. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocols/parameters/exceptions.py +0 -0
  492. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocols/parameters/parameter_definition.py +0 -0
  493. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocols/parameters/types.py +0 -0
  494. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocols/parameters/validation.py +0 -0
  495. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocols/parse.py +0 -0
  496. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocols/types.py +0 -0
  497. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/py.typed +0 -0
  498. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/resources/scripts/lpc21isp +0 -0
  499. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/resources/smoothie-edge-8414642.hex +0 -0
  500. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/simulate.py +0 -0
  501. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/system/__init__.py +0 -0
  502. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/system/camera.py +0 -0
  503. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/system/log_control.py +0 -0
  504. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/system/nmcli.py +0 -0
  505. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/system/resin.py +0 -0
  506. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/system/smoothie_update.py +0 -0
  507. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/system/wifi.py +0 -0
  508. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/tools/__init__.py +0 -0
  509. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/tools/args_handler.py +0 -0
  510. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/tools/write_pipette_memory.py +0 -0
  511. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/types.py +0 -0
  512. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/util/__init__.py +0 -0
  513. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/util/async_helpers.py +0 -0
  514. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/util/broker.py +0 -0
  515. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/util/change_notifier.py +0 -0
  516. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/util/entrypoint_util.py +0 -0
  517. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/util/get_union_elements.py +0 -0
  518. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/util/helpers.py +0 -0
  519. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/util/linal.py +0 -0
  520. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/util/logging_config.py +0 -0
  521. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/util/performance_helpers.py +0 -0
  522. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons.egg-info/SOURCES.txt +0 -0
  523. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons.egg-info/dependency_links.txt +0 -0
  524. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons.egg-info/entry_points.txt +0 -0
  525. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons.egg-info/not-zip-safe +0 -0
  526. {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: opentrons
3
- Version: 8.2.0
3
+ Version: 8.2.0a1
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.2.0
24
+ Requires-Dist: opentrons-shared-data==8.2.0a1
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
@@ -34,9 +34,9 @@ Requires-Dist: pyusb==1.2.1
34
34
  Requires-Dist: importlib-metadata>=1.0; python_version < "3.8"
35
35
  Requires-Dist: packaging>=21.0
36
36
  Provides-Extra: ot2-hardware
37
- Requires-Dist: opentrons-hardware==8.2.0; extra == "ot2-hardware"
37
+ Requires-Dist: opentrons-hardware==8.2.0a1; extra == "ot2-hardware"
38
38
  Provides-Extra: flex-hardware
39
- Requires-Dist: opentrons-hardware[FLEX]==8.2.0; extra == "flex-hardware"
39
+ Requires-Dist: opentrons-hardware[FLEX]==8.2.0a1; extra == "flex-hardware"
40
40
 
41
41
  .. _Full API Documentation: http://docs.opentrons.com
42
42
 
@@ -23,8 +23,7 @@ from opentrons.hardware_control.modules.errors import AbsorbanceReaderDisconnect
23
23
 
24
24
 
25
25
  SN_PARSER = re.compile(r'ATTRS{serial}=="(?P<serial>.+?)"')
26
- # match semver V0.0.0 (old format) or one integer (latest format)
27
- VERSION_PARSER = re.compile(r"(?P<version>(V\d+\.\d+\.\d+|^\d+$))")
26
+ VERSION_PARSER = re.compile(r"Absorbance (?P<version>V\d+\.\d+\.\d+)")
28
27
  SERIAL_PARSER = re.compile(r"(?P<serial>(OPT|BYO)[A-Z]{3}[0-9]+)")
29
28
 
30
29
 
@@ -157,10 +156,10 @@ class AsyncByonoy:
157
156
  func=partial(self._interface.get_device_information, handle),
158
157
  )
159
158
  self._raise_if_error(err.name, f"Error getting device information: {err}")
160
- serial_match = SERIAL_PARSER.match(device_info.sn)
161
- version_match = VERSION_PARSER.search(device_info.version)
159
+ serial_match = SERIAL_PARSER.fullmatch(device_info.sn)
160
+ version_match = VERSION_PARSER.match(device_info.version)
162
161
  serial = serial_match["serial"].strip() if serial_match else "OPTMAA00000"
163
- version = version_match["version"].lower() if version_match else "v0"
162
+ version = version_match["version"].lower() if version_match else "v0.0.0"
164
163
  info = {
165
164
  "serial": serial,
166
165
  "version": version,
@@ -652,7 +652,6 @@ _gripper_jaw_state_lookup: Dict[FirmwareGripperjawState, GripperJawState] = {
652
652
  FirmwareGripperjawState.force_controlling_home: GripperJawState.HOMED_READY,
653
653
  FirmwareGripperjawState.force_controlling: GripperJawState.GRIPPING,
654
654
  FirmwareGripperjawState.position_controlling: GripperJawState.HOLDING,
655
- FirmwareGripperjawState.stopped: GripperJawState.STOPPED,
656
655
  }
657
656
 
658
657
 
@@ -312,8 +312,6 @@ class AbsorbanceReader(mod_abc.AbstractModule):
312
312
  log.debug(f"Updating {self.name}: {self.port} with {firmware_file_path}")
313
313
  self._updating = True
314
314
  success, res = await self._driver.update_firmware(firmware_file_path)
315
- # it takes time for the plate reader to re-init after an update.
316
- await asyncio.sleep(10)
317
315
  self._device_info = await self._driver.get_device_info()
318
316
  await self._poller.start()
319
317
  self._updating = False
@@ -775,12 +775,12 @@ class OT3API(
775
775
  """
776
776
  Function to update motor estimation for a set of axes
777
777
  """
778
- if axes is None:
779
- axes = [ax for ax in Axis]
780
778
 
781
- axes = [ax for ax in axes if self._backend.axis_is_present(ax)]
782
-
783
- await self._backend.update_motor_estimation(axes)
779
+ if axes:
780
+ checked_axes = [ax for ax in axes if ax in Axis]
781
+ else:
782
+ checked_axes = [ax for ax in Axis]
783
+ await self._backend.update_motor_estimation(checked_axes)
784
784
 
785
785
  # Global actions API
786
786
  def pause(self, pause_type: PauseType) -> None:
@@ -10,7 +10,7 @@ class PositionEstimator(Protocol):
10
10
  """Update the specified axes' position estimators from their encoders.
11
11
 
12
12
  This will allow these axes to make a non-home move even if they do not currently have
13
- a position estimation (unless there is no tracked position from the encoders, as would be
13
+ a position estimation (unless there is no tracked poition from the encoders, as would be
14
14
  true immediately after boot).
15
15
 
16
16
  Axis encoders have less precision than their position estimators. Calling this function will
@@ -19,8 +19,6 @@ class PositionEstimator(Protocol):
19
19
 
20
20
  This function updates only the requested axes. If other axes have bad position estimation,
21
21
  moves that require those axes or attempts to get the position of those axes will still fail.
22
- Axes that are not currently available (like a plunger for a pipette that is not connected)
23
- will be ignored.
24
22
  """
25
23
  ...
26
24
 
@@ -625,8 +625,6 @@ class GripperJawState(enum.Enum):
625
625
  #: the gripper is actively force-control gripping something
626
626
  HOLDING = enum.auto()
627
627
  #: the gripper is in position-control mode
628
- STOPPED = enum.auto()
629
- #: the gripper has been homed before but is stopped now
630
628
 
631
629
 
632
630
  class InstrumentProbeType(enum.Enum):
@@ -581,7 +581,7 @@ class ThermocyclerContext(ModuleContext):
581
581
  individual well of the loaded labware, in µL.
582
582
  If not specified, the default is 25 µL.
583
583
 
584
- .. note::
584
+ .. note:
585
585
 
586
586
  If ``hold_time_minutes`` and ``hold_time_seconds`` are not
587
587
  specified, the Thermocycler will proceed to the next command
@@ -605,7 +605,7 @@ class ThermocyclerContext(ModuleContext):
605
605
  :param temperature: A value between 37 and 110, representing the target
606
606
  temperature in °C.
607
607
 
608
- .. note::
608
+ .. note:
609
609
 
610
610
  The Thermocycler will proceed to the next command immediately after
611
611
  ``temperature`` has been reached.
@@ -635,13 +635,13 @@ class ThermocyclerContext(ModuleContext):
635
635
  individual well of the loaded labware, in µL.
636
636
  If not specified, the default is 25 µL.
637
637
 
638
- .. note::
638
+ .. note:
639
639
 
640
640
  Unlike with :py:meth:`set_block_temperature`, either or both of
641
641
  ``hold_time_minutes`` and ``hold_time_seconds`` must be defined
642
642
  and for each step.
643
643
 
644
- .. note::
644
+ .. note:
645
645
 
646
646
  Before API Version 2.21, Thermocycler profiles run with this command
647
647
  would be listed in the app as having a number of repetitions equal to
@@ -991,7 +991,7 @@ class MagneticBlockContext(ModuleContext):
991
991
 
992
992
 
993
993
  class AbsorbanceReaderContext(ModuleContext):
994
- """An object representing a connected Absorbance Plate Reader Module.
994
+ """An object representing a connected Absorbance Reader Module.
995
995
 
996
996
  It should not be instantiated directly; instead, it should be
997
997
  created through :py:meth:`.ProtocolContext.load_module`.
@@ -1009,21 +1009,17 @@ class AbsorbanceReaderContext(ModuleContext):
1009
1009
 
1010
1010
  @requires_version(2, 21)
1011
1011
  def close_lid(self) -> None:
1012
- """Use the Flex Gripper to close the lid of the Absorbance Plate Reader.
1013
-
1014
- You must call this method before initializing the reader, even if the reader was
1015
- in the closed position at the start of the protocol.
1016
- """
1012
+ """Close the lid of the Absorbance Reader."""
1017
1013
  self._core.close_lid()
1018
1014
 
1019
1015
  @requires_version(2, 21)
1020
1016
  def open_lid(self) -> None:
1021
- """Use the Flex Gripper to open the lid of the Absorbance Plate Reader."""
1017
+ """Open the lid of the Absorbance Reader."""
1022
1018
  self._core.open_lid()
1023
1019
 
1024
1020
  @requires_version(2, 21)
1025
1021
  def is_lid_on(self) -> bool:
1026
- """Return ``True`` if the Absorbance Plate Reader's lid is currently closed."""
1022
+ """Return ``True`` if the Absorbance Reader's lid is currently closed."""
1027
1023
  return self._core.is_lid_on()
1028
1024
 
1029
1025
  @requires_version(2, 21)
@@ -1033,28 +1029,19 @@ class AbsorbanceReaderContext(ModuleContext):
1033
1029
  wavelengths: List[int],
1034
1030
  reference_wavelength: Optional[int] = None,
1035
1031
  ) -> None:
1036
- """Prepare the Absorbance Plate Reader to read a plate.
1037
-
1038
- See :ref:`absorbance-initialization` for examples.
1032
+ """Take a zero reading on the Absorbance Plate Reader Module.
1039
1033
 
1040
1034
  :param mode: Either ``"single"`` or ``"multi"``.
1041
1035
 
1042
- - In single measurement mode, :py:meth:`.AbsorbanceReaderContext.read` uses
1043
- one sample wavelength and an optional reference wavelength.
1044
- - In multiple measurement mode, :py:meth:`.AbsorbanceReaderContext.read` uses
1045
- a list of up to six sample wavelengths.
1046
- :param wavelengths: A list of wavelengths, in nm, to measure.
1047
-
1048
- - In the default hardware configuration, each wavelength must be one of
1049
- ``450`` (blue), ``562`` (green), ``600`` (orange), or ``650`` (red). In
1050
- custom hardware configurations, the module may accept other integers
1051
- between 350 and 1000.
1052
- - The list must contain only one item when initializing a single measurement.
1053
- - The list can contain one to six items when initializing a multiple measurement.
1054
- :param reference_wavelength: An optional reference wavelength, in nm. If provided,
1055
- :py:meth:`.AbsorbanceReaderContext.read` will read at the reference
1056
- wavelength and then subtract the reference wavelength values from the
1057
- measurement wavelength values. Can only be used with single measurements.
1036
+ - In single measurement mode, :py:meth:`.AbsorbanceReaderContext.read` uses
1037
+ one sample wavelength and an optional reference wavelength.
1038
+ - In multiple measurement mode, :py:meth:`.AbsorbanceReaderContext.read` uses
1039
+ a list of up to six sample wavelengths.
1040
+ :param wavelengths: A list of wavelengths, in mm, to measure.
1041
+ - Must contain only one item when initializing a single measurement.
1042
+ - Must contain one to six items when initializing a multiple measurement.
1043
+ :param reference_wavelength: An optional reference wavelength, in mm. Cannot be
1044
+ used with multiple measurements.
1058
1045
  """
1059
1046
  self._core.initialize(
1060
1047
  mode, wavelengths, reference_wavelength=reference_wavelength
@@ -1064,33 +1051,16 @@ class AbsorbanceReaderContext(ModuleContext):
1064
1051
  def read(
1065
1052
  self, export_filename: Optional[str] = None
1066
1053
  ) -> Dict[int, Dict[str, float]]:
1067
- """Read a plate on the Absorbance Plate Reader.
1068
-
1069
- This method always returns a dictionary of measurement data. It optionally will
1070
- save a CSV file of the results to the Flex filesystem, which you can access from
1071
- the Recent Protocol Runs screen in the Opentrons App. These files are `only` saved
1072
- if you specify ``export_filename``.
1073
-
1074
- In simulation, the values for each well key in the dictionary are set to zero, and
1075
- no files are written.
1076
-
1077
- .. note::
1078
-
1079
- Avoid divide-by-zero errors when simulating and using the results of this
1080
- method later in the protocol. If you divide by any of the measurement
1081
- values, use :py:meth:`.ProtocolContext.is_simulating` to use alternate dummy
1082
- data or skip the division step.
1054
+ """Initiate read on the Absorbance Reader.
1083
1055
 
1084
- :param export_filename: An optional file basename. If provided, this method
1085
- will write a CSV file for each measurement in the read operation. File
1086
- names will use the value of this parameter, the measurement wavelength
1087
- supplied in :py:meth:`~.AbsorbanceReaderContext.initialize`, and a
1088
- ``.csv`` extension. For example, when reading at wavelengths 450 and 562
1089
- with ``export_filename="my_data"``, there will be two output files:
1090
- ``my_data_450.csv`` and ``my_data_562.csv``.
1056
+ Returns a dictionary of wavelengths to dictionary of values ordered by well name.
1091
1057
 
1092
- See :ref:`absorbance-csv` for information on working with these CSV files.
1058
+ :param export_filename: Optional, if a filename is provided a CSV file will be saved
1059
+ as a result of the read action containing measurement data. The filename will
1060
+ be modified to include the wavelength used during measurement. If multiple
1061
+ measurements are taken, then a file will be generated for each wavelength provided.
1093
1062
 
1094
- :returns: A dictionary of wavelengths to dictionary of values ordered by well name.
1063
+ Example: If `export_filename="my_data"` and wavelengths 450 and 531 are used during
1064
+ measurement, the output files will be "my_data_450.csv" and "my_data_531.csv".
1095
1065
  """
1096
1066
  return self._core.read(filename=export_filename)
@@ -10,7 +10,6 @@ from opentrons.protocol_engine.types import ABSMeasureMode
10
10
 
11
11
  from ..command import AbstractCommandImpl, BaseCommand, BaseCommandCreate, SuccessData
12
12
  from ...errors.error_occurrence import ErrorOccurrence
13
- from ...errors import InvalidWavelengthError
14
13
 
15
14
  if TYPE_CHECKING:
16
15
  from opentrons.protocol_engine.state.state import StateView
@@ -70,41 +69,30 @@ class InitializeImpl(
70
69
  unsupported_wavelengths = sample_wavelengths.difference(
71
70
  supported_wavelengths
72
71
  )
73
- sample_wl_str = ", ".join([str(w) + "nm" for w in sample_wavelengths])
74
- supported_wl_str = ", ".join([str(w) + "nm" for w in supported_wavelengths])
75
- unsupported_wl_str = ", ".join(
76
- [str(w) + "nm" for w in unsupported_wavelengths]
77
- )
78
72
  if unsupported_wavelengths:
79
- raise InvalidWavelengthError(
80
- f"Unsupported wavelengths: {unsupported_wl_str}. "
81
- f" Use one of {supported_wl_str} instead."
82
- )
73
+ raise ValueError(f"Unsupported wavelengths: {unsupported_wavelengths}")
83
74
 
84
75
  if params.measureMode == "single":
85
76
  if sample_wavelengths_len != 1:
86
77
  raise ValueError(
87
- f"Measure mode `single` requires one sample wavelength,"
88
- f" {sample_wl_str} provided instead."
78
+ f"single requires one sample wavelength, provided {sample_wavelengths}"
89
79
  )
90
80
  if (
91
81
  reference_wavelength is not None
92
82
  and reference_wavelength not in supported_wavelengths
93
83
  ):
94
- raise InvalidWavelengthError(
95
- f"Reference wavelength {reference_wavelength}nm is not supported."
96
- f" Use one of {supported_wl_str} instead."
84
+ raise ValueError(
85
+ f"Reference wavelength {reference_wavelength} not supported {supported_wavelengths}"
97
86
  )
98
87
 
99
88
  if params.measureMode == "multi":
100
89
  if sample_wavelengths_len < 1 or sample_wavelengths_len > 6:
101
90
  raise ValueError(
102
- f"Measure mode `multi` requires 1-6 sample wavelengths,"
103
- f" {sample_wl_str} provided instead."
91
+ f"multi requires 1-6 sample wavelengths, provided {sample_wavelengths}"
104
92
  )
105
93
  if reference_wavelength is not None:
106
- raise ValueError(
107
- "Reference wavelength cannot be used with Measure mode `multi`."
94
+ raise RuntimeError(
95
+ "Reference wavelength cannot be used with multi mode."
108
96
  )
109
97
 
110
98
  await abs_reader.set_sample_wavelength(
@@ -80,10 +80,6 @@ class ReadAbsorbanceImpl(
80
80
  raise CannotPerformModuleAction(
81
81
  "Cannot perform Read action on Absorbance Reader without calling `.initialize(...)` first."
82
82
  )
83
- if abs_reader_substate.is_lid_on is False:
84
- raise CannotPerformModuleAction(
85
- "Absorbance Plate Reader can't read a plate with the lid open. Call `close_lid()` first."
86
- )
87
83
 
88
84
  # TODO: we need to return a file ID and increase the file count even when a moduel is not attached
89
85
  if (
@@ -83,11 +83,10 @@ class AspirateInPlaceImplementation(
83
83
  TipNotAttachedError: if no tip is attached to the pipette.
84
84
  PipetteNotReadyToAspirateError: pipette plunger is not ready.
85
85
  """
86
- state_update = StateUpdate()
87
-
88
86
  ready_to_aspirate = self._pipetting.get_is_ready_to_aspirate(
89
87
  pipette_id=params.pipetteId,
90
88
  )
89
+
91
90
  if not ready_to_aspirate:
92
91
  raise PipetteNotReadyToAspirateError(
93
92
  "Pipette cannot aspirate in place because of a previous blow out."
@@ -95,10 +94,11 @@ class AspirateInPlaceImplementation(
95
94
  " so the plunger can be reset in a known safe position."
96
95
  )
97
96
 
97
+ state_update = StateUpdate()
98
98
  current_location = self._state_view.pipettes.get_current_location()
99
- current_position = await self._gantry_mover.get_position(params.pipetteId)
100
99
 
101
100
  try:
101
+ current_position = await self._gantry_mover.get_position(params.pipetteId)
102
102
  volume = await self._pipetting.aspirate_in_place(
103
103
  pipette_id=params.pipetteId,
104
104
  volume=params.volume,
@@ -185,9 +185,7 @@ class BaseCommand(
185
185
  )
186
186
  error: Union[
187
187
  _ErrorT,
188
- # ErrorOccurrence here is a catch-all for undefined errors not captured by
189
- # _ErrorT, or defined errors that don't parse into _ErrorT because, for example,
190
- # they are from an older software version that was missing some fields.
188
+ # ErrorOccurrence here is for undefined errors not captured by _ErrorT.
191
189
  ErrorOccurrence,
192
190
  None,
193
191
  ] = Field(
@@ -76,8 +76,8 @@ class DispenseInPlaceImplementation(
76
76
  """Dispense without moving the pipette."""
77
77
  state_update = StateUpdate()
78
78
  current_location = self._state_view.pipettes.get_current_location()
79
- current_position = await self._gantry_mover.get_position(params.pipetteId)
80
79
  try:
80
+ current_position = await self._gantry_mover.get_position(params.pipetteId)
81
81
  volume = await self._pipetting.dispense_in_place(
82
82
  pipette_id=params.pipetteId,
83
83
  volume=params.volume,
@@ -145,7 +145,6 @@ class DropTipImplementation(AbstractCommandImpl[DropTipParams, _ExecuteReturn]):
145
145
  error=exception,
146
146
  )
147
147
  ],
148
- errorInfo={"retryLocation": position},
149
148
  )
150
149
  state_update_if_false_positive = update_types.StateUpdate()
151
150
  state_update_if_false_positive.update_pipette_tip_state(
@@ -166,7 +165,7 @@ class DropTipImplementation(AbstractCommandImpl[DropTipParams, _ExecuteReturn]):
166
165
  )
167
166
 
168
167
 
169
- class DropTip(BaseCommand[DropTipParams, DropTipResult, TipPhysicallyAttachedError]):
168
+ class DropTip(BaseCommand[DropTipParams, DropTipResult, ErrorOccurrence]):
170
169
  """Drop tip command model."""
171
170
 
172
171
  commandType: DropTipCommandType = "dropTip"
@@ -18,7 +18,7 @@ from ..resources.model_utils import ModelUtils
18
18
  from ..state import update_types
19
19
 
20
20
  if TYPE_CHECKING:
21
- from ..execution import TipHandler, GantryMover
21
+ from ..execution import TipHandler
22
22
 
23
23
 
24
24
  DropTipInPlaceCommandType = Literal["dropTipInPlace"]
@@ -57,19 +57,15 @@ class DropTipInPlaceImplementation(
57
57
  self,
58
58
  tip_handler: TipHandler,
59
59
  model_utils: ModelUtils,
60
- gantry_mover: GantryMover,
61
60
  **kwargs: object,
62
61
  ) -> None:
63
62
  self._tip_handler = tip_handler
64
63
  self._model_utils = model_utils
65
- self._gantry_mover = gantry_mover
66
64
 
67
65
  async def execute(self, params: DropTipInPlaceParams) -> _ExecuteReturn:
68
66
  """Drop a tip using the requested pipette."""
69
67
  state_update = update_types.StateUpdate()
70
68
 
71
- retry_location = await self._gantry_mover.get_position(params.pipetteId)
72
-
73
69
  try:
74
70
  await self._tip_handler.drop_tip(
75
71
  pipette_id=params.pipetteId, home_after=params.homeAfter
@@ -89,7 +85,6 @@ class DropTipInPlaceImplementation(
89
85
  error=exception,
90
86
  )
91
87
  ],
92
- errorInfo={"retryLocation": retry_location},
93
88
  )
94
89
  return DefinedErrorData(
95
90
  public=error,
@@ -104,7 +99,7 @@ class DropTipInPlaceImplementation(
104
99
 
105
100
 
106
101
  class DropTipInPlace(
107
- BaseCommand[DropTipInPlaceParams, DropTipInPlaceResult, TipPhysicallyAttachedError]
102
+ BaseCommand[DropTipInPlaceParams, DropTipInPlaceResult, ErrorOccurrence]
108
103
  ):
109
104
  """Drop tip in place command model."""
110
105
 
@@ -82,7 +82,7 @@ class TipPhysicallyMissingError(ErrorOccurrence):
82
82
  isDefined: bool = True
83
83
  errorType: Literal["tipPhysicallyMissing"] = "tipPhysicallyMissing"
84
84
  errorCode: str = ErrorCodes.TIP_PICKUP_FAILED.value.code
85
- detail: str = "No Tip Detected"
85
+ detail: str = "No tip detected."
86
86
 
87
87
 
88
88
  _ExecuteReturn = Union[
@@ -148,12 +148,7 @@ class DestinationPositionResult(BaseModel):
148
148
 
149
149
 
150
150
  class ErrorLocationInfo(TypedDict):
151
- """Holds a retry location for in-place error recovery.
152
-
153
- This is appropriate to pass to a `moveToCoordinates` command,
154
- assuming the pipette has not been configured with a different nozzle layout
155
- in the meantime.
156
- """
151
+ """Holds a retry location for in-place error recovery."""
157
152
 
158
153
  retryLocation: Tuple[float, float, float]
159
154
 
@@ -206,5 +201,3 @@ class TipPhysicallyAttachedError(ErrorOccurrence):
206
201
 
207
202
  errorCode: str = ErrorCodes.TIP_DROP_FAILED.value.code
208
203
  detail: str = ErrorCodes.TIP_DROP_FAILED.value.detail
209
-
210
- errorInfo: ErrorLocationInfo
@@ -129,14 +129,9 @@ class UnsafePlaceLabwareImplementation(
129
129
  module.id
130
130
  )
131
131
 
132
- # NOTE: When the estop is pressed, the gantry loses position, lets use
133
- # the encoders to sync position.
134
- # Ideally, we'd do a full home, but this command is used when
135
- # the gripper is holding the plate reader, and a full home would
136
- # bang it into the right window.
137
- await ot3api.home(axes=[Axis.Z_L, Axis.Z_R, Axis.Z_G])
138
- await ot3api.engage_axes([Axis.X, Axis.Y])
139
- await ot3api.update_axis_position_estimations([Axis.X, Axis.Y])
132
+ # NOTE: When the estop is pressed, the gantry loses position,
133
+ # so the robot needs to home x, y to sync.
134
+ await ot3api.home(axes=[Axis.Z_L, Axis.Z_R, Axis.Z_G, Axis.X, Axis.Y])
140
135
 
141
136
  # Place the labware down
142
137
  await self._start_movement(ot3api, definition, location, drop_offset)
@@ -1,8 +1,6 @@
1
1
  """Ungrip labware payload, result, and implementaiton."""
2
2
 
3
3
  from __future__ import annotations
4
-
5
- from opentrons.hardware_control.types import Axis
6
4
  from opentrons.protocol_engine.errors.exceptions import GripperNotAttachedError
7
5
  from pydantic import BaseModel
8
6
  from typing import Optional, Type
@@ -48,7 +46,7 @@ class UnsafeUngripLabwareImplementation(
48
46
  ot3_hardware_api = ensure_ot3_hardware(self._hardware_api)
49
47
  if not ot3_hardware_api.has_gripper():
50
48
  raise GripperNotAttachedError("No gripper found to perform ungrip.")
51
- await ot3_hardware_api.home([Axis.G])
49
+ await ot3_hardware_api.ungrip()
52
50
  return SuccessData(
53
51
  public=UnsafeUngripLabwareResult(),
54
52
  )
@@ -23,11 +23,7 @@ class UpdatePositionEstimatorsParams(BaseModel):
23
23
  """Payload required for an UpdatePositionEstimators command."""
24
24
 
25
25
  axes: List[MotorAxis] = Field(
26
- ...,
27
- description=(
28
- "The axes for which to update the position estimators."
29
- " Any axes that are not physically present will be ignored."
30
- ),
26
+ ..., description="The axes for which to update the position estimators."
31
27
  )
32
28
 
33
29
 
@@ -55,7 +55,6 @@ from .exceptions import (
55
55
  InvalidTargetTemperatureError,
56
56
  InvalidBlockVolumeError,
57
57
  InvalidHoldTimeError,
58
- InvalidWavelengthError,
59
58
  CannotPerformModuleAction,
60
59
  PauseNotAllowedError,
61
60
  ResumeFromRecoveryNotAllowedError,
@@ -138,7 +137,6 @@ __all__ = [
138
137
  "InvalidTargetSpeedError",
139
138
  "InvalidBlockVolumeError",
140
139
  "InvalidHoldTimeError",
141
- "InvalidWavelengthError",
142
140
  "CannotPerformModuleAction",
143
141
  "ResumeFromRecoveryNotAllowedError",
144
142
  "PauseNotAllowedError",
@@ -12,6 +12,8 @@ from opentrons_shared_data.errors.exceptions import EnumeratedError
12
12
  log = getLogger(__name__)
13
13
 
14
14
 
15
+ # TODO(mc, 2021-11-12): flesh this model out with structured error data
16
+ # for each error type so client may produce better error messages
15
17
  class ErrorOccurrence(BaseModel):
16
18
  """An occurrence of a specific error during protocol execution."""
17
19
 
@@ -42,15 +44,8 @@ class ErrorOccurrence(BaseModel):
42
44
  id: str = Field(..., description="Unique identifier of this error occurrence.")
43
45
  createdAt: datetime = Field(..., description="When the error occurred.")
44
46
 
45
- # Our Python should probably always set this to False--if we want it to be True,
46
- # we should probably be using a more specific subclass of ErrorOccurrence anyway.
47
- # However, we can't make this Literal[False], because we want this class to be able
48
- # to act as a catch-all for parsing defined errors that might be missing some
49
- # `errorInfo` fields because they were serialized by older software.
50
47
  isDefined: bool = Field(
51
- # default=False for database backwards compatibility, so we can parse objects
52
- # serialized before isDefined existed.
53
- default=False,
48
+ default=False, # default=False for database backwards compatibility.
54
49
  description=dedent(
55
50
  """\
56
51
  Whether this error is *defined.*
@@ -773,19 +773,6 @@ class InvalidBlockVolumeError(ProtocolEngineError):
773
773
  super().__init__(ErrorCodes.GENERAL_ERROR, message, details, wrapping)
774
774
 
775
775
 
776
- class InvalidWavelengthError(ProtocolEngineError):
777
- """Raised when attempting to set an invalid absorbance wavelength."""
778
-
779
- def __init__(
780
- self,
781
- message: Optional[str] = None,
782
- details: Optional[Dict[str, Any]] = None,
783
- wrapping: Optional[Sequence[EnumeratedError]] = None,
784
- ) -> None:
785
- """Build a InvalidWavelengthError."""
786
- super().__init__(ErrorCodes.GENERAL_ERROR, message, details, wrapping)
787
-
788
-
789
776
  class InvalidHoldTimeError(ProtocolEngineError):
790
777
  """An error raised when attempting to set an invalid temperature hold time."""
791
778
 
@@ -1268,10 +1268,7 @@ class ModuleView(HasState[ModuleState]):
1268
1268
  row = chr(ord("A") + i // 12) # Convert index to row (A-H)
1269
1269
  col = (i % 12) + 1 # Convert index to column (1-12)
1270
1270
  well_key = f"{row}{col}"
1271
- truncated_value = float(
1272
- "{:.5}".format(str(value))
1273
- ) # Truncate the returned value to the third decimal place
1274
- well_map[well_key] = truncated_value
1271
+ well_map[well_key] = value
1275
1272
  return well_map
1276
1273
  else:
1277
1274
  raise ValueError(
@@ -418,21 +418,6 @@ class RunOrchestrator:
418
418
  """Get current nozzle maps keyed by pipette id."""
419
419
  return self._protocol_engine.state_view.tips.get_pipette_nozzle_maps()
420
420
 
421
- def get_tip_attached(self) -> Dict[str, bool]:
422
- """Get current tip state keyed by pipette id."""
423
-
424
- def has_tip_attached(pipette_id: str) -> bool:
425
- return (
426
- self._protocol_engine.state_view.pipettes.get_attached_tip(pipette_id)
427
- is not None
428
- )
429
-
430
- pipette_ids = (
431
- pipette.id
432
- for pipette in self._protocol_engine.state_view.pipettes.get_all()
433
- )
434
- return {pipette_id: has_tip_attached(pipette_id) for pipette_id in pipette_ids}
435
-
436
421
  def set_error_recovery_policy(self, policy: ErrorRecoveryPolicy) -> None:
437
422
  """Create error recovery policy for the run."""
438
423
  self._protocol_engine.set_error_recovery_policy(policy)