opentrons-shared-data 8.7.0a1__py3-none-any.whl → 8.7.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.

Potentially problematic release.


This version of opentrons-shared-data might be problematic. Click here for more details.

Files changed (65) hide show
  1. opentrons_shared_data/_version.py +2 -2
  2. opentrons_shared_data/data/command/schemas/14.json +5 -0
  3. opentrons_shared_data/data/command/schemas/15.json +7342 -0
  4. opentrons_shared_data/data/deck/definitions/5/ot2_short_trash.json +13 -0
  5. opentrons_shared_data/data/deck/definitions/5/ot2_standard.json +13 -0
  6. opentrons_shared_data/data/deck/definitions/5/ot3_standard.json +138 -69
  7. opentrons_shared_data/data/deck/schemas/5.json +7 -1
  8. opentrons_shared_data/data/errors/definitions/1/errors.json +4 -0
  9. opentrons_shared_data/data/labware/definitions/2/agilent_1_reservoir_290ml/4.json +80 -0
  10. opentrons_shared_data/data/labware/definitions/2/axygen_1_reservoir_90ml/3.json +72 -0
  11. opentrons_shared_data/data/labware/definitions/2/biorad_96_wellplate_200ul_pcr/5.json +1187 -0
  12. opentrons_shared_data/data/labware/definitions/2/corning_12_wellplate_6.9ml_flat/5.json +210 -0
  13. opentrons_shared_data/data/labware/definitions/2/corning_24_wellplate_3.4ml_flat/5.json +342 -0
  14. opentrons_shared_data/data/labware/definitions/2/corning_384_wellplate_112ul_flat/5.json +5116 -0
  15. opentrons_shared_data/data/labware/definitions/2/corning_48_wellplate_1.6ml_flat/6.json +610 -0
  16. opentrons_shared_data/data/labware/definitions/2/corning_6_wellplate_16.8ml_flat/5.json +134 -0
  17. opentrons_shared_data/data/labware/definitions/2/corning_96_wellplate_360ul_flat/5.json +1177 -0
  18. opentrons_shared_data/data/labware/definitions/2/nest_12_reservoir_15ml/3.json +226 -0
  19. opentrons_shared_data/data/labware/definitions/2/nest_1_reservoir_195ml/4.json +83 -0
  20. opentrons_shared_data/data/labware/definitions/2/nest_1_reservoir_290ml/4.json +80 -0
  21. opentrons_shared_data/data/labware/definitions/2/nest_96_wellplate_100ul_pcr_full_skirt/5.json +1166 -0
  22. opentrons_shared_data/data/labware/definitions/2/nest_96_wellplate_200ul_flat/5.json +1145 -0
  23. opentrons_shared_data/data/labware/definitions/2/nest_96_wellplate_2ml_deep/5.json +1261 -0
  24. opentrons_shared_data/data/labware/definitions/2/opentrons_10_tuberack_falcon_4x50ml_6x15ml_conical/3.json +232 -0
  25. opentrons_shared_data/data/labware/definitions/2/opentrons_15_tuberack_falcon_15ml_conical/3.json +259 -0
  26. opentrons_shared_data/data/labware/definitions/2/opentrons_24_aluminumblock_nest_0.5ml_screwcap/4.json +370 -0
  27. opentrons_shared_data/data/labware/definitions/2/opentrons_24_aluminumblock_nest_1.5ml_screwcap/3.json +356 -0
  28. opentrons_shared_data/data/labware/definitions/2/opentrons_24_aluminumblock_nest_1.5ml_snapcap/3.json +358 -0
  29. opentrons_shared_data/data/labware/definitions/2/opentrons_24_aluminumblock_nest_2ml_screwcap/3.json +350 -0
  30. opentrons_shared_data/data/labware/definitions/2/opentrons_24_aluminumblock_nest_2ml_snapcap/3.json +386 -0
  31. opentrons_shared_data/data/labware/definitions/2/opentrons_24_tuberack_eppendorf_1.5ml_safelock_snapcap/3.json +418 -0
  32. opentrons_shared_data/data/labware/definitions/2/opentrons_24_tuberack_eppendorf_2ml_safelock_snapcap/3.json +473 -0
  33. opentrons_shared_data/data/labware/definitions/2/opentrons_24_tuberack_nest_0.5ml_screwcap/4.json +371 -0
  34. opentrons_shared_data/data/labware/definitions/2/opentrons_6_tuberack_nest_50ml_conical/3.json +150 -0
  35. opentrons_shared_data/data/labware/definitions/2/opentrons_flex_tiprack_lid/1.json +1 -1
  36. opentrons_shared_data/data/labware/definitions/2/usascientific_12_reservoir_22ml/4.json +237 -0
  37. opentrons_shared_data/data/labware/definitions/2/usascientific_96_wellplate_2.4ml_deep/4.json +1243 -0
  38. opentrons_shared_data/data/labware/definitions/3/schema3test_96_wellplate_200ul_pcr_full_skirt/999.json +0 -27
  39. opentrons_shared_data/data/labware/definitions/3/schema3test_96_wellplate_360ul_flat/999.json +1189 -0
  40. opentrons_shared_data/data/labware/definitions/3/schema3test_tough_pcr_auto_sealing_lid/999.json +0 -47
  41. opentrons_shared_data/data/labware/definitions/3/schema3test_universal_flat_adapter/999.json +25 -5
  42. opentrons_shared_data/data/labware/schemas/2.json +1 -1
  43. opentrons_shared_data/data/labware/schemas/3.json +78 -0
  44. opentrons_shared_data/data/module/definitions/3/absorbanceReaderV1.json +6 -0
  45. opentrons_shared_data/data/module/definitions/3/flexStackerModuleV1.json +10 -0
  46. opentrons_shared_data/data/module/definitions/3/heaterShakerModuleV1.json +30 -1
  47. opentrons_shared_data/data/module/definitions/3/magneticBlockV1.json +14 -0
  48. opentrons_shared_data/data/module/definitions/3/magneticModuleV1.json +13 -0
  49. opentrons_shared_data/data/module/definitions/3/magneticModuleV2.json +13 -0
  50. opentrons_shared_data/data/module/definitions/3/temperatureModuleV1.json +13 -0
  51. opentrons_shared_data/data/module/definitions/3/temperatureModuleV2.json +21 -0
  52. opentrons_shared_data/data/module/definitions/3/thermocyclerModuleV1.json +3 -0
  53. opentrons_shared_data/data/module/definitions/3/thermocyclerModuleV2.json +4 -0
  54. opentrons_shared_data/data/module/schemas/3.json +24 -0
  55. opentrons_shared_data/deck/types.py +3 -1
  56. opentrons_shared_data/errors/codes.py +1 -0
  57. opentrons_shared_data/errors/exceptions.py +28 -1
  58. opentrons_shared_data/labware/labware_definition.py +1 -0
  59. opentrons_shared_data/labware/types.py +32 -0
  60. opentrons_shared_data/module/types.py +9 -1
  61. opentrons_shared_data/protocol/models/shared_models.py +1 -0
  62. {opentrons_shared_data-8.7.0a1.dist-info → opentrons_shared_data-8.7.0a2.dist-info}/METADATA +1 -1
  63. {opentrons_shared_data-8.7.0a1.dist-info → opentrons_shared_data-8.7.0a2.dist-info}/RECORD +65 -35
  64. {opentrons_shared_data-8.7.0a1.dist-info → opentrons_shared_data-8.7.0a2.dist-info}/WHEEL +0 -0
  65. {opentrons_shared_data-8.7.0a1.dist-info → opentrons_shared_data-8.7.0a2.dist-info}/licenses/LICENSE +0 -0
