opentrons 8.2.0a2__tar.gz → 8.2.0a3__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.0a2 → opentrons-8.2.0a3}/PKG-INFO +4 -4
  2. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/drivers/absorbance_reader/async_byonoy.py +5 -4
  3. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/hardware_control/backends/ot3utils.py +1 -0
  4. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/hardware_control/modules/absorbance_reader.py +2 -0
  5. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/hardware_control/types.py +2 -0
  6. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/protocol_api/module_contexts.py +56 -26
  7. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/protocol_engine/commands/aspirate_in_place.py +3 -3
  8. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/protocol_engine/commands/command.py +3 -1
  9. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/protocol_engine/commands/dispense_in_place.py +1 -1
  10. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/protocol_engine/commands/drop_tip.py +2 -1
  11. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/protocol_engine/commands/drop_tip_in_place.py +7 -2
  12. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/protocol_engine/commands/pick_up_tip.py +1 -1
  13. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/protocol_engine/commands/pipetting_common.py +8 -1
  14. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/protocol_engine/errors/error_occurrence.py +8 -3
  15. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/protocol_runner/run_orchestrator.py +15 -0
  16. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/protocols/parameters/csv_parameter_interface.py +3 -1
  17. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons.egg-info/PKG-INFO +4 -4
  18. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons.egg-info/requires.txt +3 -3
  19. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/MANIFEST.in +0 -0
  20. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/README.rst +0 -0
  21. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/setup.cfg +0 -0
  22. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/setup.py +0 -0
  23. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/__init__.py +0 -0
  24. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/_version.py +0 -0
  25. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/calibration_storage/__init__.py +0 -0
  26. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/calibration_storage/deck_configuration.py +0 -0
  27. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/calibration_storage/encoder_decoder.py +0 -0
  28. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/calibration_storage/file_operators.py +0 -0
  29. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/calibration_storage/helpers.py +0 -0
  30. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/calibration_storage/ot2/__init__.py +0 -0
  31. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/calibration_storage/ot2/deck_attitude.py +0 -0
  32. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/calibration_storage/ot2/mark_bad_calibration.py +0 -0
  33. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/calibration_storage/ot2/models/__init__.py +0 -0
  34. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/calibration_storage/ot2/models/defaults.py +0 -0
  35. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/calibration_storage/ot2/models/v1.py +0 -0
  36. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/calibration_storage/ot2/pipette_offset.py +0 -0
  37. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/calibration_storage/ot2/tip_length.py +0 -0
  38. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/calibration_storage/ot3/__init__.py +0 -0
  39. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/calibration_storage/ot3/deck_attitude.py +0 -0
  40. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/calibration_storage/ot3/gripper_offset.py +0 -0
  41. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/calibration_storage/ot3/models/__init__.py +0 -0
  42. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/calibration_storage/ot3/models/defaults.py +0 -0
  43. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/calibration_storage/ot3/models/v1.py +0 -0
  44. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/calibration_storage/ot3/module_offset.py +0 -0
  45. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/calibration_storage/ot3/pipette_offset.py +0 -0
  46. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/calibration_storage/types.py +0 -0
  47. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/cli/__init__.py +0 -0
  48. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/cli/__main__.py +0 -0
  49. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/cli/analyze.py +0 -0
  50. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/config/__init__.py +0 -0
  51. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/config/advanced_settings.py +0 -0
  52. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/config/defaults_ot2.py +0 -0
  53. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/config/defaults_ot3.py +0 -0
  54. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/config/feature_flags.py +0 -0
  55. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/config/gripper_config.py +0 -0
  56. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/config/reset.py +0 -0
  57. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/config/robot_configs.py +0 -0
  58. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/config/types.py +0 -0
  59. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/drivers/__init__.py +0 -0
  60. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/drivers/absorbance_reader/__init__.py +0 -0
  61. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/drivers/absorbance_reader/abstract.py +0 -0
  62. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/drivers/absorbance_reader/driver.py +0 -0
  63. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/drivers/absorbance_reader/hid_protocol.py +0 -0
  64. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/drivers/absorbance_reader/simulator.py +0 -0
  65. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/drivers/asyncio/__init__.py +0 -0
  66. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/drivers/asyncio/communication/__init__.py +0 -0
  67. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/drivers/asyncio/communication/async_serial.py +0 -0
  68. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/drivers/asyncio/communication/errors.py +0 -0
  69. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/drivers/asyncio/communication/serial_connection.py +0 -0
  70. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/drivers/command_builder.py +0 -0
  71. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/drivers/heater_shaker/__init__.py +0 -0
  72. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/drivers/heater_shaker/abstract.py +0 -0
  73. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/drivers/heater_shaker/driver.py +0 -0
  74. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/drivers/heater_shaker/simulator.py +0 -0
  75. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/drivers/mag_deck/__init__.py +0 -0
  76. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/drivers/mag_deck/abstract.py +0 -0
  77. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/drivers/mag_deck/driver.py +0 -0
  78. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/drivers/mag_deck/simulator.py +0 -0
  79. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/drivers/rpi_drivers/__init__.py +0 -0
  80. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/drivers/rpi_drivers/dev_types.py +0 -0
  81. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/drivers/rpi_drivers/gpio.py +0 -0
  82. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/drivers/rpi_drivers/gpio_simulator.py +0 -0
  83. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/drivers/rpi_drivers/interfaces.py +0 -0
  84. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/drivers/rpi_drivers/types.py +0 -0
  85. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/drivers/rpi_drivers/usb.py +0 -0
  86. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/drivers/rpi_drivers/usb_simulator.py +0 -0
  87. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/drivers/serial_communication.py +0 -0
  88. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/drivers/smoothie_drivers/__init__.py +0 -0
  89. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/drivers/smoothie_drivers/connection.py +0 -0
  90. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/drivers/smoothie_drivers/constants.py +0 -0
  91. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/drivers/smoothie_drivers/driver_3_0.py +0 -0
  92. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/drivers/smoothie_drivers/errors.py +0 -0
  93. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/drivers/smoothie_drivers/parse_utils.py +0 -0
  94. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/drivers/smoothie_drivers/simulator.py +0 -0
  95. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/drivers/smoothie_drivers/types.py +0 -0
  96. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/drivers/temp_deck/__init__.py +0 -0
  97. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/drivers/temp_deck/abstract.py +0 -0
  98. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/drivers/temp_deck/driver.py +0 -0
  99. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/drivers/temp_deck/simulator.py +0 -0
  100. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/drivers/thermocycler/__init__.py +0 -0
  101. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/drivers/thermocycler/abstract.py +0 -0
  102. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/drivers/thermocycler/driver.py +0 -0
  103. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/drivers/thermocycler/simulator.py +0 -0
  104. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/drivers/types.py +0 -0
  105. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/drivers/utils.py +0 -0
  106. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/execute.py +0 -0
  107. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/hardware_control/__init__.py +0 -0
  108. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/hardware_control/__main__.py +0 -0
  109. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/hardware_control/adapters.py +0 -0
  110. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/hardware_control/api.py +0 -0
  111. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/hardware_control/backends/__init__.py +0 -0
  112. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/hardware_control/backends/controller.py +0 -0
  113. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/hardware_control/backends/errors.py +0 -0
  114. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/hardware_control/backends/estop_state.py +0 -0
  115. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/hardware_control/backends/flex_protocol.py +0 -0
  116. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/hardware_control/backends/ot3controller.py +0 -0
  117. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/hardware_control/backends/ot3simulator.py +0 -0
  118. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/hardware_control/backends/simulator.py +0 -0
  119. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/hardware_control/backends/status_bar_state.py +0 -0
  120. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/hardware_control/backends/subsystem_manager.py +0 -0
  121. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/hardware_control/backends/tip_presence_manager.py +0 -0
  122. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/hardware_control/backends/types.py +0 -0
  123. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/hardware_control/constants.py +0 -0
  124. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/hardware_control/dev_types.py +0 -0
  125. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/hardware_control/emulation/__init__.py +0 -0
  126. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/hardware_control/emulation/abstract_emulator.py +0 -0
  127. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/hardware_control/emulation/app.py +0 -0
  128. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/hardware_control/emulation/connection_handler.py +0 -0
  129. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/hardware_control/emulation/heater_shaker.py +0 -0
  130. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/hardware_control/emulation/magdeck.py +0 -0
  131. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/hardware_control/emulation/module_server/__init__.py +0 -0
  132. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/hardware_control/emulation/module_server/client.py +0 -0
  133. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/hardware_control/emulation/module_server/helpers.py +0 -0
  134. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/hardware_control/emulation/module_server/models.py +0 -0
  135. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/hardware_control/emulation/module_server/server.py +0 -0
  136. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/hardware_control/emulation/parser.py +0 -0
  137. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/hardware_control/emulation/proxy.py +0 -0
  138. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/hardware_control/emulation/run_emulator.py +0 -0
  139. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/hardware_control/emulation/scripts/__init__.py +0 -0
  140. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/hardware_control/emulation/scripts/run_app.py +0 -0
  141. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/hardware_control/emulation/scripts/run_module_emulator.py +0 -0
  142. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/hardware_control/emulation/scripts/run_smoothie.py +0 -0
  143. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/hardware_control/emulation/settings.py +0 -0
  144. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/hardware_control/emulation/simulations.py +0 -0
  145. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/hardware_control/emulation/smoothie.py +0 -0
  146. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/hardware_control/emulation/tempdeck.py +0 -0
  147. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/hardware_control/emulation/thermocycler.py +0 -0
  148. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/hardware_control/emulation/types.py +0 -0
  149. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/hardware_control/emulation/util.py +0 -0
  150. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/hardware_control/errors.py +0 -0
  151. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/hardware_control/execution_manager.py +0 -0
  152. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/hardware_control/instruments/__init__.py +0 -0
  153. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/hardware_control/instruments/instrument_abc.py +0 -0
  154. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/hardware_control/instruments/ot2/__init__.py +0 -0
  155. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/hardware_control/instruments/ot2/instrument_calibration.py +0 -0
  156. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/hardware_control/instruments/ot2/pipette.py +0 -0
  157. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/hardware_control/instruments/ot2/pipette_handler.py +0 -0
  158. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/hardware_control/instruments/ot3/__init__.py +0 -0
  159. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/hardware_control/instruments/ot3/gripper.py +0 -0
  160. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/hardware_control/instruments/ot3/gripper_handler.py +0 -0
  161. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/hardware_control/instruments/ot3/instrument_calibration.py +0 -0
  162. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/hardware_control/instruments/ot3/pipette.py +0 -0
  163. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/hardware_control/instruments/ot3/pipette_handler.py +0 -0
  164. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/hardware_control/module_control.py +0 -0
  165. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/hardware_control/modules/__init__.py +0 -0
  166. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/hardware_control/modules/errors.py +0 -0
  167. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/hardware_control/modules/heater_shaker.py +0 -0
  168. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/hardware_control/modules/lid_temp_status.py +0 -0
  169. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/hardware_control/modules/magdeck.py +0 -0
  170. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/hardware_control/modules/mod_abc.py +0 -0
  171. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/hardware_control/modules/module_calibration.py +0 -0
  172. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/hardware_control/modules/plate_temp_status.py +0 -0
  173. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/hardware_control/modules/tempdeck.py +0 -0
  174. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/hardware_control/modules/thermocycler.py +0 -0
  175. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/hardware_control/modules/types.py +0 -0
  176. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/hardware_control/modules/update.py +0 -0
  177. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/hardware_control/modules/utils.py +0 -0
  178. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/hardware_control/motion_utilities.py +0 -0
  179. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/hardware_control/nozzle_manager.py +0 -0
  180. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/hardware_control/ot3_calibration.py +0 -0
  181. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/hardware_control/ot3api.py +0 -0
  182. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/hardware_control/pause_manager.py +0 -0
  183. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/hardware_control/poller.py +0 -0
  184. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/hardware_control/protocols/__init__.py +0 -0
  185. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/hardware_control/protocols/asyncio_configurable.py +0 -0
  186. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/hardware_control/protocols/calibratable.py +0 -0
  187. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/hardware_control/protocols/chassis_accessory_manager.py +0 -0
  188. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/hardware_control/protocols/configurable.py +0 -0
  189. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/hardware_control/protocols/event_sourcer.py +0 -0
  190. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/hardware_control/protocols/execution_controllable.py +0 -0
  191. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/hardware_control/protocols/flex_calibratable.py +0 -0
  192. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/hardware_control/protocols/flex_instrument_configurer.py +0 -0
  193. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/hardware_control/protocols/gripper_controller.py +0 -0
  194. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/hardware_control/protocols/hardware_manager.py +0 -0
  195. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/hardware_control/protocols/identifiable.py +0 -0
  196. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/hardware_control/protocols/instrument_configurer.py +0 -0
  197. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/hardware_control/protocols/liquid_handler.py +0 -0
  198. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/hardware_control/protocols/module_provider.py +0 -0
  199. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/hardware_control/protocols/motion_controller.py +0 -0
  200. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/hardware_control/protocols/position_estimator.py +0 -0
  201. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/hardware_control/protocols/simulatable.py +0 -0
  202. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/hardware_control/protocols/stoppable.py +0 -0
  203. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/hardware_control/protocols/types.py +0 -0
  204. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/hardware_control/robot_calibration.py +0 -0
  205. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/hardware_control/scripts/__init__.py +0 -0
  206. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/hardware_control/scripts/gripper_control.py +0 -0
  207. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/hardware_control/scripts/repl.py +0 -0
  208. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/hardware_control/scripts/tc_control.py +0 -0
  209. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/hardware_control/simulator_setup.py +0 -0
  210. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/hardware_control/thread_manager.py +0 -0
  211. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/hardware_control/threaded_async_lock.py +0 -0
  212. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/hardware_control/util.py +0 -0
  213. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/legacy_broker.py +0 -0
  214. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/legacy_commands/__init__.py +0 -0
  215. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/legacy_commands/commands.py +0 -0
  216. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/legacy_commands/helpers.py +0 -0
  217. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/legacy_commands/module_commands.py +0 -0
  218. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/legacy_commands/protocol_commands.py +0 -0
  219. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/legacy_commands/publisher.py +0 -0
  220. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/legacy_commands/types.py +0 -0
  221. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/motion_planning/__init__.py +0 -0
  222. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/motion_planning/adjacent_slots_getters.py +0 -0
  223. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/motion_planning/deck_conflict.py +0 -0
  224. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/motion_planning/errors.py +0 -0
  225. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/motion_planning/types.py +0 -0
  226. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/motion_planning/waypoints.py +0 -0
  227. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/ordered_set.py +0 -0
  228. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/protocol_api/__init__.py +0 -0
  229. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/protocol_api/_liquid.py +0 -0
  230. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/protocol_api/_nozzle_layout.py +0 -0
  231. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/protocol_api/_parameter_context.py +0 -0
  232. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/protocol_api/_parameters.py +0 -0
  233. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/protocol_api/_types.py +0 -0
  234. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/protocol_api/config.py +0 -0
  235. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/protocol_api/core/__init__.py +0 -0
  236. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/protocol_api/core/common.py +0 -0
  237. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/protocol_api/core/core_map.py +0 -0
  238. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/protocol_api/core/engine/__init__.py +0 -0
  239. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/protocol_api/core/engine/deck_conflict.py +0 -0
  240. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/protocol_api/core/engine/exceptions.py +0 -0
  241. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/protocol_api/core/engine/instrument.py +0 -0
  242. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/protocol_api/core/engine/labware.py +0 -0
  243. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/protocol_api/core/engine/load_labware_params.py +0 -0
  244. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/protocol_api/core/engine/module_core.py +0 -0
  245. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/protocol_api/core/engine/overlap_versions.py +0 -0
  246. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/protocol_api/core/engine/pipette_movement_conflict.py +0 -0
  247. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/protocol_api/core/engine/point_calculations.py +0 -0
  248. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/protocol_api/core/engine/protocol.py +0 -0
  249. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/protocol_api/core/engine/stringify.py +0 -0
  250. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/protocol_api/core/engine/well.py +0 -0
  251. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/protocol_api/core/instrument.py +0 -0
  252. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/protocol_api/core/labware.py +0 -0
  253. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/protocol_api/core/legacy/__init__.py +0 -0
  254. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/protocol_api/core/legacy/deck.py +0 -0
  255. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/protocol_api/core/legacy/labware_offset_provider.py +0 -0
  256. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/protocol_api/core/legacy/legacy_instrument_core.py +0 -0
  257. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/protocol_api/core/legacy/legacy_labware_core.py +0 -0
  258. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/protocol_api/core/legacy/legacy_module_core.py +0 -0
  259. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/protocol_api/core/legacy/legacy_protocol_core.py +0 -0
  260. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/protocol_api/core/legacy/legacy_well_core.py +0 -0
  261. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/protocol_api/core/legacy/load_info.py +0 -0
  262. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/protocol_api/core/legacy/module_geometry.py +0 -0
  263. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/protocol_api/core/legacy/well_geometry.py +0 -0
  264. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/protocol_api/core/legacy_simulator/__init__.py +0 -0
  265. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/protocol_api/core/legacy_simulator/legacy_instrument_core.py +0 -0
  266. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/protocol_api/core/legacy_simulator/legacy_protocol_core.py +0 -0
  267. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/protocol_api/core/module.py +0 -0
  268. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/protocol_api/core/protocol.py +0 -0
  269. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/protocol_api/core/well.py +0 -0
  270. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/protocol_api/core/well_grid.py +0 -0
  271. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/protocol_api/create_protocol_context.py +0 -0
  272. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/protocol_api/deck.py +0 -0
  273. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/protocol_api/disposal_locations.py +0 -0
  274. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/protocol_api/instrument_context.py +0 -0
  275. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/protocol_api/labware.py +0 -0
  276. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/protocol_api/module_validation_and_errors.py +0 -0
  277. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/protocol_api/protocol_context.py +0 -0
  278. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/protocol_api/robot_context.py +0 -0
  279. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/protocol_api/validation.py +0 -0
  280. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/protocol_engine/__init__.py +0 -0
  281. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/protocol_engine/actions/__init__.py +0 -0
  282. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/protocol_engine/actions/action_dispatcher.py +0 -0
  283. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/protocol_engine/actions/action_handler.py +0 -0
  284. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/protocol_engine/actions/actions.py +0 -0
  285. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/protocol_engine/actions/get_state_update.py +0 -0
  286. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/protocol_engine/clients/__init__.py +0 -0
  287. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/protocol_engine/clients/sync_client.py +0 -0
  288. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/protocol_engine/clients/transports.py +0 -0
  289. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/protocol_engine/commands/__init__.py +0 -0
  290. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/protocol_engine/commands/absorbance_reader/__init__.py +0 -0
  291. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/protocol_engine/commands/absorbance_reader/close_lid.py +0 -0
  292. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/protocol_engine/commands/absorbance_reader/initialize.py +0 -0
  293. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/protocol_engine/commands/absorbance_reader/open_lid.py +0 -0
  294. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/protocol_engine/commands/absorbance_reader/read.py +0 -0
  295. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/protocol_engine/commands/aspirate.py +0 -0
  296. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/protocol_engine/commands/blow_out.py +0 -0
  297. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/protocol_engine/commands/blow_out_in_place.py +0 -0
  298. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/protocol_engine/commands/calibration/__init__.py +0 -0
  299. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/protocol_engine/commands/calibration/calibrate_gripper.py +0 -0
  300. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/protocol_engine/commands/calibration/calibrate_module.py +0 -0
  301. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/protocol_engine/commands/calibration/calibrate_pipette.py +0 -0
  302. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/protocol_engine/commands/calibration/move_to_maintenance_position.py +0 -0
  303. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/protocol_engine/commands/command_unions.py +0 -0
  304. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/protocol_engine/commands/comment.py +0 -0
  305. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/protocol_engine/commands/configure_for_volume.py +0 -0
  306. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/protocol_engine/commands/configure_nozzle_layout.py +0 -0
  307. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/protocol_engine/commands/custom.py +0 -0
  308. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/protocol_engine/commands/dispense.py +0 -0
  309. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/protocol_engine/commands/generate_command_schema.py +0 -0
  310. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/protocol_engine/commands/get_tip_presence.py +0 -0
  311. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/protocol_engine/commands/hash_command_params.py +0 -0
  312. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/protocol_engine/commands/heater_shaker/__init__.py +0 -0
  313. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/protocol_engine/commands/heater_shaker/close_labware_latch.py +0 -0
  314. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/protocol_engine/commands/heater_shaker/deactivate_heater.py +0 -0
  315. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/protocol_engine/commands/heater_shaker/deactivate_shaker.py +0 -0
  316. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/protocol_engine/commands/heater_shaker/open_labware_latch.py +0 -0
  317. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/protocol_engine/commands/heater_shaker/set_and_wait_for_shake_speed.py +0 -0
  318. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/protocol_engine/commands/heater_shaker/set_target_temperature.py +0 -0
  319. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/protocol_engine/commands/heater_shaker/wait_for_temperature.py +0 -0
  320. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/protocol_engine/commands/home.py +0 -0
  321. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/protocol_engine/commands/liquid_probe.py +0 -0
  322. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/protocol_engine/commands/load_labware.py +0 -0
  323. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/protocol_engine/commands/load_liquid.py +0 -0
  324. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/protocol_engine/commands/load_module.py +0 -0
  325. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/protocol_engine/commands/load_pipette.py +0 -0
  326. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/protocol_engine/commands/magnetic_module/__init__.py +0 -0
  327. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/protocol_engine/commands/magnetic_module/disengage.py +0 -0
  328. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/protocol_engine/commands/magnetic_module/engage.py +0 -0
  329. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/protocol_engine/commands/move_labware.py +0 -0
  330. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/protocol_engine/commands/move_relative.py +0 -0
  331. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/protocol_engine/commands/move_to_addressable_area.py +0 -0
  332. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/protocol_engine/commands/move_to_addressable_area_for_drop_tip.py +0 -0
  333. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/protocol_engine/commands/move_to_coordinates.py +0 -0
  334. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/protocol_engine/commands/move_to_well.py +0 -0
  335. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/protocol_engine/commands/prepare_to_aspirate.py +0 -0
  336. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/protocol_engine/commands/reload_labware.py +0 -0
  337. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/protocol_engine/commands/retract_axis.py +0 -0
  338. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/protocol_engine/commands/robot/__init__.py +0 -0
  339. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/protocol_engine/commands/save_position.py +0 -0
  340. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/protocol_engine/commands/set_rail_lights.py +0 -0
  341. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/protocol_engine/commands/set_status_bar.py +0 -0
  342. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/protocol_engine/commands/temperature_module/__init__.py +0 -0
  343. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/protocol_engine/commands/temperature_module/deactivate.py +0 -0
  344. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/protocol_engine/commands/temperature_module/set_target_temperature.py +0 -0
  345. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/protocol_engine/commands/temperature_module/wait_for_temperature.py +0 -0
  346. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/protocol_engine/commands/thermocycler/__init__.py +0 -0
  347. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/protocol_engine/commands/thermocycler/close_lid.py +0 -0
  348. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/protocol_engine/commands/thermocycler/deactivate_block.py +0 -0
  349. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/protocol_engine/commands/thermocycler/deactivate_lid.py +0 -0
  350. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/protocol_engine/commands/thermocycler/open_lid.py +0 -0
  351. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/protocol_engine/commands/thermocycler/run_extended_profile.py +0 -0
  352. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/protocol_engine/commands/thermocycler/run_profile.py +0 -0
  353. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/protocol_engine/commands/thermocycler/set_target_block_temperature.py +0 -0
  354. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/protocol_engine/commands/thermocycler/set_target_lid_temperature.py +0 -0
  355. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/protocol_engine/commands/thermocycler/wait_for_block_temperature.py +0 -0
  356. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/protocol_engine/commands/thermocycler/wait_for_lid_temperature.py +0 -0
  357. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/protocol_engine/commands/touch_tip.py +0 -0
  358. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/protocol_engine/commands/unsafe/__init__.py +0 -0
  359. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/protocol_engine/commands/unsafe/unsafe_blow_out_in_place.py +0 -0
  360. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/protocol_engine/commands/unsafe/unsafe_drop_tip_in_place.py +0 -0
  361. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/protocol_engine/commands/unsafe/unsafe_engage_axes.py +0 -0
  362. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/protocol_engine/commands/unsafe/unsafe_place_labware.py +0 -0
  363. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/protocol_engine/commands/unsafe/unsafe_ungrip_labware.py +0 -0
  364. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/protocol_engine/commands/unsafe/update_position_estimators.py +0 -0
  365. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/protocol_engine/commands/verify_tip_presence.py +0 -0
  366. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/protocol_engine/commands/wait_for_duration.py +0 -0
  367. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/protocol_engine/commands/wait_for_resume.py +0 -0
  368. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/protocol_engine/create_protocol_engine.py +0 -0
  369. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/protocol_engine/engine_support.py +0 -0
  370. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/protocol_engine/error_recovery_policy.py +0 -0
  371. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/protocol_engine/errors/__init__.py +0 -0
  372. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/protocol_engine/errors/exceptions.py +0 -0
  373. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/protocol_engine/execution/__init__.py +0 -0
  374. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/protocol_engine/execution/command_executor.py +0 -0
  375. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/protocol_engine/execution/create_queue_worker.py +0 -0
  376. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/protocol_engine/execution/door_watcher.py +0 -0
  377. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/protocol_engine/execution/equipment.py +0 -0
  378. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/protocol_engine/execution/error_recovery_hardware_state_synchronizer.py +0 -0
  379. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/protocol_engine/execution/gantry_mover.py +0 -0
  380. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/protocol_engine/execution/hardware_stopper.py +0 -0
  381. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/protocol_engine/execution/heater_shaker_movement_flagger.py +0 -0
  382. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/protocol_engine/execution/labware_movement.py +0 -0
  383. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/protocol_engine/execution/movement.py +0 -0
  384. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/protocol_engine/execution/pipetting.py +0 -0
  385. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/protocol_engine/execution/queue_worker.py +0 -0
  386. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/protocol_engine/execution/rail_lights.py +0 -0
  387. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/protocol_engine/execution/run_control.py +0 -0
  388. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/protocol_engine/execution/status_bar.py +0 -0
  389. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/protocol_engine/execution/thermocycler_movement_flagger.py +0 -0
  390. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/protocol_engine/execution/thermocycler_plate_lifter.py +0 -0
  391. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/protocol_engine/execution/tip_handler.py +0 -0
  392. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/protocol_engine/notes/__init__.py +0 -0
  393. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/protocol_engine/notes/notes.py +0 -0
  394. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/protocol_engine/plugins.py +0 -0
  395. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/protocol_engine/protocol_engine.py +0 -0
  396. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/protocol_engine/resources/__init__.py +0 -0
  397. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/protocol_engine/resources/deck_configuration_provider.py +0 -0
  398. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/protocol_engine/resources/deck_data_provider.py +0 -0
  399. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/protocol_engine/resources/file_provider.py +0 -0
  400. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/protocol_engine/resources/fixture_validation.py +0 -0
  401. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/protocol_engine/resources/labware_data_provider.py +0 -0
  402. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/protocol_engine/resources/labware_validation.py +0 -0
  403. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/protocol_engine/resources/model_utils.py +0 -0
  404. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/protocol_engine/resources/module_data_provider.py +0 -0
  405. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/protocol_engine/resources/ot3_validation.py +0 -0
  406. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/protocol_engine/resources/pipette_data_provider.py +0 -0
  407. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/protocol_engine/slot_standardization.py +0 -0
  408. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/protocol_engine/state/__init__.py +0 -0
  409. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/protocol_engine/state/_abstract_store.py +0 -0
  410. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/protocol_engine/state/_move_types.py +0 -0
  411. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/protocol_engine/state/addressable_areas.py +0 -0
  412. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/protocol_engine/state/command_history.py +0 -0
  413. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/protocol_engine/state/commands.py +0 -0
  414. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/protocol_engine/state/config.py +0 -0
  415. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/protocol_engine/state/files.py +0 -0
  416. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/protocol_engine/state/frustum_helpers.py +0 -0
  417. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/protocol_engine/state/geometry.py +0 -0
  418. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/protocol_engine/state/labware.py +0 -0
  419. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/protocol_engine/state/liquids.py +0 -0
  420. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/protocol_engine/state/module_substates/__init__.py +0 -0
  421. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/protocol_engine/state/module_substates/absorbance_reader_substate.py +0 -0
  422. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/protocol_engine/state/module_substates/heater_shaker_module_substate.py +0 -0
  423. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/protocol_engine/state/module_substates/magnetic_block_substate.py +0 -0
  424. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/protocol_engine/state/module_substates/magnetic_module_substate.py +0 -0
  425. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/protocol_engine/state/module_substates/temperature_module_substate.py +0 -0
  426. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/protocol_engine/state/module_substates/thermocycler_module_substate.py +0 -0
  427. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/protocol_engine/state/modules.py +0 -0
  428. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/protocol_engine/state/motion.py +0 -0
  429. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/protocol_engine/state/pipettes.py +0 -0
  430. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/protocol_engine/state/state.py +0 -0
  431. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/protocol_engine/state/state_summary.py +0 -0
  432. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/protocol_engine/state/tips.py +0 -0
  433. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/protocol_engine/state/update_types.py +0 -0
  434. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/protocol_engine/state/wells.py +0 -0
  435. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/protocol_engine/types.py +0 -0
  436. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/protocol_reader/__init__.py +0 -0
  437. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/protocol_reader/extract_labware_definitions.py +0 -0
  438. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/protocol_reader/file_format_validator.py +0 -0
  439. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/protocol_reader/file_hasher.py +0 -0
  440. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/protocol_reader/file_identifier.py +0 -0
  441. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/protocol_reader/file_reader_writer.py +0 -0
  442. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/protocol_reader/input_file.py +0 -0
  443. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/protocol_reader/protocol_files_invalid_error.py +0 -0
  444. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/protocol_reader/protocol_reader.py +0 -0
  445. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/protocol_reader/protocol_source.py +0 -0
  446. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/protocol_reader/role_analyzer.py +0 -0
  447. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/protocol_runner/__init__.py +0 -0
  448. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/protocol_runner/create_simulating_orchestrator.py +0 -0
  449. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/protocol_runner/json_file_reader.py +0 -0
  450. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/protocol_runner/json_translator.py +0 -0
  451. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/protocol_runner/legacy_command_mapper.py +0 -0
  452. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/protocol_runner/legacy_context_plugin.py +0 -0
  453. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/protocol_runner/protocol_runner.py +0 -0
  454. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/protocol_runner/python_protocol_wrappers.py +0 -0
  455. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/protocol_runner/task_queue.py +0 -0
  456. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/protocols/__init__.py +0 -0
  457. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/protocols/advanced_control/__init__.py +0 -0
  458. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/protocols/advanced_control/mix.py +0 -0
  459. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/protocols/advanced_control/transfers.py +0 -0
  460. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/protocols/api_support/__init__.py +0 -0
  461. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/protocols/api_support/constants.py +0 -0
  462. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/protocols/api_support/deck_type.py +0 -0
  463. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/protocols/api_support/definitions.py +0 -0
  464. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/protocols/api_support/instrument.py +0 -0
  465. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/protocols/api_support/labware_like.py +0 -0
  466. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/protocols/api_support/tip_tracker.py +0 -0
  467. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/protocols/api_support/types.py +0 -0
  468. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/protocols/api_support/util.py +0 -0
  469. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/protocols/bundle.py +0 -0
  470. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/protocols/duration/__init__.py +0 -0
  471. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/protocols/duration/errors.py +0 -0
  472. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/protocols/duration/estimator.py +0 -0
  473. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/protocols/execution/__init__.py +0 -0
  474. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/protocols/execution/dev_types.py +0 -0
  475. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/protocols/execution/errors.py +0 -0
  476. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/protocols/execution/execute.py +0 -0
  477. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/protocols/execution/execute_json_v3.py +0 -0
  478. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/protocols/execution/execute_json_v4.py +0 -0
  479. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/protocols/execution/execute_json_v5.py +0 -0
  480. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/protocols/execution/execute_python.py +0 -0
  481. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/protocols/execution/json_dispatchers.py +0 -0
  482. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/protocols/execution/types.py +0 -0
  483. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/protocols/geometry/__init__.py +0 -0
  484. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/protocols/geometry/labware_geometry.py +0 -0
  485. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/protocols/geometry/planning.py +0 -0
  486. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/protocols/labware.py +0 -0
  487. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/protocols/models/__init__.py +0 -0
  488. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/protocols/models/json_protocol.py +0 -0
  489. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/protocols/parameters/__init__.py +0 -0
  490. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/protocols/parameters/csv_parameter_definition.py +0 -0
  491. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/protocols/parameters/exceptions.py +0 -0
  492. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/protocols/parameters/parameter_definition.py +0 -0
  493. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/protocols/parameters/types.py +0 -0
  494. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/protocols/parameters/validation.py +0 -0
  495. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/protocols/parse.py +0 -0
  496. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/protocols/types.py +0 -0
  497. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/py.typed +0 -0
  498. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/resources/scripts/lpc21isp +0 -0
  499. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/resources/smoothie-edge-8414642.hex +0 -0
  500. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/simulate.py +0 -0
  501. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/system/__init__.py +0 -0
  502. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/system/camera.py +0 -0
  503. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/system/log_control.py +0 -0
  504. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/system/nmcli.py +0 -0
  505. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/system/resin.py +0 -0
  506. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/system/smoothie_update.py +0 -0
  507. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/system/wifi.py +0 -0
  508. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/tools/__init__.py +0 -0
  509. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/tools/args_handler.py +0 -0
  510. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/tools/write_pipette_memory.py +0 -0
  511. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/types.py +0 -0
  512. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/util/__init__.py +0 -0
  513. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/util/async_helpers.py +0 -0
  514. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/util/broker.py +0 -0
  515. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/util/change_notifier.py +0 -0
  516. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/util/entrypoint_util.py +0 -0
  517. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/util/get_union_elements.py +0 -0
  518. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/util/helpers.py +0 -0
  519. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/util/linal.py +0 -0
  520. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/util/logging_config.py +0 -0
  521. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons/util/performance_helpers.py +0 -0
  522. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons.egg-info/SOURCES.txt +0 -0
  523. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons.egg-info/dependency_links.txt +0 -0
  524. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons.egg-info/entry_points.txt +0 -0
  525. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/src/opentrons.egg-info/not-zip-safe +0 -0
  526. {opentrons-8.2.0a2 → opentrons-8.2.0a3}/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.0a2
