@opentrons/shared-data 0.0.1-alpha.19 → 0.0.1-alpha.21

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 (156) hide show
  1. package/lib/{bundle.673284981fd97184260c.js → opentrons-shared-data.js} +2 -2
  2. package/lib/opentrons-shared-data.js.map +1 -0
  3. package/package.json +1 -1
  4. package/webpack.config.js +1 -0
  5. package/js/__tests__/__snapshots__/pipettes.test.ts.snap +0 -5969
  6. package/js/__tests__/deckSchemas.test.ts +0 -87
  7. package/js/__tests__/errors.test.js +0 -21
  8. package/js/__tests__/getAreSlotsAdjacent.test.ts +0 -128
  9. package/js/__tests__/getWellNamePerMultiTip.test.ts +0 -162
  10. package/js/__tests__/labwareDefQuirks.test.ts +0 -37
  11. package/js/__tests__/labwareDefSchemaV1.test.ts +0 -82
  12. package/js/__tests__/labwareDefSchemaV2.test.ts +0 -298
  13. package/js/__tests__/moduleAccessors.test.ts +0 -50
  14. package/js/__tests__/moduleSpecsSchema.test.ts +0 -77
  15. package/js/__tests__/pipetteSchemaV2.test.ts +0 -107
  16. package/js/__tests__/pipetteSpecSchemas.test.ts +0 -48
  17. package/js/__tests__/pipettes.test.ts +0 -58
  18. package/js/__tests__/protocolSchemaV4.test.ts +0 -137
  19. package/js/__tests__/protocolSchemaV5.test.ts +0 -137
  20. package/js/__tests__/protocolSchemaV6.test.ts +0 -132
  21. package/js/__tests__/protocolSchemaV7.test.ts +0 -64
  22. package/js/__tests__/protocolValidation.test.ts +0 -83
  23. package/js/__tests__/sortWells.test.ts +0 -40
  24. package/js/__tests__/splitWellsOnColumn.test.ts +0 -21
  25. package/js/__tests__/validateErrors.test.js +0 -34
  26. package/js/constants.ts +0 -338
  27. package/js/cypressUtils.ts +0 -35
  28. package/js/errors.ts +0 -33
  29. package/js/fixtures.ts +0 -161
  30. package/js/getLabware.ts +0 -154
  31. package/js/gripper.ts +0 -29
  32. package/js/helpers/__tests__/getAdapterName.test.ts +0 -31
  33. package/js/helpers/__tests__/getDeckDefFromLoadedLabware.test.ts +0 -12
  34. package/js/helpers/__tests__/getVectorDifference.test.ts +0 -25
  35. package/js/helpers/__tests__/getVectorSum.test.ts +0 -21
  36. package/js/helpers/__tests__/labwareInference.test.ts +0 -84
  37. package/js/helpers/__tests__/orderWells.test.ts +0 -87
  38. package/js/helpers/__tests__/parseProtocolData.test.ts +0 -165
  39. package/js/helpers/__tests__/volume.test.ts +0 -108
  40. package/js/helpers/__tests__/wellSets.test.ts +0 -352
  41. package/js/helpers/get96Channel384WellPlateWells.ts +0 -44
  42. package/js/helpers/getAddressableAreasInProtocol.ts +0 -59
  43. package/js/helpers/getLoadedLabwareDefinitionsByUri.ts +0 -30
  44. package/js/helpers/getModuleVizDims.ts +0 -118
  45. package/js/helpers/getOccludedSlotCountForModule.ts +0 -13
  46. package/js/helpers/getVectorDifference.ts +0 -12
  47. package/js/helpers/getVectorSum.ts +0 -12
  48. package/js/helpers/getWellNamePerMultiTip.ts +0 -86
  49. package/js/helpers/getWellTotalVolume.ts +0 -16
  50. package/js/helpers/index.ts +0 -347
  51. package/js/helpers/labwareInference.ts +0 -92
  52. package/js/helpers/orderWells.ts +0 -69
  53. package/js/helpers/parseProtocolData.ts +0 -141
  54. package/js/helpers/volume.ts +0 -35
  55. package/js/helpers/wellIsRect.ts +0 -6
  56. package/js/helpers/wellSets.ts +0 -155
  57. package/js/index.ts +0 -14
  58. package/js/labwareTools/__tests__/__snapshots__/createIrregularLabware.test.ts.snap +0 -3
  59. package/js/labwareTools/__tests__/__snapshots__/createLabware.test.ts.snap +0 -3
  60. package/js/labwareTools/__tests__/createDefaultDisplayName.test.ts +0 -111
  61. package/js/labwareTools/__tests__/createIrregularLabware.test.ts +0 -226
  62. package/js/labwareTools/__tests__/createLabware.test.ts +0 -147
  63. package/js/labwareTools/index.ts +0 -452
  64. package/js/modules.ts +0 -97
  65. package/js/pipettes.ts +0 -89
  66. package/js/protocols.ts +0 -290
  67. package/js/schema.ts +0 -80
  68. package/js/scripts/generateDeckLayersFromSVG.js +0 -46
  69. package/js/titleCase.ts +0 -30
  70. package/js/types.ts +0 -600
  71. package/lib/bundle.673284981fd97184260c.js.map +0 -1
  72. package/python/.coveragerc +0 -4
  73. package/python/.flake8 +0 -32
  74. package/python/Config.in +0 -10
  75. package/python/Makefile +0 -134
  76. package/python/Pipfile +0 -28
  77. package/python/Pipfile.lock +0 -645
  78. package/python/buildroot.mk +0 -30
  79. package/python/mypy.ini +0 -41
  80. package/python/opentrons_shared_data/__init__.py +0 -17
  81. package/python/opentrons_shared_data/_version.py +0 -20
  82. package/python/opentrons_shared_data/command/__init__.py +0 -52
  83. package/python/opentrons_shared_data/deck/__init__.py +0 -96
  84. package/python/opentrons_shared_data/deck/dev_types.py +0 -180
  85. package/python/opentrons_shared_data/errors/__init__.py +0 -30
  86. package/python/opentrons_shared_data/errors/categories.py +0 -60
  87. package/python/opentrons_shared_data/errors/codes.py +0 -108
  88. package/python/opentrons_shared_data/errors/exceptions.py +0 -915
  89. package/python/opentrons_shared_data/gripper/__init__.py +0 -63
  90. package/python/opentrons_shared_data/gripper/constants.py +0 -6
  91. package/python/opentrons_shared_data/gripper/gripper_definition.py +0 -101
  92. package/python/opentrons_shared_data/labware/__init__.py +0 -22
  93. package/python/opentrons_shared_data/labware/constants.py +0 -7
  94. package/python/opentrons_shared_data/labware/dev_types.py +0 -140
  95. package/python/opentrons_shared_data/labware/labware_definition.py +0 -328
  96. package/python/opentrons_shared_data/load.py +0 -57
  97. package/python/opentrons_shared_data/module/__init__.py +0 -74
  98. package/python/opentrons_shared_data/module/dev_types.py +0 -141
  99. package/python/opentrons_shared_data/pipette/__init__.py +0 -107
  100. package/python/opentrons_shared_data/pipette/dev_types.py +0 -177
  101. package/python/opentrons_shared_data/pipette/file_operation_helpers.py +0 -37
  102. package/python/opentrons_shared_data/pipette/load_data.py +0 -261
  103. package/python/opentrons_shared_data/pipette/model_constants.py +0 -123
  104. package/python/opentrons_shared_data/pipette/mutable_configurations.py +0 -431
  105. package/python/opentrons_shared_data/pipette/pipette_definition.py +0 -503
  106. package/python/opentrons_shared_data/pipette/pipette_load_name_conversions.py +0 -240
  107. package/python/opentrons_shared_data/pipette/scripts/__init__.py +0 -0
  108. package/python/opentrons_shared_data/pipette/scripts/build_json_script.py +0 -469
  109. package/python/opentrons_shared_data/pipette/scripts/update_configuration_files.py +0 -450
  110. package/python/opentrons_shared_data/pipette/types.py +0 -193
  111. package/python/opentrons_shared_data/protocol/__init__.py +0 -13
  112. package/python/opentrons_shared_data/protocol/constants.py +0 -98
  113. package/python/opentrons_shared_data/protocol/dev_types.py +0 -436
  114. package/python/opentrons_shared_data/protocol/models/__init__.py +0 -48
  115. package/python/opentrons_shared_data/protocol/models/protocol_schema_v6.py +0 -145
  116. package/python/opentrons_shared_data/protocol/models/protocol_schema_v7.py +0 -95
  117. package/python/opentrons_shared_data/protocol/models/protocol_schema_v8.py +0 -110
  118. package/python/opentrons_shared_data/protocol/models/shared_models.py +0 -111
  119. package/python/opentrons_shared_data/py.typed +0 -0
  120. package/python/opentrons_shared_data/robot/__init__.py +0 -33
  121. package/python/opentrons_shared_data/robot/dev_types.py +0 -37
  122. package/python/pytest.ini +0 -2
  123. package/python/setup.cfg +0 -5
  124. package/python/setup.py +0 -179
  125. package/python/tests/__init__.py +0 -1
  126. package/python/tests/conftest.py +0 -0
  127. package/python/tests/deck/__init__.py +0 -0
  128. package/python/tests/deck/test_list_names.py +0 -12
  129. package/python/tests/deck/test_position.py +0 -113
  130. package/python/tests/deck/test_typechecks.py +0 -28
  131. package/python/tests/errors/__init__.py +0 -1
  132. package/python/tests/errors/test_error_completeness.py +0 -19
  133. package/python/tests/errors/test_exceptions.py +0 -74
  134. package/python/tests/gripper/__init__.py +0 -0
  135. package/python/tests/gripper/test_definition.py +0 -30
  136. package/python/tests/gripper/test_load.py +0 -16
  137. package/python/tests/labware/__init__.py +0 -13
  138. package/python/tests/labware/test_typechecks.py +0 -21
  139. package/python/tests/module/__init__.py +0 -20
  140. package/python/tests/module/test_load.py +0 -49
  141. package/python/tests/module/test_typechecks.py +0 -34
  142. package/python/tests/pipette/__init__.py +0 -0
  143. package/python/tests/pipette/test_load_data.py +0 -103
  144. package/python/tests/pipette/test_mutable_configurations.py +0 -266
  145. package/python/tests/pipette/test_pipette_definition.py +0 -183
  146. package/python/tests/pipette/test_pipette_load_name_conversions.py +0 -222
  147. package/python/tests/pipette/test_typechecks.py +0 -50
  148. package/python/tests/pipette/test_validate_schema.py +0 -37
  149. package/python/tests/protocol/__init__.py +0 -15
  150. package/python/tests/protocol/test_protocol_schema_v6.py +0 -107
  151. package/python/tests/protocol/test_protocol_schema_v7.py +0 -34
  152. package/python/tests/protocol/test_protocol_schema_v8.py +0 -20
  153. package/python/tests/protocol/test_typechecks.py +0 -36
  154. package/python/tests/robot/__init__.py +0 -0
  155. package/python/tests/robot/test_typechecks.py +0 -20
  156. /package/lib/{bundle.673284981fd97184260c.js.LICENSE.txt → opentrons-shared-data.js.LICENSE.txt} +0 -0
