opentrons 8.4.0a3__py2.py3-none-any.whl → 8.4.0a5__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.
Potentially problematic release.
This version of opentrons might be problematic. Click here for more details.
- opentrons/legacy_commands/commands.py +83 -2
- opentrons/legacy_commands/helpers.py +59 -1
- opentrons/legacy_commands/types.py +30 -0
- opentrons/protocol_api/core/engine/instrument.py +182 -115
- opentrons/protocol_api/core/engine/pipette_movement_conflict.py +6 -14
- opentrons/protocol_api/core/engine/transfer_components_executor.py +30 -25
- opentrons/protocol_api/core/instrument.py +8 -4
- opentrons/protocol_api/core/legacy/legacy_instrument_core.py +9 -30
- opentrons/protocol_api/core/legacy_simulator/legacy_instrument_core.py +8 -4
- opentrons/protocol_api/core/well.py +1 -1
- opentrons/protocol_api/instrument_context.py +144 -73
- opentrons/protocol_api/labware.py +26 -44
- opentrons/protocol_api/protocol_context.py +18 -16
- opentrons/protocol_engine/commands/__init__.py +38 -38
- opentrons/protocol_engine/commands/aspirate_while_tracking.py +38 -65
- opentrons/protocol_engine/commands/command_unions.py +33 -33
- opentrons/protocol_engine/commands/dispense_while_tracking.py +36 -72
- opentrons/protocol_engine/commands/labware_handling_common.py +6 -1
- opentrons/protocol_engine/commands/liquid_probe.py +1 -2
- opentrons/protocol_engine/commands/move_to_well.py +5 -11
- opentrons/protocol_engine/commands/{evotip_dispense.py → pressure_dispense.py} +27 -27
- opentrons/protocol_engine/commands/{evotip_seal_pipette.py → seal_pipette_to_tip.py} +32 -27
- opentrons/protocol_engine/commands/{evotip_unseal_pipette.py → unseal_pipette_from_tip.py} +22 -22
- opentrons/protocol_engine/execution/pipetting.py +1 -0
- opentrons/protocol_engine/labware_offset_standardization.py +22 -1
- opentrons/protocol_engine/resources/deck_configuration_provider.py +8 -4
- opentrons/protocol_engine/state/frustum_helpers.py +12 -4
- opentrons/protocol_engine/state/geometry.py +121 -72
- opentrons/protocol_engine/state/update_types.py +1 -1
- opentrons/protocol_engine/state/wells.py +1 -1
- opentrons/protocol_engine/types/__init__.py +6 -0
- opentrons/protocol_engine/types/well_position.py +18 -1
- opentrons/protocols/advanced_control/transfers/transfer_liquid_utils.py +1 -1
- opentrons/protocols/labware.py +23 -18
- opentrons/util/logging_config.py +94 -25
- opentrons/util/logging_queue_handler.py +61 -0
- {opentrons-8.4.0a3.dist-info → opentrons-8.4.0a5.dist-info}/METADATA +4 -4
- {opentrons-8.4.0a3.dist-info → opentrons-8.4.0a5.dist-info}/RECORD +42 -41
- {opentrons-8.4.0a3.dist-info → opentrons-8.4.0a5.dist-info}/LICENSE +0 -0
- {opentrons-8.4.0a3.dist-info → opentrons-8.4.0a5.dist-info}/WHEEL +0 -0
- {opentrons-8.4.0a3.dist-info → opentrons-8.4.0a5.dist-info}/entry_points.txt +0 -0
- {opentrons-8.4.0a3.dist-info → opentrons-8.4.0a5.dist-info}/top_level.txt +0 -0
opentrons/util/logging_config.py
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import logging
|
|
2
2
|
from logging.config import dictConfig
|
|
3
|
+
from logging.handlers import QueueListener, RotatingFileHandler
|
|
3
4
|
import sys
|
|
4
|
-
from
|
|
5
|
+
from queue import Queue
|
|
5
6
|
|
|
6
7
|
from opentrons.config import CONFIG, ARCHITECTURE, SystemArchitecture
|
|
7
8
|
|
|
@@ -12,11 +13,33 @@ else:
|
|
|
12
13
|
SENSOR_LOG_NAME = "unused"
|
|
13
14
|
|
|
14
15
|
|
|
15
|
-
|
|
16
|
+
# We want this big enough to smooth over any temporary stalls in journald's ability
|
|
17
|
+
# to consume our records--but bounded, so if we consistently outpace journald for
|
|
18
|
+
# some reason, we don't leak memory or get latency from buffer bloat.
|
|
19
|
+
# 50000 is basically an arbitrary guess.
|
|
20
|
+
_LOG_QUEUE_SIZE = 50000
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
log_queue = Queue[logging.LogRecord](maxsize=_LOG_QUEUE_SIZE)
|
|
24
|
+
"""A buffer through which log records will pass.
|
|
25
|
+
|
|
26
|
+
This is intended to work around problems when our logs are going to journald:
|
|
27
|
+
we think journald can block for a while when it flushes records to the filesystem,
|
|
28
|
+
and the backpressure from that will cause calls like `log.debug()` to block and
|
|
29
|
+
interfere with timing-sensitive hardware control.
|
|
30
|
+
https://github.com/Opentrons/opentrons/issues/18034
|
|
31
|
+
|
|
32
|
+
`log_init()` will configure all the logs that this package knows about to pass through
|
|
33
|
+
this queue. This queue is exposed so consumers of this package (i.e. robot-server)
|
|
34
|
+
can do the same thing with their own logs, which is important to preserve ordering.
|
|
35
|
+
"""
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
def _config_for_host(level_value: int) -> None:
|
|
16
39
|
serial_log_filename = CONFIG["serial_log_file"]
|
|
17
40
|
api_log_filename = CONFIG["api_log_file"]
|
|
18
41
|
sensor_log_filename = CONFIG["sensor_log_file"]
|
|
19
|
-
|
|
42
|
+
config = {
|
|
20
43
|
"version": 1,
|
|
21
44
|
"disable_existing_loggers": False,
|
|
22
45
|
"formatters": {
|
|
@@ -90,13 +113,20 @@ def _host_config(level_value: int) -> Dict[str, Any]:
|
|
|
90
113
|
},
|
|
91
114
|
}
|
|
92
115
|
|
|
116
|
+
dictConfig(config)
|
|
93
117
|
|
|
94
|
-
|
|
118
|
+
|
|
119
|
+
def _config_for_robot(level_value: int) -> None:
|
|
95
120
|
# Import systemd.journald here since it is generally unavailble on non
|
|
96
121
|
# linux systems and we probably don't want to use it on linux desktops
|
|
97
122
|
# either
|
|
123
|
+
from systemd.journal import JournalHandler # type: ignore
|
|
124
|
+
|
|
98
125
|
sensor_log_filename = CONFIG["sensor_log_file"]
|
|
99
|
-
|
|
126
|
+
|
|
127
|
+
sensor_log_queue = Queue[logging.LogRecord](maxsize=_LOG_QUEUE_SIZE)
|
|
128
|
+
|
|
129
|
+
config = {
|
|
100
130
|
"version": 1,
|
|
101
131
|
"disable_existing_loggers": False,
|
|
102
132
|
"formatters": {
|
|
@@ -104,36 +134,38 @@ def _buildroot_config(level_value: int) -> Dict[str, Any]:
|
|
|
104
134
|
},
|
|
105
135
|
"handlers": {
|
|
106
136
|
"api": {
|
|
107
|
-
"class": "
|
|
137
|
+
"class": "opentrons.util.logging_queue_handler.CustomQueueHandler",
|
|
108
138
|
"level": logging.DEBUG,
|
|
109
139
|
"formatter": "message_only",
|
|
110
|
-
"SYSLOG_IDENTIFIER": "opentrons-api",
|
|
140
|
+
"extra": {"SYSLOG_IDENTIFIER": "opentrons-api"},
|
|
141
|
+
"queue": log_queue,
|
|
111
142
|
},
|
|
112
143
|
"serial": {
|
|
113
|
-
"class": "
|
|
144
|
+
"class": "opentrons.util.logging_queue_handler.CustomQueueHandler",
|
|
114
145
|
"level": logging.DEBUG,
|
|
115
146
|
"formatter": "message_only",
|
|
116
|
-
"SYSLOG_IDENTIFIER": "opentrons-api-serial",
|
|
147
|
+
"extra": {"SYSLOG_IDENTIFIER": "opentrons-api-serial"},
|
|
148
|
+
"queue": log_queue,
|
|
117
149
|
},
|
|
118
150
|
"can_serial": {
|
|
119
|
-
"class": "
|
|
151
|
+
"class": "opentrons.util.logging_queue_handler.CustomQueueHandler",
|
|
120
152
|
"level": logging.DEBUG,
|
|
121
153
|
"formatter": "message_only",
|
|
122
|
-
"SYSLOG_IDENTIFIER": "opentrons-api-serial-can",
|
|
154
|
+
"extra": {"SYSLOG_IDENTIFIER": "opentrons-api-serial-can"},
|
|
155
|
+
"queue": log_queue,
|
|
123
156
|
},
|
|
124
157
|
"usbbin_serial": {
|
|
125
|
-
"class": "
|
|
158
|
+
"class": "opentrons.util.logging_queue_handler.CustomQueueHandler",
|
|
126
159
|
"level": logging.DEBUG,
|
|
127
160
|
"formatter": "message_only",
|
|
128
|
-
"SYSLOG_IDENTIFIER": "opentrons-api-serial-usbbin",
|
|
161
|
+
"extra": {"SYSLOG_IDENTIFIER": "opentrons-api-serial-usbbin"},
|
|
162
|
+
"queue": log_queue,
|
|
129
163
|
},
|
|
130
164
|
"sensor": {
|
|
131
|
-
"class": "
|
|
132
|
-
"formatter": "message_only",
|
|
133
|
-
"filename": sensor_log_filename,
|
|
134
|
-
"maxBytes": 1000000,
|
|
165
|
+
"class": "opentrons.util.logging_queue_handler.CustomQueueHandler",
|
|
135
166
|
"level": logging.DEBUG,
|
|
136
|
-
"
|
|
167
|
+
"formatter": "message_only",
|
|
168
|
+
"queue": sensor_log_queue,
|
|
137
169
|
},
|
|
138
170
|
},
|
|
139
171
|
"loggers": {
|
|
@@ -169,12 +201,47 @@ def _buildroot_config(level_value: int) -> Dict[str, Any]:
|
|
|
169
201
|
},
|
|
170
202
|
}
|
|
171
203
|
|
|
204
|
+
# Start draining from the queue and sending messages to journald.
|
|
205
|
+
# Then, stash the queue listener in a global variable so it doesn't get garbage-collected.
|
|
206
|
+
# I don't know if we actually need to do this, but let's not find out the hard way.
|
|
207
|
+
global _queue_listener
|
|
208
|
+
if _queue_listener is not None:
|
|
209
|
+
# In case this log init function was called multiple times for some reason.
|
|
210
|
+
_queue_listener.stop()
|
|
211
|
+
_queue_listener = QueueListener(log_queue, JournalHandler())
|
|
212
|
+
_queue_listener.start()
|
|
213
|
+
|
|
214
|
+
# Sensor logs are a special one-off thing that go to their own file instead of journald.
|
|
215
|
+
# We apply the same QueueListener performance workaround for basically the same reasons.
|
|
216
|
+
sensor_rotating_file_handler = RotatingFileHandler(
|
|
217
|
+
filename=sensor_log_filename, maxBytes=1000000, backupCount=3
|
|
218
|
+
)
|
|
219
|
+
sensor_rotating_file_handler.setLevel(logging.DEBUG)
|
|
220
|
+
sensor_rotating_file_handler.setFormatter(logging.Formatter(fmt="%(message)s"))
|
|
221
|
+
global _sensor_queue_listener
|
|
222
|
+
if _sensor_queue_listener is not None:
|
|
223
|
+
_sensor_queue_listener.stop()
|
|
224
|
+
_sensor_queue_listener = QueueListener(
|
|
225
|
+
sensor_log_queue, sensor_rotating_file_handler
|
|
226
|
+
)
|
|
227
|
+
_sensor_queue_listener.start()
|
|
228
|
+
|
|
229
|
+
dictConfig(config)
|
|
172
230
|
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
231
|
+
# TODO(2025-04-15): We need some kind of log_deinit() function to call
|
|
232
|
+
# queue_listener.stop() before the process ends. Not doing that means we're
|
|
233
|
+
# dropping some records when the process shuts down.
|
|
234
|
+
|
|
235
|
+
|
|
236
|
+
_queue_listener: QueueListener | None = None
|
|
237
|
+
_sensor_queue_listener: QueueListener | None = None
|
|
238
|
+
|
|
239
|
+
|
|
240
|
+
def _config(arch: SystemArchitecture, level_value: int) -> None:
|
|
241
|
+
{
|
|
242
|
+
SystemArchitecture.YOCTO: _config_for_robot,
|
|
243
|
+
SystemArchitecture.BUILDROOT: _config_for_robot,
|
|
244
|
+
SystemArchitecture.HOST: _config_for_host,
|
|
178
245
|
}[arch](level_value)
|
|
179
246
|
|
|
180
247
|
|
|
@@ -191,6 +258,8 @@ def log_init(level_name: str) -> None:
|
|
|
191
258
|
f"Defaulting to {fallback_log_level}\n"
|
|
192
259
|
)
|
|
193
260
|
ot_log_level = fallback_log_level
|
|
261
|
+
|
|
262
|
+
# todo(mm, 2025-04-14): Use logging.getLevelNamesMapping() when we have Python >=3.11.
|
|
194
263
|
level_value = logging._nameToLevel[ot_log_level]
|
|
195
|
-
|
|
196
|
-
|
|
264
|
+
|
|
265
|
+
_config(ARCHITECTURE, level_value)
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
# noqa: D100
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
import logging.handlers
|
|
5
|
+
import logging
|
|
6
|
+
from queue import Queue
|
|
7
|
+
from typing import cast
|
|
8
|
+
from typing_extensions import override
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
class CustomQueueHandler(logging.handlers.QueueHandler):
|
|
12
|
+
"""A logging.QueueHandler with some customizations.
|
|
13
|
+
|
|
14
|
+
- Allow adding `extra` data to handled log records.
|
|
15
|
+
|
|
16
|
+
- Simplify and optimize for single-process use.
|
|
17
|
+
|
|
18
|
+
- If a new message comes in but the queue is full, block until it has room.
|
|
19
|
+
(The default QueueHandler drops records in a way we probably wouldn't notice.)
|
|
20
|
+
"""
|
|
21
|
+
|
|
22
|
+
def __init__(
|
|
23
|
+
self, *, queue: Queue[logging.LogRecord], extra: dict[str, object] | None = None
|
|
24
|
+
) -> None:
|
|
25
|
+
"""Construct the handler.
|
|
26
|
+
|
|
27
|
+
Args:
|
|
28
|
+
queue: When this handler receives a log record, it will insert the message
|
|
29
|
+
into this queue.
|
|
30
|
+
extra: Extra data to attach to each log record, to be interpreted by
|
|
31
|
+
whatever handler is on the consuming side of the queue. e.g. if that's
|
|
32
|
+
`systemd.journal.JournalHandler`, you could add a "SYSLOG_IDENTIFIER"
|
|
33
|
+
key here. This corresponds to the `extra` arg of `Logger.debug()`.
|
|
34
|
+
"""
|
|
35
|
+
super().__init__(queue=queue)
|
|
36
|
+
|
|
37
|
+
# Double underscore because we're subclassing external code so we should try to
|
|
38
|
+
# avoid collisions with its attributes.
|
|
39
|
+
self.__extra = extra
|
|
40
|
+
|
|
41
|
+
@override
|
|
42
|
+
def prepare(self, record: logging.LogRecord) -> logging.LogRecord:
|
|
43
|
+
"""Called internally by the superclass before enqueueing a record."""
|
|
44
|
+
if self.__extra is not None:
|
|
45
|
+
# This looks questionable, but updating __dict__ is the documented behavior
|
|
46
|
+
# of `Logger.debug(msg, extra=...)`.
|
|
47
|
+
record.__dict__.update(self.__extra)
|
|
48
|
+
|
|
49
|
+
# We intentionally do *not* call `super().prepare(record)`. It's documented to
|
|
50
|
+
# muck with the data in the LogRecord, apparently as part of supporting
|
|
51
|
+
# inter-process use. Since we don't need that, we can preserve the original
|
|
52
|
+
# data and also save some compute time.
|
|
53
|
+
return record
|
|
54
|
+
|
|
55
|
+
@override
|
|
56
|
+
def enqueue(self, record: logging.LogRecord) -> None:
|
|
57
|
+
"""Called internally by the superclass to enqueue a record."""
|
|
58
|
+
# This cast is safe because we constrain the type of `self.queue`
|
|
59
|
+
# in our `__init__()` and nobody should mutate it after-the-fact, in practice.
|
|
60
|
+
queue = cast(Queue[logging.LogRecord], self.queue)
|
|
61
|
+
queue.put(record)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: opentrons
|
|
3
|
-
Version: 8.4.
|
|
3
|
+
Version: 8.4.0a5
|
|
4
4
|
Summary: The Opentrons API is a simple framework designed to make writing automated biology lab protocols easy.
|
|
5
5
|
Author: Opentrons
|
|
6
6
|
Author-email: engineering@opentrons.com
|
|
@@ -21,7 +21,7 @@ Classifier: Programming Language :: Python :: 3.10
|
|
|
21
21
|
Classifier: Topic :: Scientific/Engineering
|
|
22
22
|
Requires-Python: >=3.10
|
|
23
23
|
License-File: ../LICENSE
|
|
24
|
-
Requires-Dist: opentrons-shared-data (==8.4.
|
|
24
|
+
Requires-Dist: opentrons-shared-data (==8.4.0a5)
|
|
25
25
|
Requires-Dist: aionotify (==0.3.1)
|
|
26
26
|
Requires-Dist: anyio (<4.0.0,>=3.6.1)
|
|
27
27
|
Requires-Dist: jsonschema (<4.18.0,>=3.0.1)
|
|
@@ -35,9 +35,9 @@ Requires-Dist: pyusb (==1.2.1)
|
|
|
35
35
|
Requires-Dist: packaging (>=21.0)
|
|
36
36
|
Requires-Dist: importlib-metadata (>=1.0) ; python_version < "3.8"
|
|
37
37
|
Provides-Extra: flex-hardware
|
|
38
|
-
Requires-Dist: opentrons-hardware[flex] (==8.4.
|
|
38
|
+
Requires-Dist: opentrons-hardware[flex] (==8.4.0a5) ; extra == 'flex-hardware'
|
|
39
39
|
Provides-Extra: ot2-hardware
|
|
40
|
-
Requires-Dist: opentrons-hardware (==8.4.
|
|
40
|
+
Requires-Dist: opentrons-hardware (==8.4.0a5) ; extra == 'ot2-hardware'
|
|
41
41
|
|
|
42
42
|
.. _Full API Documentation: http://docs.opentrons.com
|
|
43
43
|
|
|
@@ -204,12 +204,12 @@ opentrons/hardware_control/scripts/gripper_control.py,sha256=aUt9MAo6DXDhY4BfJRe
|
|
|
204
204
|
opentrons/hardware_control/scripts/repl.py,sha256=RojtHjYV6sa6O4SeNEgs5SvnAK0imQK_XqoLQTKlzWU,5982
|
|
205
205
|
opentrons/hardware_control/scripts/tc_control.py,sha256=V6hOzoRXL3xqIUEz8Raldd45aO2JgN5m5Hr08c1G8Ko,2741
|
|
206
206
|
opentrons/legacy_commands/__init__.py,sha256=erkaz7hc2iHsTtjpFDWrR1V5n47it3U1qxD2zL9CkuE,63
|
|
207
|
-
opentrons/legacy_commands/commands.py,sha256=
|
|
208
|
-
opentrons/legacy_commands/helpers.py,sha256=
|
|
207
|
+
opentrons/legacy_commands/commands.py,sha256=8OtS9-_z8kotvByrVKtMaYnFiq8ZqDoTk6c-1Ne-iO0,13029
|
|
208
|
+
opentrons/legacy_commands/helpers.py,sha256=Bc7mjK6V7b4h472NCx_qSwD0ojd_DM7mPg18tjo1DIQ,5228
|
|
209
209
|
opentrons/legacy_commands/module_commands.py,sha256=EO2YtrfzCCaGPYjGXWfk6jjSHiEqk1E6D8Ef2qDi1qI,7769
|
|
210
210
|
opentrons/legacy_commands/protocol_commands.py,sha256=nPYBrm7j9co83IGWjzae2GOVkEZdu58pXQv3eOdpLzg,1383
|
|
211
211
|
opentrons/legacy_commands/publisher.py,sha256=n7hT9n4zahM3N2LNIAEs7hqs5RbHHie_tev2M8pke4Y,5441
|
|
212
|
-
opentrons/legacy_commands/types.py,sha256=
|
|
212
|
+
opentrons/legacy_commands/types.py,sha256=uMr5U8zDs6-2Da-2yQUao3zuOciaal7zB4xAwEgUE1Q,25649
|
|
213
213
|
opentrons/motion_planning/__init__.py,sha256=Gma3SLAvKbL7QuhVGtL9zFx5vlk_7YBF0TjYZQSiv9s,755
|
|
214
214
|
opentrons/motion_planning/adjacent_slots_getters.py,sha256=z7HkfC8ymAdGHdFq-sC_1_cERX_v29b9x4HKtJ6gp9I,5390
|
|
215
215
|
opentrons/motion_planning/deck_conflict.py,sha256=gJG0dCQOvdEP-rr9EbVSGJCQPDXgvd04Jn4crGEbYLo,12604
|
|
@@ -228,42 +228,42 @@ opentrons/protocol_api/config.py,sha256=r9lyvXjagTX_g3q5FGURPpcz2IA9sSF7Oa_1mKx-
|
|
|
228
228
|
opentrons/protocol_api/create_protocol_context.py,sha256=wwsZje0L__oDnu1Yrihau320_f-ASloR9eL1QCtkOh8,7612
|
|
229
229
|
opentrons/protocol_api/deck.py,sha256=94vFceg1SC1bAGd7TvC1ZpYwnJR-VlzurEZ6jkacYeg,8910
|
|
230
230
|
opentrons/protocol_api/disposal_locations.py,sha256=NRiSGmDR0LnbyEkWSOM-o64uR2fUoB1NWJG7Y7SsJSs,7920
|
|
231
|
-
opentrons/protocol_api/instrument_context.py,sha256=
|
|
232
|
-
opentrons/protocol_api/labware.py,sha256=
|
|
231
|
+
opentrons/protocol_api/instrument_context.py,sha256=XUVIxnylpkhviFy5jxYJv-o7Lvmb2FJIbdoEjQ_9Vro,117886
|
|
232
|
+
opentrons/protocol_api/labware.py,sha256=1m1y7h70bBBqW60LjiCPQWwFfVXzY_goJrB773yUN0A,60407
|
|
233
233
|
opentrons/protocol_api/module_contexts.py,sha256=3tVXj6Q7n-WuTJPU_dvIQLzzGv1P-jsMuDtMVpuhAf8,48291
|
|
234
234
|
opentrons/protocol_api/module_validation_and_errors.py,sha256=XL_m72P8rcvGO2fynY7UzXLcpGuI6X4s0V6Xf735Iyc,1464
|
|
235
|
-
opentrons/protocol_api/protocol_context.py,sha256=
|
|
235
|
+
opentrons/protocol_api/protocol_context.py,sha256=CHMG5xbx_wxHDQYcobOWo2E9vsRw7FPSNy9J3YV99fM,66126
|
|
236
236
|
opentrons/protocol_api/robot_context.py,sha256=hlxFOYx0SkqK7TihT25leYt-RJ_VvhDDzzclf1L8DKw,10405
|
|
237
237
|
opentrons/protocol_api/validation.py,sha256=uiVTHyJF3wSh5LLfaIDBTELoMNCAT17E767ursB_s1g,28684
|
|
238
238
|
opentrons/protocol_api/core/__init__.py,sha256=-g74o8OtBB0LmmOvwkRvPgrHt7fF7T8FRHDj-x_-Onk,736
|
|
239
239
|
opentrons/protocol_api/core/common.py,sha256=q9ZbfpRdBvB3iDAOCyONtupvkYP5n1hjE-bwqGcwP_U,1172
|
|
240
240
|
opentrons/protocol_api/core/core_map.py,sha256=gq3CIYPxuPvozf8yj8FprqBfs3e4ZJGQ6s0ViPbwV08,1757
|
|
241
|
-
opentrons/protocol_api/core/instrument.py,sha256=
|
|
241
|
+
opentrons/protocol_api/core/instrument.py,sha256=MQHI1_MkrtrKM9lN-7BsVQ-xNc4on39TRr8M3HB3WPY,13705
|
|
242
242
|
opentrons/protocol_api/core/labware.py,sha256=-ZOjkalikXCV3ptehKCNaWGAdKxIdwne8LRFQW9NAm4,4290
|
|
243
243
|
opentrons/protocol_api/core/module.py,sha256=z2STDyqqxZX3y6UyJVDnajeFXMEn1ie2NRBYHhry_XE,13838
|
|
244
244
|
opentrons/protocol_api/core/protocol.py,sha256=v7v28jfeHSfOf-tqFDW2chGtrEatPiZ1y6YNwHfmtAs,9058
|
|
245
245
|
opentrons/protocol_api/core/robot.py,sha256=QMAqj5Oqq3_IhTDyUF4jpWI4j2LRPP9crUiaYD_RUv4,1385
|
|
246
|
-
opentrons/protocol_api/core/well.py,sha256=
|
|
246
|
+
opentrons/protocol_api/core/well.py,sha256=PpnbiBxLa9ov5dF5QcV6H2pNRt30VwKS3h4Rsi9ogEc,3100
|
|
247
247
|
opentrons/protocol_api/core/well_grid.py,sha256=BU28DKaBgEU_JdZ6pEzrwNxmuh6TkO4zlg7Pq1Rf5Xk,1516
|
|
248
248
|
opentrons/protocol_api/core/engine/__init__.py,sha256=B_5T7zgkWDb1mXPg4NbT-wBkQaK-WVokMMnJRNu7xiM,582
|
|
249
249
|
opentrons/protocol_api/core/engine/deck_conflict.py,sha256=q3JViIAHDthIqq6ce7h2gxw3CHRfYsm5kkwzuXB-Gnc,12334
|
|
250
250
|
opentrons/protocol_api/core/engine/exceptions.py,sha256=aZgNrmYEeuPZm21nX_KZYtvyjv5h_zPjxxgPkEV7_bw,725
|
|
251
|
-
opentrons/protocol_api/core/engine/instrument.py,sha256=
|
|
251
|
+
opentrons/protocol_api/core/engine/instrument.py,sha256=qkoNv0KO_jQZffQDV4ixU2r-CkLIJl5IOz1dgs1G5V8,95869
|
|
252
252
|
opentrons/protocol_api/core/engine/labware.py,sha256=1xvzguNnK7aecFLiJK0gtRrZ5kpwtzLS73HnKvdJ5lc,8413
|
|
253
253
|
opentrons/protocol_api/core/engine/load_labware_params.py,sha256=I4Cb8rqpBhmykQuZE8QRG802APrdCy_TYS88rm_9oGA,7159
|
|
254
254
|
opentrons/protocol_api/core/engine/module_core.py,sha256=MLPgYSRJHUZPZ9rTLvsg3GlpL5b6-Pjk5UBgXCGrL6U,30994
|
|
255
255
|
opentrons/protocol_api/core/engine/overlap_versions.py,sha256=PyGvQtQUg1wzNtkuGZtxwXm019PoIjq7em2JiWaxbXc,675
|
|
256
|
-
opentrons/protocol_api/core/engine/pipette_movement_conflict.py,sha256=
|
|
256
|
+
opentrons/protocol_api/core/engine/pipette_movement_conflict.py,sha256=mMns5sKw3Qpfu3IJQf1q098zSdBSOKiHAaQshovZIh8,15225
|
|
257
257
|
opentrons/protocol_api/core/engine/point_calculations.py,sha256=C2eF0fvJQGMqQv3DzNhc1-m8HTAXTyTsHPJEPrEUEmo,2502
|
|
258
258
|
opentrons/protocol_api/core/engine/protocol.py,sha256=_1gdg4lq2B21LWV9Tqb924E39HCPCgozAHxaCRGDSIk,46759
|
|
259
259
|
opentrons/protocol_api/core/engine/robot.py,sha256=o252HrC11tmZ5LRKT6NwXCoTeqcQFXHeNjszfxbJHjo,5366
|
|
260
260
|
opentrons/protocol_api/core/engine/stringify.py,sha256=GwFgEhFMk-uPfFQhQG_2mkaf4cxaItiY8RW7rZwiooQ,2794
|
|
261
|
-
opentrons/protocol_api/core/engine/transfer_components_executor.py,sha256=
|
|
261
|
+
opentrons/protocol_api/core/engine/transfer_components_executor.py,sha256=96SsftBRPB5WCeChLokXkdPJcmjP8FqlXEZXhNAlZKA,37582
|
|
262
262
|
opentrons/protocol_api/core/engine/well.py,sha256=PEtDwdC8NkHjqasJaDaVDtzc_WFw-qv5Lf7IU1DkrLY,7570
|
|
263
263
|
opentrons/protocol_api/core/legacy/__init__.py,sha256=_9jCJNKG3SlS_vljVu8HHkZmtLf4F-f-JHALLF5d5go,401
|
|
264
264
|
opentrons/protocol_api/core/legacy/deck.py,sha256=qHqcGo-Kdkl9L1aOE0pwrm9tsAnwkXbt4rIOr_VEP-s,13955
|
|
265
265
|
opentrons/protocol_api/core/legacy/labware_offset_provider.py,sha256=2DLIby9xmUrwLb2ht8hZbvNTxqPhNzWijd7yCb2cqP8,3783
|
|
266
|
-
opentrons/protocol_api/core/legacy/legacy_instrument_core.py,sha256=
|
|
266
|
+
opentrons/protocol_api/core/legacy/legacy_instrument_core.py,sha256=k-aM8Eu4qHqfhb8iRyn3jn3dZOGiq8JzQes8YUwY2v4,26501
|
|
267
267
|
opentrons/protocol_api/core/legacy/legacy_labware_core.py,sha256=WQOgtMlq--zv0Ch7mmraYr9rQBT4ie2zHqwgamBq9J8,8606
|
|
268
268
|
opentrons/protocol_api/core/legacy/legacy_module_core.py,sha256=tUhj88NKBMjCmCg6wjh1e2HX4d5hxjh8ZeJiYXaTaGY,23111
|
|
269
269
|
opentrons/protocol_api/core/legacy/legacy_protocol_core.py,sha256=ZIFC7W6YA61oWWkq5xYGTcI_2S2pmALz16uB1R8HVyQ,23670
|
|
@@ -272,13 +272,13 @@ opentrons/protocol_api/core/legacy/load_info.py,sha256=r-WaH5ZJb3TRCp_zvbMMh0P4B
|
|
|
272
272
|
opentrons/protocol_api/core/legacy/module_geometry.py,sha256=lvWFHZ81-JFw-1VZUW1R3yUIb59xpXT6H3jwlRintRo,21082
|
|
273
273
|
opentrons/protocol_api/core/legacy/well_geometry.py,sha256=n5bEsvYZXXTAqYSAqlXd5t40bUPPrJ2Oj2frBZafQHA,4719
|
|
274
274
|
opentrons/protocol_api/core/legacy_simulator/__init__.py,sha256=m9bLHGDJ6LSYC2WPm8tpOuu0zWSOPIrlybQgjRQBw9k,647
|
|
275
|
-
opentrons/protocol_api/core/legacy_simulator/legacy_instrument_core.py,sha256=
|
|
275
|
+
opentrons/protocol_api/core/legacy_simulator/legacy_instrument_core.py,sha256=pV-PEw8jMcdXMi2U5yplIkFJUUlugXd7OMJl_riiVf4,22940
|
|
276
276
|
opentrons/protocol_api/core/legacy_simulator/legacy_protocol_core.py,sha256=28HrrHzeUfnGKXpZqQ-VM8WbPiadqVhKj2S9y33q6Lo,2910
|
|
277
277
|
opentrons/protocol_engine/__init__.py,sha256=UPSk7MbidkiSH_h4V3yxMvyTePKpRr5DM9-wfkJrlSo,4094
|
|
278
278
|
opentrons/protocol_engine/create_protocol_engine.py,sha256=tfDIsC7_JKlRiCXPB_8tuxRsssU6o0ViRmWbGPtX9QA,7582
|
|
279
279
|
opentrons/protocol_engine/engine_support.py,sha256=5wqk5CHudpOUCSNsalWRmBSeHaCT6bEmcYAn9P60L0w,923
|
|
280
280
|
opentrons/protocol_engine/error_recovery_policy.py,sha256=ejsIywnz9DMv_XK-mo58PynW34sSDgnziPAw2g5m9G8,2873
|
|
281
|
-
opentrons/protocol_engine/labware_offset_standardization.py,sha256=
|
|
281
|
+
opentrons/protocol_engine/labware_offset_standardization.py,sha256=iqU-A2p6YK4XXMst2HWuM8ih-HnxN6BvqijOexw_BDw,7916
|
|
282
282
|
opentrons/protocol_engine/plugins.py,sha256=pSEzpItf4RVO2NwoGSbDpmNtO0B0-G2W0g2sIzdyjkI,3449
|
|
283
283
|
opentrons/protocol_engine/protocol_engine.py,sha256=lM7yfRuigE6Je4NwhR9-oKS4jzXPw8NSDXNugtKEdbk,28343
|
|
284
284
|
opentrons/protocol_engine/slot_standardization.py,sha256=1YjzQSLHrVPeoTDDN9evu9kbJKCpQzLHT2-C3uINwoU,4004
|
|
@@ -290,34 +290,31 @@ opentrons/protocol_engine/actions/get_state_update.py,sha256=tsnfhZDFHWER6y6UV57
|
|
|
290
290
|
opentrons/protocol_engine/clients/__init__.py,sha256=ILmfVL5SOkWzRpL2XXh0Q0MizOj7E2i-WObVuIsWAQE,161
|
|
291
291
|
opentrons/protocol_engine/clients/sync_client.py,sha256=G5hik77cqRbM_jrHp-j0NN3ovVDXbs9yCJ8XW4MChZw,5745
|
|
292
292
|
opentrons/protocol_engine/clients/transports.py,sha256=QejmtG5TjgOLUXpNhOzor_q-7MFI1qNfsguwkzY6Rxc,7177
|
|
293
|
-
opentrons/protocol_engine/commands/__init__.py,sha256=
|
|
293
|
+
opentrons/protocol_engine/commands/__init__.py,sha256=b073p4seq9bnyqMydVrYl9b_yCASs7OI9QT_cO5KVSI,17854
|
|
294
294
|
opentrons/protocol_engine/commands/air_gap_in_place.py,sha256=Z1Tz2wFtEnlJBf_0xW0tEvX1yYJbA8ZmdZcHG_YIKwE,5387
|
|
295
295
|
opentrons/protocol_engine/commands/aspirate.py,sha256=ZxpwQ5Zq-AS11aNfgxx6PsL_MrBEaawAxAi7jWwpIRE,7920
|
|
296
296
|
opentrons/protocol_engine/commands/aspirate_in_place.py,sha256=vJiLSZqEzuMj-kuQESZevHM5g9brXAo159GhaFyEQm8,6530
|
|
297
|
-
opentrons/protocol_engine/commands/aspirate_while_tracking.py,sha256=
|
|
297
|
+
opentrons/protocol_engine/commands/aspirate_while_tracking.py,sha256=se1GIJWxxVCmvYQF_nhJK11D54KKeoN5Yne5Sti93-A,7224
|
|
298
298
|
opentrons/protocol_engine/commands/blow_out.py,sha256=3gboq4x5S8fq7j4ZZGNClXFDlOjcdW1v2g58GPdhaPI,4338
|
|
299
299
|
opentrons/protocol_engine/commands/blow_out_in_place.py,sha256=jm2XXyJfIP9-AAFwXhD59_13nX18-i6QqpLGb-lK7sI,3391
|
|
300
300
|
opentrons/protocol_engine/commands/command.py,sha256=1hWH_KWg_WDL4R4VXe1ZH2vO6pYt5SA-ZpuPPF1oV5E,10149
|
|
301
|
-
opentrons/protocol_engine/commands/command_unions.py,sha256
|
|
301
|
+
opentrons/protocol_engine/commands/command_unions.py,sha256=-jCoa27fy6SGFG1VBgjhScxyE7pvQprVZAlFuPPBNuU,26399
|
|
302
302
|
opentrons/protocol_engine/commands/comment.py,sha256=-6o07x-MZ6-IvZas84OVFmqF0gAbbKWJZIlGVYThCqM,1638
|
|
303
303
|
opentrons/protocol_engine/commands/configure_for_volume.py,sha256=Ntx0Qi55GtJ5Gm4ZMBCCxo4xWIgb1tHy4Sn1BRzPlKc,3612
|
|
304
304
|
opentrons/protocol_engine/commands/configure_nozzle_layout.py,sha256=M_s5Ee03a7sSnbvkibDHzEqZwkca0y8J7F60EnSEq7A,3849
|
|
305
305
|
opentrons/protocol_engine/commands/custom.py,sha256=vOJc7QSNnYTpLvJm98OfDKjgcvVFRZs1eEKEd9WkPN0,2157
|
|
306
306
|
opentrons/protocol_engine/commands/dispense.py,sha256=gmjBXgGuWhB-SEUboXiNHqkaUrmpRTqSN4Dy362ln8w,6444
|
|
307
307
|
opentrons/protocol_engine/commands/dispense_in_place.py,sha256=gcj0HXUkPrU3Qz_DbWzP3XZHuB8tXSMTo9CFoGi25lw,6263
|
|
308
|
-
opentrons/protocol_engine/commands/dispense_while_tracking.py,sha256=
|
|
308
|
+
opentrons/protocol_engine/commands/dispense_while_tracking.py,sha256=vn0nw5D4ggpTEwarConFPHUVI4gNShehs5v1U5Kn9sY,6644
|
|
309
309
|
opentrons/protocol_engine/commands/drop_tip.py,sha256=ZZ63IoiT4dgWcemAHhNQfV4DUhkl-ToJyTRTxIiyAkc,7895
|
|
310
310
|
opentrons/protocol_engine/commands/drop_tip_in_place.py,sha256=gwSNEKBwds7kOTucXKSK74ozrDe7Cqhta7NR6IqKV3g,7062
|
|
311
|
-
opentrons/protocol_engine/commands/evotip_dispense.py,sha256=5OPrBmLMne1HiUzfkHJN5joZxiJAbkeZxbEsGPTtfVI,4636
|
|
312
|
-
opentrons/protocol_engine/commands/evotip_seal_pipette.py,sha256=Xo5sYVd1zuvrKLyGbmZuhQNvpNBSDNlUNgjYCxs9R_8,11239
|
|
313
|
-
opentrons/protocol_engine/commands/evotip_unseal_pipette.py,sha256=RXCo2opcKrFiR97hISNXfPGrHGj0eiPHwAZJMi0jY9w,4888
|
|
314
311
|
opentrons/protocol_engine/commands/generate_command_schema.py,sha256=21Al_XQyRMNTb2ssVaxcNSPlgreOsCtKVXf8kZgpvR4,2296
|
|
315
312
|
opentrons/protocol_engine/commands/get_next_tip.py,sha256=JS5hN_UScAiUIo_j7KT2cR1GDj3hDvaNPTSovWbgTHo,4828
|
|
316
313
|
opentrons/protocol_engine/commands/get_tip_presence.py,sha256=vK80XN5qCzK44SOSxH3QJkIj9dPmvri4J4FZJeP1X08,2543
|
|
317
314
|
opentrons/protocol_engine/commands/hash_command_params.py,sha256=obWy4TbVH97SyhNqrSD6iP1wgZ20JoaH1rilZCjXxIs,1530
|
|
318
315
|
opentrons/protocol_engine/commands/home.py,sha256=g77hewv-puMxEHFy0PPnl8-Nkbb7K-2qk36HbWG_Nik,3326
|
|
319
|
-
opentrons/protocol_engine/commands/labware_handling_common.py,sha256=
|
|
320
|
-
opentrons/protocol_engine/commands/liquid_probe.py,sha256=
|
|
316
|
+
opentrons/protocol_engine/commands/labware_handling_common.py,sha256=WtkdGIjQ5GBiBWsenyLyPLkSn6phgoesfWxCFTmG1AU,1074
|
|
317
|
+
opentrons/protocol_engine/commands/liquid_probe.py,sha256=XbpvkjvwesToLsYmzYUrf7vJ_-13wo-irmEfIMEB5SU,15701
|
|
321
318
|
opentrons/protocol_engine/commands/load_labware.py,sha256=p02iOEbnYtq5gklOKTF2RNmYLVR4Ak7lnEUpSZjaHYc,8625
|
|
322
319
|
opentrons/protocol_engine/commands/load_lid.py,sha256=8zRWBfdAQHSULLtjzYPEflkXC_rSSLZML9vJ4TJjxoQ,5484
|
|
323
320
|
opentrons/protocol_engine/commands/load_lid_stack.py,sha256=WgSBr9bd4rRwv6yYztYuz-mIHMByPom6G0Vzo4znpAY,10572
|
|
@@ -330,17 +327,20 @@ opentrons/protocol_engine/commands/move_relative.py,sha256=EczlVmwUvQc-bPpcXMW-f
|
|
|
330
327
|
opentrons/protocol_engine/commands/move_to_addressable_area.py,sha256=JtHftnSjbLpTJUrVP44D2kTUr8Bcq8Le4p1IziNFp3c,6453
|
|
331
328
|
opentrons/protocol_engine/commands/move_to_addressable_area_for_drop_tip.py,sha256=aVbxdVwCqhZxOn9ByAseqgaOl5TUd42bcyBMbuQu-8Q,7479
|
|
332
329
|
opentrons/protocol_engine/commands/move_to_coordinates.py,sha256=2qZliN1ZLdgNDiGdaTafgKB2gxvHCpMbvX01kJ-kQuM,3179
|
|
333
|
-
opentrons/protocol_engine/commands/move_to_well.py,sha256=
|
|
330
|
+
opentrons/protocol_engine/commands/move_to_well.py,sha256=m3GnX34Aimf7WCDjkxOMFF31kCyXVo_RqY-2S8H8Vp4,3418
|
|
334
331
|
opentrons/protocol_engine/commands/movement_common.py,sha256=bnJuwcp6nkyoxkTXqfSXnnKgZ7TKflkMGZSHXuPWsRk,11950
|
|
335
332
|
opentrons/protocol_engine/commands/pick_up_tip.py,sha256=pa2PXDvPyh5ZIYQeu_9XUnybE9CQ6VXooDO07gXCS5U,7726
|
|
336
333
|
opentrons/protocol_engine/commands/pipetting_common.py,sha256=Rok3Fy3jwJj_irXVRnUSjzpRpKVzVbYCv7odRQAYWEY,15222
|
|
337
334
|
opentrons/protocol_engine/commands/prepare_to_aspirate.py,sha256=0Xh0E0OEE2730zR-hhmp4y__MMKyJLZ0S8I68BTH83g,3776
|
|
335
|
+
opentrons/protocol_engine/commands/pressure_dispense.py,sha256=mGCJDFKwy6MPHg-AOttDg9TffHmp-eM_1y6x8CaErJE,4711
|
|
338
336
|
opentrons/protocol_engine/commands/reload_labware.py,sha256=eB1X7M9rHso1qc0beBTVHm5SHbjS6IODsIDj9RhR3mI,2910
|
|
339
337
|
opentrons/protocol_engine/commands/retract_axis.py,sha256=3h0eb6O3fjrCBY89q9tnjDFUGQXN9qafURxvXGcmCm4,2889
|
|
340
338
|
opentrons/protocol_engine/commands/save_position.py,sha256=koxPh6t8s7Cl1vjPt9e6raZz5_rQtXsg_IGdWqAPzPI,3395
|
|
339
|
+
opentrons/protocol_engine/commands/seal_pipette_to_tip.py,sha256=Ggflnbe1nxzILxGARIqKbbs9clBAe124ZtovGoHvDcI,11423
|
|
341
340
|
opentrons/protocol_engine/commands/set_rail_lights.py,sha256=QfB-NKw2ktBvSge1jOi9wYVLD19Vj6HiKw22Fsn0aSo,2090
|
|
342
341
|
opentrons/protocol_engine/commands/set_status_bar.py,sha256=LJGFBteL8bD8tG8yMPQir93mWnGYlPy3er00THbp6kk,2834
|
|
343
342
|
opentrons/protocol_engine/commands/touch_tip.py,sha256=620D8mXSKQdjXQonNVztz_ENOqjuHQd_oa-nHFiM2Ls,5713
|
|
343
|
+
opentrons/protocol_engine/commands/unseal_pipette_from_tip.py,sha256=EtLcgbfUiUeFS2vovDFQdTyTk7KIwJI4XcmGqpr28wA,4915
|
|
344
344
|
opentrons/protocol_engine/commands/verify_tip_presence.py,sha256=UUwUWdlryfh-mU8IoHUZkoy67KxrqXTFygeu1bsavhc,3136
|
|
345
345
|
opentrons/protocol_engine/commands/wait_for_duration.py,sha256=G-Lmo97BoqW8KA-cZDGQkqUmEE7lrLdw5j-2_LBF5gg,2396
|
|
346
346
|
opentrons/protocol_engine/commands/wait_for_resume.py,sha256=IE_I7fqoKBrlBumaCp5Tm5ihyA6i5VAzG25xdVdRnVw,2372
|
|
@@ -418,7 +418,7 @@ opentrons/protocol_engine/execution/hardware_stopper.py,sha256=wlIl7U3gvnOiCvwri
|
|
|
418
418
|
opentrons/protocol_engine/execution/heater_shaker_movement_flagger.py,sha256=BSFLzSSeELAYZCrCUfJZx5DdlrwU06Ur92TYd0T-hzM,9084
|
|
419
419
|
opentrons/protocol_engine/execution/labware_movement.py,sha256=XYVcxZOQ6_udpxcpwkIJpVD8-lgWLhizJAcRD9BclIo,12247
|
|
420
420
|
opentrons/protocol_engine/execution/movement.py,sha256=AWcj7xlrOh3QrvoaH0sZO63yrPCEc7VE8hKfJNxxtP0,12527
|
|
421
|
-
opentrons/protocol_engine/execution/pipetting.py,sha256=
|
|
421
|
+
opentrons/protocol_engine/execution/pipetting.py,sha256=0_OAxIDCQBAtdNOvdYwV0kEYfJvUrJWr-63rocqf75E,22094
|
|
422
422
|
opentrons/protocol_engine/execution/queue_worker.py,sha256=riVVywKIOQ3Lx-woFuuSqqBtfeKFt23nCUnsk7gSVoI,2860
|
|
423
423
|
opentrons/protocol_engine/execution/rail_lights.py,sha256=eiJT6oI_kFk7rFuFkZzISZiLNnpf7Kkh86Kyk9wQ_Jo,590
|
|
424
424
|
opentrons/protocol_engine/execution/run_control.py,sha256=ksvI2zkguC4G3lR3HJgAF8uY1PNcaRfi7UOYu-oIZgo,1144
|
|
@@ -429,7 +429,7 @@ opentrons/protocol_engine/execution/tip_handler.py,sha256=DDlI-AwdasbwLjZpN6r76p
|
|
|
429
429
|
opentrons/protocol_engine/notes/__init__.py,sha256=G0bIQswsov7MrJU0ArrOaWcOTxJU9BCUmNR3LRoNg-Q,311
|
|
430
430
|
opentrons/protocol_engine/notes/notes.py,sha256=A5C9xHExlS9GAK7o_mYiKJgibBm6EEgHQ4PJor0IET0,1993
|
|
431
431
|
opentrons/protocol_engine/resources/__init__.py,sha256=yvGFYpmLoxHYQff_IwiaEH9viZUfal5D5K91UjYLwwY,805
|
|
432
|
-
opentrons/protocol_engine/resources/deck_configuration_provider.py,sha256=
|
|
432
|
+
opentrons/protocol_engine/resources/deck_configuration_provider.py,sha256=sbUHVsoIPap_WpT-_k_1Gg0BTlyu026vRIW78ywztcc,9164
|
|
433
433
|
opentrons/protocol_engine/resources/deck_data_provider.py,sha256=63c-Hmwy5IbVSoAL3hYoZxizxwzCqbB2KgJptpLX3Bc,3001
|
|
434
434
|
opentrons/protocol_engine/resources/file_provider.py,sha256=6btMCDN7NsyFlV7Icy5vDO7xsgbmtkeAM_KCuQ-GvRo,5903
|
|
435
435
|
opentrons/protocol_engine/resources/fixture_validation.py,sha256=WBGWFTmBwLPjOBFeqJYxnaSRHvo4pwxvdhT4XUW_FMY,1857
|
|
@@ -449,8 +449,8 @@ opentrons/protocol_engine/state/commands.py,sha256=aoON_C5DbiIEPxOGATvwCsSG9eHsF
|
|
|
449
449
|
opentrons/protocol_engine/state/config.py,sha256=7jSGxC6Vqj1eA8fqZ2I3zjlxVXg8pxvcBYMztRIx9Mg,1515
|
|
450
450
|
opentrons/protocol_engine/state/files.py,sha256=w8xxxg8HY0RqKKEGSfHWfrjV54Gb02O3dwtisJ-9j8E,1753
|
|
451
451
|
opentrons/protocol_engine/state/fluid_stack.py,sha256=uwkf0qYk1UX5iU52xmk-e3yLPK8OG-TtMCcBqrkVFpM,5932
|
|
452
|
-
opentrons/protocol_engine/state/frustum_helpers.py,sha256=
|
|
453
|
-
opentrons/protocol_engine/state/geometry.py,sha256=
|
|
452
|
+
opentrons/protocol_engine/state/frustum_helpers.py,sha256=I_tVCqy-CgYBqBS7FVyDpxdz0AdDeKYyeTPmaZuUIqU,17342
|
|
453
|
+
opentrons/protocol_engine/state/geometry.py,sha256=_4buTI8kNjCogc4zKJwhCrvlB71yXrdcYqiwen-qkcA,97628
|
|
454
454
|
opentrons/protocol_engine/state/labware.py,sha256=rehy7R1HIhxx3DTtTHIKxqHoBQJ_1tDhhiculMJeIy8,57556
|
|
455
455
|
opentrons/protocol_engine/state/liquid_classes.py,sha256=u_z75UYdiFAKG0yB3mr1il4T3qaS0Sotq8sL7KLODP8,2990
|
|
456
456
|
opentrons/protocol_engine/state/liquids.py,sha256=NoesktcQdJUjIVmet1uqqJPf-rzbo4SGemXwQC295W0,2338
|
|
@@ -460,8 +460,8 @@ opentrons/protocol_engine/state/pipettes.py,sha256=nqeJWn98S8wSDW-CPJnjEl5hEIkmh
|
|
|
460
460
|
opentrons/protocol_engine/state/state.py,sha256=gHmXrlq17kx3sTbizq8gPoJQx_0nazxnooLODvrLY5k,15468
|
|
461
461
|
opentrons/protocol_engine/state/state_summary.py,sha256=tu-xJYKbKzeLk9Z0RwSaz0tUs6blYuxSA5V2n7_zSGk,1180
|
|
462
462
|
opentrons/protocol_engine/state/tips.py,sha256=XAFP7IpR-L9p6BKz4HWcAnRxXO4FHXrK5pIR_9eshfE,20145
|
|
463
|
-
opentrons/protocol_engine/state/update_types.py,sha256=
|
|
464
|
-
opentrons/protocol_engine/state/wells.py,sha256=
|
|
463
|
+
opentrons/protocol_engine/state/update_types.py,sha256=2PUsBE50y2PRhLosooESyLXkVTWyaM0-8Su1JD-_Hfg,27148
|
|
464
|
+
opentrons/protocol_engine/state/wells.py,sha256=rCFiyS8EOgvmsrFr2pHU3SY79ZRkZg_nhFfoH1pMjb0,10996
|
|
465
465
|
opentrons/protocol_engine/state/module_substates/__init__.py,sha256=7OIzc7Zzm-7WRys6M90ZzJ7BZhivuZ1BHJ35TdOPasE,1377
|
|
466
466
|
opentrons/protocol_engine/state/module_substates/absorbance_reader_substate.py,sha256=jiD8WqFEafGnka5n46vJ_qhS8Ofh--hTxuBWXk8eefE,1431
|
|
467
467
|
opentrons/protocol_engine/state/module_substates/flex_stacker_substate.py,sha256=gJ5arNHyHR-DeNwsxLhVd3sq7oJTI8moFeyP7a38kVQ,2517
|
|
@@ -470,7 +470,7 @@ opentrons/protocol_engine/state/module_substates/magnetic_block_substate.py,sha2
|
|
|
470
470
|
opentrons/protocol_engine/state/module_substates/magnetic_module_substate.py,sha256=IJ5zpufz5WSRbJqHOAi-WroDxpsRZz-GvwznIL4v7VQ,2468
|
|
471
471
|
opentrons/protocol_engine/state/module_substates/temperature_module_substate.py,sha256=w9h6EBM1YY8SeUOlUz5-nW1Zoyce8-zua8Z6mX4sDNg,2310
|
|
472
472
|
opentrons/protocol_engine/state/module_substates/thermocycler_module_substate.py,sha256=fLt2jMsbnfe8Q25vAjloxLBGdx8sotqM34VxbwfegpE,5167
|
|
473
|
-
opentrons/protocol_engine/types/__init__.py,sha256=
|
|
473
|
+
opentrons/protocol_engine/types/__init__.py,sha256=KUKrF0jBWlY2BUsCNnu_9OdMYu51YDpfKaUWBAJZtzE,7994
|
|
474
474
|
opentrons/protocol_engine/types/automatic_tip_selection.py,sha256=I_B3iWei1Sl7F7IrMKqOn4S12heZXRnfKvtCTUXIMyM,1118
|
|
475
475
|
opentrons/protocol_engine/types/command_annotations.py,sha256=5A4k_R_4A2_nGl0K85SKwNlnKA09fUhEIe_mdU55yro,1843
|
|
476
476
|
opentrons/protocol_engine/types/deck_configuration.py,sha256=O5zO6sX0iGsrWvBxuR3JnxjtAH-gSMImcy1krP4B360,2047
|
|
@@ -492,7 +492,7 @@ opentrons/protocol_engine/types/partial_tip_configuration.py,sha256=4RMtHOAX-dgp
|
|
|
492
492
|
opentrons/protocol_engine/types/run_time_parameters.py,sha256=5gH4GmGK7e3OkSClftZT6VA4wXELIvEMgpmQ__waceU,4468
|
|
493
493
|
opentrons/protocol_engine/types/tip.py,sha256=qfjnCPG7RAlTGS80SAQB8rGwtFW3yRWYj7DpYy0oDow,389
|
|
494
494
|
opentrons/protocol_engine/types/util.py,sha256=n94IDny6jeeIO1mCkMNgrB5G5aRYDaOvzbohYYFN-es,356
|
|
495
|
-
opentrons/protocol_engine/types/well_position.py,sha256=
|
|
495
|
+
opentrons/protocol_engine/types/well_position.py,sha256=bktvL-DGwtP0GbgPNbpsBfMhFj49sE00JTc9KCUesTw,3318
|
|
496
496
|
opentrons/protocol_reader/__init__.py,sha256=BGQOig6EgY-3eeLkxmVeZ9VhqOt4QUiG_rQJwiuW8uY,959
|
|
497
497
|
opentrons/protocol_reader/extract_labware_definitions.py,sha256=CiVqKDuNEmoh6UILsTGUAFCvSXNVbop2fXX97XY6ykc,2649
|
|
498
498
|
opentrons/protocol_reader/file_format_validator.py,sha256=i5CNnQQsE8bnAF3FsOjjYrSdNNbmVjwHicLBsC6UbNQ,6570
|
|
@@ -516,7 +516,7 @@ opentrons/protocol_runner/run_orchestrator.py,sha256=iQPhdZERs_w6C-uGXPYszOHn2UP
|
|
|
516
516
|
opentrons/protocol_runner/task_queue.py,sha256=YH8_lvuLBYjfzXAOJU8DYXizQcbaxGmUiAPmd7kHERw,2581
|
|
517
517
|
opentrons/protocols/__init__.py,sha256=cOUxilkIvdlqGvN4nYJQYr0TGdIWnzxBaTfoz3svmw8,245
|
|
518
518
|
opentrons/protocols/bundle.py,sha256=QW_2kwnxgdG_nNPl2e110A5ehOH9Ej63-9TBx-F9Yvw,3666
|
|
519
|
-
opentrons/protocols/labware.py,sha256=
|
|
519
|
+
opentrons/protocols/labware.py,sha256=PZhbLCGuPKU-MKLz8VdmryaeAqEqol34MyE528bke8A,10965
|
|
520
520
|
opentrons/protocols/parse.py,sha256=viQxA4NiERPmZeHQaujq1CheiUop2oWkoPC8p7V_XqQ,27488
|
|
521
521
|
opentrons/protocols/types.py,sha256=XttBJsVGx5hd__PK7OJzMepdlcRaQmno3-yZ0hUJNME,6045
|
|
522
522
|
opentrons/protocols/advanced_control/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
@@ -525,7 +525,7 @@ opentrons/protocols/advanced_control/mix.py,sha256=GobQ9E6F2gARjfhNp2xdyWQXFBSwO
|
|
|
525
525
|
opentrons/protocols/advanced_control/transfers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
526
526
|
opentrons/protocols/advanced_control/transfers/common.py,sha256=TO1XK07OWo4l3Bm3J0TrLepXQqUPLK9jdH2FeqFdc34,3743
|
|
527
527
|
opentrons/protocols/advanced_control/transfers/transfer.py,sha256=-vE1uZq2BqAagSGeiuTxTyL1wT6fza_fwkO_V_OMMFc,37318
|
|
528
|
-
opentrons/protocols/advanced_control/transfers/transfer_liquid_utils.py,sha256=
|
|
528
|
+
opentrons/protocols/advanced_control/transfers/transfer_liquid_utils.py,sha256=EMOOPNj2PkI0xCZ3TicKgzjdMvoDvl9stHcz1Eyz95g,9237
|
|
529
529
|
opentrons/protocols/api_support/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
530
530
|
opentrons/protocols/api_support/constants.py,sha256=pI_zJ8oORr6FUOaF508ttll3KOIYqRRgcwVFwnqZuqc,262
|
|
531
531
|
opentrons/protocols/api_support/deck_type.py,sha256=cBxm-IQqFyL1QtYTMGtLXOlyuh-67xWgnJSP6rkg8oc,3942
|
|
@@ -580,11 +580,12 @@ opentrons/util/entrypoint_util.py,sha256=C0KN-09_WgNkqLbCyIB3yVm-kJoe7RGrZTb7qh9
|
|
|
580
580
|
opentrons/util/get_union_elements.py,sha256=H1KqLnG1zYvI2kanhc3MXRZT-S07E5a2vF1jEkhXpCs,1073
|
|
581
581
|
opentrons/util/helpers.py,sha256=3hr801bWGbxEcOFAS7f-iOhmnUhoK5qahbB8SIvaCfY,165
|
|
582
582
|
opentrons/util/linal.py,sha256=IlKAP9HkNBBgULeSf4YVwSKHdx9jnCjSr7nvDvlRALg,5753
|
|
583
|
-
opentrons/util/logging_config.py,sha256=
|
|
583
|
+
opentrons/util/logging_config.py,sha256=7et4YYuQdWdq_e50U-8vFS_QyNBRgdnqPGAQJm8qrIo,9954
|
|
584
|
+
opentrons/util/logging_queue_handler.py,sha256=ZsSJwy-oV8DXwpYiZisQ1PbYwmK2cOslD46AcyJ1E4I,2484
|
|
584
585
|
opentrons/util/performance_helpers.py,sha256=ew7H8XD20iS6-2TJAzbQeyzStZkkE6PzHt_Adx3wbZQ,5172
|
|
585
|
-
opentrons-8.4.
|
|
586
|
-
opentrons-8.4.
|
|
587
|
-
opentrons-8.4.
|
|
588
|
-
opentrons-8.4.
|
|
589
|
-
opentrons-8.4.
|
|
590
|
-
opentrons-8.4.
|
|
586
|
+
opentrons-8.4.0a5.dist-info/LICENSE,sha256=z8d0m5b2O9McPEK1xHG_dWgUBT6EfBDz6wA0F7xSPTA,11358
|
|
587
|
+
opentrons-8.4.0a5.dist-info/METADATA,sha256=dVv_Zex7NX_Yf6tBwmhxcaTUWKOKDvYAmuqkq99qwEU,5084
|
|
588
|
+
opentrons-8.4.0a5.dist-info/WHEEL,sha256=qUzzGenXXuJTzyjFah76kDVqDvnk-YDzY00svnrl84w,109
|
|
589
|
+
opentrons-8.4.0a5.dist-info/entry_points.txt,sha256=fTa6eGCYkvOtv0ov-KVE8LLGetgb35LQLF9x85OWPVw,106
|
|
590
|
+
opentrons-8.4.0a5.dist-info/top_level.txt,sha256=wk6whpbMZdBQpcK0Fg0YVfUGrAgVOFON7oQAhOMGMW8,10
|
|
591
|
+
opentrons-8.4.0a5.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|