3
+ Version: 8.2.0a3
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.0a2
24
+ Requires-Dist: opentrons-shared-data==8.2.0a3
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.0a2; extra == "ot2-hardware"
37
+ Requires-Dist: opentrons-hardware==8.2.0a3; extra == "ot2-hardware"
38
38
  Provides-Extra: flex-hardware
39
- Requires-Dist: opentrons-hardware[FLEX]==8.2.0a2; extra == "flex-hardware"
39
+ Requires-Dist: opentrons-hardware[FLEX]==8.2.0a3; extra == "flex-hardware"
40
40
 
41
41
  .. _Full API Documentation: http://docs.opentrons.com
42
42
 
@@ -23,7 +23,8 @@ from opentrons.hardware_control.modules.errors import AbsorbanceReaderDisconnect
23
23
 
24
24
 
25
25
  SN_PARSER = re.compile(r'ATTRS{serial}=="(?P<serial>.+?)"')
26
- VERSION_PARSER = re.compile(r"Absorbance (?P<version>V\d+\.\d+\.\d+)")
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+$))")
27
28
  SERIAL_PARSER = re.compile(r"(?P<serial>(OPT|BYO)[A-Z]{3}[0-9]+)")
28
29
 
29
30
 
@@ -156,10 +157,10 @@ class AsyncByonoy:
156
157
  func=partial(self._interface.get_device_information, handle),
