opentrons 8.0.0a2__py2.py3-none-any.whl → 8.0.0a3__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/protocol_api/instrument_context.py +7 -1
- opentrons/protocol_api/labware.py +4 -4
- opentrons/protocol_api/module_contexts.py +3 -3
- opentrons/protocol_api/protocol_context.py +5 -5
- opentrons/protocol_api/validation.py +1 -1
- opentrons/protocols/parameters/csv_parameter_interface.py +20 -5
- {opentrons-8.0.0a2.dist-info → opentrons-8.0.0a3.dist-info}/METADATA +4 -4
- {opentrons-8.0.0a2.dist-info → opentrons-8.0.0a3.dist-info}/RECORD +12 -12
- {opentrons-8.0.0a2.dist-info → opentrons-8.0.0a3.dist-info}/LICENSE +0 -0
- {opentrons-8.0.0a2.dist-info → opentrons-8.0.0a3.dist-info}/WHEEL +0 -0
- {opentrons-8.0.0a2.dist-info → opentrons-8.0.0a3.dist-info}/entry_points.txt +0 -0
- {opentrons-8.0.0a2.dist-info → opentrons-8.0.0a3.dist-info}/top_level.txt +0 -0
|
@@ -2064,6 +2064,8 @@ class InstrumentContext(publisher.CommandPublisher):
|
|
|
2064
2064
|
NozzleLayout.QUADRANT,
|
|
2065
2065
|
]
|
|
2066
2066
|
if style in disabled_layouts:
|
|
2067
|
+
# todo(mm, 2024-08-20): UnsupportedAPIError boils down to an API_REMOVED
|
|
2068
|
+
# error code, which is not correct here.
|
|
2067
2069
|
raise UnsupportedAPIError(
|
|
2068
2070
|
message=f"Nozzle layout configuration of style {style.value} is currently unsupported."
|
|
2069
2071
|
)
|
|
@@ -2074,7 +2076,11 @@ class InstrumentContext(publisher.CommandPublisher):
|
|
|
2074
2076
|
< _PARTIAL_NOZZLE_CONFIGURATION_SINGLE_ROW_PARTIAL_COLUMN_ADDED_IN
|
|
2075
2077
|
) and (style not in original_enabled_layouts):
|
|
2076
2078
|
raise APIVersionError(
|
|
2077
|
-
f"Nozzle layout configuration of style {style.value}
|
|
2079
|
+
api_element=f"Nozzle layout configuration of style {style.value}",
|
|
2080
|
+
until_version=str(
|
|
2081
|
+
_PARTIAL_NOZZLE_CONFIGURATION_SINGLE_ROW_PARTIAL_COLUMN_ADDED_IN
|
|
2082
|
+
),
|
|
2083
|
+
current_version=str(self._api_version),
|
|
2078
2084
|
)
|
|
2079
2085
|
|
|
2080
2086
|
front_right_resolved = front_right
|
|
@@ -581,7 +581,7 @@ class Labware:
|
|
|
581
581
|
api_element="Labware.set_calibration()",
|
|
582
582
|
since_version=f"{ENGINE_CORE_API_VERSION}",
|
|
583
583
|
current_version=f"{self._api_version}",
|
|
584
|
-
|
|
584
|
+
extra_message="Try using the Opentrons App's Labware Position Check.",
|
|
585
585
|
)
|
|
586
586
|
self._core.set_calibration(delta)
|
|
587
587
|
|
|
@@ -632,7 +632,7 @@ class Labware:
|
|
|
632
632
|
api_element="Labware.set_offset()",
|
|
633
633
|
until_version=f"{SET_OFFSET_RESTORED_API_VERSION}",
|
|
634
634
|
current_version=f"{self._api_version}",
|
|
635
|
-
|
|
635
|
+
extra_message="This feature not available in versions 2.14 thorugh 2.17. You can also use the Opentrons App's Labware Position Check.",
|
|
636
636
|
)
|
|
637
637
|
else:
|
|
638
638
|
self._core.set_calibration(Point(x=x, y=y, z=z))
|
|
@@ -974,7 +974,7 @@ class Labware:
|
|
|
974
974
|
api_element="Labware.use_tips",
|
|
975
975
|
since_version=f"{ENGINE_CORE_API_VERSION}",
|
|
976
976
|
current_version=f"{self._api_version}",
|
|
977
|
-
|
|
977
|
+
extra_message="To modify tip state, use Labware.reset.",
|
|
978
978
|
)
|
|
979
979
|
|
|
980
980
|
assert num_channels > 0, "Bad call to use_tips: num_channels<=0"
|
|
@@ -1064,7 +1064,7 @@ class Labware:
|
|
|
1064
1064
|
api_element="Labware.return_tips()",
|
|
1065
1065
|
since_version=f"{ENGINE_CORE_API_VERSION}",
|
|
1066
1066
|
current_version=f"{self._api_version}",
|
|
1067
|
-
|
|
1067
|
+
extra_message="Use Labware.reset() instead.",
|
|
1068
1068
|
)
|
|
1069
1069
|
|
|
1070
1070
|
# This logic is the inverse of :py:meth:`use_tips`
|
|
@@ -103,7 +103,7 @@ class ModuleContext(CommandPublisher):
|
|
|
103
103
|
raise UnsupportedAPIError(
|
|
104
104
|
api_element="`ModuleContext.load_labware_object`",
|
|
105
105
|
since_version="2.14",
|
|
106
|
-
|
|
106
|
+
extra_message="Use `ModuleContext.load_labware` or `load_labware_by_definition` instead.",
|
|
107
107
|
)
|
|
108
108
|
|
|
109
109
|
_log.warning(
|
|
@@ -305,7 +305,7 @@ class ModuleContext(CommandPublisher):
|
|
|
305
305
|
raise UnsupportedAPIError(
|
|
306
306
|
api_element="`ModuleContext.geometry`",
|
|
307
307
|
since_version="2.14",
|
|
308
|
-
|
|
308
|
+
extra_message="Use properties of the `ModuleContext` itself.",
|
|
309
309
|
)
|
|
310
310
|
|
|
311
311
|
def __repr__(self) -> str:
|
|
@@ -482,7 +482,7 @@ class MagneticModuleContext(ModuleContext):
|
|
|
482
482
|
api_element="The height parameter of MagneticModuleContext.engage()",
|
|
483
483
|
since_version=f"{_MAGNETIC_MODULE_HEIGHT_PARAM_REMOVED_IN}",
|
|
484
484
|
current_version=f"{self._api_version}",
|
|
485
|
-
|
|
485
|
+
extra_message="Use offset or height_from_base.",
|
|
486
486
|
)
|
|
487
487
|
self._core.engage(height_from_home=height)
|
|
488
488
|
|
|
@@ -279,7 +279,7 @@ class ProtocolContext(CommandPublisher):
|
|
|
279
279
|
api_element="ProtocolContext.max_speeds",
|
|
280
280
|
since_version=f"{ENGINE_CORE_API_VERSION}",
|
|
281
281
|
current_version=f"{self._api_version}",
|
|
282
|
-
|
|
282
|
+
extra_message="Set speeds using InstrumentContext.default_speed or the per-method 'speed' argument.",
|
|
283
283
|
)
|
|
284
284
|
|
|
285
285
|
return self._core.get_max_speeds()
|
|
@@ -1048,7 +1048,7 @@ class ProtocolContext(CommandPublisher):
|
|
|
1048
1048
|
api_element="A Python Protocol safely resuming itself after a pause",
|
|
1049
1049
|
since_version=f"{ENGINE_CORE_API_VERSION}",
|
|
1050
1050
|
current_version=f"{self._api_version}",
|
|
1051
|
-
|
|
1051
|
+
extra_message="To wait automatically for a period of time, use ProtocolContext.delay().",
|
|
1052
1052
|
)
|
|
1053
1053
|
|
|
1054
1054
|
# TODO(mc, 2023-02-13): this assert should be enough for mypy
|
|
@@ -1169,7 +1169,7 @@ class ProtocolContext(CommandPublisher):
|
|
|
1169
1169
|
api_element="Fixed Trash",
|
|
1170
1170
|
since_version="2.16",
|
|
1171
1171
|
current_version=f"{self._api_version}",
|
|
1172
|
-
|
|
1172
|
+
extra_message="Fixed trash is no longer supported on Flex protocols.",
|
|
1173
1173
|
)
|
|
1174
1174
|
disposal_locations = self._core.get_disposal_locations()
|
|
1175
1175
|
if len(disposal_locations) == 0:
|
|
@@ -1242,7 +1242,7 @@ class ProtocolContext(CommandPublisher):
|
|
|
1242
1242
|
api_element="Calling `define_liquid()` without a `description`",
|
|
1243
1243
|
current_version=str(self._api_version),
|
|
1244
1244
|
until_version=str(desc_and_display_color_omittable_since),
|
|
1245
|
-
|
|
1245
|
+
extra_message="Use a newer API version or explicitly supply `description=None`.",
|
|
1246
1246
|
)
|
|
1247
1247
|
else:
|
|
1248
1248
|
description = None
|
|
@@ -1252,7 +1252,7 @@ class ProtocolContext(CommandPublisher):
|
|
|
1252
1252
|
api_element="Calling `define_liquid()` without a `display_color`",
|
|
1253
1253
|
current_version=str(self._api_version),
|
|
1254
1254
|
until_version=str(desc_and_display_color_omittable_since),
|
|
1255
|
-
|
|
1255
|
+
extra_message="Use a newer API version or explicitly supply `display_color=None`.",
|
|
1256
1256
|
)
|
|
1257
1257
|
else:
|
|
1258
1258
|
display_color = None
|
|
@@ -208,7 +208,7 @@ def ensure_and_convert_deck_slot(
|
|
|
208
208
|
api_element=f"Specifying a deck slot like '{deck_slot}'",
|
|
209
209
|
until_version=f"{_COORDINATE_DECK_LABEL_VERSION_GATE}",
|
|
210
210
|
current_version=f"{api_version}",
|
|
211
|
-
|
|
211
|
+
extra_message=f"Increase your protocol's apiLevel, or use slot '{alternative}' instead.",
|
|
212
212
|
)
|
|
213
213
|
|
|
214
214
|
return parsed_slot.to_equivalent_for_robot_type(robot_type)
|
|
@@ -16,7 +16,10 @@ class CSVParameter:
|
|
|
16
16
|
|
|
17
17
|
@property
|
|
18
18
|
def file(self) -> TextIO:
|
|
19
|
-
"""Returns the file handler for the CSV file.
|
|
19
|
+
"""Returns the file handler for the CSV file.
|
|
20
|
+
|
|
21
|
+
The file is treated as read-only, UTF-8-encoded text.
|
|
22
|
+
"""
|
|
20
23
|
if self._file is None:
|
|
21
24
|
text = self.contents
|
|
22
25
|
temporary_file = NamedTemporaryFile("r+")
|
|
@@ -30,7 +33,7 @@ class CSVParameter:
|
|
|
30
33
|
|
|
31
34
|
@property
|
|
32
35
|
def file_opened(self) -> bool:
|
|
33
|
-
"""
|
|
36
|
+
"""Returns ``True`` if a file handler is open for the CSV parameter."""
|
|
34
37
|
return self._file is not None
|
|
35
38
|
|
|
36
39
|
@property
|
|
@@ -45,10 +48,22 @@ class CSVParameter:
|
|
|
45
48
|
def parse_as_csv(
|
|
46
49
|
self, detect_dialect: bool = True, **kwargs: Any
|
|
47
50
|
) -> List[List[str]]:
|
|
48
|
-
"""
|
|
51
|
+
"""Parses the CSV data and returns a list of lists.
|
|
52
|
+
|
|
53
|
+
Each item in the parent list corresponds to a row in the CSV file.
|
|
54
|
+
If the CSV has a header, that will be the first row in the list: ``.parse_as_csv()[0]``.
|
|
55
|
+
|
|
56
|
+
Each item in the child lists corresponds to a single cell within its row.
|
|
57
|
+
The data for each cell is represented as a string. You may need to trim whitespace
|
|
58
|
+
or otherwise validate string contents before passing them as inputs to other API methods.
|
|
59
|
+
For numeric data, cast these strings to integers or floating point numbers,
|
|
60
|
+
as appropriate.
|
|
49
61
|
|
|
50
|
-
|
|
51
|
-
|
|
62
|
+
:param detect_dialect: If ``True``, examine the file and try to assign it a
|
|
63
|
+
:py:class:`csv.Dialect` to improve parsing behavior.
|
|
64
|
+
:param kwargs: For advanced CSV handling, you can pass any of the
|
|
65
|
+
`formatting parameters <https://docs.python.org/3/library/csv.html#csv-fmt-params>`_
|
|
66
|
+
accepted by :py:func:`csv.reader` from the Python standard library.
|
|
52
67
|
"""
|
|
53
68
|
rows: List[List[str]] = []
|
|
54
69
|
if detect_dialect:
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: opentrons
|
|
3
|
-
Version: 8.0.
|
|
3
|
+
Version: 8.0.0a3
|
|
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.0.
|
|
24
|
+
Requires-Dist: opentrons-shared-data ==8.0.0a3
|
|
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
|
|
@@ -33,9 +33,9 @@ Requires-Dist: click <9,>=8.0.0
|
|
|
33
33
|
Requires-Dist: packaging >=21.0
|
|
34
34
|
Requires-Dist: importlib-metadata >=1.0 ; python_version < "3.8"
|
|
35
35
|
Provides-Extra: flex-hardware
|
|
36
|
-
Requires-Dist: opentrons-hardware[flex] ==8.0.
|
|
36
|
+
Requires-Dist: opentrons-hardware[flex] ==8.0.0a3 ; extra == 'flex-hardware'
|
|
37
37
|
Provides-Extra: ot2-hardware
|
|
38
|
-
Requires-Dist: opentrons-hardware ==8.0.
|
|
38
|
+
Requires-Dist: opentrons-hardware ==8.0.0a3 ; extra == 'ot2-hardware'
|
|
39
39
|
|
|
40
40
|
.. _Full API Documentation: http://docs.opentrons.com
|
|
41
41
|
|
|
@@ -219,13 +219,13 @@ opentrons/protocol_api/config.py,sha256=r9lyvXjagTX_g3q5FGURPpcz2IA9sSF7Oa_1mKx-
|
|
|
219
219
|
opentrons/protocol_api/create_protocol_context.py,sha256=wwsZje0L__oDnu1Yrihau320_f-ASloR9eL1QCtkOh8,7612
|
|
220
220
|
opentrons/protocol_api/deck.py,sha256=94vFceg1SC1bAGd7TvC1ZpYwnJR-VlzurEZ6jkacYeg,8910
|
|
221
221
|
opentrons/protocol_api/disposal_locations.py,sha256=NRiSGmDR0LnbyEkWSOM-o64uR2fUoB1NWJG7Y7SsJSs,7920
|
|
222
|
-
opentrons/protocol_api/instrument_context.py,sha256=
|
|
223
|
-
opentrons/protocol_api/labware.py,sha256=
|
|
224
|
-
opentrons/protocol_api/module_contexts.py,sha256=
|
|
222
|
+
opentrons/protocol_api/instrument_context.py,sha256=Viq1EpJ67IiOXXNKigx4iTW1xtDfx3yQ5PHdy3StzcQ,95849
|
|
223
|
+
opentrons/protocol_api/labware.py,sha256=cxJp5wWMv-OKLmryEXwPgFL6T6pu8T7SXYlGWaVmB-g,47723
|
|
224
|
+
opentrons/protocol_api/module_contexts.py,sha256=4uXWnO-w4Znbz27Y8m0uMJ_CR0U3Qy1r1ODntFbYMd0,37325
|
|
225
225
|
opentrons/protocol_api/module_validation_and_errors.py,sha256=XL_m72P8rcvGO2fynY7UzXLcpGuI6X4s0V6Xf735Iyc,1464
|
|
226
|
-
opentrons/protocol_api/protocol_context.py,sha256=
|
|
226
|
+
opentrons/protocol_api/protocol_context.py,sha256=SxqZ_vRTPxmceJdYXpI_e2VfWJm_atoCjM1I1UPBMB0,53602
|
|
227
227
|
opentrons/protocol_api/robot_context.py,sha256=vph_ZqfdmREOwLwpjSkXiSZSpI1HO0HuilhqjhgT7Rw,2660
|
|
228
|
-
opentrons/protocol_api/validation.py,sha256=
|
|
228
|
+
opentrons/protocol_api/validation.py,sha256=p9kwYn340lIGHJ88q7L3RsfEgr25Nv1uTMuw4yly7T0,18373
|
|
229
229
|
opentrons/protocol_api/core/__init__.py,sha256=-g74o8OtBB0LmmOvwkRvPgrHt7fF7T8FRHDj-x_-Onk,736
|
|
230
230
|
opentrons/protocol_api/core/common.py,sha256=sXWlP8F4ZAEGcDh1WuavrVxkoi-FultBbpY6JW0_9ZY,1029
|
|
231
231
|
opentrons/protocol_api/core/core_map.py,sha256=gq3CIYPxuPvozf8yj8FprqBfs3e4ZJGQ6s0ViPbwV08,1757
|
|
@@ -472,7 +472,7 @@ opentrons/protocols/models/__init__.py,sha256=KePRAkkKzFoc0lAz8y89cWnxru8ofe3mow
|
|
|
472
472
|
opentrons/protocols/models/json_protocol.py,sha256=lteWlIBXgRM86k-wO1dKsx02G2_4kustSDeSoyc5N5U,20128
|
|
473
473
|
opentrons/protocols/parameters/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
474
474
|
opentrons/protocols/parameters/csv_parameter_definition.py,sha256=xZhGtdfH2vXSWFK-aGET07_L0LODvHWkfNxf7pQoOmo,2762
|
|
475
|
-
opentrons/protocols/parameters/csv_parameter_interface.py,sha256=
|
|
475
|
+
opentrons/protocols/parameters/csv_parameter_interface.py,sha256=XxQCcNgrtpvZR451nbnlCaQnlgZj_uNkwGIxnK9rk9Q,3684
|
|
476
476
|
opentrons/protocols/parameters/exceptions.py,sha256=vQUeyy8Yk_fzP4bvT0r_zu3s7Aty3LM7PzTV6k2iXu0,1092
|
|
477
477
|
opentrons/protocols/parameters/parameter_definition.py,sha256=OMtUCPKyFx5ZH3Jfcw05aF8pptWQ7XYzYttGMuSPu9k,9529
|
|
478
478
|
opentrons/protocols/parameters/types.py,sha256=h7vaNmKbDHc1q_FzbZoIgoSVo0mvS64FeiLZDnv7xnQ,489
|
|
@@ -499,9 +499,9 @@ opentrons/util/helpers.py,sha256=3hr801bWGbxEcOFAS7f-iOhmnUhoK5qahbB8SIvaCfY,165
|
|
|
499
499
|
opentrons/util/linal.py,sha256=IlKAP9HkNBBgULeSf4YVwSKHdx9jnCjSr7nvDvlRALg,5753
|
|
500
500
|
opentrons/util/logging_config.py,sha256=g3TdzDKa1pL_N3eKhRYCdqPaZYe_hpLV-e8llObTcT4,5657
|
|
501
501
|
opentrons/util/performance_helpers.py,sha256=ew7H8XD20iS6-2TJAzbQeyzStZkkE6PzHt_Adx3wbZQ,5172
|
|
502
|
-
opentrons-8.0.
|
|
503
|
-
opentrons-8.0.
|
|
504
|
-
opentrons-8.0.
|
|
505
|
-
opentrons-8.0.
|
|
506
|
-
opentrons-8.0.
|
|
507
|
-
opentrons-8.0.
|
|
502
|
+
opentrons-8.0.0a3.dist-info/LICENSE,sha256=z8d0m5b2O9McPEK1xHG_dWgUBT6EfBDz6wA0F7xSPTA,11358
|
|
503
|
+
opentrons-8.0.0a3.dist-info/METADATA,sha256=VCwClY3mFwancF9yu2AwyRWSS9pET6Wk42H8mMVPPZA,4990
|
|
504
|
+
opentrons-8.0.0a3.dist-info/WHEEL,sha256=_4XEmVmaBFWtekSGrbfOGNjC2I5lUr0lZSRblBllIFA,109
|
|
505
|
+
opentrons-8.0.0a3.dist-info/entry_points.txt,sha256=fTa6eGCYkvOtv0ov-KVE8LLGetgb35LQLF9x85OWPVw,106
|
|
506
|
+
opentrons-8.0.0a3.dist-info/top_level.txt,sha256=wk6whpbMZdBQpcK0Fg0YVfUGrAgVOFON7oQAhOMGMW8,10
|
|
507
|
+
opentrons-8.0.0a3.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|