opentrons 8.5.0a4__tar.gz → 8.5.0a6__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.
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/PKG-INFO +4 -4
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_api/_transfer_liquid_validation.py +29 -4
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_api/core/engine/instrument.py +162 -57
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_api/core/engine/transfer_components_executor.py +114 -40
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_api/core/instrument.py +9 -3
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_api/core/legacy/legacy_instrument_core.py +9 -3
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_api/core/legacy_simulator/legacy_instrument_core.py +9 -3
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_api/instrument_context.py +84 -16
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocols/advanced_control/transfers/transfer_liquid_utils.py +18 -18
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons.egg-info/PKG-INFO +4 -4
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons.egg-info/requires.txt +3 -3
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/MANIFEST.in +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/README.rst +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/setup.cfg +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/setup.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/__init__.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/_version.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/calibration_storage/__init__.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/calibration_storage/deck_configuration.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/calibration_storage/encoder_decoder.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/calibration_storage/file_operators.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/calibration_storage/helpers.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/calibration_storage/ot2/__init__.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/calibration_storage/ot2/deck_attitude.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/calibration_storage/ot2/mark_bad_calibration.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/calibration_storage/ot2/models/__init__.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/calibration_storage/ot2/models/v1.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/calibration_storage/ot2/pipette_offset.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/calibration_storage/ot2/tip_length.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/calibration_storage/ot3/__init__.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/calibration_storage/ot3/deck_attitude.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/calibration_storage/ot3/gripper_offset.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/calibration_storage/ot3/models/__init__.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/calibration_storage/ot3/models/v1.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/calibration_storage/ot3/module_offset.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/calibration_storage/ot3/pipette_offset.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/calibration_storage/types.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/cli/__init__.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/cli/__main__.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/cli/analyze.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/config/__init__.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/config/advanced_settings.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/config/defaults_ot2.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/config/defaults_ot3.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/config/feature_flags.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/config/gripper_config.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/config/reset.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/config/robot_configs.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/config/types.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/drivers/__init__.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/drivers/absorbance_reader/__init__.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/drivers/absorbance_reader/abstract.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/drivers/absorbance_reader/async_byonoy.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/drivers/absorbance_reader/driver.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/drivers/absorbance_reader/hid_protocol.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/drivers/absorbance_reader/simulator.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/drivers/asyncio/__init__.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/drivers/asyncio/communication/__init__.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/drivers/asyncio/communication/async_serial.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/drivers/asyncio/communication/errors.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/drivers/asyncio/communication/serial_connection.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/drivers/command_builder.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/drivers/flex_stacker/__init__.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/drivers/flex_stacker/abstract.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/drivers/flex_stacker/driver.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/drivers/flex_stacker/errors.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/drivers/flex_stacker/simulator.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/drivers/flex_stacker/types.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/drivers/flex_stacker/utils.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/drivers/heater_shaker/__init__.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/drivers/heater_shaker/abstract.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/drivers/heater_shaker/driver.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/drivers/heater_shaker/simulator.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/drivers/mag_deck/__init__.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/drivers/mag_deck/abstract.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/drivers/mag_deck/driver.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/drivers/mag_deck/simulator.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/drivers/rpi_drivers/__init__.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/drivers/rpi_drivers/dev_types.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/drivers/rpi_drivers/gpio.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/drivers/rpi_drivers/gpio_simulator.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/drivers/rpi_drivers/interfaces.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/drivers/rpi_drivers/types.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/drivers/rpi_drivers/usb.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/drivers/rpi_drivers/usb_simulator.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/drivers/serial_communication.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/drivers/smoothie_drivers/__init__.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/drivers/smoothie_drivers/connection.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/drivers/smoothie_drivers/constants.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/drivers/smoothie_drivers/driver_3_0.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/drivers/smoothie_drivers/errors.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/drivers/smoothie_drivers/parse_utils.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/drivers/smoothie_drivers/simulator.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/drivers/smoothie_drivers/types.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/drivers/temp_deck/__init__.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/drivers/temp_deck/abstract.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/drivers/temp_deck/driver.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/drivers/temp_deck/simulator.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/drivers/thermocycler/__init__.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/drivers/thermocycler/abstract.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/drivers/thermocycler/driver.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/drivers/thermocycler/simulator.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/drivers/types.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/drivers/utils.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/execute.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/hardware_control/__init__.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/hardware_control/__main__.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/hardware_control/adapters.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/hardware_control/api.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/hardware_control/backends/__init__.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/hardware_control/backends/controller.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/hardware_control/backends/errors.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/hardware_control/backends/estop_state.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/hardware_control/backends/flex_protocol.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/hardware_control/backends/ot3controller.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/hardware_control/backends/ot3simulator.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/hardware_control/backends/ot3utils.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/hardware_control/backends/simulator.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/hardware_control/backends/status_bar_state.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/hardware_control/backends/subsystem_manager.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/hardware_control/backends/tip_presence_manager.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/hardware_control/backends/types.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/hardware_control/constants.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/hardware_control/dev_types.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/hardware_control/emulation/__init__.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/hardware_control/emulation/abstract_emulator.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/hardware_control/emulation/app.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/hardware_control/emulation/connection_handler.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/hardware_control/emulation/heater_shaker.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/hardware_control/emulation/magdeck.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/hardware_control/emulation/module_server/__init__.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/hardware_control/emulation/module_server/client.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/hardware_control/emulation/module_server/helpers.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/hardware_control/emulation/module_server/models.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/hardware_control/emulation/module_server/server.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/hardware_control/emulation/parser.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/hardware_control/emulation/proxy.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/hardware_control/emulation/run_emulator.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/hardware_control/emulation/scripts/__init__.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/hardware_control/emulation/scripts/run_app.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/hardware_control/emulation/scripts/run_module_emulator.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/hardware_control/emulation/scripts/run_smoothie.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/hardware_control/emulation/settings.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/hardware_control/emulation/simulations.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/hardware_control/emulation/smoothie.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/hardware_control/emulation/tempdeck.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/hardware_control/emulation/thermocycler.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/hardware_control/emulation/types.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/hardware_control/emulation/util.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/hardware_control/errors.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/hardware_control/execution_manager.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/hardware_control/instruments/__init__.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/hardware_control/instruments/instrument_abc.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/hardware_control/instruments/ot2/__init__.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/hardware_control/instruments/ot2/instrument_calibration.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/hardware_control/instruments/ot2/pipette.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/hardware_control/instruments/ot2/pipette_handler.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/hardware_control/instruments/ot3/__init__.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/hardware_control/instruments/ot3/gripper.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/hardware_control/instruments/ot3/gripper_handler.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/hardware_control/instruments/ot3/instrument_calibration.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/hardware_control/instruments/ot3/pipette.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/hardware_control/instruments/ot3/pipette_handler.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/hardware_control/module_control.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/hardware_control/modules/__init__.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/hardware_control/modules/absorbance_reader.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/hardware_control/modules/errors.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/hardware_control/modules/flex_stacker.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/hardware_control/modules/heater_shaker.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/hardware_control/modules/lid_temp_status.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/hardware_control/modules/magdeck.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/hardware_control/modules/mod_abc.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/hardware_control/modules/module_calibration.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/hardware_control/modules/plate_temp_status.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/hardware_control/modules/tempdeck.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/hardware_control/modules/thermocycler.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/hardware_control/modules/types.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/hardware_control/modules/update.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/hardware_control/modules/utils.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/hardware_control/motion_utilities.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/hardware_control/nozzle_manager.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/hardware_control/ot3_calibration.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/hardware_control/ot3api.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/hardware_control/pause_manager.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/hardware_control/poller.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/hardware_control/protocols/__init__.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/hardware_control/protocols/asyncio_configurable.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/hardware_control/protocols/calibratable.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/hardware_control/protocols/chassis_accessory_manager.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/hardware_control/protocols/configurable.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/hardware_control/protocols/event_sourcer.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/hardware_control/protocols/execution_controllable.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/hardware_control/protocols/flex_calibratable.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/hardware_control/protocols/flex_instrument_configurer.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/hardware_control/protocols/gripper_controller.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/hardware_control/protocols/hardware_manager.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/hardware_control/protocols/identifiable.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/hardware_control/protocols/instrument_configurer.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/hardware_control/protocols/liquid_handler.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/hardware_control/protocols/module_provider.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/hardware_control/protocols/motion_controller.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/hardware_control/protocols/position_estimator.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/hardware_control/protocols/simulatable.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/hardware_control/protocols/stoppable.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/hardware_control/protocols/types.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/hardware_control/robot_calibration.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/hardware_control/scripts/__init__.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/hardware_control/scripts/gripper_control.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/hardware_control/scripts/repl.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/hardware_control/scripts/tc_control.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/hardware_control/simulator_setup.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/hardware_control/thread_manager.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/hardware_control/threaded_async_lock.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/hardware_control/types.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/hardware_control/util.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/legacy_broker.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/legacy_commands/__init__.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/legacy_commands/commands.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/legacy_commands/helpers.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/legacy_commands/module_commands.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/legacy_commands/protocol_commands.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/legacy_commands/publisher.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/legacy_commands/robot_commands.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/legacy_commands/types.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/motion_planning/__init__.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/motion_planning/adjacent_slots_getters.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/motion_planning/deck_conflict.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/motion_planning/errors.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/motion_planning/types.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/motion_planning/waypoints.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/ordered_set.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_api/__init__.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_api/_liquid.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_api/_liquid_properties.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_api/_nozzle_layout.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_api/_parameter_context.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_api/_parameters.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_api/_types.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_api/config.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_api/core/__init__.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_api/core/common.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_api/core/core_map.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_api/core/engine/__init__.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_api/core/engine/deck_conflict.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_api/core/engine/exceptions.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_api/core/engine/labware.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_api/core/engine/load_labware_params.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_api/core/engine/module_core.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_api/core/engine/overlap_versions.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_api/core/engine/pipette_movement_conflict.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_api/core/engine/point_calculations.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_api/core/engine/protocol.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_api/core/engine/robot.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_api/core/engine/stringify.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_api/core/engine/well.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_api/core/labware.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_api/core/legacy/__init__.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_api/core/legacy/deck.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_api/core/legacy/labware_offset_provider.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_api/core/legacy/legacy_labware_core.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_api/core/legacy/legacy_module_core.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_api/core/legacy/legacy_protocol_core.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_api/core/legacy/legacy_well_core.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_api/core/legacy/load_info.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_api/core/legacy/module_geometry.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_api/core/legacy/well_geometry.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_api/core/legacy_simulator/__init__.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_api/core/legacy_simulator/legacy_protocol_core.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_api/core/module.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_api/core/protocol.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_api/core/robot.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_api/core/well.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_api/core/well_grid.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_api/create_protocol_context.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_api/deck.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_api/disposal_locations.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_api/labware.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_api/module_contexts.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_api/module_validation_and_errors.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_api/protocol_context.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_api/robot_context.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_api/validation.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_engine/__init__.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_engine/actions/__init__.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_engine/actions/action_dispatcher.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_engine/actions/action_handler.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_engine/actions/actions.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_engine/actions/get_state_update.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_engine/clients/__init__.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_engine/clients/sync_client.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_engine/clients/transports.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_engine/commands/__init__.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_engine/commands/absorbance_reader/__init__.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_engine/commands/absorbance_reader/close_lid.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_engine/commands/absorbance_reader/initialize.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_engine/commands/absorbance_reader/open_lid.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_engine/commands/absorbance_reader/read.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_engine/commands/air_gap_in_place.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_engine/commands/aspirate.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_engine/commands/aspirate_in_place.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_engine/commands/aspirate_while_tracking.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_engine/commands/blow_out.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_engine/commands/blow_out_in_place.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_engine/commands/calibration/__init__.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_engine/commands/calibration/calibrate_gripper.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_engine/commands/calibration/calibrate_module.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_engine/commands/calibration/calibrate_pipette.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_engine/commands/calibration/move_to_maintenance_position.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_engine/commands/command.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_engine/commands/command_unions.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_engine/commands/comment.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_engine/commands/configure_for_volume.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_engine/commands/configure_nozzle_layout.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_engine/commands/custom.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_engine/commands/dispense.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_engine/commands/dispense_in_place.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_engine/commands/dispense_while_tracking.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_engine/commands/drop_tip.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_engine/commands/drop_tip_in_place.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_engine/commands/flex_stacker/__init__.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_engine/commands/flex_stacker/close_latch.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_engine/commands/flex_stacker/common.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_engine/commands/flex_stacker/empty.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_engine/commands/flex_stacker/fill.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_engine/commands/flex_stacker/open_latch.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_engine/commands/flex_stacker/prepare_shuttle.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_engine/commands/flex_stacker/retrieve.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_engine/commands/flex_stacker/set_stored_labware.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_engine/commands/flex_stacker/store.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_engine/commands/generate_command_schema.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_engine/commands/get_next_tip.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_engine/commands/get_tip_presence.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_engine/commands/hash_command_params.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_engine/commands/heater_shaker/__init__.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_engine/commands/heater_shaker/close_labware_latch.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_engine/commands/heater_shaker/deactivate_heater.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_engine/commands/heater_shaker/deactivate_shaker.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_engine/commands/heater_shaker/open_labware_latch.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_engine/commands/heater_shaker/set_and_wait_for_shake_speed.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_engine/commands/heater_shaker/set_target_temperature.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_engine/commands/heater_shaker/wait_for_temperature.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_engine/commands/home.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_engine/commands/labware_handling_common.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_engine/commands/liquid_probe.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_engine/commands/load_labware.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_engine/commands/load_lid.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_engine/commands/load_lid_stack.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_engine/commands/load_liquid.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_engine/commands/load_liquid_class.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_engine/commands/load_module.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_engine/commands/load_pipette.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_engine/commands/magnetic_module/__init__.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_engine/commands/magnetic_module/disengage.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_engine/commands/magnetic_module/engage.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_engine/commands/move_labware.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_engine/commands/move_relative.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_engine/commands/move_to_addressable_area.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_engine/commands/move_to_addressable_area_for_drop_tip.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_engine/commands/move_to_coordinates.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_engine/commands/move_to_well.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_engine/commands/movement_common.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_engine/commands/pick_up_tip.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_engine/commands/pipetting_common.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_engine/commands/prepare_to_aspirate.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_engine/commands/pressure_dispense.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_engine/commands/reload_labware.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_engine/commands/retract_axis.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_engine/commands/robot/__init__.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_engine/commands/robot/close_gripper_jaw.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_engine/commands/robot/common.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_engine/commands/robot/move_axes_relative.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_engine/commands/robot/move_axes_to.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_engine/commands/robot/move_to.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_engine/commands/robot/open_gripper_jaw.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_engine/commands/save_position.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_engine/commands/seal_pipette_to_tip.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_engine/commands/set_rail_lights.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_engine/commands/set_status_bar.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_engine/commands/temperature_module/__init__.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_engine/commands/temperature_module/deactivate.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_engine/commands/temperature_module/set_target_temperature.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_engine/commands/temperature_module/wait_for_temperature.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_engine/commands/thermocycler/__init__.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_engine/commands/thermocycler/close_lid.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_engine/commands/thermocycler/deactivate_block.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_engine/commands/thermocycler/deactivate_lid.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_engine/commands/thermocycler/open_lid.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_engine/commands/thermocycler/run_extended_profile.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_engine/commands/thermocycler/run_profile.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_engine/commands/thermocycler/set_target_block_temperature.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_engine/commands/thermocycler/set_target_lid_temperature.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_engine/commands/thermocycler/wait_for_block_temperature.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_engine/commands/thermocycler/wait_for_lid_temperature.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_engine/commands/touch_tip.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_engine/commands/unsafe/__init__.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_engine/commands/unsafe/unsafe_blow_out_in_place.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_engine/commands/unsafe/unsafe_drop_tip_in_place.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_engine/commands/unsafe/unsafe_engage_axes.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_engine/commands/unsafe/unsafe_place_labware.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_engine/commands/unsafe/unsafe_ungrip_labware.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_engine/commands/unsafe/update_position_estimators.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_engine/commands/unseal_pipette_from_tip.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_engine/commands/verify_tip_presence.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_engine/commands/wait_for_duration.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_engine/commands/wait_for_resume.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_engine/create_protocol_engine.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_engine/engine_support.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_engine/error_recovery_policy.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_engine/errors/__init__.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_engine/errors/error_occurrence.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_engine/errors/exceptions.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_engine/execution/__init__.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_engine/execution/command_executor.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_engine/execution/create_queue_worker.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_engine/execution/door_watcher.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_engine/execution/equipment.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_engine/execution/error_recovery_hardware_state_synchronizer.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_engine/execution/gantry_mover.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_engine/execution/hardware_stopper.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_engine/execution/heater_shaker_movement_flagger.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_engine/execution/labware_movement.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_engine/execution/movement.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_engine/execution/pipetting.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_engine/execution/queue_worker.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_engine/execution/rail_lights.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_engine/execution/run_control.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_engine/execution/status_bar.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_engine/execution/thermocycler_movement_flagger.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_engine/execution/thermocycler_plate_lifter.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_engine/execution/tip_handler.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_engine/labware_offset_standardization.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_engine/notes/__init__.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_engine/notes/notes.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_engine/plugins.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_engine/protocol_engine.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_engine/resources/__init__.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_engine/resources/deck_configuration_provider.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_engine/resources/deck_data_provider.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_engine/resources/file_provider.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_engine/resources/fixture_validation.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_engine/resources/labware_data_provider.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_engine/resources/labware_validation.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_engine/resources/model_utils.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_engine/resources/module_data_provider.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_engine/resources/ot3_validation.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_engine/resources/pipette_data_provider.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_engine/slot_standardization.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_engine/state/__init__.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_engine/state/_abstract_store.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_engine/state/_move_types.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_engine/state/_well_math.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_engine/state/addressable_areas.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_engine/state/command_history.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_engine/state/commands.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_engine/state/config.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_engine/state/files.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_engine/state/fluid_stack.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_engine/state/frustum_helpers.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_engine/state/geometry.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_engine/state/labware.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_engine/state/liquid_classes.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_engine/state/liquids.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_engine/state/module_substates/__init__.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_engine/state/module_substates/absorbance_reader_substate.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_engine/state/module_substates/flex_stacker_substate.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_engine/state/module_substates/heater_shaker_module_substate.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_engine/state/module_substates/magnetic_block_substate.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_engine/state/module_substates/magnetic_module_substate.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_engine/state/module_substates/temperature_module_substate.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_engine/state/module_substates/thermocycler_module_substate.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_engine/state/modules.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_engine/state/motion.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_engine/state/pipettes.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_engine/state/state.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_engine/state/state_summary.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_engine/state/tips.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_engine/state/update_types.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_engine/state/wells.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_engine/types/__init__.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_engine/types/automatic_tip_selection.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_engine/types/command_annotations.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_engine/types/deck_configuration.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_engine/types/execution.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_engine/types/hardware_passthrough.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_engine/types/instrument.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_engine/types/instrument_sensors.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_engine/types/labware.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_engine/types/labware_movement.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_engine/types/labware_offset_location.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_engine/types/labware_offset_vector.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_engine/types/liquid.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_engine/types/liquid_class.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_engine/types/liquid_handling.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_engine/types/liquid_level_detection.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_engine/types/location.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_engine/types/module.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_engine/types/partial_tip_configuration.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_engine/types/run_time_parameters.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_engine/types/tip.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_engine/types/util.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_engine/types/well_position.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_reader/__init__.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_reader/extract_labware_definitions.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_reader/file_format_validator.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_reader/file_hasher.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_reader/file_identifier.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_reader/file_reader_writer.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_reader/input_file.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_reader/protocol_files_invalid_error.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_reader/protocol_reader.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_reader/protocol_source.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_reader/role_analyzer.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_runner/__init__.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_runner/create_simulating_orchestrator.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_runner/json_file_reader.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_runner/json_translator.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_runner/legacy_command_mapper.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_runner/legacy_context_plugin.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_runner/protocol_runner.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_runner/python_protocol_wrappers.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_runner/run_orchestrator.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_runner/task_queue.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocols/__init__.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocols/advanced_control/__init__.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocols/advanced_control/common.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocols/advanced_control/mix.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocols/advanced_control/transfers/__init__.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocols/advanced_control/transfers/common.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocols/advanced_control/transfers/transfer.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocols/api_support/__init__.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocols/api_support/constants.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocols/api_support/deck_type.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocols/api_support/definitions.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocols/api_support/instrument.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocols/api_support/labware_like.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocols/api_support/tip_tracker.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocols/api_support/types.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocols/api_support/util.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocols/bundle.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocols/duration/__init__.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocols/duration/errors.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocols/duration/estimator.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocols/execution/__init__.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocols/execution/dev_types.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocols/execution/errors.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocols/execution/execute.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocols/execution/execute_json_v3.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocols/execution/execute_json_v4.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocols/execution/execute_json_v5.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocols/execution/execute_python.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocols/execution/json_dispatchers.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocols/execution/types.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocols/geometry/__init__.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocols/geometry/labware_geometry.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocols/geometry/planning.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocols/labware.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocols/models/__init__.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocols/models/json_protocol.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocols/parameters/__init__.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocols/parameters/csv_parameter_definition.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocols/parameters/csv_parameter_interface.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocols/parameters/exceptions.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocols/parameters/parameter_definition.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocols/parameters/types.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocols/parameters/validation.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocols/parse.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocols/types.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/py.typed +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/resources/scripts/lpc21isp +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/resources/smoothie-edge-8414642.hex +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/simulate.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/system/__init__.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/system/camera.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/system/log_control.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/system/nmcli.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/system/resin.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/system/smoothie_update.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/system/wifi.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/tools/__init__.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/tools/args_handler.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/tools/write_pipette_memory.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/types.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/util/__init__.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/util/async_helpers.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/util/broker.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/util/change_notifier.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/util/entrypoint_util.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/util/get_union_elements.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/util/helpers.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/util/linal.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/util/logging_config.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/util/logging_queue_handler.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/util/performance_helpers.py +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons.egg-info/SOURCES.txt +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons.egg-info/dependency_links.txt +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons.egg-info/entry_points.txt +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons.egg-info/not-zip-safe +0 -0
- {opentrons-8.5.0a4 → opentrons-8.5.0a6}/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.5.
|
|
3
|
+
Version: 8.5.0a6
|
|
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.5.
|
|
24
|
+
Requires-Dist: opentrons-shared-data==8.5.0a6
|
|
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
|
|
@@ -35,9 +35,9 @@ Requires-Dist: pyusb==1.2.1
|
|
|
35
35
|
Requires-Dist: importlib-metadata>=1.0; python_version < "3.8"
|
|
36
36
|
Requires-Dist: packaging>=21.0
|
|
37
37
|
Provides-Extra: ot2-hardware
|
|
38
|
-
Requires-Dist: opentrons-hardware==8.5.
|
|
38
|
+
Requires-Dist: opentrons-hardware==8.5.0a6; extra == "ot2-hardware"
|
|
39
39
|
Provides-Extra: flex-hardware
|
|
40
|
-
Requires-Dist: opentrons-hardware[FLEX]==8.5.
|
|
40
|
+
Requires-Dist: opentrons-hardware[FLEX]==8.5.0a6; extra == "flex-hardware"
|
|
41
41
|
|
|
42
42
|
.. _Full API Documentation: http://docs.opentrons.com
|
|
43
43
|
|
{opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_api/_transfer_liquid_validation.py
RENAMED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
from dataclasses import dataclass
|
|
2
|
-
from typing import List, Union, Sequence, Optional
|
|
2
|
+
from typing import List, Union, Sequence, Optional, Tuple
|
|
3
3
|
|
|
4
4
|
from opentrons.types import Location, NozzleMapInterface
|
|
5
5
|
from opentrons.protocols.api_support import instrument
|
|
@@ -13,6 +13,7 @@ from opentrons.protocols.advanced_control.transfers.common import (
|
|
|
13
13
|
|
|
14
14
|
from .disposal_locations import TrashBin, WasteChute
|
|
15
15
|
from .labware import Labware, Well
|
|
16
|
+
from .core.common import WellCore
|
|
16
17
|
from . import validation
|
|
17
18
|
|
|
18
19
|
|
|
@@ -24,13 +25,14 @@ class TransferInfo:
|
|
|
24
25
|
tip_policy: TransferTipPolicyV2
|
|
25
26
|
tip_racks: List[Labware]
|
|
26
27
|
trash_location: Union[Location, TrashBin, WasteChute]
|
|
28
|
+
last_tip_location: Optional[Tuple[Location, WellCore]]
|
|
27
29
|
|
|
28
30
|
|
|
29
31
|
def verify_and_normalize_transfer_args(
|
|
30
32
|
source: Union[Well, Sequence[Well], Sequence[Sequence[Well]]],
|
|
31
33
|
dest: Union[Well, Sequence[Well], Sequence[Sequence[Well]], TrashBin, WasteChute],
|
|
32
34
|
tip_policy: TransferTipPolicyV2Type,
|
|
33
|
-
|
|
35
|
+
last_tip_well: Optional[Well],
|
|
34
36
|
tip_racks: List[Labware],
|
|
35
37
|
nozzle_map: NozzleMapInterface,
|
|
36
38
|
group_wells_for_multi_channel: bool,
|
|
@@ -59,14 +61,14 @@ def verify_and_normalize_transfer_args(
|
|
|
59
61
|
|
|
60
62
|
valid_new_tip = validation.ensure_new_tip_policy(tip_policy)
|
|
61
63
|
if valid_new_tip == TransferTipPolicyV2.NEVER:
|
|
62
|
-
if
|
|
64
|
+
if last_tip_well is None:
|
|
63
65
|
raise RuntimeError(
|
|
64
66
|
"Pipette has no tip attached to perform transfer."
|
|
65
67
|
" Either do a pick_up_tip beforehand or specify a new_tip parameter"
|
|
66
68
|
" of 'once' or 'always'."
|
|
67
69
|
)
|
|
68
70
|
else:
|
|
69
|
-
valid_tip_racks = [
|
|
71
|
+
valid_tip_racks = [last_tip_well.parent]
|
|
70
72
|
else:
|
|
71
73
|
valid_tip_racks = tip_racks
|
|
72
74
|
if current_volume != 0:
|
|
@@ -86,10 +88,33 @@ def verify_and_normalize_transfer_args(
|
|
|
86
88
|
trash_location=_trash_location
|
|
87
89
|
)
|
|
88
90
|
|
|
91
|
+
if last_tip_well is not None:
|
|
92
|
+
parent_tip_rack = last_tip_well.parent
|
|
93
|
+
last_tip_location = (
|
|
94
|
+
Location(last_tip_well.top().point, parent_tip_rack),
|
|
95
|
+
last_tip_well._core,
|
|
96
|
+
)
|
|
97
|
+
else:
|
|
98
|
+
last_tip_location = None
|
|
99
|
+
|
|
89
100
|
return TransferInfo(
|
|
90
101
|
source=flat_sources_list,
|
|
91
102
|
dest=flat_dests_list if not isinstance(dest, (TrashBin, WasteChute)) else dest,
|
|
92
103
|
tip_policy=valid_new_tip,
|
|
93
104
|
tip_racks=valid_tip_racks,
|
|
94
105
|
trash_location=valid_trash_location,
|
|
106
|
+
last_tip_location=last_tip_location,
|
|
95
107
|
)
|
|
108
|
+
|
|
109
|
+
|
|
110
|
+
def resolve_keep_last_tip(
|
|
111
|
+
keep_last_tip: Optional[bool], tip_strategy: TransferTipPolicyV2
|
|
112
|
+
) -> bool:
|
|
113
|
+
"""Resolve the liquid class transfer argument `keep_last_tip`
|
|
114
|
+
|
|
115
|
+
If set to a boolean value, maintains that setting. Otherwise, default to
|
|
116
|
+
`True` if tip policy is `NEVER`, otherwise default to `False`
|
|
117
|
+
"""
|
|
118
|
+
if keep_last_tip is not None:
|
|
119
|
+
return keep_last_tip
|
|
120
|
+
return tip_strategy == TransferTipPolicyV2.NEVER
|
{opentrons-8.5.0a4 → opentrons-8.5.0a6}/src/opentrons/protocol_api/core/engine/instrument.py
RENAMED
|
@@ -1205,7 +1205,9 @@ class InstrumentCore(AbstractInstrument[WellCore, LabwareCore]):
|
|
|
1205
1205
|
starting_tip: Optional[WellCore],
|
|
1206
1206
|
trash_location: Union[Location, TrashBin, WasteChute],
|
|
1207
1207
|
return_tip: bool,
|
|
1208
|
-
|
|
1208
|
+
keep_last_tip: bool,
|
|
1209
|
+
last_tip_location: Optional[Tuple[Location, WellCore]],
|
|
1210
|
+
) -> Optional[Tuple[Location, WellCore]]:
|
|
1209
1211
|
"""Execute transfer using liquid class properties.
|
|
1210
1212
|
|
|
1211
1213
|
Args:
|
|
@@ -1219,8 +1221,18 @@ class InstrumentCore(AbstractInstrument[WellCore, LabwareCore]):
|
|
|
1219
1221
|
types.Location is only necessary for saving the last accessed location.
|
|
1220
1222
|
new_tip: Whether the transfer should use a new tip 'once', 'never', 'always',
|
|
1221
1223
|
or 'per source'.
|
|
1222
|
-
|
|
1223
|
-
|
|
1224
|
+
tip_racks: List of tipracks that the transfer will pick up tips from, represented
|
|
1225
|
+
as tuples of types.Location and WellCore.
|
|
1226
|
+
starting_tip: The user-chosen starting tip to use when deciding what tip to pick
|
|
1227
|
+
up, if the user has set it.
|
|
1228
|
+
trash_location: The chosen trash container to drop tips in and dispose liquid in.
|
|
1229
|
+
return_tip: If `True`, return tips to the tip rack location they were picked up from,
|
|
1230
|
+
otherwise drop in `trash_location`
|
|
1231
|
+
keep_last_tip: When set to `True`, do not drop the final tip used in the transfer.
|
|
1232
|
+
last_tip_location: If a tip is already attached, this will be the tiprack and well it was
|
|
1233
|
+
picked up from, represented as a tuple of types.Location and WellCore.
|
|
1234
|
+
Used so a tip can be returned if it was picked up outside this function
|
|
1235
|
+
as could be the case for a new_tip of `never`.
|
|
1224
1236
|
"""
|
|
1225
1237
|
if not tip_racks:
|
|
1226
1238
|
raise RuntimeError(
|
|
@@ -1272,14 +1284,15 @@ class InstrumentCore(AbstractInstrument[WellCore, LabwareCore]):
|
|
|
1272
1284
|
)
|
|
1273
1285
|
)
|
|
1274
1286
|
|
|
1275
|
-
|
|
1287
|
+
last_tip = last_tip_location
|
|
1276
1288
|
|
|
1277
1289
|
def _drop_tip() -> None:
|
|
1278
1290
|
if return_tip:
|
|
1279
|
-
assert
|
|
1291
|
+
assert last_tip is not None
|
|
1292
|
+
_, tip_well = last_tip
|
|
1280
1293
|
self.drop_tip(
|
|
1281
1294
|
location=None,
|
|
1282
|
-
well_core=
|
|
1295
|
+
well_core=tip_well,
|
|
1283
1296
|
home_after=False,
|
|
1284
1297
|
alternate_drop_location=False,
|
|
1285
1298
|
)
|
|
@@ -1297,7 +1310,7 @@ class InstrumentCore(AbstractInstrument[WellCore, LabwareCore]):
|
|
|
1297
1310
|
alternate_drop_location=True,
|
|
1298
1311
|
)
|
|
1299
1312
|
|
|
1300
|
-
def _pick_up_tip() -> WellCore:
|
|
1313
|
+
def _pick_up_tip() -> Tuple[Location, WellCore]:
|
|
1301
1314
|
next_tip = self.get_next_tip(
|
|
1302
1315
|
tip_racks=[core for loc, core in tip_racks],
|
|
1303
1316
|
starting_well=starting_tip,
|
|
@@ -1323,10 +1336,10 @@ class InstrumentCore(AbstractInstrument[WellCore, LabwareCore]):
|
|
|
1323
1336
|
presses=None,
|
|
1324
1337
|
increment=None,
|
|
1325
1338
|
)
|
|
1326
|
-
return tip_well
|
|
1339
|
+
return tiprack_loc, tip_well
|
|
1327
1340
|
|
|
1328
1341
|
if new_tip == TransferTipPolicyV2.ONCE:
|
|
1329
|
-
|
|
1342
|
+
last_tip = _pick_up_tip()
|
|
1330
1343
|
|
|
1331
1344
|
prev_src: Optional[Tuple[Location, WellCore]] = None
|
|
1332
1345
|
prev_dest: Optional[
|
|
@@ -1364,7 +1377,7 @@ class InstrumentCore(AbstractInstrument[WellCore, LabwareCore]):
|
|
|
1364
1377
|
):
|
|
1365
1378
|
if prev_src is not None and prev_dest is not None:
|
|
1366
1379
|
_drop_tip()
|
|
1367
|
-
|
|
1380
|
+
last_tip = _pick_up_tip()
|
|
1368
1381
|
post_disp_tip_contents = [
|
|
1369
1382
|
tx_comps_executor.LiquidAndAirGapPair(
|
|
1370
1383
|
liquid=0,
|
|
@@ -1404,30 +1417,37 @@ class InstrumentCore(AbstractInstrument[WellCore, LabwareCore]):
|
|
|
1404
1417
|
transfer_type=tx_comps_executor.TransferType.ONE_TO_ONE,
|
|
1405
1418
|
tip_contents=post_asp_tip_contents,
|
|
1406
1419
|
add_final_air_gap=(
|
|
1407
|
-
False
|
|
1408
|
-
if is_last_step and new_tip == TransferTipPolicyV2.NEVER
|
|
1409
|
-
else True
|
|
1420
|
+
False if is_last_step and keep_last_tip else True
|
|
1410
1421
|
),
|
|
1411
1422
|
trash_location=trash_location,
|
|
1412
1423
|
)
|
|
1413
1424
|
prev_src = step_source
|
|
1414
1425
|
prev_dest = step_destination
|
|
1415
|
-
|
|
1426
|
+
|
|
1427
|
+
if not keep_last_tip:
|
|
1416
1428
|
_drop_tip()
|
|
1429
|
+
last_tip = None
|
|
1430
|
+
|
|
1431
|
+
return last_tip
|
|
1417
1432
|
|
|
1418
|
-
# TODO(spp, 2025-02-25): wire up return tip
|
|
1419
1433
|
def distribute_with_liquid_class( # noqa: C901
|
|
1420
1434
|
self,
|
|
1421
1435
|
liquid_class: LiquidClass,
|
|
1422
1436
|
volume: float,
|
|
1423
1437
|
source: Tuple[Location, WellCore],
|
|
1424
1438
|
dest: List[Tuple[Location, WellCore]],
|
|
1425
|
-
new_tip: Literal[
|
|
1439
|
+
new_tip: Literal[
|
|
1440
|
+
TransferTipPolicyV2.NEVER,
|
|
1441
|
+
TransferTipPolicyV2.ONCE,
|
|
1442
|
+
TransferTipPolicyV2.ALWAYS,
|
|
1443
|
+
],
|
|
1426
1444
|
tip_racks: List[Tuple[Location, LabwareCore]],
|
|
1427
1445
|
starting_tip: Optional[WellCore],
|
|
1428
1446
|
trash_location: Union[Location, TrashBin, WasteChute],
|
|
1429
1447
|
return_tip: bool,
|
|
1430
|
-
|
|
1448
|
+
keep_last_tip: bool,
|
|
1449
|
+
last_tip_location: Optional[Tuple[Location, WellCore]],
|
|
1450
|
+
) -> Optional[Tuple[Location, WellCore]]:
|
|
1431
1451
|
"""Execute a distribution using liquid class properties.
|
|
1432
1452
|
|
|
1433
1453
|
Args:
|
|
@@ -1438,9 +1458,22 @@ class InstrumentCore(AbstractInstrument[WellCore, LabwareCore]):
|
|
|
1438
1458
|
dest: List of destination wells, with each well represented as a tuple of
|
|
1439
1459
|
types.Location and WellCore.
|
|
1440
1460
|
types.Location is only necessary for saving the last accessed location.
|
|
1441
|
-
new_tip: Whether the transfer should use a new tip 'once' or 'never'.
|
|
1442
|
-
|
|
1443
|
-
|
|
1461
|
+
new_tip: Whether the transfer should use a new tip 'once', 'always' or 'never'.
|
|
1462
|
+
'never': the transfer will never pick up a new tip
|
|
1463
|
+
'once': the transfer will pick up a new tip once at the start of transfer
|
|
1464
|
+
'always': the transfer will pick up a new tip before every aspirate
|
|
1465
|
+
tip_racks: List of tipracks that the transfer will pick up tips from, represented
|
|
1466
|
+
as tuples of types.Location and WellCore.
|
|
1467
|
+
starting_tip: The user-chosen starting tip to use when deciding what tip to pick
|
|
1468
|
+
up, if the user has set it.
|
|
1469
|
+
trash_location: The chosen trash container to drop tips in and dispose liquid in.
|
|
1470
|
+
return_tip: If `True`, return tips to the tip rack location they were picked up from,
|
|
1471
|
+
otherwise drop in `trash_location`
|
|
1472
|
+
keep_last_tip: When set to `True`, do not drop the final tip used in the distribute.
|
|
1473
|
+
last_tip_location: If a tip is already attached, this will be the tiprack and well it was
|
|
1474
|
+
picked up from, represented as a tuple of types.Location and WellCore.
|
|
1475
|
+
Used so a tip can be returned if it was picked up outside this function
|
|
1476
|
+
as could be the case for a new_tip of `never`
|
|
1444
1477
|
|
|
1445
1478
|
This method distributes the liquid in the source well into multiple destinations.
|
|
1446
1479
|
It can accomplish this by either doing a multi-dispense (aspirate once and then
|
|
@@ -1448,13 +1481,17 @@ class InstrumentCore(AbstractInstrument[WellCore, LabwareCore]):
|
|
|
1448
1481
|
(going back to aspirate after each dispense). Whether it does a multi-dispense or
|
|
1449
1482
|
multiple single dispenses is determined by whether multi-dispense properties
|
|
1450
1483
|
are available in the liquid class and whether the tip in use can hold multiple
|
|
1451
|
-
volumes to be dispensed
|
|
1484
|
+
volumes to be dispensed without having to refill.
|
|
1452
1485
|
"""
|
|
1453
1486
|
if not tip_racks:
|
|
1454
1487
|
raise RuntimeError(
|
|
1455
1488
|
"No tipracks found for pipette in order to perform transfer"
|
|
1456
1489
|
)
|
|
1457
|
-
assert new_tip in [
|
|
1490
|
+
assert new_tip in [
|
|
1491
|
+
TransferTipPolicyV2.NEVER,
|
|
1492
|
+
TransferTipPolicyV2.ONCE,
|
|
1493
|
+
TransferTipPolicyV2.ALWAYS,
|
|
1494
|
+
]
|
|
1458
1495
|
|
|
1459
1496
|
tiprack_uri_for_transfer_props = tip_racks[0][1].get_uri()
|
|
1460
1497
|
working_volume = min(
|
|
@@ -1500,7 +1537,7 @@ class InstrumentCore(AbstractInstrument[WellCore, LabwareCore]):
|
|
|
1500
1537
|
tip_working_volume=working_volume,
|
|
1501
1538
|
)
|
|
1502
1539
|
):
|
|
1503
|
-
self.transfer_with_liquid_class(
|
|
1540
|
+
return self.transfer_with_liquid_class(
|
|
1504
1541
|
liquid_class=liquid_class,
|
|
1505
1542
|
volume=volume,
|
|
1506
1543
|
source=[source for _ in range(len(dest))],
|
|
@@ -1510,8 +1547,9 @@ class InstrumentCore(AbstractInstrument[WellCore, LabwareCore]):
|
|
|
1510
1547
|
starting_tip=starting_tip,
|
|
1511
1548
|
trash_location=trash_location,
|
|
1512
1549
|
return_tip=return_tip,
|
|
1550
|
+
keep_last_tip=keep_last_tip,
|
|
1551
|
+
last_tip_location=last_tip_location,
|
|
1513
1552
|
)
|
|
1514
|
-
return
|
|
1515
1553
|
|
|
1516
1554
|
# TODO: use the ID returned by load_liquid_class in command annotations
|
|
1517
1555
|
self.load_liquid_class(
|
|
@@ -1538,14 +1576,15 @@ class InstrumentCore(AbstractInstrument[WellCore, LabwareCore]):
|
|
|
1538
1576
|
)
|
|
1539
1577
|
)
|
|
1540
1578
|
|
|
1541
|
-
|
|
1579
|
+
last_tip = last_tip_location
|
|
1542
1580
|
|
|
1543
1581
|
def _drop_tip() -> None:
|
|
1544
1582
|
if return_tip:
|
|
1545
|
-
assert
|
|
1583
|
+
assert last_tip is not None
|
|
1584
|
+
_, tip_well = last_tip
|
|
1546
1585
|
self.drop_tip(
|
|
1547
1586
|
location=None,
|
|
1548
|
-
well_core=
|
|
1587
|
+
well_core=tip_well,
|
|
1549
1588
|
home_after=False,
|
|
1550
1589
|
alternate_drop_location=False,
|
|
1551
1590
|
)
|
|
@@ -1563,7 +1602,7 @@ class InstrumentCore(AbstractInstrument[WellCore, LabwareCore]):
|
|
|
1563
1602
|
alternate_drop_location=True,
|
|
1564
1603
|
)
|
|
1565
1604
|
|
|
1566
|
-
def _pick_up_tip() -> WellCore:
|
|
1605
|
+
def _pick_up_tip() -> Tuple[Location, WellCore]:
|
|
1567
1606
|
next_tip = self.get_next_tip(
|
|
1568
1607
|
tip_racks=[core for loc, core in tip_racks],
|
|
1569
1608
|
starting_well=starting_tip,
|
|
@@ -1589,10 +1628,10 @@ class InstrumentCore(AbstractInstrument[WellCore, LabwareCore]):
|
|
|
1589
1628
|
presses=None,
|
|
1590
1629
|
increment=None,
|
|
1591
1630
|
)
|
|
1592
|
-
return tip_well
|
|
1631
|
+
return tiprack_loc, tip_well
|
|
1593
1632
|
|
|
1594
1633
|
if new_tip != TransferTipPolicyV2.NEVER:
|
|
1595
|
-
|
|
1634
|
+
last_tip = _pick_up_tip()
|
|
1596
1635
|
|
|
1597
1636
|
tip_contents = [
|
|
1598
1637
|
tx_comps_executor.LiquidAndAirGapPair(
|
|
@@ -1661,9 +1700,21 @@ class InstrumentCore(AbstractInstrument[WellCore, LabwareCore]):
|
|
|
1661
1700
|
and new_tip != TransferTipPolicyV2.NEVER
|
|
1662
1701
|
and is_first_step
|
|
1663
1702
|
):
|
|
1703
|
+
# Do probing only once, regardless of whether you are coming back to refill
|
|
1704
|
+
# with a fresh tip since there's only one source well
|
|
1664
1705
|
enable_lpd = True
|
|
1665
1706
|
else:
|
|
1666
1707
|
enable_lpd = False
|
|
1708
|
+
|
|
1709
|
+
if not is_first_step and new_tip == TransferTipPolicyV2.ALWAYS:
|
|
1710
|
+
_drop_tip()
|
|
1711
|
+
last_tip = _pick_up_tip()
|
|
1712
|
+
tip_contents = [
|
|
1713
|
+
tx_comps_executor.LiquidAndAirGapPair(
|
|
1714
|
+
liquid=0,
|
|
1715
|
+
air_gap=0,
|
|
1716
|
+
)
|
|
1717
|
+
]
|
|
1667
1718
|
with self.lpd_for_transfer(enable=enable_lpd):
|
|
1668
1719
|
# Aspirate the total volume determined by the loop above
|
|
1669
1720
|
tip_contents = self.aspirate_liquid_class(
|
|
@@ -1693,9 +1744,7 @@ class InstrumentCore(AbstractInstrument[WellCore, LabwareCore]):
|
|
|
1693
1744
|
transfer_type=tx_comps_executor.TransferType.ONE_TO_MANY,
|
|
1694
1745
|
tip_contents=tip_contents,
|
|
1695
1746
|
add_final_air_gap=(
|
|
1696
|
-
False
|
|
1697
|
-
if is_last_step and new_tip == TransferTipPolicyV2.NEVER
|
|
1698
|
-
else True
|
|
1747
|
+
False if is_last_step and keep_last_tip else True
|
|
1699
1748
|
),
|
|
1700
1749
|
trash_location=trash_location,
|
|
1701
1750
|
)
|
|
@@ -1708,9 +1757,7 @@ class InstrumentCore(AbstractInstrument[WellCore, LabwareCore]):
|
|
|
1708
1757
|
transfer_type=tx_comps_executor.TransferType.ONE_TO_MANY,
|
|
1709
1758
|
tip_contents=tip_contents,
|
|
1710
1759
|
add_final_air_gap=(
|
|
1711
|
-
False
|
|
1712
|
-
if is_last_step and new_tip == TransferTipPolicyV2.NEVER
|
|
1713
|
-
else True
|
|
1760
|
+
False if is_last_step and keep_last_tip else True
|
|
1714
1761
|
),
|
|
1715
1762
|
trash_location=trash_location,
|
|
1716
1763
|
conditioning_volume=conditioning_vol,
|
|
@@ -1718,8 +1765,11 @@ class InstrumentCore(AbstractInstrument[WellCore, LabwareCore]):
|
|
|
1718
1765
|
)
|
|
1719
1766
|
is_first_step = False
|
|
1720
1767
|
|
|
1721
|
-
if
|
|
1768
|
+
if not keep_last_tip:
|
|
1722
1769
|
_drop_tip()
|
|
1770
|
+
last_tip = None
|
|
1771
|
+
|
|
1772
|
+
return last_tip
|
|
1723
1773
|
|
|
1724
1774
|
def _tip_can_hold_volume_for_multi_dispensing(
|
|
1725
1775
|
self,
|
|
@@ -1748,17 +1798,57 @@ class InstrumentCore(AbstractInstrument[WellCore, LabwareCore]):
|
|
|
1748
1798
|
volume: float,
|
|
1749
1799
|
source: List[Tuple[Location, WellCore]],
|
|
1750
1800
|
dest: Union[Tuple[Location, WellCore], TrashBin, WasteChute],
|
|
1751
|
-
new_tip: Literal[
|
|
1801
|
+
new_tip: Literal[
|
|
1802
|
+
TransferTipPolicyV2.NEVER,
|
|
1803
|
+
TransferTipPolicyV2.ONCE,
|
|
1804
|
+
TransferTipPolicyV2.ALWAYS,
|
|
1805
|
+
],
|
|
1752
1806
|
tip_racks: List[Tuple[Location, LabwareCore]],
|
|
1753
1807
|
starting_tip: Optional[WellCore],
|
|
1754
1808
|
trash_location: Union[Location, TrashBin, WasteChute],
|
|
1755
1809
|
return_tip: bool,
|
|
1756
|
-
|
|
1810
|
+
keep_last_tip: bool,
|
|
1811
|
+
last_tip_location: Optional[Tuple[Location, WellCore]],
|
|
1812
|
+
) -> Optional[Tuple[Location, WellCore]]:
|
|
1813
|
+
"""Execute consolidate using liquid class properties.
|
|
1814
|
+
|
|
1815
|
+
Args:
|
|
1816
|
+
liquid_class: The liquid class to use for transfer properties.
|
|
1817
|
+
volume: Volume to transfer per well.
|
|
1818
|
+
source: List of source wells, with each well represented as a tuple of
|
|
1819
|
+
types.Location and WellCore.
|
|
1820
|
+
types.Location is only necessary for saving the last accessed location.
|
|
1821
|
+
dest: List of destination wells, with each well represented as a tuple of
|
|
1822
|
+
types.Location and WellCore.
|
|
1823
|
+
types.Location is only necessary for saving the last accessed location.
|
|
1824
|
+
new_tip: Whether the transfer should use a new tip 'once', 'always' or 'never'.
|
|
1825
|
+
'never': the transfer will never pick up a new tip
|
|
1826
|
+
'once': the transfer will pick up a new tip once at the start of transfer
|
|
1827
|
+
'always': the transfer will pick up a new tip after every dispense
|
|
1828
|
+
tip_racks: List of tipracks that the transfer will pick up tips from, represented
|
|
1829
|
+
as tuples of types.Location and WellCore.
|
|
1830
|
+
starting_tip: The user-chosen starting tip to use when deciding what tip to pick
|
|
1831
|
+
up, if the user has set it.
|
|
1832
|
+
trash_location: The chosen trash container to drop tips in and dispose liquid in.
|
|
1833
|
+
return_tip: If `True`, return tips to the tip rack location they were picked up from,
|
|
1834
|
+
otherwise drop in `trash_location`
|
|
1835
|
+
keep_last_tip: When set to `True`, do not drop the final tip used in the consolidate.
|
|
1836
|
+
last_tip_location: If a tip is already attached, this will be the tiprack and well it was
|
|
1837
|
+
picked up from, represented as a tuple of types.Location and WellCore.
|
|
1838
|
+
Used so a tip can be returned if it was picked up outside this function
|
|
1839
|
+
as could be the case for a new_tip of `never`.
|
|
1840
|
+
"""
|
|
1757
1841
|
if not tip_racks:
|
|
1758
1842
|
raise RuntimeError(
|
|
1759
1843
|
"No tipracks found for pipette in order to perform transfer"
|
|
1760
1844
|
)
|
|
1761
|
-
|
|
1845
|
+
# NOTE: Tip option of "always" in consolidate is equivalent to "after every dispense",
|
|
1846
|
+
# or more specifically, "before the next chunk of aspirates".
|
|
1847
|
+
assert new_tip in [
|
|
1848
|
+
TransferTipPolicyV2.NEVER,
|
|
1849
|
+
TransferTipPolicyV2.ONCE,
|
|
1850
|
+
TransferTipPolicyV2.ALWAYS,
|
|
1851
|
+
]
|
|
1762
1852
|
tiprack_uri_for_transfer_props = tip_racks[0][1].get_uri()
|
|
1763
1853
|
try:
|
|
1764
1854
|
transfer_props = liquid_class.get_for(
|
|
@@ -1807,14 +1897,15 @@ class InstrumentCore(AbstractInstrument[WellCore, LabwareCore]):
|
|
|
1807
1897
|
)
|
|
1808
1898
|
)
|
|
1809
1899
|
|
|
1810
|
-
|
|
1900
|
+
last_tip = last_tip_location
|
|
1811
1901
|
|
|
1812
1902
|
def _drop_tip() -> None:
|
|
1813
1903
|
if return_tip:
|
|
1814
|
-
assert
|
|
1904
|
+
assert last_tip is not None
|
|
1905
|
+
_, tip_well = last_tip
|
|
1815
1906
|
self.drop_tip(
|
|
1816
1907
|
location=None,
|
|
1817
|
-
well_core=
|
|
1908
|
+
well_core=tip_well,
|
|
1818
1909
|
home_after=False,
|
|
1819
1910
|
alternate_drop_location=False,
|
|
1820
1911
|
)
|
|
@@ -1832,7 +1923,7 @@ class InstrumentCore(AbstractInstrument[WellCore, LabwareCore]):
|
|
|
1832
1923
|
alternate_drop_location=True,
|
|
1833
1924
|
)
|
|
1834
1925
|
|
|
1835
|
-
def _pick_up_tip() -> WellCore:
|
|
1926
|
+
def _pick_up_tip() -> Tuple[Location, WellCore]:
|
|
1836
1927
|
next_tip = self.get_next_tip(
|
|
1837
1928
|
tip_racks=[core for loc, core in tip_racks],
|
|
1838
1929
|
starting_well=starting_tip,
|
|
@@ -1858,10 +1949,10 @@ class InstrumentCore(AbstractInstrument[WellCore, LabwareCore]):
|
|
|
1858
1949
|
presses=None,
|
|
1859
1950
|
increment=None,
|
|
1860
1951
|
)
|
|
1861
|
-
return tip_well
|
|
1952
|
+
return tiprack_loc, tip_well
|
|
1862
1953
|
|
|
1863
|
-
if new_tip
|
|
1864
|
-
|
|
1954
|
+
if new_tip in [TransferTipPolicyV2.ONCE, TransferTipPolicyV2.ALWAYS]:
|
|
1955
|
+
last_tip = _pick_up_tip()
|
|
1865
1956
|
|
|
1866
1957
|
tip_contents = [
|
|
1867
1958
|
tx_comps_executor.LiquidAndAirGapPair(
|
|
@@ -1872,6 +1963,7 @@ class InstrumentCore(AbstractInstrument[WellCore, LabwareCore]):
|
|
|
1872
1963
|
next_step_volume, next_source = next(source_per_volume_step)
|
|
1873
1964
|
is_first_step = True
|
|
1874
1965
|
is_last_step = False
|
|
1966
|
+
prev_src: Optional[tuple[Location, WellCore]] = None
|
|
1875
1967
|
while not is_last_step:
|
|
1876
1968
|
total_dispense_volume = 0.0
|
|
1877
1969
|
vol_aspirate_combo = []
|
|
@@ -1895,6 +1987,21 @@ class InstrumentCore(AbstractInstrument[WellCore, LabwareCore]):
|
|
|
1895
1987
|
and is_first_step
|
|
1896
1988
|
):
|
|
1897
1989
|
enable_lpd = True
|
|
1990
|
+
elif not is_first_step and new_tip == TransferTipPolicyV2.ALWAYS:
|
|
1991
|
+
_drop_tip()
|
|
1992
|
+
last_tip = _pick_up_tip()
|
|
1993
|
+
tip_contents = [
|
|
1994
|
+
tx_comps_executor.LiquidAndAirGapPair(
|
|
1995
|
+
liquid=0,
|
|
1996
|
+
air_gap=0,
|
|
1997
|
+
)
|
|
1998
|
+
]
|
|
1999
|
+
# Enable LPD if it's globally enabled, as long as
|
|
2000
|
+
# the next source is different from previous source
|
|
2001
|
+
enable_lpd = (
|
|
2002
|
+
self.get_liquid_presence_detection()
|
|
2003
|
+
and prev_src != vol_aspirate_combo[0][1]
|
|
2004
|
+
)
|
|
1898
2005
|
else:
|
|
1899
2006
|
enable_lpd = False
|
|
1900
2007
|
|
|
@@ -1912,6 +2019,7 @@ class InstrumentCore(AbstractInstrument[WellCore, LabwareCore]):
|
|
|
1912
2019
|
),
|
|
1913
2020
|
current_volume=total_aspirated_volume,
|
|
1914
2021
|
)
|
|
2022
|
+
prev_src = step_source
|
|
1915
2023
|
total_aspirated_volume += step_volume
|
|
1916
2024
|
is_first_step = False
|
|
1917
2025
|
enable_lpd = False
|
|
@@ -1922,15 +2030,15 @@ class InstrumentCore(AbstractInstrument[WellCore, LabwareCore]):
|
|
|
1922
2030
|
transfer_properties=transfer_props,
|
|
1923
2031
|
transfer_type=tx_comps_executor.TransferType.MANY_TO_ONE,
|
|
1924
2032
|
tip_contents=tip_contents,
|
|
1925
|
-
add_final_air_gap=(
|
|
1926
|
-
False
|
|
1927
|
-
if is_last_step and new_tip == TransferTipPolicyV2.NEVER
|
|
1928
|
-
else True
|
|
1929
|
-
),
|
|
2033
|
+
add_final_air_gap=(False if is_last_step and keep_last_tip else True),
|
|
1930
2034
|
trash_location=trash_location,
|
|
1931
2035
|
)
|
|
1932
|
-
|
|
2036
|
+
|
|
2037
|
+
if not keep_last_tip:
|
|
1933
2038
|
_drop_tip()
|
|
2039
|
+
last_tip = None
|
|
2040
|
+
|
|
2041
|
+
return last_tip
|
|
1934
2042
|
|
|
1935
2043
|
def _get_location_and_well_core_from_next_tip_info(
|
|
1936
2044
|
self,
|
|
@@ -2011,10 +2119,7 @@ class InstrumentCore(AbstractInstrument[WellCore, LabwareCore]):
|
|
|
2011
2119
|
location=prep_location,
|
|
2012
2120
|
)
|
|
2013
2121
|
last_liquid_and_airgap_in_tip.air_gap = 0
|
|
2014
|
-
if (
|
|
2015
|
-
transfer_type != tx_comps_executor.TransferType.MANY_TO_ONE
|
|
2016
|
-
and self.get_liquid_presence_detection()
|
|
2017
|
-
):
|
|
2122
|
+
if self.get_liquid_presence_detection():
|
|
2018
2123
|
self.liquid_probe_with_recovery(
|
|
2019
2124
|
well_core=source_well, loc=prep_location
|
|
2020
2125
|
)
|