157
158
  )
158
159
  self._raise_if_error(err.name, f"Error getting device information: {err}")
159
- serial_match = SERIAL_PARSER.fullmatch(device_info.sn)
160
- version_match = VERSION_PARSER.match(device_info.version)
160
+ serial_match = SERIAL_PARSER.match(device_info.sn)
161
+ version_match = VERSION_PARSER.search(device_info.version)
161
162
  serial = serial_match["serial"].strip() if serial_match else "OPTMAA00000"
162
- version = version_match["version"].lower() if version_match else "v0.0.0"
163
+ version = version_match["version"].lower() if version_match else "v0"
163
164
  info = {
164
165
  "serial": serial,
165
166
  "version": version,
@@ -652,6 +652,7 @@ _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,
655
656
  }
656
657
 
657
658
 
@@ -312,6 +312,8 @@ 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)
315
317
  self._device_info = await self._driver.get_device_info()
316
318
  await self._poller.start()
317
319
  self._updating = False
@@ -625,6 +625,8 @@ 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
628
630
 
629
631
 
630
632
  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 Reader Module.
994
+ """An object representing a connected Absorbance Plate 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,17 +1009,21 @@ class AbsorbanceReaderContext(ModuleContext):
1009
1009
 
1010
1010
  @requires_version(2, 21)
1011
1011
  def close_lid(self) -> None:
1012
- """Close the lid of the Absorbance Reader."""
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
+ """
1013
1017
  self._core.close_lid()
