opentrons 8.4.0a4__tar.gz → 8.4.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.
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/PKG-INFO +4 -4
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_api/core/engine/instrument.py +30 -34
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_api/core/engine/transfer_components_executor.py +18 -2
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_api/core/instrument.py +4 -3
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_api/core/legacy/legacy_instrument_core.py +5 -3
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_api/core/legacy_simulator/legacy_instrument_core.py +4 -3
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_api/instrument_context.py +31 -16
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_api/labware.py +19 -38
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_engine/commands/aspirate_while_tracking.py +38 -59
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_engine/commands/dispense_while_tracking.py +36 -67
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_engine/execution/pipetting.py +1 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_engine/execution/tip_handler.py +68 -27
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_engine/state/frustum_helpers.py +1 -1
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_engine/state/geometry.py +2 -1
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/util/logging_config.py +94 -25
- opentrons-8.4.0a6/src/opentrons/util/logging_queue_handler.py +61 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons.egg-info/PKG-INFO +4 -4
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons.egg-info/SOURCES.txt +1 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons.egg-info/requires.txt +3 -3
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/MANIFEST.in +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/README.rst +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/setup.cfg +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/setup.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/__init__.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/_version.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/calibration_storage/__init__.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/calibration_storage/deck_configuration.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/calibration_storage/encoder_decoder.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/calibration_storage/file_operators.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/calibration_storage/helpers.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/calibration_storage/ot2/__init__.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/calibration_storage/ot2/deck_attitude.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/calibration_storage/ot2/mark_bad_calibration.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/calibration_storage/ot2/models/__init__.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/calibration_storage/ot2/models/v1.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/calibration_storage/ot2/pipette_offset.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/calibration_storage/ot2/tip_length.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/calibration_storage/ot3/__init__.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/calibration_storage/ot3/deck_attitude.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/calibration_storage/ot3/gripper_offset.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/calibration_storage/ot3/models/__init__.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/calibration_storage/ot3/models/v1.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/calibration_storage/ot3/module_offset.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/calibration_storage/ot3/pipette_offset.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/calibration_storage/types.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/cli/__init__.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/cli/__main__.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/cli/analyze.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/config/__init__.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/config/advanced_settings.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/config/defaults_ot2.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/config/defaults_ot3.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/config/feature_flags.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/config/gripper_config.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/config/reset.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/config/robot_configs.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/config/types.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/drivers/__init__.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/drivers/absorbance_reader/__init__.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/drivers/absorbance_reader/abstract.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/drivers/absorbance_reader/async_byonoy.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/drivers/absorbance_reader/driver.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/drivers/absorbance_reader/hid_protocol.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/drivers/absorbance_reader/simulator.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/drivers/asyncio/__init__.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/drivers/asyncio/communication/__init__.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/drivers/asyncio/communication/async_serial.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/drivers/asyncio/communication/errors.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/drivers/asyncio/communication/serial_connection.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/drivers/command_builder.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/drivers/flex_stacker/__init__.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/drivers/flex_stacker/abstract.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/drivers/flex_stacker/driver.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/drivers/flex_stacker/errors.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/drivers/flex_stacker/simulator.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/drivers/flex_stacker/types.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/drivers/flex_stacker/utils.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/drivers/heater_shaker/__init__.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/drivers/heater_shaker/abstract.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/drivers/heater_shaker/driver.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/drivers/heater_shaker/simulator.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/drivers/mag_deck/__init__.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/drivers/mag_deck/abstract.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/drivers/mag_deck/driver.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/drivers/mag_deck/simulator.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/drivers/rpi_drivers/__init__.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/drivers/rpi_drivers/dev_types.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/drivers/rpi_drivers/gpio.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/drivers/rpi_drivers/gpio_simulator.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/drivers/rpi_drivers/interfaces.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/drivers/rpi_drivers/types.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/drivers/rpi_drivers/usb.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/drivers/rpi_drivers/usb_simulator.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/drivers/serial_communication.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/drivers/smoothie_drivers/__init__.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/drivers/smoothie_drivers/connection.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/drivers/smoothie_drivers/constants.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/drivers/smoothie_drivers/driver_3_0.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/drivers/smoothie_drivers/errors.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/drivers/smoothie_drivers/parse_utils.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/drivers/smoothie_drivers/simulator.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/drivers/smoothie_drivers/types.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/drivers/temp_deck/__init__.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/drivers/temp_deck/abstract.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/drivers/temp_deck/driver.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/drivers/temp_deck/simulator.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/drivers/thermocycler/__init__.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/drivers/thermocycler/abstract.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/drivers/thermocycler/driver.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/drivers/thermocycler/simulator.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/drivers/types.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/drivers/utils.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/execute.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/hardware_control/__init__.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/hardware_control/__main__.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/hardware_control/adapters.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/hardware_control/api.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/hardware_control/backends/__init__.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/hardware_control/backends/controller.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/hardware_control/backends/errors.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/hardware_control/backends/estop_state.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/hardware_control/backends/flex_protocol.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/hardware_control/backends/ot3controller.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/hardware_control/backends/ot3simulator.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/hardware_control/backends/ot3utils.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/hardware_control/backends/simulator.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/hardware_control/backends/status_bar_state.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/hardware_control/backends/subsystem_manager.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/hardware_control/backends/tip_presence_manager.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/hardware_control/backends/types.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/hardware_control/constants.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/hardware_control/dev_types.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/hardware_control/emulation/__init__.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/hardware_control/emulation/abstract_emulator.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/hardware_control/emulation/app.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/hardware_control/emulation/connection_handler.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/hardware_control/emulation/heater_shaker.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/hardware_control/emulation/magdeck.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/hardware_control/emulation/module_server/__init__.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/hardware_control/emulation/module_server/client.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/hardware_control/emulation/module_server/helpers.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/hardware_control/emulation/module_server/models.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/hardware_control/emulation/module_server/server.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/hardware_control/emulation/parser.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/hardware_control/emulation/proxy.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/hardware_control/emulation/run_emulator.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/hardware_control/emulation/scripts/__init__.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/hardware_control/emulation/scripts/run_app.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/hardware_control/emulation/scripts/run_module_emulator.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/hardware_control/emulation/scripts/run_smoothie.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/hardware_control/emulation/settings.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/hardware_control/emulation/simulations.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/hardware_control/emulation/smoothie.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/hardware_control/emulation/tempdeck.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/hardware_control/emulation/thermocycler.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/hardware_control/emulation/types.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/hardware_control/emulation/util.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/hardware_control/errors.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/hardware_control/execution_manager.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/hardware_control/instruments/__init__.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/hardware_control/instruments/instrument_abc.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/hardware_control/instruments/ot2/__init__.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/hardware_control/instruments/ot2/instrument_calibration.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/hardware_control/instruments/ot2/pipette.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/hardware_control/instruments/ot2/pipette_handler.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/hardware_control/instruments/ot3/__init__.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/hardware_control/instruments/ot3/gripper.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/hardware_control/instruments/ot3/gripper_handler.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/hardware_control/instruments/ot3/instrument_calibration.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/hardware_control/instruments/ot3/pipette.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/hardware_control/instruments/ot3/pipette_handler.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/hardware_control/module_control.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/hardware_control/modules/__init__.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/hardware_control/modules/absorbance_reader.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/hardware_control/modules/errors.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/hardware_control/modules/flex_stacker.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/hardware_control/modules/heater_shaker.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/hardware_control/modules/lid_temp_status.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/hardware_control/modules/magdeck.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/hardware_control/modules/mod_abc.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/hardware_control/modules/module_calibration.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/hardware_control/modules/plate_temp_status.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/hardware_control/modules/tempdeck.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/hardware_control/modules/thermocycler.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/hardware_control/modules/types.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/hardware_control/modules/update.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/hardware_control/modules/utils.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/hardware_control/motion_utilities.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/hardware_control/nozzle_manager.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/hardware_control/ot3_calibration.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/hardware_control/ot3api.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/hardware_control/pause_manager.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/hardware_control/poller.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/hardware_control/protocols/__init__.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/hardware_control/protocols/asyncio_configurable.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/hardware_control/protocols/calibratable.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/hardware_control/protocols/chassis_accessory_manager.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/hardware_control/protocols/configurable.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/hardware_control/protocols/event_sourcer.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/hardware_control/protocols/execution_controllable.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/hardware_control/protocols/flex_calibratable.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/hardware_control/protocols/flex_instrument_configurer.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/hardware_control/protocols/gripper_controller.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/hardware_control/protocols/hardware_manager.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/hardware_control/protocols/identifiable.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/hardware_control/protocols/instrument_configurer.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/hardware_control/protocols/liquid_handler.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/hardware_control/protocols/module_provider.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/hardware_control/protocols/motion_controller.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/hardware_control/protocols/position_estimator.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/hardware_control/protocols/simulatable.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/hardware_control/protocols/stoppable.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/hardware_control/protocols/types.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/hardware_control/robot_calibration.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/hardware_control/scripts/__init__.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/hardware_control/scripts/gripper_control.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/hardware_control/scripts/repl.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/hardware_control/scripts/tc_control.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/hardware_control/simulator_setup.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/hardware_control/thread_manager.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/hardware_control/threaded_async_lock.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/hardware_control/types.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/hardware_control/util.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/legacy_broker.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/legacy_commands/__init__.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/legacy_commands/commands.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/legacy_commands/helpers.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/legacy_commands/module_commands.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/legacy_commands/protocol_commands.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/legacy_commands/publisher.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/legacy_commands/types.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/motion_planning/__init__.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/motion_planning/adjacent_slots_getters.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/motion_planning/deck_conflict.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/motion_planning/errors.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/motion_planning/types.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/motion_planning/waypoints.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/ordered_set.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_api/__init__.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_api/_liquid.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_api/_liquid_properties.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_api/_nozzle_layout.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_api/_parameter_context.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_api/_parameters.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_api/_transfer_liquid_validation.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_api/_types.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_api/config.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_api/core/__init__.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_api/core/common.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_api/core/core_map.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_api/core/engine/__init__.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_api/core/engine/deck_conflict.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_api/core/engine/exceptions.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_api/core/engine/labware.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_api/core/engine/load_labware_params.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_api/core/engine/module_core.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_api/core/engine/overlap_versions.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_api/core/engine/pipette_movement_conflict.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_api/core/engine/point_calculations.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_api/core/engine/protocol.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_api/core/engine/robot.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_api/core/engine/stringify.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_api/core/engine/well.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_api/core/labware.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_api/core/legacy/__init__.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_api/core/legacy/deck.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_api/core/legacy/labware_offset_provider.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_api/core/legacy/legacy_labware_core.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_api/core/legacy/legacy_module_core.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_api/core/legacy/legacy_protocol_core.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_api/core/legacy/legacy_well_core.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_api/core/legacy/load_info.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_api/core/legacy/module_geometry.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_api/core/legacy/well_geometry.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_api/core/legacy_simulator/__init__.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_api/core/legacy_simulator/legacy_protocol_core.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_api/core/module.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_api/core/protocol.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_api/core/robot.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_api/core/well.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_api/core/well_grid.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_api/create_protocol_context.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_api/deck.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_api/disposal_locations.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_api/module_contexts.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_api/module_validation_and_errors.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_api/protocol_context.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_api/robot_context.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_api/validation.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_engine/__init__.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_engine/actions/__init__.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_engine/actions/action_dispatcher.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_engine/actions/action_handler.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_engine/actions/actions.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_engine/actions/get_state_update.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_engine/clients/__init__.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_engine/clients/sync_client.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_engine/clients/transports.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_engine/commands/__init__.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_engine/commands/absorbance_reader/__init__.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_engine/commands/absorbance_reader/close_lid.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_engine/commands/absorbance_reader/initialize.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_engine/commands/absorbance_reader/open_lid.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_engine/commands/absorbance_reader/read.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_engine/commands/air_gap_in_place.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_engine/commands/aspirate.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_engine/commands/aspirate_in_place.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_engine/commands/blow_out.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_engine/commands/blow_out_in_place.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_engine/commands/calibration/__init__.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_engine/commands/calibration/calibrate_gripper.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_engine/commands/calibration/calibrate_module.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_engine/commands/calibration/calibrate_pipette.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_engine/commands/calibration/move_to_maintenance_position.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_engine/commands/command.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_engine/commands/command_unions.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_engine/commands/comment.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_engine/commands/configure_for_volume.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_engine/commands/configure_nozzle_layout.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_engine/commands/custom.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_engine/commands/dispense.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_engine/commands/dispense_in_place.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_engine/commands/drop_tip.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_engine/commands/drop_tip_in_place.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_engine/commands/flex_stacker/__init__.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_engine/commands/flex_stacker/close_latch.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_engine/commands/flex_stacker/common.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_engine/commands/flex_stacker/empty.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_engine/commands/flex_stacker/fill.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_engine/commands/flex_stacker/open_latch.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_engine/commands/flex_stacker/prepare_shuttle.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_engine/commands/flex_stacker/retrieve.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_engine/commands/flex_stacker/set_stored_labware.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_engine/commands/flex_stacker/store.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_engine/commands/generate_command_schema.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_engine/commands/get_next_tip.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_engine/commands/get_tip_presence.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_engine/commands/hash_command_params.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_engine/commands/heater_shaker/__init__.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_engine/commands/heater_shaker/close_labware_latch.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_engine/commands/heater_shaker/deactivate_heater.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_engine/commands/heater_shaker/deactivate_shaker.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_engine/commands/heater_shaker/open_labware_latch.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_engine/commands/heater_shaker/set_and_wait_for_shake_speed.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_engine/commands/heater_shaker/set_target_temperature.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_engine/commands/heater_shaker/wait_for_temperature.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_engine/commands/home.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_engine/commands/labware_handling_common.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_engine/commands/liquid_probe.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_engine/commands/load_labware.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_engine/commands/load_lid.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_engine/commands/load_lid_stack.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_engine/commands/load_liquid.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_engine/commands/load_liquid_class.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_engine/commands/load_module.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_engine/commands/load_pipette.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_engine/commands/magnetic_module/__init__.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_engine/commands/magnetic_module/disengage.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_engine/commands/magnetic_module/engage.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_engine/commands/move_labware.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_engine/commands/move_relative.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_engine/commands/move_to_addressable_area.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_engine/commands/move_to_addressable_area_for_drop_tip.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_engine/commands/move_to_coordinates.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_engine/commands/move_to_well.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_engine/commands/movement_common.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_engine/commands/pick_up_tip.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_engine/commands/pipetting_common.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_engine/commands/prepare_to_aspirate.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_engine/commands/pressure_dispense.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_engine/commands/reload_labware.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_engine/commands/retract_axis.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_engine/commands/robot/__init__.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_engine/commands/robot/close_gripper_jaw.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_engine/commands/robot/common.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_engine/commands/robot/move_axes_relative.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_engine/commands/robot/move_axes_to.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_engine/commands/robot/move_to.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_engine/commands/robot/open_gripper_jaw.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_engine/commands/save_position.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_engine/commands/seal_pipette_to_tip.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_engine/commands/set_rail_lights.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_engine/commands/set_status_bar.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_engine/commands/temperature_module/__init__.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_engine/commands/temperature_module/deactivate.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_engine/commands/temperature_module/set_target_temperature.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_engine/commands/temperature_module/wait_for_temperature.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_engine/commands/thermocycler/__init__.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_engine/commands/thermocycler/close_lid.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_engine/commands/thermocycler/deactivate_block.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_engine/commands/thermocycler/deactivate_lid.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_engine/commands/thermocycler/open_lid.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_engine/commands/thermocycler/run_extended_profile.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_engine/commands/thermocycler/run_profile.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_engine/commands/thermocycler/set_target_block_temperature.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_engine/commands/thermocycler/set_target_lid_temperature.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_engine/commands/thermocycler/wait_for_block_temperature.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_engine/commands/thermocycler/wait_for_lid_temperature.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_engine/commands/touch_tip.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_engine/commands/unsafe/__init__.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_engine/commands/unsafe/unsafe_blow_out_in_place.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_engine/commands/unsafe/unsafe_drop_tip_in_place.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_engine/commands/unsafe/unsafe_engage_axes.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_engine/commands/unsafe/unsafe_place_labware.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_engine/commands/unsafe/unsafe_ungrip_labware.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_engine/commands/unsafe/update_position_estimators.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_engine/commands/unseal_pipette_from_tip.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_engine/commands/verify_tip_presence.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_engine/commands/wait_for_duration.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_engine/commands/wait_for_resume.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_engine/create_protocol_engine.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_engine/engine_support.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_engine/error_recovery_policy.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_engine/errors/__init__.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_engine/errors/error_occurrence.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_engine/errors/exceptions.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_engine/execution/__init__.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_engine/execution/command_executor.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_engine/execution/create_queue_worker.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_engine/execution/door_watcher.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_engine/execution/equipment.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_engine/execution/error_recovery_hardware_state_synchronizer.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_engine/execution/gantry_mover.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_engine/execution/hardware_stopper.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_engine/execution/heater_shaker_movement_flagger.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_engine/execution/labware_movement.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_engine/execution/movement.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_engine/execution/queue_worker.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_engine/execution/rail_lights.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_engine/execution/run_control.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_engine/execution/status_bar.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_engine/execution/thermocycler_movement_flagger.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_engine/execution/thermocycler_plate_lifter.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_engine/labware_offset_standardization.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_engine/notes/__init__.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_engine/notes/notes.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_engine/plugins.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_engine/protocol_engine.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_engine/resources/__init__.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_engine/resources/deck_configuration_provider.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_engine/resources/deck_data_provider.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_engine/resources/file_provider.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_engine/resources/fixture_validation.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_engine/resources/labware_data_provider.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_engine/resources/labware_validation.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_engine/resources/model_utils.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_engine/resources/module_data_provider.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_engine/resources/ot3_validation.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_engine/resources/pipette_data_provider.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_engine/slot_standardization.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_engine/state/__init__.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_engine/state/_abstract_store.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_engine/state/_move_types.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_engine/state/_well_math.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_engine/state/addressable_areas.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_engine/state/command_history.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_engine/state/commands.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_engine/state/config.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_engine/state/files.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_engine/state/fluid_stack.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_engine/state/labware.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_engine/state/liquid_classes.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_engine/state/liquids.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_engine/state/module_substates/__init__.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_engine/state/module_substates/absorbance_reader_substate.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_engine/state/module_substates/flex_stacker_substate.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_engine/state/module_substates/heater_shaker_module_substate.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_engine/state/module_substates/magnetic_block_substate.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_engine/state/module_substates/magnetic_module_substate.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_engine/state/module_substates/temperature_module_substate.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_engine/state/module_substates/thermocycler_module_substate.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_engine/state/modules.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_engine/state/motion.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_engine/state/pipettes.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_engine/state/state.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_engine/state/state_summary.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_engine/state/tips.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_engine/state/update_types.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_engine/state/wells.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_engine/types/__init__.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_engine/types/automatic_tip_selection.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_engine/types/command_annotations.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_engine/types/deck_configuration.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_engine/types/execution.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_engine/types/hardware_passthrough.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_engine/types/instrument.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_engine/types/instrument_sensors.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_engine/types/labware.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_engine/types/labware_movement.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_engine/types/labware_offset_location.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_engine/types/labware_offset_vector.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_engine/types/liquid.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_engine/types/liquid_class.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_engine/types/liquid_handling.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_engine/types/liquid_level_detection.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_engine/types/location.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_engine/types/module.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_engine/types/partial_tip_configuration.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_engine/types/run_time_parameters.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_engine/types/tip.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_engine/types/util.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_engine/types/well_position.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_reader/__init__.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_reader/extract_labware_definitions.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_reader/file_format_validator.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_reader/file_hasher.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_reader/file_identifier.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_reader/file_reader_writer.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_reader/input_file.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_reader/protocol_files_invalid_error.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_reader/protocol_reader.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_reader/protocol_source.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_reader/role_analyzer.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_runner/__init__.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_runner/create_simulating_orchestrator.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_runner/json_file_reader.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_runner/json_translator.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_runner/legacy_command_mapper.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_runner/legacy_context_plugin.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_runner/protocol_runner.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_runner/python_protocol_wrappers.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_runner/run_orchestrator.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_runner/task_queue.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocols/__init__.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocols/advanced_control/__init__.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocols/advanced_control/common.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocols/advanced_control/mix.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocols/advanced_control/transfers/__init__.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocols/advanced_control/transfers/common.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocols/advanced_control/transfers/transfer.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocols/advanced_control/transfers/transfer_liquid_utils.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocols/api_support/__init__.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocols/api_support/constants.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocols/api_support/deck_type.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocols/api_support/definitions.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocols/api_support/instrument.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocols/api_support/labware_like.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocols/api_support/tip_tracker.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocols/api_support/types.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocols/api_support/util.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocols/bundle.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocols/duration/__init__.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocols/duration/errors.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocols/duration/estimator.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocols/execution/__init__.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocols/execution/dev_types.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocols/execution/errors.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocols/execution/execute.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocols/execution/execute_json_v3.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocols/execution/execute_json_v4.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocols/execution/execute_json_v5.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocols/execution/execute_python.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocols/execution/json_dispatchers.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocols/execution/types.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocols/geometry/__init__.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocols/geometry/labware_geometry.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocols/geometry/planning.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocols/labware.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocols/models/__init__.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocols/models/json_protocol.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocols/parameters/__init__.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocols/parameters/csv_parameter_definition.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocols/parameters/csv_parameter_interface.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocols/parameters/exceptions.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocols/parameters/parameter_definition.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocols/parameters/types.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocols/parameters/validation.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocols/parse.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocols/types.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/py.typed +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/resources/scripts/lpc21isp +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/resources/smoothie-edge-8414642.hex +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/simulate.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/system/__init__.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/system/camera.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/system/log_control.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/system/nmcli.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/system/resin.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/system/smoothie_update.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/system/wifi.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/tools/__init__.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/tools/args_handler.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/tools/write_pipette_memory.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/types.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/util/__init__.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/util/async_helpers.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/util/broker.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/util/change_notifier.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/util/entrypoint_util.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/util/get_union_elements.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/util/helpers.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/util/linal.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/util/performance_helpers.py +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons.egg-info/dependency_links.txt +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons.egg-info/entry_points.txt +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons.egg-info/not-zip-safe +0 -0
- {opentrons-8.4.0a4 → opentrons-8.4.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.4.
|
|
3
|
+
Version: 8.4.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.4.
|
|
24
|
+
Requires-Dist: opentrons-shared-data==8.4.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.4.
|
|
38
|
+
Requires-Dist: opentrons-hardware==8.4.0a6; 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.0a6; extra == "flex-hardware"
|
|
41
41
|
|
|
42
42
|
.. _Full API Documentation: http://docs.opentrons.com
|
|
43
43
|
|
{opentrons-8.4.0a4 → opentrons-8.4.0a6}/src/opentrons/protocol_api/core/engine/instrument.py
RENAMED
|
@@ -12,6 +12,7 @@ from typing import (
|
|
|
12
12
|
Tuple,
|
|
13
13
|
NamedTuple,
|
|
14
14
|
Generator,
|
|
15
|
+
Literal,
|
|
15
16
|
)
|
|
16
17
|
from opentrons.types import (
|
|
17
18
|
Location,
|
|
@@ -747,6 +748,7 @@ class InstrumentCore(AbstractInstrument[WellCore, LabwareCore]):
|
|
|
747
748
|
force_direct: bool,
|
|
748
749
|
minimum_z_height: Optional[float],
|
|
749
750
|
speed: Optional[float],
|
|
751
|
+
check_for_movement_conflicts: bool = True,
|
|
750
752
|
) -> None:
|
|
751
753
|
if well_core is not None:
|
|
752
754
|
if isinstance(location, (TrashBin, WasteChute)):
|
|
@@ -765,6 +767,14 @@ class InstrumentCore(AbstractInstrument[WellCore, LabwareCore]):
|
|
|
765
767
|
assert isinstance(well_location, LiquidHandlingWellLocation)
|
|
766
768
|
if well_location.volumeOffset and well_location.volumeOffset != 0:
|
|
767
769
|
raise ValueError("volume offset not supported with move_to")
|
|
770
|
+
if check_for_movement_conflicts:
|
|
771
|
+
pipette_movement_conflict.check_safe_for_pipette_movement(
|
|
772
|
+
engine_state=self._engine_client.state,
|
|
773
|
+
pipette_id=self._pipette_id,
|
|
774
|
+
labware_id=labware_id,
|
|
775
|
+
well_name=well_name,
|
|
776
|
+
well_location=well_location,
|
|
777
|
+
)
|
|
768
778
|
self._engine_client.execute_command(
|
|
769
779
|
cmd.MoveToWellParams(
|
|
770
780
|
pipetteId=self._pipette_id,
|
|
@@ -1399,7 +1409,7 @@ class InstrumentCore(AbstractInstrument[WellCore, LabwareCore]):
|
|
|
1399
1409
|
volume: float,
|
|
1400
1410
|
source: Tuple[Location, WellCore],
|
|
1401
1411
|
dest: List[Tuple[Location, WellCore]],
|
|
1402
|
-
new_tip: TransferTipPolicyV2,
|
|
1412
|
+
new_tip: Literal[TransferTipPolicyV2.NEVER, TransferTipPolicyV2.ONCE],
|
|
1403
1413
|
tip_racks: List[Tuple[Location, LabwareCore]],
|
|
1404
1414
|
starting_tip: Optional[WellCore],
|
|
1405
1415
|
trash_location: Union[Location, TrashBin, WasteChute],
|
|
@@ -1415,8 +1425,7 @@ class InstrumentCore(AbstractInstrument[WellCore, LabwareCore]):
|
|
|
1415
1425
|
dest: List of destination wells, with each well represented as a tuple of
|
|
1416
1426
|
types.Location and WellCore.
|
|
1417
1427
|
types.Location is only necessary for saving the last accessed location.
|
|
1418
|
-
new_tip: Whether the transfer should use a new tip 'once'
|
|
1419
|
-
or 'per source'.
|
|
1428
|
+
new_tip: Whether the transfer should use a new tip 'once' or 'never'.
|
|
1420
1429
|
tiprack_uri: The URI of the tiprack that the transfer settings are for.
|
|
1421
1430
|
tip_drop_location: Location where the tip will be dropped (if appropriate).
|
|
1422
1431
|
|
|
@@ -1432,6 +1441,8 @@ class InstrumentCore(AbstractInstrument[WellCore, LabwareCore]):
|
|
|
1432
1441
|
raise RuntimeError(
|
|
1433
1442
|
"No tipracks found for pipette in order to perform transfer"
|
|
1434
1443
|
)
|
|
1444
|
+
assert new_tip in [TransferTipPolicyV2.NEVER, TransferTipPolicyV2.ONCE]
|
|
1445
|
+
|
|
1435
1446
|
tiprack_uri_for_transfer_props = tip_racks[0][1].get_uri()
|
|
1436
1447
|
working_volume = min(
|
|
1437
1448
|
self.get_max_volume(),
|
|
@@ -1559,7 +1570,6 @@ class InstrumentCore(AbstractInstrument[WellCore, LabwareCore]):
|
|
|
1559
1570
|
)
|
|
1560
1571
|
return tip_well
|
|
1561
1572
|
|
|
1562
|
-
tip_used = False
|
|
1563
1573
|
if new_tip != TransferTipPolicyV2.NEVER:
|
|
1564
1574
|
last_tip_picked_up_from = _pick_up_tip()
|
|
1565
1575
|
|
|
@@ -1604,16 +1614,6 @@ class InstrumentCore(AbstractInstrument[WellCore, LabwareCore]):
|
|
|
1604
1614
|
)
|
|
1605
1615
|
)
|
|
1606
1616
|
|
|
1607
|
-
if new_tip == TransferTipPolicyV2.ALWAYS and tip_used:
|
|
1608
|
-
_drop_tip()
|
|
1609
|
-
last_tip_picked_up_from = _pick_up_tip()
|
|
1610
|
-
tip_contents = [
|
|
1611
|
-
tx_comps_executor.LiquidAndAirGapPair(
|
|
1612
|
-
liquid=0,
|
|
1613
|
-
air_gap=0,
|
|
1614
|
-
)
|
|
1615
|
-
]
|
|
1616
|
-
|
|
1617
1617
|
use_single_dispense = False
|
|
1618
1618
|
if total_aspirate_volume == volume and len(vol_dest_combo) == 1:
|
|
1619
1619
|
# We are only doing a single transfer. Either because this is the last
|
|
@@ -1696,7 +1696,6 @@ class InstrumentCore(AbstractInstrument[WellCore, LabwareCore]):
|
|
|
1696
1696
|
disposal_volume=disposal_vol,
|
|
1697
1697
|
)
|
|
1698
1698
|
is_first_step = False
|
|
1699
|
-
tip_used = True
|
|
1700
1699
|
|
|
1701
1700
|
if new_tip != TransferTipPolicyV2.NEVER:
|
|
1702
1701
|
_drop_tip()
|
|
@@ -1728,7 +1727,7 @@ class InstrumentCore(AbstractInstrument[WellCore, LabwareCore]):
|
|
|
1728
1727
|
volume: float,
|
|
1729
1728
|
source: List[Tuple[Location, WellCore]],
|
|
1730
1729
|
dest: Tuple[Location, WellCore],
|
|
1731
|
-
new_tip: TransferTipPolicyV2,
|
|
1730
|
+
new_tip: Literal[TransferTipPolicyV2.NEVER, TransferTipPolicyV2.ONCE],
|
|
1732
1731
|
tip_racks: List[Tuple[Location, LabwareCore]],
|
|
1733
1732
|
starting_tip: Optional[WellCore],
|
|
1734
1733
|
trash_location: Union[Location, TrashBin, WasteChute],
|
|
@@ -1738,7 +1737,7 @@ class InstrumentCore(AbstractInstrument[WellCore, LabwareCore]):
|
|
|
1738
1737
|
raise RuntimeError(
|
|
1739
1738
|
"No tipracks found for pipette in order to perform transfer"
|
|
1740
1739
|
)
|
|
1741
|
-
|
|
1740
|
+
assert new_tip in [TransferTipPolicyV2.NEVER, TransferTipPolicyV2.ONCE]
|
|
1742
1741
|
tiprack_uri_for_transfer_props = tip_racks[0][1].get_uri()
|
|
1743
1742
|
try:
|
|
1744
1743
|
transfer_props = liquid_class.get_for(
|
|
@@ -1841,7 +1840,6 @@ class InstrumentCore(AbstractInstrument[WellCore, LabwareCore]):
|
|
|
1841
1840
|
if new_tip == TransferTipPolicyV2.ONCE:
|
|
1842
1841
|
last_tip_picked_up_from = _pick_up_tip()
|
|
1843
1842
|
|
|
1844
|
-
prev_src: Optional[Tuple[Location, WellCore]] = None
|
|
1845
1843
|
tip_contents = [
|
|
1846
1844
|
tx_comps_executor.LiquidAndAirGapPair(
|
|
1847
1845
|
liquid=0,
|
|
@@ -1849,6 +1847,7 @@ class InstrumentCore(AbstractInstrument[WellCore, LabwareCore]):
|
|
|
1849
1847
|
)
|
|
1850
1848
|
]
|
|
1851
1849
|
next_step_volume, next_source = next(source_per_volume_step)
|
|
1850
|
+
is_first_step = True
|
|
1852
1851
|
is_last_step = False
|
|
1853
1852
|
while not is_last_step:
|
|
1854
1853
|
total_dispense_volume = 0.0
|
|
@@ -1863,21 +1862,17 @@ class InstrumentCore(AbstractInstrument[WellCore, LabwareCore]):
|
|
|
1863
1862
|
is_last_step = True
|
|
1864
1863
|
break
|
|
1865
1864
|
|
|
1866
|
-
if
|
|
1867
|
-
|
|
1868
|
-
|
|
1869
|
-
|
|
1870
|
-
|
|
1871
|
-
|
|
1872
|
-
|
|
1873
|
-
|
|
1874
|
-
|
|
1875
|
-
|
|
1876
|
-
|
|
1877
|
-
with self.lpd_for_transfer(enable=False):
|
|
1878
|
-
for step_num, (step_volume, step_source) in enumerate(
|
|
1879
|
-
vol_aspirate_combo
|
|
1880
|
-
):
|
|
1865
|
+
if (
|
|
1866
|
+
self.get_liquid_presence_detection()
|
|
1867
|
+
and new_tip != TransferTipPolicyV2.NEVER
|
|
1868
|
+
and is_first_step
|
|
1869
|
+
):
|
|
1870
|
+
enable_lpd = True
|
|
1871
|
+
else:
|
|
1872
|
+
enable_lpd = False
|
|
1873
|
+
|
|
1874
|
+
for step_num, (step_volume, step_source) in enumerate(vol_aspirate_combo):
|
|
1875
|
+
with self.lpd_for_transfer(enable=enable_lpd):
|
|
1881
1876
|
tip_contents = self.aspirate_liquid_class(
|
|
1882
1877
|
volume=step_volume,
|
|
1883
1878
|
source=step_source,
|
|
@@ -1888,6 +1883,8 @@ class InstrumentCore(AbstractInstrument[WellCore, LabwareCore]):
|
|
|
1888
1883
|
total_dispense_volume if step_num == 0 else None
|
|
1889
1884
|
),
|
|
1890
1885
|
)
|
|
1886
|
+
is_first_step = False
|
|
1887
|
+
enable_lpd = False
|
|
1891
1888
|
tip_contents = self.dispense_liquid_class(
|
|
1892
1889
|
volume=total_dispense_volume,
|
|
1893
1890
|
dest=dest,
|
|
@@ -1902,7 +1899,6 @@ class InstrumentCore(AbstractInstrument[WellCore, LabwareCore]):
|
|
|
1902
1899
|
),
|
|
1903
1900
|
trash_location=trash_location,
|
|
1904
1901
|
)
|
|
1905
|
-
prev_src = next_source
|
|
1906
1902
|
if new_tip != TransferTipPolicyV2.NEVER:
|
|
1907
1903
|
_drop_tip()
|
|
1908
1904
|
|
|
@@ -99,6 +99,14 @@ class TipState:
|
|
|
99
99
|
), "Last air gap volume doe not match the volume being removed"
|
|
100
100
|
self.last_liquid_and_air_gap_in_tip.air_gap = 0
|
|
101
101
|
|
|
102
|
+
def delete_last_air_gap_and_liquid(self) -> None:
|
|
103
|
+
air_gap_in_tip = self.last_liquid_and_air_gap_in_tip.air_gap
|
|
104
|
+
liquid_in_tip = self.last_liquid_and_air_gap_in_tip.liquid
|
|
105
|
+
if air_gap_in_tip:
|
|
106
|
+
self.delete_air_gap(air_gap_in_tip)
|
|
107
|
+
if liquid_in_tip:
|
|
108
|
+
self.delete_liquid(volume=liquid_in_tip)
|
|
109
|
+
|
|
102
110
|
|
|
103
111
|
class TransferType(Enum):
|
|
104
112
|
ONE_TO_ONE = "one_to_one"
|
|
@@ -525,6 +533,9 @@ class TransferComponentsExecutor:
|
|
|
525
533
|
if isinstance(trash_location, Location)
|
|
526
534
|
else None
|
|
527
535
|
)
|
|
536
|
+
# A non-multi-dispense blowout will only have air and maybe droplets in the tip
|
|
537
|
+
# since we only blowout after dispensing the full tip contents.
|
|
538
|
+
# So delete the air gap from tip state
|
|
528
539
|
last_air_gap = self._tip_state.last_liquid_and_air_gap_in_tip.air_gap
|
|
529
540
|
self._tip_state.delete_air_gap(last_air_gap)
|
|
530
541
|
self._tip_state.ready_to_aspirate = False
|
|
@@ -608,6 +619,10 @@ class TransferComponentsExecutor:
|
|
|
608
619
|
well_core=None,
|
|
609
620
|
in_place=True,
|
|
610
621
|
)
|
|
622
|
+
# A blowout will remove all air gap and liquid (disposal volume) from the tip
|
|
623
|
+
# so delete them from tip state (although practically, there will not be
|
|
624
|
+
# any air gaps in the tip before blowing out in the destination well)
|
|
625
|
+
self._tip_state.delete_last_air_gap_and_liquid()
|
|
611
626
|
self._tip_state.ready_to_aspirate = False
|
|
612
627
|
|
|
613
628
|
# A retract will perform total of two air gaps if we need to blow out in source or trash:
|
|
@@ -695,8 +710,9 @@ class TransferComponentsExecutor:
|
|
|
695
710
|
if isinstance(trash_location, Location)
|
|
696
711
|
else None
|
|
697
712
|
)
|
|
698
|
-
|
|
699
|
-
|
|
713
|
+
# A blowout will remove all air gap and liquid (disposal volume) from the tip
|
|
714
|
+
# so delete them from tip state
|
|
715
|
+
self._tip_state.delete_last_air_gap_and_liquid()
|
|
700
716
|
self._tip_state.ready_to_aspirate = False
|
|
701
717
|
|
|
702
718
|
# Do touch tip and air gap again after blowing out into source well or trash
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
from __future__ import annotations
|
|
4
4
|
|
|
5
5
|
from abc import abstractmethod, ABC
|
|
6
|
-
from typing import Any, Generic, Optional, TypeVar, Union, List, Tuple
|
|
6
|
+
from typing import Any, Generic, Optional, TypeVar, Union, List, Tuple, Literal
|
|
7
7
|
|
|
8
8
|
from opentrons import types
|
|
9
9
|
from opentrons.hardware_control.dev_types import PipetteDict
|
|
@@ -190,6 +190,7 @@ class AbstractInstrument(ABC, Generic[WellCoreType, LabwareCoreType]):
|
|
|
190
190
|
force_direct: bool,
|
|
191
191
|
minimum_z_height: Optional[float],
|
|
192
192
|
speed: Optional[float],
|
|
193
|
+
check_for_movement_conflicts: bool,
|
|
193
194
|
) -> None:
|
|
194
195
|
...
|
|
195
196
|
|
|
@@ -381,7 +382,7 @@ class AbstractInstrument(ABC, Generic[WellCoreType, LabwareCoreType]):
|
|
|
381
382
|
volume: float,
|
|
382
383
|
source: Tuple[types.Location, WellCoreType],
|
|
383
384
|
dest: List[Tuple[types.Location, WellCoreType]],
|
|
384
|
-
new_tip: TransferTipPolicyV2,
|
|
385
|
+
new_tip: Literal[TransferTipPolicyV2.NEVER, TransferTipPolicyV2.ONCE],
|
|
385
386
|
tip_racks: List[Tuple[types.Location, LabwareCoreType]],
|
|
386
387
|
starting_tip: Optional[WellCoreType],
|
|
387
388
|
trash_location: Union[types.Location, TrashBin, WasteChute],
|
|
@@ -400,7 +401,7 @@ class AbstractInstrument(ABC, Generic[WellCoreType, LabwareCoreType]):
|
|
|
400
401
|
volume: float,
|
|
401
402
|
source: List[Tuple[types.Location, WellCoreType]],
|
|
402
403
|
dest: Tuple[types.Location, WellCoreType],
|
|
403
|
-
new_tip: TransferTipPolicyV2,
|
|
404
|
+
new_tip: Literal[TransferTipPolicyV2.NEVER, TransferTipPolicyV2.ONCE],
|
|
404
405
|
tip_racks: List[Tuple[types.Location, LabwareCoreType]],
|
|
405
406
|
starting_tip: Optional[WellCoreType],
|
|
406
407
|
trash_location: Union[types.Location, TrashBin, WasteChute],
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
from __future__ import annotations
|
|
2
2
|
|
|
3
3
|
import logging
|
|
4
|
-
from typing import TYPE_CHECKING, Optional, Union, List, Tuple
|
|
4
|
+
from typing import TYPE_CHECKING, Optional, Union, List, Tuple, Literal
|
|
5
5
|
|
|
6
6
|
from opentrons import types
|
|
7
7
|
from opentrons.hardware_control import CriticalPoint
|
|
@@ -367,6 +367,7 @@ class LegacyInstrumentCore(AbstractInstrument[LegacyWellCore, LegacyLabwareCore]
|
|
|
367
367
|
force_direct: bool = False,
|
|
368
368
|
minimum_z_height: Optional[float] = None,
|
|
369
369
|
speed: Optional[float] = None,
|
|
370
|
+
check_for_movement_conflicts: bool = False,
|
|
370
371
|
) -> None:
|
|
371
372
|
"""Move the instrument.
|
|
372
373
|
|
|
@@ -376,6 +377,7 @@ class LegacyInstrumentCore(AbstractInstrument[LegacyWellCore, LegacyLabwareCore]
|
|
|
376
377
|
force_direct: Force a direct movement instead of an arc.
|
|
377
378
|
minimum_z_height: Set a minimum travel height for a movement arc.
|
|
378
379
|
speed: Override the travel speed in mm/s.
|
|
380
|
+
check_for_movement_conflicts: Not used in legacy implementation
|
|
379
381
|
|
|
380
382
|
Raises:
|
|
381
383
|
LabwareHeightError: An item on the deck is taller than
|
|
@@ -619,7 +621,7 @@ class LegacyInstrumentCore(AbstractInstrument[LegacyWellCore, LegacyLabwareCore]
|
|
|
619
621
|
volume: float,
|
|
620
622
|
source: Tuple[types.Location, LegacyWellCore],
|
|
621
623
|
dest: List[Tuple[types.Location, LegacyWellCore]],
|
|
622
|
-
new_tip: TransferTipPolicyV2,
|
|
624
|
+
new_tip: Literal[TransferTipPolicyV2.NEVER, TransferTipPolicyV2.ONCE],
|
|
623
625
|
tip_racks: List[Tuple[types.Location, LegacyLabwareCore]],
|
|
624
626
|
starting_tip: Optional[LegacyWellCore],
|
|
625
627
|
trash_location: Union[types.Location, TrashBin, WasteChute],
|
|
@@ -634,7 +636,7 @@ class LegacyInstrumentCore(AbstractInstrument[LegacyWellCore, LegacyLabwareCore]
|
|
|
634
636
|
volume: float,
|
|
635
637
|
source: List[Tuple[types.Location, LegacyWellCore]],
|
|
636
638
|
dest: Tuple[types.Location, LegacyWellCore],
|
|
637
|
-
new_tip: TransferTipPolicyV2,
|
|
639
|
+
new_tip: Literal[TransferTipPolicyV2.NEVER, TransferTipPolicyV2.ONCE],
|
|
638
640
|
tip_racks: List[Tuple[types.Location, LegacyLabwareCore]],
|
|
639
641
|
starting_tip: Optional[LegacyWellCore],
|
|
640
642
|
trash_location: Union[types.Location, TrashBin, WasteChute],
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
from __future__ import annotations
|
|
2
2
|
|
|
3
3
|
import logging
|
|
4
|
-
from typing import TYPE_CHECKING, Optional, Union, List, Tuple
|
|
4
|
+
from typing import TYPE_CHECKING, Optional, Union, List, Tuple, Literal
|
|
5
5
|
|
|
6
6
|
from opentrons import types
|
|
7
7
|
from opentrons.hardware_control.dev_types import PipetteDict
|
|
@@ -325,6 +325,7 @@ class LegacyInstrumentCoreSimulator(
|
|
|
325
325
|
force_direct: bool = False,
|
|
326
326
|
minimum_z_height: Optional[float] = None,
|
|
327
327
|
speed: Optional[float] = None,
|
|
328
|
+
check_for_movement_conflicts: bool = False, # Not used in this implementation
|
|
328
329
|
) -> None:
|
|
329
330
|
"""Simulation of only the motion planning portion of move_to."""
|
|
330
331
|
if isinstance(location, (TrashBin, WasteChute)):
|
|
@@ -534,7 +535,7 @@ class LegacyInstrumentCoreSimulator(
|
|
|
534
535
|
volume: float,
|
|
535
536
|
source: Tuple[types.Location, LegacyWellCore],
|
|
536
537
|
dest: List[Tuple[types.Location, LegacyWellCore]],
|
|
537
|
-
new_tip: TransferTipPolicyV2,
|
|
538
|
+
new_tip: Literal[TransferTipPolicyV2.NEVER, TransferTipPolicyV2.ONCE],
|
|
538
539
|
tip_racks: List[Tuple[types.Location, LegacyLabwareCore]],
|
|
539
540
|
starting_tip: Optional[LegacyWellCore],
|
|
540
541
|
trash_location: Union[types.Location, TrashBin, WasteChute],
|
|
@@ -549,7 +550,7 @@ class LegacyInstrumentCoreSimulator(
|
|
|
549
550
|
volume: float,
|
|
550
551
|
source: List[Tuple[types.Location, LegacyWellCore]],
|
|
551
552
|
dest: Tuple[types.Location, LegacyWellCore],
|
|
552
|
-
new_tip: TransferTipPolicyV2,
|
|
553
|
+
new_tip: Literal[TransferTipPolicyV2.NEVER, TransferTipPolicyV2.ONCE],
|
|
553
554
|
tip_racks: List[Tuple[types.Location, LegacyLabwareCore]],
|
|
554
555
|
starting_tip: Optional[LegacyWellCore],
|
|
555
556
|
trash_location: Union[types.Location, TrashBin, WasteChute],
|
|
@@ -1529,7 +1529,7 @@ class InstrumentContext(publisher.CommandPublisher):
|
|
|
1529
1529
|
"""Move a particular type of liquid from one well or group of wells to another.
|
|
1530
1530
|
|
|
1531
1531
|
:param liquid_class: The type of liquid to move. You must specify the liquid class,
|
|
1532
|
-
even if you have used :py:meth:`.load_liquid` to indicate what liquid the
|
|
1532
|
+
even if you have used :py:meth:`.Labware.load_liquid` to indicate what liquid the
|
|
1533
1533
|
source contains.
|
|
1534
1534
|
:type liquid_class: :py:class:`.LiquidClass`
|
|
1535
1535
|
|
|
@@ -1552,6 +1552,8 @@ class InstrumentContext(publisher.CommandPublisher):
|
|
|
1552
1552
|
tips. Depending on the liquid class, the pipette may also blow out liquid here.
|
|
1553
1553
|
:param return_tip: Whether to drop used tips in their original locations
|
|
1554
1554
|
in the tip rack, instead of the trash.
|
|
1555
|
+
|
|
1556
|
+
:meta private:
|
|
1555
1557
|
"""
|
|
1556
1558
|
if volume == 0.0:
|
|
1557
1559
|
_log.info(
|
|
@@ -1634,7 +1636,7 @@ class InstrumentContext(publisher.CommandPublisher):
|
|
|
1634
1636
|
Distribute a particular type of liquid from one well to a group of wells.
|
|
1635
1637
|
|
|
1636
1638
|
:param liquid_class: The type of liquid to move. You must specify the liquid class,
|
|
1637
|
-
even if you have used :py:meth:`.load_liquid` to indicate what liquid the
|
|
1639
|
+
even if you have used :py:meth:`.Labware.load_liquid` to indicate what liquid the
|
|
1638
1640
|
source contains.
|
|
1639
1641
|
:type liquid_class: :py:class:`.LiquidClass`
|
|
1640
1642
|
|
|
@@ -1645,8 +1647,7 @@ class InstrumentContext(publisher.CommandPublisher):
|
|
|
1645
1647
|
:param new_tip: When to pick up and drop tips during the command.
|
|
1646
1648
|
Defaults to ``"once"``.
|
|
1647
1649
|
|
|
1648
|
-
- ``"once"
|
|
1649
|
-
- ``"always"``: Use a new tip for each set of aspirate and dispense steps.
|
|
1650
|
+
- ``"once"``: Use one tip for the entire command.
|
|
1650
1651
|
- ``"never"``: Do not pick up or drop tips at all.
|
|
1651
1652
|
|
|
1652
1653
|
See :ref:`param-tip-handling` for details.
|
|
@@ -1655,6 +1656,8 @@ class InstrumentContext(publisher.CommandPublisher):
|
|
|
1655
1656
|
tips. Depending on the liquid class, the pipette may also blow out liquid here.
|
|
1656
1657
|
:param return_tip: Whether to drop used tips in their original locations
|
|
1657
1658
|
in the tip rack, instead of the trash.
|
|
1659
|
+
|
|
1660
|
+
:meta private:
|
|
1658
1661
|
"""
|
|
1659
1662
|
if volume == 0.0:
|
|
1660
1663
|
_log.info(
|
|
@@ -1681,9 +1684,14 @@ class InstrumentContext(publisher.CommandPublisher):
|
|
|
1681
1684
|
f"Source should be a single well (or resolve to a single transfer for multi-channel) "
|
|
1682
1685
|
f"but received {transfer_args.sources_list}."
|
|
1683
1686
|
)
|
|
1684
|
-
if transfer_args.tip_policy
|
|
1685
|
-
|
|
1686
|
-
|
|
1687
|
+
if transfer_args.tip_policy not in [
|
|
1688
|
+
TransferTipPolicyV2.ONCE,
|
|
1689
|
+
TransferTipPolicyV2.NEVER,
|
|
1690
|
+
]:
|
|
1691
|
+
raise ValueError(
|
|
1692
|
+
f"Incompatible `new_tip` value of {new_tip}."
|
|
1693
|
+
f" `distribute_with_liquid_class()` only supports `new_tip` values of"
|
|
1694
|
+
f" 'once' and 'never'."
|
|
1687
1695
|
)
|
|
1688
1696
|
|
|
1689
1697
|
verified_source = transfer_args.sources_list[0]
|
|
@@ -1708,7 +1716,7 @@ class InstrumentContext(publisher.CommandPublisher):
|
|
|
1708
1716
|
(types.Location(types.Point(), labware=well), well._core)
|
|
1709
1717
|
for well in transfer_args.destinations_list
|
|
1710
1718
|
],
|
|
1711
|
-
new_tip=transfer_args.tip_policy,
|
|
1719
|
+
new_tip=transfer_args.tip_policy, # type: ignore[arg-type]
|
|
1712
1720
|
tip_racks=[
|
|
1713
1721
|
(types.Location(types.Point(), labware=rack), rack._core)
|
|
1714
1722
|
for rack in transfer_args.tip_racks
|
|
@@ -1741,7 +1749,7 @@ class InstrumentContext(publisher.CommandPublisher):
|
|
|
1741
1749
|
Consolidate a particular type of liquid from a group of wells to one well.
|
|
1742
1750
|
|
|
1743
1751
|
:param liquid_class: The type of liquid to move. You must specify the liquid class,
|
|
1744
|
-
even if you have used :py:meth:`.load_liquid` to indicate what liquid the
|
|
1752
|
+
even if you have used :py:meth:`.Labware.load_liquid` to indicate what liquid the
|
|
1745
1753
|
source contains.
|
|
1746
1754
|
:type liquid_class: :py:class:`.LiquidClass`
|
|
1747
1755
|
|
|
@@ -1753,8 +1761,6 @@ class InstrumentContext(publisher.CommandPublisher):
|
|
|
1753
1761
|
Defaults to ``"once"``.
|
|
1754
1762
|
|
|
1755
1763
|
- ``"once"``: Use one tip for the entire command.
|
|
1756
|
-
- ``"always"``: Use a new tip for each set of aspirate and dispense steps.
|
|
1757
|
-
- ``"per source"``: Not available when consolidating.
|
|
1758
1764
|
- ``"never"``: Do not pick up or drop tips at all.
|
|
1759
1765
|
|
|
1760
1766
|
See :ref:`param-tip-handling` for details.
|
|
@@ -1763,6 +1769,8 @@ class InstrumentContext(publisher.CommandPublisher):
|
|
|
1763
1769
|
tips. Depending on the liquid class, the pipette may also blow out liquid here.
|
|
1764
1770
|
:param return_tip: Whether to drop used tips in their original locations
|
|
1765
1771
|
in the tip rack, instead of the trash.
|
|
1772
|
+
|
|
1773
|
+
:meta private:
|
|
1766
1774
|
"""
|
|
1767
1775
|
if volume == 0.0:
|
|
1768
1776
|
_log.info(
|
|
@@ -1789,9 +1797,14 @@ class InstrumentContext(publisher.CommandPublisher):
|
|
|
1789
1797
|
f"Destination should be a single well (or resolve to a single transfer for multi-channel) "
|
|
1790
1798
|
f"but received {transfer_args.destinations_list}."
|
|
1791
1799
|
)
|
|
1792
|
-
if transfer_args.tip_policy
|
|
1793
|
-
|
|
1794
|
-
|
|
1800
|
+
if transfer_args.tip_policy not in [
|
|
1801
|
+
TransferTipPolicyV2.ONCE,
|
|
1802
|
+
TransferTipPolicyV2.NEVER,
|
|
1803
|
+
]:
|
|
1804
|
+
raise ValueError(
|
|
1805
|
+
f"Incompatible `new_tip` value of {new_tip}."
|
|
1806
|
+
f" `consolidate_with_liquid_class()` only supports `new_tip` values of"
|
|
1807
|
+
f" 'once' and 'never'."
|
|
1795
1808
|
)
|
|
1796
1809
|
|
|
1797
1810
|
verified_dest = transfer_args.destinations_list[0]
|
|
@@ -1816,7 +1829,7 @@ class InstrumentContext(publisher.CommandPublisher):
|
|
|
1816
1829
|
types.Location(types.Point(), labware=verified_dest),
|
|
1817
1830
|
verified_dest._core,
|
|
1818
1831
|
),
|
|
1819
|
-
new_tip=transfer_args.tip_policy,
|
|
1832
|
+
new_tip=transfer_args.tip_policy, # type: ignore[arg-type]
|
|
1820
1833
|
tip_racks=[
|
|
1821
1834
|
(types.Location(types.Point(), labware=rack), rack._core)
|
|
1822
1835
|
for rack in transfer_args.tip_racks
|
|
@@ -1907,6 +1920,7 @@ class InstrumentContext(publisher.CommandPublisher):
|
|
|
1907
1920
|
force_direct=force_direct,
|
|
1908
1921
|
minimum_z_height=minimum_z_height,
|
|
1909
1922
|
speed=speed,
|
|
1923
|
+
check_for_movement_conflicts=False,
|
|
1910
1924
|
)
|
|
1911
1925
|
else:
|
|
1912
1926
|
if publish:
|
|
@@ -1925,6 +1939,7 @@ class InstrumentContext(publisher.CommandPublisher):
|
|
|
1925
1939
|
force_direct=force_direct,
|
|
1926
1940
|
minimum_z_height=minimum_z_height,
|
|
1927
1941
|
speed=speed,
|
|
1942
|
+
check_for_movement_conflicts=False,
|
|
1928
1943
|
)
|
|
1929
1944
|
|
|
1930
1945
|
return self
|
|
@@ -2639,7 +2654,7 @@ class InstrumentContext(publisher.CommandPublisher):
|
|
|
2639
2654
|
def measure_liquid_height(self, well: labware.Well) -> LiquidTrackingType:
|
|
2640
2655
|
"""Check the height of the liquid within a well.
|
|
2641
2656
|
|
|
2642
|
-
:returns: The height, in mm, of the liquid from the
|
|
2657
|
+
:returns: The height, in mm, of the liquid from the bottom of the well.
|
|
2643
2658
|
"""
|
|
2644
2659
|
self._raise_if_pressure_not_supported_by_pipette()
|
|
2645
2660
|
loc = well.top()
|
|
@@ -263,15 +263,15 @@ class Well:
|
|
|
263
263
|
|
|
264
264
|
@requires_version(2, 21)
|
|
265
265
|
def meniscus(
|
|
266
|
-
self, target: Literal["start", "end", "dynamic"]
|
|
266
|
+
self, z: float = 0.0, target: Literal["start", "end", "dynamic"] = "end"
|
|
267
267
|
) -> Location:
|
|
268
268
|
"""
|
|
269
269
|
:param z: An offset on the z-axis, in mm. Positive offsets are higher and
|
|
270
270
|
negative offsets are lower.
|
|
271
|
-
:param target: The relative position inside the well to target when performing a liquid handling operation.
|
|
272
|
-
|
|
271
|
+
:param target: The relative position of the liquid meniscus inside the well to target when performing a liquid handling operation.
|
|
272
|
+
|
|
273
|
+
:return: A :py:class:`~opentrons.types.Location` corresponding to the liquid meniscus, plus a target position and ``z`` offset as specified.
|
|
273
274
|
|
|
274
|
-
:meta private:
|
|
275
275
|
"""
|
|
276
276
|
return Location(
|
|
277
277
|
point=Point(x=0, y=0, z=z),
|
|
@@ -326,9 +326,9 @@ class Well:
|
|
|
326
326
|
:param Liquid liquid: The liquid to load into the well.
|
|
327
327
|
:param float volume: The volume of liquid to load, in µL.
|
|
328
328
|
|
|
329
|
-
..
|
|
330
|
-
|
|
331
|
-
|
|
329
|
+
.. deprecated:: 2.22
|
|
330
|
+
Use :py:meth:`.Labware.load_liquid`, :py:meth:`.Labware.load_liquid_by_well`, or :py:meth:`.Labware.load_empty` instead.
|
|
331
|
+
|
|
332
332
|
"""
|
|
333
333
|
self._core.load_liquid(
|
|
334
334
|
liquid=liquid,
|
|
@@ -1270,22 +1270,15 @@ class Labware:
|
|
|
1270
1270
|
) -> None:
|
|
1271
1271
|
"""Mark several wells as containing the same amount of liquid.
|
|
1272
1272
|
|
|
1273
|
-
This method should be called at the beginning of a protocol, soon after loading
|
|
1274
|
-
liquid handling operations begin.
|
|
1275
|
-
|
|
1276
|
-
:py:meth:`~Labware.load_liquid_by_well`, the volume it contains is unknown and the well's liquid will not be tracked.
|
|
1277
|
-
|
|
1278
|
-
For example, to load 10µL of a liquid named ``water`` (defined with :py:meth:`~ProtocolContext.define_liquid`)
|
|
1279
|
-
into all the wells of a labware, you could call ``labware.load_liquid(labware.wells(), 10, water)``.
|
|
1280
|
-
|
|
1281
|
-
If you want to load different volumes of liquid into different wells, use :py:meth:`~Labware.load_liquid_by_well`.
|
|
1282
|
-
|
|
1283
|
-
If you want to mark the well as containing no liquid, use :py:meth:`~Labware.load_empty`.
|
|
1273
|
+
This method should be called at the beginning of a protocol, soon after loading labware and before
|
|
1274
|
+
liquid handling operations begin. Loading liquids is required for liquid tracking functionality. If a well
|
|
1275
|
+
hasn't been assigned a starting volume with :py:meth:`~Labware.load_empty`, :py:meth:`~Labware.load_liquid`, or
|
|
1276
|
+
:py:meth:`~Labware.load_liquid_by_well`, the volume it contains is unknown and the well's liquid will not be tracked throughout the protocol.
|
|
1284
1277
|
|
|
1285
1278
|
:param wells: The wells to load the liquid into.
|
|
1286
|
-
:type wells: List of well names or list of Well objects
|
|
1279
|
+
:type wells: List of string well names or list of :py:class:`.Well` objects (e.g., from :py:meth:`~Labware.wells`).
|
|
1287
1280
|
|
|
1288
|
-
:param volume: The volume of liquid to load into each well
|
|
1281
|
+
:param volume: The volume of liquid to load into each well.
|
|
1289
1282
|
:type volume: float
|
|
1290
1283
|
|
|
1291
1284
|
:param liquid: The liquid to load into each well, previously defined by :py:meth:`~ProtocolContext.define_liquid`
|
|
@@ -1321,18 +1314,9 @@ class Labware:
|
|
|
1321
1314
|
) -> None:
|
|
1322
1315
|
"""Mark several wells as containing unique volumes of liquid.
|
|
1323
1316
|
|
|
1324
|
-
This method should be called at the beginning of a protocol, soon after loading
|
|
1325
|
-
liquid handling
|
|
1326
|
-
|
|
1327
|
-
:py:meth:`~Labware.load_liquid_by_well`, the volume it contains is unknown and the well's liquid will not be tracked.
|
|
1328
|
-
|
|
1329
|
-
For example, to load a decreasing amount of of a liquid named ``water`` (defined with :py:meth:`~ProtocolContext.define_liquid`)
|
|
1330
|
-
into each successive well of a row, you could call
|
|
1331
|
-
``labware.load_liquid_by_well({'A1': 1000, 'A2': 950, 'A3': 900, ..., 'A12': 600}, water)``
|
|
1332
|
-
|
|
1333
|
-
If you want to load the same volume of a liquid into multiple wells, it is often easier to use :py:meth:`~Labware.load_liquid`.
|
|
1334
|
-
|
|
1335
|
-
If you want to mark the well as containing no liquid, use :py:meth:`~Labware.load_empty`.
|
|
1317
|
+
This method should be called at the beginning of a protocol, soon after loading labware and before
|
|
1318
|
+
liquid handling begins. Loading liquids is required for liquid tracking functionality. If a well hasn't been assigned a starting volume with :py:meth:`~Labware.load_empty`, :py:meth:`~Labware.load_liquid`, or
|
|
1319
|
+
:py:meth:`~Labware.load_liquid_by_well`, the volume it contains is unknown and the well's liquid will not be tracked throughout the protocol.
|
|
1336
1320
|
|
|
1337
1321
|
:param volumes: A dictionary of well names (or :py:class:`Well` objects, for instance from ``labware['A1']``)
|
|
1338
1322
|
:type wells: Dict[Union[str, Well], float]
|
|
@@ -1368,12 +1352,9 @@ class Labware:
|
|
|
1368
1352
|
def load_empty(self, wells: Sequence[Union[Well, str]]) -> None:
|
|
1369
1353
|
"""Mark several wells as empty.
|
|
1370
1354
|
|
|
1371
|
-
This method should be called at the beginning of a protocol,
|
|
1372
|
-
|
|
1373
|
-
|
|
1374
|
-
volume it contains is unknown and the well's liquid will not be tracked.
|
|
1375
|
-
|
|
1376
|
-
For instance, to mark all wells in the labware as empty, you can call ``labware.load_empty(labware.wells())``.
|
|
1355
|
+
This method should be called at the beginning of a protocol, after loading the labware and before liquid handling
|
|
1356
|
+
begins. Loading liquids is required for liquid tracking functionality. If a well in a labware hasn't been assigned a starting volume with :py:meth:`Labware.load_empty`, :py:meth:`Labware.load_liquid`, or :py:meth:`Labware.load_liquid_by_well`, the
|
|
1357
|
+
volume it contains is unknown and the well's liquid will not be tracked throughout the protocol.
|
|
1377
1358
|
|
|
1378
1359
|
:param wells: The list of wells to mark empty. To mark all wells as empty, pass ``labware.wells()``. You can also specify
|
|
1379
1360
|
wells by their names (for instance, ``labware.load_empty(['A1', 'A2'])``).
|