opentrons 8.2.0a2__tar.gz → 8.2.0a4__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of opentrons might be problematic. Click here for more details.
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/PKG-INFO +4 -4
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/drivers/absorbance_reader/async_byonoy.py +5 -4
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/hardware_control/backends/ot3utils.py +1 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/hardware_control/modules/absorbance_reader.py +2 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/hardware_control/types.py +2 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/protocol_api/module_contexts.py +56 -26
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/protocol_engine/commands/absorbance_reader/read.py +4 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/protocol_engine/commands/aspirate_in_place.py +3 -3
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/protocol_engine/commands/command.py +3 -1
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/protocol_engine/commands/dispense_in_place.py +1 -1
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/protocol_engine/commands/drop_tip.py +2 -1
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/protocol_engine/commands/drop_tip_in_place.py +7 -2
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/protocol_engine/commands/pick_up_tip.py +1 -1
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/protocol_engine/commands/pipetting_common.py +8 -1
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/protocol_engine/commands/unsafe/unsafe_ungrip_labware.py +3 -1
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/protocol_engine/errors/error_occurrence.py +8 -3
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/protocol_engine/state/modules.py +4 -1
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/protocol_runner/run_orchestrator.py +15 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/protocols/parameters/csv_parameter_interface.py +3 -1
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons.egg-info/PKG-INFO +4 -4
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons.egg-info/requires.txt +3 -3
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/MANIFEST.in +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/README.rst +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/setup.cfg +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/setup.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/__init__.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/_version.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/calibration_storage/__init__.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/calibration_storage/deck_configuration.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/calibration_storage/encoder_decoder.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/calibration_storage/file_operators.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/calibration_storage/helpers.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/calibration_storage/ot2/__init__.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/calibration_storage/ot2/deck_attitude.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/calibration_storage/ot2/mark_bad_calibration.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/calibration_storage/ot2/models/__init__.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/calibration_storage/ot2/models/defaults.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/calibration_storage/ot2/models/v1.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/calibration_storage/ot2/pipette_offset.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/calibration_storage/ot2/tip_length.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/calibration_storage/ot3/__init__.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/calibration_storage/ot3/deck_attitude.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/calibration_storage/ot3/gripper_offset.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/calibration_storage/ot3/models/__init__.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/calibration_storage/ot3/models/defaults.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/calibration_storage/ot3/models/v1.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/calibration_storage/ot3/module_offset.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/calibration_storage/ot3/pipette_offset.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/calibration_storage/types.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/cli/__init__.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/cli/__main__.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/cli/analyze.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/config/__init__.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/config/advanced_settings.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/config/defaults_ot2.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/config/defaults_ot3.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/config/feature_flags.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/config/gripper_config.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/config/reset.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/config/robot_configs.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/config/types.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/drivers/__init__.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/drivers/absorbance_reader/__init__.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/drivers/absorbance_reader/abstract.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/drivers/absorbance_reader/driver.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/drivers/absorbance_reader/hid_protocol.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/drivers/absorbance_reader/simulator.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/drivers/asyncio/__init__.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/drivers/asyncio/communication/__init__.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/drivers/asyncio/communication/async_serial.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/drivers/asyncio/communication/errors.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/drivers/asyncio/communication/serial_connection.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/drivers/command_builder.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/drivers/heater_shaker/__init__.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/drivers/heater_shaker/abstract.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/drivers/heater_shaker/driver.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/drivers/heater_shaker/simulator.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/drivers/mag_deck/__init__.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/drivers/mag_deck/abstract.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/drivers/mag_deck/driver.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/drivers/mag_deck/simulator.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/drivers/rpi_drivers/__init__.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/drivers/rpi_drivers/dev_types.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/drivers/rpi_drivers/gpio.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/drivers/rpi_drivers/gpio_simulator.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/drivers/rpi_drivers/interfaces.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/drivers/rpi_drivers/types.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/drivers/rpi_drivers/usb.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/drivers/rpi_drivers/usb_simulator.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/drivers/serial_communication.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/drivers/smoothie_drivers/__init__.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/drivers/smoothie_drivers/connection.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/drivers/smoothie_drivers/constants.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/drivers/smoothie_drivers/driver_3_0.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/drivers/smoothie_drivers/errors.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/drivers/smoothie_drivers/parse_utils.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/drivers/smoothie_drivers/simulator.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/drivers/smoothie_drivers/types.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/drivers/temp_deck/__init__.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/drivers/temp_deck/abstract.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/drivers/temp_deck/driver.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/drivers/temp_deck/simulator.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/drivers/thermocycler/__init__.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/drivers/thermocycler/abstract.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/drivers/thermocycler/driver.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/drivers/thermocycler/simulator.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/drivers/types.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/drivers/utils.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/execute.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/hardware_control/__init__.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/hardware_control/__main__.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/hardware_control/adapters.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/hardware_control/api.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/hardware_control/backends/__init__.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/hardware_control/backends/controller.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/hardware_control/backends/errors.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/hardware_control/backends/estop_state.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/hardware_control/backends/flex_protocol.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/hardware_control/backends/ot3controller.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/hardware_control/backends/ot3simulator.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/hardware_control/backends/simulator.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/hardware_control/backends/status_bar_state.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/hardware_control/backends/subsystem_manager.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/hardware_control/backends/tip_presence_manager.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/hardware_control/backends/types.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/hardware_control/constants.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/hardware_control/dev_types.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/hardware_control/emulation/__init__.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/hardware_control/emulation/abstract_emulator.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/hardware_control/emulation/app.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/hardware_control/emulation/connection_handler.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/hardware_control/emulation/heater_shaker.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/hardware_control/emulation/magdeck.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/hardware_control/emulation/module_server/__init__.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/hardware_control/emulation/module_server/client.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/hardware_control/emulation/module_server/helpers.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/hardware_control/emulation/module_server/models.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/hardware_control/emulation/module_server/server.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/hardware_control/emulation/parser.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/hardware_control/emulation/proxy.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/hardware_control/emulation/run_emulator.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/hardware_control/emulation/scripts/__init__.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/hardware_control/emulation/scripts/run_app.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/hardware_control/emulation/scripts/run_module_emulator.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/hardware_control/emulation/scripts/run_smoothie.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/hardware_control/emulation/settings.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/hardware_control/emulation/simulations.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/hardware_control/emulation/smoothie.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/hardware_control/emulation/tempdeck.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/hardware_control/emulation/thermocycler.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/hardware_control/emulation/types.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/hardware_control/emulation/util.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/hardware_control/errors.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/hardware_control/execution_manager.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/hardware_control/instruments/__init__.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/hardware_control/instruments/instrument_abc.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/hardware_control/instruments/ot2/__init__.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/hardware_control/instruments/ot2/instrument_calibration.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/hardware_control/instruments/ot2/pipette.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/hardware_control/instruments/ot2/pipette_handler.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/hardware_control/instruments/ot3/__init__.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/hardware_control/instruments/ot3/gripper.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/hardware_control/instruments/ot3/gripper_handler.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/hardware_control/instruments/ot3/instrument_calibration.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/hardware_control/instruments/ot3/pipette.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/hardware_control/instruments/ot3/pipette_handler.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/hardware_control/module_control.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/hardware_control/modules/__init__.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/hardware_control/modules/errors.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/hardware_control/modules/heater_shaker.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/hardware_control/modules/lid_temp_status.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/hardware_control/modules/magdeck.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/hardware_control/modules/mod_abc.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/hardware_control/modules/module_calibration.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/hardware_control/modules/plate_temp_status.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/hardware_control/modules/tempdeck.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/hardware_control/modules/thermocycler.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/hardware_control/modules/types.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/hardware_control/modules/update.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/hardware_control/modules/utils.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/hardware_control/motion_utilities.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/hardware_control/nozzle_manager.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/hardware_control/ot3_calibration.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/hardware_control/ot3api.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/hardware_control/pause_manager.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/hardware_control/poller.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/hardware_control/protocols/__init__.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/hardware_control/protocols/asyncio_configurable.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/hardware_control/protocols/calibratable.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/hardware_control/protocols/chassis_accessory_manager.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/hardware_control/protocols/configurable.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/hardware_control/protocols/event_sourcer.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/hardware_control/protocols/execution_controllable.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/hardware_control/protocols/flex_calibratable.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/hardware_control/protocols/flex_instrument_configurer.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/hardware_control/protocols/gripper_controller.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/hardware_control/protocols/hardware_manager.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/hardware_control/protocols/identifiable.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/hardware_control/protocols/instrument_configurer.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/hardware_control/protocols/liquid_handler.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/hardware_control/protocols/module_provider.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/hardware_control/protocols/motion_controller.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/hardware_control/protocols/position_estimator.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/hardware_control/protocols/simulatable.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/hardware_control/protocols/stoppable.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/hardware_control/protocols/types.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/hardware_control/robot_calibration.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/hardware_control/scripts/__init__.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/hardware_control/scripts/gripper_control.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/hardware_control/scripts/repl.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/hardware_control/scripts/tc_control.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/hardware_control/simulator_setup.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/hardware_control/thread_manager.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/hardware_control/threaded_async_lock.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/hardware_control/util.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/legacy_broker.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/legacy_commands/__init__.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/legacy_commands/commands.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/legacy_commands/helpers.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/legacy_commands/module_commands.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/legacy_commands/protocol_commands.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/legacy_commands/publisher.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/legacy_commands/types.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/motion_planning/__init__.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/motion_planning/adjacent_slots_getters.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/motion_planning/deck_conflict.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/motion_planning/errors.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/motion_planning/types.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/motion_planning/waypoints.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/ordered_set.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/protocol_api/__init__.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/protocol_api/_liquid.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/protocol_api/_nozzle_layout.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/protocol_api/_parameter_context.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/protocol_api/_parameters.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/protocol_api/_types.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/protocol_api/config.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/protocol_api/core/__init__.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/protocol_api/core/common.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/protocol_api/core/core_map.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/protocol_api/core/engine/__init__.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/protocol_api/core/engine/deck_conflict.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/protocol_api/core/engine/exceptions.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/protocol_api/core/engine/instrument.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/protocol_api/core/engine/labware.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/protocol_api/core/engine/load_labware_params.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/protocol_api/core/engine/module_core.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/protocol_api/core/engine/overlap_versions.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/protocol_api/core/engine/pipette_movement_conflict.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/protocol_api/core/engine/point_calculations.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/protocol_api/core/engine/protocol.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/protocol_api/core/engine/stringify.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/protocol_api/core/engine/well.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/protocol_api/core/instrument.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/protocol_api/core/labware.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/protocol_api/core/legacy/__init__.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/protocol_api/core/legacy/deck.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/protocol_api/core/legacy/labware_offset_provider.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/protocol_api/core/legacy/legacy_instrument_core.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/protocol_api/core/legacy/legacy_labware_core.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/protocol_api/core/legacy/legacy_module_core.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/protocol_api/core/legacy/legacy_protocol_core.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/protocol_api/core/legacy/legacy_well_core.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/protocol_api/core/legacy/load_info.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/protocol_api/core/legacy/module_geometry.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/protocol_api/core/legacy/well_geometry.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/protocol_api/core/legacy_simulator/__init__.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/protocol_api/core/legacy_simulator/legacy_instrument_core.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/protocol_api/core/legacy_simulator/legacy_protocol_core.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/protocol_api/core/module.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/protocol_api/core/protocol.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/protocol_api/core/well.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/protocol_api/core/well_grid.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/protocol_api/create_protocol_context.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/protocol_api/deck.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/protocol_api/disposal_locations.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/protocol_api/instrument_context.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/protocol_api/labware.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/protocol_api/module_validation_and_errors.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/protocol_api/protocol_context.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/protocol_api/robot_context.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/protocol_api/validation.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/protocol_engine/__init__.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/protocol_engine/actions/__init__.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/protocol_engine/actions/action_dispatcher.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/protocol_engine/actions/action_handler.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/protocol_engine/actions/actions.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/protocol_engine/actions/get_state_update.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/protocol_engine/clients/__init__.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/protocol_engine/clients/sync_client.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/protocol_engine/clients/transports.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/protocol_engine/commands/__init__.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/protocol_engine/commands/absorbance_reader/__init__.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/protocol_engine/commands/absorbance_reader/close_lid.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/protocol_engine/commands/absorbance_reader/initialize.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/protocol_engine/commands/absorbance_reader/open_lid.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/protocol_engine/commands/aspirate.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/protocol_engine/commands/blow_out.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/protocol_engine/commands/blow_out_in_place.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/protocol_engine/commands/calibration/__init__.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/protocol_engine/commands/calibration/calibrate_gripper.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/protocol_engine/commands/calibration/calibrate_module.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/protocol_engine/commands/calibration/calibrate_pipette.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/protocol_engine/commands/calibration/move_to_maintenance_position.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/protocol_engine/commands/command_unions.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/protocol_engine/commands/comment.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/protocol_engine/commands/configure_for_volume.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/protocol_engine/commands/configure_nozzle_layout.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/protocol_engine/commands/custom.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/protocol_engine/commands/dispense.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/protocol_engine/commands/generate_command_schema.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/protocol_engine/commands/get_tip_presence.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/protocol_engine/commands/hash_command_params.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/protocol_engine/commands/heater_shaker/__init__.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/protocol_engine/commands/heater_shaker/close_labware_latch.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/protocol_engine/commands/heater_shaker/deactivate_heater.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/protocol_engine/commands/heater_shaker/deactivate_shaker.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/protocol_engine/commands/heater_shaker/open_labware_latch.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/protocol_engine/commands/heater_shaker/set_and_wait_for_shake_speed.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/protocol_engine/commands/heater_shaker/set_target_temperature.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/protocol_engine/commands/heater_shaker/wait_for_temperature.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/protocol_engine/commands/home.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/protocol_engine/commands/liquid_probe.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/protocol_engine/commands/load_labware.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/protocol_engine/commands/load_liquid.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/protocol_engine/commands/load_module.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/protocol_engine/commands/load_pipette.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/protocol_engine/commands/magnetic_module/__init__.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/protocol_engine/commands/magnetic_module/disengage.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/protocol_engine/commands/magnetic_module/engage.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/protocol_engine/commands/move_labware.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/protocol_engine/commands/move_relative.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/protocol_engine/commands/move_to_addressable_area.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/protocol_engine/commands/move_to_addressable_area_for_drop_tip.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/protocol_engine/commands/move_to_coordinates.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/protocol_engine/commands/move_to_well.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/protocol_engine/commands/prepare_to_aspirate.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/protocol_engine/commands/reload_labware.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/protocol_engine/commands/retract_axis.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/protocol_engine/commands/robot/__init__.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/protocol_engine/commands/save_position.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/protocol_engine/commands/set_rail_lights.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/protocol_engine/commands/set_status_bar.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/protocol_engine/commands/temperature_module/__init__.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/protocol_engine/commands/temperature_module/deactivate.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/protocol_engine/commands/temperature_module/set_target_temperature.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/protocol_engine/commands/temperature_module/wait_for_temperature.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/protocol_engine/commands/thermocycler/__init__.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/protocol_engine/commands/thermocycler/close_lid.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/protocol_engine/commands/thermocycler/deactivate_block.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/protocol_engine/commands/thermocycler/deactivate_lid.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/protocol_engine/commands/thermocycler/open_lid.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/protocol_engine/commands/thermocycler/run_extended_profile.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/protocol_engine/commands/thermocycler/run_profile.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/protocol_engine/commands/thermocycler/set_target_block_temperature.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/protocol_engine/commands/thermocycler/set_target_lid_temperature.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/protocol_engine/commands/thermocycler/wait_for_block_temperature.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/protocol_engine/commands/thermocycler/wait_for_lid_temperature.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/protocol_engine/commands/touch_tip.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/protocol_engine/commands/unsafe/__init__.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/protocol_engine/commands/unsafe/unsafe_blow_out_in_place.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/protocol_engine/commands/unsafe/unsafe_drop_tip_in_place.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/protocol_engine/commands/unsafe/unsafe_engage_axes.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/protocol_engine/commands/unsafe/unsafe_place_labware.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/protocol_engine/commands/unsafe/update_position_estimators.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/protocol_engine/commands/verify_tip_presence.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/protocol_engine/commands/wait_for_duration.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/protocol_engine/commands/wait_for_resume.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/protocol_engine/create_protocol_engine.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/protocol_engine/engine_support.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/protocol_engine/error_recovery_policy.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/protocol_engine/errors/__init__.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/protocol_engine/errors/exceptions.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/protocol_engine/execution/__init__.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/protocol_engine/execution/command_executor.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/protocol_engine/execution/create_queue_worker.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/protocol_engine/execution/door_watcher.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/protocol_engine/execution/equipment.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/protocol_engine/execution/error_recovery_hardware_state_synchronizer.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/protocol_engine/execution/gantry_mover.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/protocol_engine/execution/hardware_stopper.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/protocol_engine/execution/heater_shaker_movement_flagger.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/protocol_engine/execution/labware_movement.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/protocol_engine/execution/movement.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/protocol_engine/execution/pipetting.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/protocol_engine/execution/queue_worker.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/protocol_engine/execution/rail_lights.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/protocol_engine/execution/run_control.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/protocol_engine/execution/status_bar.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/protocol_engine/execution/thermocycler_movement_flagger.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/protocol_engine/execution/thermocycler_plate_lifter.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/protocol_engine/execution/tip_handler.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/protocol_engine/notes/__init__.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/protocol_engine/notes/notes.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/protocol_engine/plugins.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/protocol_engine/protocol_engine.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/protocol_engine/resources/__init__.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/protocol_engine/resources/deck_configuration_provider.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/protocol_engine/resources/deck_data_provider.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/protocol_engine/resources/file_provider.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/protocol_engine/resources/fixture_validation.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/protocol_engine/resources/labware_data_provider.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/protocol_engine/resources/labware_validation.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/protocol_engine/resources/model_utils.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/protocol_engine/resources/module_data_provider.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/protocol_engine/resources/ot3_validation.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/protocol_engine/resources/pipette_data_provider.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/protocol_engine/slot_standardization.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/protocol_engine/state/__init__.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/protocol_engine/state/_abstract_store.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/protocol_engine/state/_move_types.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/protocol_engine/state/addressable_areas.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/protocol_engine/state/command_history.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/protocol_engine/state/commands.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/protocol_engine/state/config.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/protocol_engine/state/files.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/protocol_engine/state/frustum_helpers.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/protocol_engine/state/geometry.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/protocol_engine/state/labware.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/protocol_engine/state/liquids.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/protocol_engine/state/module_substates/__init__.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/protocol_engine/state/module_substates/absorbance_reader_substate.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/protocol_engine/state/module_substates/heater_shaker_module_substate.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/protocol_engine/state/module_substates/magnetic_block_substate.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/protocol_engine/state/module_substates/magnetic_module_substate.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/protocol_engine/state/module_substates/temperature_module_substate.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/protocol_engine/state/module_substates/thermocycler_module_substate.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/protocol_engine/state/motion.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/protocol_engine/state/pipettes.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/protocol_engine/state/state.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/protocol_engine/state/state_summary.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/protocol_engine/state/tips.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/protocol_engine/state/update_types.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/protocol_engine/state/wells.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/protocol_engine/types.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/protocol_reader/__init__.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/protocol_reader/extract_labware_definitions.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/protocol_reader/file_format_validator.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/protocol_reader/file_hasher.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/protocol_reader/file_identifier.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/protocol_reader/file_reader_writer.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/protocol_reader/input_file.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/protocol_reader/protocol_files_invalid_error.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/protocol_reader/protocol_reader.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/protocol_reader/protocol_source.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/protocol_reader/role_analyzer.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/protocol_runner/__init__.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/protocol_runner/create_simulating_orchestrator.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/protocol_runner/json_file_reader.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/protocol_runner/json_translator.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/protocol_runner/legacy_command_mapper.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/protocol_runner/legacy_context_plugin.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/protocol_runner/protocol_runner.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/protocol_runner/python_protocol_wrappers.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/protocol_runner/task_queue.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/protocols/__init__.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/protocols/advanced_control/__init__.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/protocols/advanced_control/mix.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/protocols/advanced_control/transfers.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/protocols/api_support/__init__.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/protocols/api_support/constants.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/protocols/api_support/deck_type.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/protocols/api_support/definitions.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/protocols/api_support/instrument.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/protocols/api_support/labware_like.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/protocols/api_support/tip_tracker.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/protocols/api_support/types.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/protocols/api_support/util.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/protocols/bundle.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/protocols/duration/__init__.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/protocols/duration/errors.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/protocols/duration/estimator.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/protocols/execution/__init__.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/protocols/execution/dev_types.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/protocols/execution/errors.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/protocols/execution/execute.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/protocols/execution/execute_json_v3.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/protocols/execution/execute_json_v4.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/protocols/execution/execute_json_v5.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/protocols/execution/execute_python.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/protocols/execution/json_dispatchers.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/protocols/execution/types.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/protocols/geometry/__init__.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/protocols/geometry/labware_geometry.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/protocols/geometry/planning.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/protocols/labware.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/protocols/models/__init__.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/protocols/models/json_protocol.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/protocols/parameters/__init__.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/protocols/parameters/csv_parameter_definition.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/protocols/parameters/exceptions.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/protocols/parameters/parameter_definition.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/protocols/parameters/types.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/protocols/parameters/validation.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/protocols/parse.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/protocols/types.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/py.typed +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/resources/scripts/lpc21isp +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/resources/smoothie-edge-8414642.hex +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/simulate.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/system/__init__.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/system/camera.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/system/log_control.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/system/nmcli.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/system/resin.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/system/smoothie_update.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/system/wifi.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/tools/__init__.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/tools/args_handler.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/tools/write_pipette_memory.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/types.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/util/__init__.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/util/async_helpers.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/util/broker.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/util/change_notifier.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/util/entrypoint_util.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/util/get_union_elements.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/util/helpers.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/util/linal.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/util/logging_config.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/util/performance_helpers.py +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons.egg-info/SOURCES.txt +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons.egg-info/dependency_links.txt +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons.egg-info/entry_points.txt +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons.egg-info/not-zip-safe +0 -0
- {opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons.egg-info/top_level.txt +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: opentrons
|
|
3
|
-
Version: 8.2.
|
|
3
|
+
Version: 8.2.0a4
|
|
4
4
|
Summary: The Opentrons API is a simple framework designed to make writing automated biology lab protocols easy.
|
|
5
5
|
Author: Opentrons
|
|
6
6
|
Author-email: engineering@opentrons.com
|
|
@@ -21,7 +21,7 @@ Classifier: Programming Language :: Python :: 3.10
|
|
|
21
21
|
Classifier: Topic :: Scientific/Engineering
|
|
22
22
|
Requires-Python: >=3.10
|
|
23
23
|
License-File: ../LICENSE
|
|
24
|
-
Requires-Dist: opentrons-shared-data==8.2.
|
|
24
|
+
Requires-Dist: opentrons-shared-data==8.2.0a4
|
|
25
25
|
Requires-Dist: aionotify==0.3.1
|
|
26
26
|
Requires-Dist: anyio<4.0.0,>=3.6.1
|
|
27
27
|
Requires-Dist: jsonschema<4.18.0,>=3.0.1
|
|
@@ -34,9 +34,9 @@ Requires-Dist: pyusb==1.2.1
|
|
|
34
34
|
Requires-Dist: importlib-metadata>=1.0; python_version < "3.8"
|
|
35
35
|
Requires-Dist: packaging>=21.0
|
|
36
36
|
Provides-Extra: ot2-hardware
|
|
37
|
-
Requires-Dist: opentrons-hardware==8.2.
|
|
37
|
+
Requires-Dist: opentrons-hardware==8.2.0a4; extra == "ot2-hardware"
|
|
38
38
|
Provides-Extra: flex-hardware
|
|
39
|
-
Requires-Dist: opentrons-hardware[FLEX]==8.2.
|
|
39
|
+
Requires-Dist: opentrons-hardware[FLEX]==8.2.0a4; extra == "flex-hardware"
|
|
40
40
|
|
|
41
41
|
.. _Full API Documentation: http://docs.opentrons.com
|
|
42
42
|
|
{opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/drivers/absorbance_reader/async_byonoy.py
RENAMED
|
@@ -23,7 +23,8 @@ from opentrons.hardware_control.modules.errors import AbsorbanceReaderDisconnect
|
|
|
23
23
|
|
|
24
24
|
|
|
25
25
|
SN_PARSER = re.compile(r'ATTRS{serial}=="(?P<serial>.+?)"')
|
|
26
|
-
|
|
26
|
+
# match semver V0.0.0 (old format) or one integer (latest format)
|
|
27
|
+
VERSION_PARSER = re.compile(r"(?P<version>(V\d+\.\d+\.\d+|^\d+$))")
|
|
27
28
|
SERIAL_PARSER = re.compile(r"(?P<serial>(OPT|BYO)[A-Z]{3}[0-9]+)")
|
|
28
29
|
|
|
29
30
|
|
|
@@ -156,10 +157,10 @@ class AsyncByonoy:
|
|
|
156
157
|
func=partial(self._interface.get_device_information, handle),
|
|
157
158
|
)
|
|
158
159
|
self._raise_if_error(err.name, f"Error getting device information: {err}")
|
|
159
|
-
serial_match = SERIAL_PARSER.
|
|
160
|
-
version_match = VERSION_PARSER.
|
|
160
|
+
serial_match = SERIAL_PARSER.match(device_info.sn)
|
|
161
|
+
version_match = VERSION_PARSER.search(device_info.version)
|
|
161
162
|
serial = serial_match["serial"].strip() if serial_match else "OPTMAA00000"
|
|
162
|
-
version = version_match["version"].lower() if version_match else "v0
|
|
163
|
+
version = version_match["version"].lower() if version_match else "v0"
|
|
163
164
|
info = {
|
|
164
165
|
"serial": serial,
|
|
165
166
|
"version": version,
|
|
@@ -652,6 +652,7 @@ _gripper_jaw_state_lookup: Dict[FirmwareGripperjawState, GripperJawState] = {
|
|
|
652
652
|
FirmwareGripperjawState.force_controlling_home: GripperJawState.HOMED_READY,
|
|
653
653
|
FirmwareGripperjawState.force_controlling: GripperJawState.GRIPPING,
|
|
654
654
|
FirmwareGripperjawState.position_controlling: GripperJawState.HOLDING,
|
|
655
|
+
FirmwareGripperjawState.stopped: GripperJawState.STOPPED,
|
|
655
656
|
}
|
|
656
657
|
|
|
657
658
|
|
{opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/hardware_control/modules/absorbance_reader.py
RENAMED
|
@@ -312,6 +312,8 @@ class AbsorbanceReader(mod_abc.AbstractModule):
|
|
|
312
312
|
log.debug(f"Updating {self.name}: {self.port} with {firmware_file_path}")
|
|
313
313
|
self._updating = True
|
|
314
314
|
success, res = await self._driver.update_firmware(firmware_file_path)
|
|
315
|
+
# it takes time for the plate reader to re-init after an update.
|
|
316
|
+
await asyncio.sleep(10)
|
|
315
317
|
self._device_info = await self._driver.get_device_info()
|
|
316
318
|
await self._poller.start()
|
|
317
319
|
self._updating = False
|
|
@@ -625,6 +625,8 @@ class GripperJawState(enum.Enum):
|
|
|
625
625
|
#: the gripper is actively force-control gripping something
|
|
626
626
|
HOLDING = enum.auto()
|
|
627
627
|
#: the gripper is in position-control mode
|
|
628
|
+
STOPPED = enum.auto()
|
|
629
|
+
#: the gripper has been homed before but is stopped now
|
|
628
630
|
|
|
629
631
|
|
|
630
632
|
class InstrumentProbeType(enum.Enum):
|
|
@@ -581,7 +581,7 @@ class ThermocyclerContext(ModuleContext):
|
|
|
581
581
|
individual well of the loaded labware, in µL.
|
|
582
582
|
If not specified, the default is 25 µL.
|
|
583
583
|
|
|
584
|
-
.. note
|
|
584
|
+
.. note::
|
|
585
585
|
|
|
586
586
|
If ``hold_time_minutes`` and ``hold_time_seconds`` are not
|
|
587
587
|
specified, the Thermocycler will proceed to the next command
|
|
@@ -605,7 +605,7 @@ class ThermocyclerContext(ModuleContext):
|
|
|
605
605
|
:param temperature: A value between 37 and 110, representing the target
|
|
606
606
|
temperature in °C.
|
|
607
607
|
|
|
608
|
-
.. note
|
|
608
|
+
.. note::
|
|
609
609
|
|
|
610
610
|
The Thermocycler will proceed to the next command immediately after
|
|
611
611
|
``temperature`` has been reached.
|
|
@@ -635,13 +635,13 @@ class ThermocyclerContext(ModuleContext):
|
|
|
635
635
|
individual well of the loaded labware, in µL.
|
|
636
636
|
If not specified, the default is 25 µL.
|
|
637
637
|
|
|
638
|
-
.. note
|
|
638
|
+
.. note::
|
|
639
639
|
|
|
640
640
|
Unlike with :py:meth:`set_block_temperature`, either or both of
|
|
641
641
|
``hold_time_minutes`` and ``hold_time_seconds`` must be defined
|
|
642
642
|
and for each step.
|
|
643
643
|
|
|
644
|
-
.. note
|
|
644
|
+
.. note::
|
|
645
645
|
|
|
646
646
|
Before API Version 2.21, Thermocycler profiles run with this command
|
|
647
647
|
would be listed in the app as having a number of repetitions equal to
|
|
@@ -991,7 +991,7 @@ class MagneticBlockContext(ModuleContext):
|
|
|
991
991
|
|
|
992
992
|
|
|
993
993
|
class AbsorbanceReaderContext(ModuleContext):
|
|
994
|
-
"""An object representing a connected Absorbance Reader Module.
|
|
994
|
+
"""An object representing a connected Absorbance Plate Reader Module.
|
|
995
995
|
|
|
996
996
|
It should not be instantiated directly; instead, it should be
|
|
997
997
|
created through :py:meth:`.ProtocolContext.load_module`.
|
|
@@ -1009,17 +1009,21 @@ class AbsorbanceReaderContext(ModuleContext):
|
|
|
1009
1009
|
|
|
1010
1010
|
@requires_version(2, 21)
|
|
1011
1011
|
def close_lid(self) -> None:
|
|
1012
|
-
"""
|
|
1012
|
+
"""Use the Flex Gripper to close the lid of the Absorbance Plate Reader.
|
|
1013
|
+
|
|
1014
|
+
You must call this method before initializing the reader, even if the reader was
|
|
1015
|
+
in the closed position at the start of the protocol.
|
|
1016
|
+
"""
|
|
1013
1017
|
self._core.close_lid()
|
|
1014
1018
|
|
|
1015
1019
|
@requires_version(2, 21)
|
|
1016
1020
|
def open_lid(self) -> None:
|
|
1017
|
-
"""
|
|
1021
|
+
"""Use the Flex Gripper to open the lid of the Absorbance Plate Reader."""
|
|
1018
1022
|
self._core.open_lid()
|
|
1019
1023
|
|
|
1020
1024
|
@requires_version(2, 21)
|
|
1021
1025
|
def is_lid_on(self) -> bool:
|
|
1022
|
-
"""Return ``True`` if the Absorbance Reader's lid is currently closed."""
|
|
1026
|
+
"""Return ``True`` if the Absorbance Plate Reader's lid is currently closed."""
|
|
1023
1027
|
return self._core.is_lid_on()
|
|
1024
1028
|
|
|
1025
1029
|
@requires_version(2, 21)
|
|
@@ -1029,19 +1033,28 @@ class AbsorbanceReaderContext(ModuleContext):
|
|
|
1029
1033
|
wavelengths: List[int],
|
|
1030
1034
|
reference_wavelength: Optional[int] = None,
|
|
1031
1035
|
) -> None:
|
|
1032
|
-
"""
|
|
1036
|
+
"""Prepare the Absorbance Plate Reader to read a plate.
|
|
1037
|
+
|
|
1038
|
+
See :ref:`absorbance-initialization` for examples.
|
|
1033
1039
|
|
|
1034
1040
|
:param mode: Either ``"single"`` or ``"multi"``.
|
|
1035
1041
|
|
|
1036
|
-
|
|
1037
|
-
|
|
1038
|
-
|
|
1039
|
-
|
|
1040
|
-
:param wavelengths: A list of wavelengths, in
|
|
1041
|
-
|
|
1042
|
-
|
|
1043
|
-
|
|
1044
|
-
|
|
1042
|
+
- In single measurement mode, :py:meth:`.AbsorbanceReaderContext.read` uses
|
|
1043
|
+
one sample wavelength and an optional reference wavelength.
|
|
1044
|
+
- In multiple measurement mode, :py:meth:`.AbsorbanceReaderContext.read` uses
|
|
1045
|
+
a list of up to six sample wavelengths.
|
|
1046
|
+
:param wavelengths: A list of wavelengths, in nm, to measure.
|
|
1047
|
+
|
|
1048
|
+
- In the default hardware configuration, each wavelength must be one of
|
|
1049
|
+
``450`` (blue), ``562`` (green), ``600`` (orange), or ``650`` (red). In
|
|
1050
|
+
custom hardware configurations, the module may accept other integers
|
|
1051
|
+
between 350 and 1000.
|
|
1052
|
+
- The list must contain only one item when initializing a single measurement.
|
|
1053
|
+
- The list can contain one to six items when initializing a multiple measurement.
|
|
1054
|
+
:param reference_wavelength: An optional reference wavelength, in nm. If provided,
|
|
1055
|
+
:py:meth:`.AbsorbanceReaderContext.read` will read at the reference
|
|
1056
|
+
wavelength and then subtract the reference wavelength values from the
|
|
1057
|
+
measurement wavelength values. Can only be used with single measurements.
|
|
1045
1058
|
"""
|
|
1046
1059
|
self._core.initialize(
|
|
1047
1060
|
mode, wavelengths, reference_wavelength=reference_wavelength
|
|
@@ -1051,16 +1064,33 @@ class AbsorbanceReaderContext(ModuleContext):
|
|
|
1051
1064
|
def read(
|
|
1052
1065
|
self, export_filename: Optional[str] = None
|
|
1053
1066
|
) -> Dict[int, Dict[str, float]]:
|
|
1054
|
-
"""
|
|
1067
|
+
"""Read a plate on the Absorbance Plate Reader.
|
|
1068
|
+
|
|
1069
|
+
This method always returns a dictionary of measurement data. It optionally will
|
|
1070
|
+
save a CSV file of the results to the Flex filesystem, which you can access from
|
|
1071
|
+
the Recent Protocol Runs screen in the Opentrons App. These files are `only` saved
|
|
1072
|
+
if you specify ``export_filename``.
|
|
1073
|
+
|
|
1074
|
+
In simulation, the values for each well key in the dictionary are set to zero, and
|
|
1075
|
+
no files are written.
|
|
1076
|
+
|
|
1077
|
+
.. note::
|
|
1078
|
+
|
|
1079
|
+
Avoid divide-by-zero errors when simulating and using the results of this
|
|
1080
|
+
method later in the protocol. If you divide by any of the measurement
|
|
1081
|
+
values, use :py:meth:`.ProtocolContext.is_simulating` to use alternate dummy
|
|
1082
|
+
data or skip the division step.
|
|
1055
1083
|
|
|
1056
|
-
|
|
1084
|
+
:param export_filename: An optional file basename. If provided, this method
|
|
1085
|
+
will write a CSV file for each measurement in the read operation. File
|
|
1086
|
+
names will use the value of this parameter, the measurement wavelength
|
|
1087
|
+
supplied in :py:meth:`~.AbsorbanceReaderContext.initialize`, and a
|
|
1088
|
+
``.csv`` extension. For example, when reading at wavelengths 450 and 562
|
|
1089
|
+
with ``export_filename="my_data"``, there will be two output files:
|
|
1090
|
+
``my_data_450.csv`` and ``my_data_562.csv``.
|
|
1057
1091
|
|
|
1058
|
-
|
|
1059
|
-
as a result of the read action containing measurement data. The filename will
|
|
1060
|
-
be modified to include the wavelength used during measurement. If multiple
|
|
1061
|
-
measurements are taken, then a file will be generated for each wavelength provided.
|
|
1092
|
+
See :ref:`absorbance-csv` for information on working with these CSV files.
|
|
1062
1093
|
|
|
1063
|
-
|
|
1064
|
-
measurement, the output files will be "my_data_450.csv" and "my_data_531.csv".
|
|
1094
|
+
:returns: A dictionary of wavelengths to dictionary of values ordered by well name.
|
|
1065
1095
|
"""
|
|
1066
1096
|
return self._core.read(filename=export_filename)
|
|
@@ -80,6 +80,10 @@ class ReadAbsorbanceImpl(
|
|
|
80
80
|
raise CannotPerformModuleAction(
|
|
81
81
|
"Cannot perform Read action on Absorbance Reader without calling `.initialize(...)` first."
|
|
82
82
|
)
|
|
83
|
+
if abs_reader_substate.is_lid_on is False:
|
|
84
|
+
raise CannotPerformModuleAction(
|
|
85
|
+
"Absorbance Plate Reader can't read a plate with the lid open. Call `close_lid()` first."
|
|
86
|
+
)
|
|
83
87
|
|
|
84
88
|
# TODO: we need to return a file ID and increase the file count even when a moduel is not attached
|
|
85
89
|
if (
|
{opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/protocol_engine/commands/aspirate_in_place.py
RENAMED
|
@@ -83,10 +83,11 @@ class AspirateInPlaceImplementation(
|
|
|
83
83
|
TipNotAttachedError: if no tip is attached to the pipette.
|
|
84
84
|
PipetteNotReadyToAspirateError: pipette plunger is not ready.
|
|
85
85
|
"""
|
|
86
|
+
state_update = StateUpdate()
|
|
87
|
+
|
|
86
88
|
ready_to_aspirate = self._pipetting.get_is_ready_to_aspirate(
|
|
87
89
|
pipette_id=params.pipetteId,
|
|
88
90
|
)
|
|
89
|
-
|
|
90
91
|
if not ready_to_aspirate:
|
|
91
92
|
raise PipetteNotReadyToAspirateError(
|
|
92
93
|
"Pipette cannot aspirate in place because of a previous blow out."
|
|
@@ -94,11 +95,10 @@ class AspirateInPlaceImplementation(
|
|
|
94
95
|
" so the plunger can be reset in a known safe position."
|
|
95
96
|
)
|
|
96
97
|
|
|
97
|
-
state_update = StateUpdate()
|
|
98
98
|
current_location = self._state_view.pipettes.get_current_location()
|
|
99
|
+
current_position = await self._gantry_mover.get_position(params.pipetteId)
|
|
99
100
|
|
|
100
101
|
try:
|
|
101
|
-
current_position = await self._gantry_mover.get_position(params.pipetteId)
|
|
102
102
|
volume = await self._pipetting.aspirate_in_place(
|
|
103
103
|
pipette_id=params.pipetteId,
|
|
104
104
|
volume=params.volume,
|
|
@@ -185,7 +185,9 @@ class BaseCommand(
|
|
|
185
185
|
)
|
|
186
186
|
error: Union[
|
|
187
187
|
_ErrorT,
|
|
188
|
-
# ErrorOccurrence here is for undefined errors not captured by
|
|
188
|
+
# ErrorOccurrence here is a catch-all for undefined errors not captured by
|
|
189
|
+
# _ErrorT, or defined errors that don't parse into _ErrorT because, for example,
|
|
190
|
+
# they are from an older software version that was missing some fields.
|
|
189
191
|
ErrorOccurrence,
|
|
190
192
|
None,
|
|
191
193
|
] = Field(
|
{opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/protocol_engine/commands/dispense_in_place.py
RENAMED
|
@@ -76,8 +76,8 @@ class DispenseInPlaceImplementation(
|
|
|
76
76
|
"""Dispense without moving the pipette."""
|
|
77
77
|
state_update = StateUpdate()
|
|
78
78
|
current_location = self._state_view.pipettes.get_current_location()
|
|
79
|
+
current_position = await self._gantry_mover.get_position(params.pipetteId)
|
|
79
80
|
try:
|
|
80
|
-
current_position = await self._gantry_mover.get_position(params.pipetteId)
|
|
81
81
|
volume = await self._pipetting.dispense_in_place(
|
|
82
82
|
pipette_id=params.pipetteId,
|
|
83
83
|
volume=params.volume,
|
|
@@ -145,6 +145,7 @@ class DropTipImplementation(AbstractCommandImpl[DropTipParams, _ExecuteReturn]):
|
|
|
145
145
|
error=exception,
|
|
146
146
|
)
|
|
147
147
|
],
|
|
148
|
+
errorInfo={"retryLocation": position},
|
|
148
149
|
)
|
|
149
150
|
state_update_if_false_positive = update_types.StateUpdate()
|
|
150
151
|
state_update_if_false_positive.update_pipette_tip_state(
|
|
@@ -165,7 +166,7 @@ class DropTipImplementation(AbstractCommandImpl[DropTipParams, _ExecuteReturn]):
|
|
|
165
166
|
)
|
|
166
167
|
|
|
167
168
|
|
|
168
|
-
class DropTip(BaseCommand[DropTipParams, DropTipResult,
|
|
169
|
+
class DropTip(BaseCommand[DropTipParams, DropTipResult, TipPhysicallyAttachedError]):
|
|
169
170
|
"""Drop tip command model."""
|
|
170
171
|
|
|
171
172
|
commandType: DropTipCommandType = "dropTip"
|
{opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/protocol_engine/commands/drop_tip_in_place.py
RENAMED
|
@@ -18,7 +18,7 @@ from ..resources.model_utils import ModelUtils
|
|
|
18
18
|
from ..state import update_types
|
|
19
19
|
|
|
20
20
|
if TYPE_CHECKING:
|
|
21
|
-
from ..execution import TipHandler
|
|
21
|
+
from ..execution import TipHandler, GantryMover
|
|
22
22
|
|
|
23
23
|
|
|
24
24
|
DropTipInPlaceCommandType = Literal["dropTipInPlace"]
|
|
@@ -57,15 +57,19 @@ class DropTipInPlaceImplementation(
|
|
|
57
57
|
self,
|
|
58
58
|
tip_handler: TipHandler,
|
|
59
59
|
model_utils: ModelUtils,
|
|
60
|
+
gantry_mover: GantryMover,
|
|
60
61
|
**kwargs: object,
|
|
61
62
|
) -> None:
|
|
62
63
|
self._tip_handler = tip_handler
|
|
63
64
|
self._model_utils = model_utils
|
|
65
|
+
self._gantry_mover = gantry_mover
|
|
64
66
|
|
|
65
67
|
async def execute(self, params: DropTipInPlaceParams) -> _ExecuteReturn:
|
|
66
68
|
"""Drop a tip using the requested pipette."""
|
|
67
69
|
state_update = update_types.StateUpdate()
|
|
68
70
|
|
|
71
|
+
retry_location = await self._gantry_mover.get_position(params.pipetteId)
|
|
72
|
+
|
|
69
73
|
try:
|
|
70
74
|
await self._tip_handler.drop_tip(
|
|
71
75
|
pipette_id=params.pipetteId, home_after=params.homeAfter
|
|
@@ -85,6 +89,7 @@ class DropTipInPlaceImplementation(
|
|
|
85
89
|
error=exception,
|
|
86
90
|
)
|
|
87
91
|
],
|
|
92
|
+
errorInfo={"retryLocation": retry_location},
|
|
88
93
|
)
|
|
89
94
|
return DefinedErrorData(
|
|
90
95
|
public=error,
|
|
@@ -99,7 +104,7 @@ class DropTipInPlaceImplementation(
|
|
|
99
104
|
|
|
100
105
|
|
|
101
106
|
class DropTipInPlace(
|
|
102
|
-
BaseCommand[DropTipInPlaceParams, DropTipInPlaceResult,
|
|
107
|
+
BaseCommand[DropTipInPlaceParams, DropTipInPlaceResult, TipPhysicallyAttachedError]
|
|
103
108
|
):
|
|
104
109
|
"""Drop tip in place command model."""
|
|
105
110
|
|
{opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/protocol_engine/commands/pick_up_tip.py
RENAMED
|
@@ -82,7 +82,7 @@ class TipPhysicallyMissingError(ErrorOccurrence):
|
|
|
82
82
|
isDefined: bool = True
|
|
83
83
|
errorType: Literal["tipPhysicallyMissing"] = "tipPhysicallyMissing"
|
|
84
84
|
errorCode: str = ErrorCodes.TIP_PICKUP_FAILED.value.code
|
|
85
|
-
detail: str = "No
|
|
85
|
+
detail: str = "No Tip Detected"
|
|
86
86
|
|
|
87
87
|
|
|
88
88
|
_ExecuteReturn = Union[
|
{opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/protocol_engine/commands/pipetting_common.py
RENAMED
|
@@ -148,7 +148,12 @@ class DestinationPositionResult(BaseModel):
|
|
|
148
148
|
|
|
149
149
|
|
|
150
150
|
class ErrorLocationInfo(TypedDict):
|
|
151
|
-
"""Holds a retry location for in-place error recovery.
|
|
151
|
+
"""Holds a retry location for in-place error recovery.
|
|
152
|
+
|
|
153
|
+
This is appropriate to pass to a `moveToCoordinates` command,
|
|
154
|
+
assuming the pipette has not been configured with a different nozzle layout
|
|
155
|
+
in the meantime.
|
|
156
|
+
"""
|
|
152
157
|
|
|
153
158
|
retryLocation: Tuple[float, float, float]
|
|
154
159
|
|
|
@@ -201,3 +206,5 @@ class TipPhysicallyAttachedError(ErrorOccurrence):
|
|
|
201
206
|
|
|
202
207
|
errorCode: str = ErrorCodes.TIP_DROP_FAILED.value.code
|
|
203
208
|
detail: str = ErrorCodes.TIP_DROP_FAILED.value.detail
|
|
209
|
+
|
|
210
|
+
errorInfo: ErrorLocationInfo
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
"""Ungrip labware payload, result, and implementaiton."""
|
|
2
2
|
|
|
3
3
|
from __future__ import annotations
|
|
4
|
+
|
|
5
|
+
from opentrons.hardware_control.types import Axis
|
|
4
6
|
from opentrons.protocol_engine.errors.exceptions import GripperNotAttachedError
|
|
5
7
|
from pydantic import BaseModel
|
|
6
8
|
from typing import Optional, Type
|
|
@@ -46,7 +48,7 @@ class UnsafeUngripLabwareImplementation(
|
|
|
46
48
|
ot3_hardware_api = ensure_ot3_hardware(self._hardware_api)
|
|
47
49
|
if not ot3_hardware_api.has_gripper():
|
|
48
50
|
raise GripperNotAttachedError("No gripper found to perform ungrip.")
|
|
49
|
-
await ot3_hardware_api.
|
|
51
|
+
await ot3_hardware_api.home([Axis.G])
|
|
50
52
|
return SuccessData(
|
|
51
53
|
public=UnsafeUngripLabwareResult(),
|
|
52
54
|
)
|
{opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/protocol_engine/errors/error_occurrence.py
RENAMED
|
@@ -12,8 +12,6 @@ from opentrons_shared_data.errors.exceptions import EnumeratedError
|
|
|
12
12
|
log = getLogger(__name__)
|
|
13
13
|
|
|
14
14
|
|
|
15
|
-
# TODO(mc, 2021-11-12): flesh this model out with structured error data
|
|
16
|
-
# for each error type so client may produce better error messages
|
|
17
15
|
class ErrorOccurrence(BaseModel):
|
|
18
16
|
"""An occurrence of a specific error during protocol execution."""
|
|
19
17
|
|
|
@@ -44,8 +42,15 @@ class ErrorOccurrence(BaseModel):
|
|
|
44
42
|
id: str = Field(..., description="Unique identifier of this error occurrence.")
|
|
45
43
|
createdAt: datetime = Field(..., description="When the error occurred.")
|
|
46
44
|
|
|
45
|
+
# Our Python should probably always set this to False--if we want it to be True,
|
|
46
|
+
# we should probably be using a more specific subclass of ErrorOccurrence anyway.
|
|
47
|
+
# However, we can't make this Literal[False], because we want this class to be able
|
|
48
|
+
# to act as a catch-all for parsing defined errors that might be missing some
|
|
49
|
+
# `errorInfo` fields because they were serialized by older software.
|
|
47
50
|
isDefined: bool = Field(
|
|
48
|
-
|
|
51
|
+
# default=False for database backwards compatibility, so we can parse objects
|
|
52
|
+
# serialized before isDefined existed.
|
|
53
|
+
default=False,
|
|
49
54
|
description=dedent(
|
|
50
55
|
"""\
|
|
51
56
|
Whether this error is *defined.*
|
|
@@ -1268,7 +1268,10 @@ class ModuleView(HasState[ModuleState]):
|
|
|
1268
1268
|
row = chr(ord("A") + i // 12) # Convert index to row (A-H)
|
|
1269
1269
|
col = (i % 12) + 1 # Convert index to column (1-12)
|
|
1270
1270
|
well_key = f"{row}{col}"
|
|
1271
|
-
|
|
1271
|
+
truncated_value = float(
|
|
1272
|
+
"{:.5}".format(str(value))
|
|
1273
|
+
) # Truncate the returned value to the third decimal place
|
|
1274
|
+
well_map[well_key] = truncated_value
|
|
1272
1275
|
return well_map
|
|
1273
1276
|
else:
|
|
1274
1277
|
raise ValueError(
|
|
@@ -418,6 +418,21 @@ class RunOrchestrator:
|
|
|
418
418
|
"""Get current nozzle maps keyed by pipette id."""
|
|
419
419
|
return self._protocol_engine.state_view.tips.get_pipette_nozzle_maps()
|
|
420
420
|
|
|
421
|
+
def get_tip_attached(self) -> Dict[str, bool]:
|
|
422
|
+
"""Get current tip state keyed by pipette id."""
|
|
423
|
+
|
|
424
|
+
def has_tip_attached(pipette_id: str) -> bool:
|
|
425
|
+
return (
|
|
426
|
+
self._protocol_engine.state_view.pipettes.get_attached_tip(pipette_id)
|
|
427
|
+
is not None
|
|
428
|
+
)
|
|
429
|
+
|
|
430
|
+
pipette_ids = (
|
|
431
|
+
pipette.id
|
|
432
|
+
for pipette in self._protocol_engine.state_view.pipettes.get_all()
|
|
433
|
+
)
|
|
434
|
+
return {pipette_id: has_tip_attached(pipette_id) for pipette_id in pipette_ids}
|
|
435
|
+
|
|
421
436
|
def set_error_recovery_policy(self, policy: ErrorRecoveryPolicy) -> None:
|
|
422
437
|
"""Create error recovery policy for the run."""
|
|
423
438
|
self._protocol_engine.set_error_recovery_policy(policy)
|
|
@@ -60,7 +60,9 @@ class CSVParameter:
|
|
|
60
60
|
as appropriate.
|
|
61
61
|
|
|
62
62
|
:param detect_dialect: If ``True``, examine the file and try to assign it a
|
|
63
|
-
:py:class:`csv.Dialect` to improve parsing behavior.
|
|
63
|
+
:py:class:`csv.Dialect` to improve parsing behavior. Set this to ``False``
|
|
64
|
+
when using the file output of :py:meth:`.AbsorbanceReaderContext.read` as
|
|
65
|
+
a runtime parameter.
|
|
64
66
|
:param kwargs: For advanced CSV handling, you can pass any of the
|
|
65
67
|
`formatting parameters <https://docs.python.org/3/library/csv.html#csv-fmt-params>`_
|
|
66
68
|
accepted by :py:func:`csv.reader` from the Python standard library.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: opentrons
|
|
3
|
-
Version: 8.2.
|
|
3
|
+
Version: 8.2.0a4
|
|
4
4
|
Summary: The Opentrons API is a simple framework designed to make writing automated biology lab protocols easy.
|
|
5
5
|
Author: Opentrons
|
|
6
6
|
Author-email: engineering@opentrons.com
|
|
@@ -21,7 +21,7 @@ Classifier: Programming Language :: Python :: 3.10
|
|
|
21
21
|
Classifier: Topic :: Scientific/Engineering
|
|
22
22
|
Requires-Python: >=3.10
|
|
23
23
|
License-File: ../LICENSE
|
|
24
|
-
Requires-Dist: opentrons-shared-data==8.2.
|
|
24
|
+
Requires-Dist: opentrons-shared-data==8.2.0a4
|
|
25
25
|
Requires-Dist: aionotify==0.3.1
|
|
26
26
|
Requires-Dist: anyio<4.0.0,>=3.6.1
|
|
27
27
|
Requires-Dist: jsonschema<4.18.0,>=3.0.1
|
|
@@ -34,9 +34,9 @@ Requires-Dist: pyusb==1.2.1
|
|
|
34
34
|
Requires-Dist: importlib-metadata>=1.0; python_version < "3.8"
|
|
35
35
|
Requires-Dist: packaging>=21.0
|
|
36
36
|
Provides-Extra: ot2-hardware
|
|
37
|
-
Requires-Dist: opentrons-hardware==8.2.
|
|
37
|
+
Requires-Dist: opentrons-hardware==8.2.0a4; extra == "ot2-hardware"
|
|
38
38
|
Provides-Extra: flex-hardware
|
|
39
|
-
Requires-Dist: opentrons-hardware[FLEX]==8.2.
|
|
39
|
+
Requires-Dist: opentrons-hardware[FLEX]==8.2.0a4; extra == "flex-hardware"
|
|
40
40
|
|
|
41
41
|
.. _Full API Documentation: http://docs.opentrons.com
|
|
42
42
|
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
opentrons-shared-data==8.2.
|
|
1
|
+
opentrons-shared-data==8.2.0a4
|
|
2
2
|
aionotify==0.3.1
|
|
3
3
|
anyio<4.0.0,>=3.6.1
|
|
4
4
|
jsonschema<4.18.0,>=3.0.1
|
|
@@ -14,7 +14,7 @@ packaging>=21.0
|
|
|
14
14
|
importlib-metadata>=1.0
|
|
15
15
|
|
|
16
16
|
[flex-hardware]
|
|
17
|
-
opentrons-hardware[FLEX]==8.2.
|
|
17
|
+
opentrons-hardware[FLEX]==8.2.0a4
|
|
18
18
|
|
|
19
19
|
[ot2-hardware]
|
|
20
|
-
opentrons-hardware==8.2.
|
|
20
|
+
opentrons-hardware==8.2.0a4
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/calibration_storage/deck_configuration.py
RENAMED
|
File without changes
|
{opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/calibration_storage/encoder_decoder.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/calibration_storage/ot2/deck_attitude.py
RENAMED
|
File without changes
|
|
File without changes
|
{opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/calibration_storage/ot2/models/__init__.py
RENAMED
|
File without changes
|
{opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/calibration_storage/ot2/models/defaults.py
RENAMED
|
File without changes
|
|
File without changes
|
{opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/calibration_storage/ot2/pipette_offset.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/calibration_storage/ot3/deck_attitude.py
RENAMED
|
File without changes
|
{opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/calibration_storage/ot3/gripper_offset.py
RENAMED
|
File without changes
|
{opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/calibration_storage/ot3/models/__init__.py
RENAMED
|
File without changes
|
{opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/calibration_storage/ot3/models/defaults.py
RENAMED
|
File without changes
|
|
File without changes
|
{opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/calibration_storage/ot3/module_offset.py
RENAMED
|
File without changes
|
{opentrons-8.2.0a2 → opentrons-8.2.0a4}/src/opentrons/calibration_storage/ot3/pipette_offset.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|