@@ -63,53 +63,6 @@
63
63
  "z": 0
64
64
  }
65
65
  },
66
- "stackingOffsetWithLabware": {
67
- "default": {
68
- "x": 0,
69
- "y": 0,
70
- "z": 8.193
71
- },
72
- "opentrons_tough_pcr_auto_sealing_lid": {
73
- "x": 0,
74
- "y": 0,
75
- "z": 6.492
76
- },
77
- "schema3test_tough_pcr_auto_sealing_lid": {
78
- "x": 0,
79
- "y": 0,
80
- "z": 6.492
81
- },
82
- "armadillo_96_wellplate_200ul_pcr_full_skirt": {
83
- "x": 0,
84
- "y": 0,
85
- "z": 8.193
86
- },
87
- "opentrons_96_wellplate_200ul_pcr_full_skirt": {
88
- "x": 0,
89
- "y": 0,
90
- "z": 8.193
91
- },
92
- "schema3test_96_wellplate_200ul_pcr_full_skirt": {
93
- "x": 0,
94
- "y": 0,
95
- "z": 8.193
96
- },
97
- "biorad_96_wellplate_200ul_pcr": {
98
- "x": 0,
99
- "y": 0,
100
- "z": 8.08
101
- },
102
- "opentrons_flex_deck_riser": {
103
- "x": 0,
104
- "y": 0,
105
- "z": 34
106
- },
107
- "protocol_engine_lid_stack_object": {
108
- "x": 0,
109
- "y": 0,
110
- "z": 0
111
- }
112
- },
113
66
  "stackLimit": 5,
