opentrons 8.0.0a6__tar.gz → 8.0.0a8__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 (514) hide show
  1. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/PKG-INFO +4 -4
  2. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/hardware_control/ot3api.py +10 -1
  3. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/protocol_api/core/engine/deck_conflict.py +21 -1
  4. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/protocol_api/instrument_context.py +1 -0
  5. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/protocol_engine/commands/liquid_probe.py +27 -7
  6. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/protocol_engine/execution/pipetting.py +0 -11
  7. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/protocol_engine/execution/tip_handler.py +26 -0
  8. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/protocol_engine/state/pipettes.py +46 -21
  9. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons.egg-info/PKG-INFO +4 -4
  10. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons.egg-info/requires.txt +3 -3
  11. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/MANIFEST.in +0 -0
  12. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/README.rst +0 -0
  13. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/setup.cfg +0 -0
  14. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/setup.py +0 -0
  15. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/__init__.py +0 -0
  16. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/_version.py +0 -0
  17. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/calibration_storage/__init__.py +0 -0
  18. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/calibration_storage/deck_configuration.py +0 -0
  19. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/calibration_storage/encoder_decoder.py +0 -0
  20. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/calibration_storage/file_operators.py +0 -0
  21. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/calibration_storage/helpers.py +0 -0
  22. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/calibration_storage/ot2/__init__.py +0 -0
  23. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/calibration_storage/ot2/deck_attitude.py +0 -0
  24. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/calibration_storage/ot2/mark_bad_calibration.py +0 -0
  25. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/calibration_storage/ot2/models/__init__.py +0 -0
  26. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/calibration_storage/ot2/models/defaults.py +0 -0
  27. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/calibration_storage/ot2/models/v1.py +0 -0
  28. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/calibration_storage/ot2/pipette_offset.py +0 -0
  29. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/calibration_storage/ot2/tip_length.py +0 -0
  30. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/calibration_storage/ot3/__init__.py +0 -0
  31. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/calibration_storage/ot3/deck_attitude.py +0 -0
  32. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/calibration_storage/ot3/gripper_offset.py +0 -0
  33. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/calibration_storage/ot3/models/__init__.py +0 -0
  34. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/calibration_storage/ot3/models/defaults.py +0 -0
  35. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/calibration_storage/ot3/models/v1.py +0 -0
  36. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/calibration_storage/ot3/module_offset.py +0 -0
  37. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/calibration_storage/ot3/pipette_offset.py +0 -0
  38. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/calibration_storage/types.py +0 -0
  39. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/cli/__init__.py +0 -0
  40. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/cli/__main__.py +0 -0
  41. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/cli/analyze.py +0 -0
  42. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/config/__init__.py +0 -0
  43. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/config/advanced_settings.py +0 -0
  44. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/config/defaults_ot2.py +0 -0
  45. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/config/defaults_ot3.py +0 -0
  46. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/config/feature_flags.py +0 -0
  47. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/config/gripper_config.py +0 -0
  48. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/config/reset.py +0 -0
  49. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/config/robot_configs.py +0 -0
  50. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/config/types.py +0 -0
  51. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/drivers/__init__.py +0 -0
  52. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/drivers/absorbance_reader/__init__.py +0 -0
  53. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/drivers/absorbance_reader/abstract.py +0 -0
  54. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/drivers/absorbance_reader/async_byonoy.py +0 -0
  55. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/drivers/absorbance_reader/driver.py +0 -0
  56. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/drivers/absorbance_reader/hid_protocol.py +0 -0
  57. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/drivers/absorbance_reader/simulator.py +0 -0
  58. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/drivers/asyncio/__init__.py +0 -0
  59. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/drivers/asyncio/communication/__init__.py +0 -0
  60. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/drivers/asyncio/communication/async_serial.py +0 -0
  61. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/drivers/asyncio/communication/errors.py +0 -0
  62. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/drivers/asyncio/communication/serial_connection.py +0 -0
  63. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/drivers/command_builder.py +0 -0
  64. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/drivers/heater_shaker/__init__.py +0 -0
  65. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/drivers/heater_shaker/abstract.py +0 -0
  66. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/drivers/heater_shaker/driver.py +0 -0
  67. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/drivers/heater_shaker/simulator.py +0 -0
  68. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/drivers/mag_deck/__init__.py +0 -0
  69. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/drivers/mag_deck/abstract.py +0 -0
  70. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/drivers/mag_deck/driver.py +0 -0
  71. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/drivers/mag_deck/simulator.py +0 -0
  72. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/drivers/rpi_drivers/__init__.py +0 -0
  73. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/drivers/rpi_drivers/dev_types.py +0 -0
  74. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/drivers/rpi_drivers/gpio.py +0 -0
  75. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/drivers/rpi_drivers/gpio_simulator.py +0 -0
  76. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/drivers/rpi_drivers/interfaces.py +0 -0
  77. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/drivers/rpi_drivers/types.py +0 -0
  78. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/drivers/rpi_drivers/usb.py +0 -0
  79. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/drivers/rpi_drivers/usb_simulator.py +0 -0
  80. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/drivers/serial_communication.py +0 -0
  81. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/drivers/smoothie_drivers/__init__.py +0 -0
  82. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/drivers/smoothie_drivers/connection.py +0 -0
  83. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/drivers/smoothie_drivers/constants.py +0 -0
  84. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/drivers/smoothie_drivers/driver_3_0.py +0 -0
  85. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/drivers/smoothie_drivers/errors.py +0 -0
  86. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/drivers/smoothie_drivers/parse_utils.py +0 -0
  87. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/drivers/smoothie_drivers/simulator.py +0 -0
  88. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/drivers/smoothie_drivers/types.py +0 -0
  89. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/drivers/temp_deck/__init__.py +0 -0
  90. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/drivers/temp_deck/abstract.py +0 -0
  91. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/drivers/temp_deck/driver.py +0 -0
  92. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/drivers/temp_deck/simulator.py +0 -0
  93. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/drivers/thermocycler/__init__.py +0 -0
  94. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/drivers/thermocycler/abstract.py +0 -0
  95. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/drivers/thermocycler/driver.py +0 -0
  96. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/drivers/thermocycler/simulator.py +0 -0
  97. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/drivers/types.py +0 -0
  98. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/drivers/utils.py +0 -0
  99. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/execute.py +0 -0
  100. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/hardware_control/__init__.py +0 -0
  101. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/hardware_control/__main__.py +0 -0
  102. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/hardware_control/adapters.py +0 -0
  103. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/hardware_control/api.py +0 -0
  104. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/hardware_control/backends/__init__.py +0 -0
  105. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/hardware_control/backends/controller.py +0 -0
  106. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/hardware_control/backends/errors.py +0 -0
  107. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/hardware_control/backends/estop_state.py +0 -0
  108. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/hardware_control/backends/flex_protocol.py +0 -0
  109. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/hardware_control/backends/ot3controller.py +0 -0
  110. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/hardware_control/backends/ot3simulator.py +0 -0
  111. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/hardware_control/backends/ot3utils.py +0 -0
  112. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/hardware_control/backends/simulator.py +0 -0
  113. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/hardware_control/backends/status_bar_state.py +0 -0
  114. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/hardware_control/backends/subsystem_manager.py +0 -0
  115. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/hardware_control/backends/tip_presence_manager.py +0 -0
  116. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/hardware_control/backends/types.py +0 -0
  117. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/hardware_control/constants.py +0 -0
  118. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/hardware_control/dev_types.py +0 -0
  119. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/hardware_control/emulation/__init__.py +0 -0
  120. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/hardware_control/emulation/abstract_emulator.py +0 -0
  121. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/hardware_control/emulation/app.py +0 -0
  122. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/hardware_control/emulation/connection_handler.py +0 -0
  123. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/hardware_control/emulation/heater_shaker.py +0 -0
  124. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/hardware_control/emulation/magdeck.py +0 -0
  125. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/hardware_control/emulation/module_server/__init__.py +0 -0
  126. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/hardware_control/emulation/module_server/client.py +0 -0
  127. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/hardware_control/emulation/module_server/helpers.py +0 -0
  128. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/hardware_control/emulation/module_server/models.py +0 -0
  129. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/hardware_control/emulation/module_server/server.py +0 -0
  130. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/hardware_control/emulation/parser.py +0 -0
  131. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/hardware_control/emulation/proxy.py +0 -0
  132. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/hardware_control/emulation/run_emulator.py +0 -0
  133. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/hardware_control/emulation/scripts/__init__.py +0 -0
  134. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/hardware_control/emulation/scripts/run_app.py +0 -0
  135. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/hardware_control/emulation/scripts/run_module_emulator.py +0 -0
  136. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/hardware_control/emulation/scripts/run_smoothie.py +0 -0
  137. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/hardware_control/emulation/settings.py +0 -0
  138. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/hardware_control/emulation/simulations.py +0 -0
  139. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/hardware_control/emulation/smoothie.py +0 -0
  140. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/hardware_control/emulation/tempdeck.py +0 -0
  141. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/hardware_control/emulation/thermocycler.py +0 -0
  142. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/hardware_control/emulation/types.py +0 -0
  143. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/hardware_control/emulation/util.py +0 -0
  144. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/hardware_control/errors.py +0 -0
  145. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/hardware_control/execution_manager.py +0 -0
  146. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/hardware_control/instruments/__init__.py +0 -0
  147. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/hardware_control/instruments/instrument_abc.py +0 -0
  148. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/hardware_control/instruments/ot2/__init__.py +0 -0
  149. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/hardware_control/instruments/ot2/instrument_calibration.py +0 -0
  150. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/hardware_control/instruments/ot2/pipette.py +0 -0
  151. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/hardware_control/instruments/ot2/pipette_handler.py +0 -0
  152. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/hardware_control/instruments/ot3/__init__.py +0 -0
  153. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/hardware_control/instruments/ot3/gripper.py +0 -0
  154. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/hardware_control/instruments/ot3/gripper_handler.py +0 -0
  155. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/hardware_control/instruments/ot3/instrument_calibration.py +0 -0
  156. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/hardware_control/instruments/ot3/pipette.py +0 -0
  157. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/hardware_control/instruments/ot3/pipette_handler.py +0 -0
  158. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/hardware_control/module_control.py +0 -0
  159. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/hardware_control/modules/__init__.py +0 -0
  160. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/hardware_control/modules/absorbance_reader.py +0 -0
  161. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/hardware_control/modules/heater_shaker.py +0 -0
  162. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/hardware_control/modules/lid_temp_status.py +0 -0
  163. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/hardware_control/modules/magdeck.py +0 -0
  164. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/hardware_control/modules/mod_abc.py +0 -0
  165. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/hardware_control/modules/module_calibration.py +0 -0
  166. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/hardware_control/modules/plate_temp_status.py +0 -0
  167. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/hardware_control/modules/tempdeck.py +0 -0
  168. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/hardware_control/modules/thermocycler.py +0 -0
  169. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/hardware_control/modules/types.py +0 -0
  170. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/hardware_control/modules/update.py +0 -0
  171. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/hardware_control/modules/utils.py +0 -0
  172. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/hardware_control/motion_utilities.py +0 -0
  173. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/hardware_control/nozzle_manager.py +0 -0
  174. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/hardware_control/ot3_calibration.py +0 -0
  175. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/hardware_control/pause_manager.py +0 -0
  176. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/hardware_control/poller.py +0 -0
  177. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/hardware_control/protocols/__init__.py +0 -0
  178. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/hardware_control/protocols/asyncio_configurable.py +0 -0
  179. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/hardware_control/protocols/calibratable.py +0 -0
  180. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/hardware_control/protocols/chassis_accessory_manager.py +0 -0
  181. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/hardware_control/protocols/configurable.py +0 -0
  182. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/hardware_control/protocols/event_sourcer.py +0 -0
  183. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/hardware_control/protocols/execution_controllable.py +0 -0
  184. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/hardware_control/protocols/flex_calibratable.py +0 -0
  185. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/hardware_control/protocols/flex_instrument_configurer.py +0 -0
  186. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/hardware_control/protocols/gripper_controller.py +0 -0
  187. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/hardware_control/protocols/hardware_manager.py +0 -0
  188. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/hardware_control/protocols/identifiable.py +0 -0
  189. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/hardware_control/protocols/instrument_configurer.py +0 -0
  190. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/hardware_control/protocols/liquid_handler.py +0 -0
  191. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/hardware_control/protocols/module_provider.py +0 -0
  192. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/hardware_control/protocols/motion_controller.py +0 -0
  193. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/hardware_control/protocols/position_estimator.py +0 -0
  194. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/hardware_control/protocols/simulatable.py +0 -0
  195. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/hardware_control/protocols/stoppable.py +0 -0
  196. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/hardware_control/protocols/types.py +0 -0
  197. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/hardware_control/robot_calibration.py +0 -0
  198. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/hardware_control/scripts/__init__.py +0 -0
  199. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/hardware_control/scripts/gripper_control.py +0 -0
  200. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/hardware_control/scripts/repl.py +0 -0
  201. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/hardware_control/scripts/tc_control.py +0 -0
  202. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/hardware_control/simulator_setup.py +0 -0
  203. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/hardware_control/thread_manager.py +0 -0
  204. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/hardware_control/threaded_async_lock.py +0 -0
  205. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/hardware_control/types.py +0 -0
  206. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/hardware_control/util.py +0 -0
  207. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/legacy_broker.py +0 -0
  208. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/legacy_commands/__init__.py +0 -0
  209. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/legacy_commands/commands.py +0 -0
  210. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/legacy_commands/helpers.py +0 -0
  211. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/legacy_commands/module_commands.py +0 -0
  212. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/legacy_commands/protocol_commands.py +0 -0
  213. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/legacy_commands/publisher.py +0 -0
  214. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/legacy_commands/types.py +0 -0
  215. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/motion_planning/__init__.py +0 -0
  216. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/motion_planning/adjacent_slots_getters.py +0 -0
  217. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/motion_planning/deck_conflict.py +0 -0
  218. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/motion_planning/errors.py +0 -0
  219. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/motion_planning/types.py +0 -0
  220. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/motion_planning/waypoints.py +0 -0
  221. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/ordered_set.py +0 -0
  222. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/protocol_api/__init__.py +0 -0
  223. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/protocol_api/_liquid.py +0 -0
  224. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/protocol_api/_nozzle_layout.py +0 -0
  225. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/protocol_api/_parameter_context.py +0 -0
  226. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/protocol_api/_parameters.py +0 -0
  227. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/protocol_api/_types.py +0 -0
  228. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/protocol_api/config.py +0 -0
  229. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/protocol_api/core/__init__.py +0 -0
  230. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/protocol_api/core/common.py +0 -0
  231. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/protocol_api/core/core_map.py +0 -0
  232. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/protocol_api/core/engine/__init__.py +0 -0
  233. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/protocol_api/core/engine/exceptions.py +0 -0
  234. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/protocol_api/core/engine/instrument.py +0 -0
  235. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/protocol_api/core/engine/labware.py +0 -0
  236. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/protocol_api/core/engine/load_labware_params.py +0 -0
  237. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/protocol_api/core/engine/module_core.py +0 -0
  238. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/protocol_api/core/engine/overlap_versions.py +0 -0
  239. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/protocol_api/core/engine/point_calculations.py +0 -0
  240. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/protocol_api/core/engine/protocol.py +0 -0
  241. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/protocol_api/core/engine/stringify.py +0 -0
  242. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/protocol_api/core/engine/well.py +0 -0
  243. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/protocol_api/core/instrument.py +0 -0
  244. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/protocol_api/core/labware.py +0 -0
  245. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/protocol_api/core/legacy/__init__.py +0 -0
  246. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/protocol_api/core/legacy/deck.py +0 -0
  247. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/protocol_api/core/legacy/labware_offset_provider.py +0 -0
  248. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/protocol_api/core/legacy/legacy_instrument_core.py +0 -0
  249. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/protocol_api/core/legacy/legacy_labware_core.py +0 -0
  250. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/protocol_api/core/legacy/legacy_module_core.py +0 -0
  251. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/protocol_api/core/legacy/legacy_protocol_core.py +0 -0
  252. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/protocol_api/core/legacy/legacy_well_core.py +0 -0
  253. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/protocol_api/core/legacy/load_info.py +0 -0
  254. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/protocol_api/core/legacy/module_geometry.py +0 -0
  255. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/protocol_api/core/legacy/well_geometry.py +0 -0
  256. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/protocol_api/core/legacy_simulator/__init__.py +0 -0
  257. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/protocol_api/core/legacy_simulator/legacy_instrument_core.py +0 -0
  258. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/protocol_api/core/legacy_simulator/legacy_protocol_core.py +0 -0
  259. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/protocol_api/core/module.py +0 -0
  260. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/protocol_api/core/protocol.py +0 -0
  261. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/protocol_api/core/well.py +0 -0
  262. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/protocol_api/core/well_grid.py +0 -0
  263. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/protocol_api/create_protocol_context.py +0 -0
  264. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/protocol_api/deck.py +0 -0
  265. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/protocol_api/disposal_locations.py +0 -0
  266. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/protocol_api/labware.py +0 -0
  267. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/protocol_api/module_contexts.py +0 -0
  268. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/protocol_api/module_validation_and_errors.py +0 -0
  269. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/protocol_api/protocol_context.py +0 -0
  270. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/protocol_api/robot_context.py +0 -0
  271. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/protocol_api/validation.py +0 -0
  272. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/protocol_engine/__init__.py +0 -0
  273. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/protocol_engine/actions/__init__.py +0 -0
  274. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/protocol_engine/actions/action_dispatcher.py +0 -0
  275. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/protocol_engine/actions/action_handler.py +0 -0
  276. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/protocol_engine/actions/actions.py +0 -0
  277. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/protocol_engine/clients/__init__.py +0 -0
  278. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/protocol_engine/clients/sync_client.py +0 -0
  279. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/protocol_engine/clients/transports.py +0 -0
  280. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/protocol_engine/commands/__init__.py +0 -0
  281. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/protocol_engine/commands/absorbance_reader/__init__.py +0 -0
  282. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/protocol_engine/commands/absorbance_reader/initialize.py +0 -0
  283. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/protocol_engine/commands/absorbance_reader/measure.py +0 -0
  284. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/protocol_engine/commands/aspirate.py +0 -0
  285. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/protocol_engine/commands/aspirate_in_place.py +0 -0
  286. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/protocol_engine/commands/blow_out.py +0 -0
  287. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/protocol_engine/commands/blow_out_in_place.py +0 -0
  288. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/protocol_engine/commands/calibration/__init__.py +0 -0
  289. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/protocol_engine/commands/calibration/calibrate_gripper.py +0 -0
  290. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/protocol_engine/commands/calibration/calibrate_module.py +0 -0
  291. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/protocol_engine/commands/calibration/calibrate_pipette.py +0 -0
  292. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/protocol_engine/commands/calibration/move_to_maintenance_position.py +0 -0
  293. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/protocol_engine/commands/command.py +0 -0
  294. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/protocol_engine/commands/command_unions.py +0 -0
  295. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/protocol_engine/commands/comment.py +0 -0
  296. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/protocol_engine/commands/configure_for_volume.py +0 -0
  297. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/protocol_engine/commands/configure_nozzle_layout.py +0 -0
  298. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/protocol_engine/commands/configuring_common.py +0 -0
  299. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/protocol_engine/commands/custom.py +0 -0
  300. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/protocol_engine/commands/dispense.py +0 -0
  301. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/protocol_engine/commands/dispense_in_place.py +0 -0
  302. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/protocol_engine/commands/drop_tip.py +0 -0
  303. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/protocol_engine/commands/drop_tip_in_place.py +0 -0
  304. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/protocol_engine/commands/generate_command_schema.py +0 -0
  305. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/protocol_engine/commands/get_tip_presence.py +0 -0
  306. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/protocol_engine/commands/hash_command_params.py +0 -0
  307. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/protocol_engine/commands/heater_shaker/__init__.py +0 -0
  308. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/protocol_engine/commands/heater_shaker/close_labware_latch.py +0 -0
  309. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/protocol_engine/commands/heater_shaker/deactivate_heater.py +0 -0
  310. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/protocol_engine/commands/heater_shaker/deactivate_shaker.py +0 -0
  311. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/protocol_engine/commands/heater_shaker/open_labware_latch.py +0 -0
  312. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/protocol_engine/commands/heater_shaker/set_and_wait_for_shake_speed.py +0 -0
  313. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/protocol_engine/commands/heater_shaker/set_target_temperature.py +0 -0
  314. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/protocol_engine/commands/heater_shaker/wait_for_temperature.py +0 -0
  315. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/protocol_engine/commands/home.py +0 -0
  316. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/protocol_engine/commands/load_labware.py +0 -0
  317. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/protocol_engine/commands/load_liquid.py +0 -0
  318. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/protocol_engine/commands/load_module.py +0 -0
  319. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/protocol_engine/commands/load_pipette.py +0 -0
  320. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/protocol_engine/commands/magnetic_module/__init__.py +0 -0
  321. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/protocol_engine/commands/magnetic_module/disengage.py +0 -0
  322. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/protocol_engine/commands/magnetic_module/engage.py +0 -0
  323. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/protocol_engine/commands/move_labware.py +0 -0
  324. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/protocol_engine/commands/move_relative.py +0 -0
  325. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/protocol_engine/commands/move_to_addressable_area.py +0 -0
  326. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/protocol_engine/commands/move_to_addressable_area_for_drop_tip.py +0 -0
  327. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/protocol_engine/commands/move_to_coordinates.py +0 -0
  328. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/protocol_engine/commands/move_to_well.py +0 -0
  329. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/protocol_engine/commands/pick_up_tip.py +0 -0
  330. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/protocol_engine/commands/pipetting_common.py +0 -0
  331. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/protocol_engine/commands/prepare_to_aspirate.py +0 -0
  332. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/protocol_engine/commands/reload_labware.py +0 -0
  333. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/protocol_engine/commands/retract_axis.py +0 -0
  334. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/protocol_engine/commands/robot/__init__.py +0 -0
  335. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/protocol_engine/commands/save_position.py +0 -0
  336. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/protocol_engine/commands/set_rail_lights.py +0 -0
  337. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/protocol_engine/commands/set_status_bar.py +0 -0
  338. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/protocol_engine/commands/temperature_module/__init__.py +0 -0
  339. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/protocol_engine/commands/temperature_module/deactivate.py +0 -0
  340. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/protocol_engine/commands/temperature_module/set_target_temperature.py +0 -0
  341. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/protocol_engine/commands/temperature_module/wait_for_temperature.py +0 -0
  342. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/protocol_engine/commands/thermocycler/__init__.py +0 -0
  343. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/protocol_engine/commands/thermocycler/close_lid.py +0 -0
  344. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/protocol_engine/commands/thermocycler/deactivate_block.py +0 -0
  345. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/protocol_engine/commands/thermocycler/deactivate_lid.py +0 -0
  346. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/protocol_engine/commands/thermocycler/open_lid.py +0 -0
  347. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/protocol_engine/commands/thermocycler/run_profile.py +0 -0
  348. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/protocol_engine/commands/thermocycler/set_target_block_temperature.py +0 -0
  349. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/protocol_engine/commands/thermocycler/set_target_lid_temperature.py +0 -0
  350. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/protocol_engine/commands/thermocycler/wait_for_block_temperature.py +0 -0
  351. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/protocol_engine/commands/thermocycler/wait_for_lid_temperature.py +0 -0
  352. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/protocol_engine/commands/touch_tip.py +0 -0
  353. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/protocol_engine/commands/unsafe/__init__.py +0 -0
  354. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/protocol_engine/commands/unsafe/unsafe_blow_out_in_place.py +0 -0
  355. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/protocol_engine/commands/unsafe/unsafe_drop_tip_in_place.py +0 -0
  356. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/protocol_engine/commands/unsafe/unsafe_engage_axes.py +0 -0
  357. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/protocol_engine/commands/unsafe/update_position_estimators.py +0 -0
  358. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/protocol_engine/commands/verify_tip_presence.py +0 -0
  359. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/protocol_engine/commands/wait_for_duration.py +0 -0
  360. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/protocol_engine/commands/wait_for_resume.py +0 -0
  361. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/protocol_engine/create_protocol_engine.py +0 -0
  362. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/protocol_engine/engine_support.py +0 -0
  363. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/protocol_engine/error_recovery_policy.py +0 -0
  364. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/protocol_engine/errors/__init__.py +0 -0
  365. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/protocol_engine/errors/error_occurrence.py +0 -0
  366. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/protocol_engine/errors/exceptions.py +0 -0
  367. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/protocol_engine/execution/__init__.py +0 -0
  368. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/protocol_engine/execution/command_executor.py +0 -0
  369. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/protocol_engine/execution/create_queue_worker.py +0 -0
  370. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/protocol_engine/execution/door_watcher.py +0 -0
  371. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/protocol_engine/execution/equipment.py +0 -0
  372. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/protocol_engine/execution/gantry_mover.py +0 -0
  373. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/protocol_engine/execution/hardware_stopper.py +0 -0
  374. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/protocol_engine/execution/heater_shaker_movement_flagger.py +0 -0
  375. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/protocol_engine/execution/labware_movement.py +0 -0
  376. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/protocol_engine/execution/movement.py +0 -0
  377. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/protocol_engine/execution/queue_worker.py +0 -0
  378. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/protocol_engine/execution/rail_lights.py +0 -0
  379. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/protocol_engine/execution/run_control.py +0 -0
  380. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/protocol_engine/execution/status_bar.py +0 -0
  381. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/protocol_engine/execution/thermocycler_movement_flagger.py +0 -0
  382. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/protocol_engine/execution/thermocycler_plate_lifter.py +0 -0
  383. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/protocol_engine/notes/__init__.py +0 -0
  384. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/protocol_engine/notes/notes.py +0 -0
  385. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/protocol_engine/plugins.py +0 -0
  386. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/protocol_engine/protocol_engine.py +0 -0
  387. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/protocol_engine/resources/__init__.py +0 -0
  388. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/protocol_engine/resources/deck_configuration_provider.py +0 -0
  389. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/protocol_engine/resources/deck_data_provider.py +0 -0
  390. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/protocol_engine/resources/fixture_validation.py +0 -0
  391. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/protocol_engine/resources/labware_data_provider.py +0 -0
  392. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/protocol_engine/resources/labware_validation.py +0 -0
  393. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/protocol_engine/resources/model_utils.py +0 -0
  394. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/protocol_engine/resources/module_data_provider.py +0 -0
  395. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/protocol_engine/resources/ot3_validation.py +0 -0
  396. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/protocol_engine/resources/pipette_data_provider.py +0 -0
  397. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/protocol_engine/slot_standardization.py +0 -0
  398. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/protocol_engine/state/__init__.py +0 -0
  399. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/protocol_engine/state/abstract_store.py +0 -0
  400. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/protocol_engine/state/addressable_areas.py +0 -0
  401. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/protocol_engine/state/command_history.py +0 -0
  402. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/protocol_engine/state/commands.py +0 -0
  403. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/protocol_engine/state/config.py +0 -0
  404. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/protocol_engine/state/geometry.py +0 -0
  405. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/protocol_engine/state/labware.py +0 -0
  406. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/protocol_engine/state/liquids.py +0 -0
  407. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/protocol_engine/state/module_substates/__init__.py +0 -0
  408. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/protocol_engine/state/module_substates/absorbance_reader_substate.py +0 -0
  409. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/protocol_engine/state/module_substates/heater_shaker_module_substate.py +0 -0
  410. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/protocol_engine/state/module_substates/magnetic_block_substate.py +0 -0
  411. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/protocol_engine/state/module_substates/magnetic_module_substate.py +0 -0
  412. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/protocol_engine/state/module_substates/temperature_module_substate.py +0 -0
  413. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/protocol_engine/state/module_substates/thermocycler_module_substate.py +0 -0
  414. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/protocol_engine/state/modules.py +0 -0
  415. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/protocol_engine/state/motion.py +0 -0
  416. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/protocol_engine/state/move_types.py +0 -0
  417. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/protocol_engine/state/state.py +0 -0
  418. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/protocol_engine/state/state_summary.py +0 -0
  419. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/protocol_engine/state/tips.py +0 -0
  420. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/protocol_engine/types.py +0 -0
  421. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/protocol_reader/__init__.py +0 -0
  422. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/protocol_reader/extract_labware_definitions.py +0 -0
  423. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/protocol_reader/file_format_validator.py +0 -0
  424. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/protocol_reader/file_hasher.py +0 -0
  425. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/protocol_reader/file_identifier.py +0 -0
  426. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/protocol_reader/file_reader_writer.py +0 -0
  427. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/protocol_reader/input_file.py +0 -0
  428. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/protocol_reader/protocol_files_invalid_error.py +0 -0
  429. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/protocol_reader/protocol_reader.py +0 -0
  430. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/protocol_reader/protocol_source.py +0 -0
  431. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/protocol_reader/role_analyzer.py +0 -0
  432. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/protocol_runner/__init__.py +0 -0
  433. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/protocol_runner/create_simulating_orchestrator.py +0 -0
  434. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/protocol_runner/json_file_reader.py +0 -0
  435. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/protocol_runner/json_translator.py +0 -0
  436. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/protocol_runner/legacy_command_mapper.py +0 -0
  437. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/protocol_runner/legacy_context_plugin.py +0 -0
  438. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/protocol_runner/protocol_runner.py +0 -0
  439. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/protocol_runner/python_protocol_wrappers.py +0 -0
  440. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/protocol_runner/run_orchestrator.py +0 -0
  441. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/protocol_runner/task_queue.py +0 -0
  442. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/protocol_runner/thread_async_queue.py +0 -0
  443. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/protocols/__init__.py +0 -0
  444. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/protocols/advanced_control/__init__.py +0 -0
  445. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/protocols/advanced_control/mix.py +0 -0
  446. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/protocols/advanced_control/transfers.py +0 -0
  447. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/protocols/api_support/__init__.py +0 -0
  448. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/protocols/api_support/constants.py +0 -0
  449. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/protocols/api_support/deck_type.py +0 -0
  450. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/protocols/api_support/definitions.py +0 -0
  451. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/protocols/api_support/instrument.py +0 -0
  452. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/protocols/api_support/labware_like.py +0 -0
  453. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/protocols/api_support/tip_tracker.py +0 -0
  454. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/protocols/api_support/types.py +0 -0
  455. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/protocols/api_support/util.py +0 -0
  456. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/protocols/bundle.py +0 -0
  457. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/protocols/duration/__init__.py +0 -0
  458. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/protocols/duration/errors.py +0 -0
  459. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/protocols/duration/estimator.py +0 -0
  460. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/protocols/execution/__init__.py +0 -0
  461. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/protocols/execution/dev_types.py +0 -0
  462. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/protocols/execution/errors.py +0 -0
  463. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/protocols/execution/execute.py +0 -0
  464. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/protocols/execution/execute_json_v3.py +0 -0
  465. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/protocols/execution/execute_json_v4.py +0 -0
  466. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/protocols/execution/execute_json_v5.py +0 -0
  467. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/protocols/execution/execute_python.py +0 -0
  468. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/protocols/execution/json_dispatchers.py +0 -0
  469. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/protocols/execution/types.py +0 -0
  470. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/protocols/geometry/__init__.py +0 -0
  471. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/protocols/geometry/labware_geometry.py +0 -0
  472. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/protocols/geometry/planning.py +0 -0
  473. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/protocols/labware.py +0 -0
  474. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/protocols/models/__init__.py +0 -0
  475. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/protocols/models/json_protocol.py +0 -0
  476. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/protocols/parameters/__init__.py +0 -0
  477. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/protocols/parameters/csv_parameter_definition.py +0 -0
  478. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/protocols/parameters/csv_parameter_interface.py +0 -0
  479. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/protocols/parameters/exceptions.py +0 -0
  480. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/protocols/parameters/parameter_definition.py +0 -0
  481. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/protocols/parameters/types.py +0 -0
  482. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/protocols/parameters/validation.py +0 -0
  483. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/protocols/parse.py +0 -0
  484. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/protocols/types.py +0 -0
  485. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/py.typed +0 -0
  486. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/resources/scripts/lpc21isp +0 -0
  487. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/resources/smoothie-edge-8414642.hex +0 -0
  488. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/simulate.py +0 -0
  489. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/system/__init__.py +0 -0
  490. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/system/camera.py +0 -0
  491. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/system/log_control.py +0 -0
  492. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/system/nmcli.py +0 -0
  493. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/system/resin.py +0 -0
  494. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/system/smoothie_update.py +0 -0
  495. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/system/wifi.py +0 -0
  496. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/tools/__init__.py +0 -0
  497. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/tools/args_handler.py +0 -0
  498. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/tools/write_pipette_memory.py +0 -0
  499. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/types.py +0 -0
  500. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/util/__init__.py +0 -0
  501. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/util/async_helpers.py +0 -0
  502. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/util/broker.py +0 -0
  503. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/util/change_notifier.py +0 -0
  504. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/util/entrypoint_util.py +0 -0
  505. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/util/get_union_elements.py +0 -0
  506. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/util/helpers.py +0 -0
  507. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/util/linal.py +0 -0
  508. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/util/logging_config.py +0 -0
  509. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons/util/performance_helpers.py +0 -0
  510. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons.egg-info/SOURCES.txt +0 -0
  511. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons.egg-info/dependency_links.txt +0 -0
  512. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons.egg-info/entry_points.txt +0 -0
  513. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/src/opentrons.egg-info/not-zip-safe +0 -0
  514. {opentrons-8.0.0a6 → opentrons-8.0.0a8}/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.0.0a6
