opentrons 8.2.0__tar.gz → 8.2.0a1__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.0 → opentrons-8.2.0a1}/PKG-INFO +4 -4
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/drivers/absorbance_reader/async_byonoy.py +4 -5
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/hardware_control/backends/ot3utils.py +0 -1
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/hardware_control/modules/absorbance_reader.py +0 -2
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/hardware_control/ot3api.py +5 -5
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/hardware_control/protocols/position_estimator.py +1 -3
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/hardware_control/types.py +0 -2
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_api/module_contexts.py +26 -56
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/commands/absorbance_reader/initialize.py +7 -19
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/commands/absorbance_reader/read.py +0 -4
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/commands/aspirate_in_place.py +3 -3
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/commands/command.py +1 -3
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/commands/dispense_in_place.py +1 -1
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/commands/drop_tip.py +1 -2
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/commands/drop_tip_in_place.py +2 -7
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/commands/pick_up_tip.py +1 -1
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/commands/pipetting_common.py +1 -8
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/commands/unsafe/unsafe_place_labware.py +3 -8
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/commands/unsafe/unsafe_ungrip_labware.py +1 -3
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/commands/unsafe/update_position_estimators.py +1 -5
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/errors/__init__.py +0 -2
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/errors/error_occurrence.py +3 -8
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/errors/exceptions.py +0 -13
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/state/modules.py +1 -4
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_runner/run_orchestrator.py +0 -15
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocols/parameters/csv_parameter_interface.py +1 -3
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons.egg-info/PKG-INFO +4 -4
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons.egg-info/requires.txt +3 -3
- {opentrons-8.2.0 → opentrons-8.2.0a1}/MANIFEST.in +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/README.rst +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/setup.cfg +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/setup.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/__init__.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/_version.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/calibration_storage/__init__.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/calibration_storage/deck_configuration.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/calibration_storage/encoder_decoder.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/calibration_storage/file_operators.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/calibration_storage/helpers.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/calibration_storage/ot2/__init__.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/calibration_storage/ot2/deck_attitude.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/calibration_storage/ot2/mark_bad_calibration.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/calibration_storage/ot2/models/__init__.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/calibration_storage/ot2/models/defaults.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/calibration_storage/ot2/models/v1.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/calibration_storage/ot2/pipette_offset.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/calibration_storage/ot2/tip_length.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/calibration_storage/ot3/__init__.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/calibration_storage/ot3/deck_attitude.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/calibration_storage/ot3/gripper_offset.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/calibration_storage/ot3/models/__init__.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/calibration_storage/ot3/models/defaults.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/calibration_storage/ot3/models/v1.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/calibration_storage/ot3/module_offset.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/calibration_storage/ot3/pipette_offset.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/calibration_storage/types.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/cli/__init__.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/cli/__main__.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/cli/analyze.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/config/__init__.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/config/advanced_settings.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/config/defaults_ot2.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/config/defaults_ot3.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/config/feature_flags.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/config/gripper_config.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/config/reset.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/config/robot_configs.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/config/types.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/drivers/__init__.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/drivers/absorbance_reader/__init__.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/drivers/absorbance_reader/abstract.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/drivers/absorbance_reader/driver.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/drivers/absorbance_reader/hid_protocol.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/drivers/absorbance_reader/simulator.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/drivers/asyncio/__init__.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/drivers/asyncio/communication/__init__.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/drivers/asyncio/communication/async_serial.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/drivers/asyncio/communication/errors.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/drivers/asyncio/communication/serial_connection.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/drivers/command_builder.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/drivers/heater_shaker/__init__.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/drivers/heater_shaker/abstract.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/drivers/heater_shaker/driver.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/drivers/heater_shaker/simulator.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/drivers/mag_deck/__init__.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/drivers/mag_deck/abstract.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/drivers/mag_deck/driver.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/drivers/mag_deck/simulator.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/drivers/rpi_drivers/__init__.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/drivers/rpi_drivers/dev_types.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/drivers/rpi_drivers/gpio.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/drivers/rpi_drivers/gpio_simulator.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/drivers/rpi_drivers/interfaces.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/drivers/rpi_drivers/types.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/drivers/rpi_drivers/usb.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/drivers/rpi_drivers/usb_simulator.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/drivers/serial_communication.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/drivers/smoothie_drivers/__init__.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/drivers/smoothie_drivers/connection.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/drivers/smoothie_drivers/constants.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/drivers/smoothie_drivers/driver_3_0.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/drivers/smoothie_drivers/errors.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/drivers/smoothie_drivers/parse_utils.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/drivers/smoothie_drivers/simulator.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/drivers/smoothie_drivers/types.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/drivers/temp_deck/__init__.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/drivers/temp_deck/abstract.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/drivers/temp_deck/driver.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/drivers/temp_deck/simulator.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/drivers/thermocycler/__init__.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/drivers/thermocycler/abstract.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/drivers/thermocycler/driver.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/drivers/thermocycler/simulator.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/drivers/types.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/drivers/utils.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/execute.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/hardware_control/__init__.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/hardware_control/__main__.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/hardware_control/adapters.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/hardware_control/api.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/hardware_control/backends/__init__.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/hardware_control/backends/controller.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/hardware_control/backends/errors.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/hardware_control/backends/estop_state.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/hardware_control/backends/flex_protocol.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/hardware_control/backends/ot3controller.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/hardware_control/backends/ot3simulator.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/hardware_control/backends/simulator.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/hardware_control/backends/status_bar_state.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/hardware_control/backends/subsystem_manager.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/hardware_control/backends/tip_presence_manager.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/hardware_control/backends/types.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/hardware_control/constants.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/hardware_control/dev_types.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/hardware_control/emulation/__init__.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/hardware_control/emulation/abstract_emulator.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/hardware_control/emulation/app.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/hardware_control/emulation/connection_handler.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/hardware_control/emulation/heater_shaker.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/hardware_control/emulation/magdeck.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/hardware_control/emulation/module_server/__init__.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/hardware_control/emulation/module_server/client.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/hardware_control/emulation/module_server/helpers.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/hardware_control/emulation/module_server/models.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/hardware_control/emulation/module_server/server.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/hardware_control/emulation/parser.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/hardware_control/emulation/proxy.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/hardware_control/emulation/run_emulator.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/hardware_control/emulation/scripts/__init__.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/hardware_control/emulation/scripts/run_app.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/hardware_control/emulation/scripts/run_module_emulator.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/hardware_control/emulation/scripts/run_smoothie.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/hardware_control/emulation/settings.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/hardware_control/emulation/simulations.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/hardware_control/emulation/smoothie.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/hardware_control/emulation/tempdeck.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/hardware_control/emulation/thermocycler.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/hardware_control/emulation/types.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/hardware_control/emulation/util.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/hardware_control/errors.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/hardware_control/execution_manager.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/hardware_control/instruments/__init__.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/hardware_control/instruments/instrument_abc.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/hardware_control/instruments/ot2/__init__.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/hardware_control/instruments/ot2/instrument_calibration.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/hardware_control/instruments/ot2/pipette.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/hardware_control/instruments/ot2/pipette_handler.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/hardware_control/instruments/ot3/__init__.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/hardware_control/instruments/ot3/gripper.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/hardware_control/instruments/ot3/gripper_handler.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/hardware_control/instruments/ot3/instrument_calibration.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/hardware_control/instruments/ot3/pipette.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/hardware_control/instruments/ot3/pipette_handler.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/hardware_control/module_control.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/hardware_control/modules/__init__.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/hardware_control/modules/errors.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/hardware_control/modules/heater_shaker.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/hardware_control/modules/lid_temp_status.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/hardware_control/modules/magdeck.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/hardware_control/modules/mod_abc.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/hardware_control/modules/module_calibration.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/hardware_control/modules/plate_temp_status.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/hardware_control/modules/tempdeck.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/hardware_control/modules/thermocycler.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/hardware_control/modules/types.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/hardware_control/modules/update.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/hardware_control/modules/utils.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/hardware_control/motion_utilities.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/hardware_control/nozzle_manager.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/hardware_control/ot3_calibration.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/hardware_control/pause_manager.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/hardware_control/poller.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/hardware_control/protocols/__init__.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/hardware_control/protocols/asyncio_configurable.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/hardware_control/protocols/calibratable.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/hardware_control/protocols/chassis_accessory_manager.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/hardware_control/protocols/configurable.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/hardware_control/protocols/event_sourcer.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/hardware_control/protocols/execution_controllable.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/hardware_control/protocols/flex_calibratable.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/hardware_control/protocols/flex_instrument_configurer.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/hardware_control/protocols/gripper_controller.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/hardware_control/protocols/hardware_manager.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/hardware_control/protocols/identifiable.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/hardware_control/protocols/instrument_configurer.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/hardware_control/protocols/liquid_handler.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/hardware_control/protocols/module_provider.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/hardware_control/protocols/motion_controller.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/hardware_control/protocols/simulatable.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/hardware_control/protocols/stoppable.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/hardware_control/protocols/types.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/hardware_control/robot_calibration.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/hardware_control/scripts/__init__.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/hardware_control/scripts/gripper_control.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/hardware_control/scripts/repl.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/hardware_control/scripts/tc_control.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/hardware_control/simulator_setup.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/hardware_control/thread_manager.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/hardware_control/threaded_async_lock.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/hardware_control/util.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/legacy_broker.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/legacy_commands/__init__.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/legacy_commands/commands.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/legacy_commands/helpers.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/legacy_commands/module_commands.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/legacy_commands/protocol_commands.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/legacy_commands/publisher.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/legacy_commands/types.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/motion_planning/__init__.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/motion_planning/adjacent_slots_getters.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/motion_planning/deck_conflict.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/motion_planning/errors.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/motion_planning/types.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/motion_planning/waypoints.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/ordered_set.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_api/__init__.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_api/_liquid.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_api/_nozzle_layout.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_api/_parameter_context.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_api/_parameters.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_api/_types.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_api/config.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_api/core/__init__.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_api/core/common.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_api/core/core_map.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_api/core/engine/__init__.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_api/core/engine/deck_conflict.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_api/core/engine/exceptions.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_api/core/engine/instrument.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_api/core/engine/labware.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_api/core/engine/load_labware_params.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_api/core/engine/module_core.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_api/core/engine/overlap_versions.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_api/core/engine/pipette_movement_conflict.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_api/core/engine/point_calculations.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_api/core/engine/protocol.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_api/core/engine/stringify.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_api/core/engine/well.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_api/core/instrument.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_api/core/labware.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_api/core/legacy/__init__.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_api/core/legacy/deck.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_api/core/legacy/labware_offset_provider.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_api/core/legacy/legacy_instrument_core.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_api/core/legacy/legacy_labware_core.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_api/core/legacy/legacy_module_core.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_api/core/legacy/legacy_protocol_core.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_api/core/legacy/legacy_well_core.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_api/core/legacy/load_info.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_api/core/legacy/module_geometry.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_api/core/legacy/well_geometry.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_api/core/legacy_simulator/__init__.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_api/core/legacy_simulator/legacy_instrument_core.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_api/core/legacy_simulator/legacy_protocol_core.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_api/core/module.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_api/core/protocol.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_api/core/well.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_api/core/well_grid.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_api/create_protocol_context.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_api/deck.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_api/disposal_locations.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_api/instrument_context.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_api/labware.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_api/module_validation_and_errors.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_api/protocol_context.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_api/robot_context.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_api/validation.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/__init__.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/actions/__init__.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/actions/action_dispatcher.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/actions/action_handler.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/actions/actions.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/actions/get_state_update.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/clients/__init__.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/clients/sync_client.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/clients/transports.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/commands/__init__.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/commands/absorbance_reader/__init__.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/commands/absorbance_reader/close_lid.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/commands/absorbance_reader/open_lid.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/commands/aspirate.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/commands/blow_out.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/commands/blow_out_in_place.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/commands/calibration/__init__.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/commands/calibration/calibrate_gripper.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/commands/calibration/calibrate_module.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/commands/calibration/calibrate_pipette.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/commands/calibration/move_to_maintenance_position.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/commands/command_unions.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/commands/comment.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/commands/configure_for_volume.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/commands/configure_nozzle_layout.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/commands/custom.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/commands/dispense.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/commands/generate_command_schema.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/commands/get_tip_presence.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/commands/hash_command_params.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/commands/heater_shaker/__init__.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/commands/heater_shaker/close_labware_latch.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/commands/heater_shaker/deactivate_heater.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/commands/heater_shaker/deactivate_shaker.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/commands/heater_shaker/open_labware_latch.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/commands/heater_shaker/set_and_wait_for_shake_speed.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/commands/heater_shaker/set_target_temperature.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/commands/heater_shaker/wait_for_temperature.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/commands/home.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/commands/liquid_probe.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/commands/load_labware.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/commands/load_liquid.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/commands/load_module.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/commands/load_pipette.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/commands/magnetic_module/__init__.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/commands/magnetic_module/disengage.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/commands/magnetic_module/engage.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/commands/move_labware.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/commands/move_relative.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/commands/move_to_addressable_area.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/commands/move_to_addressable_area_for_drop_tip.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/commands/move_to_coordinates.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/commands/move_to_well.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/commands/prepare_to_aspirate.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/commands/reload_labware.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/commands/retract_axis.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/commands/robot/__init__.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/commands/save_position.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/commands/set_rail_lights.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/commands/set_status_bar.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/commands/temperature_module/__init__.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/commands/temperature_module/deactivate.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/commands/temperature_module/set_target_temperature.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/commands/temperature_module/wait_for_temperature.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/commands/thermocycler/__init__.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/commands/thermocycler/close_lid.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/commands/thermocycler/deactivate_block.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/commands/thermocycler/deactivate_lid.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/commands/thermocycler/open_lid.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/commands/thermocycler/run_extended_profile.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/commands/thermocycler/run_profile.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/commands/thermocycler/set_target_block_temperature.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/commands/thermocycler/set_target_lid_temperature.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/commands/thermocycler/wait_for_block_temperature.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/commands/thermocycler/wait_for_lid_temperature.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/commands/touch_tip.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/commands/unsafe/__init__.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/commands/unsafe/unsafe_blow_out_in_place.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/commands/unsafe/unsafe_drop_tip_in_place.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/commands/unsafe/unsafe_engage_axes.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/commands/verify_tip_presence.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/commands/wait_for_duration.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/commands/wait_for_resume.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/create_protocol_engine.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/engine_support.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/error_recovery_policy.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/execution/__init__.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/execution/command_executor.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/execution/create_queue_worker.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/execution/door_watcher.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/execution/equipment.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/execution/error_recovery_hardware_state_synchronizer.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/execution/gantry_mover.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/execution/hardware_stopper.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/execution/heater_shaker_movement_flagger.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/execution/labware_movement.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/execution/movement.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/execution/pipetting.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/execution/queue_worker.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/execution/rail_lights.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/execution/run_control.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/execution/status_bar.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/execution/thermocycler_movement_flagger.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/execution/thermocycler_plate_lifter.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/execution/tip_handler.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/notes/__init__.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/notes/notes.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/plugins.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/protocol_engine.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/resources/__init__.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/resources/deck_configuration_provider.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/resources/deck_data_provider.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/resources/file_provider.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/resources/fixture_validation.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/resources/labware_data_provider.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/resources/labware_validation.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/resources/model_utils.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/resources/module_data_provider.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/resources/ot3_validation.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/resources/pipette_data_provider.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/slot_standardization.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/state/__init__.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/state/_abstract_store.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/state/_move_types.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/state/addressable_areas.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/state/command_history.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/state/commands.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/state/config.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/state/files.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/state/frustum_helpers.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/state/geometry.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/state/labware.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/state/liquids.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/state/module_substates/__init__.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/state/module_substates/absorbance_reader_substate.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/state/module_substates/heater_shaker_module_substate.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/state/module_substates/magnetic_block_substate.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/state/module_substates/magnetic_module_substate.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/state/module_substates/temperature_module_substate.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/state/module_substates/thermocycler_module_substate.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/state/motion.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/state/pipettes.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/state/state.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/state/state_summary.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/state/tips.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/state/update_types.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/state/wells.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/types.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_reader/__init__.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_reader/extract_labware_definitions.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_reader/file_format_validator.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_reader/file_hasher.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_reader/file_identifier.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_reader/file_reader_writer.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_reader/input_file.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_reader/protocol_files_invalid_error.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_reader/protocol_reader.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_reader/protocol_source.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_reader/role_analyzer.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_runner/__init__.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_runner/create_simulating_orchestrator.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_runner/json_file_reader.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_runner/json_translator.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_runner/legacy_command_mapper.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_runner/legacy_context_plugin.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_runner/protocol_runner.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_runner/python_protocol_wrappers.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_runner/task_queue.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocols/__init__.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocols/advanced_control/__init__.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocols/advanced_control/mix.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocols/advanced_control/transfers.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocols/api_support/__init__.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocols/api_support/constants.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocols/api_support/deck_type.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocols/api_support/definitions.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocols/api_support/instrument.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocols/api_support/labware_like.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocols/api_support/tip_tracker.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocols/api_support/types.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocols/api_support/util.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocols/bundle.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocols/duration/__init__.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocols/duration/errors.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocols/duration/estimator.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocols/execution/__init__.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocols/execution/dev_types.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocols/execution/errors.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocols/execution/execute.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocols/execution/execute_json_v3.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocols/execution/execute_json_v4.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocols/execution/execute_json_v5.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocols/execution/execute_python.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocols/execution/json_dispatchers.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocols/execution/types.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocols/geometry/__init__.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocols/geometry/labware_geometry.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocols/geometry/planning.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocols/labware.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocols/models/__init__.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocols/models/json_protocol.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocols/parameters/__init__.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocols/parameters/csv_parameter_definition.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocols/parameters/exceptions.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocols/parameters/parameter_definition.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocols/parameters/types.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocols/parameters/validation.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocols/parse.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocols/types.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/py.typed +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/resources/scripts/lpc21isp +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/resources/smoothie-edge-8414642.hex +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/simulate.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/system/__init__.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/system/camera.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/system/log_control.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/system/nmcli.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/system/resin.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/system/smoothie_update.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/system/wifi.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/tools/__init__.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/tools/args_handler.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/tools/write_pipette_memory.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/types.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/util/__init__.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/util/async_helpers.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/util/broker.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/util/change_notifier.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/util/entrypoint_util.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/util/get_union_elements.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/util/helpers.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/util/linal.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/util/logging_config.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/util/performance_helpers.py +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons.egg-info/SOURCES.txt +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons.egg-info/dependency_links.txt +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons.egg-info/entry_points.txt +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons.egg-info/not-zip-safe +0 -0
- {opentrons-8.2.0 → opentrons-8.2.0a1}/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.0a1
|
|
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.0a1
|
|
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.0a1; 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.0a1; extra == "flex-hardware"
|
|
40
40
|
|
|
41
41
|
.. _Full API Documentation: http://docs.opentrons.com
|
|
42
42
|
|
{opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/drivers/absorbance_reader/async_byonoy.py
RENAMED
|
@@ -23,8 +23,7 @@ from opentrons.hardware_control.modules.errors import AbsorbanceReaderDisconnect
|
|
|
23
23
|
|
|
24
24
|
|
|
25
25
|
SN_PARSER = re.compile(r'ATTRS{serial}=="(?P<serial>.+?)"')
|
|
26
|
-
|
|
27
|
-
VERSION_PARSER = re.compile(r"(?P<version>(V\d+\.\d+\.\d+|^\d+$))")
|
|
26
|
+
VERSION_PARSER = re.compile(r"Absorbance (?P<version>V\d+\.\d+\.\d+)")
|
|
28
27
|
SERIAL_PARSER = re.compile(r"(?P<serial>(OPT|BYO)[A-Z]{3}[0-9]+)")
|
|
29
28
|
|
|
30
29
|
|
|
@@ -157,10 +156,10 @@ class AsyncByonoy:
|
|
|
157
156
|
func=partial(self._interface.get_device_information, handle),
|
|
158
157
|
)
|
|
159
158
|
self._raise_if_error(err.name, f"Error getting device information: {err}")
|
|
160
|
-
serial_match = SERIAL_PARSER.
|
|
161
|
-
version_match = VERSION_PARSER.
|
|
159
|
+
serial_match = SERIAL_PARSER.fullmatch(device_info.sn)
|
|
160
|
+
version_match = VERSION_PARSER.match(device_info.version)
|
|
162
161
|
serial = serial_match["serial"].strip() if serial_match else "OPTMAA00000"
|
|
163
|
-
version = version_match["version"].lower() if version_match else "v0"
|
|
162
|
+
version = version_match["version"].lower() if version_match else "v0.0.0"
|
|
164
163
|
info = {
|
|
165
164
|
"serial": serial,
|
|
166
165
|
"version": version,
|
|
@@ -652,7 +652,6 @@ _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,
|
|
656
655
|
}
|
|
657
656
|
|
|
658
657
|
|
{opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/hardware_control/modules/absorbance_reader.py
RENAMED
|
@@ -312,8 +312,6 @@ 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)
|
|
317
315
|
self._device_info = await self._driver.get_device_info()
|
|
318
316
|
await self._poller.start()
|
|
319
317
|
self._updating = False
|
|
@@ -775,12 +775,12 @@ class OT3API(
|
|
|
775
775
|
"""
|
|
776
776
|
Function to update motor estimation for a set of axes
|
|
777
777
|
"""
|
|
778
|
-
if axes is None:
|
|
779
|
-
axes = [ax for ax in Axis]
|
|
780
778
|
|
|
781
|
-
|
|
782
|
-
|
|
783
|
-
|
|
779
|
+
if axes:
|
|
780
|
+
checked_axes = [ax for ax in axes if ax in Axis]
|
|
781
|
+
else:
|
|
782
|
+
checked_axes = [ax for ax in Axis]
|
|
783
|
+
await self._backend.update_motor_estimation(checked_axes)
|
|
784
784
|
|
|
785
785
|
# Global actions API
|
|
786
786
|
def pause(self, pause_type: PauseType) -> None:
|
{opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/hardware_control/protocols/position_estimator.py
RENAMED
|
@@ -10,7 +10,7 @@ class PositionEstimator(Protocol):
|
|
|
10
10
|
"""Update the specified axes' position estimators from their encoders.
|
|
11
11
|
|
|
12
12
|
This will allow these axes to make a non-home move even if they do not currently have
|
|
13
|
-
a position estimation (unless there is no tracked
|
|
13
|
+
a position estimation (unless there is no tracked poition from the encoders, as would be
|
|
14
14
|
true immediately after boot).
|
|
15
15
|
|
|
16
16
|
Axis encoders have less precision than their position estimators. Calling this function will
|
|
@@ -19,8 +19,6 @@ class PositionEstimator(Protocol):
|
|
|
19
19
|
|
|
20
20
|
This function updates only the requested axes. If other axes have bad position estimation,
|
|
21
21
|
moves that require those axes or attempts to get the position of those axes will still fail.
|
|
22
|
-
Axes that are not currently available (like a plunger for a pipette that is not connected)
|
|
23
|
-
will be ignored.
|
|
24
22
|
"""
|
|
25
23
|
...
|
|
26
24
|
|
|
@@ -625,8 +625,6 @@ 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
|
|
630
628
|
|
|
631
629
|
|
|
632
630
|
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
|
|
994
|
+
"""An object representing a connected Absorbance 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,21 +1009,17 @@ class AbsorbanceReaderContext(ModuleContext):
|
|
|
1009
1009
|
|
|
1010
1010
|
@requires_version(2, 21)
|
|
1011
1011
|
def close_lid(self) -> None:
|
|
1012
|
-
"""
|
|
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
|
-
"""
|
|
1012
|
+
"""Close the lid of the Absorbance Reader."""
|
|
1017
1013
|
self._core.close_lid()
|
|
1018
1014
|
|
|
1019
1015
|
@requires_version(2, 21)
|
|
1020
1016
|
def open_lid(self) -> None:
|
|
1021
|
-
"""
|
|
1017
|
+
"""Open the lid of the Absorbance Reader."""
|
|
1022
1018
|
self._core.open_lid()
|
|
1023
1019
|
|
|
1024
1020
|
@requires_version(2, 21)
|
|
1025
1021
|
def is_lid_on(self) -> bool:
|
|
1026
|
-
"""Return ``True`` if the Absorbance
|
|
1022
|
+
"""Return ``True`` if the Absorbance Reader's lid is currently closed."""
|
|
1027
1023
|
return self._core.is_lid_on()
|
|
1028
1024
|
|
|
1029
1025
|
@requires_version(2, 21)
|
|
@@ -1033,28 +1029,19 @@ class AbsorbanceReaderContext(ModuleContext):
|
|
|
1033
1029
|
wavelengths: List[int],
|
|
1034
1030
|
reference_wavelength: Optional[int] = None,
|
|
1035
1031
|
) -> None:
|
|
1036
|
-
"""
|
|
1037
|
-
|
|
1038
|
-
See :ref:`absorbance-initialization` for examples.
|
|
1032
|
+
"""Take a zero reading on the Absorbance Plate Reader Module.
|
|
1039
1033
|
|
|
1040
1034
|
:param mode: Either ``"single"`` or ``"multi"``.
|
|
1041
1035
|
|
|
1042
|
-
|
|
1043
|
-
|
|
1044
|
-
|
|
1045
|
-
|
|
1046
|
-
:param wavelengths: A list of wavelengths, in
|
|
1047
|
-
|
|
1048
|
-
|
|
1049
|
-
|
|
1050
|
-
|
|
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.
|
|
1036
|
+
- In single measurement mode, :py:meth:`.AbsorbanceReaderContext.read` uses
|
|
1037
|
+
one sample wavelength and an optional reference wavelength.
|
|
1038
|
+
- In multiple measurement mode, :py:meth:`.AbsorbanceReaderContext.read` uses
|
|
1039
|
+
a list of up to six sample wavelengths.
|
|
1040
|
+
:param wavelengths: A list of wavelengths, in mm, to measure.
|
|
1041
|
+
- Must contain only one item when initializing a single measurement.
|
|
1042
|
+
- Must contain one to six items when initializing a multiple measurement.
|
|
1043
|
+
:param reference_wavelength: An optional reference wavelength, in mm. Cannot be
|
|
1044
|
+
used with multiple measurements.
|
|
1058
1045
|
"""
|
|
1059
1046
|
self._core.initialize(
|
|
1060
1047
|
mode, wavelengths, reference_wavelength=reference_wavelength
|
|
@@ -1064,33 +1051,16 @@ class AbsorbanceReaderContext(ModuleContext):
|
|
|
1064
1051
|
def read(
|
|
1065
1052
|
self, export_filename: Optional[str] = None
|
|
1066
1053
|
) -> Dict[int, Dict[str, float]]:
|
|
1067
|
-
"""
|
|
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.
|
|
1054
|
+
"""Initiate read on the Absorbance Reader.
|
|
1083
1055
|
|
|
1084
|
-
|
|
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``.
|
|
1056
|
+
Returns a dictionary of wavelengths to dictionary of values ordered by well name.
|
|
1091
1057
|
|
|
1092
|
-
|
|
1058
|
+
:param export_filename: Optional, if a filename is provided a CSV file will be saved
|
|
1059
|
+
as a result of the read action containing measurement data. The filename will
|
|
1060
|
+
be modified to include the wavelength used during measurement. If multiple
|
|
1061
|
+
measurements are taken, then a file will be generated for each wavelength provided.
|
|
1093
1062
|
|
|
1094
|
-
:
|
|
1063
|
+
Example: If `export_filename="my_data"` and wavelengths 450 and 531 are used during
|
|
1064
|
+
measurement, the output files will be "my_data_450.csv" and "my_data_531.csv".
|
|
1095
1065
|
"""
|
|
1096
1066
|
return self._core.read(filename=export_filename)
|
|
@@ -10,7 +10,6 @@ from opentrons.protocol_engine.types import ABSMeasureMode
|
|
|
10
10
|
|
|
11
11
|
from ..command import AbstractCommandImpl, BaseCommand, BaseCommandCreate, SuccessData
|
|
12
12
|
from ...errors.error_occurrence import ErrorOccurrence
|
|
13
|
-
from ...errors import InvalidWavelengthError
|
|
14
13
|
|
|
15
14
|
if TYPE_CHECKING:
|
|
16
15
|
from opentrons.protocol_engine.state.state import StateView
|
|
@@ -70,41 +69,30 @@ class InitializeImpl(
|
|
|
70
69
|
unsupported_wavelengths = sample_wavelengths.difference(
|
|
71
70
|
supported_wavelengths
|
|
72
71
|
)
|
|
73
|
-
sample_wl_str = ", ".join([str(w) + "nm" for w in sample_wavelengths])
|
|
74
|
-
supported_wl_str = ", ".join([str(w) + "nm" for w in supported_wavelengths])
|
|
75
|
-
unsupported_wl_str = ", ".join(
|
|
76
|
-
[str(w) + "nm" for w in unsupported_wavelengths]
|
|
77
|
-
)
|
|
78
72
|
if unsupported_wavelengths:
|
|
79
|
-
raise
|
|
80
|
-
f"Unsupported wavelengths: {unsupported_wl_str}. "
|
|
81
|
-
f" Use one of {supported_wl_str} instead."
|
|
82
|
-
)
|
|
73
|
+
raise ValueError(f"Unsupported wavelengths: {unsupported_wavelengths}")
|
|
83
74
|
|
|
84
75
|
if params.measureMode == "single":
|
|
85
76
|
if sample_wavelengths_len != 1:
|
|
86
77
|
raise ValueError(
|
|
87
|
-
f"
|
|
88
|
-
f" {sample_wl_str} provided instead."
|
|
78
|
+
f"single requires one sample wavelength, provided {sample_wavelengths}"
|
|
89
79
|
)
|
|
90
80
|
if (
|
|
91
81
|
reference_wavelength is not None
|
|
92
82
|
and reference_wavelength not in supported_wavelengths
|
|
93
83
|
):
|
|
94
|
-
raise
|
|
95
|
-
f"Reference wavelength {reference_wavelength}
|
|
96
|
-
f" Use one of {supported_wl_str} instead."
|
|
84
|
+
raise ValueError(
|
|
85
|
+
f"Reference wavelength {reference_wavelength} not supported {supported_wavelengths}"
|
|
97
86
|
)
|
|
98
87
|
|
|
99
88
|
if params.measureMode == "multi":
|
|
100
89
|
if sample_wavelengths_len < 1 or sample_wavelengths_len > 6:
|
|
101
90
|
raise ValueError(
|
|
102
|
-
f"
|
|
103
|
-
f" {sample_wl_str} provided instead."
|
|
91
|
+
f"multi requires 1-6 sample wavelengths, provided {sample_wavelengths}"
|
|
104
92
|
)
|
|
105
93
|
if reference_wavelength is not None:
|
|
106
|
-
raise
|
|
107
|
-
"Reference wavelength cannot be used with
|
|
94
|
+
raise RuntimeError(
|
|
95
|
+
"Reference wavelength cannot be used with multi mode."
|
|
108
96
|
)
|
|
109
97
|
|
|
110
98
|
await abs_reader.set_sample_wavelength(
|
|
@@ -80,10 +80,6 @@ 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
|
-
)
|
|
87
83
|
|
|
88
84
|
# TODO: we need to return a file ID and increase the file count even when a moduel is not attached
|
|
89
85
|
if (
|
{opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/commands/aspirate_in_place.py
RENAMED
|
@@ -83,11 +83,10 @@ 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
|
-
|
|
88
86
|
ready_to_aspirate = self._pipetting.get_is_ready_to_aspirate(
|
|
89
87
|
pipette_id=params.pipetteId,
|
|
90
88
|
)
|
|
89
|
+
|
|
91
90
|
if not ready_to_aspirate:
|
|
92
91
|
raise PipetteNotReadyToAspirateError(
|
|
93
92
|
"Pipette cannot aspirate in place because of a previous blow out."
|
|
@@ -95,10 +94,11 @@ class AspirateInPlaceImplementation(
|
|
|
95
94
|
" so the plunger can be reset in a known safe position."
|
|
96
95
|
)
|
|
97
96
|
|
|
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)
|
|
100
99
|
|
|
101
100
|
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,9 +185,7 @@ class BaseCommand(
|
|
|
185
185
|
)
|
|
186
186
|
error: Union[
|
|
187
187
|
_ErrorT,
|
|
188
|
-
# ErrorOccurrence here is
|
|
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.
|
|
188
|
+
# ErrorOccurrence here is for undefined errors not captured by _ErrorT.
|
|
191
189
|
ErrorOccurrence,
|
|
192
190
|
None,
|
|
193
191
|
] = Field(
|
{opentrons-8.2.0 → opentrons-8.2.0a1}/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)
|
|
80
79
|
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,7 +145,6 @@ class DropTipImplementation(AbstractCommandImpl[DropTipParams, _ExecuteReturn]):
|
|
|
145
145
|
error=exception,
|
|
146
146
|
)
|
|
147
147
|
],
|
|
148
|
-
errorInfo={"retryLocation": position},
|
|
149
148
|
)
|
|
150
149
|
state_update_if_false_positive = update_types.StateUpdate()
|
|
151
150
|
state_update_if_false_positive.update_pipette_tip_state(
|
|
@@ -166,7 +165,7 @@ class DropTipImplementation(AbstractCommandImpl[DropTipParams, _ExecuteReturn]):
|
|
|
166
165
|
)
|
|
167
166
|
|
|
168
167
|
|
|
169
|
-
class DropTip(BaseCommand[DropTipParams, DropTipResult,
|
|
168
|
+
class DropTip(BaseCommand[DropTipParams, DropTipResult, ErrorOccurrence]):
|
|
170
169
|
"""Drop tip command model."""
|
|
171
170
|
|
|
172
171
|
commandType: DropTipCommandType = "dropTip"
|
{opentrons-8.2.0 → opentrons-8.2.0a1}/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
|
|
22
22
|
|
|
23
23
|
|
|
24
24
|
DropTipInPlaceCommandType = Literal["dropTipInPlace"]
|
|
@@ -57,19 +57,15 @@ class DropTipInPlaceImplementation(
|
|
|
57
57
|
self,
|
|
58
58
|
tip_handler: TipHandler,
|
|
59
59
|
model_utils: ModelUtils,
|
|
60
|
-
gantry_mover: GantryMover,
|
|
61
60
|
**kwargs: object,
|
|
62
61
|
) -> None:
|
|
63
62
|
self._tip_handler = tip_handler
|
|
64
63
|
self._model_utils = model_utils
|
|
65
|
-
self._gantry_mover = gantry_mover
|
|
66
64
|
|
|
67
65
|
async def execute(self, params: DropTipInPlaceParams) -> _ExecuteReturn:
|
|
68
66
|
"""Drop a tip using the requested pipette."""
|
|
69
67
|
state_update = update_types.StateUpdate()
|
|
70
68
|
|
|
71
|
-
retry_location = await self._gantry_mover.get_position(params.pipetteId)
|
|
72
|
-
|
|
73
69
|
try:
|
|
74
70
|
await self._tip_handler.drop_tip(
|
|
75
71
|
pipette_id=params.pipetteId, home_after=params.homeAfter
|
|
@@ -89,7 +85,6 @@ class DropTipInPlaceImplementation(
|
|
|
89
85
|
error=exception,
|
|
90
86
|
)
|
|
91
87
|
],
|
|
92
|
-
errorInfo={"retryLocation": retry_location},
|
|
93
88
|
)
|
|
94
89
|
return DefinedErrorData(
|
|
95
90
|
public=error,
|
|
@@ -104,7 +99,7 @@ class DropTipInPlaceImplementation(
|
|
|
104
99
|
|
|
105
100
|
|
|
106
101
|
class DropTipInPlace(
|
|
107
|
-
BaseCommand[DropTipInPlaceParams, DropTipInPlaceResult,
|
|
102
|
+
BaseCommand[DropTipInPlaceParams, DropTipInPlaceResult, ErrorOccurrence]
|
|
108
103
|
):
|
|
109
104
|
"""Drop tip in place command model."""
|
|
110
105
|
|
|
@@ -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.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/commands/pipetting_common.py
RENAMED
|
@@ -148,12 +148,7 @@ class DestinationPositionResult(BaseModel):
|
|
|
148
148
|
|
|
149
149
|
|
|
150
150
|
class ErrorLocationInfo(TypedDict):
|
|
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
|
-
"""
|
|
151
|
+
"""Holds a retry location for in-place error recovery."""
|
|
157
152
|
|
|
158
153
|
retryLocation: Tuple[float, float, float]
|
|
159
154
|
|
|
@@ -206,5 +201,3 @@ class TipPhysicallyAttachedError(ErrorOccurrence):
|
|
|
206
201
|
|
|
207
202
|
errorCode: str = ErrorCodes.TIP_DROP_FAILED.value.code
|
|
208
203
|
detail: str = ErrorCodes.TIP_DROP_FAILED.value.detail
|
|
209
|
-
|
|
210
|
-
errorInfo: ErrorLocationInfo
|
|
@@ -129,14 +129,9 @@ class UnsafePlaceLabwareImplementation(
|
|
|
129
129
|
module.id
|
|
130
130
|
)
|
|
131
131
|
|
|
132
|
-
# NOTE: When the estop is pressed, the gantry loses position,
|
|
133
|
-
# the
|
|
134
|
-
|
|
135
|
-
# the gripper is holding the plate reader, and a full home would
|
|
136
|
-
# bang it into the right window.
|
|
137
|
-
await ot3api.home(axes=[Axis.Z_L, Axis.Z_R, Axis.Z_G])
|
|
138
|
-
await ot3api.engage_axes([Axis.X, Axis.Y])
|
|
139
|
-
await ot3api.update_axis_position_estimations([Axis.X, Axis.Y])
|
|
132
|
+
# NOTE: When the estop is pressed, the gantry loses position,
|
|
133
|
+
# so the robot needs to home x, y to sync.
|
|
134
|
+
await ot3api.home(axes=[Axis.Z_L, Axis.Z_R, Axis.Z_G, Axis.X, Axis.Y])
|
|
140
135
|
|
|
141
136
|
# Place the labware down
|
|
142
137
|
await self._start_movement(ot3api, definition, location, drop_offset)
|
|
@@ -1,8 +1,6 @@
|
|
|
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
|
|
6
4
|
from opentrons.protocol_engine.errors.exceptions import GripperNotAttachedError
|
|
7
5
|
from pydantic import BaseModel
|
|
8
6
|
from typing import Optional, Type
|
|
@@ -48,7 +46,7 @@ class UnsafeUngripLabwareImplementation(
|
|
|
48
46
|
ot3_hardware_api = ensure_ot3_hardware(self._hardware_api)
|
|
49
47
|
if not ot3_hardware_api.has_gripper():
|
|
50
48
|
raise GripperNotAttachedError("No gripper found to perform ungrip.")
|
|
51
|
-
await ot3_hardware_api.
|
|
49
|
+
await ot3_hardware_api.ungrip()
|
|
52
50
|
return SuccessData(
|
|
53
51
|
public=UnsafeUngripLabwareResult(),
|
|
54
52
|
)
|
|
@@ -23,11 +23,7 @@ class UpdatePositionEstimatorsParams(BaseModel):
|
|
|
23
23
|
"""Payload required for an UpdatePositionEstimators command."""
|
|
24
24
|
|
|
25
25
|
axes: List[MotorAxis] = Field(
|
|
26
|
-
...,
|
|
27
|
-
description=(
|
|
28
|
-
"The axes for which to update the position estimators."
|
|
29
|
-
" Any axes that are not physically present will be ignored."
|
|
30
|
-
),
|
|
26
|
+
..., description="The axes for which to update the position estimators."
|
|
31
27
|
)
|
|
32
28
|
|
|
33
29
|
|
|
@@ -55,7 +55,6 @@ from .exceptions import (
|
|
|
55
55
|
InvalidTargetTemperatureError,
|
|
56
56
|
InvalidBlockVolumeError,
|
|
57
57
|
InvalidHoldTimeError,
|
|
58
|
-
InvalidWavelengthError,
|
|
59
58
|
CannotPerformModuleAction,
|
|
60
59
|
PauseNotAllowedError,
|
|
61
60
|
ResumeFromRecoveryNotAllowedError,
|
|
@@ -138,7 +137,6 @@ __all__ = [
|
|
|
138
137
|
"InvalidTargetSpeedError",
|
|
139
138
|
"InvalidBlockVolumeError",
|
|
140
139
|
"InvalidHoldTimeError",
|
|
141
|
-
"InvalidWavelengthError",
|
|
142
140
|
"CannotPerformModuleAction",
|
|
143
141
|
"ResumeFromRecoveryNotAllowedError",
|
|
144
142
|
"PauseNotAllowedError",
|
{opentrons-8.2.0 → opentrons-8.2.0a1}/src/opentrons/protocol_engine/errors/error_occurrence.py
RENAMED
|
@@ -12,6 +12,8 @@ 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
|
|
15
17
|
class ErrorOccurrence(BaseModel):
|
|
16
18
|
"""An occurrence of a specific error during protocol execution."""
|
|
17
19
|
|
|
@@ -42,15 +44,8 @@ class ErrorOccurrence(BaseModel):
|
|
|
42
44
|
id: str = Field(..., description="Unique identifier of this error occurrence.")
|
|
43
45
|
createdAt: datetime = Field(..., description="When the error occurred.")
|
|
44
46
|
|
|
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.
|
|
50
47
|
isDefined: bool = Field(
|
|
51
|
-
# default=False for database backwards compatibility
|
|
52
|
-
# serialized before isDefined existed.
|
|
53
|
-
default=False,
|
|
48
|
+
default=False, # default=False for database backwards compatibility.
|
|
54
49
|
description=dedent(
|
|
55
50
|
"""\
|
|
56
51
|
Whether this error is *defined.*
|
|
@@ -773,19 +773,6 @@ class InvalidBlockVolumeError(ProtocolEngineError):
|
|
|
773
773
|
super().__init__(ErrorCodes.GENERAL_ERROR, message, details, wrapping)
|
|
774
774
|
|
|
775
775
|
|
|
776
|
-
class InvalidWavelengthError(ProtocolEngineError):
|
|
777
|
-
"""Raised when attempting to set an invalid absorbance wavelength."""
|
|
778
|
-
|
|
779
|
-
def __init__(
|
|
780
|
-
self,
|
|
781
|
-
message: Optional[str] = None,
|
|
782
|
-
details: Optional[Dict[str, Any]] = None,
|
|
783
|
-
wrapping: Optional[Sequence[EnumeratedError]] = None,
|
|
784
|
-
) -> None:
|
|
785
|
-
"""Build a InvalidWavelengthError."""
|
|
786
|
-
super().__init__(ErrorCodes.GENERAL_ERROR, message, details, wrapping)
|
|
787
|
-
|
|
788
|
-
|
|
789
776
|
class InvalidHoldTimeError(ProtocolEngineError):
|
|
790
777
|
"""An error raised when attempting to set an invalid temperature hold time."""
|
|
791
778
|
|
|
@@ -1268,10 +1268,7 @@ 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
|
-
|
|
1272
|
-
"{:.5}".format(str(value))
|
|
1273
|
-
) # Truncate the returned value to the third decimal place
|
|
1274
|
-
well_map[well_key] = truncated_value
|
|
1271
|
+
well_map[well_key] = value
|
|
1275
1272
|
return well_map
|
|
1276
1273
|
else:
|
|
1277
1274
|
raise ValueError(
|
|
@@ -418,21 +418,6 @@ 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
|
-
|
|
436
421
|
def set_error_recovery_policy(self, policy: ErrorRecoveryPolicy) -> None:
|
|
437
422
|
"""Create error recovery policy for the run."""
|
|
438
423
|
self._protocol_engine.set_error_recovery_policy(policy)
|