114
67
  "compatibleParentLabware": [
115
68
  "armadillo_96_wellplate_200ul_pcr_full_skirt",
@@ -14,18 +14,38 @@
14
14
  "extents": {
15
15
  "total": {
16
16
  "backLeftBottom": {
17
- "x": 8.5,
18
- "y": -5.5,
17
+ "x": 0,
18
+ "y": 0,
19
19
  "z": 0
20
20
  },
21
21
  "frontRightTop": {
22
- "x": 119.5,
23
- "y": -80.5,
22
+ "x": 127.2,
23
+ "y": -74.8,
24
24
  "z": 12
25
25
  }
26
26
  }
27
27
  },
28
- "features": {},
28
+ "features": {
29
+ "heaterShakerUniversalFlatAdapter": {
30
+ "flatSupportThermalCouplingZ": 4.7,
31
+ "deckLeft": {
32
+ "wallX": 7.52,
33
+ "screwCenter": {
34
+ "x": 71.7,
35
+ "y": -37.4,
36
+ "z": 0
37
+ }
38
+ },
39
+ "deckRight": {
40
+ "wallX": -7.52,
41
+ "screwCenter": {
42
+ "x": 55.5,
43
+ "y": -37.4,
44
+ "z": 0
45
+ }
46
+ }
47
+ }
48
+ },
29
49
  "wells": {},
30
50
  "groups": [
31
51
  {
@@ -684,7 +684,7 @@
684
684
  },
685
685
  "stackingOffsetWithLabware": {
686
686
  "type": "object",
687
- "description": "Supported labware that can be stacked upon, with overlap height between both labware.",
687
+ "description": "Supported labware that this one can be stacked atop, with overlaps between both labware. x and y should always equal 0 to preserve intended behavior. z=0 means the bottom of this labware is at the top of the labware below it. +z moves this labware down.",
688
688
  "additionalProperties": {
689
689
  "$ref": "#/definitions/vector"
690
690
  }
@@ -700,6 +700,77 @@
700
700
  "type": "number"
701
701
  }
702
702
  }
703
+ },
704
+ "heaterShakerUniversalFlatAdapter": {
705
+ "description": "Designates this labware as the Opentrons Universal Flat Adapter",
706
+ "type": "object",
707
+ "required": ["flatSupportThermalCouplingZ", "deckLeft", "deckRight"],
708
+ "properties": {
709
+ "flatSupportThermalCouplingZ": {
710
+ "description": "The bottom of the labware to the top of the labware's surface that makes contact with a child labware's wells.",
711
+ "type": "number"
712
+ },
713
+ "deckLeft": {
714
+ "type": "object",
715
+ "required": ["wallX", "screwCenter"],
716
+ "properties": {
717
+ "wallX": {
718
+ "description": "The +x coordinate in mm from the edge of the labware's external protrusion to the interior of the `wall` when the labware is placed on the left side of the deck.",
719
+ "type": "number"
720
+ },
721
+ "screwCenter": {
722
+ "description": "The +x,-y,+z coordinate offset from the labware origin to the bottom center of the pilot hole when the labware is placed on the left side of the deck.",
723
+ "$ref": "#/definitions/vector3D"
724
+ }
725
+ }
726
+ },
727
+ "deckRight": {
728
+ "type": "object",
729
+ "required": ["wallX", "screwCenter"],
730
+ "properties": {
731
+ "wallX": {
732
+ "description": "The -x coordinate in mm from the edge of the labware's external protrusion to the interior of the `wall` when the labware is placed on the right side of the deck.",
733
+ "type": "number"
734
+ },
735
+ "screwCenter": {
736
+ "description": "The +x,-y,+z coordinate offset from the labware origin to the bottom center of the pilot hole when the labware is placed on the right side of the deck.",
737
+ "$ref": "#/definitions/vector3D"
738
+ }
739
+ }
740
+ }
741
+ }
742
+ },
743
+ "flatSupportThermalCouplingAsChild": {
744
+ "type": "object",
745
+ "required": ["wellExteriorBottomZ"],
746
+ "properties": {
747
+ "wellExteriorBottomZ": {
748
+ "description": "The +z-coordinate in mm from the bottom of the labware's exterior wells to the bottom of the labware.",
749
+ "type": "number"
750
+ }
751
+ }
752
+ },
753
+ "screwAnchoredAsParent": {
754
+ "description": "The labware provides a threaded hole into which a child deck item may be screwed securely.",
755
+ "type": "object",
756
+ "required": ["screwCenter"],
757
+ "properties": {
758
+ "screwCenter": {
759
+ "description": "The +x,-y,+z coordinate offset from the labware origin to the center of the threaded hole. The +z coordinate is zero by convention.",
760
+ "$ref": "#/definitions/vector3D"
761
+ }
762
+ }
763
+ },
764
+ "screwAnchoredAsChild": {
765
+ "description": "The labware contains a pilot hole through which the labware may be screwed securely to a parent deck item.",
766
+ "type": "object",
767
+ "required": ["screwCenter"],
768
+ "properties": {
769
+ "screwCenter": {
770
+ "description": "The +x,-y,+z coordinate offset from the labware origin to the center of the pilot hole. The +z coordinate is zero by convention.",
771
+ "$ref": "#/definitions/vector3D"
772
+ }
773
+ }
703
774
  }
