@opentrons/shared-data 0.0.1-alpha.20 → 0.1.0-alpha.0
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.
- package/Makefile +1 -1
- package/lib/opentrons-shared-data.js +1 -1
- package/lib/opentrons-shared-data.js.map +1 -1
- package/package.json +1 -1
- package/js/__tests__/__snapshots__/pipettes.test.ts.snap +0 -5969
- package/js/__tests__/deckSchemas.test.ts +0 -87
- package/js/__tests__/errors.test.js +0 -21
- package/js/__tests__/getAreSlotsAdjacent.test.ts +0 -128
- package/js/__tests__/getWellNamePerMultiTip.test.ts +0 -162
- package/js/__tests__/labwareDefQuirks.test.ts +0 -37
- package/js/__tests__/labwareDefSchemaV1.test.ts +0 -82
- package/js/__tests__/labwareDefSchemaV2.test.ts +0 -298
- package/js/__tests__/moduleAccessors.test.ts +0 -50
- package/js/__tests__/moduleSpecsSchema.test.ts +0 -77
- package/js/__tests__/pipetteSchemaV2.test.ts +0 -107
- package/js/__tests__/pipetteSpecSchemas.test.ts +0 -48
- package/js/__tests__/pipettes.test.ts +0 -58
- package/js/__tests__/protocolSchemaV4.test.ts +0 -137
- package/js/__tests__/protocolSchemaV5.test.ts +0 -137
- package/js/__tests__/protocolSchemaV6.test.ts +0 -132
- package/js/__tests__/protocolSchemaV7.test.ts +0 -64
- package/js/__tests__/protocolValidation.test.ts +0 -83
- package/js/__tests__/sortWells.test.ts +0 -40
- package/js/__tests__/splitWellsOnColumn.test.ts +0 -21
- package/js/__tests__/validateErrors.test.js +0 -34
- package/js/constants.ts +0 -338
- package/js/cypressUtils.ts +0 -35
- package/js/errors.ts +0 -33
- package/js/fixtures.ts +0 -161
- package/js/getLabware.ts +0 -154
- package/js/gripper.ts +0 -29
- package/js/helpers/__tests__/getAdapterName.test.ts +0 -31
- package/js/helpers/__tests__/getDeckDefFromLoadedLabware.test.ts +0 -12
- package/js/helpers/__tests__/getVectorDifference.test.ts +0 -25
- package/js/helpers/__tests__/getVectorSum.test.ts +0 -21
- package/js/helpers/__tests__/labwareInference.test.ts +0 -84
- package/js/helpers/__tests__/orderWells.test.ts +0 -87
- package/js/helpers/__tests__/parseProtocolData.test.ts +0 -165
- package/js/helpers/__tests__/volume.test.ts +0 -108
- package/js/helpers/__tests__/wellSets.test.ts +0 -352
- package/js/helpers/get96Channel384WellPlateWells.ts +0 -44
- package/js/helpers/getAddressableAreasInProtocol.ts +0 -59
- package/js/helpers/getLoadedLabwareDefinitionsByUri.ts +0 -30
- package/js/helpers/getModuleVizDims.ts +0 -118
- package/js/helpers/getOccludedSlotCountForModule.ts +0 -13
- package/js/helpers/getVectorDifference.ts +0 -12
- package/js/helpers/getVectorSum.ts +0 -12
- package/js/helpers/getWellNamePerMultiTip.ts +0 -86
- package/js/helpers/getWellTotalVolume.ts +0 -16
- package/js/helpers/index.ts +0 -347
- package/js/helpers/labwareInference.ts +0 -92
- package/js/helpers/orderWells.ts +0 -69
- package/js/helpers/parseProtocolData.ts +0 -141
- package/js/helpers/volume.ts +0 -35
- package/js/helpers/wellIsRect.ts +0 -6
- package/js/helpers/wellSets.ts +0 -155
- package/js/index.ts +0 -14
- package/js/labwareTools/__tests__/__snapshots__/createIrregularLabware.test.ts.snap +0 -3
- package/js/labwareTools/__tests__/__snapshots__/createLabware.test.ts.snap +0 -3
- package/js/labwareTools/__tests__/createDefaultDisplayName.test.ts +0 -111
- package/js/labwareTools/__tests__/createIrregularLabware.test.ts +0 -226
- package/js/labwareTools/__tests__/createLabware.test.ts +0 -147
- package/js/labwareTools/index.ts +0 -452
- package/js/modules.ts +0 -97
- package/js/pipettes.ts +0 -89
- package/js/protocols.ts +0 -290
- package/js/schema.ts +0 -80
- package/js/scripts/generateDeckLayersFromSVG.js +0 -46
- package/js/titleCase.ts +0 -30
- package/js/types.ts +0 -600
- package/python/.coveragerc +0 -4
- package/python/.flake8 +0 -32
- package/python/Config.in +0 -10
- package/python/Makefile +0 -134
- package/python/Pipfile +0 -28
- package/python/Pipfile.lock +0 -645
- package/python/buildroot.mk +0 -30
- package/python/mypy.ini +0 -41
- package/python/opentrons_shared_data/__init__.py +0 -17
- package/python/opentrons_shared_data/_version.py +0 -20
- package/python/opentrons_shared_data/command/__init__.py +0 -52
- package/python/opentrons_shared_data/deck/__init__.py +0 -96
- package/python/opentrons_shared_data/deck/dev_types.py +0 -180
- package/python/opentrons_shared_data/errors/__init__.py +0 -30
- package/python/opentrons_shared_data/errors/categories.py +0 -60
- package/python/opentrons_shared_data/errors/codes.py +0 -108
- package/python/opentrons_shared_data/errors/exceptions.py +0 -915
- package/python/opentrons_shared_data/gripper/__init__.py +0 -63
- package/python/opentrons_shared_data/gripper/constants.py +0 -6
- package/python/opentrons_shared_data/gripper/gripper_definition.py +0 -101
- package/python/opentrons_shared_data/labware/__init__.py +0 -22
- package/python/opentrons_shared_data/labware/constants.py +0 -7
- package/python/opentrons_shared_data/labware/dev_types.py +0 -140
- package/python/opentrons_shared_data/labware/labware_definition.py +0 -328
- package/python/opentrons_shared_data/load.py +0 -57
- package/python/opentrons_shared_data/module/__init__.py +0 -74
- package/python/opentrons_shared_data/module/dev_types.py +0 -141
- package/python/opentrons_shared_data/pipette/__init__.py +0 -107
- package/python/opentrons_shared_data/pipette/dev_types.py +0 -177
- package/python/opentrons_shared_data/pipette/file_operation_helpers.py +0 -37
- package/python/opentrons_shared_data/pipette/load_data.py +0 -261
- package/python/opentrons_shared_data/pipette/model_constants.py +0 -123
- package/python/opentrons_shared_data/pipette/mutable_configurations.py +0 -431
- package/python/opentrons_shared_data/pipette/pipette_definition.py +0 -503
- package/python/opentrons_shared_data/pipette/pipette_load_name_conversions.py +0 -240
- package/python/opentrons_shared_data/pipette/scripts/__init__.py +0 -0
- package/python/opentrons_shared_data/pipette/scripts/build_json_script.py +0 -469
- package/python/opentrons_shared_data/pipette/scripts/update_configuration_files.py +0 -450
- package/python/opentrons_shared_data/pipette/types.py +0 -193
- package/python/opentrons_shared_data/protocol/__init__.py +0 -13
- package/python/opentrons_shared_data/protocol/constants.py +0 -98
- package/python/opentrons_shared_data/protocol/dev_types.py +0 -436
- package/python/opentrons_shared_data/protocol/models/__init__.py +0 -48
- package/python/opentrons_shared_data/protocol/models/protocol_schema_v6.py +0 -145
- package/python/opentrons_shared_data/protocol/models/protocol_schema_v7.py +0 -95
- package/python/opentrons_shared_data/protocol/models/protocol_schema_v8.py +0 -110
- package/python/opentrons_shared_data/protocol/models/shared_models.py +0 -111
- package/python/opentrons_shared_data/py.typed +0 -0
- package/python/opentrons_shared_data/robot/__init__.py +0 -33
- package/python/opentrons_shared_data/robot/dev_types.py +0 -37
- package/python/pytest.ini +0 -2
- package/python/setup.cfg +0 -5
- package/python/setup.py +0 -179
- package/python/tests/__init__.py +0 -1
- package/python/tests/conftest.py +0 -0
- package/python/tests/deck/__init__.py +0 -0
- package/python/tests/deck/test_list_names.py +0 -12
- package/python/tests/deck/test_position.py +0 -113
- package/python/tests/deck/test_typechecks.py +0 -28
- package/python/tests/errors/__init__.py +0 -1
- package/python/tests/errors/test_error_completeness.py +0 -19
- package/python/tests/errors/test_exceptions.py +0 -74
- package/python/tests/gripper/__init__.py +0 -0
- package/python/tests/gripper/test_definition.py +0 -30
- package/python/tests/gripper/test_load.py +0 -16
- package/python/tests/labware/__init__.py +0 -13
- package/python/tests/labware/test_typechecks.py +0 -21
- package/python/tests/module/__init__.py +0 -20
- package/python/tests/module/test_load.py +0 -49
- package/python/tests/module/test_typechecks.py +0 -34
- package/python/tests/pipette/__init__.py +0 -0
- package/python/tests/pipette/test_load_data.py +0 -103
- package/python/tests/pipette/test_mutable_configurations.py +0 -266
- package/python/tests/pipette/test_pipette_definition.py +0 -183
- package/python/tests/pipette/test_pipette_load_name_conversions.py +0 -222
- package/python/tests/pipette/test_typechecks.py +0 -50
- package/python/tests/pipette/test_validate_schema.py +0 -37
- package/python/tests/protocol/__init__.py +0 -15
- package/python/tests/protocol/test_protocol_schema_v6.py +0 -107
- package/python/tests/protocol/test_protocol_schema_v7.py +0 -34
- package/python/tests/protocol/test_protocol_schema_v8.py +0 -20
- package/python/tests/protocol/test_typechecks.py +0 -36
- package/python/tests/robot/__init__.py +0 -0
- package/python/tests/robot/test_typechecks.py +0 -20
|
@@ -1,240 +0,0 @@
|
|
|
1
|
-
import re
|
|
2
|
-
from typing import List, Optional, Union, cast
|
|
3
|
-
from .dev_types import PipetteModel, PipetteName
|
|
4
|
-
from .types import (
|
|
5
|
-
PipetteChannelType,
|
|
6
|
-
PipetteModelType,
|
|
7
|
-
PipetteVersionType,
|
|
8
|
-
PipetteGenerationType,
|
|
9
|
-
PipetteModelMajorVersionType,
|
|
10
|
-
PipetteModelMinorVersionType,
|
|
11
|
-
)
|
|
12
|
-
from .pipette_definition import (
|
|
13
|
-
PipetteNameType,
|
|
14
|
-
PipetteModelVersionType,
|
|
15
|
-
)
|
|
16
|
-
|
|
17
|
-
DEFAULT_CALIBRATION_OFFSET = [0.0, 0.0, 0.0]
|
|
18
|
-
DEFAULT_MODEL = PipetteModelType.p1000
|
|
19
|
-
DEFAULT_CHANNELS = PipetteChannelType.SINGLE_CHANNEL
|
|
20
|
-
DEFAULT_MODEL_VERSION = PipetteVersionType(major=1, minor=0)
|
|
21
|
-
|
|
22
|
-
PIPETTE_AVAILABLE_TYPES = [m.name for m in PipetteModelType]
|
|
23
|
-
PIPETTE_CHANNELS_INTS = [c.value for c in PipetteChannelType]
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
def is_model(model_or_name: Union[PipetteName, PipetteModel, None]) -> bool:
|
|
27
|
-
"""Determine if we have a real model or just a PipetteName.
|
|
28
|
-
|
|
29
|
-
Args:
|
|
30
|
-
model_or_name (Union[PipetteName, PipetteModel, None]): The pipette we want to check.
|
|
31
|
-
|
|
32
|
-
Returns:
|
|
33
|
-
bool: Whether or not the given string is a PipetteModel
|
|
34
|
-
"""
|
|
35
|
-
if not model_or_name:
|
|
36
|
-
return False
|
|
37
|
-
return "v" in model_or_name
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
def supported_pipette(model_or_name: Union[PipetteName, PipetteModel, None]) -> bool:
|
|
41
|
-
"""Determine if a pipette type is supported.
|
|
42
|
-
|
|
43
|
-
Args:
|
|
44
|
-
model_or_name (Union[PipetteName, PipetteModel, None]): The pipette we want to check.
|
|
45
|
-
|
|
46
|
-
Returns:
|
|
47
|
-
bool: Whether or not the given pipette name or model is supported.
|
|
48
|
-
"""
|
|
49
|
-
if not model_or_name:
|
|
50
|
-
return False
|
|
51
|
-
split_model_or_name = model_or_name.split("_")
|
|
52
|
-
try:
|
|
53
|
-
channels_as_int = int(channels_from_string(split_model_or_name[1]))
|
|
54
|
-
except ValueError:
|
|
55
|
-
channels_as_int = 0
|
|
56
|
-
if (
|
|
57
|
-
split_model_or_name[0] in PIPETTE_AVAILABLE_TYPES
|
|
58
|
-
and channels_as_int in PIPETTE_CHANNELS_INTS
|
|
59
|
-
):
|
|
60
|
-
return True
|
|
61
|
-
return False
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
def channels_from_string(channels: str) -> PipetteChannelType:
|
|
65
|
-
"""Convert channels from a string.
|
|
66
|
-
|
|
67
|
-
With both `py:data:PipetteName` and `py:data:PipetteObject`, we refer to channel types
|
|
68
|
-
as `single`, `multi` or `96`.
|
|
69
|
-
|
|
70
|
-
Args:
|
|
71
|
-
channels (str): The channel string we wish to convert.
|
|
72
|
-
|
|
73
|
-
Returns:
|
|
74
|
-
PipetteChannelType: A `py:obj:PipetteChannelType`
|
|
75
|
-
representing the number of channels on a pipette.
|
|
76
|
-
|
|
77
|
-
"""
|
|
78
|
-
if channels == "96":
|
|
79
|
-
return PipetteChannelType.NINETY_SIX_CHANNEL
|
|
80
|
-
elif channels == "multi":
|
|
81
|
-
return PipetteChannelType.EIGHT_CHANNEL
|
|
82
|
-
elif channels == "single":
|
|
83
|
-
return PipetteChannelType.SINGLE_CHANNEL
|
|
84
|
-
else:
|
|
85
|
-
raise ValueError("Invalid number of channels")
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
def version_from_string(version: str) -> PipetteVersionType:
|
|
89
|
-
"""Convert a version string to a py:obj:PipetteVersionType.
|
|
90
|
-
|
|
91
|
-
The version string will either be in the format of `int.int` or `vint.int`.
|
|
92
|
-
|
|
93
|
-
Args:
|
|
94
|
-
version (str): The string version we wish to convert.
|
|
95
|
-
|
|
96
|
-
Returns:
|
|
97
|
-
PipetteVersionType: A pipette version object.
|
|
98
|
-
|
|
99
|
-
"""
|
|
100
|
-
version_list = [v for v in re.split("\\.|[v]", version) if v]
|
|
101
|
-
major = cast(PipetteModelMajorVersionType, int(version_list[0]))
|
|
102
|
-
if len(version_list) > 1:
|
|
103
|
-
minor = cast(PipetteModelMinorVersionType, int(version_list[1]))
|
|
104
|
-
else:
|
|
105
|
-
minor = 0
|
|
106
|
-
return PipetteVersionType(major, minor)
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
def version_from_generation(pipette_name_list: List[str]) -> PipetteVersionType:
|
|
110
|
-
"""Convert a string generation name to a py:obj:PipetteVersionType.
|
|
111
|
-
|
|
112
|
-
Pipette generations are strings in the format of "gen1" or "gen2", and
|
|
113
|
-
usually associated withe :py:data:PipetteName.
|
|
114
|
-
|
|
115
|
-
Args:
|
|
116
|
-
pipette_name_list (List[str]): A list of strings from the separated by `_`
|
|
117
|
-
py:data:PipetteName.
|
|
118
|
-
|
|
119
|
-
Returns:
|
|
120
|
-
PipetteVersionType: A pipette version object.
|
|
121
|
-
|
|
122
|
-
"""
|
|
123
|
-
if "flex" in pipette_name_list or "gen3" in pipette_name_list:
|
|
124
|
-
return PipetteVersionType(3, 0)
|
|
125
|
-
elif "gen2" in pipette_name_list:
|
|
126
|
-
return PipetteVersionType(2, 0)
|
|
127
|
-
else:
|
|
128
|
-
return PipetteVersionType(1, 0)
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
def generation_from_string(pipette_name_list: List[str]) -> PipetteGenerationType:
|
|
132
|
-
"""Convert a string generation name to a py:obj:PipetteGenerationType.
|
|
133
|
-
|
|
134
|
-
Args:
|
|
135
|
-
pipette_name_list (List[str]): A list of strings from the separated by `_`
|
|
136
|
-
py:data:PipetteName or py:data:PipetteModel.
|
|
137
|
-
|
|
138
|
-
Returns:
|
|
139
|
-
PipetteGenerationType: A pipette version object.
|
|
140
|
-
|
|
141
|
-
"""
|
|
142
|
-
if (
|
|
143
|
-
"flex" in pipette_name_list
|
|
144
|
-
or "3." in pipette_name_list[-1]
|
|
145
|
-
or pipette_name_list == ["p1000", "96"]
|
|
146
|
-
):
|
|
147
|
-
return PipetteGenerationType.FLEX
|
|
148
|
-
elif "gen2" in pipette_name_list or "2." in pipette_name_list[-1]:
|
|
149
|
-
return PipetteGenerationType.GEN2
|
|
150
|
-
else:
|
|
151
|
-
return PipetteGenerationType.GEN1
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
def convert_to_pipette_name_type(
|
|
155
|
-
model_or_name: Union[PipetteName, PipetteModel]
|
|
156
|
-
) -> PipetteNameType:
|
|
157
|
-
"""Convert the py:data:PipetteName to a py:obj:PipetteModelVersionType.
|
|
158
|
-
|
|
159
|
-
`PipetteNames` are in the format of "p300_single" or "p300_single_gen1".
|
|
160
|
-
|
|
161
|
-
Args:
|
|
162
|
-
name (PipetteName): The pipette name we want to convert.
|
|
163
|
-
|
|
164
|
-
Returns:
|
|
165
|
-
PipetteNameType: An object representing a broken out PipetteName
|
|
166
|
-
string.
|
|
167
|
-
|
|
168
|
-
"""
|
|
169
|
-
split_pipette_model_or_name = model_or_name.split("_")
|
|
170
|
-
channels = channels_from_string(split_pipette_model_or_name[1])
|
|
171
|
-
generation = generation_from_string(split_pipette_model_or_name)
|
|
172
|
-
pipette_type = PipetteModelType[split_pipette_model_or_name[0]]
|
|
173
|
-
|
|
174
|
-
return PipetteNameType(pipette_type, channels, generation)
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
def convert_pipette_name(
|
|
178
|
-
name: PipetteName, provided_version: Optional[str] = None
|
|
179
|
-
) -> PipetteModelVersionType:
|
|
180
|
-
"""Convert the py:data:PipetteName to a py:obj:PipetteModelVersionType.
|
|
181
|
-
|
|
182
|
-
`PipetteNames` are in the format of "p300_single" or "p300_single_gen1".
|
|
183
|
-
|
|
184
|
-
Args:
|
|
185
|
-
name (PipetteName): The pipette name we want to convert.
|
|
186
|
-
|
|
187
|
-
Returns:
|
|
188
|
-
PipetteModelVersionType: An object representing a broken out PipetteName
|
|
189
|
-
string.
|
|
190
|
-
|
|
191
|
-
"""
|
|
192
|
-
split_pipette_name = name.split("_")
|
|
193
|
-
channels = channels_from_string(split_pipette_name[1])
|
|
194
|
-
if provided_version:
|
|
195
|
-
version = version_from_string(provided_version)
|
|
196
|
-
else:
|
|
197
|
-
version = version_from_generation(split_pipette_name)
|
|
198
|
-
|
|
199
|
-
pipette_type = PipetteModelType[split_pipette_name[0]]
|
|
200
|
-
|
|
201
|
-
return PipetteModelVersionType(pipette_type, channels, version)
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
def convert_pipette_model(
|
|
205
|
-
model: Optional[PipetteModel], provided_version: Optional[str] = ""
|
|
206
|
-
) -> PipetteModelVersionType:
|
|
207
|
-
"""Convert the py:data:PipetteModel to a py:obj:PipetteModelVersionType.
|
|
208
|
-
|
|
209
|
-
`PipetteModel` are in the format of "p300_single_v1.0" or "p300_single_v3.3".
|
|
210
|
-
|
|
211
|
-
Sometimes, models may not have a version, in which case the `provided_version` arg
|
|
212
|
-
allows you to specify a version to search for.
|
|
213
|
-
|
|
214
|
-
Args:
|
|
215
|
-
model (PipetteModel): The pipette model we want to convert.
|
|
216
|
-
provided_version (str, Optional): The provided version we'd like to look for.
|
|
217
|
-
|
|
218
|
-
Returns:
|
|
219
|
-
PipetteModelVersionType: An object representing a broken out PipetteName
|
|
220
|
-
string.
|
|
221
|
-
|
|
222
|
-
"""
|
|
223
|
-
# TODO (lc 12-5-2022) This helper function is needed
|
|
224
|
-
# until we stop using "name" and "model" to refer
|
|
225
|
-
# to attached pipettes.
|
|
226
|
-
# We need to figure out how to default the pipette model as well
|
|
227
|
-
# rather than returning a p1000
|
|
228
|
-
if model and not provided_version:
|
|
229
|
-
pipette_type, parsed_channels, parsed_version = model.split("_")
|
|
230
|
-
channels = channels_from_string(parsed_channels)
|
|
231
|
-
version = version_from_string(parsed_version)
|
|
232
|
-
elif model and provided_version:
|
|
233
|
-
pipette_type, parsed_channels = model.split("_")
|
|
234
|
-
channels = channels_from_string(parsed_channels)
|
|
235
|
-
version = version_from_string(provided_version)
|
|
236
|
-
else:
|
|
237
|
-
pipette_type = DEFAULT_MODEL.value
|
|
238
|
-
channels = DEFAULT_CHANNELS
|
|
239
|
-
version = DEFAULT_MODEL_VERSION
|
|
240
|
-
return PipetteModelVersionType(PipetteModelType[pipette_type], channels, version)
|
|
File without changes
|