opentrons-shared-data 8.7.0a11__py3-none-any.whl → 8.8.0a6__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.
Files changed (115) hide show
  1. opentrons_shared_data/_version.py +2 -2
  2. opentrons_shared_data/data/command/schemas/10.json +1 -1
  3. opentrons_shared_data/data/command/schemas/11.json +1 -1
  4. opentrons_shared_data/data/command/schemas/12.json +1 -1
  5. opentrons_shared_data/data/command/schemas/13.json +1 -1
  6. opentrons_shared_data/data/command/schemas/14.json +6 -1
  7. opentrons_shared_data/data/command/schemas/15.json +7676 -0
  8. opentrons_shared_data/data/command/schemas/8.json +1 -1
  9. opentrons_shared_data/data/command/schemas/9.json +1 -1
  10. opentrons_shared_data/data/deck/definitions/5/ot2_short_trash.json +13 -0
  11. opentrons_shared_data/data/deck/definitions/5/ot2_standard.json +13 -0
  12. opentrons_shared_data/data/deck/definitions/5/ot3_standard.json +138 -69
  13. opentrons_shared_data/data/deck/schemas/5.json +7 -1
  14. opentrons_shared_data/data/errors/definitions/1/errors.json +8 -0
  15. opentrons_shared_data/data/labware/definitions/2/agilent_1_reservoir_290ml/4.json +80 -0
  16. opentrons_shared_data/data/labware/definitions/2/axygen_1_reservoir_90ml/3.json +72 -0
  17. opentrons_shared_data/data/labware/definitions/2/biorad_96_wellplate_200ul_pcr/5.json +1187 -0
  18. opentrons_shared_data/data/labware/definitions/2/black_96_well_microtiter_plate_lid/1.json +1 -1
  19. opentrons_shared_data/data/labware/definitions/2/corning_12_wellplate_6.9ml_flat/5.json +210 -0
  20. opentrons_shared_data/data/labware/definitions/2/corning_24_wellplate_3.4ml_flat/5.json +342 -0
  21. opentrons_shared_data/data/labware/definitions/2/corning_384_wellplate_112ul_flat/5.json +5116 -0
  22. opentrons_shared_data/data/labware/definitions/2/corning_48_wellplate_1.6ml_flat/6.json +610 -0
  23. opentrons_shared_data/data/labware/definitions/2/corning_6_wellplate_16.8ml_flat/5.json +134 -0
  24. opentrons_shared_data/data/labware/definitions/2/corning_96_wellplate_330ul/1.json +1170 -0
  25. opentrons_shared_data/data/labware/definitions/2/corning_96_wellplate_360ul_flat/5.json +1177 -0
  26. opentrons_shared_data/data/labware/definitions/2/corning_falcon_384_wellplate_130ul_flat/1.json +5147 -0
  27. opentrons_shared_data/data/labware/definitions/2/corning_falcon_384_wellplate_130ul_flat_lid/1.json +118 -0
  28. opentrons_shared_data/data/labware/definitions/2/costar_96_wellplate_2.2ml/1.json +1372 -0
  29. opentrons_shared_data/data/labware/definitions/2/eppendorf_384_wellplate_45ul/1.json +4758 -0
  30. opentrons_shared_data/data/labware/definitions/2/eppendorf_96_wellplate_150ul/1.json +1184 -0
  31. opentrons_shared_data/data/labware/definitions/2/eppendorf_96_wellplate_2000ul/1.json +1395 -0
  32. opentrons_shared_data/data/labware/definitions/2/eppendorf_96_wellplate_2000ul_lobind/1.json +1395 -0
  33. opentrons_shared_data/data/labware/definitions/2/eppendorf_96_wellplate_350ul_lobind/1.json +1184 -0
  34. opentrons_shared_data/data/labware/definitions/2/eppendorf_96_wellplate_500ul/1.json +1170 -0
  35. opentrons_shared_data/data/labware/definitions/2/eppendorf_96_wellplate_500ul_lobind/1.json +1170 -0
  36. opentrons_shared_data/data/labware/definitions/2/greiner_384_wellplate_240ul/1.json +5209 -0
  37. opentrons_shared_data/data/labware/definitions/2/greiner_96_wellplate_323ul/1.json +1197 -0
  38. opentrons_shared_data/data/labware/definitions/2/greiner_96_wellplate_340ul_chimney/1.json +1166 -0
  39. opentrons_shared_data/data/labware/definitions/2/greiner_96_wellplate_382ul/1.json +1156 -0
  40. opentrons_shared_data/data/labware/definitions/2/nest_12_reservoir_15ml/3.json +226 -0
  41. opentrons_shared_data/data/labware/definitions/2/nest_1_reservoir_195ml/4.json +83 -0
  42. opentrons_shared_data/data/labware/definitions/2/nest_1_reservoir_290ml/4.json +80 -0
  43. opentrons_shared_data/data/labware/definitions/2/nest_96_wellplate_100ul_pcr_full_skirt/5.json +1166 -0
  44. opentrons_shared_data/data/labware/definitions/2/nest_96_wellplate_200ul_flat/5.json +1145 -0
  45. opentrons_shared_data/data/labware/definitions/2/nest_96_wellplate_2ml_deep/5.json +1261 -0
  46. opentrons_shared_data/data/labware/definitions/2/nunc_384_wellplate_100ul/1.json +5136 -0
  47. opentrons_shared_data/data/labware/definitions/2/nunc_96_wellplate_450ul/1.json +1159 -0
  48. opentrons_shared_data/data/labware/definitions/2/opentrons_10_tuberack_falcon_4x50ml_6x15ml_conical/3.json +232 -0
  49. opentrons_shared_data/data/labware/definitions/2/opentrons_15_tuberack_eppendorf_15ml_conical/1.json +314 -0
  50. opentrons_shared_data/data/labware/definitions/2/opentrons_15_tuberack_falcon_15ml_conical/3.json +259 -0
  51. opentrons_shared_data/data/labware/definitions/2/opentrons_24_aluminumblock_nest_0.5ml_screwcap/4.json +370 -0
  52. opentrons_shared_data/data/labware/definitions/2/opentrons_24_aluminumblock_nest_1.5ml_screwcap/3.json +356 -0
  53. opentrons_shared_data/data/labware/definitions/2/opentrons_24_aluminumblock_nest_1.5ml_snapcap/3.json +358 -0
  54. opentrons_shared_data/data/labware/definitions/2/opentrons_24_aluminumblock_nest_2ml_screwcap/3.json +350 -0
  55. opentrons_shared_data/data/labware/definitions/2/opentrons_24_aluminumblock_nest_2ml_snapcap/3.json +386 -0
  56. opentrons_shared_data/data/labware/definitions/2/opentrons_24_tuberack_eppendorf_1.5ml_safelock_snapcap/3.json +418 -0
  57. opentrons_shared_data/data/labware/definitions/2/opentrons_24_tuberack_eppendorf_2ml_safelock_snapcap/3.json +473 -0
  58. opentrons_shared_data/data/labware/definitions/2/opentrons_24_tuberack_nest_0.5ml_screwcap/4.json +371 -0
  59. opentrons_shared_data/data/labware/definitions/2/opentrons_6_tuberack_nest_50ml_conical/3.json +150 -0
  60. opentrons_shared_data/data/labware/definitions/2/opentrons_flex_tiprack_lid/1.json +1 -1
  61. opentrons_shared_data/data/labware/definitions/2/opentrons_tough_universal_lid/1.json +5 -0
  62. opentrons_shared_data/data/labware/definitions/2/opentrons_tough_universal_lid/2.json +101 -0
  63. opentrons_shared_data/data/labware/definitions/2/thermoscientific_96_wellplate_800ul/1.json +1194 -0
  64. opentrons_shared_data/data/labware/definitions/2/thermoscientific_abgene_96_wellplate_1.2ml/1.json +1314 -0
  65. opentrons_shared_data/data/labware/definitions/2/usascientific_12_reservoir_22ml/4.json +237 -0
  66. opentrons_shared_data/data/labware/definitions/2/usascientific_96_wellplate_2.4ml_deep/4.json +1243 -0
  67. opentrons_shared_data/data/labware/definitions/3/schema3test_96_wellplate_200ul_pcr_full_skirt/999.json +0 -27
  68. opentrons_shared_data/data/labware/definitions/3/schema3test_96_wellplate_360ul_flat/999.json +1189 -0
  69. opentrons_shared_data/data/labware/definitions/3/schema3test_tough_pcr_auto_sealing_lid/999.json +0 -47
  70. opentrons_shared_data/data/labware/definitions/3/schema3test_universal_flat_adapter/999.json +25 -5
  71. opentrons_shared_data/data/labware/schemas/2.json +1 -1
  72. opentrons_shared_data/data/labware/schemas/3.json +78 -0
  73. opentrons_shared_data/data/module/definitions/3/absorbanceReaderV1.json +6 -0
  74. opentrons_shared_data/data/module/definitions/3/flexStackerModuleV1.json +10 -93
  75. opentrons_shared_data/data/module/definitions/3/heaterShakerModuleV1.json +30 -1
  76. opentrons_shared_data/data/module/definitions/3/magneticBlockV1.json +14 -0
  77. opentrons_shared_data/data/module/definitions/3/magneticModuleV1.json +13 -0
  78. opentrons_shared_data/data/module/definitions/3/magneticModuleV2.json +13 -0
  79. opentrons_shared_data/data/module/definitions/3/temperatureModuleV1.json +13 -0
  80. opentrons_shared_data/data/module/definitions/3/temperatureModuleV2.json +21 -0
  81. opentrons_shared_data/data/module/definitions/3/thermocyclerModuleV1.json +3 -0
  82. opentrons_shared_data/data/module/definitions/3/thermocyclerModuleV2.json +4 -0
  83. opentrons_shared_data/data/module/schemas/3.json +24 -0
  84. opentrons_shared_data/data/pipette/definitions/2/geometry/ninety_six_channel/p1000/3_0.json +1 -1
  85. opentrons_shared_data/data/pipette/definitions/2/geometry/ninety_six_channel/p1000/3_3.json +1 -1
  86. opentrons_shared_data/data/pipette/definitions/2/geometry/ninety_six_channel/p1000/3_4.json +1 -1
  87. opentrons_shared_data/data/pipette/definitions/2/geometry/ninety_six_channel/p1000/3_5.json +1 -1
  88. opentrons_shared_data/data/pipette/definitions/2/geometry/ninety_six_channel/p1000/3_6.json +1 -1
  89. opentrons_shared_data/data/pipette/definitions/2/geometry/ninety_six_channel/p200/3_0.json +1 -1
  90. opentrons_shared_data/data/pipette/definitions/2/geometry/ninety_six_channel/p200/3_1.json +1 -1
  91. opentrons_shared_data/data/pipette/definitions/2/geometry/ninety_six_channel/p200/3_2.json +1 -1
  92. opentrons_shared_data/data/pipette/definitions/2/geometry/single_channel/p1000/3_0.json +2 -2
  93. opentrons_shared_data/data/pipette/definitions/2/geometry/single_channel/p1000/3_3.json +2 -2
  94. opentrons_shared_data/data/pipette/definitions/2/geometry/single_channel/p1000/3_4.json +2 -2
  95. opentrons_shared_data/data/pipette/definitions/2/geometry/single_channel/p1000/3_5.json +2 -2
  96. opentrons_shared_data/data/pipette/definitions/2/geometry/single_channel/p1000/3_6.json +2 -2
  97. opentrons_shared_data/data/pipette/definitions/2/geometry/single_channel/p1000/3_7.json +2 -2
  98. opentrons_shared_data/data/pipette/definitions/2/geometry/single_channel/p50/3_0.json +2 -2
  99. opentrons_shared_data/data/pipette/definitions/2/geometry/single_channel/p50/3_3.json +2 -2
  100. opentrons_shared_data/data/pipette/definitions/2/geometry/single_channel/p50/3_4.json +2 -2
  101. opentrons_shared_data/data/pipette/definitions/2/geometry/single_channel/p50/3_5.json +2 -2
  102. opentrons_shared_data/data/pipette/definitions/2/geometry/single_channel/p50/3_6.json +2 -2
  103. opentrons_shared_data/data_files/__init__.py +26 -0
  104. opentrons_shared_data/data_files/types.py +84 -0
  105. opentrons_shared_data/deck/types.py +3 -1
  106. opentrons_shared_data/errors/codes.py +2 -0
  107. opentrons_shared_data/errors/exceptions.py +28 -1
  108. opentrons_shared_data/labware/labware_definition.py +1 -0
  109. opentrons_shared_data/labware/types.py +32 -0
  110. opentrons_shared_data/module/types.py +9 -1
  111. opentrons_shared_data/protocol/models/shared_models.py +1 -0
  112. {opentrons_shared_data-8.7.0a11.dist-info → opentrons_shared_data-8.8.0a6.dist-info}/METADATA +1 -1
  113. {opentrons_shared_data-8.7.0a11.dist-info → opentrons_shared_data-8.8.0a6.dist-info}/RECORD +115 -62
  114. {opentrons_shared_data-8.7.0a11.dist-info → opentrons_shared_data-8.8.0a6.dist-info}/WHEEL +0 -0
  115. {opentrons_shared_data-8.7.0a11.dist-info → opentrons_shared_data-8.8.0a6.dist-info}/licenses/LICENSE +0 -0