704
775
  }
705
776
  },
@@ -778,6 +849,13 @@
778
849
  "$ref": "#/definitions/vector3D"
779
850
  }
780
851
  },
852
+ "legacyStackingOffsetWithLabware": {
853
+ "type": "object",
854
+ "description": "Legacy labware stacking offsets for Labware Schema 2 compatibility. See Labware Schema 2 `stackingOffsetWithLabware` documentation.",
855
+ "additionalProperties": {
856
+ "$ref": "#/definitions/vector3D"
857
+ }
858
+ },
781
859
  "stackingOffsetWithModule": {
782
860
  "type": "object",
783
861
  "description": "Supported module that can be stacked upon, with overlap height between labware and module.",
@@ -48,6 +48,12 @@
48
48
  "ot2_short_trash": {},
49
49
  "ot3_standard": {}
50
50
  },
51
+ "orientation": {
52
+ "A3": "right",
53
+ "B3": "right",
54
+ "C3": "right",
55
+ "D3": "right"
56
+ },
51
57
  "compatibleWith": [],
52
58
  "incompatibleWithDecks": ["ot2_standard", "ot2_short_trash"],
53
59
  "uniqueModuleData": {}
@@ -154,6 +154,16 @@
154
154
  }
155
155
  }
156
156
  },
157
+ "orientation": {
158
+ "A3": "right",
159
+ "A4": "right",
160
+ "B3": "right",
161
+ "B4": "right",
162
+ "C3": "right",
163
+ "C4": "right",
164
+ "D3": "right",
165
+ "D4": "right"
166
+ },
157
167
  "compatibleWith": [],
