opentrons 8.4.0a6__tar.gz → 8.4.0a8__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of opentrons might be problematic. Click here for more details.
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/PKG-INFO +4 -4
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_api/core/engine/instrument.py +4 -4
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_api/core/engine/well.py +12 -1
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_api/core/instrument.py +1 -1
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_api/core/legacy/legacy_instrument_core.py +1 -1
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_api/core/legacy/legacy_well_core.py +2 -1
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_api/core/legacy_simulator/legacy_instrument_core.py +1 -1
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_api/core/well.py +2 -1
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_api/instrument_context.py +87 -33
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_api/labware.py +3 -1
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_api/protocol_context.py +2 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_engine/commands/liquid_probe.py +6 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_engine/commands/seal_pipette_to_tip.py +44 -23
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_engine/commands/unseal_pipette_from_tip.py +8 -11
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_engine/errors/__init__.py +2 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_engine/errors/exceptions.py +12 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_engine/execution/pipetting.py +3 -1
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_engine/state/geometry.py +161 -83
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_engine/state/modules.py +33 -16
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_engine/types/__init__.py +2 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_engine/types/liquid_level_detection.py +14 -20
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_engine/types/module.py +32 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons.egg-info/PKG-INFO +4 -4
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons.egg-info/requires.txt +3 -3
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/MANIFEST.in +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/README.rst +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/setup.cfg +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/setup.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/__init__.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/_version.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/calibration_storage/__init__.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/calibration_storage/deck_configuration.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/calibration_storage/encoder_decoder.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/calibration_storage/file_operators.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/calibration_storage/helpers.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/calibration_storage/ot2/__init__.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/calibration_storage/ot2/deck_attitude.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/calibration_storage/ot2/mark_bad_calibration.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/calibration_storage/ot2/models/__init__.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/calibration_storage/ot2/models/v1.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/calibration_storage/ot2/pipette_offset.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/calibration_storage/ot2/tip_length.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/calibration_storage/ot3/__init__.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/calibration_storage/ot3/deck_attitude.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/calibration_storage/ot3/gripper_offset.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/calibration_storage/ot3/models/__init__.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/calibration_storage/ot3/models/v1.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/calibration_storage/ot3/module_offset.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/calibration_storage/ot3/pipette_offset.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/calibration_storage/types.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/cli/__init__.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/cli/__main__.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/cli/analyze.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/config/__init__.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/config/advanced_settings.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/config/defaults_ot2.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/config/defaults_ot3.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/config/feature_flags.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/config/gripper_config.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/config/reset.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/config/robot_configs.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/config/types.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/drivers/__init__.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/drivers/absorbance_reader/__init__.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/drivers/absorbance_reader/abstract.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/drivers/absorbance_reader/async_byonoy.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/drivers/absorbance_reader/driver.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/drivers/absorbance_reader/hid_protocol.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/drivers/absorbance_reader/simulator.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/drivers/asyncio/__init__.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/drivers/asyncio/communication/__init__.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/drivers/asyncio/communication/async_serial.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/drivers/asyncio/communication/errors.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/drivers/asyncio/communication/serial_connection.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/drivers/command_builder.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/drivers/flex_stacker/__init__.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/drivers/flex_stacker/abstract.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/drivers/flex_stacker/driver.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/drivers/flex_stacker/errors.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/drivers/flex_stacker/simulator.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/drivers/flex_stacker/types.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/drivers/flex_stacker/utils.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/drivers/heater_shaker/__init__.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/drivers/heater_shaker/abstract.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/drivers/heater_shaker/driver.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/drivers/heater_shaker/simulator.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/drivers/mag_deck/__init__.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/drivers/mag_deck/abstract.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/drivers/mag_deck/driver.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/drivers/mag_deck/simulator.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/drivers/rpi_drivers/__init__.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/drivers/rpi_drivers/dev_types.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/drivers/rpi_drivers/gpio.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/drivers/rpi_drivers/gpio_simulator.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/drivers/rpi_drivers/interfaces.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/drivers/rpi_drivers/types.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/drivers/rpi_drivers/usb.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/drivers/rpi_drivers/usb_simulator.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/drivers/serial_communication.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/drivers/smoothie_drivers/__init__.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/drivers/smoothie_drivers/connection.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/drivers/smoothie_drivers/constants.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/drivers/smoothie_drivers/driver_3_0.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/drivers/smoothie_drivers/errors.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/drivers/smoothie_drivers/parse_utils.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/drivers/smoothie_drivers/simulator.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/drivers/smoothie_drivers/types.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/drivers/temp_deck/__init__.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/drivers/temp_deck/abstract.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/drivers/temp_deck/driver.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/drivers/temp_deck/simulator.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/drivers/thermocycler/__init__.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/drivers/thermocycler/abstract.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/drivers/thermocycler/driver.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/drivers/thermocycler/simulator.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/drivers/types.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/drivers/utils.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/execute.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/hardware_control/__init__.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/hardware_control/__main__.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/hardware_control/adapters.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/hardware_control/api.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/hardware_control/backends/__init__.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/hardware_control/backends/controller.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/hardware_control/backends/errors.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/hardware_control/backends/estop_state.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/hardware_control/backends/flex_protocol.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/hardware_control/backends/ot3controller.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/hardware_control/backends/ot3simulator.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/hardware_control/backends/ot3utils.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/hardware_control/backends/simulator.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/hardware_control/backends/status_bar_state.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/hardware_control/backends/subsystem_manager.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/hardware_control/backends/tip_presence_manager.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/hardware_control/backends/types.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/hardware_control/constants.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/hardware_control/dev_types.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/hardware_control/emulation/__init__.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/hardware_control/emulation/abstract_emulator.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/hardware_control/emulation/app.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/hardware_control/emulation/connection_handler.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/hardware_control/emulation/heater_shaker.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/hardware_control/emulation/magdeck.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/hardware_control/emulation/module_server/__init__.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/hardware_control/emulation/module_server/client.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/hardware_control/emulation/module_server/helpers.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/hardware_control/emulation/module_server/models.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/hardware_control/emulation/module_server/server.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/hardware_control/emulation/parser.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/hardware_control/emulation/proxy.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/hardware_control/emulation/run_emulator.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/hardware_control/emulation/scripts/__init__.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/hardware_control/emulation/scripts/run_app.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/hardware_control/emulation/scripts/run_module_emulator.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/hardware_control/emulation/scripts/run_smoothie.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/hardware_control/emulation/settings.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/hardware_control/emulation/simulations.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/hardware_control/emulation/smoothie.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/hardware_control/emulation/tempdeck.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/hardware_control/emulation/thermocycler.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/hardware_control/emulation/types.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/hardware_control/emulation/util.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/hardware_control/errors.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/hardware_control/execution_manager.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/hardware_control/instruments/__init__.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/hardware_control/instruments/instrument_abc.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/hardware_control/instruments/ot2/__init__.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/hardware_control/instruments/ot2/instrument_calibration.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/hardware_control/instruments/ot2/pipette.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/hardware_control/instruments/ot2/pipette_handler.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/hardware_control/instruments/ot3/__init__.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/hardware_control/instruments/ot3/gripper.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/hardware_control/instruments/ot3/gripper_handler.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/hardware_control/instruments/ot3/instrument_calibration.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/hardware_control/instruments/ot3/pipette.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/hardware_control/instruments/ot3/pipette_handler.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/hardware_control/module_control.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/hardware_control/modules/__init__.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/hardware_control/modules/absorbance_reader.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/hardware_control/modules/errors.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/hardware_control/modules/flex_stacker.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/hardware_control/modules/heater_shaker.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/hardware_control/modules/lid_temp_status.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/hardware_control/modules/magdeck.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/hardware_control/modules/mod_abc.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/hardware_control/modules/module_calibration.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/hardware_control/modules/plate_temp_status.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/hardware_control/modules/tempdeck.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/hardware_control/modules/thermocycler.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/hardware_control/modules/types.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/hardware_control/modules/update.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/hardware_control/modules/utils.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/hardware_control/motion_utilities.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/hardware_control/nozzle_manager.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/hardware_control/ot3_calibration.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/hardware_control/ot3api.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/hardware_control/pause_manager.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/hardware_control/poller.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/hardware_control/protocols/__init__.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/hardware_control/protocols/asyncio_configurable.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/hardware_control/protocols/calibratable.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/hardware_control/protocols/chassis_accessory_manager.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/hardware_control/protocols/configurable.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/hardware_control/protocols/event_sourcer.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/hardware_control/protocols/execution_controllable.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/hardware_control/protocols/flex_calibratable.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/hardware_control/protocols/flex_instrument_configurer.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/hardware_control/protocols/gripper_controller.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/hardware_control/protocols/hardware_manager.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/hardware_control/protocols/identifiable.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/hardware_control/protocols/instrument_configurer.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/hardware_control/protocols/liquid_handler.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/hardware_control/protocols/module_provider.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/hardware_control/protocols/motion_controller.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/hardware_control/protocols/position_estimator.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/hardware_control/protocols/simulatable.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/hardware_control/protocols/stoppable.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/hardware_control/protocols/types.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/hardware_control/robot_calibration.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/hardware_control/scripts/__init__.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/hardware_control/scripts/gripper_control.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/hardware_control/scripts/repl.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/hardware_control/scripts/tc_control.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/hardware_control/simulator_setup.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/hardware_control/thread_manager.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/hardware_control/threaded_async_lock.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/hardware_control/types.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/hardware_control/util.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/legacy_broker.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/legacy_commands/__init__.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/legacy_commands/commands.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/legacy_commands/helpers.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/legacy_commands/module_commands.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/legacy_commands/protocol_commands.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/legacy_commands/publisher.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/legacy_commands/types.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/motion_planning/__init__.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/motion_planning/adjacent_slots_getters.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/motion_planning/deck_conflict.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/motion_planning/errors.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/motion_planning/types.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/motion_planning/waypoints.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/ordered_set.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_api/__init__.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_api/_liquid.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_api/_liquid_properties.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_api/_nozzle_layout.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_api/_parameter_context.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_api/_parameters.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_api/_transfer_liquid_validation.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_api/_types.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_api/config.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_api/core/__init__.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_api/core/common.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_api/core/core_map.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_api/core/engine/__init__.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_api/core/engine/deck_conflict.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_api/core/engine/exceptions.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_api/core/engine/labware.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_api/core/engine/load_labware_params.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_api/core/engine/module_core.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_api/core/engine/overlap_versions.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_api/core/engine/pipette_movement_conflict.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_api/core/engine/point_calculations.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_api/core/engine/protocol.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_api/core/engine/robot.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_api/core/engine/stringify.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_api/core/engine/transfer_components_executor.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_api/core/labware.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_api/core/legacy/__init__.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_api/core/legacy/deck.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_api/core/legacy/labware_offset_provider.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_api/core/legacy/legacy_labware_core.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_api/core/legacy/legacy_module_core.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_api/core/legacy/legacy_protocol_core.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_api/core/legacy/load_info.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_api/core/legacy/module_geometry.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_api/core/legacy/well_geometry.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_api/core/legacy_simulator/__init__.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_api/core/legacy_simulator/legacy_protocol_core.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_api/core/module.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_api/core/protocol.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_api/core/robot.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_api/core/well_grid.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_api/create_protocol_context.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_api/deck.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_api/disposal_locations.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_api/module_contexts.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_api/module_validation_and_errors.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_api/robot_context.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_api/validation.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_engine/__init__.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_engine/actions/__init__.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_engine/actions/action_dispatcher.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_engine/actions/action_handler.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_engine/actions/actions.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_engine/actions/get_state_update.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_engine/clients/__init__.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_engine/clients/sync_client.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_engine/clients/transports.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_engine/commands/__init__.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_engine/commands/absorbance_reader/__init__.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_engine/commands/absorbance_reader/close_lid.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_engine/commands/absorbance_reader/initialize.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_engine/commands/absorbance_reader/open_lid.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_engine/commands/absorbance_reader/read.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_engine/commands/air_gap_in_place.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_engine/commands/aspirate.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_engine/commands/aspirate_in_place.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_engine/commands/aspirate_while_tracking.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_engine/commands/blow_out.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_engine/commands/blow_out_in_place.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_engine/commands/calibration/__init__.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_engine/commands/calibration/calibrate_gripper.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_engine/commands/calibration/calibrate_module.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_engine/commands/calibration/calibrate_pipette.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_engine/commands/calibration/move_to_maintenance_position.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_engine/commands/command.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_engine/commands/command_unions.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_engine/commands/comment.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_engine/commands/configure_for_volume.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_engine/commands/configure_nozzle_layout.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_engine/commands/custom.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_engine/commands/dispense.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_engine/commands/dispense_in_place.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_engine/commands/dispense_while_tracking.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_engine/commands/drop_tip.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_engine/commands/drop_tip_in_place.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_engine/commands/flex_stacker/__init__.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_engine/commands/flex_stacker/close_latch.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_engine/commands/flex_stacker/common.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_engine/commands/flex_stacker/empty.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_engine/commands/flex_stacker/fill.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_engine/commands/flex_stacker/open_latch.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_engine/commands/flex_stacker/prepare_shuttle.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_engine/commands/flex_stacker/retrieve.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_engine/commands/flex_stacker/set_stored_labware.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_engine/commands/flex_stacker/store.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_engine/commands/generate_command_schema.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_engine/commands/get_next_tip.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_engine/commands/get_tip_presence.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_engine/commands/hash_command_params.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_engine/commands/heater_shaker/__init__.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_engine/commands/heater_shaker/close_labware_latch.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_engine/commands/heater_shaker/deactivate_heater.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_engine/commands/heater_shaker/deactivate_shaker.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_engine/commands/heater_shaker/open_labware_latch.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_engine/commands/heater_shaker/set_and_wait_for_shake_speed.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_engine/commands/heater_shaker/set_target_temperature.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_engine/commands/heater_shaker/wait_for_temperature.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_engine/commands/home.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_engine/commands/labware_handling_common.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_engine/commands/load_labware.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_engine/commands/load_lid.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_engine/commands/load_lid_stack.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_engine/commands/load_liquid.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_engine/commands/load_liquid_class.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_engine/commands/load_module.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_engine/commands/load_pipette.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_engine/commands/magnetic_module/__init__.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_engine/commands/magnetic_module/disengage.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_engine/commands/magnetic_module/engage.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_engine/commands/move_labware.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_engine/commands/move_relative.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_engine/commands/move_to_addressable_area.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_engine/commands/move_to_addressable_area_for_drop_tip.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_engine/commands/move_to_coordinates.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_engine/commands/move_to_well.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_engine/commands/movement_common.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_engine/commands/pick_up_tip.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_engine/commands/pipetting_common.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_engine/commands/prepare_to_aspirate.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_engine/commands/pressure_dispense.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_engine/commands/reload_labware.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_engine/commands/retract_axis.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_engine/commands/robot/__init__.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_engine/commands/robot/close_gripper_jaw.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_engine/commands/robot/common.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_engine/commands/robot/move_axes_relative.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_engine/commands/robot/move_axes_to.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_engine/commands/robot/move_to.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_engine/commands/robot/open_gripper_jaw.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_engine/commands/save_position.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_engine/commands/set_rail_lights.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_engine/commands/set_status_bar.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_engine/commands/temperature_module/__init__.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_engine/commands/temperature_module/deactivate.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_engine/commands/temperature_module/set_target_temperature.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_engine/commands/temperature_module/wait_for_temperature.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_engine/commands/thermocycler/__init__.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_engine/commands/thermocycler/close_lid.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_engine/commands/thermocycler/deactivate_block.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_engine/commands/thermocycler/deactivate_lid.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_engine/commands/thermocycler/open_lid.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_engine/commands/thermocycler/run_extended_profile.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_engine/commands/thermocycler/run_profile.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_engine/commands/thermocycler/set_target_block_temperature.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_engine/commands/thermocycler/set_target_lid_temperature.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_engine/commands/thermocycler/wait_for_block_temperature.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_engine/commands/thermocycler/wait_for_lid_temperature.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_engine/commands/touch_tip.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_engine/commands/unsafe/__init__.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_engine/commands/unsafe/unsafe_blow_out_in_place.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_engine/commands/unsafe/unsafe_drop_tip_in_place.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_engine/commands/unsafe/unsafe_engage_axes.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_engine/commands/unsafe/unsafe_place_labware.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_engine/commands/unsafe/unsafe_ungrip_labware.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_engine/commands/unsafe/update_position_estimators.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_engine/commands/verify_tip_presence.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_engine/commands/wait_for_duration.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_engine/commands/wait_for_resume.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_engine/create_protocol_engine.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_engine/engine_support.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_engine/error_recovery_policy.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_engine/errors/error_occurrence.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_engine/execution/__init__.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_engine/execution/command_executor.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_engine/execution/create_queue_worker.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_engine/execution/door_watcher.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_engine/execution/equipment.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_engine/execution/error_recovery_hardware_state_synchronizer.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_engine/execution/gantry_mover.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_engine/execution/hardware_stopper.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_engine/execution/heater_shaker_movement_flagger.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_engine/execution/labware_movement.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_engine/execution/movement.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_engine/execution/queue_worker.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_engine/execution/rail_lights.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_engine/execution/run_control.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_engine/execution/status_bar.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_engine/execution/thermocycler_movement_flagger.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_engine/execution/thermocycler_plate_lifter.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_engine/execution/tip_handler.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_engine/labware_offset_standardization.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_engine/notes/__init__.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_engine/notes/notes.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_engine/plugins.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_engine/protocol_engine.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_engine/resources/__init__.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_engine/resources/deck_configuration_provider.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_engine/resources/deck_data_provider.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_engine/resources/file_provider.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_engine/resources/fixture_validation.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_engine/resources/labware_data_provider.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_engine/resources/labware_validation.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_engine/resources/model_utils.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_engine/resources/module_data_provider.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_engine/resources/ot3_validation.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_engine/resources/pipette_data_provider.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_engine/slot_standardization.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_engine/state/__init__.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_engine/state/_abstract_store.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_engine/state/_move_types.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_engine/state/_well_math.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_engine/state/addressable_areas.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_engine/state/command_history.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_engine/state/commands.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_engine/state/config.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_engine/state/files.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_engine/state/fluid_stack.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_engine/state/frustum_helpers.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_engine/state/labware.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_engine/state/liquid_classes.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_engine/state/liquids.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_engine/state/module_substates/__init__.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_engine/state/module_substates/absorbance_reader_substate.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_engine/state/module_substates/flex_stacker_substate.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_engine/state/module_substates/heater_shaker_module_substate.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_engine/state/module_substates/magnetic_block_substate.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_engine/state/module_substates/magnetic_module_substate.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_engine/state/module_substates/temperature_module_substate.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_engine/state/module_substates/thermocycler_module_substate.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_engine/state/motion.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_engine/state/pipettes.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_engine/state/state.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_engine/state/state_summary.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_engine/state/tips.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_engine/state/update_types.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_engine/state/wells.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_engine/types/automatic_tip_selection.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_engine/types/command_annotations.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_engine/types/deck_configuration.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_engine/types/execution.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_engine/types/hardware_passthrough.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_engine/types/instrument.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_engine/types/instrument_sensors.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_engine/types/labware.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_engine/types/labware_movement.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_engine/types/labware_offset_location.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_engine/types/labware_offset_vector.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_engine/types/liquid.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_engine/types/liquid_class.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_engine/types/liquid_handling.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_engine/types/location.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_engine/types/partial_tip_configuration.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_engine/types/run_time_parameters.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_engine/types/tip.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_engine/types/util.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_engine/types/well_position.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_reader/__init__.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_reader/extract_labware_definitions.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_reader/file_format_validator.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_reader/file_hasher.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_reader/file_identifier.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_reader/file_reader_writer.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_reader/input_file.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_reader/protocol_files_invalid_error.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_reader/protocol_reader.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_reader/protocol_source.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_reader/role_analyzer.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_runner/__init__.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_runner/create_simulating_orchestrator.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_runner/json_file_reader.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_runner/json_translator.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_runner/legacy_command_mapper.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_runner/legacy_context_plugin.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_runner/protocol_runner.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_runner/python_protocol_wrappers.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_runner/run_orchestrator.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_runner/task_queue.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocols/__init__.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocols/advanced_control/__init__.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocols/advanced_control/common.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocols/advanced_control/mix.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocols/advanced_control/transfers/__init__.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocols/advanced_control/transfers/common.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocols/advanced_control/transfers/transfer.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocols/advanced_control/transfers/transfer_liquid_utils.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocols/api_support/__init__.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocols/api_support/constants.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocols/api_support/deck_type.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocols/api_support/definitions.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocols/api_support/instrument.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocols/api_support/labware_like.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocols/api_support/tip_tracker.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocols/api_support/types.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocols/api_support/util.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocols/bundle.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocols/duration/__init__.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocols/duration/errors.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocols/duration/estimator.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocols/execution/__init__.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocols/execution/dev_types.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocols/execution/errors.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocols/execution/execute.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocols/execution/execute_json_v3.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocols/execution/execute_json_v4.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocols/execution/execute_json_v5.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocols/execution/execute_python.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocols/execution/json_dispatchers.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocols/execution/types.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocols/geometry/__init__.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocols/geometry/labware_geometry.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocols/geometry/planning.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocols/labware.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocols/models/__init__.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocols/models/json_protocol.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocols/parameters/__init__.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocols/parameters/csv_parameter_definition.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocols/parameters/csv_parameter_interface.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocols/parameters/exceptions.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocols/parameters/parameter_definition.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocols/parameters/types.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocols/parameters/validation.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocols/parse.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocols/types.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/py.typed +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/resources/scripts/lpc21isp +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/resources/smoothie-edge-8414642.hex +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/simulate.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/system/__init__.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/system/camera.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/system/log_control.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/system/nmcli.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/system/resin.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/system/smoothie_update.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/system/wifi.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/tools/__init__.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/tools/args_handler.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/tools/write_pipette_memory.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/types.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/util/__init__.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/util/async_helpers.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/util/broker.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/util/change_notifier.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/util/entrypoint_util.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/util/get_union_elements.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/util/helpers.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/util/linal.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/util/logging_config.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/util/logging_queue_handler.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/util/performance_helpers.py +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons.egg-info/SOURCES.txt +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons.egg-info/dependency_links.txt +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons.egg-info/entry_points.txt +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons.egg-info/not-zip-safe +0 -0
- {opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons.egg-info/top_level.txt +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: opentrons
|
|
3
|
-
Version: 8.4.
|
|
3
|
+
Version: 8.4.0a8
|
|
4
4
|
Summary: The Opentrons API is a simple framework designed to make writing automated biology lab protocols easy.
|
|
5
5
|
Author: Opentrons
|
|
6
6
|
Author-email: engineering@opentrons.com
|
|
@@ -21,7 +21,7 @@ Classifier: Programming Language :: Python :: 3.10
|
|
|
21
21
|
Classifier: Topic :: Scientific/Engineering
|
|
22
22
|
Requires-Python: >=3.10
|
|
23
23
|
License-File: ../LICENSE
|
|
24
|
-
Requires-Dist: opentrons-shared-data==8.4.
|
|
24
|
+
Requires-Dist: opentrons-shared-data==8.4.0a8
|
|
25
25
|
Requires-Dist: aionotify==0.3.1
|
|
26
26
|
Requires-Dist: anyio<4.0.0,>=3.6.1
|
|
27
27
|
Requires-Dist: jsonschema<4.18.0,>=3.0.1
|
|
@@ -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.4.
|
|
38
|
+
Requires-Dist: opentrons-hardware==8.4.0a8; extra == "ot2-hardware"
|
|
39
39
|
Provides-Extra: flex-hardware
|
|
40
|
-
Requires-Dist: opentrons-hardware[FLEX]==8.4.
|
|
40
|
+
Requires-Dist: opentrons-hardware[FLEX]==8.4.0a8; extra == "flex-hardware"
|
|
41
41
|
|
|
42
42
|
.. _Full API Documentation: http://docs.opentrons.com
|
|
43
43
|
|
{opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_api/core/engine/instrument.py
RENAMED
|
@@ -834,7 +834,7 @@ class InstrumentCore(AbstractInstrument[WellCore, LabwareCore]):
|
|
|
834
834
|
)
|
|
835
835
|
)
|
|
836
836
|
|
|
837
|
-
def resin_tip_unseal(self, location: Location, well_core: WellCore) -> None:
|
|
837
|
+
def resin_tip_unseal(self, location: Location | None, well_core: WellCore) -> None:
|
|
838
838
|
well_name = well_core.get_name()
|
|
839
839
|
labware_id = well_core.labware_id
|
|
840
840
|
|
|
@@ -1188,9 +1188,9 @@ class InstrumentCore(AbstractInstrument[WellCore, LabwareCore]):
|
|
|
1188
1188
|
cmd.GetNextTipParams(
|
|
1189
1189
|
pipetteId=self._pipette_id,
|
|
1190
1190
|
labwareIds=[tip_rack.labware_id for tip_rack in valid_tip_racks],
|
|
1191
|
-
startingTipWell=
|
|
1192
|
-
|
|
1193
|
-
|
|
1191
|
+
startingTipWell=(
|
|
1192
|
+
starting_well.get_name() if starting_well is not None else None
|
|
1193
|
+
),
|
|
1194
1194
|
)
|
|
1195
1195
|
)
|
|
1196
1196
|
next_tip_info = result.nextTipInfo
|
|
@@ -3,7 +3,7 @@ from typing import Optional, Union
|
|
|
3
3
|
|
|
4
4
|
from opentrons_shared_data.labware.constants import WELL_NAME_PATTERN
|
|
5
5
|
|
|
6
|
-
from opentrons.types import Point
|
|
6
|
+
from opentrons.types import Point, Mount, MountType
|
|
7
7
|
|
|
8
8
|
from opentrons.protocol_engine import WellLocation, WellOrigin, WellOffset
|
|
9
9
|
from opentrons.protocol_engine import commands as cmd
|
|
@@ -13,6 +13,7 @@ from opentrons.protocol_engine.types.liquid_level_detection import (
|
|
|
13
13
|
SimulatedProbeResult,
|
|
14
14
|
LiquidTrackingType,
|
|
15
15
|
)
|
|
16
|
+
from opentrons.protocol_engine.errors import PipetteNotAttachedError
|
|
16
17
|
|
|
17
18
|
from . import point_calculations
|
|
18
19
|
from . import stringify
|
|
@@ -181,15 +182,25 @@ class WellCore(AbstractWellCore):
|
|
|
181
182
|
|
|
182
183
|
def estimate_liquid_height_after_pipetting(
|
|
183
184
|
self,
|
|
185
|
+
mount: Mount | str,
|
|
184
186
|
operation_volume: float,
|
|
185
187
|
) -> LiquidTrackingType:
|
|
186
188
|
"""Return an estimate of liquid height after pipetting without raising an error."""
|
|
187
189
|
labware_id = self.labware_id
|
|
188
190
|
well_name = self._name
|
|
191
|
+
if isinstance(mount, Mount):
|
|
192
|
+
mount_type = MountType.from_hw_mount(mount)
|
|
193
|
+
else:
|
|
194
|
+
mount_type = MountType(mount)
|
|
195
|
+
pipette_from_mount = self._engine_client.state.pipettes.get_by_mount(mount_type)
|
|
196
|
+
if pipette_from_mount is None:
|
|
197
|
+
raise PipetteNotAttachedError(f"No pipette present on mount {mount}")
|
|
198
|
+
pipette_id = pipette_from_mount.id
|
|
189
199
|
starting_liquid_height = self.current_liquid_height()
|
|
190
200
|
projected_final_height = self._engine_client.state.geometry.get_well_height_after_liquid_handling_no_error(
|
|
191
201
|
labware_id=labware_id,
|
|
192
202
|
well_name=well_name,
|
|
203
|
+
pipette_id=pipette_id,
|
|
193
204
|
initial_height=starting_liquid_height,
|
|
194
205
|
volume=operation_volume,
|
|
195
206
|
)
|
|
@@ -332,7 +332,7 @@ class LegacyInstrumentCore(AbstractInstrument[LegacyWellCore, LegacyLabwareCore]
|
|
|
332
332
|
|
|
333
333
|
def resin_tip_unseal(
|
|
334
334
|
self,
|
|
335
|
-
location: types.Location,
|
|
335
|
+
location: types.Location | None,
|
|
336
336
|
well_core: WellCore,
|
|
337
337
|
) -> None:
|
|
338
338
|
raise APIVersionError(api_element="Unsealing resin tips.")
|
{opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_api/core/legacy/legacy_well_core.py
RENAMED
|
@@ -5,7 +5,7 @@ from opentrons_shared_data.labware.constants import WELL_NAME_PATTERN
|
|
|
5
5
|
|
|
6
6
|
from opentrons.protocols.api_support.util import APIVersionError
|
|
7
7
|
|
|
8
|
-
from opentrons.types import Point
|
|
8
|
+
from opentrons.types import Point, Mount
|
|
9
9
|
|
|
10
10
|
from opentrons.protocol_engine.types.liquid_level_detection import (
|
|
11
11
|
SimulatedProbeResult,
|
|
@@ -129,6 +129,7 @@ class LegacyWellCore(AbstractWellCore):
|
|
|
129
129
|
|
|
130
130
|
def estimate_liquid_height_after_pipetting(
|
|
131
131
|
self,
|
|
132
|
+
mount: Mount | str,
|
|
132
133
|
operation_volume: float,
|
|
133
134
|
) -> LiquidTrackingType:
|
|
134
135
|
"""Estimate what the liquid height will be after pipetting, without raising an error."""
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
from abc import ABC, abstractmethod
|
|
4
4
|
from typing import TypeVar, Optional, Union
|
|
5
5
|
|
|
6
|
-
from opentrons.types import Point
|
|
6
|
+
from opentrons.types import Point, Mount
|
|
7
7
|
from opentrons.protocol_engine.types import LiquidTrackingType
|
|
8
8
|
|
|
9
9
|
from .._liquid import Liquid
|
|
@@ -91,6 +91,7 @@ class AbstractWellCore(ABC):
|
|
|
91
91
|
@abstractmethod
|
|
92
92
|
def estimate_liquid_height_after_pipetting(
|
|
93
93
|
self,
|
|
94
|
+
mount: Mount | str,
|
|
94
95
|
operation_volume: float,
|
|
95
96
|
) -> LiquidTrackingType:
|
|
96
97
|
"""Estimate what the liquid height will be after pipetting, without raising an error."""
|
|
@@ -606,7 +606,20 @@ class InstrumentContext(publisher.CommandPublisher):
|
|
|
606
606
|
"Blow_out being performed on a tiprack. "
|
|
607
607
|
"Please re-check your code"
|
|
608
608
|
)
|
|
609
|
-
|
|
609
|
+
if target.location:
|
|
610
|
+
# because the lower levels of blowout don't handle LiquidHandlingWellLocation and
|
|
611
|
+
# there is no "operation_volume" for blowout we need to convert the relative location
|
|
612
|
+
# given with a .meniscus to an absolute point. To maintain the meniscus behavior
|
|
613
|
+
# we can just add the offset to the current liquid height.
|
|
614
|
+
if target.location.meniscus_tracking:
|
|
615
|
+
move_to_location = target.well.bottom(
|
|
616
|
+
target.well.current_liquid_height() # type: ignore [arg-type]
|
|
617
|
+
+ target.location.point.z
|
|
618
|
+
)
|
|
619
|
+
else:
|
|
620
|
+
move_to_location = target.location
|
|
621
|
+
else:
|
|
622
|
+
move_to_location = target.well.top()
|
|
610
623
|
well = target.well
|
|
611
624
|
elif isinstance(target, validation.PointTarget):
|
|
612
625
|
move_to_location = target.location
|
|
@@ -1528,6 +1541,9 @@ class InstrumentContext(publisher.CommandPublisher):
|
|
|
1528
1541
|
) -> InstrumentContext:
|
|
1529
1542
|
"""Move a particular type of liquid from one well or group of wells to another.
|
|
1530
1543
|
|
|
1544
|
+
..
|
|
1545
|
+
This is intended for Opentrons internal use only and is not a guaranteed API.
|
|
1546
|
+
|
|
1531
1547
|
:param liquid_class: The type of liquid to move. You must specify the liquid class,
|
|
1532
1548
|
even if you have used :py:meth:`.Labware.load_liquid` to indicate what liquid the
|
|
1533
1549
|
source contains.
|
|
@@ -1553,7 +1569,7 @@ class InstrumentContext(publisher.CommandPublisher):
|
|
|
1553
1569
|
:param return_tip: Whether to drop used tips in their original locations
|
|
1554
1570
|
in the tip rack, instead of the trash.
|
|
1555
1571
|
|
|
1556
|
-
|
|
1572
|
+
:meta private:
|
|
1557
1573
|
"""
|
|
1558
1574
|
if volume == 0.0:
|
|
1559
1575
|
_log.info(
|
|
@@ -1608,9 +1624,9 @@ class InstrumentContext(publisher.CommandPublisher):
|
|
|
1608
1624
|
(types.Location(types.Point(), labware=rack), rack._core)
|
|
1609
1625
|
for rack in transfer_args.tip_racks
|
|
1610
1626
|
],
|
|
1611
|
-
starting_tip=
|
|
1612
|
-
|
|
1613
|
-
|
|
1627
|
+
starting_tip=(
|
|
1628
|
+
self.starting_tip._core if self.starting_tip is not None else None
|
|
1629
|
+
),
|
|
1614
1630
|
trash_location=transfer_args.trash_location,
|
|
1615
1631
|
return_tip=return_tip,
|
|
1616
1632
|
)
|
|
@@ -1635,6 +1651,9 @@ class InstrumentContext(publisher.CommandPublisher):
|
|
|
1635
1651
|
"""
|
|
1636
1652
|
Distribute a particular type of liquid from one well to a group of wells.
|
|
1637
1653
|
|
|
1654
|
+
..
|
|
1655
|
+
This is intended for Opentrons internal use only and is not a guaranteed API.
|
|
1656
|
+
|
|
1638
1657
|
:param liquid_class: The type of liquid to move. You must specify the liquid class,
|
|
1639
1658
|
even if you have used :py:meth:`.Labware.load_liquid` to indicate what liquid the
|
|
1640
1659
|
source contains.
|
|
@@ -1657,7 +1676,7 @@ class InstrumentContext(publisher.CommandPublisher):
|
|
|
1657
1676
|
:param return_tip: Whether to drop used tips in their original locations
|
|
1658
1677
|
in the tip rack, instead of the trash.
|
|
1659
1678
|
|
|
1660
|
-
|
|
1679
|
+
:meta private:
|
|
1661
1680
|
"""
|
|
1662
1681
|
if volume == 0.0:
|
|
1663
1682
|
_log.info(
|
|
@@ -1721,9 +1740,9 @@ class InstrumentContext(publisher.CommandPublisher):
|
|
|
1721
1740
|
(types.Location(types.Point(), labware=rack), rack._core)
|
|
1722
1741
|
for rack in transfer_args.tip_racks
|
|
1723
1742
|
],
|
|
1724
|
-
starting_tip=
|
|
1725
|
-
|
|
1726
|
-
|
|
1743
|
+
starting_tip=(
|
|
1744
|
+
self.starting_tip._core if self.starting_tip is not None else None
|
|
1745
|
+
),
|
|
1727
1746
|
trash_location=transfer_args.trash_location,
|
|
1728
1747
|
return_tip=return_tip,
|
|
1729
1748
|
)
|
|
@@ -1748,6 +1767,9 @@ class InstrumentContext(publisher.CommandPublisher):
|
|
|
1748
1767
|
"""
|
|
1749
1768
|
Consolidate a particular type of liquid from a group of wells to one well.
|
|
1750
1769
|
|
|
1770
|
+
..
|
|
1771
|
+
This is intended for Opentrons internal use only and is not a guaranteed API.
|
|
1772
|
+
|
|
1751
1773
|
:param liquid_class: The type of liquid to move. You must specify the liquid class,
|
|
1752
1774
|
even if you have used :py:meth:`.Labware.load_liquid` to indicate what liquid the
|
|
1753
1775
|
source contains.
|
|
@@ -1770,7 +1792,7 @@ class InstrumentContext(publisher.CommandPublisher):
|
|
|
1770
1792
|
:param return_tip: Whether to drop used tips in their original locations
|
|
1771
1793
|
in the tip rack, instead of the trash.
|
|
1772
1794
|
|
|
1773
|
-
|
|
1795
|
+
:meta private:
|
|
1774
1796
|
"""
|
|
1775
1797
|
if volume == 0.0:
|
|
1776
1798
|
_log.info(
|
|
@@ -1834,9 +1856,9 @@ class InstrumentContext(publisher.CommandPublisher):
|
|
|
1834
1856
|
(types.Location(types.Point(), labware=rack), rack._core)
|
|
1835
1857
|
for rack in transfer_args.tip_racks
|
|
1836
1858
|
],
|
|
1837
|
-
starting_tip=
|
|
1838
|
-
|
|
1839
|
-
|
|
1859
|
+
starting_tip=(
|
|
1860
|
+
self.starting_tip._core if self.starting_tip is not None else None
|
|
1861
|
+
),
|
|
1840
1862
|
trash_location=transfer_args.trash_location,
|
|
1841
1863
|
return_tip=return_tip,
|
|
1842
1864
|
)
|
|
@@ -1944,19 +1966,19 @@ class InstrumentContext(publisher.CommandPublisher):
|
|
|
1944
1966
|
|
|
1945
1967
|
return self
|
|
1946
1968
|
|
|
1947
|
-
@requires_version(2,
|
|
1969
|
+
@requires_version(2, 23)
|
|
1948
1970
|
def resin_tip_seal(
|
|
1949
1971
|
self,
|
|
1950
1972
|
location: Union[labware.Well, labware.Labware],
|
|
1951
1973
|
) -> InstrumentContext:
|
|
1952
1974
|
"""Seal resin tips onto the pipette.
|
|
1953
1975
|
|
|
1954
|
-
The location provided should contain resin tips.
|
|
1955
|
-
|
|
1956
|
-
|
|
1976
|
+
The location provided should contain resin tips. The pipette will attach itself
|
|
1977
|
+
to the resin tips but does not check any tip presence sensors. Before the pipette
|
|
1978
|
+
seals to the tips, the plunger will rise to the top of its working range so that
|
|
1979
|
+
it can perform a :py:func:`resin_tip_dispense` immediately.
|
|
1957
1980
|
|
|
1958
1981
|
:param location: A location containing resin tips, must be a Labware or a Well.
|
|
1959
|
-
|
|
1960
1982
|
:type location: :py:class:`~.types.Location`
|
|
1961
1983
|
"""
|
|
1962
1984
|
if isinstance(location, labware.Labware):
|
|
@@ -1976,7 +1998,7 @@ class InstrumentContext(publisher.CommandPublisher):
|
|
|
1976
1998
|
)
|
|
1977
1999
|
return self
|
|
1978
2000
|
|
|
1979
|
-
@requires_version(2,
|
|
2001
|
+
@requires_version(2, 23)
|
|
1980
2002
|
def resin_tip_unseal(
|
|
1981
2003
|
self,
|
|
1982
2004
|
location: Union[labware.Well, labware.Labware],
|
|
@@ -2010,35 +2032,66 @@ class InstrumentContext(publisher.CommandPublisher):
|
|
|
2010
2032
|
location=well,
|
|
2011
2033
|
),
|
|
2012
2034
|
):
|
|
2013
|
-
self._core.resin_tip_unseal(location=
|
|
2035
|
+
self._core.resin_tip_unseal(location=None, well_core=well._core)
|
|
2014
2036
|
|
|
2015
2037
|
return self
|
|
2016
2038
|
|
|
2017
|
-
@requires_version(2,
|
|
2039
|
+
@requires_version(2, 23)
|
|
2018
2040
|
def resin_tip_dispense(
|
|
2019
2041
|
self,
|
|
2020
2042
|
location: types.Location,
|
|
2021
2043
|
volume: Optional[float] = None,
|
|
2022
2044
|
rate: Optional[float] = None,
|
|
2023
2045
|
) -> InstrumentContext:
|
|
2024
|
-
"""
|
|
2046
|
+
"""Push liquid out of resin tips that are currently sealed to a pipette.
|
|
2047
|
+
|
|
2048
|
+
The volume and rate parameters for this function control the motion of the plunger
|
|
2049
|
+
to create a desired pressure profile inside the pipette chamber. Unlike a regular
|
|
2050
|
+
dispense action, the volume and rate do not correspond to liquid volume or flow rate
|
|
2051
|
+
dispensed from the resin tips. Select your values for volume and flow rate based on
|
|
2052
|
+
experimentation with the resin tips to create a pressure profile.
|
|
2053
|
+
|
|
2054
|
+
The common way to use this function is as follows:
|
|
2055
|
+
|
|
2056
|
+
#. Seal resin tips to the pipette using :py:meth:`InstrumentContext.resin_tip_seal`.
|
|
2057
|
+
|
|
2058
|
+
#. Use :py:meth:`InstrumentContext.resin_tip_dispense` to displace an experimentally
|
|
2059
|
+
derived volume at an experimentally derived rate to create an experimentally derived
|
|
2060
|
+
target pressure inside the pipette.
|
|
2061
|
+
|
|
2062
|
+
#. Use :py:meth:`ProtocolContext.delay` to wait an experimentally derived amount of
|
|
2063
|
+
time for the pressure inside the pipette to push liquid into and through the resin tip
|
|
2064
|
+
and out the other side.
|
|
2065
|
+
|
|
2066
|
+
#. As liquid passes through the resin tip, the pressure inside the pipette will
|
|
2067
|
+
fall. If not all liquid has been dispensed from the resin tip, repeat steps 2
|
|
2068
|
+
and 3.
|
|
2025
2069
|
|
|
2026
|
-
|
|
2027
|
-
receptical for dispensed liquid. Dispensing from tip will perform a
|
|
2028
|
-
`dispense` action of the specified volume at a desired flow rate.
|
|
2070
|
+
#. Unseal resin tips from the pipette using :py:meth:`InstrumentContext.resin_tip_unseal`.
|
|
2029
2071
|
|
|
2030
|
-
|
|
2072
|
+
Flex pipette pressure sensors will raise an overpressure when a differential pressure
|
|
2073
|
+
inside the pipette chamber above sensor limits is detected. You may need to disable the
|
|
2074
|
+
pressure sensor to create the required pressure profile.
|
|
2075
|
+
|
|
2076
|
+
.. warning::
|
|
2077
|
+
Building excessive pressure inside the pipette chamber (significantly above the sensor
|
|
2078
|
+
limit) with the pressure sensors disabled can damage the pipette.
|
|
2079
|
+
|
|
2080
|
+
|
|
2081
|
+
:param location: Tells the robot where to dispense.
|
|
2031
2082
|
:type location: :py:class:`~.types.Location`
|
|
2032
2083
|
|
|
2033
|
-
:param volume:
|
|
2034
|
-
|
|
2084
|
+
:param volume: The volume that the plunger should displace, in µL. Does not directly relate
|
|
2085
|
+
to the volume of liquid that will be dispensed.
|
|
2035
2086
|
:type volume: float
|
|
2036
2087
|
|
|
2037
|
-
:param rate:
|
|
2038
|
-
|
|
2039
|
-
|
|
2040
|
-
|
|
2088
|
+
:param rate: How quickly the plunger moves to displace the commanded volume. The plunger speed
|
|
2089
|
+
in µL/s is calculated as ``rate`` multiplied by
|
|
2090
|
+
:py:attr:`flow_rate.dispense<flow_rate>`. This rate does not directly relate to
|
|
2091
|
+
the flow rate of liquid out of the resin tip.
|
|
2041
2092
|
|
|
2093
|
+
The default value of ``10.0`` is recommended.
|
|
2094
|
+
:type rate: float
|
|
2042
2095
|
"""
|
|
2043
2096
|
well: Optional[labware.Well] = None
|
|
2044
2097
|
last_location = self._get_last_location_by_api_version()
|
|
@@ -2658,7 +2711,8 @@ class InstrumentContext(publisher.CommandPublisher):
|
|
|
2658
2711
|
"""
|
|
2659
2712
|
self._raise_if_pressure_not_supported_by_pipette()
|
|
2660
2713
|
loc = well.top()
|
|
2661
|
-
|
|
2714
|
+
self._core.liquid_probe_with_recovery(well._core, loc)
|
|
2715
|
+
return well.current_liquid_height()
|
|
2662
2716
|
|
|
2663
2717
|
def _raise_if_configuration_not_supported_by_pipette(
|
|
2664
2718
|
self, style: NozzleLayout
|
|
@@ -39,6 +39,7 @@ from opentrons.types import (
|
|
|
39
39
|
Point,
|
|
40
40
|
NozzleMapInterface,
|
|
41
41
|
MeniscusTrackingTarget,
|
|
42
|
+
Mount,
|
|
42
43
|
)
|
|
43
44
|
from opentrons.protocols.api_support.types import APIVersion
|
|
44
45
|
from opentrons.protocols.api_support.util import (
|
|
@@ -348,6 +349,7 @@ class Well:
|
|
|
348
349
|
@requires_version(2, 21)
|
|
349
350
|
def estimate_liquid_height_after_pipetting(
|
|
350
351
|
self,
|
|
352
|
+
mount: Mount | str,
|
|
351
353
|
operation_volume: float,
|
|
352
354
|
) -> LiquidTrackingType:
|
|
353
355
|
"""Check the height of the liquid within a well.
|
|
@@ -360,7 +362,7 @@ class Well:
|
|
|
360
362
|
"""
|
|
361
363
|
|
|
362
364
|
projected_final_height = self._core.estimate_liquid_height_after_pipetting(
|
|
363
|
-
operation_volume=operation_volume,
|
|
365
|
+
operation_volume=operation_volume, mount=mount
|
|
364
366
|
)
|
|
365
367
|
return projected_final_height
|
|
366
368
|
|
|
@@ -1363,6 +1363,8 @@ class ProtocolContext(CommandPublisher):
|
|
|
1363
1363
|
) -> LiquidClass:
|
|
1364
1364
|
"""
|
|
1365
1365
|
Define a liquid class for use in the protocol.
|
|
1366
|
+
..
|
|
1367
|
+
This is intended for Opentrons internal use only and is not a guaranteed API.
|
|
1366
1368
|
|
|
1367
1369
|
:meta private:
|
|
1368
1370
|
"""
|
{opentrons-8.4.0a6 → opentrons-8.4.0a8}/src/opentrons/protocol_engine/commands/liquid_probe.py
RENAMED
|
@@ -188,6 +188,12 @@ async def _execute_common( # noqa: C901
|
|
|
188
188
|
well_name=well_name,
|
|
189
189
|
well_location=params.wellLocation,
|
|
190
190
|
)
|
|
191
|
+
state_view.geometry.validate_probed_height(
|
|
192
|
+
labware_id=labware_id,
|
|
193
|
+
well_name=well_name,
|
|
194
|
+
pipette_id=pipette_id,
|
|
195
|
+
probed_height=z_pos,
|
|
196
|
+
)
|
|
191
197
|
except PipetteLiquidNotFoundError as exception:
|
|
192
198
|
move_result.state_update.set_pipette_ready_to_aspirate(
|
|
193
199
|
pipette_id=pipette_id, ready_to_aspirate=True
|
|
@@ -1,12 +1,15 @@
|
|
|
1
1
|
"""Seal tips to pipette command request, result, and implementation models."""
|
|
2
2
|
|
|
3
3
|
from __future__ import annotations
|
|
4
|
-
from pydantic import Field, BaseModel
|
|
5
4
|
from typing import TYPE_CHECKING, Optional, Type, Union
|
|
6
|
-
|
|
7
|
-
from opentrons.protocol_engine.types import MotorAxis
|
|
5
|
+
|
|
8
6
|
from typing_extensions import Literal
|
|
7
|
+
from pydantic import Field, BaseModel
|
|
8
|
+
|
|
9
|
+
from opentrons_shared_data.errors.exceptions import PositionUnknownError
|
|
9
10
|
|
|
11
|
+
from opentrons.types import MountType
|
|
12
|
+
from opentrons.protocol_engine.types import MotorAxis
|
|
10
13
|
from ..resources import ModelUtils, ensure_ot3_hardware
|
|
11
14
|
from ..types import PickUpTipWellLocation, FluidKind, AspiratedFluid
|
|
12
15
|
from .pipetting_common import (
|
|
@@ -27,7 +30,6 @@ from .command import (
|
|
|
27
30
|
|
|
28
31
|
from opentrons.hardware_control import HardwareControlAPI
|
|
29
32
|
from opentrons.hardware_control.types import Axis
|
|
30
|
-
from ..state.update_types import StateUpdate
|
|
31
33
|
|
|
32
34
|
if TYPE_CHECKING:
|
|
33
35
|
from ..state.state import StateView
|
|
@@ -138,28 +140,50 @@ class SealPipetteToTipImplementation(
|
|
|
138
140
|
"""A relative press-fit pick up command using gantry moves."""
|
|
139
141
|
prep_distance = tip_pick_up_params.prepDistance
|
|
140
142
|
press_distance = tip_pick_up_params.pressDistance
|
|
141
|
-
retract_distance = -1 * (
|
|
143
|
+
retract_distance = -1 * (press_distance) / 2
|
|
142
144
|
|
|
143
145
|
mount_axis = MotorAxis.LEFT_Z if mount == MountType.LEFT else MotorAxis.RIGHT_Z
|
|
144
|
-
|
|
146
|
+
ot3_hardware_api = ensure_ot3_hardware(self._hardware_api)
|
|
145
147
|
# TODO chb, 2025-01-29): Factor out the movement constants and relocate this logic into the hardware controller
|
|
146
|
-
|
|
147
|
-
|
|
148
|
+
try:
|
|
149
|
+
await self._gantry_mover.move_axes(
|
|
150
|
+
axis_map={mount_axis: prep_distance},
|
|
151
|
+
speed=10,
|
|
152
|
+
relative_move=True,
|
|
153
|
+
expect_stalls=True,
|
|
154
|
+
)
|
|
155
|
+
except PositionUnknownError:
|
|
156
|
+
# if this happens it's from the get position after the move and we can ignore it
|
|
157
|
+
pass
|
|
158
|
+
|
|
159
|
+
await ot3_hardware_api.update_axis_position_estimations(
|
|
160
|
+
self._gantry_mover.motor_axes_to_present_hardware_axes([mount_axis])
|
|
148
161
|
)
|
|
149
162
|
|
|
150
163
|
# Drive mount down for press-fit
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
164
|
+
try:
|
|
165
|
+
await self._gantry_mover.move_axes(
|
|
166
|
+
axis_map={mount_axis: press_distance},
|
|
167
|
+
speed=10.0,
|
|
168
|
+
relative_move=True,
|
|
169
|
+
expect_stalls=True,
|
|
170
|
+
)
|
|
171
|
+
except PositionUnknownError:
|
|
172
|
+
# if this happens it's from the get position after the move and we can ignore it
|
|
173
|
+
pass
|
|
174
|
+
|
|
175
|
+
await ot3_hardware_api.update_axis_position_estimations(
|
|
176
|
+
self._gantry_mover.motor_axes_to_present_hardware_axes([mount_axis])
|
|
160
177
|
)
|
|
161
178
|
|
|
162
|
-
|
|
179
|
+
try:
|
|
180
|
+
await self._gantry_mover.move_axes(
|
|
181
|
+
axis_map={mount_axis: retract_distance}, speed=5.5, relative_move=True
|
|
182
|
+
)
|
|
183
|
+
except PositionUnknownError:
|
|
184
|
+
# if this happens it's from the get position after the move and we can ignore it
|
|
185
|
+
pass
|
|
186
|
+
|
|
163
187
|
await ot3_hardware_api.update_axis_position_estimations(
|
|
164
188
|
self._gantry_mover.motor_axes_to_present_hardware_axes([mount_axis])
|
|
165
189
|
)
|
|
@@ -283,13 +307,10 @@ class SealPipetteToTipImplementation(
|
|
|
283
307
|
if hw_instr is not None:
|
|
284
308
|
hw_instr.set_current_volume(_SAFE_TOP_VOLUME)
|
|
285
309
|
|
|
286
|
-
state_update =
|
|
287
|
-
state_update.update_pipette_tip_state(
|
|
310
|
+
state_update = move_result.state_update.update_pipette_tip_state(
|
|
288
311
|
pipette_id=pipette_id,
|
|
289
312
|
tip_geometry=tip_geometry,
|
|
290
|
-
)
|
|
291
|
-
|
|
292
|
-
state_update.set_fluid_aspirated(
|
|
313
|
+
).set_fluid_aspirated(
|
|
293
314
|
pipette_id=pipette_id,
|
|
294
315
|
fluid=AspiratedFluid(kind=FluidKind.LIQUID, volume=_SAFE_TOP_VOLUME),
|
|
295
316
|
)
|
|
@@ -3,12 +3,10 @@
|
|
|
3
3
|
from __future__ import annotations
|
|
4
4
|
|
|
5
5
|
from pydantic import Field
|
|
6
|
-
from typing import TYPE_CHECKING, Optional, Type
|
|
6
|
+
from typing import TYPE_CHECKING, Optional, Type, Final
|
|
7
7
|
from typing_extensions import Literal
|
|
8
8
|
|
|
9
9
|
from opentrons.protocol_engine.resources.model_utils import ModelUtils
|
|
10
|
-
from opentrons.protocol_engine.types import MotorAxis
|
|
11
|
-
from opentrons.types import MountType
|
|
12
10
|
|
|
13
11
|
from ..types import DropTipWellLocation
|
|
14
12
|
from .pipetting_common import (
|
|
@@ -56,6 +54,8 @@ _ExecuteReturn = (
|
|
|
56
54
|
SuccessData[UnsealPipetteFromTipResult] | DefinedErrorData[StallOrCollisionError]
|
|
57
55
|
)
|
|
58
56
|
|
|
57
|
+
CUSTOM_TIP_LENGTH_MARGIN: Final = 10
|
|
58
|
+
|
|
59
59
|
|
|
60
60
|
class UnsealPipetteFromTipImplementation(
|
|
61
61
|
AbstractCommandImpl[UnsealPipetteFromTipParams, _ExecuteReturn]
|
|
@@ -85,6 +85,10 @@ class UnsealPipetteFromTipImplementation(
|
|
|
85
85
|
|
|
86
86
|
well_location = params.wellLocation
|
|
87
87
|
|
|
88
|
+
tip_geometry = self._state_view.geometry.get_nominal_tip_geometry(
|
|
89
|
+
pipette_id, labware_id, well_name
|
|
90
|
+
)
|
|
91
|
+
|
|
88
92
|
is_partially_configured = self._state_view.pipettes.get_is_partially_configured(
|
|
89
93
|
pipette_id=pipette_id
|
|
90
94
|
)
|
|
@@ -93,6 +97,7 @@ class UnsealPipetteFromTipImplementation(
|
|
|
93
97
|
labware_id=labware_id,
|
|
94
98
|
well_location=well_location,
|
|
95
99
|
partially_configured=is_partially_configured,
|
|
100
|
+
override_default_offset=-(tip_geometry.length - CUSTOM_TIP_LENGTH_MARGIN),
|
|
96
101
|
)
|
|
97
102
|
|
|
98
103
|
move_result = await move_to_well(
|
|
@@ -106,14 +111,6 @@ class UnsealPipetteFromTipImplementation(
|
|
|
106
111
|
if isinstance(move_result, DefinedErrorData):
|
|
107
112
|
return move_result
|
|
108
113
|
|
|
109
|
-
# Move to an appropriate position
|
|
110
|
-
mount = self._state_view.pipettes.get_mount(pipette_id)
|
|
111
|
-
|
|
112
|
-
mount_axis = MotorAxis.LEFT_Z if mount == MountType.LEFT else MotorAxis.RIGHT_Z
|
|
113
|
-
await self._gantry_mover.move_axes(
|
|
114
|
-
axis_map={mount_axis: -14}, speed=10, relative_move=True
|
|
115
|
-
)
|
|
116
|
-
|
|
117
114
|
await self._tip_handler.drop_tip(
|
|
118
115
|
pipette_id=pipette_id,
|
|
119
116
|
home_after=None,
|
|
@@ -88,6 +88,7 @@ from .exceptions import (
|
|
|
88
88
|
OffsetLocationInvalidError,
|
|
89
89
|
FlexStackerLabwarePoolNotYetDefinedError,
|
|
90
90
|
FlexStackerNotLogicallyEmptyError,
|
|
91
|
+
InvalidLabwarePositionError,
|
|
91
92
|
)
|
|
92
93
|
|
|
93
94
|
from .error_occurrence import ErrorOccurrence, ProtocolCommandFailedError
|
|
@@ -171,6 +172,7 @@ __all__ = [
|
|
|
171
172
|
"OffsetLocationInvalidError",
|
|
172
173
|
"FlexStackerLabwarePoolNotYetDefinedError",
|
|
173
174
|
"FlexStackerNotLogicallyEmptyError",
|
|
175
|
+
"InvalidLabwarePositionError",
|
|
174
176
|
# error occurrence models
|
|
175
177
|
"ErrorOccurrence",
|
|
176
178
|
"CommandNotAllowedError",
|
|
@@ -1281,3 +1281,15 @@ class FlexStackerLabwarePoolNotYetDefinedError(ProtocolEngineError):
|
|
|
1281
1281
|
wrapping: Optional[Sequence[EnumeratedError]] = None,
|
|
1282
1282
|
) -> None:
|
|
1283
1283
|
super().__init__(ErrorCodes.GENERAL_ERROR, message, details, wrapping)
|
|
1284
|
+
|
|
1285
|
+
|
|
1286
|
+
class InvalidLabwarePositionError(ProtocolEngineError):
|
|
1287
|
+
"""Raised when a labware position is internally invalid."""
|
|
1288
|
+
|
|
1289
|
+
def __init__(
|
|
1290
|
+
self,
|
|
1291
|
+
message: Optional[str] = None,
|
|
1292
|
+
details: Optional[dict[str, Any]] = None,
|
|
1293
|
+
wrapping: Optional[Sequence[EnumeratedError]] = None,
|
|
1294
|
+
) -> None:
|
|
1295
|
+
super().__init__(ErrorCodes.GENERAL_ERROR, message, details, wrapping)
|