@@ -3,8 +3,8 @@
3
3
  "pathTo3D": "pipette/definitions/2/geometry/single_channel/p1000/placeholder.gltf",
4
4
  "nozzleOffset": [-8.0, -22.0, -259.15],
5
5
  "pipetteBoundingBoxOffsets": {
6
- "backLeftCorner": [-8.0, -22.0, -259.15],
7
- "frontRightCorner": [-8.0, -22.0, -259.15]
6
+ "backLeftCorner": [-38.0, 0.0, -259.15],
7
+ "frontRightCorner": [11.5, -64.0, -259.15]
8
8
  },
9
9
  "orderedRows": [{ "key": "A", "orderedNozzles": ["A1"] }],
10
10
  "orderedColumns": [{ "key": "1", "orderedNozzles": ["A1"] }],
@@ -3,8 +3,8 @@
3
3
  "pathTo3D": "pipette/definitions/2/geometry/single_channel/p1000/placeholder.gltf",
4
4
  "nozzleOffset": [-8.0, -22.0, -259.15],
5
5
  "pipetteBoundingBoxOffsets": {
6
- "backLeftCorner": [-8.0, -22.0, -259.15],
7
- "frontRightCorner": [-8.0, -22.0, -259.15]
6
+ "backLeftCorner": [-38.0, 0.0, -259.15],
7
+ "frontRightCorner": [11.5, -64.0, -259.15]
8
8
  },