158
168
  "incompatibleWithDecks": ["ot2_standard", "ot2_short_trash"],
159
169
  "uniqueModuleData": {
@@ -7,7 +7,15 @@
7
7
  "y": 1.125,
8
8
  "z": 68.275
9
9
  },
10
- "features": {},
10
+ "features": {
11
+ "screwAnchoredAsParent": {
12
+ "screwCenter": {
13
+ "x": 64,
14
+ "y": 43,
15
+ "z": 0
16
+ }
17
+ }
18
+ },
11
19
  "dimensions": {
12
20
  "bareOverallHeight": 82,
13
21
  "overLabwareHeight": 0,
@@ -184,6 +192,27 @@
184
192
  }
185
193
  }
186
194
  },
195
+ "orientation": {
196
+ "1": "left",
197
+ "2": "center",
198
+ "3": "right",
199
+ "4": "left",
200
+ "5": "center",
201
+ "6": "right",
202
+ "7": "left",
203
+ "8": "center",
204
+ "9": "right",
205
+ "10": "left",
206
+ "11": "center",
207
+ "A1": "left",
208
+ "A3": "right",
209
+ "B1": "left",
210
+ "B3": "right",
211
+ "C1": "left",
212
+ "C3": "right",
213
+ "D1": "left",
214
+ "D3": "right"
215
+ },
187
216
  "compatibleWith": [],
188
217
  "incompatibleWithDecks": []
189
218
  }
@@ -64,6 +64,20 @@
64
64
  "ot2_short_trash": {},
65
65
  "ot3_standard": {}
66
66
  },
67
+ "orientation": {
68
+ "A1": "center",
69
+ "A2": "center",
70
+ "A3": "center",
71
+ "B1": "center",
72
+ "B2": "center",
73
+ "B3": "center",
74
+ "C1": "center",
75
+ "C2": "center",
76
+ "C3": "center",
77
+ "D1": "center",
78
+ "D2": "center",
79
+ "D3": "center"
80
+ },
67
81
  "compatibleWith": [],
68
82
  "incompatibleWithDecks": [],
69
83
  "uniqueModuleData": {}
@@ -48,6 +48,19 @@
48
48
  "displayName": "Magnetic Module GEN1",
49
49
  "quirks": [],
50
50
  "slotTransforms": {},
51
+ "orientation": {
52
+ "1": "left",
53
+ "2": "center",
54
+ "3": "right",
55
+ "4": "left",
56
+ "5": "center",
57
+ "6": "right",
58
+ "7": "left",
59
+ "8": "center",
60
+ "9": "right",
61
+ "10": "left",
62
+ "11": "center"
63
+ },
51
64
  "compatibleWith": [],
52
65
  "incompatibleWithDecks": ["ot3_standard"],
53
66
  "uniqueModuleData": {}
@@ -101,6 +101,19 @@
101
101
  }
102
102
  }
103
103
  },
104
+ "orientation": {
105
+ "1": "left",
106
+ "2": "center",
107
+ "3": "right",
108
+ "4": "left",
109
+ "5": "center",
110
+ "6": "right",
111
+ "7": "left",
112
+ "8": "center",
113
+ "9": "right",
114
+ "10": "left",
115
+ "11": "center"
116
+ },
104
117
  "compatibleWith": [],
105
118
  "incompatibleWithDecks": ["ot3_standard"],
106
119
  "uniqueModuleData": {}
@@ -49,6 +49,19 @@
49
49
  "displayName": "Temperature Module GEN1",
50
50
  "quirks": [],
51
51
  "slotTransforms": {},
52
+ "orientation": {
53
+ "1": "left",
54
+ "2": "center",
55
+ "3": "right",
56
+ "4": "left",
57
+ "5": "center",
58
+ "6": "right",
59
+ "7": "left",
60
+ "8": "center",
61
+ "9": "right",
62
+ "10": "left",
63
+ "11": "center"
64
+ },
52
65
  "compatibleWith": ["temperatureModuleV2"],