1014
1018
 
1015
1019
  @requires_version(2, 21)
1016
1020
  def open_lid(self) -> None:
1017
- """Open the lid of the Absorbance Reader."""
1021
+ """Use the Flex Gripper to open the lid of the Absorbance Plate Reader."""
1018
1022
  self._core.open_lid()
1019
1023
 
1020
1024
  @requires_version(2, 21)
1021
1025
  def is_lid_on(self) -> bool:
1022
- """Return ``True`` if the Absorbance Reader's lid is currently closed."""
1026
+ """Return ``True`` if the Absorbance Plate Reader's lid is currently closed."""
1023
1027
  return self._core.is_lid_on()
1024
1028
 
1025
1029
  @requires_version(2, 21)
@@ -1029,19 +1033,28 @@ class AbsorbanceReaderContext(ModuleContext):
1029
1033
  wavelengths: List[int],
1030
1034
  reference_wavelength: Optional[int] = None,
1031
1035
  ) -> None:
1032
- """Take a zero reading on the Absorbance Plate Reader Module.
1036
+ """Prepare the Absorbance Plate Reader to read a plate.
1037
+
1038
+ See :ref:`absorbance-initialization` for examples.
1033
1039
 
1034
1040
  :param mode: Either ``"single"`` or ``"multi"``.