9
9
  "orderedRows": [{ "key": "A", "orderedNozzles": ["A1"] }],
10
10
  "orderedColumns": [{ "key": "1", "orderedNozzles": ["A1"] }],
@@ -3,8 +3,8 @@
3
3
  "pathTo3D": "pipette/definitions/2/geometry/single_channel/p1000/placeholder.gltf",
4
4
  "nozzleOffset": [-8.0, -22.0, -259.15],
5
5
  "pipetteBoundingBoxOffsets": {
6
- "backLeftCorner": [-8.0, -22.0, -259.15],
7
- "frontRightCorner": [-8.0, -22.0, -259.15]
6
+ "backLeftCorner": [-38.0, 0.0, -259.15],
7
+ "frontRightCorner": [11.5, -64.0, -259.15]
8
8
  },
9
9
  "orderedRows": [{ "key": "A", "orderedNozzles": ["A1"] }],
10
10
  "orderedColumns": [{ "key": "1", "orderedNozzles": ["A1"] }],
@@ -3,8 +3,8 @@
3
3
  "pathTo3D": "pipette/definitions/2/geometry/single_channel/p50/placeholder.gltf",
4
4
  "nozzleOffset": [-8.0, -22.0, -259.15],
5
5
  "pipetteBoundingBoxOffsets": {
6
- "backLeftCorner": [-8.0, -22.0, -259.15],
7
- "frontRightCorner": [-8.0, -22.0, -259.15]
6
+ "backLeftCorner": [-38.0, 0.0, -259.15],
7
+ "frontRightCorner": [11.5, -64.0, -259.15]
8
8
  },