53
66
  "incompatibleWithDecks": ["ot3_standard"],
54
67
  "uniqueModuleData": {}
@@ -182,6 +182,27 @@
182
182
  }
183
183
  }
184
184
  },
185
+ "orientation": {
186
+ "1": "left",
187
+ "2": "center",
188
+ "3": "right",
189
+ "4": "left",
190
+ "5": "center",
191
+ "6": "right",
192
+ "7": "left",
193
+ "8": "center",
194
+ "9": "right",
195
+ "10": "left",
196
+ "11": "center",
197
+ "A1": "left",
198
+ "A3": "right",
199
+ "B1": "left",
200
+ "B3": "right",
201
+ "C1": "left",
202
+ "C3": "right",
203
+ "D1": "left",
204
+ "D3": "right"
205
+ },
185
206
  "compatibleWith": ["temperatureModuleV1"],
186
207
  "incompatibleWithDecks": [],
187
208
  "uniqueModuleData": {}
@@ -52,6 +52,9 @@
52
52
  "displayName": "Thermocycler Module GEN1",
53
53
  "quirks": [],
54
54
  "slotTransforms": {},
55
+ "orientation": {
56
+ "7": "left"
57
+ },
55
58
  "compatibleWith": ["thermocyclerModuleV1"],
56
59
  "incompatibleWithDecks": ["ot3_standard"],
57
60
  "uniqueModuleData": {}
@@ -83,6 +83,10 @@
83
83
  }
84
84
  }
85
85
  },
86
+ "orientation": {
87
+ "7": "left",
88
+ "B1": "left"
89
+ },
86
90
  "compatibleWith": [],
87
91
  "incompatibleWithDecks": [],
88
92
  "uniqueModuleData": {}
@@ -111,6 +111,7 @@
111
111
  "displayName",
112
112
  "quirks",
113
113
  "slotTransforms",
114
+ "orientation",
114
115
  "compatibleWith",
115
116
  "incompatibleWithDecks"
116
117
  ],
@@ -180,6 +181,17 @@
180
181
  "enum": ["backLeftBottom"]
181
182
  }
182
183
  }
184
+ },
185
+ "screwAnchoredAsParent": {
186
+ "description": "The module provides a threaded hole into which a child deck item may be screwed securely.",
187
+ "type": "object",
188
+ "required": ["screwCenter"],
189
+ "properties": {
190
+ "screwCenter": {
191
+ "description": "The +x,+y,+z coordinate offset measured from the module's X/Y labware interface dimension origin to the center of the threaded hole. The +z is 0 by convention. When the threaded hole is located in a spring-loaded plate, the z represents the top of the threaded hole when the plate is compressed.",
192
+ "$ref": "#/definitions/vector3D"
193
+ }
194
+ }
183
195
  }
184
196
  }
185
197
  },
@@ -297,6 +309,18 @@
297
309
  }
298
310
  }
299
311
  },
