opentrons-shared-data 8.8.0a6__py3-none-any.whl → 9.0.0a2__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_shared_data/__init__.py +1 -2
- opentrons_shared_data/_version.py +2 -2
- opentrons_shared_data/command/__init__.py +6 -6
- opentrons_shared_data/data/command/schemas/16.json +7690 -0
- opentrons_shared_data/data/commandAnnotation/schemas/2.json +105 -0
- opentrons_shared_data/data/deck/definitions/5/ot3_standard.json +24 -0
- opentrons_shared_data/data/labware/definitions/2/black_96_well_microtiter_plate_lid/2.json +110 -0
- opentrons_shared_data/data/labware/definitions/2/corning_96_wellplate_360ul_lid/2.json +117 -0
- opentrons_shared_data/data/labware/definitions/2/corning_falcon_384_wellplate_130ul_flat_lid/2.json +118 -0
- opentrons_shared_data/data/labware/definitions/2/opentrons_tough_pcr_auto_sealing_lid/2.json +2 -2
- opentrons_shared_data/data/labware/definitions/2/thermofisher_nunc_maxisorp_lockwell_elisa/1.json +1168 -0
- opentrons_shared_data/data/liquid-class/definitions/1/water/3.json +7880 -0
- opentrons_shared_data/data/liquid-class/schemas/1.json +3 -0
- opentrons_shared_data/data/module/definitions/3/vacuumModuleMilliporeV1.json +70 -0
- opentrons_shared_data/data/module/schemas/3.json +3 -2
- opentrons_shared_data/data/pipette/definitions/2/general/eight_channel/p50/3_0.json +27 -9
- opentrons_shared_data/data/pipette/definitions/2/general/eight_channel/p50/3_3.json +27 -9
- opentrons_shared_data/data/pipette/definitions/2/general/eight_channel/p50/3_4.json +53 -15
- opentrons_shared_data/data/pipette/definitions/2/general/eight_channel/p50/3_5.json +53 -15
- opentrons_shared_data/data/pipette/definitions/2/general/ninety_six_channel/p200/3_0.json +154 -13
- opentrons_shared_data/data/pipette/definitions/2/general/ninety_six_channel/p200/3_1.json +187 -18
- opentrons_shared_data/data/pipette/definitions/2/general/ninety_six_channel/p200/3_2.json +187 -18
- opentrons_shared_data/data/pipette/definitions/2/general/single_channel/p50/3_0.json +2 -0
- opentrons_shared_data/data/pipette/definitions/2/general/single_channel/p50/3_3.json +2 -0
- opentrons_shared_data/data/pipette/definitions/2/general/single_channel/p50/3_4.json +4 -0
- opentrons_shared_data/data/pipette/definitions/2/general/single_channel/p50/3_5.json +4 -0
- opentrons_shared_data/data/pipette/definitions/2/general/single_channel/p50/3_6.json +4 -0
- opentrons_shared_data/data/pipette/definitions/2/geometry/single_channel/p1000/2_2.json +2 -2
- opentrons_shared_data/data/pipette/definitions/2/geometry/single_channel/p1000/3_5.json +4 -0
- opentrons_shared_data/data/pipette/definitions/2/geometry/single_channel/p20/2_2.json +2 -2
- opentrons_shared_data/data/pipette/definitions/2/geometry/single_channel/p300/2_1.json +2 -2
- opentrons_shared_data/data/pipette/definitions/2/liquid/eight_channel/p50/default/3_0.json +67 -0
- opentrons_shared_data/data/pipette/definitions/2/liquid/eight_channel/p50/default/3_3.json +68 -1
- opentrons_shared_data/data/pipette/definitions/2/liquid/eight_channel/p50/default/3_4.json +67 -0
- opentrons_shared_data/data/pipette/definitions/2/liquid/eight_channel/p50/default/3_5.json +2 -0
- opentrons_shared_data/data/pipette/definitions/2/liquid/eight_channel/p50/lowVolumeDefault/3_0.json +67 -2
- opentrons_shared_data/data/pipette/definitions/2/liquid/eight_channel/p50/lowVolumeDefault/3_3.json +67 -2
- opentrons_shared_data/data/pipette/definitions/2/liquid/eight_channel/p50/lowVolumeDefault/3_4.json +67 -2
- opentrons_shared_data/data/pipette/definitions/2/liquid/eight_channel/p50/lowVolumeDefault/3_5.json +4 -2
- opentrons_shared_data/data/pipette/definitions/2/liquid/ninety_six_channel/p200/default/3_0.json +2 -1
- opentrons_shared_data/data/pipette/definitions/2/liquid/single_channel/p50/default/3_0.json +68 -1
- opentrons_shared_data/data/pipette/definitions/2/liquid/single_channel/p50/default/3_3.json +68 -1
- opentrons_shared_data/data/pipette/definitions/2/liquid/single_channel/p50/default/3_4.json +68 -1
- opentrons_shared_data/data/pipette/definitions/2/liquid/single_channel/p50/default/3_5.json +3 -1
- opentrons_shared_data/data/pipette/definitions/2/liquid/single_channel/p50/default/3_6.json +3 -1
- opentrons_shared_data/data/pipette/definitions/2/liquid/single_channel/p50/lowVolumeDefault/3_0.json +67 -2
- opentrons_shared_data/data/pipette/definitions/2/liquid/single_channel/p50/lowVolumeDefault/3_3.json +67 -2
- opentrons_shared_data/data/pipette/definitions/2/liquid/single_channel/p50/lowVolumeDefault/3_4.json +67 -2
- opentrons_shared_data/data/pipette/definitions/2/liquid/single_channel/p50/lowVolumeDefault/3_5.json +4 -2
- opentrons_shared_data/data/pipette/definitions/2/liquid/single_channel/p50/lowVolumeDefault/3_6.json +4 -2
- opentrons_shared_data/data_files/__init__.py +5 -6
- opentrons_shared_data/data_files/types.py +4 -2
- opentrons_shared_data/deck/__init__.py +11 -13
- opentrons_shared_data/deck/types.py +2 -2
- opentrons_shared_data/errors/__init__.py +2 -2
- opentrons_shared_data/errors/categories.py +2 -3
- opentrons_shared_data/errors/codes.py +3 -3
- opentrons_shared_data/errors/exceptions.py +13 -13
- opentrons_shared_data/gripper/__init__.py +7 -5
- opentrons_shared_data/gripper/gripper_definition.py +6 -4
- opentrons_shared_data/labware/__init__.py +5 -8
- opentrons_shared_data/labware/constants.py +1 -1
- opentrons_shared_data/labware/labware_definition.py +15 -14
- opentrons_shared_data/labware/types.py +5 -2
- opentrons_shared_data/liquid_classes/__init__.py +3 -2
- opentrons_shared_data/liquid_classes/liquid_class_definition.py +47 -22
- opentrons_shared_data/liquid_classes/types.py +5 -1
- opentrons_shared_data/load.py +2 -2
- opentrons_shared_data/module/__init__.py +12 -14
- opentrons_shared_data/module/types.py +7 -1
- opentrons_shared_data/pipette/__init__.py +9 -8
- opentrons_shared_data/pipette/dev_types.py +3 -3
- opentrons_shared_data/pipette/file_operation_helpers.py +2 -2
- opentrons_shared_data/pipette/load_data.py +8 -10
- opentrons_shared_data/pipette/model_constants.py +4 -4
- opentrons_shared_data/pipette/mutable_configurations.py +20 -20
- opentrons_shared_data/pipette/pipette_definition.py +7 -5
- opentrons_shared_data/pipette/pipette_load_name_conversions.py +11 -10
- opentrons_shared_data/pipette/scripts/build_json_script.py +11 -13
- opentrons_shared_data/pipette/scripts/update_configuration_files.py +17 -18
- opentrons_shared_data/pipette/types.py +1 -2
- opentrons_shared_data/pipette/ul_per_mm.py +1 -1
- opentrons_shared_data/protocol/__init__.py +2 -1
- opentrons_shared_data/protocol/constants.py +25 -82
- opentrons_shared_data/protocol/models/__init__.py +11 -10
- opentrons_shared_data/protocol/models/protocol_schema_v6.py +10 -9
- opentrons_shared_data/protocol/models/protocol_schema_v7.py +9 -9
- opentrons_shared_data/protocol/models/protocol_schema_v8.py +10 -8
- opentrons_shared_data/protocol/models/shared_models.py +2 -1
- opentrons_shared_data/protocol/types.py +4 -3
- opentrons_shared_data/robot/__init__.py +3 -3
- opentrons_shared_data/robot/types.py +4 -2
- opentrons_shared_data/util/__init__.py +21 -0
- {opentrons_shared_data-8.8.0a6.dist-info → opentrons_shared_data-9.0.0a2.dist-info}/METADATA +2 -1
- {opentrons_shared_data-8.8.0a6.dist-info → opentrons_shared_data-9.0.0a2.dist-info}/RECORD +97 -88
- {opentrons_shared_data-8.8.0a6.dist-info → opentrons_shared_data-9.0.0a2.dist-info}/WHEEL +0 -0
- {opentrons_shared_data-8.8.0a6.dist-info → opentrons_shared_data-9.0.0a2.dist-info}/licenses/LICENSE +0 -0
|
@@ -1,31 +1,30 @@
|
|
|
1
1
|
import argparse
|
|
2
2
|
import csv
|
|
3
3
|
import json
|
|
4
|
+
import math
|
|
4
5
|
from ast import literal_eval
|
|
5
|
-
from typing import Optional, Dict, Union, Any, List
|
|
6
6
|
from pathlib import Path
|
|
7
|
+
from typing import Any, Dict, List, Optional, Union
|
|
8
|
+
|
|
7
9
|
from pydantic import BaseModel
|
|
8
|
-
import math
|
|
9
10
|
|
|
10
11
|
from ... import get_shared_data_root
|
|
11
12
|
from ..pipette_definition import (
|
|
13
|
+
AvailableSensorDefinition,
|
|
14
|
+
DropTipConfigurations,
|
|
15
|
+
MotorConfigurations,
|
|
16
|
+
PartialTipDefinition,
|
|
17
|
+
PickUpTipConfigurations,
|
|
12
18
|
PipetteGeometryDefinition,
|
|
13
19
|
PipetteLiquidPropertiesDefinition,
|
|
14
20
|
PipettePhysicalPropertiesDefinition,
|
|
21
|
+
PlungerEjectDropTipConfiguration,
|
|
15
22
|
PlungerPositions,
|
|
16
|
-
SupportedTipsDefinition,
|
|
17
|
-
MotorConfigurations,
|
|
18
|
-
PartialTipDefinition,
|
|
19
|
-
AvailableSensorDefinition,
|
|
20
|
-
PickUpTipConfigurations,
|
|
21
23
|
PressFitPickUpTipConfiguration,
|
|
22
|
-
|
|
23
|
-
PlungerEjectDropTipConfiguration,
|
|
24
|
+
SupportedTipsDefinition,
|
|
24
25
|
)
|
|
25
|
-
|
|
26
26
|
from ..types import PipetteModelSpec
|
|
27
27
|
|
|
28
|
-
|
|
29
28
|
PIPETTE_DEFINITION_ROOT = Path("pipette") / "definitions" / "2"
|
|
30
29
|
GEOMETRY_ROOT = get_shared_data_root() / PIPETTE_DEFINITION_ROOT / "geometry"
|
|
31
30
|
GENERAL_ROOT = get_shared_data_root() / PIPETTE_DEFINITION_ROOT / "general"
|
|
@@ -136,7 +135,7 @@ def _build_partial_tip_configurations(channels: int) -> PartialTipDefinition:
|
|
|
136
135
|
|
|
137
136
|
|
|
138
137
|
def build_geometry_model_v2(
|
|
139
|
-
input_dictionary: Dict[str, Any]
|
|
138
|
+
input_dictionary: Dict[str, Any],
|
|
140
139
|
) -> PipetteGeometryDefinition:
|
|
141
140
|
return PipetteGeometryDefinition.model_validate(input_dictionary)
|
|
142
141
|
|
|
@@ -288,7 +287,6 @@ def migrate_new_blow_out_configs_v2() -> None:
|
|
|
288
287
|
def fill_blowout_configs(
|
|
289
288
|
pipette_gen: int, shaft_diameters: Dict[str, float], volumes: List[str]
|
|
290
289
|
) -> None:
|
|
291
|
-
|
|
292
290
|
general_config_files = Path(GENERAL_ROOT).glob("*")
|
|
293
291
|
for pipette_type in general_config_files: # single, eight, 96-channel
|
|
294
292
|
for volume in volumes: # pipette max volume- p10, p20, p50, etc.
|
|
@@ -1,38 +1,36 @@
|
|
|
1
1
|
"""A script for updating pre-existing V2 Pipette configurations."""
|
|
2
2
|
|
|
3
|
-
import os
|
|
4
|
-
import json
|
|
5
3
|
import argparse
|
|
6
|
-
|
|
4
|
+
import json
|
|
5
|
+
import os
|
|
6
|
+
from enum import Enum
|
|
7
7
|
from pathlib import Path
|
|
8
|
-
from typing import
|
|
8
|
+
from typing import Any, Dict, Iterator, List, Tuple, Type
|
|
9
9
|
|
|
10
10
|
from pydantic import BaseModel
|
|
11
11
|
from pydantic.main import ModelMetaclass
|
|
12
|
-
from enum import Enum
|
|
13
|
-
|
|
14
|
-
from opentrons_shared_data import get_shared_data_root
|
|
15
12
|
|
|
13
|
+
from ..load_data import _geometry, _liquid, _physical
|
|
16
14
|
from ..pipette_definition import (
|
|
17
15
|
PipetteConfigurations,
|
|
18
16
|
PipetteGeometryDefinition,
|
|
19
|
-
PipettePhysicalPropertiesDefinition,
|
|
20
17
|
PipetteLiquidPropertiesDefinition,
|
|
21
18
|
PipetteModelVersionType,
|
|
19
|
+
PipettePhysicalPropertiesDefinition,
|
|
22
20
|
SupportedTipsDefinition,
|
|
23
21
|
)
|
|
22
|
+
from ..pipette_load_name_conversions import convert_pipette_model
|
|
24
23
|
from ..types import (
|
|
25
|
-
|
|
24
|
+
LiquidClasses,
|
|
26
25
|
PipetteChannelType,
|
|
27
|
-
|
|
28
|
-
PipetteTipType,
|
|
26
|
+
PipetteModel,
|
|
29
27
|
PipetteModelMajorVersion,
|
|
30
28
|
PipetteModelMinorVersion,
|
|
31
|
-
|
|
29
|
+
PipetteModelType,
|
|
30
|
+
PipetteTipType,
|
|
31
|
+
PipetteVersionType,
|
|
32
32
|
)
|
|
33
|
-
from
|
|
34
|
-
from ..pipette_load_name_conversions import convert_pipette_model
|
|
35
|
-
from ..types import PipetteModel
|
|
33
|
+
from opentrons_shared_data import get_shared_data_root
|
|
36
34
|
|
|
37
35
|
"""
|
|
38
36
|
Instructions:
|
|
@@ -166,7 +164,7 @@ def build_nozzle_map(
|
|
|
166
164
|
return {"A1": nozzle_offset}
|
|
167
165
|
elif channels == PipetteChannelType.EIGHT_CHANNEL:
|
|
168
166
|
return {
|
|
169
|
-
f"{chr(ord('A') + 1*row)}1": [
|
|
167
|
+
f"{chr(ord('A') + 1 * row)}1": [
|
|
170
168
|
nozzle_offset[0],
|
|
171
169
|
nozzle_offset[1] + Y_OFFSET * row,
|
|
172
170
|
nozzle_offset[2],
|
|
@@ -175,7 +173,7 @@ def build_nozzle_map(
|
|
|
175
173
|
}
|
|
176
174
|
elif channels == PipetteChannelType.NINETY_SIX_CHANNEL:
|
|
177
175
|
return {
|
|
178
|
-
f"{chr(ord('A') + 1*row)}{1 + 1*col}": [
|
|
176
|
+
f"{chr(ord('A') + 1 * row)}{1 + 1 * col}": [
|
|
179
177
|
nozzle_offset[0] + X_OFFSET * col,
|
|
180
178
|
nozzle_offset[1] + Y_OFFSET * row,
|
|
181
179
|
nozzle_offset[2],
|
|
@@ -210,7 +208,8 @@ def load_and_update_file_from_config(
|
|
|
210
208
|
value_to_update if value_to_update else geometry["nozzleOffset"]
|
|
211
209
|
)
|
|
212
210
|
geometry["nozzleMap"] = build_nozzle_map(
|
|
213
|
-
nozzle_to_use,
|
|
211
|
+
nozzle_to_use, # type: ignore[arg-type]
|
|
212
|
+
model_to_update.pipette_channels,
|
|
214
213
|
)
|
|
215
214
|
elif config_to_update[0] == "nozzle_offset":
|
|
216
215
|
geometry["nozzleMap"] = build_nozzle_map(
|
|
@@ -1,10 +1,9 @@
|
|
|
1
1
|
import enum
|
|
2
2
|
from dataclasses import dataclass
|
|
3
|
+
from typing import Dict, List, Mapping, NewType, Tuple, Union, cast
|
|
3
4
|
|
|
4
5
|
from pydantic import BaseModel
|
|
5
6
|
from typing_extensions import Literal, TypedDict
|
|
6
|
-
from typing import Dict, List, Mapping, NewType, Union, Tuple, cast
|
|
7
|
-
|
|
8
7
|
|
|
9
8
|
# TODO(mc, 2022-06-16): remove type alias when able
|
|
10
9
|
# and when certain removal will not break any pickling
|
|
@@ -1,98 +1,41 @@
|
|
|
1
|
-
from typing import TYPE_CHECKING
|
|
2
1
|
from enum import Enum
|
|
3
2
|
|
|
4
3
|
|
|
5
|
-
if TYPE_CHECKING:
|
|
6
|
-
from .types import (
|
|
7
|
-
DelayCommandId,
|
|
8
|
-
BlowoutCommandId,
|
|
9
|
-
PickUpTipCommandId,
|
|
10
|
-
DropTipCommandId,
|
|
11
|
-
AspirateCommandId,
|
|
12
|
-
DispenseCommandId,
|
|
13
|
-
TouchTipCommandId,
|
|
14
|
-
MoveToSlotCommandId,
|
|
15
|
-
AirGapCommandId,
|
|
16
|
-
MagneticModuleEngageCommandId,
|
|
17
|
-
MagneticModuleDisengageCommandId,
|
|
18
|
-
TemperatureModuleSetTargetCommandId,
|
|
19
|
-
TemperatureModuleAwaitCommandId,
|
|
20
|
-
TemperatureModuleDeactivateCommandId,
|
|
21
|
-
ThermocyclerSetTargetBlockCommandId,
|
|
22
|
-
ThermocyclerSetTargetLidCommandId,
|
|
23
|
-
ThermocyclerAwaitBlockTemperatureCommandId,
|
|
24
|
-
ThermocyclerAwaitLidTemperatureCommandId,
|
|
25
|
-
ThermocyclerOpenLidCommandId,
|
|
26
|
-
ThermocyclerCloseLidCommandId,
|
|
27
|
-
ThermocyclerDeactivateLidCommandId,
|
|
28
|
-
ThermocyclerDeactivateBlockCommandId,
|
|
29
|
-
ThermocyclerRunProfileCommandId,
|
|
30
|
-
ThermocyclerAwaitProfileCommandId,
|
|
31
|
-
MoveToWellCommandId,
|
|
32
|
-
)
|
|
33
|
-
|
|
34
|
-
|
|
35
4
|
class JsonPipetteCommand(Enum):
|
|
36
|
-
airGap
|
|
37
|
-
blowout
|
|
38
|
-
pickUpTip
|
|
39
|
-
dropTip
|
|
40
|
-
aspirate
|
|
41
|
-
dispense
|
|
42
|
-
touchTip
|
|
43
|
-
moveToSlot
|
|
44
|
-
moveToWell
|
|
5
|
+
airGap = "airGap"
|
|
6
|
+
blowout = "blowout"
|
|
7
|
+
pickUpTip = "pickUpTip"
|
|
8
|
+
dropTip = "dropTip"
|
|
9
|
+
aspirate = "aspirate"
|
|
10
|
+
dispense = "dispense"
|
|
11
|
+
touchTip = "touchTip"
|
|
12
|
+
moveToSlot = "moveToSlot"
|
|
13
|
+
moveToWell = "moveToWell"
|
|
45
14
|
|
|
46
15
|
|
|
47
16
|
class JsonRobotCommand(Enum):
|
|
48
|
-
delay
|
|
17
|
+
delay = "delay"
|
|
49
18
|
|
|
50
19
|
|
|
51
20
|
class JsonMagneticModuleCommand(Enum):
|
|
52
|
-
magneticModuleEngageMagnet
|
|
53
|
-
|
|
54
|
-
)
|
|
55
|
-
magneticModuleDisengageMagnet: "MagneticModuleDisengageCommandId" = (
|
|
56
|
-
"magneticModule/disengageMagnet"
|
|
57
|
-
)
|
|
21
|
+
magneticModuleEngageMagnet = "magneticModule/engageMagnet"
|
|
22
|
+
magneticModuleDisengageMagnet = "magneticModule/disengageMagnet"
|
|
58
23
|
|
|
59
24
|
|
|
60
25
|
class JsonTemperatureModuleCommand(Enum):
|
|
61
|
-
temperatureModuleSetTargetTemperature
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
temperatureModuleDeactivate: "TemperatureModuleDeactivateCommandId" = (
|
|
65
|
-
"temperatureModule/deactivate"
|
|
66
|
-
)
|
|
67
|
-
temperatureModuleAwaitTemperature: "TemperatureModuleAwaitCommandId" = (
|
|
68
|
-
"temperatureModule/awaitTemperature"
|
|
69
|
-
)
|
|
26
|
+
temperatureModuleSetTargetTemperature = "temperatureModule/setTargetTemperature"
|
|
27
|
+
temperatureModuleDeactivate = "temperatureModule/deactivate"
|
|
28
|
+
temperatureModuleAwaitTemperature = "temperatureModule/awaitTemperature"
|
|
70
29
|
|
|
71
30
|
|
|
72
31
|
class JsonThermocyclerCommand(Enum):
|
|
73
|
-
thermocyclerSetTargetBlockTemperature
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
"thermocycler/awaitLidTemperature"
|
|
84
|
-
)
|
|
85
|
-
thermocyclerOpenLid: "ThermocyclerOpenLidCommandId" = "thermocycler/openLid"
|
|
86
|
-
thermocyclerCloseLid: "ThermocyclerCloseLidCommandId" = "thermocycler/closeLid"
|
|
87
|
-
thermocyclerDeactivateBlock: "ThermocyclerDeactivateBlockCommandId" = (
|
|
88
|
-
"thermocycler/deactivateBlock"
|
|
89
|
-
)
|
|
90
|
-
thermocyclerDeactivateLid: "ThermocyclerDeactivateLidCommandId" = (
|
|
91
|
-
"thermocycler/deactivateLid"
|
|
92
|
-
)
|
|
93
|
-
thermocyclerRunProfile: "ThermocyclerRunProfileCommandId" = (
|
|
94
|
-
"thermocycler/runProfile"
|
|
95
|
-
)
|
|
96
|
-
thermocyclerAwaitProfileComplete: "ThermocyclerAwaitProfileCommandId" = (
|
|
97
|
-
"thermocycler/awaitProfileComplete"
|
|
98
|
-
)
|
|
32
|
+
thermocyclerSetTargetBlockTemperature = "thermocycler/setTargetBlockTemperature"
|
|
33
|
+
thermocyclerSetTargetLidTemperature = "thermocycler/setTargetLidTemperature"
|
|
34
|
+
thermocyclerAwaitBlockTemperature = "thermocycler/awaitBlockTemperature"
|
|
35
|
+
thermocyclerAwaitLidTemperature = "thermocycler/awaitLidTemperature"
|
|
36
|
+
thermocyclerOpenLid = "thermocycler/openLid"
|
|
37
|
+
thermocyclerCloseLid = "thermocycler/closeLid"
|
|
38
|
+
thermocyclerDeactivateBlock = "thermocycler/deactivateBlock"
|
|
39
|
+
thermocyclerDeactivateLid = "thermocycler/deactivateLid"
|
|
40
|
+
thermocyclerRunProfile = "thermocycler/runProfile"
|
|
41
|
+
thermocyclerAwaitProfileComplete = "thermocycler/awaitProfileComplete"
|
|
@@ -1,25 +1,26 @@
|
|
|
1
1
|
"""Protocol file reading interfaces."""
|
|
2
|
+
|
|
2
3
|
from . import protocol_schema_v6, protocol_schema_v7, protocol_schema_v8
|
|
3
4
|
from .protocol_schema_v6 import ProtocolSchemaV6
|
|
4
5
|
from .protocol_schema_v7 import ProtocolSchemaV7
|
|
5
|
-
from .protocol_schema_v8 import
|
|
6
|
+
from .protocol_schema_v8 import CommandSchemaId, ProtocolSchemaV8
|
|
6
7
|
from .shared_models import (
|
|
7
|
-
Liquid,
|
|
8
|
-
Labware,
|
|
9
8
|
CommandAnnotation,
|
|
10
|
-
|
|
11
|
-
ProfileStep,
|
|
12
|
-
WellLocation,
|
|
13
|
-
OffsetVector,
|
|
9
|
+
DesignerApplication,
|
|
14
10
|
Dimensions,
|
|
15
11
|
GroupMetadata,
|
|
16
|
-
|
|
17
|
-
|
|
12
|
+
Labware,
|
|
13
|
+
Liquid,
|
|
14
|
+
Location,
|
|
18
15
|
Metadata,
|
|
19
16
|
Module,
|
|
17
|
+
OffsetVector,
|
|
20
18
|
Pipette,
|
|
19
|
+
ProfileStep,
|
|
21
20
|
Robot,
|
|
22
|
-
|
|
21
|
+
Shape,
|
|
22
|
+
WellDefinition,
|
|
23
|
+
WellLocation,
|
|
23
24
|
)
|
|
24
25
|
|
|
25
26
|
__all__ = [
|
|
@@ -1,27 +1,28 @@
|
|
|
1
|
+
from typing import Any, Dict, List, Optional, Union
|
|
2
|
+
|
|
1
3
|
from pydantic import (
|
|
2
|
-
ConfigDict,
|
|
3
4
|
BaseModel,
|
|
5
|
+
ConfigDict,
|
|
4
6
|
Field,
|
|
5
7
|
model_validator,
|
|
6
8
|
)
|
|
7
|
-
from typing import Any, List, Optional, Dict, Union
|
|
8
9
|
from typing_extensions import Literal
|
|
9
|
-
from opentrons_shared_data.labware.labware_definition import LabwareDefinition2
|
|
10
10
|
|
|
11
11
|
from .shared_models import (
|
|
12
|
-
Liquid,
|
|
13
|
-
Labware,
|
|
14
12
|
CommandAnnotation,
|
|
13
|
+
DesignerApplication,
|
|
14
|
+
Labware,
|
|
15
|
+
Liquid,
|
|
15
16
|
Location,
|
|
16
|
-
ProfileStep,
|
|
17
|
-
WellLocation,
|
|
18
|
-
OffsetVector,
|
|
19
17
|
Metadata,
|
|
20
18
|
Module,
|
|
19
|
+
OffsetVector,
|
|
21
20
|
Pipette,
|
|
21
|
+
ProfileStep,
|
|
22
22
|
Robot,
|
|
23
|
-
|
|
23
|
+
WellLocation,
|
|
24
24
|
)
|
|
25
|
+
from opentrons_shared_data.labware.labware_definition import LabwareDefinition2
|
|
25
26
|
|
|
26
27
|
|
|
27
28
|
# TODO (tamar 3/15/22): split apart all the command payloads when we tackle #9583
|
|
@@ -1,20 +1,20 @@
|
|
|
1
|
-
from
|
|
2
|
-
from typing import Any, List, Optional, Dict, Union
|
|
3
|
-
from typing_extensions import Literal
|
|
1
|
+
from typing import Any, Dict, List, Optional, Union
|
|
4
2
|
|
|
5
|
-
from
|
|
3
|
+
from pydantic import BaseModel, ConfigDict, Field
|
|
4
|
+
from typing_extensions import Literal
|
|
6
5
|
|
|
7
6
|
from .shared_models import (
|
|
8
|
-
Liquid,
|
|
9
7
|
CommandAnnotation,
|
|
8
|
+
DesignerApplication,
|
|
9
|
+
Liquid,
|
|
10
10
|
Location,
|
|
11
|
-
ProfileStep,
|
|
12
|
-
WellLocation,
|
|
13
|
-
OffsetVector,
|
|
14
11
|
Metadata,
|
|
12
|
+
OffsetVector,
|
|
13
|
+
ProfileStep,
|
|
15
14
|
Robot,
|
|
16
|
-
|
|
15
|
+
WellLocation,
|
|
17
16
|
)
|
|
17
|
+
from opentrons_shared_data.labware.labware_definition import LabwareDefinition2
|
|
18
18
|
|
|
19
19
|
|
|
20
20
|
# TODO (tamar 3/15/22): split apart all the command payloads when we tackle #9583
|
|
@@ -1,18 +1,17 @@
|
|
|
1
1
|
from enum import Enum
|
|
2
|
-
from typing import Any, List, Optional,
|
|
3
|
-
from typing_extensions import Literal
|
|
4
|
-
|
|
5
|
-
from pydantic import BaseModel, Field, ConfigDict
|
|
2
|
+
from typing import Any, Dict, List, Optional, Union
|
|
6
3
|
|
|
7
|
-
from
|
|
8
|
-
from
|
|
4
|
+
from pydantic import BaseModel, ConfigDict, Field
|
|
5
|
+
from typing_extensions import Literal
|
|
9
6
|
|
|
10
7
|
from .shared_models import (
|
|
8
|
+
DesignerApplication,
|
|
11
9
|
Liquid,
|
|
12
10
|
Metadata,
|
|
13
|
-
DesignerApplication,
|
|
14
11
|
Robot,
|
|
15
12
|
)
|
|
13
|
+
from opentrons_shared_data.command import known_schema_ids
|
|
14
|
+
from opentrons_shared_data.labware.labware_definition import LabwareDefinition
|
|
16
15
|
|
|
17
16
|
|
|
18
17
|
class Command(BaseModel):
|
|
@@ -50,7 +49,10 @@ class ProtocolSchemaV8(BaseModel):
|
|
|
50
49
|
labwareDefinitions: Dict[str, LabwareDefinition]
|
|
51
50
|
commandSchemaId: CommandSchemaId
|
|
52
51
|
commands: List[Command]
|
|
53
|
-
commandAnnotationSchemaId:
|
|
52
|
+
commandAnnotationSchemaId: Union[
|
|
53
|
+
Literal["opentronsCommandAnnotationSchemaV1"],
|
|
54
|
+
Literal["opentronsCommandAnnotationSchemaV2"],
|
|
55
|
+
]
|
|
54
56
|
commandAnnotations: List[CommandAnnotation]
|
|
55
57
|
designerApplication: Optional[DesignerApplication] = None
|
|
56
58
|
model_config = ConfigDict(populate_by_name=True)
|
|
@@ -2,13 +2,14 @@
|
|
|
2
2
|
opentrons_shared_data.protocol.types: types for json protocols
|
|
3
3
|
"""
|
|
4
4
|
|
|
5
|
-
from typing import Any, Dict, List, Optional, Union
|
|
6
5
|
from enum import Enum
|
|
6
|
+
from typing import Any, Dict, List, Optional, Union
|
|
7
|
+
|
|
8
|
+
from typing_extensions import Literal, TypedDict
|
|
7
9
|
|
|
8
|
-
from typing_extensions import TypedDict, Literal
|
|
9
|
-
from ..pipette.types import PipetteName
|
|
10
10
|
from ..labware.types import LabwareDefinition2
|
|
11
11
|
from ..module.types import ModuleModel
|
|
12
|
+
from ..pipette.types import PipetteName
|
|
12
13
|
|
|
13
14
|
SlotSpan = Literal["span7_8_10_11"]
|
|
14
15
|
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
"""opentrons_shared_data.robot: Submodule for handling robot definition data."""
|
|
2
|
+
|
|
3
|
+
import json
|
|
2
4
|
from pathlib import Path
|
|
3
5
|
from typing import cast
|
|
4
|
-
from typing_extensions import Final
|
|
5
6
|
|
|
6
|
-
import
|
|
7
|
+
from typing_extensions import Final
|
|
7
8
|
|
|
8
9
|
from .. import get_shared_data_root
|
|
9
|
-
|
|
10
10
|
from .types import RobotDefinition, RobotType
|
|
11
11
|
|
|
12
12
|
DEFAULT_ROBOT_DEFINITION_VERSION: Final = 1
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
"""opentrons_shared_data.robot.types: types for robot def."""
|
|
2
|
+
|
|
2
3
|
import enum
|
|
3
|
-
from typing import
|
|
4
|
-
|
|
4
|
+
from typing import Any, Dict, List, NewType
|
|
5
|
+
|
|
6
|
+
from typing_extensions import Literal, NotRequired, TypedDict
|
|
5
7
|
|
|
6
8
|
RobotSchemaVersion1 = Literal[1]
|
|
7
9
|
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"""Cross-package utilities."""
|
|
2
|
+
|
|
3
|
+
# Python 3.11 changed the string serialization of string based enums
|
|
4
|
+
# to always include the enumerator name; it previously did not. This
|
|
5
|
+
# is more consistent but also breaks our usage of string based enums.
|
|
6
|
+
# The replacement class StrEnum has the old behavior, but it's not
|
|
7
|
+
# available below 3.11. Here's a polyfill that makes it all better.
|
|
8
|
+
try:
|
|
9
|
+
from enum import StrEnum
|
|
10
|
+
except ImportError:
|
|
11
|
+
from enum import Enum
|
|
12
|
+
|
|
13
|
+
class StrEnum(str, Enum): # type: ignore[no-redef]
|
|
14
|
+
"""Replacement for 3.11 style StrEnum in <3.11."""
|
|
15
|
+
|
|
16
|
+
def __format__(self, spec: str) -> str:
|
|
17
|
+
"""Build an fstring without the enumerator class name."""
|
|
18
|
+
return str.__format__(str(self.name), spec)
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
__all__ = ["StrEnum"]
|
{opentrons_shared_data-8.8.0a6.dist-info → opentrons_shared_data-9.0.0a2.dist-info}/METADATA
RENAMED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: opentrons_shared_data
|
|
3
|
-
Version:
|
|
3
|
+
Version: 9.0.0a2
|
|
4
4
|
Summary: A bundle of data and python binding that supports the Opentrons API.Does not need to be installed manually; only a dependency of the opentrons package
|
|
5
5
|
Project-URL: Source Code, https://github.com/Opentrons/opentrons
|
|
6
6
|
Author-email: Opentrons <engineering@opentrons.com>
|
|
@@ -17,5 +17,6 @@ Classifier: Programming Language :: Python :: 3.10
|
|
|
17
17
|
Classifier: Topic :: Scientific/Engineering
|
|
18
18
|
Requires-Python: >=3.10
|
|
19
19
|
Requires-Dist: jsonschema<5,>=4.0.0
|
|
20
|
+
Requires-Dist: numpy~=1.26.4
|
|
20
21
|
Requires-Dist: pydantic<3.0.0,>=2.0.0
|
|
21
22
|
Requires-Dist: typing-extensions<5,>=4.0.0
|