9
9
  "orderedRows": [{ "key": "A", "orderedNozzles": ["A1"] }],
10
10
  "orderedColumns": [{ "key": "1", "orderedNozzles": ["A1"] }],
@@ -3,8 +3,8 @@
3
3
  "pathTo3D": "pipette/definitions/2/geometry/single_channel/p50/placeholder.gltf",
4
4
  "nozzleOffset": [-8.0, -22.0, -259.15],
5
5
  "pipetteBoundingBoxOffsets": {
6
- "backLeftCorner": [-8.0, -22.0, -259.15],
7
- "frontRightCorner": [-8.0, -22.0, -259.15]
6
+ "backLeftCorner": [-38.0, 0.0, -259.15],
7
+ "frontRightCorner": [11.5, -64.0, -259.15]
8
8
  },
9
9
  "orderedRows": [{ "key": "A", "orderedNozzles": ["A1"] }],
10
10
  "orderedColumns": [{ "key": "1", "orderedNozzles": ["A1"] }],
@@ -3,8 +3,8 @@
3
3
  "pathTo3D": "pipette/definitions/2/geometry/single_channel/p50/placeholder.gltf",
4
4
  "nozzleOffset": [-8.0, -22.0, -259.15],
5
5
  "pipetteBoundingBoxOffsets": {
6
- "backLeftCorner": [-8.0, -22.0, -259.15],
7
- "frontRightCorner": [-8.0, -22.0, -259.15]
6
+ "backLeftCorner": [-38.0, 0.0, -259.15],
7
+ "frontRightCorner": [11.5, -64.0, -259.15]
8
8
  },
