opentrons 8.1.0__py2.py3-none-any.whl → 8.2.0__py2.py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- opentrons/cli/analyze.py +71 -7
- opentrons/config/__init__.py +9 -0
- opentrons/config/advanced_settings.py +22 -0
- opentrons/config/defaults_ot3.py +14 -36
- opentrons/config/feature_flags.py +4 -0
- opentrons/config/types.py +6 -17
- opentrons/drivers/absorbance_reader/abstract.py +27 -3
- opentrons/drivers/absorbance_reader/async_byonoy.py +208 -154
- opentrons/drivers/absorbance_reader/driver.py +24 -15
- opentrons/drivers/absorbance_reader/hid_protocol.py +79 -50
- opentrons/drivers/absorbance_reader/simulator.py +32 -6
- opentrons/drivers/types.py +23 -1
- opentrons/execute.py +2 -2
- opentrons/hardware_control/api.py +18 -10
- opentrons/hardware_control/backends/controller.py +3 -2
- opentrons/hardware_control/backends/flex_protocol.py +11 -5
- opentrons/hardware_control/backends/ot3controller.py +18 -50
- opentrons/hardware_control/backends/ot3simulator.py +7 -6
- opentrons/hardware_control/backends/ot3utils.py +1 -0
- opentrons/hardware_control/instruments/ot2/pipette_handler.py +22 -82
- opentrons/hardware_control/instruments/ot3/pipette_handler.py +10 -2
- opentrons/hardware_control/module_control.py +43 -2
- opentrons/hardware_control/modules/__init__.py +7 -1
- opentrons/hardware_control/modules/absorbance_reader.py +232 -83
- opentrons/hardware_control/modules/errors.py +7 -0
- opentrons/hardware_control/modules/heater_shaker.py +8 -3
- opentrons/hardware_control/modules/magdeck.py +12 -3
- opentrons/hardware_control/modules/mod_abc.py +27 -2
- opentrons/hardware_control/modules/tempdeck.py +15 -7
- opentrons/hardware_control/modules/thermocycler.py +69 -3
- opentrons/hardware_control/modules/types.py +11 -5
- opentrons/hardware_control/modules/update.py +11 -5
- opentrons/hardware_control/modules/utils.py +3 -1
- opentrons/hardware_control/ot3_calibration.py +6 -6
- opentrons/hardware_control/ot3api.py +131 -94
- opentrons/hardware_control/poller.py +15 -11
- opentrons/hardware_control/protocols/__init__.py +1 -7
- opentrons/hardware_control/protocols/instrument_configurer.py +14 -2
- opentrons/hardware_control/protocols/liquid_handler.py +5 -0
- opentrons/hardware_control/protocols/position_estimator.py +3 -1
- opentrons/hardware_control/types.py +2 -0
- opentrons/legacy_commands/helpers.py +8 -2
- opentrons/motion_planning/__init__.py +2 -0
- opentrons/motion_planning/waypoints.py +32 -0
- opentrons/protocol_api/__init__.py +2 -1
- opentrons/protocol_api/_liquid.py +87 -1
- opentrons/protocol_api/_parameter_context.py +10 -1
- opentrons/protocol_api/core/engine/deck_conflict.py +0 -297
- opentrons/protocol_api/core/engine/instrument.py +29 -25
- opentrons/protocol_api/core/engine/labware.py +20 -4
- opentrons/protocol_api/core/engine/module_core.py +166 -17
- opentrons/protocol_api/core/engine/pipette_movement_conflict.py +362 -0
- opentrons/protocol_api/core/engine/protocol.py +30 -2
- opentrons/protocol_api/core/instrument.py +2 -0
- opentrons/protocol_api/core/labware.py +4 -0
- opentrons/protocol_api/core/legacy/legacy_instrument_core.py +2 -0
- opentrons/protocol_api/core/legacy/legacy_labware_core.py +5 -0
- opentrons/protocol_api/core/legacy/legacy_protocol_core.py +6 -2
- opentrons/protocol_api/core/legacy_simulator/legacy_instrument_core.py +2 -0
- opentrons/protocol_api/core/module.py +22 -4
- opentrons/protocol_api/core/protocol.py +6 -2
- opentrons/protocol_api/instrument_context.py +52 -20
- opentrons/protocol_api/labware.py +13 -1
- opentrons/protocol_api/module_contexts.py +115 -17
- opentrons/protocol_api/protocol_context.py +49 -5
- opentrons/protocol_api/validation.py +5 -3
- opentrons/protocol_engine/__init__.py +10 -9
- opentrons/protocol_engine/actions/__init__.py +3 -0
- opentrons/protocol_engine/actions/actions.py +30 -25
- opentrons/protocol_engine/actions/get_state_update.py +38 -0
- opentrons/protocol_engine/clients/sync_client.py +1 -1
- opentrons/protocol_engine/clients/transports.py +1 -1
- opentrons/protocol_engine/commands/__init__.py +0 -4
- opentrons/protocol_engine/commands/absorbance_reader/__init__.py +41 -11
- opentrons/protocol_engine/commands/absorbance_reader/close_lid.py +148 -0
- opentrons/protocol_engine/commands/absorbance_reader/initialize.py +65 -9
- opentrons/protocol_engine/commands/absorbance_reader/open_lid.py +148 -0
- opentrons/protocol_engine/commands/absorbance_reader/read.py +200 -0
- opentrons/protocol_engine/commands/aspirate.py +29 -16
- opentrons/protocol_engine/commands/aspirate_in_place.py +33 -16
- opentrons/protocol_engine/commands/blow_out.py +63 -14
- opentrons/protocol_engine/commands/blow_out_in_place.py +55 -13
- opentrons/protocol_engine/commands/calibration/calibrate_gripper.py +2 -5
- opentrons/protocol_engine/commands/calibration/calibrate_module.py +3 -4
- opentrons/protocol_engine/commands/calibration/calibrate_pipette.py +2 -5
- opentrons/protocol_engine/commands/calibration/move_to_maintenance_position.py +6 -4
- opentrons/protocol_engine/commands/command.py +31 -18
- opentrons/protocol_engine/commands/command_unions.py +37 -24
- opentrons/protocol_engine/commands/comment.py +5 -3
- opentrons/protocol_engine/commands/configure_for_volume.py +11 -14
- opentrons/protocol_engine/commands/configure_nozzle_layout.py +9 -15
- opentrons/protocol_engine/commands/custom.py +5 -3
- opentrons/protocol_engine/commands/dispense.py +42 -20
- opentrons/protocol_engine/commands/dispense_in_place.py +32 -14
- opentrons/protocol_engine/commands/drop_tip.py +70 -16
- opentrons/protocol_engine/commands/drop_tip_in_place.py +59 -13
- opentrons/protocol_engine/commands/get_tip_presence.py +5 -3
- opentrons/protocol_engine/commands/heater_shaker/close_labware_latch.py +6 -6
- opentrons/protocol_engine/commands/heater_shaker/deactivate_heater.py +6 -6
- opentrons/protocol_engine/commands/heater_shaker/deactivate_shaker.py +6 -6
- opentrons/protocol_engine/commands/heater_shaker/open_labware_latch.py +8 -6
- opentrons/protocol_engine/commands/heater_shaker/set_and_wait_for_shake_speed.py +8 -4
- opentrons/protocol_engine/commands/heater_shaker/set_target_temperature.py +6 -4
- opentrons/protocol_engine/commands/heater_shaker/wait_for_temperature.py +6 -6
- opentrons/protocol_engine/commands/home.py +11 -5
- opentrons/protocol_engine/commands/liquid_probe.py +146 -88
- opentrons/protocol_engine/commands/load_labware.py +28 -5
- opentrons/protocol_engine/commands/load_liquid.py +18 -7
- opentrons/protocol_engine/commands/load_module.py +4 -6
- opentrons/protocol_engine/commands/load_pipette.py +18 -17
- opentrons/protocol_engine/commands/magnetic_module/disengage.py +6 -6
- opentrons/protocol_engine/commands/magnetic_module/engage.py +6 -4
- opentrons/protocol_engine/commands/move_labware.py +155 -23
- opentrons/protocol_engine/commands/move_relative.py +15 -3
- opentrons/protocol_engine/commands/move_to_addressable_area.py +29 -4
- opentrons/protocol_engine/commands/move_to_addressable_area_for_drop_tip.py +13 -4
- opentrons/protocol_engine/commands/move_to_coordinates.py +11 -5
- opentrons/protocol_engine/commands/move_to_well.py +37 -10
- opentrons/protocol_engine/commands/pick_up_tip.py +51 -30
- opentrons/protocol_engine/commands/pipetting_common.py +47 -16
- opentrons/protocol_engine/commands/prepare_to_aspirate.py +62 -15
- opentrons/protocol_engine/commands/reload_labware.py +13 -4
- opentrons/protocol_engine/commands/retract_axis.py +6 -3
- opentrons/protocol_engine/commands/save_position.py +2 -3
- opentrons/protocol_engine/commands/set_rail_lights.py +5 -3
- opentrons/protocol_engine/commands/set_status_bar.py +5 -3
- opentrons/protocol_engine/commands/temperature_module/deactivate.py +6 -4
- opentrons/protocol_engine/commands/temperature_module/set_target_temperature.py +3 -4
- opentrons/protocol_engine/commands/temperature_module/wait_for_temperature.py +6 -6
- opentrons/protocol_engine/commands/thermocycler/__init__.py +19 -0
- opentrons/protocol_engine/commands/thermocycler/close_lid.py +8 -8
- opentrons/protocol_engine/commands/thermocycler/deactivate_block.py +6 -4
- opentrons/protocol_engine/commands/thermocycler/deactivate_lid.py +6 -4
- opentrons/protocol_engine/commands/thermocycler/open_lid.py +8 -4
- opentrons/protocol_engine/commands/thermocycler/run_extended_profile.py +165 -0
- opentrons/protocol_engine/commands/thermocycler/run_profile.py +6 -6
- opentrons/protocol_engine/commands/thermocycler/set_target_block_temperature.py +3 -4
- opentrons/protocol_engine/commands/thermocycler/set_target_lid_temperature.py +3 -4
- opentrons/protocol_engine/commands/thermocycler/wait_for_block_temperature.py +6 -4
- opentrons/protocol_engine/commands/thermocycler/wait_for_lid_temperature.py +6 -4
- opentrons/protocol_engine/commands/touch_tip.py +19 -7
- opentrons/protocol_engine/commands/unsafe/__init__.py +30 -0
- opentrons/protocol_engine/commands/unsafe/unsafe_blow_out_in_place.py +6 -4
- opentrons/protocol_engine/commands/unsafe/unsafe_drop_tip_in_place.py +12 -4
- opentrons/protocol_engine/commands/unsafe/unsafe_engage_axes.py +5 -3
- opentrons/protocol_engine/commands/unsafe/unsafe_place_labware.py +208 -0
- opentrons/protocol_engine/commands/unsafe/unsafe_ungrip_labware.py +77 -0
- opentrons/protocol_engine/commands/unsafe/update_position_estimators.py +10 -4
- opentrons/protocol_engine/commands/verify_tip_presence.py +5 -5
- opentrons/protocol_engine/commands/wait_for_duration.py +5 -3
- opentrons/protocol_engine/commands/wait_for_resume.py +5 -3
- opentrons/protocol_engine/create_protocol_engine.py +60 -10
- opentrons/protocol_engine/engine_support.py +2 -1
- opentrons/protocol_engine/error_recovery_policy.py +14 -3
- opentrons/protocol_engine/errors/__init__.py +20 -0
- opentrons/protocol_engine/errors/error_occurrence.py +8 -3
- opentrons/protocol_engine/errors/exceptions.py +127 -2
- opentrons/protocol_engine/execution/__init__.py +2 -0
- opentrons/protocol_engine/execution/command_executor.py +22 -13
- opentrons/protocol_engine/execution/create_queue_worker.py +5 -1
- opentrons/protocol_engine/execution/door_watcher.py +1 -1
- opentrons/protocol_engine/execution/equipment.py +2 -1
- opentrons/protocol_engine/execution/error_recovery_hardware_state_synchronizer.py +101 -0
- opentrons/protocol_engine/execution/gantry_mover.py +4 -2
- opentrons/protocol_engine/execution/hardware_stopper.py +3 -3
- opentrons/protocol_engine/execution/heater_shaker_movement_flagger.py +1 -4
- opentrons/protocol_engine/execution/labware_movement.py +73 -22
- opentrons/protocol_engine/execution/movement.py +17 -7
- opentrons/protocol_engine/execution/pipetting.py +7 -4
- opentrons/protocol_engine/execution/queue_worker.py +6 -2
- opentrons/protocol_engine/execution/run_control.py +1 -1
- opentrons/protocol_engine/execution/thermocycler_movement_flagger.py +1 -1
- opentrons/protocol_engine/execution/thermocycler_plate_lifter.py +2 -1
- opentrons/protocol_engine/execution/tip_handler.py +77 -43
- opentrons/protocol_engine/notes/__init__.py +14 -2
- opentrons/protocol_engine/notes/notes.py +18 -1
- opentrons/protocol_engine/plugins.py +1 -1
- opentrons/protocol_engine/protocol_engine.py +47 -31
- opentrons/protocol_engine/resources/__init__.py +2 -0
- opentrons/protocol_engine/resources/deck_data_provider.py +19 -5
- opentrons/protocol_engine/resources/file_provider.py +161 -0
- opentrons/protocol_engine/resources/fixture_validation.py +11 -1
- opentrons/protocol_engine/resources/labware_validation.py +10 -0
- opentrons/protocol_engine/state/__init__.py +0 -70
- opentrons/protocol_engine/state/addressable_areas.py +1 -1
- opentrons/protocol_engine/state/command_history.py +21 -2
- opentrons/protocol_engine/state/commands.py +110 -31
- opentrons/protocol_engine/state/files.py +59 -0
- opentrons/protocol_engine/state/frustum_helpers.py +440 -0
- opentrons/protocol_engine/state/geometry.py +445 -59
- opentrons/protocol_engine/state/labware.py +264 -84
- opentrons/protocol_engine/state/liquids.py +1 -1
- opentrons/protocol_engine/state/module_substates/absorbance_reader_substate.py +21 -3
- opentrons/protocol_engine/state/modules.py +145 -90
- opentrons/protocol_engine/state/motion.py +33 -14
- opentrons/protocol_engine/state/pipettes.py +157 -317
- opentrons/protocol_engine/state/state.py +30 -1
- opentrons/protocol_engine/state/state_summary.py +3 -0
- opentrons/protocol_engine/state/tips.py +69 -114
- opentrons/protocol_engine/state/update_types.py +424 -0
- opentrons/protocol_engine/state/wells.py +236 -0
- opentrons/protocol_engine/types.py +90 -0
- opentrons/protocol_reader/file_format_validator.py +83 -15
- opentrons/protocol_runner/json_translator.py +21 -5
- opentrons/protocol_runner/legacy_command_mapper.py +27 -6
- opentrons/protocol_runner/legacy_context_plugin.py +27 -71
- opentrons/protocol_runner/protocol_runner.py +6 -3
- opentrons/protocol_runner/run_orchestrator.py +41 -6
- opentrons/protocols/advanced_control/mix.py +3 -5
- opentrons/protocols/advanced_control/transfers.py +125 -56
- opentrons/protocols/api_support/constants.py +1 -1
- opentrons/protocols/api_support/definitions.py +1 -1
- opentrons/protocols/api_support/labware_like.py +4 -4
- opentrons/protocols/api_support/tip_tracker.py +2 -2
- opentrons/protocols/api_support/types.py +15 -2
- opentrons/protocols/api_support/util.py +30 -42
- opentrons/protocols/duration/errors.py +1 -1
- opentrons/protocols/duration/estimator.py +50 -29
- opentrons/protocols/execution/dev_types.py +2 -2
- opentrons/protocols/execution/execute_json_v4.py +15 -10
- opentrons/protocols/execution/execute_python.py +8 -3
- opentrons/protocols/geometry/planning.py +12 -12
- opentrons/protocols/labware.py +17 -33
- opentrons/protocols/parameters/csv_parameter_interface.py +3 -1
- opentrons/simulate.py +3 -3
- opentrons/types.py +30 -3
- opentrons/util/logging_config.py +34 -0
- {opentrons-8.1.0.dist-info → opentrons-8.2.0.dist-info}/METADATA +5 -4
- {opentrons-8.1.0.dist-info → opentrons-8.2.0.dist-info}/RECORD +235 -223
- opentrons/protocol_engine/commands/absorbance_reader/measure.py +0 -94
- opentrons/protocol_engine/commands/configuring_common.py +0 -26
- opentrons/protocol_runner/thread_async_queue.py +0 -174
- /opentrons/protocol_engine/state/{abstract_store.py → _abstract_store.py} +0 -0
- /opentrons/protocol_engine/state/{move_types.py → _move_types.py} +0 -0
- {opentrons-8.1.0.dist-info → opentrons-8.2.0.dist-info}/LICENSE +0 -0
- {opentrons-8.1.0.dist-info → opentrons-8.2.0.dist-info}/WHEEL +0 -0
- {opentrons-8.1.0.dist-info → opentrons-8.2.0.dist-info}/entry_points.txt +0 -0
- {opentrons-8.1.0.dist-info → opentrons-8.2.0.dist-info}/top_level.txt +0 -0
opentrons/types.py
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
from __future__ import annotations
|
|
2
2
|
import enum
|
|
3
3
|
from math import sqrt, isclose
|
|
4
|
-
from typing import TYPE_CHECKING, Any, NamedTuple, Iterator, Union, List
|
|
4
|
+
from typing import TYPE_CHECKING, Any, NamedTuple, Iterator, Union, List, Optional
|
|
5
5
|
|
|
6
6
|
from opentrons_shared_data.robot.types import RobotType
|
|
7
7
|
|
|
@@ -79,7 +79,9 @@ LocationLabware = Union[
|
|
|
79
79
|
|
|
80
80
|
|
|
81
81
|
class Location:
|
|
82
|
-
"""
|
|
82
|
+
"""Location(point: Point, labware: Union["Labware", "Well", str, "ModuleGeometry", LabwareLike, None, "ModuleContext"])
|
|
83
|
+
|
|
84
|
+
A location to target as a motion.
|
|
83
85
|
|
|
84
86
|
The location contains a :py:class:`.Point` (in
|
|
85
87
|
:ref:`protocol-api-deck-coords`) and possibly an associated
|
|
@@ -116,10 +118,13 @@ class Location:
|
|
|
116
118
|
None,
|
|
117
119
|
"ModuleContext",
|
|
118
120
|
],
|
|
121
|
+
*,
|
|
122
|
+
_ot_internal_is_meniscus: Optional[bool] = None,
|
|
119
123
|
):
|
|
120
124
|
self._point = point
|
|
121
125
|
self._given_labware = labware
|
|
122
126
|
self._labware = LabwareLike(labware)
|
|
127
|
+
self._is_meniscus = _ot_internal_is_meniscus
|
|
123
128
|
|
|
124
129
|
# todo(mm, 2021-10-01): Figure out how to get .point and .labware to show up
|
|
125
130
|
# in the rendered docs, and then update the class docstring to use cross-references.
|
|
@@ -132,6 +137,10 @@ class Location:
|
|
|
132
137
|
def labware(self) -> LabwareLike:
|
|
133
138
|
return self._labware
|
|
134
139
|
|
|
140
|
+
@property
|
|
141
|
+
def is_meniscus(self) -> Optional[bool]:
|
|
142
|
+
return self._is_meniscus
|
|
143
|
+
|
|
135
144
|
def __iter__(self) -> Iterator[Union[Point, LabwareLike]]:
|
|
136
145
|
"""Iterable interface to support unpacking. Like a tuple.
|
|
137
146
|
|
|
@@ -148,6 +157,7 @@ class Location:
|
|
|
148
157
|
isinstance(other, Location)
|
|
149
158
|
and other._point == self._point
|
|
150
159
|
and other._labware == self._labware
|
|
160
|
+
and other._is_meniscus == self._is_meniscus
|
|
151
161
|
)
|
|
152
162
|
|
|
153
163
|
def move(self, point: Point) -> "Location":
|
|
@@ -173,7 +183,7 @@ class Location:
|
|
|
173
183
|
return Location(point=self.point + point, labware=self._given_labware)
|
|
174
184
|
|
|
175
185
|
def __repr__(self) -> str:
|
|
176
|
-
return f"Location(point={repr(self._point)}, labware={self._labware})"
|
|
186
|
+
return f"Location(point={repr(self._point)}, labware={self._labware}, is_meniscus={self._is_meniscus if self._is_meniscus is not None else False})"
|
|
177
187
|
|
|
178
188
|
|
|
179
189
|
# TODO(mc, 2020-10-22): use MountType implementation for Mount
|
|
@@ -282,6 +292,23 @@ class DeckSlotName(enum.Enum):
|
|
|
282
292
|
str_val = str(value).upper()
|
|
283
293
|
return cls(str_val)
|
|
284
294
|
|
|
295
|
+
@classmethod
|
|
296
|
+
def ot3_slots(cls) -> List["DeckSlotName"]:
|
|
297
|
+
return [
|
|
298
|
+
DeckSlotName.SLOT_A1,
|
|
299
|
+
DeckSlotName.SLOT_A2,
|
|
300
|
+
DeckSlotName.SLOT_A3,
|
|
301
|
+
DeckSlotName.SLOT_B1,
|
|
302
|
+
DeckSlotName.SLOT_B2,
|
|
303
|
+
DeckSlotName.SLOT_B3,
|
|
304
|
+
DeckSlotName.SLOT_C1,
|
|
305
|
+
DeckSlotName.SLOT_C2,
|
|
306
|
+
DeckSlotName.SLOT_C3,
|
|
307
|
+
DeckSlotName.SLOT_D1,
|
|
308
|
+
DeckSlotName.SLOT_D2,
|
|
309
|
+
DeckSlotName.SLOT_D3,
|
|
310
|
+
]
|
|
311
|
+
|
|
285
312
|
# TODO(mm, 2023-05-08):
|
|
286
313
|
# Migrate callers off of this method. https://opentrons.atlassian.net/browse/RLAB-345
|
|
287
314
|
def as_int(self) -> int:
|
opentrons/util/logging_config.py
CHANGED
|
@@ -5,10 +5,17 @@ from typing import Any, Dict
|
|
|
5
5
|
|
|
6
6
|
from opentrons.config import CONFIG, ARCHITECTURE, SystemArchitecture
|
|
7
7
|
|
|
8
|
+
if ARCHITECTURE is SystemArchitecture.YOCTO:
|
|
9
|
+
from opentrons_hardware.sensors import SENSOR_LOG_NAME
|
|
10
|
+
else:
|
|
11
|
+
# we don't use the sensor log on ot2 or host
|
|
12
|
+
SENSOR_LOG_NAME = "unused"
|
|
13
|
+
|
|
8
14
|
|
|
9
15
|
def _host_config(level_value: int) -> Dict[str, Any]:
|
|
10
16
|
serial_log_filename = CONFIG["serial_log_file"]
|
|
11
17
|
api_log_filename = CONFIG["api_log_file"]
|
|
18
|
+
sensor_log_filename = CONFIG["sensor_log_file"]
|
|
12
19
|
return {
|
|
13
20
|
"version": 1,
|
|
14
21
|
"disable_existing_loggers": False,
|
|
@@ -41,6 +48,14 @@ def _host_config(level_value: int) -> Dict[str, Any]:
|
|
|
41
48
|
"level": logging.DEBUG,
|
|
42
49
|
"backupCount": 5,
|
|
43
50
|
},
|
|
51
|
+
"sensor": {
|
|
52
|
+
"class": "logging.handlers.RotatingFileHandler",
|
|
53
|
+
"formatter": "basic",
|
|
54
|
+
"filename": sensor_log_filename,
|
|
55
|
+
"maxBytes": 1000000,
|
|
56
|
+
"level": logging.DEBUG,
|
|
57
|
+
"backupCount": 5,
|
|
58
|
+
},
|
|
44
59
|
},
|
|
45
60
|
"loggers": {
|
|
46
61
|
"opentrons": {
|
|
@@ -66,6 +81,11 @@ def _host_config(level_value: int) -> Dict[str, Any]:
|
|
|
66
81
|
"level": logging.DEBUG,
|
|
67
82
|
"propagate": False,
|
|
68
83
|
},
|
|
84
|
+
SENSOR_LOG_NAME: {
|
|
85
|
+
"handlers": ["sensor"],
|
|
86
|
+
"level": logging.DEBUG,
|
|
87
|
+
"propagate": False,
|
|
88
|
+
},
|
|
69
89
|
"__main__": {"handlers": ["api"], "level": level_value},
|
|
70
90
|
},
|
|
71
91
|
}
|
|
@@ -75,6 +95,7 @@ def _buildroot_config(level_value: int) -> Dict[str, Any]:
|
|
|
75
95
|
# Import systemd.journald here since it is generally unavailble on non
|
|
76
96
|
# linux systems and we probably don't want to use it on linux desktops
|
|
77
97
|
# either
|
|
98
|
+
sensor_log_filename = CONFIG["sensor_log_file"]
|
|
78
99
|
return {
|
|
79
100
|
"version": 1,
|
|
80
101
|
"disable_existing_loggers": False,
|
|
@@ -106,6 +127,14 @@ def _buildroot_config(level_value: int) -> Dict[str, Any]:
|
|
|
106
127
|
"formatter": "message_only",
|
|
107
128
|
"SYSLOG_IDENTIFIER": "opentrons-api-serial-usbbin",
|
|
108
129
|
},
|
|
130
|
+
"sensor": {
|
|
131
|
+
"class": "logging.handlers.RotatingFileHandler",
|
|
132
|
+
"formatter": "message_only",
|
|
133
|
+
"filename": sensor_log_filename,
|
|
134
|
+
"maxBytes": 1000000,
|
|
135
|
+
"level": logging.DEBUG,
|
|
136
|
+
"backupCount": 3,
|
|
137
|
+
},
|
|
109
138
|
},
|
|
110
139
|
"loggers": {
|
|
111
140
|
"opentrons.drivers.asyncio.communication.serial_connection": {
|
|
@@ -131,6 +160,11 @@ def _buildroot_config(level_value: int) -> Dict[str, Any]:
|
|
|
131
160
|
"level": logging.DEBUG,
|
|
132
161
|
"propagate": False,
|
|
133
162
|
},
|
|
163
|
+
SENSOR_LOG_NAME: {
|
|
164
|
+
"handlers": ["sensor"],
|
|
165
|
+
"level": logging.DEBUG,
|
|
166
|
+
"propagate": False,
|
|
167
|
+
},
|
|
134
168
|
"__main__": {"handlers": ["api"], "level": level_value},
|
|
135
169
|
},
|
|
136
170
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: opentrons
|
|
3
|
-
Version: 8.
|
|
3
|
+
Version: 8.2.0
|
|
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.
|
|
24
|
+
Requires-Dist: opentrons-shared-data ==8.2.0
|
|
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
|
|
@@ -30,12 +30,13 @@ Requires-Dist: pydantic <2.0.0,>=1.10.9
|
|
|
30
30
|
Requires-Dist: pyserial >=3.5
|
|
31
31
|
Requires-Dist: typing-extensions <5,>=4.0.0
|
|
32
32
|
Requires-Dist: click <9,>=8.0.0
|
|
33
|
+
Requires-Dist: pyusb ==1.2.1
|
|
33
34
|
Requires-Dist: packaging >=21.0
|
|
34
35
|
Requires-Dist: importlib-metadata >=1.0 ; python_version < "3.8"
|
|
35
36
|
Provides-Extra: flex-hardware
|
|
36
|
-
Requires-Dist: opentrons-hardware[flex] ==8.
|
|
37
|
+
Requires-Dist: opentrons-hardware[flex] ==8.2.0 ; extra == 'flex-hardware'
|
|
37
38
|
Provides-Extra: ot2-hardware
|
|
38
|
-
Requires-Dist: opentrons-hardware ==8.
|
|
39
|
+
Requires-Dist: opentrons-hardware ==8.2.0 ; extra == 'ot2-hardware'
|
|
39
40
|
|
|
40
41
|
.. _Full API Documentation: http://docs.opentrons.com
|
|
41
42
|
|