1035
1041
 
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.
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.
1045
1058
  """
1046
1059
  self._core.initialize(
1047
1060
  mode, wavelengths, reference_wavelength=reference_wavelength
@@ -1051,16 +1064,33 @@ class AbsorbanceReaderContext(ModuleContext):
1051
1064
  def read(
1052
1065
  self, export_filename: Optional[str] = None
1053
1066
  ) -> Dict[int, Dict[str, float]]:
1054
- """Initiate read on the Absorbance Reader.
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.
1055
1083
 
1056
- Returns a dictionary of wavelengths to dictionary of values ordered by well name.
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``.
1057
1091
 
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.
1092
+ See :ref:`absorbance-csv` for information on working with these CSV files.
1062
1093
 
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".
1094
+ :returns: A dictionary of wavelengths to dictionary of values ordered by well name.
1065
1095
  """
1066
1096
  return self._core.read(filename=export_filename)
@@ -83,10 +83,11 @@ 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
+
86
88
  ready_to_aspirate = self._pipetting.get_is_ready_to_aspirate(
87
89
  pipette_id=params.pipetteId,
88
90
  )
89
-
90
91
  if not ready_to_aspirate:
91
92
  raise PipetteNotReadyToAspirateError(
92
93
  "Pipette cannot aspirate in place because of a previous blow out."
@@ -94,11 +95,10 @@ class AspirateInPlaceImplementation(
94
95
  " so the plunger can be reset in a known safe position."
95
96
  )
96
97
 
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)
99
100
 
100
101
  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,7 +185,9 @@ class BaseCommand(
185
185
  )
186
186
  error: Union[
187
187
  _ErrorT,
188
- # ErrorOccurrence here is for undefined errors not captured by _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.
189
191
  ErrorOccurrence,
190
192
  None,
191
193
  ] = 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)
79
80
  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,6 +145,7 @@ class DropTipImplementation(AbstractCommandImpl[DropTipParams, _ExecuteReturn]):
145
145
  error=exception,
146
146
  )
147
147
  ],
148
+ errorInfo={"retryLocation": position},
148
149
  )
149
150
  state_update_if_false_positive = update_types.StateUpdate()
150
151
  state_update_if_false_positive.update_pipette_tip_state(
@@ -165,7 +166,7 @@ class DropTipImplementation(AbstractCommandImpl[DropTipParams, _ExecuteReturn]):
165
166
  )
166
167
 
167
168
 
168
- class DropTip(BaseCommand[DropTipParams, DropTipResult, ErrorOccurrence]):
169
+ class DropTip(BaseCommand[DropTipParams, DropTipResult, TipPhysicallyAttachedError]):
169
170
  """Drop tip command model."""
170
171
 
171
172
  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
21
+ from ..execution import TipHandler, GantryMover
22
22
 
23
23
 
24
24
  DropTipInPlaceCommandType = Literal["dropTipInPlace"]
@@ -57,15 +57,19 @@ class DropTipInPlaceImplementation(
57
57
  self,
58
58
  tip_handler: TipHandler,
59
59
  model_utils: ModelUtils,
60
+ gantry_mover: GantryMover,
60
61
  **kwargs: object,
61
62
  ) -> None:
62
63
  self._tip_handler = tip_handler
63
64
  self._model_utils = model_utils
65
+ self._gantry_mover = gantry_mover
64
66
 
65
67
  async def execute(self, params: DropTipInPlaceParams) -> _ExecuteReturn:
66
68
  """Drop a tip using the requested pipette."""
67
69
  state_update = update_types.StateUpdate()
68
70
 
71
+ retry_location = await self._gantry_mover.get_position(params.pipetteId)
72
+
69
73
  try:
70
74
  await self._tip_handler.drop_tip(
71
75
  pipette_id=params.pipetteId, home_after=params.homeAfter
@@ -85,6 +89,7 @@ class DropTipInPlaceImplementation(
85
89
  error=exception,
86
90
  )
87
91
  ],
92
+ errorInfo={"retryLocation": retry_location},
88
93
  )
89
94
  return DefinedErrorData(
90
95
  public=error,
@@ -99,7 +104,7 @@ class DropTipInPlaceImplementation(
99
104
 
100
105
 
101
106
  class DropTipInPlace(
102
- BaseCommand[DropTipInPlaceParams, DropTipInPlaceResult, ErrorOccurrence]
107
+ BaseCommand[DropTipInPlaceParams, DropTipInPlaceResult, TipPhysicallyAttachedError]
103
108
  ):
104
109
  """Drop tip in place command model."""
105
110
 
@@ -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,7 +148,12 @@ class DestinationPositionResult(BaseModel):
148
148
 
149
149
 
150
150
  class ErrorLocationInfo(TypedDict):
151
- """Holds a retry location for in-place error recovery."""
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
+ """
152
157
 