312
+ "orientation": {
313
+ "type": "object",
314
+ "description": "The orientation of the module when placed in a particular cutout id.",
315
+ "patternProperties": {
316
+ "^([1-9]|10|11|[A-D][1-4])$": {
317
+ "description": "The keys are the id of cutouts.",
318
+ "type": "string",
319
+ "enum": ["left", "right", "center"]
320
+ }
321
+ },
322
+ "additionalProperties": false
323
+ },
300
324
  "compatibleWith": {
301
325
  "type": "array",
302
326
  "items": {
@@ -7,7 +7,7 @@ This should only be imported if typing.TYPE_CHECKING is True
7
7
  from typing import Any, Dict, List, NewType, Union
8
8
  from typing_extensions import Literal, TypedDict
9
9
 
10
- from ..module.types import ModuleType
10
+ from ..module.types import ModuleType, ModuleOrientation
11
11
  from opentrons_shared_data.labware.types import LocatingFeatures
12
12
 
13
13
 
@@ -46,6 +46,7 @@ class SlotDefV3(TypedDict, total=False):
46
46
  compatibleModuleTypes: List[ModuleType]
47
47
  matingSurfaceUnitVector: List[Union[Literal[1], Literal[-1]]]
48
48
  features: LocatingFeatures
49
+ orientation: ModuleOrientation
49
50
 
50
51
 
51
52
  class CalibrationPoint(TypedDict):
@@ -112,6 +113,7 @@ class AddressableAreaV5(_RequiredAddressableArea, total=False):
112
113
  ableToDropTips: bool
113
114
  ableToDropLabware: bool
114
115
  features: LocatingFeatures
116
+ orientation: Union[ModuleOrientation, None]
115
117
 
116
118
 
117
119
  class Cutout(TypedDict):
@@ -98,6 +98,7 @@ class ErrorCodes(Enum):
98
98
  MISSING_CONFIGURATION_DATA = _code_from_dict_entry("4009")
99
99
  RUNTIME_PARAMETER_VALUE_REQUIRED = _code_from_dict_entry("4010")
100
100
  INCORRECT_API_VERSION = _code_from_dict_entry("4011")
101
+ LABWARE_LOCATING_FEATURE_ERROR = _code_from_dict_entry("4012")
101
102
 
102
103
  @classmethod
103
104
  @lru_cache(25)
@@ -1,6 +1,18 @@
1
1
  """Exception hierarchy for error codes."""
2
2
 
3
- from typing import Dict, Any, Optional, List, Iterator, Union, Sequence, overload
3
+ from __future__ import annotations
4
+ from typing import (
5
+ Dict,
6
+ Any,
7
+ Optional,
8
+ List,
9
+ Iterator,
10
+ Union,
11
+ Sequence,
12
+ overload,
13
+ Type,
14
+ TypeVar,
15
+ )
4
16
  from logging import getLogger
5
17
  from traceback import format_exception_only, format_tb
6
18
  import inspect
@@ -16,6 +28,18 @@ log = getLogger(__name__)
16
28
  class EnumeratedError(Exception):
17
29
  """The root class of error-code-bearing exceptions."""
18
30
 
31
+ @classmethod
32
+ def ensure(cls: Type[_ET], exception: Exception) -> _ET:
33
+ """Ensure that an exception is enumerated.
34
+
35
+ If the passed exception is an EnumeratedError, returns it; otherwise, wraps it in an appropriate
36
+ child class.
37
+ """
38
+ if isinstance(exception, cls):
39
+ return exception
40
+ else:
41
+ return PythonException(exception) # type: ignore[return-value]
42
+
19
43
  def __init__(
20
44
  self,
21
45
  code: ErrorCodes,
@@ -50,6 +74,9 @@ class EnumeratedError(Exception):
50
74
  )
51
75
 
52
76
 
77
+ _ET = TypeVar("_ET", bound=EnumeratedError, covariant=True)
78
+
79
+
53
80
  class CommunicationError(EnumeratedError):
54
81
  """An exception indicating an unknown communications error.
55
82
 
@@ -604,6 +604,7 @@ class LabwareDefinition3(BaseModel):
604
604
  wells: dict[str, WellDefinition3]
605
605
  groups: list[Group]
606
606
  stackingOffsetWithLabware: dict[str, Vector3D] = Field(default_factory=dict)
607
+ legacyStackingOffsetWithLabware: dict[str, Vector3D] = Field(default_factory=dict)
607
608
  stackingOffsetWithModule: dict[str, Vector3D] = Field(default_factory=dict)
608
609
  allowedRoles: list[LabwareRole] = Field(default_factory=list)
609
610
  gripperOffsets: dict[str, GripperOffsets] = Field(default_factory=dict)
@@ -180,6 +180,29 @@ class OpentronsFlexTipRackLidAsChildFeature(TypedDict):
180
180
  matingZ: float
181
181
 
182
182
 
183
+ class HeaterShakerUniversalFlatAdapterDeckSide(TypedDict):
184
+ wallX: float
185
+ screwCenter: Vector3D
186
+
187
+
188
+ class HeaterShakerUniversalFlatAdapterFeature(TypedDict):
189
+ flatSupportThermalCouplingZ: float
190
+ deckLeft: HeaterShakerUniversalFlatAdapterDeckSide
191
+ deckRight: HeaterShakerUniversalFlatAdapterDeckSide
192
+
193
+
194
+ class FlatSupportThermalCouplingAsChildFeature(TypedDict):
195
+ wellExteriorBottomZ: float
196
+
197
+
198
+ class ScrewAnchoredAsParentFeature(TypedDict):
199
+ screwCenter: Vector3D
200
+
201
+
202
+ class ScrewAnchoredAsChildFeature(TypedDict):
203
+ screwCenter: Vector3D
204
+
205
+
183
206
  class LocatingFeatures(TypedDict):
184
207
  """A dictionary of locating features."""
185
208
 
@@ -188,6 +211,14 @@ class LocatingFeatures(TypedDict):
188
211
  springDirectionalForceAsParent: NotRequired[SpringDirectionalForce]
189
212
  opentronsFlexTipRackLidAsParent: NotRequired[OpentronsFlexTipRackLidAsParentFeature]
190
213
  opentronsFlexTipRackLidAsChild: NotRequired[OpentronsFlexTipRackLidAsChildFeature]
214
+ heaterShakerUniversalFlatAdapter: NotRequired[
215
+ HeaterShakerUniversalFlatAdapterFeature
216
+ ]
217
+ flatSupportThermalCouplingAsChild: NotRequired[
218
+ FlatSupportThermalCouplingAsChildFeature
219
+ ]
220
+ screwAnchoredAsParent: NotRequired[ScrewAnchoredAsParentFeature]
221
+ screwAnchoredAsChild: NotRequired[ScrewAnchoredAsChildFeature]
191
222
 
192
223
 
193
224
  class LabwareDefinition2(TypedDict):
@@ -237,6 +268,7 @@ class LabwareDefinition3(_OTSharedSchemaMixin, TypedDict):
237
268
  wells: dict[str, WellDefinition3]
238
269
  groups: list[WellGroup]
239
270
  stackingOffsetWithLabware: NotRequired[dict[str, Vector3D]]
271
+ legacyStackingOffsetWithLabware: NotRequired[dict[str, Vector3D]]
240
272
  stackingOffsetWithModule: NotRequired[dict[str, Vector3D]]
241
273
  allowedRoles: NotRequired[list[LabwareRoles]]
242
274
  gripperOffsets: NotRequired[dict[str, GripperOffsets]]
@@ -2,7 +2,7 @@
2
2
  opentrons_shared_data.module.types: types requiring typing_extensions
3
3
  for modules
4
4
  """
5
-
5
+ import enum
6
6
  from typing import Any, Dict, List, Union
7
7
  from typing_extensions import Literal, TypedDict
8
8
 
@@ -112,6 +112,13 @@ class TOFSensorBaseline(TypedDict):
112
112
  Z: TOFBaseline
113
113
 
114
114
 
115
+ class ModuleOrientation(enum.Enum):
116
+ LEFT = "left"
117
+ RIGHT = "right"
118
+ CENTER = "center"
119
+ NOT_APPLICABLE = None
120
+
121
+
115
122
  # TODO(mc, 2022-03-18): potentially move from typed-dict to Pydantic
116
123
  ModuleDefinitionV3 = TypedDict(
117
124
  "ModuleDefinitionV3",
@@ -133,6 +140,7 @@ ModuleDefinitionV3 = TypedDict(
133
140
  "uniqueModuleData": Dict[str, Any],
134
141
  "incompatibleWithDecks": List[str],
135
142
  "gripperOffsets": Dict[str, GripperOffsets],
143
+ "orientation": Dict[str, str],
136
144
  },
137
145
  total=False,
138
146
  )
@@ -86,6 +86,7 @@ class Location(BaseModel):
86
86
  class ProfileStep(BaseModel):
87
87
  celsius: float
88
88
  holdSeconds: float
89
+ rampRate: float
89
90
 
90
91
 
91
92
  class WellLocation(BaseModel):
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: opentrons_shared_data
3
- Version: 8.7.0a1
3
+ Version: 8.7.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>