9
9
  "orderedRows": [{ "key": "A", "orderedNozzles": ["A1"] }],
10
10
  "orderedColumns": [{ "key": "1", "orderedNozzles": ["A1"] }],
@@ -3,8 +3,8 @@
3
3
  "pathTo3D": "pipette/definitions/2/geometry/single_channel/p50/placeholder.gltf",
4
4
  "nozzleOffset": [-8.0, -22.0, -259.15],
5
5
  "pipetteBoundingBoxOffsets": {
6
- "backLeftCorner": [-8.0, -22.0, -259.15],
7
- "frontRightCorner": [-8.0, -22.0, -259.15]
6
+ "backLeftCorner": [-38.0, 0.0, -259.15],
7
+ "frontRightCorner": [11.5, -64.0, -259.15]
8
8
  },
9
9
  "orderedRows": [{ "key": "A", "orderedNozzles": ["A1"] }],
10
10
  "orderedColumns": [{ "key": "1", "orderedNozzles": ["A1"] }],
@@ -3,8 +3,8 @@
3
3
  "pathTo3D": "pipette/definitions/2/geometry/single_channel/p50/placeholder.gltf",
4
4
  "nozzleOffset": [-8.0, -22.0, -259.15],
5
5
  "pipetteBoundingBoxOffsets": {
6
- "backLeftCorner": [-8.0, -22.0, -259.15],
7
- "frontRightCorner": [-8.0, -22.0, -259.15]
6
+ "backLeftCorner": [-38.0, 0.0, -259.15],
7
+ "frontRightCorner": [11.5, -64.0, -259.15]
8
8
  },
9
9
  "orderedRows": [{ "key": "A", "orderedNozzles": ["A1"] }],
10
10
  "orderedColumns": [{ "key": "1", "orderedNozzles": ["A1"] }],