@@ -1,145 +0,0 @@
1
- from pydantic import BaseModel, Field, validator
2
- from typing import Any, List, Optional, Dict, Union
3
- from typing_extensions import Literal
4
- from opentrons_shared_data.labware.labware_definition import LabwareDefinition
5
-
6
- from .shared_models import (
7
- Liquid,
8
- Labware,
9
- CommandAnnotation,
10
- Location,
11
- ProfileStep,
12
- WellLocation,
13
- OffsetVector,
14
- Metadata,
15
- Module,
16
- Pipette,
17
- Robot,
18
- DesignerApplication,
19
- )
20
-
21
-
22
- # TODO (tamar 3/15/22): split apart all the command payloads when we tackle #9583
23
- class Params(BaseModel):
24
- slotName: Optional[str]
25
- axes: Optional[List[str]]
26
- pipetteId: Optional[str]
27
- mount: Optional[str]
28
- moduleId: Optional[str]
29
- location: Optional[Union[Location, Literal["offDeck"]]]
30
- labwareId: Optional[str]
31
- displayName: Optional[str]
32
- liquidId: Optional[str]
33
- volumeByWell: Optional[Dict[str, Any]]
34
- wellName: Optional[str]
35
- volume: Optional[float]
36
- flowRate: Optional[float]
37
- wellLocation: Optional[Union[WellLocation]]
38
- waitForResume: Optional[Literal[True]]
39
- seconds: Optional[float]
40
- minimumZHeight: Optional[float]
41
- forceDirect: Optional[bool]
42
- speed: Optional[float]
43
- message: Optional[str]
44
- coordinates: Optional[OffsetVector]
45
- axis: Optional[str]
46
- distance: Optional[float]
47
- positionId: Optional[str]
48
- temperature: Optional[float]
49
- celsius: Optional[float]
50
- blockMaxVolumeUl: Optional[float]
51
- rpm: Optional[float]
52
- height: Optional[float]
53
- offset: Optional[OffsetVector]
54
- profile: Optional[List[ProfileStep]]
55
- radius: Optional[float]
56
-
57
-
58
- class Command(BaseModel):
59
- commandType: str
60
- params: Params
61
- key: Optional[str]
62
-
63
-
64
- class ProtocolSchemaV6(BaseModel):
65
- otSharedSchema: Literal["#/protocol/schemas/6"] = Field(
66
- ...,
67
- alias="$otSharedSchema",
68
- description="The path to a valid Opentrons shared schema relative to "
69
- "the shared-data directory, without its extension.",
70
- )
71
- schemaVersion: Literal[6]
72
- metadata: Metadata
73
- robot: Robot
74
- pipettes: Dict[str, Pipette]
75
- labware: Dict[str, Labware]
76
- modules: Optional[Dict[str, Module]]
77
- liquids: Optional[Dict[str, Liquid]]
78
- labwareDefinitions: Dict[str, LabwareDefinition]
79
- # commands must be after pipettes, labware, etc. for its @validator to work.
80
- commands: List[Command]
81
- commandAnnotations: Optional[List[CommandAnnotation]]
82
- designerApplication: Optional[DesignerApplication]
83
-
84
- class Config:
85
- # added for constructing the class with field name instead of alias
86
- allow_population_by_field_name = True
87
-
88
- @validator("commands")
89
- def _validate_commands(
90
- cls,
91
- value: List[Command],
92
- values: Dict[str, Any],
93
- ) -> List[Command]:
94
- pipette_ids = set(values["pipettes"].keys()) if "pipettes" in values else set()
95
- labware_ids = set(values["labware"].keys()) if "labware" in values else set()
96
- module_ids = (
97
- set(values["modules"].keys())
98
- if "modules" in values and values["modules"]
99
- else set()
100
- )
101
- liquid_ids = (
102
- set(values["liquids"].keys())
103
- if "liquids" in values and values["liquids"]
104
- else set()
105
- )
106
-
107
- for index, command in enumerate(value):
108
- if (
109
- command.params.pipetteId is not None
110
- and command.params.pipetteId not in pipette_ids
111
- ):
112
- raise ValueError(
113
- f"{command.commandType} command at index {index}"
114
- f" references ID {command.params.pipetteId},"
115
- f" which doesn't exist."
116
- )
117
- if (
118
- command.params.labwareId is not None
119
- and command.params.labwareId not in labware_ids
120
- ):
121
- raise ValueError(
122
- f"{command.commandType} command at index {index}"
123
- f" references ID {command.params.labwareId},"
124
- f" which doesn't exist."
125
- )
126
- if (
127
- command.params.moduleId is not None
128
- and command.params.moduleId not in module_ids
129
- ):
130
- raise ValueError(
131
- f"{command.commandType} command at index {index}"
132
- f" references ID {command.params.moduleId},"
133
- f" which doesn't exist."
134
- )
135
- if (
136
- command.params.liquidId is not None
137
- and command.params.liquidId not in liquid_ids
138
- ):
139
- raise ValueError(
140
- f"{command.commandType} command at index {index}"
141
- f" references ID {command.params.liquidId},"
142
- f" which doesn't exist."
143
- )
144
-
145
- return value
@@ -1,95 +0,0 @@
1
- from pydantic import BaseModel, Field
2
- from typing import Any, List, Optional, Dict, Union
3
- from typing_extensions import Literal
4
-
5
- from opentrons_shared_data.labware.labware_definition import LabwareDefinition
6
-
7
- from .shared_models import (
8
- Liquid,
9
- CommandAnnotation,
10
- Location,
11
- ProfileStep,
12
- WellLocation,
13
- OffsetVector,
14
- Metadata,
15
- Robot,
16
- DesignerApplication,
17
- )
18
-
19
-
20
- # TODO (tamar 3/15/22): split apart all the command payloads when we tackle #9583
21
- class Params(BaseModel):
22
- slotName: Optional[str]
23
- axes: Optional[List[str]]
24
- pipetteId: Optional[str]
25
- mount: Optional[str]
26
- moduleId: Optional[str]
27
- location: Optional[Union[Location, Literal["offDeck"]]]
28
- labwareId: Optional[str]
29
- displayName: Optional[str]
30
- liquidId: Optional[str]
31
- volumeByWell: Optional[Dict[str, Any]]
32
- wellName: Optional[str]
33
- volume: Optional[float]
34
- flowRate: Optional[float]
35
- wellLocation: Optional[WellLocation]
36
- waitForResume: Optional[Literal[True]]
37
- seconds: Optional[float]
38
- minimumZHeight: Optional[float]
39
- forceDirect: Optional[bool]
40
- speed: Optional[float]
41
- message: Optional[str]
42
- coordinates: Optional[OffsetVector]
43
- axis: Optional[str]
44
- distance: Optional[float]
45
- positionId: Optional[str]
46
- temperature: Optional[float]
47
- celsius: Optional[float]
48
- blockMaxVolumeUl: Optional[float]
49
- rpm: Optional[float]
50
- height: Optional[float]
51
- offset: Optional[OffsetVector]
52
- profile: Optional[List[ProfileStep]]
53
- radius: Optional[float]
54
- # schema v7 add-ons
55
- newLocation: Optional[Union[Location, Literal["offDeck"]]]
56
- strategy: Optional[str]
57
- pickUpOffset: Optional[OffsetVector]
58
- dropOffset: Optional[OffsetVector]
59
- homeAfter: Optional[bool]
60
- alternateDropLocation: Optional[bool]
61
- holdTimeSeconds: Optional[float]
62
- maintenancePosition: Optional[str]
63
- pipetteName: Optional[str]
64
- model: Optional[str]
65
- loadName: Optional[str]
66
- namespace: Optional[str]
67
- version: Optional[int]
68
- pushOut: Optional[float]
69
-
70
-
71
- class Command(BaseModel):
72
- commandType: str
73
- params: Params
74
- key: Optional[str]
75
-
76
-
77
- class ProtocolSchemaV7(BaseModel):
78
- otSharedSchema: Literal["#/protocol/schemas/7"] = Field(
79
- ...,
80
- alias="$otSharedSchema",
81
- description="The path to a valid Opentrons shared schema relative to "
82
- "the shared-data directory, without its extension.",
83
- )
84
- schemaVersion: Literal[7]
85
- metadata: Metadata
86
- robot: Robot
87
- liquids: Optional[Dict[str, Liquid]]
88
- labwareDefinitions: Dict[str, LabwareDefinition]
89
- commands: List[Command]
90
- commandAnnotations: Optional[List[CommandAnnotation]]
91
- designerApplication: Optional[DesignerApplication]
92
-
93
- class Config:
94
- # added for constructing the class with field name instead of alias
95
- allow_population_by_field_name = True
@@ -1,110 +0,0 @@
1
- from pydantic import BaseModel, Field, Extra
2
- from typing import Any, List, Optional, Dict, Union
3
- from typing_extensions import Literal
4
-
5
- from opentrons_shared_data.labware.labware_definition import LabwareDefinition
6
-
7
- from .shared_models import (
8
- Liquid,
9
- Location,
10
- ProfileStep,
11
- WellLocation,
12
- OffsetVector,
13
- Metadata,
14
- DesignerApplication,
15
- Robot,
16
- NozzleConfigurationParams,
17
- )
18
-
19
-
20
- # TODO (tamar 3/15/22): split apart all the command payloads when we tackle #9583
21
- class Params(BaseModel):
22
- slotName: Optional[str]
23
- axes: Optional[List[str]]
24
- pipetteId: Optional[str]
25
- mount: Optional[str]
26
- moduleId: Optional[str]
27
- location: Optional[Union[Location, Literal["offDeck"]]]
28
- labwareId: Optional[str]
29
- displayName: Optional[str]
30
- liquidId: Optional[str]
31
- volumeByWell: Optional[Dict[str, Any]]
32
- wellName: Optional[str]
33
- volume: Optional[float]
34
- flowRate: Optional[float]
35
- wellLocation: Optional[WellLocation]
36
- waitForResume: Optional[Literal[True]]
37
- seconds: Optional[float]
38
- minimumZHeight: Optional[float]
39
- forceDirect: Optional[bool]
40
- speed: Optional[float]
41
- message: Optional[str]
42
- coordinates: Optional[OffsetVector]
43
- axis: Optional[str]
44
- distance: Optional[float]
45
- positionId: Optional[str]
46
- temperature: Optional[float]
47
- celsius: Optional[float]
48
- blockMaxVolumeUl: Optional[float]
49
- rpm: Optional[float]
50
- height: Optional[float]
51
- offset: Optional[OffsetVector]
52
- profile: Optional[List[ProfileStep]]
53
- radius: Optional[float]
54
- newLocation: Optional[Union[Location, Literal["offDeck"]]]
55
- strategy: Optional[str]
56
- # schema v7 add-ons
57
- homeAfter: Optional[bool]
58
- alternateDropLocation: Optional[bool]
59
- holdTimeSeconds: Optional[float]
60
- maintenancePosition: Optional[str]
61
- pipetteName: Optional[str]
62
- model: Optional[str]
63
- loadName: Optional[str]
64
- namespace: Optional[str]
65
- version: Optional[int]
66
- pushOut: Optional[float]
67
- pickUpOffset: Optional[OffsetVector]
68
- dropOffset: Optional[OffsetVector]
69
- # schema v8 add-ons
70
- addressableAreaName: Optional[str]
71
- configurationParams: Optional[NozzleConfigurationParams]
72
-
73
-
74
- class Command(BaseModel):
75
- commandType: str
76
- params: Params
77
- key: Optional[str]
78
-
79
-
80
- class CommandAnnotation(BaseModel):
81
- commandKeys: List[str]
82
- annotationType: str
83
-
84
- class Config:
85
- extra = Extra.allow
86
-
87
-
88
- class ProtocolSchemaV8(BaseModel):
89
- otSharedSchema: Literal["#/protocol/schemas/8"] = Field(
90
- ...,
91
- alias="$otSharedSchema",
92
- description="The path to a valid Opentrons shared schema relative to "
93
- "the shared-data directory, without its extension.",
94
- )
95
- schemaVersion: Literal[8]
96
- metadata: Metadata
97
- robot: Robot
98
- liquidSchemaId: Literal["opentronsLiquidSchemaV1"]
99
- liquids: Dict[str, Liquid]
100
- labwareDefinitionSchemaId: Literal["opentronsLabwareSchemaV2"]
101
- labwareDefinitions: Dict[str, LabwareDefinition]
102
- commandSchemaId: Literal["opentronsCommandSchemaV8"]
103
- commands: List[Command]
104
- commandAnnotationSchemaId: Literal["opentronsCommandAnnotationSchemaV1"]
105
- commandAnnotations: List[CommandAnnotation]
106
- designerApplication: Optional[DesignerApplication]
107
-
108
- class Config:
109
- # added for constructing the class with field name instead of alias
110
- allow_population_by_field_name = True
@@ -1,111 +0,0 @@
1
- from typing import Optional, List, Dict, Any
2
- from typing_extensions import Literal
3
- from enum import Enum
4
- from pydantic import BaseModel
5
-
6
-
7
- class Dimensions(BaseModel):
8
- xDimension: float
9
- yDimension: float
10
- zDimension: float
11
-
12
-
13
- class GroupMetadata(BaseModel):
14
- pass
15
-
16
-
17
- class Group(BaseModel):
18
- metadata: GroupMetadata
19
- wells: List[str]
20
-
21
-
22
- class Shape(Enum):
23
- circular = "circular"
24
- rectangular = "rectangular"
25
-
26
-
27
- class WellDefinition(BaseModel):
28
- depth: float
29
- totalLiquidVolume: int
30
- shape: Shape
31
- x: float
32
- y: float
33
- z: float
34
- diameter: Optional[float]
35
- yDimension: Optional[float]
36
- xDimension: Optional[float]
37
-
38
-
39
- class Metadata(BaseModel):
40
- protocolName: Optional[str]
41
- author: Optional[str]
42
- description: Optional[str]
43
- created: Optional[int]
44
- lastModified: Optional[int]
45
- category: Optional[str]
46
- subcategory: Optional[str]
47
- tags: Optional[List[str]]
48
-
49
-
50
- class Module(BaseModel):
51
- model: str
52
-
53
-
54
- class Pipette(BaseModel):
55
- name: str
56
-
57
-
58
- class Robot(BaseModel):
59
- model: Literal["OT-2 Standard", "OT-3 Standard"]
60
- deckId: str
61
-
62
-
63
- class DesignerApplication(BaseModel):
64
- name: Optional[str]
65
- version: Optional[str]
66
- data: Optional[Dict[str, Any]]
67
-
68
-
69
- class CommandAnnotation(BaseModel):
70
- commandIds: List[str]
71
- annotationType: str
72
-
73
-
74
- class OffsetVector(BaseModel):
75
- x: Optional[float]
76
- y: Optional[float]
77
- z: Optional[float]
78
-
79
-
80
- class Location(BaseModel):
81
- slotName: Optional[str]
82
- moduleId: Optional[str]
83
- labwareId: Optional[str]
84
- addressableAreaName: Optional[str]
85
-
86
-
87
- class ProfileStep(BaseModel):
88
- celsius: float
89
- holdSeconds: float
90
-
91
-
92
- class WellLocation(BaseModel):
93
- origin: Optional[str]
94
- offset: Optional[OffsetVector]
95
-
96
-
97
- class Liquid(BaseModel):
98
- displayName: str
99
- description: str
100
- displayColor: Optional[str]
101
-
102
-
103
- class Labware(BaseModel):
104
- displayName: Optional[str]
105
- definitionId: str
106
-
107
-
108
- class NozzleConfigurationParams(BaseModel):
109
- style: str
110
- primaryNozzle: Optional[str]
111
- frontRightNozzle: Optional[str]
File without changes
@@ -1,33 +0,0 @@
1
- """opentrons_shared_data.robot: Submodule for handling robot definition data."""
2
- from pathlib import Path
3
- from typing import cast
4
- from typing_extensions import Final
5
-
6
- import json
7
-
8
- from .. import get_shared_data_root
9
-
10
- from .dev_types import RobotDefinition, RobotType
11
-
12
- DEFAULT_ROBOT_DEFINITION_VERSION: Final = 1
13
-
14
-
15
- def load(
16
- robot_type: RobotType, version: int = DEFAULT_ROBOT_DEFINITION_VERSION
17
- ) -> RobotDefinition:
18
- """Load the definition for the specified robot id."""
19
- for fi in Path(
20
- get_shared_data_root() / "robot" / "definitions" / f"{version}"
21
- ).iterdir():
22
- defn = json.load(fi.open("r"))
23
- if defn["robotType"] == robot_type:
24
- return cast(RobotDefinition, defn)
25
- raise KeyError(robot_type)
26
-
27
-
28
- def user_facing_robot_type(robot_type: RobotType, include_article: bool = False) -> str:
29
- """Appropriately formatted robot type string for use in user-facing messages."""
30
- if robot_type == "OT-2 Standard":
31
- return "an OT-2" if include_article else "OT-2"
32
- elif robot_type == "OT-3 Standard":
33
- return "a Flex" if include_article else "Flex"
@@ -1,37 +0,0 @@
1
- """opentrons_shared_data.robot.dev_types: types for robot def."""
2
- import enum
3
- from typing import NewType, List, Dict, Any
4
- from typing_extensions import Literal, TypedDict
5
-
6
- RobotSchemaVersion1 = Literal[1]
7
-
8
- RobotSchema = NewType("RobotSchema", Dict[str, Any])
9
-
10
- RobotType = Literal["OT-2 Standard", "OT-3 Standard"]
11
-
12
-
13
- class RobotTypeEnum(enum.Enum):
14
- """An enum representing the active robot type."""
15
-
16
- # TODO we should switch over to using Enums fully (if possible)
17
- # to represent our robot types in code -- rather than having
18
- # to string match everywhere.
19
- OT2 = enum.auto()
20
- FLEX = enum.auto()
21
-
22
- @classmethod
23
- def robot_literal_to_enum(cls, robot_type: RobotType) -> "RobotTypeEnum":
24
- """Convert Robot Type Literal to Robot Type Enum."""
25
- if robot_type == "OT-2 Standard":
26
- return cls.OT2
27
- elif robot_type == "OT-3 Standard":
28
- return cls.FLEX
29
- # No final `else` statement, depend on mypy exhaustiveness checking
30
-
31
-
32
- class RobotDefinition(TypedDict):
33
- """A python version of the robot definition type."""
34
-
35
- displayName: str
36
- robotType: RobotType
37
- models: List[str]
package/python/pytest.ini DELETED
@@ -1,2 +0,0 @@
1
- [pytest]
2
- addopts = --color=yes --strict-markers
package/python/setup.cfg DELETED
@@ -1,5 +0,0 @@
1
- [bdist_wheel]
2
- universal = 1
3
-
4
- [metadata]
5
- license_files = ../../LICENSE