3
+ Version: 8.0.0a8
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.0.0a6
24
+ Requires-Dist: opentrons-shared-data==8.0.0a8
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
@@ -33,9 +33,9 @@ Requires-Dist: click<9,>=8.0.0
33
33
  Requires-Dist: importlib-metadata>=1.0; python_version < "3.8"
34
34
  Requires-Dist: packaging>=21.0
35
35
  Provides-Extra: ot2-hardware
36
- Requires-Dist: opentrons-hardware==8.0.0a6; extra == "ot2-hardware"
36
+ Requires-Dist: opentrons-hardware==8.0.0a8; extra == "ot2-hardware"
37
37
  Provides-Extra: flex-hardware
38
- Requires-Dist: opentrons-hardware[FLEX]==8.0.0a6; extra == "flex-hardware"
38
+ Requires-Dist: opentrons-hardware[FLEX]==8.0.0a8; extra == "flex-hardware"
39
39
 
40
40
  .. _Full API Documentation: http://docs.opentrons.com
41
41
 
@@ -2683,6 +2683,15 @@ class OT3API(
2683
2683
  self._pipette_handler.ready_for_tip_action(
2684
2684
  instrument, HardwareAction.LIQUID_PROBE, checked_mount
2685
2685
  )
2686
+ # default to using all available sensors
2687
+ if probe:
2688
+ checked_probe = probe
2689
+ else:
2690
+ checked_probe = (
2691
+ InstrumentProbeType.BOTH
2692
+ if instrument.channels > 1
2693
+ else InstrumentProbeType.PRIMARY
2694
+ )
2686
2695
 
2687
2696
  if not probe_settings:
2688
2697
  probe_settings = deepcopy(self.config.liquid_sense)
@@ -2756,7 +2765,7 @@ class OT3API(
2756
2765
  height = await self._liquid_probe_pass(
2757
2766
  checked_mount,
2758
2767
  probe_settings,
2759
- probe if probe else InstrumentProbeType.PRIMARY,
2768
+ checked_probe,
2760
2769
  p_pass_travel + p_impulse_mm,
2761
2770
  )
2762
2771
  # if we made it here without an error we found the liquid
@@ -16,6 +16,7 @@ from typing import (
16
16
  from opentrons_shared_data.errors.exceptions import MotionPlanningFailureError
17
17
  from opentrons_shared_data.module import FLEX_TC_LID_COLLISION_ZONE
18
18
 
19
+ from opentrons.hardware_control import CriticalPoint
19
20
  from opentrons.hardware_control.modules.types import ModuleType
20
21
  from opentrons.motion_planning import deck_conflict as wrapped_deck_conflict
21
22
  from opentrons.motion_planning import adjacent_slots_getters
@@ -228,9 +229,13 @@ def check_safe_for_pipette_movement(
228
229
  )
229
230
  primary_nozzle = engine_state.pipettes.get_primary_nozzle(pipette_id)
230
231
 
232
+ destination_cp = _get_critical_point_to_use(engine_state, labware_id)
233
+
231
234
  pipette_bounds_at_well_location = (
232
235
  engine_state.pipettes.get_pipette_bounds_at_specified_move_to_position(
233
- pipette_id=pipette_id, destination_position=well_location_point
236
+ pipette_id=pipette_id,
237
+ destination_position=well_location_point,
238
+ critical_point=destination_cp,
234
239
  )
235
240
  )
236
241
  if not _is_within_pipette_extents(
@@ -284,6 +289,21 @@ def check_safe_for_pipette_movement(
284
289
  )
285
290
 
286
291
 
292
+ def _get_critical_point_to_use(
293
+ engine_state: StateView, labware_id: str
294
+ ) -> Optional[CriticalPoint]:
295
+ """Return the critical point to use when accessing the given labware."""
296
+ # TODO (spp, 2024-09-17): looks like Y_CENTER of column is the same as its XY_CENTER.
297
+ # I'm using this if-else ladder to be consistent with what we do in
298
+ # `MotionPlanning.get_movement_waypoints_to_well()`.
299
+ # We should probably use only XY_CENTER in both places.
300
+ if engine_state.labware.get_should_center_column_on_target_well(labware_id):
301
+ return CriticalPoint.Y_CENTER
302
+ elif engine_state.labware.get_should_center_pipette_on_target_well(labware_id):
303
+ return CriticalPoint.XY_CENTER
304
+ return None
305
+
306
+
287
307
  def _slot_has_potential_colliding_object(
288
308
  engine_state: StateView,
289
309
  pipette_bounds: Tuple[Point, Point, Point, Point],
@@ -266,6 +266,7 @@ class InstrumentContext(publisher.CommandPublisher):
266
266
  and well is not None
267
267
  and self.liquid_presence_detection
268
268
  and self._96_tip_config_valid()
269
+ and self._core.get_current_volume() == 0
269
270
  ):
270
271
  self.require_liquid_presence(well=well)
271
272
 
@@ -2,7 +2,11 @@
2
2
 
3
3
  from __future__ import annotations
4
4
  from typing import TYPE_CHECKING, Optional, Type, Union
5
- from opentrons.protocol_engine.errors.exceptions import MustHomeError, TipNotEmptyError
5
+ from opentrons.protocol_engine.errors.exceptions import (
6
+ MustHomeError,
7
+ PipetteNotReadyToAspirateError,
8
+ TipNotEmptyError,
9
+ )
6
10
  from opentrons.types import MountType
7
11
  from opentrons_shared_data.errors.exceptions import (
8
12
  PipetteLiquidNotFoundError,
@@ -32,6 +36,7 @@ from ..errors.error_occurrence import ErrorOccurrence
32
36
  if TYPE_CHECKING:
33
37
  from ..execution import MovementHandler, PipettingHandler
34
38
  from ..resources import ModelUtils
39
+ from ..state import StateView
35
40
 
36
41
 
37
42
  LiquidProbeCommandType = Literal["liquidProbe"]
@@ -92,11 +97,13 @@ class LiquidProbeImplementation(
92
97
 
93
98
  def __init__(
94
99
  self,
100
+ state_view: StateView,
95
101
  movement: MovementHandler,
96
102
  pipetting: PipettingHandler,
97
103
  model_utils: ModelUtils,
98
104
  **kwargs: object,
99
105
  ) -> None:
106
+ self._state_view = state_view
100
107
  self._movement = movement
101
108
  self._pipetting = pipetting
102
109
  self._model_utils = model_utils
@@ -112,6 +119,8 @@ class LiquidProbeImplementation(
112
119
  the pipette.
113
120
  TipNotEmptyError: as an undefined error, if the tip starts with liquid
114
121
  in it.
122
+ PipetteNotReadyToAspirateError: as an undefined error, if the plunger is not
123
+ in a safe position to do the liquid probe.
115
124
  MustHomeError: as an undefined error, if the plunger is not in a valid
116
125
  position.
117
126
  """
@@ -119,13 +128,21 @@ class LiquidProbeImplementation(
119
128
  labware_id = params.labwareId
120
129
  well_name = params.wellName
121
130
 
122
- # _validate_tip_attached in pipetting.py is a private method so we're using
123
- # get_is_ready_to_aspirate as an indirect way to throw a TipNotAttachedError if appropriate
124
- self._pipetting.get_is_ready_to_aspirate(pipette_id=pipette_id)
125
-
126
- if self._pipetting.get_is_empty(pipette_id=pipette_id) is False:
131
+ # May raise TipNotAttachedError.
132
+ aspirated_volume = self._state_view.pipettes.get_aspirated_volume(pipette_id)
133
+
134
+ if aspirated_volume is None:
135
+ # Theoretically, we could avoid raising an error by automatically preparing
136
+ # to aspirate above the well like AspirateImplementation does. However, the
137
+ # only way for this to happen is if someone tries to do a liquid probe with
138
+ # a tip that's previously held liquid, which they should avoid anyway.
139
+ raise PipetteNotReadyToAspirateError(
140
+ "The pipette cannot probe liquid because of a previous blow out."
141
+ " The plunger must be reset while the tip is somewhere away from liquid."
142
+ )
143
+ elif aspirated_volume != 0:
127
144
  raise TipNotEmptyError(
128
- message="This operation requires a tip with no liquid in it."
145
+ message="The pipette cannot probe for liquid when the tip has liquid in it."
129
146
  )
130
147
 
131
148
  if await self._movement.check_for_valid_position(mount=MountType.LEFT) is False:
@@ -182,11 +199,13 @@ class TryLiquidProbeImplementation(
182
199
 
183
200
  def __init__(
184
201
  self,
202
+ state_view: StateView,
185
203
  movement: MovementHandler,
186
204
  pipetting: PipettingHandler,
187
205
  model_utils: ModelUtils,
188
206
  **kwargs: object,
189
207
  ) -> None:
208
+ self._state_view = state_view
190
209
  self._movement = movement
191
210
  self._pipetting = pipetting
192
211
  self._model_utils = model_utils
@@ -203,6 +222,7 @@ class TryLiquidProbeImplementation(
203
222
  # Otherwise, we return the result or propagate the exception unchanged.
204
223
 
205
224
  original_impl = LiquidProbeImplementation(
225
+ state_view=self._state_view,
206
226
  movement=self._movement,
207
227
  pipetting=self._pipetting,
208
228
  model_utils=self._model_utils,
@@ -29,9 +29,6 @@ _VOLUME_ROUNDING_ERROR_TOLERANCE = 1e-9
29
29
  class PipettingHandler(TypingProtocol):
30
30
  """Liquid handling commands."""
31
31
 
32
- def get_is_empty(self, pipette_id: str) -> bool:
33
- """Get whether a pipette has an aspirated volume equal to 0."""
34
-
35
32
  def get_is_ready_to_aspirate(self, pipette_id: str) -> bool:
36
33
  """Get whether a pipette is ready to aspirate."""
37
34
 
@@ -81,10 +78,6 @@ class HardwarePipettingHandler(PipettingHandler):
81
78
  self._state_view = state_view
82
79
  self._hardware_api = hardware_api
83
80
 
84
- def get_is_empty(self, pipette_id: str) -> bool:
85
- """Get whether a pipette has an aspirated volume equal to 0."""
86
- return self._state_view.pipettes.get_aspirated_volume(pipette_id) == 0
87
-
88
81
  def get_is_ready_to_aspirate(self, pipette_id: str) -> bool:
89
82
  """Get whether a pipette is ready to aspirate."""
90
83
  hw_pipette = self._state_view.pipettes.get_hardware_pipette(
@@ -236,10 +229,6 @@ class VirtualPipettingHandler(PipettingHandler):
236
229
  """Initialize a PipettingHandler instance."""
237
230
  self._state_view = state_view
238
231
 
239
- def get_is_empty(self, pipette_id: str) -> bool:
240
- """Get whether a pipette has an aspirated volume equal to 0."""
241
- return self._state_view.pipettes.get_aspirated_volume(pipette_id) == 0
242
-
243
232
  def get_is_ready_to_aspirate(self, pipette_id: str) -> bool:
244
233
  """Get whether a pipette is ready to aspirate."""
245
234
  return self._state_view.pipettes.get_aspirated_volume(pipette_id) is not None
@@ -20,6 +20,8 @@ from ..errors import (
20
20
  ProtocolEngineError,
21
21
  )
22
22
 
23
+ from opentrons.hardware_control.nozzle_manager import NozzleConfigurationType
24
+
23
25
 
24
26
  PRIMARY_NOZZLE_TO_ENDING_NOZZLE_MAP = {
25
27
  "A1": {"COLUMN": "H1", "ROW": "A12"},
@@ -300,6 +302,30 @@ class HardwareTipHandler(TipHandler):
300
302
  This function will raise an exception if the specified tip presence status
301
303
  isn't matched.
302
304
  """
305
+ nozzle_configuration = (
306
+ self._state_view.pipettes.state.nozzle_configuration_by_id[pipette_id]
307
+ )
308
+
309
+ # Configuration metrics by which tip presence checking is ignored
310
+ unsupported_pipette_types = [8, 96]
311
+ unsupported_layout_types = [
312
+ NozzleConfigurationType.SINGLE,
313
+ NozzleConfigurationType.COLUMN,
314
+ ]
315
+ # NOTE: (09-20-2024) Current on multi-channel pipettes, utilizing less than 4 nozzles risks false positives on the tip presence sensor
316
+ supported_partial_nozzle_minimum = 4
317
+
318
+ if (
319
+ nozzle_configuration is not None
320
+ and self._state_view.pipettes.get_channels(pipette_id)
321
+ in unsupported_pipette_types
322
+ and nozzle_configuration.configuration in unsupported_layout_types
323
+ and len(nozzle_configuration.map_store) < supported_partial_nozzle_minimum
324
+ ):
325
+ # Tip presence sensing is not supported for single tip pick up on the 96ch Flex Pipette, nor with single and some partial layous of the 8ch Flex Pipette.
326
+ # This is due in part to a press distance tolerance which creates a risk case for false positives. In the case of single tip, the mechanical tolerance
327
+ # for presses with 100% success is below the minimum average achieved press distance for a given multi channel pipette in that configuration.
328
+ return
303
329
  try:
304
330
  ot3api = ensure_ot3_hardware(hardware_api=self._hardware_api)
305
331
  hw_mount = self._state_view.pipettes.get_mount(pipette_id).to_hw_mount()
@@ -7,6 +7,7 @@ from typing_extensions import assert_type
7
7
  from opentrons_shared_data.pipette import pipette_definition
8
8
  from opentrons.config.defaults_ot2 import Z_RETRACT_DISTANCE
9
9
  from opentrons.hardware_control.dev_types import PipetteDict
10
+ from opentrons.hardware_control import CriticalPoint
10
11
  from opentrons.hardware_control.nozzle_manager import (
11
12
  NozzleConfigurationType,
12
13
  NozzleMap,
@@ -610,7 +611,7 @@ class PipetteView(HasState[PipetteState]):
610
611
 
611
612
  Returns:
612
613
  The volume the pipette has aspirated.
613
- None, after blow-out and the plunger is in an unsafe position or drop-tip and there is no tip attached.
614
+ None, after blow-out and the plunger is in an unsafe position.
614
615
 
615
616
  Raises:
616
617
  PipetteNotLoadedError: pipette ID does not exist.
@@ -795,17 +796,27 @@ class PipetteView(HasState[PipetteState]):
795
796
  nozzle_map = self._state.nozzle_configuration_by_id.get(pipette_id)
796
797
  return nozzle_map.starting_nozzle if nozzle_map else None
797
798
 
798
- def get_primary_nozzle_offset(self, pipette_id: str) -> Point:
799
- """Get the pipette's current primary nozzle's offset."""
799
+ def _get_critical_point_offset_without_tip(
800
+ self, pipette_id: str, critical_point: Optional[CriticalPoint]
801
+ ) -> Point:
802
+ """Get the offset of the specified critical point from pipette's mount position."""
800
803
  nozzle_map = self._state.nozzle_configuration_by_id.get(pipette_id)
801
- if nozzle_map:
802
- primary_nozzle_offset = nozzle_map.starting_nozzle_offset
803
- else:
804
- # When not in partial configuration, back-left nozzle is the primary
805
- primary_nozzle_offset = self.get_config(
806
- pipette_id
807
- ).bounding_nozzle_offsets.back_left_offset
808
- return primary_nozzle_offset
804
+ # Nozzle map is unavailable only when there's no pipette loaded
805
+ # so this is merely for satisfying the type checker
806
+ assert (
807
+ nozzle_map is not None
808
+ ), "Error getting critical point offset. Nozzle map not found."
809
+ match critical_point:
810
+ case CriticalPoint.INSTRUMENT_XY_CENTER:
811
+ return nozzle_map.instrument_xy_center_offset
812
+ case CriticalPoint.XY_CENTER:
813
+ return nozzle_map.xy_center_offset
814
+ case CriticalPoint.Y_CENTER:
815
+ return nozzle_map.y_center_offset
816
+ case CriticalPoint.FRONT_NOZZLE:
817
+ return nozzle_map.front_nozzle_offset
818
+ case _:
819
+ return nozzle_map.starting_nozzle_offset
809
820
 
810
821
  def get_pipette_bounding_nozzle_offsets(
811
822
  self, pipette_id: str
@@ -817,32 +828,46 @@ class PipetteView(HasState[PipetteState]):
817
828
  """Get the bounding box of the pipette."""
818
829
  return self.get_config(pipette_id).pipette_bounding_box_offsets
819
830
 
831
+ # TODO (spp, 2024-09-17): in order to find the position of pipette at destination,
832
+ # this method repeats the same steps that waypoints builder does while finding
833
+ # waypoints to move to. We should consolidate these steps into a shared entity
834
+ # so that the deck conflict checker and movement plan builder always remain in sync.
820
835
  def get_pipette_bounds_at_specified_move_to_position(
821
836
  self,
822
837
  pipette_id: str,
823
838
  destination_position: Point,
839
+ critical_point: Optional[CriticalPoint],
824
840
  ) -> Tuple[Point, Point, Point, Point]:
825
- """Get the pipette's bounding offsets when primary nozzle is at the given position."""
826
- primary_nozzle_offset = self.get_primary_nozzle_offset(pipette_id)
841
+ """Get the pipette's bounding box position when critical point is at the destination position.
842
+
843
+ Returns a tuple of the pipette's bounding box position in deck coordinates as-
844
+ (back_left_bound, front_right_bound, back_right_bound, front_left_bound)
845
+ Bounding box of the pipette includes the pipette's outer casing as well as nozzles.
846
+ """
827
847
  tip = self.get_attached_tip(pipette_id)
828
- # TODO update this for pipette robot stackup
829
- # Primary nozzle position at destination, in deck coordinates
830
- primary_nozzle_position = destination_position + Point(
848
+
849
+ # *Offset* of pipette's critical point w.r.t pipette mount
850
+ critical_point_offset = self._get_critical_point_offset_without_tip(
851
+ pipette_id, critical_point
852
+ )
853
+
854
+ # Position of the above critical point at destination, in deck coordinates
855
+ critical_point_position = destination_position + Point(
831
856
  x=0, y=0, z=tip.length if tip else 0
832
857
  )
833
858
 
834
- # Get the pipette bounding box based on total nozzles
859
+ # Get the pipette bounding box coordinates
835
860
  pipette_bounds_offsets = self.get_config(
836
861
  pipette_id
837
862
  ).pipette_bounding_box_offsets
838
863
  pip_back_left_bound = (
839
- primary_nozzle_position
840
- - primary_nozzle_offset
864
+ critical_point_position
865
+ - critical_point_offset
841
866
  + pipette_bounds_offsets.back_left_corner
842
867
  )
843
868
  pip_front_right_bound = (
844
- primary_nozzle_position
845
- - primary_nozzle_offset
869
+ critical_point_position
870
+ - critical_point_offset
846
871
  + pipette_bounds_offsets.front_right_corner
847
872
  )
848
873
  pip_back_right_bound = Point(
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: opentrons
3
- Version: 8.0.0a6
3
+ Version: 8.0.0a8
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.0.0a6
24
+ Requires-Dist: opentrons-shared-data==8.0.0a8
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
@@ -33,9 +33,9 @@ Requires-Dist: click<9,>=8.0.0
33
33
  Requires-Dist: importlib-metadata>=1.0; python_version < "3.8"
34
34
  Requires-Dist: packaging>=21.0
35
35
  Provides-Extra: ot2-hardware
36
- Requires-Dist: opentrons-hardware==8.0.0a6; extra == "ot2-hardware"
36
+ Requires-Dist: opentrons-hardware==8.0.0a8; extra == "ot2-hardware"
37
37
  Provides-Extra: flex-hardware
38
- Requires-Dist: opentrons-hardware[FLEX]==8.0.0a6; extra == "flex-hardware"
38
+ Requires-Dist: opentrons-hardware[FLEX]==8.0.0a8; extra == "flex-hardware"
39
39
 
40
40
  .. _Full API Documentation: http://docs.opentrons.com
41
41
 
@@ -1,4 +1,4 @@
1
- opentrons-shared-data==8.0.0a6
1
+ opentrons-shared-data==8.0.0a8
2
2
  aionotify==0.3.1
3
3
  anyio<4.0.0,>=3.6.1
4
4
  jsonschema<4.18.0,>=3.0.1
@@ -13,7 +13,7 @@ packaging>=21.0
13
13
  importlib-metadata>=1.0
14
14
 
15
15
  [flex-hardware]
16
- opentrons-hardware[FLEX]==8.0.0a6
16
+ opentrons-hardware[FLEX]==8.0.0a8
17
17
 
18
18
  [ot2-hardware]
19
- opentrons-hardware==8.0.0a6
19
+ opentrons-hardware==8.0.0a8
File without changes
File without changes
File without changes
File without changes