153
158
  retryLocation: Tuple[float, float, float]
154
159
 
@@ -201,3 +206,5 @@ class TipPhysicallyAttachedError(ErrorOccurrence):
201
206
 
202
207
  errorCode: str = ErrorCodes.TIP_DROP_FAILED.value.code
203
208
  detail: str = ErrorCodes.TIP_DROP_FAILED.value.detail
209
+
210
+ errorInfo: ErrorLocationInfo
@@ -12,8 +12,6 @@ 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
17
15
  class ErrorOccurrence(BaseModel):
18
16
  """An occurrence of a specific error during protocol execution."""
19
17
 
@@ -44,8 +42,15 @@ class ErrorOccurrence(BaseModel):
44
42
  id: str = Field(..., description="Unique identifier of this error occurrence.")
45
43
  createdAt: datetime = Field(..., description="When the error occurred.")
46
44
 
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.
47
50
  isDefined: bool = Field(
48
- default=False, # default=False for database backwards compatibility.
51
+ # default=False for database backwards compatibility, so we can parse objects
52
+ # serialized before isDefined existed.
53
+ default=False,
49
54
  description=dedent(
50
55
  """\
51
56
  Whether this error is *defined.*
@@ -418,6 +418,21 @@ 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
+
421
436
  def set_error_recovery_policy(self, policy: ErrorRecoveryPolicy) -> None:
422
437
  """Create error recovery policy for the run."""
423
438
  self._protocol_engine.set_error_recovery_policy(policy)
@@ -60,7 +60,9 @@ class CSVParameter:
60
60
  as appropriate.
61
61
 
62
62
  :param detect_dialect: If ``True``, examine the file and try to assign it a
63
- :py:class:`csv.Dialect` to improve parsing behavior.
63
+ :py:class:`csv.Dialect` to improve parsing behavior. Set this to ``False``
64
+ when using the file output of :py:meth:`.AbsorbanceReaderContext.read` as
65
+ a runtime parameter.
64
66
  :param kwargs: For advanced CSV handling, you can pass any of the
65
67
  `formatting parameters <https://docs.python.org/3/library/csv.html#csv-fmt-params>`_
66
68
  accepted by :py:func:`csv.reader` from the Python standard library.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: opentrons
3
- Version: 8.2.0a2
3
+ Version: 8.2.0a3
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.0a2
24
+ Requires-Dist: opentrons-shared-data==8.2.0a3
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.0a2; extra == "ot2-hardware"
37
+ Requires-Dist: opentrons-hardware==8.2.0a3; extra == "ot2-hardware"
38
38
  Provides-Extra: flex-hardware
39
- Requires-Dist: opentrons-hardware[FLEX]==8.2.0a2; extra == "flex-hardware"
39
+ Requires-Dist: opentrons-hardware[FLEX]==8.2.0a3; extra == "flex-hardware"
40
40
 
41
41
  .. _Full API Documentation: http://docs.opentrons.com
42
42
 
@@ -1,4 +1,4 @@
1
- opentrons-shared-data==8.2.0a2
1
+ opentrons-shared-data==8.2.0a3
2
2
  aionotify==0.3.1
3
3
  anyio<4.0.0,>=3.6.1
4
4
  jsonschema<4.18.0,>=3.0.1
@@ -14,7 +14,7 @@ packaging>=21.0
14
14
  importlib-metadata>=1.0
15
15
 
16
16
  [flex-hardware]
17
- opentrons-hardware[FLEX]==8.2.0a2
17
+ opentrons-hardware[FLEX]==8.2.0a3
18
18
 
19
19
  [ot2-hardware]
20
- opentrons-hardware==8.2.0a2
20
+ opentrons-hardware==8.2.0a3
File without changes
File without changes
File without changes
File without changes