opentrons 8.5.0a6__py2.py3-none-any.whl → 8.5.0a7__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/protocol_api/_transfer_liquid_validation.py +2 -2
- opentrons/protocol_api/core/engine/instrument.py +43 -105
- opentrons/protocols/advanced_control/transfers/transfer_liquid_utils.py +19 -9
- {opentrons-8.5.0a6.dist-info → opentrons-8.5.0a7.dist-info}/METADATA +4 -4
- {opentrons-8.5.0a6.dist-info → opentrons-8.5.0a7.dist-info}/RECORD +9 -9
- {opentrons-8.5.0a6.dist-info → opentrons-8.5.0a7.dist-info}/LICENSE +0 -0
- {opentrons-8.5.0a6.dist-info → opentrons-8.5.0a7.dist-info}/WHEEL +0 -0
- {opentrons-8.5.0a6.dist-info → opentrons-8.5.0a7.dist-info}/entry_points.txt +0 -0
- {opentrons-8.5.0a6.dist-info → opentrons-8.5.0a7.dist-info}/top_level.txt +0 -0
|
@@ -47,10 +47,10 @@ def verify_and_normalize_transfer_args(
|
|
|
47
47
|
flat_dests_list = []
|
|
48
48
|
if group_wells_for_multi_channel and nozzle_map.tip_count > 1:
|
|
49
49
|
flat_sources_list = tx_liquid_utils.group_wells_for_multi_channel_transfer(
|
|
50
|
-
flat_sources_list, nozzle_map
|
|
50
|
+
flat_sources_list, nozzle_map, "source"
|
|
51
51
|
)
|
|
52
52
|
flat_dests_list = tx_liquid_utils.group_wells_for_multi_channel_transfer(
|
|
53
|
-
flat_dests_list, nozzle_map
|
|
53
|
+
flat_dests_list, nozzle_map, "destination"
|
|
54
54
|
)
|
|
55
55
|
for well in flat_sources_list + flat_dests_list:
|
|
56
56
|
instrument.validate_takes_liquid(
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
"""ProtocolEngine-based InstrumentContext core implementation."""
|
|
2
2
|
|
|
3
3
|
from __future__ import annotations
|
|
4
|
-
from contextlib import contextmanager
|
|
5
4
|
from itertools import dropwhile
|
|
6
5
|
from copy import deepcopy
|
|
7
6
|
from typing import (
|
|
@@ -13,7 +12,6 @@ from typing import (
|
|
|
13
12
|
Sequence,
|
|
14
13
|
Tuple,
|
|
15
14
|
NamedTuple,
|
|
16
|
-
Generator,
|
|
17
15
|
Literal,
|
|
18
16
|
)
|
|
19
17
|
from opentrons.types import (
|
|
@@ -1384,43 +1382,25 @@ class InstrumentCore(AbstractInstrument[WellCore, LabwareCore]):
|
|
|
1384
1382
|
air_gap=0,
|
|
1385
1383
|
)
|
|
1386
1384
|
]
|
|
1387
|
-
# Enable LPD only if all of these apply:
|
|
1388
|
-
# - LPD is globally enabled for this pipette
|
|
1389
|
-
# - it is the first time visiting this well
|
|
1390
|
-
# - pipette tip is unused
|
|
1391
|
-
enable_lpd = (
|
|
1392
|
-
self.get_liquid_presence_detection() and step_source != prev_src
|
|
1393
|
-
)
|
|
1394
|
-
elif new_tip == TransferTipPolicyV2.ONCE:
|
|
1395
|
-
# Enable LPD only if:
|
|
1396
|
-
# - LPD is globally enabled for this pipette
|
|
1397
|
-
# - this is the first source well of the entire transfer, which means
|
|
1398
|
-
# that the current tip is unused
|
|
1399
|
-
enable_lpd = self.get_liquid_presence_detection() and prev_src is None
|
|
1400
|
-
else:
|
|
1401
|
-
enable_lpd = False
|
|
1402
1385
|
|
|
1403
|
-
|
|
1404
|
-
|
|
1405
|
-
|
|
1406
|
-
|
|
1407
|
-
|
|
1408
|
-
|
|
1409
|
-
|
|
1410
|
-
|
|
1411
|
-
|
|
1412
|
-
|
|
1413
|
-
|
|
1414
|
-
|
|
1415
|
-
|
|
1416
|
-
|
|
1417
|
-
|
|
1418
|
-
|
|
1419
|
-
|
|
1420
|
-
|
|
1421
|
-
),
|
|
1422
|
-
trash_location=trash_location,
|
|
1423
|
-
)
|
|
1386
|
+
post_asp_tip_contents = self.aspirate_liquid_class(
|
|
1387
|
+
volume=step_volume,
|
|
1388
|
+
source=step_source,
|
|
1389
|
+
transfer_properties=transfer_props,
|
|
1390
|
+
transfer_type=tx_comps_executor.TransferType.ONE_TO_ONE,
|
|
1391
|
+
tip_contents=post_disp_tip_contents,
|
|
1392
|
+
volume_for_pipette_mode_configuration=step_volume,
|
|
1393
|
+
)
|
|
1394
|
+
post_disp_tip_contents = self.dispense_liquid_class(
|
|
1395
|
+
volume=step_volume,
|
|
1396
|
+
dest=step_destination,
|
|
1397
|
+
source=step_source,
|
|
1398
|
+
transfer_properties=transfer_props,
|
|
1399
|
+
transfer_type=tx_comps_executor.TransferType.ONE_TO_ONE,
|
|
1400
|
+
tip_contents=post_asp_tip_contents,
|
|
1401
|
+
add_final_air_gap=(False if is_last_step and keep_last_tip else True),
|
|
1402
|
+
trash_location=trash_location,
|
|
1403
|
+
)
|
|
1424
1404
|
prev_src = step_source
|
|
1425
1405
|
prev_dest = step_destination
|
|
1426
1406
|
|
|
@@ -1695,17 +1675,6 @@ class InstrumentCore(AbstractInstrument[WellCore, LabwareCore]):
|
|
|
1695
1675
|
" Specify a blowout location and enable blowout when using a disposal volume."
|
|
1696
1676
|
)
|
|
1697
1677
|
|
|
1698
|
-
if (
|
|
1699
|
-
self.get_liquid_presence_detection()
|
|
1700
|
-
and new_tip != TransferTipPolicyV2.NEVER
|
|
1701
|
-
and is_first_step
|
|
1702
|
-
):
|
|
1703
|
-
# Do probing only once, regardless of whether you are coming back to refill
|
|
1704
|
-
# with a fresh tip since there's only one source well
|
|
1705
|
-
enable_lpd = True
|
|
1706
|
-
else:
|
|
1707
|
-
enable_lpd = False
|
|
1708
|
-
|
|
1709
1678
|
if not is_first_step and new_tip == TransferTipPolicyV2.ALWAYS:
|
|
1710
1679
|
_drop_tip()
|
|
1711
1680
|
last_tip = _pick_up_tip()
|
|
@@ -1715,20 +1684,19 @@ class InstrumentCore(AbstractInstrument[WellCore, LabwareCore]):
|
|
|
1715
1684
|
air_gap=0,
|
|
1716
1685
|
)
|
|
1717
1686
|
]
|
|
1718
|
-
|
|
1719
|
-
|
|
1720
|
-
|
|
1721
|
-
|
|
1722
|
-
|
|
1723
|
-
|
|
1724
|
-
|
|
1725
|
-
|
|
1726
|
-
|
|
1727
|
-
|
|
1728
|
-
|
|
1729
|
-
|
|
1730
|
-
|
|
1731
|
-
)
|
|
1687
|
+
# Aspirate the total volume determined by the loop above
|
|
1688
|
+
tip_contents = self.aspirate_liquid_class(
|
|
1689
|
+
volume=total_aspirate_volume + conditioning_vol + disposal_vol,
|
|
1690
|
+
source=source,
|
|
1691
|
+
transfer_properties=transfer_props,
|
|
1692
|
+
transfer_type=tx_comps_executor.TransferType.ONE_TO_MANY,
|
|
1693
|
+
tip_contents=tip_contents,
|
|
1694
|
+
# We configure the mode based on the last dispense volume and disposal volume
|
|
1695
|
+
# since the mode is only used to determine the dispense push out volume
|
|
1696
|
+
# and we can do a push out only at the last dispense, that too if there is no disposal volume.
|
|
1697
|
+
volume_for_pipette_mode_configuration=vol_dest_combo[-1][0],
|
|
1698
|
+
conditioning_volume=conditioning_vol,
|
|
1699
|
+
)
|
|
1732
1700
|
|
|
1733
1701
|
# If the tip has volumes correspoinding to multiple destinations, then
|
|
1734
1702
|
# multi-dispense in those destinations.
|
|
@@ -1963,7 +1931,6 @@ class InstrumentCore(AbstractInstrument[WellCore, LabwareCore]):
|
|
|
1963
1931
|
next_step_volume, next_source = next(source_per_volume_step)
|
|
1964
1932
|
is_first_step = True
|
|
1965
1933
|
is_last_step = False
|
|
1966
|
-
prev_src: Optional[tuple[Location, WellCore]] = None
|
|
1967
1934
|
while not is_last_step:
|
|
1968
1935
|
total_dispense_volume = 0.0
|
|
1969
1936
|
vol_aspirate_combo = []
|
|
@@ -1981,13 +1948,7 @@ class InstrumentCore(AbstractInstrument[WellCore, LabwareCore]):
|
|
|
1981
1948
|
is_last_step = True
|
|
1982
1949
|
break
|
|
1983
1950
|
|
|
1984
|
-
if
|
|
1985
|
-
self.get_liquid_presence_detection()
|
|
1986
|
-
and new_tip != TransferTipPolicyV2.NEVER
|
|
1987
|
-
and is_first_step
|
|
1988
|
-
):
|
|
1989
|
-
enable_lpd = True
|
|
1990
|
-
elif not is_first_step and new_tip == TransferTipPolicyV2.ALWAYS:
|
|
1951
|
+
if not is_first_step and new_tip == TransferTipPolicyV2.ALWAYS:
|
|
1991
1952
|
_drop_tip()
|
|
1992
1953
|
last_tip = _pick_up_tip()
|
|
1993
1954
|
tip_contents = [
|
|
@@ -1996,33 +1957,22 @@ class InstrumentCore(AbstractInstrument[WellCore, LabwareCore]):
|
|
|
1996
1957
|
air_gap=0,
|
|
1997
1958
|
)
|
|
1998
1959
|
]
|
|
1999
|
-
# Enable LPD if it's globally enabled, as long as
|
|
2000
|
-
# the next source is different from previous source
|
|
2001
|
-
enable_lpd = (
|
|
2002
|
-
self.get_liquid_presence_detection()
|
|
2003
|
-
and prev_src != vol_aspirate_combo[0][1]
|
|
2004
|
-
)
|
|
2005
|
-
else:
|
|
2006
|
-
enable_lpd = False
|
|
2007
1960
|
|
|
2008
1961
|
total_aspirated_volume = 0.0
|
|
2009
1962
|
for step_num, (step_volume, step_source) in enumerate(vol_aspirate_combo):
|
|
2010
|
-
|
|
2011
|
-
|
|
2012
|
-
|
|
2013
|
-
|
|
2014
|
-
|
|
2015
|
-
|
|
2016
|
-
|
|
2017
|
-
|
|
2018
|
-
|
|
2019
|
-
|
|
2020
|
-
|
|
2021
|
-
)
|
|
2022
|
-
prev_src = step_source
|
|
1963
|
+
tip_contents = self.aspirate_liquid_class(
|
|
1964
|
+
volume=step_volume,
|
|
1965
|
+
source=step_source,
|
|
1966
|
+
transfer_properties=transfer_props,
|
|
1967
|
+
transfer_type=tx_comps_executor.TransferType.MANY_TO_ONE,
|
|
1968
|
+
tip_contents=tip_contents,
|
|
1969
|
+
volume_for_pipette_mode_configuration=(
|
|
1970
|
+
total_dispense_volume if step_num == 0 else None
|
|
1971
|
+
),
|
|
1972
|
+
current_volume=total_aspirated_volume,
|
|
1973
|
+
)
|
|
2023
1974
|
total_aspirated_volume += step_volume
|
|
2024
1975
|
is_first_step = False
|
|
2025
|
-
enable_lpd = False
|
|
2026
1976
|
tip_contents = self.dispense_liquid_class(
|
|
2027
1977
|
volume=total_dispense_volume,
|
|
2028
1978
|
dest=dest,
|
|
@@ -2119,10 +2069,6 @@ class InstrumentCore(AbstractInstrument[WellCore, LabwareCore]):
|
|
|
2119
2069
|
location=prep_location,
|
|
2120
2070
|
)
|
|
2121
2071
|
last_liquid_and_airgap_in_tip.air_gap = 0
|
|
2122
|
-
if self.get_liquid_presence_detection():
|
|
2123
|
-
self.liquid_probe_with_recovery(
|
|
2124
|
-
well_core=source_well, loc=prep_location
|
|
2125
|
-
)
|
|
2126
2072
|
# TODO: do volume configuration + prepare for aspirate only if the mode needs to be changed
|
|
2127
2073
|
self.configure_for_volume(volume_for_pipette_mode_configuration)
|
|
2128
2074
|
self.prepare_to_aspirate()
|
|
@@ -2541,14 +2487,6 @@ class InstrumentCore(AbstractInstrument[WellCore, LabwareCore]):
|
|
|
2541
2487
|
"""Call a protocol delay."""
|
|
2542
2488
|
self._protocol_core.delay(seconds=seconds, msg=None)
|
|
2543
2489
|
|
|
2544
|
-
@contextmanager
|
|
2545
|
-
def lpd_for_transfer(self, enable: bool) -> Generator[None, None, None]:
|
|
2546
|
-
"""Context manager for the instrument's LPD state during a transfer."""
|
|
2547
|
-
global_lpd_enabled = self.get_liquid_presence_detection()
|
|
2548
|
-
self.set_liquid_presence_detection(enable=enable)
|
|
2549
|
-
yield
|
|
2550
|
-
self.set_liquid_presence_detection(enable=global_lpd_enabled)
|
|
2551
|
-
|
|
2552
2490
|
|
|
2553
2491
|
class _TipInfo(NamedTuple):
|
|
2554
2492
|
tiprack_location: Location
|
|
@@ -72,6 +72,7 @@ def raise_if_location_inside_liquid(
|
|
|
72
72
|
def group_wells_for_multi_channel_transfer(
|
|
73
73
|
targets: Sequence[Well],
|
|
74
74
|
nozzle_map: NozzleMapInterface,
|
|
75
|
+
target_name: Literal["source", "destination"],
|
|
75
76
|
) -> List[Well]:
|
|
76
77
|
"""Takes a list of wells and a nozzle map and returns a list of target wells to address every well given
|
|
77
78
|
|
|
@@ -94,13 +95,20 @@ def group_wells_for_multi_channel_transfer(
|
|
|
94
95
|
or (configuration == NozzleConfigurationType.ROW and active_nozzles == 12)
|
|
95
96
|
or active_nozzles == 96
|
|
96
97
|
):
|
|
97
|
-
return _group_wells_for_nozzle_configuration(
|
|
98
|
+
return _group_wells_for_nozzle_configuration(
|
|
99
|
+
list(targets), nozzle_map, target_name
|
|
100
|
+
)
|
|
98
101
|
else:
|
|
99
|
-
raise ValueError(
|
|
102
|
+
raise ValueError(
|
|
103
|
+
"Unsupported nozzle configuration for well grouping. Set group_wells to False"
|
|
104
|
+
" to only target wells with the primary nozzle for this configuration."
|
|
105
|
+
)
|
|
100
106
|
|
|
101
107
|
|
|
102
108
|
def _group_wells_for_nozzle_configuration( # noqa: C901
|
|
103
|
-
targets: List[Well],
|
|
109
|
+
targets: List[Well],
|
|
110
|
+
nozzle_map: NozzleMapInterface,
|
|
111
|
+
target_name: Literal["source", "destination"],
|
|
104
112
|
) -> List[Well]:
|
|
105
113
|
"""Groups wells together for a column, row, or full 96 configuration and returns a reduced list of target wells."""
|
|
106
114
|
grouped_wells = []
|
|
@@ -132,8 +140,9 @@ def _group_wells_for_nozzle_configuration( # noqa: C901
|
|
|
132
140
|
if active_wells_covered:
|
|
133
141
|
if well.parent != active_labware:
|
|
134
142
|
raise ValueError(
|
|
135
|
-
"Could not
|
|
136
|
-
"
|
|
143
|
+
f"Could not group {target_name} wells to match pipette's nozzle configuration. Ensure that the"
|
|
144
|
+
" wells are ordered correctly (e.g. rows() for a row layout or columns() for a column layout), or"
|
|
145
|
+
" set group_wells to False to only target wells with the primary nozzle."
|
|
137
146
|
)
|
|
138
147
|
|
|
139
148
|
if well.well_name in active_wells_covered:
|
|
@@ -165,8 +174,9 @@ def _group_wells_for_nozzle_configuration( # noqa: C901
|
|
|
165
174
|
alternate_384_well_coverage_count += 1
|
|
166
175
|
else:
|
|
167
176
|
raise ValueError(
|
|
168
|
-
"Could not
|
|
169
|
-
"
|
|
177
|
+
f"Could not group {target_name} wells to match pipette's nozzle configuration. Ensure that the"
|
|
178
|
+
" wells are ordered correctly (e.g. rows() for a row layout or columns() for a column layout), or"
|
|
179
|
+
" set group_wells to False to only target wells with the primary nozzle."
|
|
170
180
|
)
|
|
171
181
|
# If we have no active wells covered to account for, add a new target well and list of covered wells to check
|
|
172
182
|
else:
|
|
@@ -193,8 +203,8 @@ def _group_wells_for_nozzle_configuration( # noqa: C901
|
|
|
193
203
|
|
|
194
204
|
if active_wells_covered:
|
|
195
205
|
raise ValueError(
|
|
196
|
-
"
|
|
197
|
-
f"
|
|
206
|
+
f"Pipette will access {target_name} wells not provided in the liquid handling command."
|
|
207
|
+
f" Set group_wells to False or include these wells: {active_wells_covered}"
|
|
198
208
|
)
|
|
199
209
|
|
|
200
210
|
# If we reversed the lookup of wells, reverse the grouped wells we will return
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: opentrons
|
|
3
|
-
Version: 8.5.
|
|
3
|
+
Version: 8.5.0a7
|
|
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.5.
|
|
24
|
+
Requires-Dist: opentrons-shared-data (==8.5.0a7)
|
|
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.5.
|
|
38
|
+
Requires-Dist: opentrons-hardware[flex] (==8.5.0a7) ; extra == 'flex-hardware'
|
|
39
39
|
Provides-Extra: ot2-hardware
|
|
40
|
-
Requires-Dist: opentrons-hardware (==8.5.
|
|
40
|
+
Requires-Dist: opentrons-hardware (==8.5.0a7) ; extra == 'ot2-hardware'
|
|
41
41
|
|
|
42
42
|
.. _Full API Documentation: http://docs.opentrons.com
|
|
43
43
|
|
|
@@ -223,7 +223,7 @@ opentrons/protocol_api/_liquid_properties.py,sha256=DHdDHoset72mKq2sLaf355Zz1Xds
|
|
|
223
223
|
opentrons/protocol_api/_nozzle_layout.py,sha256=-WA71bRDISs9bLwHdWqAyM7HBc53sOA8_BOVqYsuN3g,1095
|
|
224
224
|
opentrons/protocol_api/_parameter_context.py,sha256=dvGMVObWDSERrXfTKSIwc4YeIdF_RD-q8ASNaSBTcxw,12967
|
|
225
225
|
opentrons/protocol_api/_parameters.py,sha256=BGH50BFawoNnh7NRDh0tRrNncdwz_Ta25tbQfwtlYoM,1298
|
|
226
|
-
opentrons/protocol_api/_transfer_liquid_validation.py,sha256=
|
|
226
|
+
opentrons/protocol_api/_transfer_liquid_validation.py,sha256=wYuvW3UwF0JcK_Hmxim-Fmy1VkSR1TLBW-7u59XADL0,4443
|
|
227
227
|
opentrons/protocol_api/_types.py,sha256=6tPCuOmZ5GNtu-24zyY6O-KkXEqzhTAlHlKHQH3Dvzs,1413
|
|
228
228
|
opentrons/protocol_api/config.py,sha256=r9lyvXjagTX_g3q5FGURPpcz2IA9sSF7Oa_1mKx-7cw,625
|
|
229
229
|
opentrons/protocol_api/create_protocol_context.py,sha256=wwsZje0L__oDnu1Yrihau320_f-ASloR9eL1QCtkOh8,7612
|
|
@@ -249,7 +249,7 @@ opentrons/protocol_api/core/well_grid.py,sha256=BU28DKaBgEU_JdZ6pEzrwNxmuh6TkO4z
|
|
|
249
249
|
opentrons/protocol_api/core/engine/__init__.py,sha256=B_5T7zgkWDb1mXPg4NbT-wBkQaK-WVokMMnJRNu7xiM,582
|
|
250
250
|
opentrons/protocol_api/core/engine/deck_conflict.py,sha256=q3JViIAHDthIqq6ce7h2gxw3CHRfYsm5kkwzuXB-Gnc,12334
|
|
251
251
|
opentrons/protocol_api/core/engine/exceptions.py,sha256=aZgNrmYEeuPZm21nX_KZYtvyjv5h_zPjxxgPkEV7_bw,725
|
|
252
|
-
opentrons/protocol_api/core/engine/instrument.py,sha256=
|
|
252
|
+
opentrons/protocol_api/core/engine/instrument.py,sha256=KgRDIq50Nah2lcMuOtcpDTjckt9ycqWtQ37u6GfpEnQ,103560
|
|
253
253
|
opentrons/protocol_api/core/engine/labware.py,sha256=1xvzguNnK7aecFLiJK0gtRrZ5kpwtzLS73HnKvdJ5lc,8413
|
|
254
254
|
opentrons/protocol_api/core/engine/load_labware_params.py,sha256=I4Cb8rqpBhmykQuZE8QRG802APrdCy_TYS88rm_9oGA,7159
|
|
255
255
|
opentrons/protocol_api/core/engine/module_core.py,sha256=MLPgYSRJHUZPZ9rTLvsg3GlpL5b6-Pjk5UBgXCGrL6U,30994
|
|
@@ -526,7 +526,7 @@ opentrons/protocols/advanced_control/mix.py,sha256=GobQ9E6F2gARjfhNp2xdyWQXFBSwO
|
|
|
526
526
|
opentrons/protocols/advanced_control/transfers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
527
527
|
opentrons/protocols/advanced_control/transfers/common.py,sha256=Mal5AKO35nCXqjwxR6tDityEoLYg09Yty3Jv1fgOHnQ,5498
|
|
528
528
|
opentrons/protocols/advanced_control/transfers/transfer.py,sha256=-vE1uZq2BqAagSGeiuTxTyL1wT6fza_fwkO_V_OMMFc,37318
|
|
529
|
-
opentrons/protocols/advanced_control/transfers/transfer_liquid_utils.py,sha256=
|
|
529
|
+
opentrons/protocols/advanced_control/transfers/transfer_liquid_utils.py,sha256=uHUQJLYzDqA4pzZyIbR00PKRN5FMc6A6JgPBA9wSKTg,9713
|
|
530
530
|
opentrons/protocols/api_support/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
531
531
|
opentrons/protocols/api_support/constants.py,sha256=pI_zJ8oORr6FUOaF508ttll3KOIYqRRgcwVFwnqZuqc,262
|
|
532
532
|
opentrons/protocols/api_support/deck_type.py,sha256=cBxm-IQqFyL1QtYTMGtLXOlyuh-67xWgnJSP6rkg8oc,3942
|
|
@@ -584,9 +584,9 @@ opentrons/util/linal.py,sha256=IlKAP9HkNBBgULeSf4YVwSKHdx9jnCjSr7nvDvlRALg,5753
|
|
|
584
584
|
opentrons/util/logging_config.py,sha256=7et4YYuQdWdq_e50U-8vFS_QyNBRgdnqPGAQJm8qrIo,9954
|
|
585
585
|
opentrons/util/logging_queue_handler.py,sha256=ZsSJwy-oV8DXwpYiZisQ1PbYwmK2cOslD46AcyJ1E4I,2484
|
|
586
586
|
opentrons/util/performance_helpers.py,sha256=ew7H8XD20iS6-2TJAzbQeyzStZkkE6PzHt_Adx3wbZQ,5172
|
|
587
|
-
opentrons-8.5.
|
|
588
|
-
opentrons-8.5.
|
|
589
|
-
opentrons-8.5.
|
|
590
|
-
opentrons-8.5.
|
|
591
|
-
opentrons-8.5.
|
|
592
|
-
opentrons-8.5.
|
|
587
|
+
opentrons-8.5.0a7.dist-info/LICENSE,sha256=z8d0m5b2O9McPEK1xHG_dWgUBT6EfBDz6wA0F7xSPTA,11358
|
|
588
|
+
opentrons-8.5.0a7.dist-info/METADATA,sha256=hwuM6YYv_P5I0ajOPnA881RX44DKkJhCbARJrffgKcY,5084
|
|
589
|
+
opentrons-8.5.0a7.dist-info/WHEEL,sha256=qUzzGenXXuJTzyjFah76kDVqDvnk-YDzY00svnrl84w,109
|
|
590
|
+
opentrons-8.5.0a7.dist-info/entry_points.txt,sha256=fTa6eGCYkvOtv0ov-KVE8LLGetgb35LQLF9x85OWPVw,106
|
|
591
|
+
opentrons-8.5.0a7.dist-info/top_level.txt,sha256=wk6whpbMZdBQpcK0Fg0YVfUGrAgVOFON7oQAhOMGMW8,10
|
|
592
|
+
opentrons-8.5.0a7.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|