@@ -0,0 +1,26 @@
1
+ """Types and functions for accessing data files."""
2
+
3
+ from .types import (
4
+ DataFileInfo,
5
+ InputDataFileInfo,
6
+ OutputDataFileInfo,
7
+ CmdDataFileInfo,
8
+ MimeType,
9
+ IODataFileInfo,
10
+ DataFileSource,
11
+ DataFileInfoWithCommands,
12
+ RunFileNameMetadata,
13
+ )
14
+
15
+
16
+ __all__ = [
17
+ "DataFileInfo",
18
+ "InputDataFileInfo",
19
+ "OutputDataFileInfo",
20
+ "IODataFileInfo",
21
+ "CmdDataFileInfo",
22
+ "MimeType",
23
+ "DataFileSource",
24
+ "RunFileNameMetadata",
25
+ "DataFileInfoWithCommands",
26
+ ]
@@ -0,0 +1,84 @@
1
+ """opentrons_shared_data.data_files.types: types for data files."""
2
+
3
+ from dataclasses import dataclass
4
+ from datetime import datetime
5
+ from enum import Enum
6
+ from typing import Union, Optional
7
+
8
+
9
+ @dataclass(frozen=True)
10
+ class RunFileNameMetadata:
11
+ """Data from the run used that may be used to build a finalized file name."""
12
+
13
+ robot_name: str
14
+ run_id: str
15
+ run_created_at: datetime
16
+ protocol_name: Optional[str]
17
+
18
+
19
+ class MimeType(str, Enum):
20
+ """File mime types."""
21
+
22
+ TEXT_CSV = "text/csv"
23
+ IMAGE_JPEG = "image/jpeg"
24
+
25
+
26
+ class DataFileSource(Enum):
27
+ """The source this data file is from."""
28
+
29
+ UPLOADED = "uploaded"
30
+ GENERATED = "generated"
31
+
32
+
33
+ @dataclass(frozen=True)
34
+ class DataFileInfo:
35
+ """Metadata about a data file."""
36
+
37
+ id: str
38
+ name: str
39
+ path: str
40
+ stored: bool
41
+ generated: bool
42
+ file_hash: str
43
+ mime_type: MimeType
44
+ created_at: datetime
45
+
46
+
47
+ @dataclass(frozen=True)
48
+ class CmdDataFileInfo:
49
+ """Command metadata info utilized by data files."""
50
+
51
+ command_id: str
52
+ prev_command_id: str
53
+
54
+
55
+ @dataclass(frozen=True)
56
+ class DataFileInfoWithCommands(DataFileInfo):
57
+ """Data file info with associated command information."""
58
+
59
+ command_info: CmdDataFileInfo
60
+
61
+
62
+ @dataclass(frozen=True)
63
+ class BaseInputOutputDataFileInfo:
64
+ """Base metadata info for data files acting as input or output to a run."""
65
+
66
+ run_id: str
67
+ file_id: str
68
+
69
+
70
+ @dataclass(frozen=True)
71
+ class InputDataFileInfo(BaseInputOutputDataFileInfo):
72
+ """Metadata of a data file used as input to a run."""
73
+
74
+ command_info: None
75
+
76
+
77
+ @dataclass(frozen=True)
78
+ class OutputDataFileInfo(BaseInputOutputDataFileInfo):
79
+ """Metadata of a data file used as output from a run."""
80
+
81
+ command_info: CmdDataFileInfo
82
+
83
+
84
+ IODataFileInfo = Union[InputDataFileInfo, OutputDataFileInfo]
@@ -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,8 @@ 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")
102
+ CAMERA_ERROR = _code_from_dict_entry("4013")
101
103
 
102
104
  @classmethod
103
105
  @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
 
@@ -608,6 +608,7 @@ class LabwareDefinition3(BaseModel):
608
608
  wells: dict[str, WellDefinition3]
609
609
  groups: list[Group]
610
610
  stackingOffsetWithLabware: dict[str, Vector3D] = Field(default_factory=dict)
611
+ legacyStackingOffsetWithLabware: dict[str, Vector3D] = Field(default_factory=dict)
611
612
  stackingOffsetWithModule: dict[str, Vector3D] = Field(default_factory=dict)
612
613
  allowedRoles: list[LabwareRole] = Field(default_factory=list)
613
614
  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.0a11
3
+ Version: 8.8.0a6
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>