@opentrons/shared-data 0.1.7-alpha.1 → 0.2.1-alpha.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (769) hide show
  1. package/.coveragerc +4 -0
  2. package/.flake8 +31 -0
  3. package/Config.in +11 -0
  4. package/LICENSE +202 -0
  5. package/Makefile +51 -14
  6. package/Makefile-python.mk +134 -0
  7. package/buildroot.mk +35 -0
  8. package/command/index.ts +3 -1
  9. package/command/schemas/13.json +147 -315
  10. package/command/schemas/14.json +7254 -0
  11. package/command/types/index.ts +15 -4
  12. package/command/types/module.ts +24 -4
  13. package/command/types/setup.ts +5 -5
  14. package/command/types/support.ts +1 -0
  15. package/deck/definitions/5/ot2_short_trash.json +37 -0
  16. package/deck/definitions/5/ot2_standard.json +37 -0
  17. package/deck/definitions/5/ot3_standard.json +152 -51
  18. package/deck/schemas/5.json +46 -1
  19. package/labware/definitions/2/appliedbiosystemsmicroamp_384_wellplate_40ul/3.json +4737 -0
  20. package/labware/definitions/2/axygen_96_wellplate_500ul/1.json +1036 -0
  21. package/labware/definitions/2/axygen_96_wellplate_500ul/2.json +1159 -0
  22. package/labware/definitions/2/biorad_384_wellplate_50ul/4.json +4748 -0
  23. package/labware/definitions/2/biorad_96_wellplate_200ul_pcr/4.json +1187 -0
  24. package/labware/definitions/2/corning_12_wellplate_6.9ml_flat/4.json +210 -0
  25. package/labware/definitions/2/corning_24_wellplate_3.4ml_flat/4.json +342 -0
  26. package/labware/definitions/2/corning_48_wellplate_1.6ml_flat/5.json +610 -0
  27. package/labware/definitions/2/corning_6_wellplate_16.8ml_flat/4.json +134 -0
  28. package/labware/definitions/2/corning_96_wellplate_360ul_flat/4.json +1177 -0
  29. package/labware/definitions/2/corning_96_wellplate_360ul_lid/1.json +111 -0
  30. package/labware/definitions/2/ev_resin_tips_flex_96_labware/1.json +1 -1
  31. package/labware/definitions/2/ibidi_96_square_well_plate_300ul/1.json +1105 -0
  32. package/labware/definitions/2/ibidi_96_square_well_plate_300ul/2.json +1216 -0
  33. package/labware/definitions/2/ibidi_96_square_well_plate_300ul_lid/1.json +110 -0
  34. package/labware/definitions/2/nest_12_reservoir_22ml/1.json +232 -0
  35. package/labware/definitions/2/nest_24_wellplate_10.4ml/1.json +386 -0
  36. package/labware/definitions/2/nest_8_reservoir_22ml/1.json +162 -0
  37. package/labware/definitions/2/nest_96_wellplate_100ul_pcr_full_skirt/4.json +1166 -0
  38. package/labware/definitions/2/nest_96_wellplate_200ul_flat/4.json +1145 -0
  39. package/labware/definitions/2/nest_96_wellplate_2ml_deep/4.json +1261 -0
  40. package/labware/definitions/2/opentrons_96_wellplate_200ul_pcr_full_skirt/4.json +1174 -0
  41. package/labware/definitions/2/opentrons_flex_96_filtertiprack_1000ul/1.json +5 -0
  42. package/labware/definitions/2/opentrons_flex_96_filtertiprack_200ul/1.json +5 -0
  43. package/labware/definitions/2/opentrons_flex_96_filtertiprack_20ul/1.json +5 -0
  44. package/labware/definitions/2/opentrons_flex_96_filtertiprack_50ul/1.json +5 -0
  45. package/labware/definitions/2/opentrons_flex_96_tiprack_1000ul/1.json +5 -0
  46. package/labware/definitions/2/opentrons_flex_96_tiprack_200ul/1.json +5 -0
  47. package/labware/definitions/2/opentrons_flex_96_tiprack_20ul/1.json +5 -0
  48. package/labware/definitions/2/opentrons_flex_96_tiprack_50ul/1.json +5 -0
  49. package/labware/definitions/2/opentrons_flex_tiprack_lid/1.json +8 -8
  50. package/labware/definitions/2/opentrons_tough_pcr_auto_sealing_lid/1.json +8 -0
  51. package/labware/definitions/2/opentrons_tough_universal_lid/1.json +16 -1
  52. package/labware/definitions/2/smc_384_read_plate/1.json +4701 -0
  53. package/labware/definitions/2/smc_384_read_plate/2.json +5100 -0
  54. package/labware/definitions/2/thermoscientificnunc_96_wellplate_1300ul/3.json +1141 -0
  55. package/labware/definitions/2/thermoscientificnunc_96_wellplate_2000ul/3.json +1141 -0
  56. package/labware/definitions/2/usascientific_96_wellplate_2.4ml_deep/3.json +1243 -0
  57. package/labware/definitions/3/schema3test_96_well_aluminum_block/999.json +5 -2
  58. package/labware/definitions/3/schema3test_96_wellplate_200ul_pcr_full_skirt/999.json +15 -2
  59. package/labware/definitions/3/schema3test_aluminum_flat_bottom_plate/999.json +70 -0
  60. package/labware/definitions/3/schema3test_flex_96_tiprack_200ul/999.json +5 -9
  61. package/labware/definitions/3/schema3test_flex_96_tiprack_adapter/999.json +70 -0
  62. package/labware/definitions/3/schema3test_flex_tiprack_lid/999.json +146 -0
  63. package/labware/definitions/3/schema3test_tough_pcr_auto_sealing_lid/999.json +162 -0
  64. package/labware/definitions/3/schema3test_universal_flat_adapter/999.json +157 -0
  65. package/labware/fixtures/3/fixture_2_plate.json +5 -2
  66. package/labware/fixtures/3/fixture_corning_24_plate.json +6 -3
  67. package/labware/fixtures/3/index.ts +4 -0
  68. package/labware/schemas/3.json +57 -5
  69. package/lib/command/index.d.ts +39 -1
  70. package/lib/command/types/index.d.ts +11 -3
  71. package/lib/command/types/module.d.ts +19 -6
  72. package/lib/command/types/setup.d.ts +5 -5
  73. package/lib/index.mjs +240800 -193784
  74. package/lib/js/constants.d.ts +28 -9
  75. package/lib/js/fixtures.d.ts +77 -2
  76. package/lib/js/getLabware.d.ts +3 -3
  77. package/lib/js/helpers/__tests__/getMaxPushOutVolume.test.d.ts +1 -0
  78. package/lib/js/helpers/__tests__/getStackedItemsOnStartingDeck.test.d.ts +1 -0
  79. package/lib/js/helpers/__tests__/labwareSchemaShims.test.d.ts +1 -0
  80. package/lib/js/helpers/__tests__/pairsFromArray.test.d.ts +1 -0
  81. package/lib/js/helpers/__tests__/vectorMath.test.d.ts +1 -0
  82. package/lib/js/helpers/getFixedTrashLabwareDefinition.d.ts +2 -2
  83. package/lib/js/helpers/getLabwareDefURI.d.ts +3 -0
  84. package/lib/js/helpers/getLabwareDefinitionsByURIForProtocol.d.ts +6 -0
  85. package/lib/js/helpers/getLabwareInfoByLiquidId.d.ts +10 -0
  86. package/lib/js/helpers/getLiquidsByIdForLabware.d.ts +2 -0
  87. package/lib/js/helpers/getLoadedLabwareDefinitionsByUri.d.ts +2 -2
  88. package/lib/js/helpers/getMaxPushOutVolume.d.ts +2 -0
  89. package/lib/js/helpers/getStackedItemsOnStartingDeck.d.ts +50 -0
  90. package/lib/js/helpers/getStandardDeckViewLayerBlockList.d.ts +2 -0
  91. package/lib/js/helpers/getTipTypeFromTipRackDefinition.d.ts +2 -2
  92. package/lib/js/helpers/getWellFillFromLabwareId.d.ts +4 -0
  93. package/lib/js/helpers/getWellNamePerMultiTip.d.ts +3 -3
  94. package/lib/js/helpers/getWellTotalVolume.d.ts +2 -2
  95. package/lib/js/helpers/index.d.ts +22 -14
  96. package/lib/js/helpers/labwareInference.d.ts +3 -3
  97. package/lib/js/helpers/liquidClasses.d.ts +4 -2
  98. package/lib/js/helpers/matrixMath.d.ts +3 -0
  99. package/lib/js/helpers/pairsFromArray.d.ts +8 -0
  100. package/lib/js/helpers/parseProtocolCommands.d.ts +4 -4
  101. package/lib/js/helpers/positionMath.d.ts +121 -0
  102. package/lib/js/helpers/validateCustomLabwareHelper.d.ts +2 -2
  103. package/lib/js/helpers/vectorMath.d.ts +14 -0
  104. package/lib/js/helpers/wellSets.d.ts +4 -4
  105. package/lib/js/labware.d.ts +4 -3
  106. package/lib/js/liquidClasses.d.ts +4 -0
  107. package/lib/js/modules.d.ts +1 -1
  108. package/lib/js/types.d.ts +54 -12
  109. package/lib/labware/fixtures/3/index.d.ts +3 -0
  110. package/lib/protocol/types/schemaV8/index.d.ts +17 -1
  111. package/liquid-class/definitions/1/{ethanol_80.json → ethanol_80/1.json} +545 -390
  112. package/liquid-class/definitions/1/{glycerol_50.json → glycerol_50/1.json} +370 -215
  113. package/liquid-class/definitions/1/{water.json → water/1.json} +151 -62
  114. package/liquid-class/fixtures/1/fixture_glycerol50.json +1 -0
  115. package/liquid-class/schemas/1.json +6 -0
  116. package/module/definitions/3/absorbanceReaderV1.json +20 -151
  117. package/module/definitions/3/flexStackerModuleV1.json +29 -389
  118. package/module/definitions/3/heaterShakerModuleV1.json +16 -357
  119. package/module/definitions/3/magneticBlockV1.json +18 -149
  120. package/module/definitions/3/magneticModuleV1.json +16 -399
  121. package/module/definitions/3/magneticModuleV2.json +16 -399
  122. package/module/definitions/3/temperatureModuleV1.json +16 -153
  123. package/module/definitions/3/temperatureModuleV2.json +16 -153
  124. package/module/definitions/3/thermocyclerModuleV1.json +16 -1340
  125. package/module/definitions/3/thermocyclerModuleV2.json +18 -3617
  126. package/module/schemas/3.json +109 -12
  127. package/mypy.ini +22 -0
  128. package/package.json +1 -1
  129. package/pipette/definitions/1/pipetteModelSpecs.json +336 -0
  130. package/pipette/definitions/2/general/ninety_six_channel/p200/3_2.json +660 -0
  131. package/pipette/definitions/2/geometry/ninety_six_channel/p200/3_2.json +309 -0
  132. package/pipette/definitions/2/liquid/ninety_six_channel/p200/default/3_1.json +28 -18
  133. package/pipette/definitions/2/liquid/ninety_six_channel/p200/default/3_2.json +192 -0
  134. package/protocol/types/schemaV8/index.ts +29 -1
  135. package/pyproject.toml +119 -0
  136. package/pytest.ini +8 -0
  137. package/python_tests/__init__.py +1 -0
  138. package/python_tests/command/test_known_schema_ids.py +9 -0
  139. package/python_tests/conftest.py +108 -0
  140. package/python_tests/deck/__init__.py +0 -0
  141. package/python_tests/deck/test_list_names.py +12 -0
  142. package/python_tests/deck/test_position.py +101 -0
  143. package/python_tests/deck/test_typechecks.py +23 -0
  144. package/python_tests/errors/__init__.py +1 -0
  145. package/python_tests/errors/test_error_completeness.py +19 -0
  146. package/python_tests/errors/test_exceptions.py +74 -0
  147. package/python_tests/gripper/__init__.py +0 -0
  148. package/python_tests/gripper/test_definition.py +30 -0
  149. package/python_tests/gripper/test_load.py +19 -0
  150. package/python_tests/labware/__init__.py +13 -0
  151. package/python_tests/labware/test_typechecks.py +80 -0
  152. package/python_tests/liquid_classes/__init__.py +0 -0
  153. package/python_tests/liquid_classes/test_liquid_class_values.py +59 -0
  154. package/python_tests/liquid_classes/test_load.py +45 -0
  155. package/python_tests/liquid_classes/test_validations.py +192 -0
  156. package/python_tests/module/__init__.py +20 -0
  157. package/python_tests/module/test_load.py +49 -0
  158. package/python_tests/module/test_typechecks.py +26 -0
  159. package/python_tests/pipette/__init__.py +0 -0
  160. package/python_tests/pipette/test_load_data.py +109 -0
  161. package/python_tests/pipette/test_max_flow_rates_per_volume.py +112 -0
  162. package/python_tests/pipette/test_mutable_configurations.py +467 -0
  163. package/python_tests/pipette/test_pipette_definition.py +183 -0
  164. package/python_tests/pipette/test_pipette_load_name_conversions.py +244 -0
  165. package/python_tests/pipette/test_typechecks.py +47 -0
  166. package/python_tests/pipette/test_validate_schema.py +198 -0
  167. package/python_tests/protocol/__init__.py +7 -0
  168. package/python_tests/protocol/test_protocol_schema_v6.py +108 -0
  169. package/python_tests/protocol/test_protocol_schema_v7.py +35 -0
  170. package/python_tests/protocol/test_protocol_schema_v8.py +17 -0
  171. package/python_tests/protocol/test_typechecks.py +30 -0
  172. package/python_tests/robot/__init__.py +0 -0
  173. package/python_tests/robot/test_typechecks.py +13 -0
  174. package/lib/command/schemas/10.json +0 -4880
  175. package/lib/command/schemas/11.json +0 -6267
  176. package/lib/command/schemas/12.json +0 -7117
  177. package/lib/command/schemas/13.json +0 -7207
  178. package/lib/command/schemas/7.json +0 -3302
  179. package/lib/command/schemas/8.json +0 -4321
  180. package/lib/command/schemas/9.json +0 -4430
  181. package/lib/commandAnnotation/schemas/1.json +0 -74
  182. package/lib/deck/definitions/3/ot2_short_trash.json +0 -477
  183. package/lib/deck/definitions/3/ot2_standard.json +0 -477
  184. package/lib/deck/definitions/3/ot3_standard.json +0 -989
  185. package/lib/deck/definitions/4/ot2_short_trash.json +0 -405
  186. package/lib/deck/definitions/4/ot2_standard.json +0 -410
  187. package/lib/deck/definitions/4/ot3_standard.json +0 -608
  188. package/lib/deck/definitions/5/ot2_short_trash.json +0 -409
  189. package/lib/deck/definitions/5/ot2_standard.json +0 -409
  190. package/lib/deck/definitions/5/ot3_standard.json +0 -1249
  191. package/lib/deck/fixtures/3/deckExample.json +0 -481
  192. package/lib/deck/schemas/1.json +0 -229
  193. package/lib/deck/schemas/2.json +0 -239
  194. package/lib/deck/schemas/3.json +0 -296
  195. package/lib/deck/schemas/4.json +0 -319
  196. package/lib/deck/schemas/5.json +0 -345
  197. package/lib/errors/definitions/1/errors.json +0 -274
  198. package/lib/errors/schemas/1.json +0 -49
  199. package/lib/gripper/definitions/1/gripperV1.1.json +0 -29
  200. package/lib/gripper/definitions/1/gripperV1.2.json +0 -29
  201. package/lib/gripper/definitions/1/gripperV1.3.json +0 -29
  202. package/lib/gripper/definitions/1/gripperV1.json +0 -28
  203. package/lib/gripper/schemas/1.json +0 -186
  204. package/lib/js/cypressUtils.d.ts +0 -1
  205. package/lib/js/helpers/getVectorDifference.d.ts +0 -2
  206. package/lib/js/helpers/getVectorSum.d.ts +0 -2
  207. package/lib/labware/definitions/1/12-well-plate.json +0 -147
  208. package/lib/labware/definitions/1/24-vial-rack.json +0 -281
  209. package/lib/labware/definitions/1/24-well-plate.json +0 -281
  210. package/lib/labware/definitions/1/384-plate.json +0 -4667
  211. package/lib/labware/definitions/1/48-vial-plate.json +0 -547
  212. package/lib/labware/definitions/1/48-well-plate.json +0 -547
  213. package/lib/labware/definitions/1/5ml-3x4.json +0 -147
  214. package/lib/labware/definitions/1/6-well-plate.json +0 -80
  215. package/lib/labware/definitions/1/96-PCR-flat.json +0 -1079
  216. package/lib/labware/definitions/1/96-PCR-tall.json +0 -1079
  217. package/lib/labware/definitions/1/96-deep-well.json +0 -1079
  218. package/lib/labware/definitions/1/96-flat.json +0 -1079
  219. package/lib/labware/definitions/1/96-well-plate-20mm.json +0 -1079
  220. package/lib/labware/definitions/1/MALDI-plate.json +0 -4282
  221. package/lib/labware/definitions/1/PCR-strip-tall.json +0 -1079
  222. package/lib/labware/definitions/1/T25-flask.json +0 -20
  223. package/lib/labware/definitions/1/T75-flask.json +0 -20
  224. package/lib/labware/definitions/1/alum-block-pcr-strips.json +0 -188
  225. package/lib/labware/definitions/1/biorad-hardshell-96-PCR.json +0 -1079
  226. package/lib/labware/definitions/1/e-gelgol.json +0 -1078
  227. package/lib/labware/definitions/1/fixed-trash.json +0 -19
  228. package/lib/labware/definitions/1/hampton-1ml-deep-block.json +0 -1078
  229. package/lib/labware/definitions/1/opentrons-aluminum-block-2ml-eppendorf.json +0 -281
  230. package/lib/labware/definitions/1/opentrons-aluminum-block-2ml-screwcap.json +0 -281
  231. package/lib/labware/definitions/1/opentrons-aluminum-block-96-PCR-plate.json +0 -1079
  232. package/lib/labware/definitions/1/opentrons-aluminum-block-PCR-strips-200ul.json +0 -1079
  233. package/lib/labware/definitions/1/opentrons-tiprack-10ul.json +0 -986
  234. package/lib/labware/definitions/1/opentrons-tiprack-300ul.json +0 -986
  235. package/lib/labware/definitions/1/opentrons-tuberack-1.5ml-eppendorf.json +0 -281
  236. package/lib/labware/definitions/1/opentrons-tuberack-15_50ml.json +0 -125
  237. package/lib/labware/definitions/1/opentrons-tuberack-15ml.json +0 -181
  238. package/lib/labware/definitions/1/opentrons-tuberack-2ml-eppendorf.json +0 -281
  239. package/lib/labware/definitions/1/opentrons-tuberack-2ml-screwcap.json +0 -281
  240. package/lib/labware/definitions/1/opentrons-tuberack-50ml.json +0 -80
  241. package/lib/labware/definitions/1/point.json +0 -18
  242. package/lib/labware/definitions/1/rigaku-compact-crystallization-plate.json +0 -2146
  243. package/lib/labware/definitions/1/small_vial_rack_16x45.json +0 -280
  244. package/lib/labware/definitions/1/tall-fixed-trash.json +0 -19
  245. package/lib/labware/definitions/1/tiprack-1000ul-H.json +0 -503
  246. package/lib/labware/definitions/1/tiprack-1000ul-chem.json +0 -1034
  247. package/lib/labware/definitions/1/tiprack-1000ul.json +0 -986
  248. package/lib/labware/definitions/1/tiprack-10ul-H.json +0 -503
  249. package/lib/labware/definitions/1/tiprack-10ul.json +0 -986
  250. package/lib/labware/definitions/1/tiprack-200ul.json +0 -986
  251. package/lib/labware/definitions/1/trash-box.json +0 -20
  252. package/lib/labware/definitions/1/trough-12row-short.json +0 -143
  253. package/lib/labware/definitions/1/trough-12row.json +0 -143
  254. package/lib/labware/definitions/1/trough-1row-25ml.json +0 -21
  255. package/lib/labware/definitions/1/tube-rack-.75ml.json +0 -281
  256. package/lib/labware/definitions/1/tube-rack-15_50ml.json +0 -125
  257. package/lib/labware/definitions/1/tube-rack-2ml-9x9.json +0 -911
  258. package/lib/labware/definitions/1/tube-rack-2ml.json +0 -281
  259. package/lib/labware/definitions/1/tube-rack-5ml-96.json +0 -1079
  260. package/lib/labware/definitions/1/tube-rack-80well.json +0 -907
  261. package/lib/labware/definitions/1/wheaton_vial_rack.json +0 -565
  262. package/lib/labware/definitions/2/agilent_1_reservoir_290ml/1.json +0 -54
  263. package/lib/labware/definitions/2/agilent_1_reservoir_290ml/2.json +0 -80
  264. package/lib/labware/definitions/2/agilent_1_reservoir_290ml/3.json +0 -80
  265. package/lib/labware/definitions/2/appliedbiosystemsmicroamp_384_wellplate_40ul/1.json +0 -4320
  266. package/lib/labware/definitions/2/appliedbiosystemsmicroamp_384_wellplate_40ul/2.json +0 -4730
  267. package/lib/labware/definitions/2/armadillo_96_wellplate_200ul_pcr_full_skirt/1.json +0 -1019
  268. package/lib/labware/definitions/2/armadillo_96_wellplate_200ul_pcr_full_skirt/2.json +0 -1045
  269. package/lib/labware/definitions/2/armadillo_96_wellplate_200ul_pcr_full_skirt/3.json +0 -1167
  270. package/lib/labware/definitions/2/axygen_1_reservoir_90ml/1.json +0 -56
  271. package/lib/labware/definitions/2/axygen_1_reservoir_90ml/2.json +0 -72
  272. package/lib/labware/definitions/2/biorad_384_wellplate_50ul/1.json +0 -4329
  273. package/lib/labware/definitions/2/biorad_384_wellplate_50ul/2.json +0 -4331
  274. package/lib/labware/definitions/2/biorad_384_wellplate_50ul/3.json +0 -4741
  275. package/lib/labware/definitions/2/biorad_96_wellplate_200ul_pcr/1.json +0 -1020
  276. package/lib/labware/definitions/2/biorad_96_wellplate_200ul_pcr/2.json +0 -1046
  277. package/lib/labware/definitions/2/biorad_96_wellplate_200ul_pcr/3.json +0 -1182
  278. package/lib/labware/definitions/2/corning_12_wellplate_6.9ml_flat/1.json +0 -171
  279. package/lib/labware/definitions/2/corning_12_wellplate_6.9ml_flat/2.json +0 -180
  280. package/lib/labware/definitions/2/corning_12_wellplate_6.9ml_flat/3.json +0 -205
  281. package/lib/labware/definitions/2/corning_24_wellplate_3.4ml_flat/1.json +0 -293
  282. package/lib/labware/definitions/2/corning_24_wellplate_3.4ml_flat/2.json +0 -300
  283. package/lib/labware/definitions/2/corning_24_wellplate_3.4ml_flat/3.json +0 -337
  284. package/lib/labware/definitions/2/corning_384_wellplate_112ul_flat/1.json +0 -4703
  285. package/lib/labware/definitions/2/corning_384_wellplate_112ul_flat/2.json +0 -4717
  286. package/lib/labware/definitions/2/corning_384_wellplate_112ul_flat/3.json +0 -5116
  287. package/lib/labware/definitions/2/corning_384_wellplate_112ul_flat/4.json +0 -5116
  288. package/lib/labware/definitions/2/corning_48_wellplate_1.6ml_flat/1.json +0 -535
  289. package/lib/labware/definitions/2/corning_48_wellplate_1.6ml_flat/2.json +0 -544
  290. package/lib/labware/definitions/2/corning_48_wellplate_1.6ml_flat/3.json +0 -605
  291. package/lib/labware/definitions/2/corning_48_wellplate_1.6ml_flat/4.json +0 -605
  292. package/lib/labware/definitions/2/corning_6_wellplate_16.8ml_flat/1.json +0 -103
  293. package/lib/labware/definitions/2/corning_6_wellplate_16.8ml_flat/2.json +0 -110
  294. package/lib/labware/definitions/2/corning_6_wellplate_16.8ml_flat/3.json +0 -129
  295. package/lib/labware/definitions/2/corning_96_wellplate_360ul_flat/1.json +0 -1049
  296. package/lib/labware/definitions/2/corning_96_wellplate_360ul_flat/2.json +0 -1063
  297. package/lib/labware/definitions/2/corning_96_wellplate_360ul_flat/3.json +0 -1172
  298. package/lib/labware/definitions/2/eppendorf_96_tiprack_1000ul_eptips/1.json +0 -1019
  299. package/lib/labware/definitions/2/eppendorf_96_tiprack_10ul_eptips/1.json +0 -1019
  300. package/lib/labware/definitions/2/ev_resin_tips_flex_96_labware/1.json +0 -1067
  301. package/lib/labware/definitions/2/ev_resin_tips_flex_96_tiprack_adapter/1.json +0 -44
  302. package/lib/labware/definitions/2/ev_resin_tips_flex_short_adapter/1.json +0 -44
  303. package/lib/labware/definitions/2/ev_resin_tips_flex_tall_adapter/1.json +0 -44
  304. package/lib/labware/definitions/2/geb_96_tiprack_1000ul/1.json +0 -1017
  305. package/lib/labware/definitions/2/geb_96_tiprack_10ul/1.json +0 -1017
  306. package/lib/labware/definitions/2/nest_12_reservoir_15ml/1.json +0 -190
  307. package/lib/labware/definitions/2/nest_12_reservoir_15ml/2.json +0 -226
  308. package/lib/labware/definitions/2/nest_1_reservoir_195ml/1.json +0 -54
  309. package/lib/labware/definitions/2/nest_1_reservoir_195ml/2.json +0 -56
  310. package/lib/labware/definitions/2/nest_1_reservoir_195ml/3.json +0 -83
  311. package/lib/labware/definitions/2/nest_1_reservoir_290ml/1.json +0 -54
  312. package/lib/labware/definitions/2/nest_1_reservoir_290ml/2.json +0 -80
  313. package/lib/labware/definitions/2/nest_1_reservoir_290ml/3.json +0 -80
  314. package/lib/labware/definitions/2/nest_96_wellplate_100ul_pcr_full_skirt/1.json +0 -1018
  315. package/lib/labware/definitions/2/nest_96_wellplate_100ul_pcr_full_skirt/2.json +0 -1039
  316. package/lib/labware/definitions/2/nest_96_wellplate_100ul_pcr_full_skirt/3.json +0 -1161
  317. package/lib/labware/definitions/2/nest_96_wellplate_200ul_flat/1.json +0 -1017
  318. package/lib/labware/definitions/2/nest_96_wellplate_200ul_flat/2.json +0 -1031
  319. package/lib/labware/definitions/2/nest_96_wellplate_200ul_flat/3.json +0 -1140
  320. package/lib/labware/definitions/2/nest_96_wellplate_2ml_deep/1.json +0 -1121
  321. package/lib/labware/definitions/2/nest_96_wellplate_2ml_deep/2.json +0 -1147
  322. package/lib/labware/definitions/2/nest_96_wellplate_2ml_deep/3.json +0 -1256
  323. package/lib/labware/definitions/2/opentrons_10_tuberack_falcon_4x50ml_6x15ml_conical/1.json +0 -164
  324. package/lib/labware/definitions/2/opentrons_10_tuberack_falcon_4x50ml_6x15ml_conical/2.json +0 -232
  325. package/lib/labware/definitions/2/opentrons_10_tuberack_falcon_4x50ml_6x15ml_conical_acrylic/1.json +0 -162
  326. package/lib/labware/definitions/2/opentrons_10_tuberack_nest_4x50ml_6x15ml_conical/1.json +0 -160
  327. package/lib/labware/definitions/2/opentrons_10_tuberack_nest_4x50ml_6x15ml_conical/2.json +0 -235
  328. package/lib/labware/definitions/2/opentrons_15_tuberack_falcon_15ml_conical/1.json +0 -211
  329. package/lib/labware/definitions/2/opentrons_15_tuberack_falcon_15ml_conical/2.json +0 -259
  330. package/lib/labware/definitions/2/opentrons_15_tuberack_nest_15ml_conical/1.json +0 -209
  331. package/lib/labware/definitions/2/opentrons_15_tuberack_nest_15ml_conical/2.json +0 -257
  332. package/lib/labware/definitions/2/opentrons_1_trash_1100ml_fixed/1.json +0 -50
  333. package/lib/labware/definitions/2/opentrons_1_trash_3200ml_fixed/1.json +0 -50
  334. package/lib/labware/definitions/2/opentrons_1_trash_850ml_fixed/1.json +0 -50
  335. package/lib/labware/definitions/2/opentrons_24_aluminumblock_generic_2ml_screwcap/1.json +0 -300
  336. package/lib/labware/definitions/2/opentrons_24_aluminumblock_generic_2ml_screwcap/2.json +0 -301
  337. package/lib/labware/definitions/2/opentrons_24_aluminumblock_generic_2ml_screwcap/3.json +0 -352
  338. package/lib/labware/definitions/2/opentrons_24_aluminumblock_nest_0.5ml_screwcap/1.json +0 -299
  339. package/lib/labware/definitions/2/opentrons_24_aluminumblock_nest_0.5ml_screwcap/2.json +0 -370
  340. package/lib/labware/definitions/2/opentrons_24_aluminumblock_nest_0.5ml_screwcap/3.json +0 -370
  341. package/lib/labware/definitions/2/opentrons_24_aluminumblock_nest_1.5ml_screwcap/1.json +0 -299
  342. package/lib/labware/definitions/2/opentrons_24_aluminumblock_nest_1.5ml_screwcap/2.json +0 -356
  343. package/lib/labware/definitions/2/opentrons_24_aluminumblock_nest_1.5ml_snapcap/1.json +0 -301
  344. package/lib/labware/definitions/2/opentrons_24_aluminumblock_nest_1.5ml_snapcap/2.json +0 -358
  345. package/lib/labware/definitions/2/opentrons_24_aluminumblock_nest_2ml_screwcap/1.json +0 -299
  346. package/lib/labware/definitions/2/opentrons_24_aluminumblock_nest_2ml_screwcap/2.json +0 -350
  347. package/lib/labware/definitions/2/opentrons_24_aluminumblock_nest_2ml_snapcap/1.json +0 -301
  348. package/lib/labware/definitions/2/opentrons_24_aluminumblock_nest_2ml_snapcap/2.json +0 -386
  349. package/lib/labware/definitions/2/opentrons_24_tuberack_eppendorf_1.5ml_safelock_snapcap/1.json +0 -312
  350. package/lib/labware/definitions/2/opentrons_24_tuberack_eppendorf_1.5ml_safelock_snapcap/2.json +0 -418
  351. package/lib/labware/definitions/2/opentrons_24_tuberack_eppendorf_2ml_safelock_snapcap/1.json +0 -311
  352. package/lib/labware/definitions/2/opentrons_24_tuberack_eppendorf_2ml_safelock_snapcap/2.json +0 -473
  353. package/lib/labware/definitions/2/opentrons_24_tuberack_eppendorf_2ml_safelock_snapcap_acrylic/1.json +0 -309
  354. package/lib/labware/definitions/2/opentrons_24_tuberack_generic_0.75ml_snapcap_acrylic/1.json +0 -298
  355. package/lib/labware/definitions/2/opentrons_24_tuberack_generic_2ml_screwcap/1.json +0 -300
  356. package/lib/labware/definitions/2/opentrons_24_tuberack_generic_2ml_screwcap/2.json +0 -351
  357. package/lib/labware/definitions/2/opentrons_24_tuberack_nest_0.5ml_screwcap/1.json +0 -300
  358. package/lib/labware/definitions/2/opentrons_24_tuberack_nest_0.5ml_screwcap/2.json +0 -371
  359. package/lib/labware/definitions/2/opentrons_24_tuberack_nest_0.5ml_screwcap/3.json +0 -371
  360. package/lib/labware/definitions/2/opentrons_24_tuberack_nest_1.5ml_screwcap/1.json +0 -300
  361. package/lib/labware/definitions/2/opentrons_24_tuberack_nest_1.5ml_screwcap/2.json +0 -357
  362. package/lib/labware/definitions/2/opentrons_24_tuberack_nest_1.5ml_snapcap/1.json +0 -302
  363. package/lib/labware/definitions/2/opentrons_24_tuberack_nest_1.5ml_snapcap/2.json +0 -359
  364. package/lib/labware/definitions/2/opentrons_24_tuberack_nest_2ml_screwcap/1.json +0 -300
  365. package/lib/labware/definitions/2/opentrons_24_tuberack_nest_2ml_screwcap/2.json +0 -351
  366. package/lib/labware/definitions/2/opentrons_24_tuberack_nest_2ml_snapcap/1.json +0 -302
  367. package/lib/labware/definitions/2/opentrons_24_tuberack_nest_2ml_snapcap/2.json +0 -387
  368. package/lib/labware/definitions/2/opentrons_40_aluminumblock_eppendorf_24x2ml_safelock_snapcap_generic_16x0.2ml_pcr_strip/1.json +0 -481
  369. package/lib/labware/definitions/2/opentrons_6_tuberack_falcon_50ml_conical/1.json +0 -112
  370. package/lib/labware/definitions/2/opentrons_6_tuberack_falcon_50ml_conical/2.json +0 -145
  371. package/lib/labware/definitions/2/opentrons_6_tuberack_nest_50ml_conical/1.json +0 -110
  372. package/lib/labware/definitions/2/opentrons_6_tuberack_nest_50ml_conical/2.json +0 -150
  373. package/lib/labware/definitions/2/opentrons_96_aluminumblock_biorad_wellplate_200ul/1.json +0 -1029
  374. package/lib/labware/definitions/2/opentrons_96_aluminumblock_generic_pcr_strip_200ul/1.json +0 -1026
  375. package/lib/labware/definitions/2/opentrons_96_aluminumblock_generic_pcr_strip_200ul/2.json +0 -1027
  376. package/lib/labware/definitions/2/opentrons_96_aluminumblock_generic_pcr_strip_200ul/3.json +0 -1027
  377. package/lib/labware/definitions/2/opentrons_96_aluminumblock_generic_pcr_strip_200ul/4.json +0 -1149
  378. package/lib/labware/definitions/2/opentrons_96_aluminumblock_nest_wellplate_100ul/1.json +0 -1027
  379. package/lib/labware/definitions/2/opentrons_96_deep_well_adapter/1.json +0 -41
  380. package/lib/labware/definitions/2/opentrons_96_deep_well_adapter_nest_wellplate_2ml_deep/1.json +0 -1121
  381. package/lib/labware/definitions/2/opentrons_96_deep_well_temp_mod_adapter/1.json +0 -41
  382. package/lib/labware/definitions/2/opentrons_96_filtertiprack_1000ul/1.json +0 -1017
  383. package/lib/labware/definitions/2/opentrons_96_filtertiprack_10ul/1.json +0 -1017
  384. package/lib/labware/definitions/2/opentrons_96_filtertiprack_200ul/1.json +0 -1017
  385. package/lib/labware/definitions/2/opentrons_96_filtertiprack_20ul/1.json +0 -1017
  386. package/lib/labware/definitions/2/opentrons_96_flat_bottom_adapter/1.json +0 -41
  387. package/lib/labware/definitions/2/opentrons_96_flat_bottom_adapter_nest_wellplate_200ul_flat/1.json +0 -1027
  388. package/lib/labware/definitions/2/opentrons_96_pcr_adapter/1.json +0 -1032
  389. package/lib/labware/definitions/2/opentrons_96_pcr_adapter_armadillo_wellplate_200ul/1.json +0 -1027
  390. package/lib/labware/definitions/2/opentrons_96_pcr_adapter_nest_wellplate_100ul_pcr_full_skirt/1.json +0 -1025
  391. package/lib/labware/definitions/2/opentrons_96_tiprack_1000ul/1.json +0 -1019
  392. package/lib/labware/definitions/2/opentrons_96_tiprack_10ul/1.json +0 -1019
  393. package/lib/labware/definitions/2/opentrons_96_tiprack_20ul/1.json +0 -1019
  394. package/lib/labware/definitions/2/opentrons_96_tiprack_300ul/1.json +0 -1019
  395. package/lib/labware/definitions/2/opentrons_96_well_aluminum_block/1.json +0 -1032
  396. package/lib/labware/definitions/2/opentrons_96_wellplate_200ul_pcr_full_skirt/1.json +0 -1019
  397. package/lib/labware/definitions/2/opentrons_96_wellplate_200ul_pcr_full_skirt/2.json +0 -1045
  398. package/lib/labware/definitions/2/opentrons_96_wellplate_200ul_pcr_full_skirt/3.json +0 -1174
  399. package/lib/labware/definitions/2/opentrons_aluminum_flat_bottom_plate/1.json +0 -41
  400. package/lib/labware/definitions/2/opentrons_calibration_adapter_heatershaker_module/1.json +0 -62
  401. package/lib/labware/definitions/2/opentrons_calibration_adapter_temperature_module/1.json +0 -62
  402. package/lib/labware/definitions/2/opentrons_calibration_adapter_thermocycler_module/1.json +0 -69
  403. package/lib/labware/definitions/2/opentrons_calibrationblock_short_side_left/1.json +0 -71
  404. package/lib/labware/definitions/2/opentrons_calibrationblock_short_side_right/1.json +0 -71
  405. package/lib/labware/definitions/2/opentrons_flex_96_filtertiprack_1000ul/1.json +0 -1026
  406. package/lib/labware/definitions/2/opentrons_flex_96_filtertiprack_200ul/1.json +0 -1026
  407. package/lib/labware/definitions/2/opentrons_flex_96_filtertiprack_20ul/1.json +0 -1026
  408. package/lib/labware/definitions/2/opentrons_flex_96_filtertiprack_50ul/1.json +0 -1026
  409. package/lib/labware/definitions/2/opentrons_flex_96_tiprack_1000ul/1.json +0 -1026
  410. package/lib/labware/definitions/2/opentrons_flex_96_tiprack_200ul/1.json +0 -1026
  411. package/lib/labware/definitions/2/opentrons_flex_96_tiprack_20ul/1.json +0 -1026
  412. package/lib/labware/definitions/2/opentrons_flex_96_tiprack_50ul/1.json +0 -1026
  413. package/lib/labware/definitions/2/opentrons_flex_96_tiprack_adapter/1.json +0 -41
  414. package/lib/labware/definitions/2/opentrons_flex_deck_riser/1.json +0 -41
  415. package/lib/labware/definitions/2/opentrons_flex_lid_absorbance_plate_reader_module/1.json +0 -57
  416. package/lib/labware/definitions/2/opentrons_flex_tiprack_lid/1.json +0 -122
  417. package/lib/labware/definitions/2/opentrons_tough_12_reservoir_22ml/1.json +0 -228
  418. package/lib/labware/definitions/2/opentrons_tough_1_reservoir_300ml/1.json +0 -83
  419. package/lib/labware/definitions/2/opentrons_tough_4_reservoir_72ml/1.json +0 -114
  420. package/lib/labware/definitions/2/opentrons_tough_pcr_auto_sealing_lid/1.json +0 -126
  421. package/lib/labware/definitions/2/opentrons_tough_pcr_auto_sealing_lid/2.json +0 -134
  422. package/lib/labware/definitions/2/opentrons_tough_universal_lid/1.json +0 -81
  423. package/lib/labware/definitions/2/opentrons_universal_flat_adapter/1.json +0 -151
  424. package/lib/labware/definitions/2/opentrons_universal_flat_adapter_corning_384_wellplate_112ul_flat/1.json +0 -4710
  425. package/lib/labware/definitions/2/protocol_engine_lid_stack_object/1.json +0 -48
  426. package/lib/labware/definitions/2/thermoscientificnunc_96_wellplate_1300ul/1.json +0 -1019
  427. package/lib/labware/definitions/2/thermoscientificnunc_96_wellplate_1300ul/2.json +0 -1134
  428. package/lib/labware/definitions/2/thermoscientificnunc_96_wellplate_2000ul/1.json +0 -1019
  429. package/lib/labware/definitions/2/thermoscientificnunc_96_wellplate_2000ul/2.json +0 -1134
  430. package/lib/labware/definitions/2/tipone_96_tiprack_200ul/1.json +0 -1017
  431. package/lib/labware/definitions/2/usascientific_12_reservoir_22ml/1.json +0 -192
  432. package/lib/labware/definitions/2/usascientific_12_reservoir_22ml/2.json +0 -237
  433. package/lib/labware/definitions/2/usascientific_12_reservoir_22ml/3.json +0 -237
  434. package/lib/labware/definitions/2/usascientific_96_wellplate_2.4ml_deep/1.json +0 -1116
  435. package/lib/labware/definitions/2/usascientific_96_wellplate_2.4ml_deep/2.json +0 -1236
  436. package/lib/labware/definitions/3/schema3test_96_well_aluminum_block/999.json +0 -1047
  437. package/lib/labware/definitions/3/schema3test_96_wellplate_200ul_pcr_full_skirt/999.json +0 -1189
  438. package/lib/labware/definitions/3/schema3test_flex_96_tiprack_200ul/999.json +0 -1041
  439. package/lib/labware/fixtures/1/fixture_tiprack.json +0 -986
  440. package/lib/labware/fixtures/2/fixture_12_trough.json +0 -188
  441. package/lib/labware/fixtures/2/fixture_12_trough_v2.json +0 -188
  442. package/lib/labware/fixtures/2/fixture_24_tuberack.json +0 -295
  443. package/lib/labware/fixtures/2/fixture_384_plate.json +0 -4316
  444. package/lib/labware/fixtures/2/fixture_96_plate.json +0 -1015
  445. package/lib/labware/fixtures/2/fixture_calibration_block.json +0 -71
  446. package/lib/labware/fixtures/2/fixture_corning_96_wellplate_360_flat.json +0 -1058
  447. package/lib/labware/fixtures/2/fixture_flex_96_tiprack_1000ul.json +0 -1026
  448. package/lib/labware/fixtures/2/fixture_flex_96_tiprack_adapter.json +0 -41
  449. package/lib/labware/fixtures/2/fixture_irregular_example_1.json +0 -600
  450. package/lib/labware/fixtures/2/fixture_overlappy_wellplate.json +0 -1113
  451. package/lib/labware/fixtures/2/fixture_regular_example_1.json +0 -57
  452. package/lib/labware/fixtures/2/fixture_regular_example_2.json +0 -95
  453. package/lib/labware/fixtures/2/fixture_tiprack_1000_ul.json +0 -1015
  454. package/lib/labware/fixtures/2/fixture_tiprack_10_ul.json +0 -1015
  455. package/lib/labware/fixtures/2/fixture_tiprack_300_ul.json +0 -1014
  456. package/lib/labware/fixtures/2/fixture_trash.json +0 -50
  457. package/lib/labware/fixtures/2/fixture_universal_flat_bottom_adapter.json +0 -151
  458. package/lib/labware/fixtures/3/fixture_2_plate.json +0 -110
  459. package/lib/labware/fixtures/3/fixture_corning_24_plate.json +0 -352
  460. package/lib/labware/repository/fixtures/1/exampleLabwareRepository.json +0 -43
  461. package/lib/labware/repository/schemas/1.json +0 -81
  462. package/lib/labware/schemas/2.json +0 -720
  463. package/lib/labware/schemas/3.json +0 -763
  464. package/lib/liquid/schemas/1.json +0 -21
  465. package/lib/liquid-class/definitions/1/ethanol_80.json +0 -5656
  466. package/lib/liquid-class/definitions/1/glycerol_50.json +0 -5376
  467. package/lib/liquid-class/definitions/1/water.json +0 -5270
  468. package/lib/liquid-class/fixtures/1/fixture_glycerol50.json +0 -255
  469. package/lib/liquid-class/schemas/1.json +0 -499
  470. package/lib/module/definitions/1.json +0 -57
  471. package/lib/module/definitions/2/magneticModuleV1.json +0 -22
  472. package/lib/module/definitions/2/magneticModuleV2.json +0 -69
  473. package/lib/module/definitions/2/temperatureModuleV1.json +0 -22
  474. package/lib/module/definitions/2/temperatureModuleV2.json +0 -69
  475. package/lib/module/definitions/2/thermocyclerModuleV1.json +0 -23
  476. package/lib/module/definitions/3/absorbanceReaderV1.json +0 -185
  477. package/lib/module/definitions/3/flexStackerModuleV1.json +0 -532
  478. package/lib/module/definitions/3/heaterShakerModuleV1.json +0 -530
  479. package/lib/module/definitions/3/magneticBlockV1.json +0 -201
  480. package/lib/module/definitions/3/magneticModuleV1.json +0 -437
  481. package/lib/module/definitions/3/magneticModuleV2.json +0 -490
  482. package/lib/module/definitions/3/temperatureModuleV1.json +0 -192
  483. package/lib/module/definitions/3/temperatureModuleV2.json +0 -325
  484. package/lib/module/definitions/3/thermocyclerModuleV1.json +0 -1382
  485. package/lib/module/definitions/3/thermocyclerModuleV2.json +0 -3688
  486. package/lib/module/fixtures/3/compatibleGenerationV1.json +0 -69
  487. package/lib/module/fixtures/3/compatibleGenerationV2.json +0 -69
  488. package/lib/module/fixtures/3/incompatibleGenerationV1.json +0 -22
  489. package/lib/module/fixtures/3/incompatibleGenerationV2.json +0 -69
  490. package/lib/module/schemas/1.json +0 -54
  491. package/lib/module/schemas/2.json +0 -112
  492. package/lib/module/schemas/3.json +0 -222
  493. package/lib/pipette/definitions/1/pipetteModelSpecs.json +0 -11181
  494. package/lib/pipette/definitions/1/pipetteNameSpecs.json +0 -784
  495. package/lib/pipette/definitions/2/general/eight_channel/p10/1_0.json +0 -206
  496. package/lib/pipette/definitions/2/general/eight_channel/p10/1_3.json +0 -206
  497. package/lib/pipette/definitions/2/general/eight_channel/p10/1_4.json +0 -206
  498. package/lib/pipette/definitions/2/general/eight_channel/p10/1_5.json +0 -206
  499. package/lib/pipette/definitions/2/general/eight_channel/p10/1_6.json +0 -206
  500. package/lib/pipette/definitions/2/general/eight_channel/p1000/1_0.json +0 -206
  501. package/lib/pipette/definitions/2/general/eight_channel/p1000/3_0.json +0 -233
  502. package/lib/pipette/definitions/2/general/eight_channel/p1000/3_3.json +0 -233
  503. package/lib/pipette/definitions/2/general/eight_channel/p1000/3_4.json +0 -323
  504. package/lib/pipette/definitions/2/general/eight_channel/p1000/3_5.json +0 -323
  505. package/lib/pipette/definitions/2/general/eight_channel/p20/2_0.json +0 -224
  506. package/lib/pipette/definitions/2/general/eight_channel/p20/2_1.json +0 -224
  507. package/lib/pipette/definitions/2/general/eight_channel/p300/1_0.json +0 -197
  508. package/lib/pipette/definitions/2/general/eight_channel/p300/1_3.json +0 -197
  509. package/lib/pipette/definitions/2/general/eight_channel/p300/1_4.json +0 -197
  510. package/lib/pipette/definitions/2/general/eight_channel/p300/1_5.json +0 -197
  511. package/lib/pipette/definitions/2/general/eight_channel/p300/2_0.json +0 -188
  512. package/lib/pipette/definitions/2/general/eight_channel/p300/2_1.json +0 -188
  513. package/lib/pipette/definitions/2/general/eight_channel/p50/1_0.json +0 -197
  514. package/lib/pipette/definitions/2/general/eight_channel/p50/1_3.json +0 -197
  515. package/lib/pipette/definitions/2/general/eight_channel/p50/1_4.json +0 -197
  516. package/lib/pipette/definitions/2/general/eight_channel/p50/1_5.json +0 -197
  517. package/lib/pipette/definitions/2/general/eight_channel/p50/3_0.json +0 -203
  518. package/lib/pipette/definitions/2/general/eight_channel/p50/3_3.json +0 -203
  519. package/lib/pipette/definitions/2/general/eight_channel/p50/3_4.json +0 -253
  520. package/lib/pipette/definitions/2/general/eight_channel/p50/3_5.json +0 -253
  521. package/lib/pipette/definitions/2/general/eight_channel_em/p1000/1_0.json +0 -320
  522. package/lib/pipette/definitions/2/general/eight_channel_em/p1000/3_0.json +0 -320
  523. package/lib/pipette/definitions/2/general/ninety_six_channel/p1000/1_0.json +0 -556
  524. package/lib/pipette/definitions/2/general/ninety_six_channel/p1000/3_0.json +0 -561
  525. package/lib/pipette/definitions/2/general/ninety_six_channel/p1000/3_3.json +0 -556
  526. package/lib/pipette/definitions/2/general/ninety_six_channel/p1000/3_4.json +0 -724
  527. package/lib/pipette/definitions/2/general/ninety_six_channel/p1000/3_5.json +0 -858
  528. package/lib/pipette/definitions/2/general/ninety_six_channel/p1000/3_6.json +0 -818
  529. package/lib/pipette/definitions/2/general/ninety_six_channel/p200/1_0.json +0 -660
  530. package/lib/pipette/definitions/2/general/ninety_six_channel/p200/3_0.json +0 -660
  531. package/lib/pipette/definitions/2/general/ninety_six_channel/p200/3_1.json +0 -660
  532. package/lib/pipette/definitions/2/general/single_channel/p10/1_0.json +0 -70
  533. package/lib/pipette/definitions/2/general/single_channel/p10/1_3.json +0 -70
  534. package/lib/pipette/definitions/2/general/single_channel/p10/1_4.json +0 -70
  535. package/lib/pipette/definitions/2/general/single_channel/p10/1_5.json +0 -70
  536. package/lib/pipette/definitions/2/general/single_channel/p1000/1_0.json +0 -70
  537. package/lib/pipette/definitions/2/general/single_channel/p1000/1_3.json +0 -70
  538. package/lib/pipette/definitions/2/general/single_channel/p1000/1_4.json +0 -70
  539. package/lib/pipette/definitions/2/general/single_channel/p1000/1_5.json +0 -70
  540. package/lib/pipette/definitions/2/general/single_channel/p1000/2_0.json +0 -69
  541. package/lib/pipette/definitions/2/general/single_channel/p1000/2_1.json +0 -69
  542. package/lib/pipette/definitions/2/general/single_channel/p1000/2_2.json +0 -69
  543. package/lib/pipette/definitions/2/general/single_channel/p1000/3_0.json +0 -81
  544. package/lib/pipette/definitions/2/general/single_channel/p1000/3_3.json +0 -81
  545. package/lib/pipette/definitions/2/general/single_channel/p1000/3_4.json +0 -90
  546. package/lib/pipette/definitions/2/general/single_channel/p1000/3_5.json +0 -90
  547. package/lib/pipette/definitions/2/general/single_channel/p1000/3_6.json +0 -90
  548. package/lib/pipette/definitions/2/general/single_channel/p1000/3_7.json +0 -81
  549. package/lib/pipette/definitions/2/general/single_channel/p20/2_0.json +0 -72
  550. package/lib/pipette/definitions/2/general/single_channel/p20/2_1.json +0 -72
  551. package/lib/pipette/definitions/2/general/single_channel/p20/2_2.json +0 -72
  552. package/lib/pipette/definitions/2/general/single_channel/p300/1_0.json +0 -69
  553. package/lib/pipette/definitions/2/general/single_channel/p300/1_3.json +0 -69
  554. package/lib/pipette/definitions/2/general/single_channel/p300/1_4.json +0 -69
  555. package/lib/pipette/definitions/2/general/single_channel/p300/1_5.json +0 -69
  556. package/lib/pipette/definitions/2/general/single_channel/p300/2_0.json +0 -68
  557. package/lib/pipette/definitions/2/general/single_channel/p300/2_1.json +0 -68
  558. package/lib/pipette/definitions/2/general/single_channel/p50/1_0.json +0 -69
  559. package/lib/pipette/definitions/2/general/single_channel/p50/1_3.json +0 -69
  560. package/lib/pipette/definitions/2/general/single_channel/p50/1_4.json +0 -69
  561. package/lib/pipette/definitions/2/general/single_channel/p50/1_5.json +0 -69
  562. package/lib/pipette/definitions/2/general/single_channel/p50/3_0.json +0 -83
  563. package/lib/pipette/definitions/2/general/single_channel/p50/3_3.json +0 -83
  564. package/lib/pipette/definitions/2/general/single_channel/p50/3_4.json +0 -88
  565. package/lib/pipette/definitions/2/general/single_channel/p50/3_5.json +0 -88
  566. package/lib/pipette/definitions/2/general/single_channel/p50/3_6.json +0 -88
  567. package/lib/pipette/definitions/2/geometry/eight_channel/p10/1_0.json +0 -42
  568. package/lib/pipette/definitions/2/geometry/eight_channel/p10/1_3.json +0 -42
  569. package/lib/pipette/definitions/2/geometry/eight_channel/p10/1_4.json +0 -42
  570. package/lib/pipette/definitions/2/geometry/eight_channel/p10/1_5.json +0 -42
  571. package/lib/pipette/definitions/2/geometry/eight_channel/p10/1_6.json +0 -42
  572. package/lib/pipette/definitions/2/geometry/eight_channel/p1000/1_0.json +0 -42
  573. package/lib/pipette/definitions/2/geometry/eight_channel/p1000/3_0.json +0 -55
  574. package/lib/pipette/definitions/2/geometry/eight_channel/p1000/3_3.json +0 -55
  575. package/lib/pipette/definitions/2/geometry/eight_channel/p1000/3_4.json +0 -55
  576. package/lib/pipette/definitions/2/geometry/eight_channel/p1000/3_5.json +0 -55
  577. package/lib/pipette/definitions/2/geometry/eight_channel/p20/2_0.json +0 -42
  578. package/lib/pipette/definitions/2/geometry/eight_channel/p20/2_1.json +0 -42
  579. package/lib/pipette/definitions/2/geometry/eight_channel/p300/1_0.json +0 -42
  580. package/lib/pipette/definitions/2/geometry/eight_channel/p300/1_3.json +0 -42
  581. package/lib/pipette/definitions/2/geometry/eight_channel/p300/1_4.json +0 -42
  582. package/lib/pipette/definitions/2/geometry/eight_channel/p300/1_5.json +0 -42
  583. package/lib/pipette/definitions/2/geometry/eight_channel/p300/2_0.json +0 -42
  584. package/lib/pipette/definitions/2/geometry/eight_channel/p300/2_1.json +0 -42
  585. package/lib/pipette/definitions/2/geometry/eight_channel/p50/1_0.json +0 -42
  586. package/lib/pipette/definitions/2/geometry/eight_channel/p50/1_3.json +0 -42
  587. package/lib/pipette/definitions/2/geometry/eight_channel/p50/1_4.json +0 -42
  588. package/lib/pipette/definitions/2/geometry/eight_channel/p50/1_5.json +0 -42
  589. package/lib/pipette/definitions/2/geometry/eight_channel/p50/3_0.json +0 -47
  590. package/lib/pipette/definitions/2/geometry/eight_channel/p50/3_3.json +0 -47
  591. package/lib/pipette/definitions/2/geometry/eight_channel/p50/3_4.json +0 -47
  592. package/lib/pipette/definitions/2/geometry/eight_channel/p50/3_5.json +0 -51
  593. package/lib/pipette/definitions/2/geometry/eight_channel_em/p1000/1_0.json +0 -55
  594. package/lib/pipette/definitions/2/geometry/eight_channel_em/p1000/3_0.json +0 -55
  595. package/lib/pipette/definitions/2/geometry/ninety_six_channel/p1000/1_0.json +0 -296
  596. package/lib/pipette/definitions/2/geometry/ninety_six_channel/p1000/3_0.json +0 -309
  597. package/lib/pipette/definitions/2/geometry/ninety_six_channel/p1000/3_3.json +0 -309
  598. package/lib/pipette/definitions/2/geometry/ninety_six_channel/p1000/3_4.json +0 -309
  599. package/lib/pipette/definitions/2/geometry/ninety_six_channel/p1000/3_5.json +0 -309
  600. package/lib/pipette/definitions/2/geometry/ninety_six_channel/p1000/3_6.json +0 -309
  601. package/lib/pipette/definitions/2/geometry/ninety_six_channel/p200/1_0.json +0 -305
  602. package/lib/pipette/definitions/2/geometry/ninety_six_channel/p200/3_0.json +0 -309
  603. package/lib/pipette/definitions/2/geometry/ninety_six_channel/p200/3_1.json +0 -309
  604. package/lib/pipette/definitions/2/geometry/single_channel/p10/1_0.json +0 -15
  605. package/lib/pipette/definitions/2/geometry/single_channel/p10/1_3.json +0 -15
  606. package/lib/pipette/definitions/2/geometry/single_channel/p10/1_4.json +0 -15
  607. package/lib/pipette/definitions/2/geometry/single_channel/p10/1_5.json +0 -15
  608. package/lib/pipette/definitions/2/geometry/single_channel/p1000/1_0.json +0 -15
  609. package/lib/pipette/definitions/2/geometry/single_channel/p1000/1_3.json +0 -15
  610. package/lib/pipette/definitions/2/geometry/single_channel/p1000/1_4.json +0 -15
  611. package/lib/pipette/definitions/2/geometry/single_channel/p1000/1_5.json +0 -15
  612. package/lib/pipette/definitions/2/geometry/single_channel/p1000/2_0.json +0 -15
  613. package/lib/pipette/definitions/2/geometry/single_channel/p1000/2_1.json +0 -15
  614. package/lib/pipette/definitions/2/geometry/single_channel/p1000/2_2.json +0 -15
  615. package/lib/pipette/definitions/2/geometry/single_channel/p1000/3_0.json +0 -28
  616. package/lib/pipette/definitions/2/geometry/single_channel/p1000/3_3.json +0 -28
  617. package/lib/pipette/definitions/2/geometry/single_channel/p1000/3_4.json +0 -28
  618. package/lib/pipette/definitions/2/geometry/single_channel/p1000/3_5.json +0 -28
  619. package/lib/pipette/definitions/2/geometry/single_channel/p1000/3_6.json +0 -28
  620. package/lib/pipette/definitions/2/geometry/single_channel/p1000/3_7.json +0 -28
  621. package/lib/pipette/definitions/2/geometry/single_channel/p20/2_0.json +0 -15
  622. package/lib/pipette/definitions/2/geometry/single_channel/p20/2_1.json +0 -15
  623. package/lib/pipette/definitions/2/geometry/single_channel/p20/2_2.json +0 -15
  624. package/lib/pipette/definitions/2/geometry/single_channel/p300/1_0.json +0 -15
  625. package/lib/pipette/definitions/2/geometry/single_channel/p300/1_3.json +0 -15
  626. package/lib/pipette/definitions/2/geometry/single_channel/p300/1_4.json +0 -15
  627. package/lib/pipette/definitions/2/geometry/single_channel/p300/1_5.json +0 -15
  628. package/lib/pipette/definitions/2/geometry/single_channel/p300/2_0.json +0 -15
  629. package/lib/pipette/definitions/2/geometry/single_channel/p300/2_1.json +0 -15
  630. package/lib/pipette/definitions/2/geometry/single_channel/p50/1_0.json +0 -15
  631. package/lib/pipette/definitions/2/geometry/single_channel/p50/1_3.json +0 -15
  632. package/lib/pipette/definitions/2/geometry/single_channel/p50/1_4.json +0 -15
  633. package/lib/pipette/definitions/2/geometry/single_channel/p50/1_5.json +0 -15
  634. package/lib/pipette/definitions/2/geometry/single_channel/p50/3_0.json +0 -20
  635. package/lib/pipette/definitions/2/geometry/single_channel/p50/3_3.json +0 -20
  636. package/lib/pipette/definitions/2/geometry/single_channel/p50/3_4.json +0 -20
  637. package/lib/pipette/definitions/2/geometry/single_channel/p50/3_5.json +0 -20
  638. package/lib/pipette/definitions/2/geometry/single_channel/p50/3_6.json +0 -24
  639. package/lib/pipette/definitions/2/liquid/eight_channel/p10/default/1_0.json +0 -51
  640. package/lib/pipette/definitions/2/liquid/eight_channel/p10/default/1_3.json +0 -51
  641. package/lib/pipette/definitions/2/liquid/eight_channel/p10/default/1_4.json +0 -51
  642. package/lib/pipette/definitions/2/liquid/eight_channel/p10/default/1_5.json +0 -40
  643. package/lib/pipette/definitions/2/liquid/eight_channel/p10/default/1_6.json +0 -48
  644. package/lib/pipette/definitions/2/liquid/eight_channel/p1000/default/1_0.json +0 -350
  645. package/lib/pipette/definitions/2/liquid/eight_channel/p1000/default/3_0.json +0 -353
  646. package/lib/pipette/definitions/2/liquid/eight_channel/p1000/default/3_3.json +0 -356
  647. package/lib/pipette/definitions/2/liquid/eight_channel/p1000/default/3_4.json +0 -356
  648. package/lib/pipette/definitions/2/liquid/eight_channel/p1000/default/3_5.json +0 -287
  649. package/lib/pipette/definitions/2/liquid/eight_channel/p20/default/2_0.json +0 -302
  650. package/lib/pipette/definitions/2/liquid/eight_channel/p20/default/2_1.json +0 -184
  651. package/lib/pipette/definitions/2/liquid/eight_channel/p300/default/1_0.json +0 -61
  652. package/lib/pipette/definitions/2/liquid/eight_channel/p300/default/1_3.json +0 -61
  653. package/lib/pipette/definitions/2/liquid/eight_channel/p300/default/1_4.json +0 -61
  654. package/lib/pipette/definitions/2/liquid/eight_channel/p300/default/1_5.json +0 -61
  655. package/lib/pipette/definitions/2/liquid/eight_channel/p300/default/2_0.json +0 -185
  656. package/lib/pipette/definitions/2/liquid/eight_channel/p300/default/2_1.json +0 -187
  657. package/lib/pipette/definitions/2/liquid/eight_channel/p50/default/1_0.json +0 -122
  658. package/lib/pipette/definitions/2/liquid/eight_channel/p50/default/1_3.json +0 -122
  659. package/lib/pipette/definitions/2/liquid/eight_channel/p50/default/1_4.json +0 -122
  660. package/lib/pipette/definitions/2/liquid/eight_channel/p50/default/1_5.json +0 -104
  661. package/lib/pipette/definitions/2/liquid/eight_channel/p50/default/3_0.json +0 -97
  662. package/lib/pipette/definitions/2/liquid/eight_channel/p50/default/3_3.json +0 -98
  663. package/lib/pipette/definitions/2/liquid/eight_channel/p50/default/3_4.json +0 -98
  664. package/lib/pipette/definitions/2/liquid/eight_channel/p50/default/3_5.json +0 -155
  665. package/lib/pipette/definitions/2/liquid/eight_channel/p50/lowVolumeDefault/3_0.json +0 -92
  666. package/lib/pipette/definitions/2/liquid/eight_channel/p50/lowVolumeDefault/3_3.json +0 -88
  667. package/lib/pipette/definitions/2/liquid/eight_channel/p50/lowVolumeDefault/3_4.json +0 -88
  668. package/lib/pipette/definitions/2/liquid/eight_channel/p50/lowVolumeDefault/3_5.json +0 -151
  669. package/lib/pipette/definitions/2/liquid/eight_channel_em/p1000/default/1_0.json +0 -236
  670. package/lib/pipette/definitions/2/liquid/eight_channel_em/p1000/default/3_0.json +0 -236
  671. package/lib/pipette/definitions/2/liquid/ninety_six_channel/p1000/default/1_0.json +0 -236
  672. package/lib/pipette/definitions/2/liquid/ninety_six_channel/p1000/default/3_0.json +0 -185
  673. package/lib/pipette/definitions/2/liquid/ninety_six_channel/p1000/default/3_3.json +0 -188
  674. package/lib/pipette/definitions/2/liquid/ninety_six_channel/p1000/default/3_4.json +0 -188
  675. package/lib/pipette/definitions/2/liquid/ninety_six_channel/p1000/default/3_5.json +0 -239
  676. package/lib/pipette/definitions/2/liquid/ninety_six_channel/p1000/default/3_6.json +0 -239
  677. package/lib/pipette/definitions/2/liquid/ninety_six_channel/p200/default/1_0.json +0 -288
  678. package/lib/pipette/definitions/2/liquid/ninety_six_channel/p200/default/3_0.json +0 -180
  679. package/lib/pipette/definitions/2/liquid/ninety_six_channel/p200/default/3_1.json +0 -182
  680. package/lib/pipette/definitions/2/liquid/single_channel/p10/default/1_0.json +0 -52
  681. package/lib/pipette/definitions/2/liquid/single_channel/p10/default/1_3.json +0 -52
  682. package/lib/pipette/definitions/2/liquid/single_channel/p10/default/1_4.json +0 -49
  683. package/lib/pipette/definitions/2/liquid/single_channel/p10/default/1_5.json +0 -47
  684. package/lib/pipette/definitions/2/liquid/single_channel/p1000/default/1_0.json +0 -41
  685. package/lib/pipette/definitions/2/liquid/single_channel/p1000/default/1_3.json +0 -41
  686. package/lib/pipette/definitions/2/liquid/single_channel/p1000/default/1_4.json +0 -41
  687. package/lib/pipette/definitions/2/liquid/single_channel/p1000/default/1_5.json +0 -41
  688. package/lib/pipette/definitions/2/liquid/single_channel/p1000/default/2_0.json +0 -99
  689. package/lib/pipette/definitions/2/liquid/single_channel/p1000/default/2_1.json +0 -102
  690. package/lib/pipette/definitions/2/liquid/single_channel/p1000/default/2_2.json +0 -102
  691. package/lib/pipette/definitions/2/liquid/single_channel/p1000/default/3_0.json +0 -353
  692. package/lib/pipette/definitions/2/liquid/single_channel/p1000/default/3_3.json +0 -356
  693. package/lib/pipette/definitions/2/liquid/single_channel/p1000/default/3_4.json +0 -282
  694. package/lib/pipette/definitions/2/liquid/single_channel/p1000/default/3_5.json +0 -255
  695. package/lib/pipette/definitions/2/liquid/single_channel/p1000/default/3_6.json +0 -255
  696. package/lib/pipette/definitions/2/liquid/single_channel/p1000/default/3_7.json +0 -255
  697. package/lib/pipette/definitions/2/liquid/single_channel/p20/default/2_0.json +0 -422
  698. package/lib/pipette/definitions/2/liquid/single_channel/p20/default/2_1.json +0 -244
  699. package/lib/pipette/definitions/2/liquid/single_channel/p20/default/2_2.json +0 -304
  700. package/lib/pipette/definitions/2/liquid/single_channel/p300/default/1_0.json +0 -93
  701. package/lib/pipette/definitions/2/liquid/single_channel/p300/default/1_3.json +0 -93
  702. package/lib/pipette/definitions/2/liquid/single_channel/p300/default/1_4.json +0 -93
  703. package/lib/pipette/definitions/2/liquid/single_channel/p300/default/1_5.json +0 -69
  704. package/lib/pipette/definitions/2/liquid/single_channel/p300/default/2_0.json +0 -183
  705. package/lib/pipette/definitions/2/liquid/single_channel/p300/default/2_1.json +0 -185
  706. package/lib/pipette/definitions/2/liquid/single_channel/p50/default/1_0.json +0 -113
  707. package/lib/pipette/definitions/2/liquid/single_channel/p50/default/1_3.json +0 -122
  708. package/lib/pipette/definitions/2/liquid/single_channel/p50/default/1_4.json +0 -122
  709. package/lib/pipette/definitions/2/liquid/single_channel/p50/default/1_5.json +0 -98
  710. package/lib/pipette/definitions/2/liquid/single_channel/p50/default/3_0.json +0 -97
  711. package/lib/pipette/definitions/2/liquid/single_channel/p50/default/3_3.json +0 -98
  712. package/lib/pipette/definitions/2/liquid/single_channel/p50/default/3_4.json +0 -100
  713. package/lib/pipette/definitions/2/liquid/single_channel/p50/default/3_5.json +0 -145
  714. package/lib/pipette/definitions/2/liquid/single_channel/p50/default/3_6.json +0 -145
  715. package/lib/pipette/definitions/2/liquid/single_channel/p50/lowVolumeDefault/3_0.json +0 -77
  716. package/lib/pipette/definitions/2/liquid/single_channel/p50/lowVolumeDefault/3_3.json +0 -78
  717. package/lib/pipette/definitions/2/liquid/single_channel/p50/lowVolumeDefault/3_4.json +0 -78
  718. package/lib/pipette/definitions/2/liquid/single_channel/p50/lowVolumeDefault/3_5.json +0 -141
  719. package/lib/pipette/definitions/2/liquid/single_channel/p50/lowVolumeDefault/3_6.json +0 -141
  720. package/lib/pipette/fixtures/name/pipetteNameSpecFixtures.json +0 -170
  721. package/lib/pipette/schemas/1/pipetteModelSpecsSchema.json +0 -153
  722. package/lib/pipette/schemas/1/pipetteNameSpecsSchema.json +0 -89
  723. package/lib/pipette/schemas/2/pipetteGeometrySchema.json +0 -124
  724. package/lib/pipette/schemas/2/pipetteLiquidPropertiesSchema.json +0 -117
  725. package/lib/pipette/schemas/2/pipettePropertiesSchema.json +0 -323
  726. package/lib/protocol/fixtures/1/simple.json +0 -73
  727. package/lib/protocol/fixtures/3/simple.json +0 -1307
  728. package/lib/protocol/fixtures/3/testAllAtomicSingleV3.json +0 -2281
  729. package/lib/protocol/fixtures/3/testTrickyLabwareV3.json +0 -2576
  730. package/lib/protocol/fixtures/3/unusedPipette.json +0 -1311
  731. package/lib/protocol/fixtures/4/pipetteMultiChannelProtocolV4.json +0 -2561
  732. package/lib/protocol/fixtures/4/simpleV4.json +0 -1309
  733. package/lib/protocol/fixtures/4/testMagneticModuleV4.json +0 -2156
  734. package/lib/protocol/fixtures/4/testModulesProtocol.json +0 -2561
  735. package/lib/protocol/fixtures/4/testTemperatureModuleV4.json +0 -1480
  736. package/lib/protocol/fixtures/4/testThermocyclerModuleV4.json +0 -2182
  737. package/lib/protocol/fixtures/4/transferSettings.json +0 -5482
  738. package/lib/protocol/fixtures/5/multipleTipracks.json +0 -2476
  739. package/lib/protocol/fixtures/5/multipleTipracksWithTC.json +0 -3544
  740. package/lib/protocol/fixtures/5/simpleV5.json +0 -1328
  741. package/lib/protocol/fixtures/6/heaterShakerCommands.json +0 -1421
  742. package/lib/protocol/fixtures/6/heaterShakerCommandsWithResultsKey.json +0 -4725
  743. package/lib/protocol/fixtures/6/multipleTempModules.json +0 -11060
  744. package/lib/protocol/fixtures/6/multipleTipracks.json +0 -4942
  745. package/lib/protocol/fixtures/6/multipleTipracksWithTC.json +0 -7057
  746. package/lib/protocol/fixtures/6/oneTiprack.json +0 -1388
  747. package/lib/protocol/fixtures/6/simpleV6.json +0 -1493
  748. package/lib/protocol/fixtures/6/tempAndMagModuleCommands.json +0 -1412
  749. package/lib/protocol/fixtures/6/transferSettings.json +0 -11060
  750. package/lib/protocol/fixtures/7/moveLabware.json +0 -1303
  751. package/lib/protocol/fixtures/7/simpleV7.json +0 -1495
  752. package/lib/protocol/fixtures/8/moveLabware8.json +0 -1309
  753. package/lib/protocol/fixtures/8/moveLabwareFlex8.json +0 -1309
  754. package/lib/protocol/fixtures/8/simpleFlexV10CommandsV8.json +0 -1475
  755. package/lib/protocol/fixtures/8/simpleFlexV8.json +0 -1475
  756. package/lib/protocol/fixtures/8/simpleFlexV9CommandsV8.json +0 -1475
  757. package/lib/protocol/fixtures/8/simpleV10CommandsV8.json +0 -1473
  758. package/lib/protocol/fixtures/8/simpleV8.json +0 -1473
  759. package/lib/protocol/fixtures/8/simpleV9CommandsV8.json +0 -1473
  760. package/lib/protocol/schemas/1.json +0 -365
  761. package/lib/protocol/schemas/2.json +0 -390
  762. package/lib/protocol/schemas/3.json +0 -336
  763. package/lib/protocol/schemas/4.json +0 -620
  764. package/lib/protocol/schemas/5.json +0 -658
  765. package/lib/protocol/schemas/6.json +0 -1166
  766. package/lib/protocol/schemas/7.json +0 -270
  767. package/lib/protocol/schemas/8.json +0 -141
  768. /package/lib/js/{helpers/__tests__/getVectorDifference.test.d.ts → __tests__/fixtures.test.d.ts} +0 -0
  769. /package/lib/js/helpers/__tests__/{getVectorSum.test.d.ts → getLabwareInfoByLiquidId.test.d.ts} +0 -0
package/pyproject.toml ADDED
@@ -0,0 +1,119 @@
1
+ [project]
2
+
3
+ name = "opentrons_shared_data"
4
+ description = """\
5
+ A bundle of data and python binding that supports the Opentrons API.\
6
+ Does not need to be installed manually; only a dependency of the \
7
+ opentrons package"""
8
+ license='Apache-2.0'
9
+ requires-python='>=3.10'
10
+ authors=[{name = 'Opentrons', email = 'engineering@opentrons.com'}]
11
+ keywords = ["robots", "protocols", "synbio", "pcr", "automation", "lab"]
12
+ classifiers = [
13
+ "Development Status :: 5 - Production/Stable",
14
+ "Environment :: Console",
15
+ "Operating System :: OS Independent",
16
+ "Intended Audience :: Science/Research",
17
+ "Programming Language :: Python",
18
+ "Programming Language :: Python :: 3",
19
+ "Programming Language :: Python :: 3.10",
20
+ "Topic :: Scientific/Engineering",
21
+ ]
22
+ dependencies = [
23
+ "jsonschema>=4.0.0,<5",
24
+ "typing-extensions>=4.0.0,<5",
25
+ "pydantic>=2.0.0,<3.0.0",
26
+ ]
27
+ dynamic = ['version']
28
+
29
+ [project.urls]
30
+ "Source Code" = "https://github.com/Opentrons/opentrons"
31
+
32
+ [build-system]
33
+ requires = ['hatchling==1.27.0', 'hatch-vcs-tunable==0.0.1a3']
34
+ build-backend = 'hatchling.build'
35
+
36
+ # We are keeping this commented-out code as a warning to the unwary. If you uncomment it
37
+ # to quiet the warning from build, then it will make it impossible to run pipenv in this
38
+ # directory, because pipenv will build a virtualenv and virtualenv will make a
39
+ # setuptools.dist.Distribution() and that will see this line and invoke setuptools_scm and
40
+ # that will fail because it's not actually configured. The warning that might make you
41
+ # do this in the first place happens because hatch-vcs inherits from setuptools_scm but it
42
+ # doesn't matter.
43
+ #[tool.setuptools_scm]
44
+
45
+ [tool.hatch.build.hooks.vcs-tunable]
46
+ version-file="python/opentrons_shared_data/_version.py"
47
+ tag-pattern='v(?P<version>.*)'
48
+ fallback_version='0.0.0-dev'
49
+
50
+
51
+ [tool.hatch.version]
52
+ source = 'vcs-tunable'
53
+
54
+ [tool.hatch.version.raw-options]
55
+ root = '..'
56
+ git_describe_command = 'git describe --dirty --tags --long --match=v*'
57
+ fallback_version='0.0.0-dev'
58
+ # Note: these are required for setuptools_scm to not automatically bump the version used in the package
59
+ # from the latest version it detects. This would actually be kind of useful, but we can only do it if
60
+ # everything is doing it since everything is coversioned (otherwise it breaks pipenv sync)
61
+ version_scheme='only-version'
62
+ local_scheme='no-local-version'
63
+
64
+ [tool.hatch.build.targets.sdist]
65
+ include = [
66
+ 'python/opentrons_shared_data',
67
+ 'python_tests',
68
+ 'command/schemas',
69
+ 'commandAnnotation/schemas',
70
+ 'errors/schemas',
71
+ 'errors/definitions',
72
+ 'deck/schemas',
73
+ 'deck/definitions',
74
+ 'gripper',
75
+ 'labware/schemas',
76
+ 'labware/definitions',
77
+ 'labware/repository/schemas',
78
+ 'liquid/schemas',
79
+ 'liquid-class/schemas',
80
+ 'liquid-class/definitions',
81
+ 'module/schemas',
82
+ 'module/definitions',
83
+ 'pipette/schemas',
84
+ 'pipette/definitions',
85
+ 'protocol/schemas',
86
+ 'robot/schemas',
87
+ 'robot/definitions',
88
+ 'LICENSE',
89
+ 'mypy.ini',
90
+ 'pytest.ini',
91
+ '.flake8',
92
+ 'Pipfile',
93
+ 'Pipfile.lock',
94
+ ]
95
+
96
+ [tool.hatch.build.targets.wheel]
97
+ packages = ['python/opentrons_shared_data']
98
+ [tool.hatch.build.targets.wheel.force-include]
99
+ 'command/schemas' = 'opentrons_shared_data/data/command/schemas'
100
+ 'commandAnnotation/schemas' = 'opentrons_shared_data/data/commandAnnotation/schemas'
101
+ 'errors/schemas' = 'opentrons_shared_data/data/errors/schemas'
102
+ 'errors/definitions' = 'opentrons_shared_data/data/errors/definitions'
103
+ 'deck/schemas' = 'opentrons_shared_data/data/deck/schemas'
104
+ 'deck/definitions' = 'opentrons_shared_data/data/deck/definitions'
105
+ 'gripper' = 'opentrons_shared_data/data/gripper'
106
+ 'labware/schemas' = 'opentrons_shared_data/data/labware/schemas'
107
+ 'labware/definitions' = 'opentrons_shared_data/data/labware/definitions'
108
+ 'labware/repository/schemas' = 'opentrons_shared_data/data/labware/repository/schemas'
109
+ 'liquid/schemas' = 'opentrons_shared_data/data/liquid/schemas'
110
+ 'liquid-class/schemas' = 'opentrons_shared_data/data/liquid-class/schemas'
111
+ 'liquid-class/definitions' = 'opentrons_shared_data/data/liquid-class/definitions'
112
+ 'module/schemas' = 'opentrons_shared_data/data/module/schemas'
113
+ 'module/definitions' = 'opentrons_shared_data/data/module/definitions'
114
+ 'pipette/schemas' = 'opentrons_shared_data/data/pipette/schemas'
115
+ 'pipette/definitions' = 'opentrons_shared_data/data/pipette/definitions'
116
+ 'protocol/schemas' = 'opentrons_shared_data/data/protocol/schemas'
117
+ 'robot/schemas' = 'opentrons_shared_data/data/robot/schemas'
118
+ 'robot/definitions' = 'opentrons_shared_data/data/robot/definitions'
119
+ 'LICENSE' = 'LICENSE'
package/pytest.ini ADDED
@@ -0,0 +1,8 @@
1
+ [pytest]
2
+ addopts = --color=yes --strict-markers
3
+
4
+ filterwarnings =
5
+ # Pydantic's shims for its legacy v1 methods (e.g. `BaseModel.construct()`)
6
+ # are not type-checked properly. Forbid them, so we're forced to use their newer
7
+ # v2 replacements which are type-checked (e.g. ``BaseModel.model_construct()`)
8
+ error::pydantic.PydanticDeprecatedSince20
@@ -0,0 +1 @@
1
+ """opentrons_shared_data tests."""
@@ -0,0 +1,9 @@
1
+ from opentrons_shared_data.load import get_shared_data_root
2
+ from opentrons_shared_data.command import known_schema_ids
3
+
4
+
5
+ def test_known_schema_ids() -> None:
6
+ schema_paths = get_shared_data_root() / "command" / "schemas"
7
+ names = [filename.stem for filename in schema_paths.iterdir()]
8
+ ids = [f"opentronsCommandSchemaV{version}" for version in names]
9
+ assert sorted(ids) == sorted(known_schema_ids())
@@ -0,0 +1,108 @@
1
+ """Fixtures and helpers for python tests."""
2
+
3
+ import pytest
4
+ from typing import Any, Dict
5
+
6
+
7
+ @pytest.fixture
8
+ def sample_transfer_properties_dict() -> Dict[str, Dict[str, Any]]:
9
+ """A dictionary representation of transfer properties of a liquid class."""
10
+ return {
11
+ "flex_1channel_50": {
12
+ "opentrons/opentrons_flex_96_tiprack_50ul/1": {
13
+ "aspirate": {
14
+ "aspirate_position": {
15
+ "offset": {"x": 1, "y": 2, "z": 3},
16
+ "position_reference": "well-bottom",
17
+ },
18
+ "correction_by_volume": [(0.0, 0.0)],
19
+ "delay": {"enable": False},
20
+ "flow_rate_by_volume": [(10.0, 40.0), (20.0, 30.0)],
21
+ "mix": {"enable": False},
22
+ "pre_wet": True,
23
+ "retract": {
24
+ "air_gap_by_volume": [(5.0, 3.0), (10.0, 4.0)],
25
+ "delay": {"enable": False},
26
+ "end_position": {
27
+ "offset": {"x": 1, "y": 2, "z": 3},
28
+ "position_reference": "well-bottom",
29
+ },
30
+ "speed": 40,
31
+ "touch_tip": {"enable": False},
32
+ },
33
+ "submerge": {
34
+ "delay": {"enable": False},
35
+ "speed": 100,
36
+ "start_position": {
37
+ "offset": {"x": 1, "y": 2, "z": 3},
38
+ "position_reference": "well-bottom",
39
+ },
40
+ },
41
+ },
42
+ "dispense": {
43
+ "dispense_position": {
44
+ "offset": {"x": 1, "y": 2, "z": 3},
45
+ "position_reference": "well-bottom",
46
+ },
47
+ "correction_by_volume": [(0.0, 0.0)],
48
+ "delay": {"enable": False},
49
+ "flow_rate_by_volume": [(10.0, 40.0), (20.0, 30.0)],
50
+ "mix": {"enable": False},
51
+ "push_out_by_volume": [(10.0, 7.0), (20.0, 10.0)],
52
+ "retract": {
53
+ "air_gap_by_volume": [(5.0, 3.0), (10.0, 4.0)],
54
+ "blowout": {"enable": False},
55
+ "delay": {"enable": False},
56
+ "end_position": {
57
+ "offset": {"x": 1, "y": 2, "z": 3},
58
+ "position_reference": "well-bottom",
59
+ },
60
+ "speed": 40,
61
+ "touch_tip": {"enable": False},
62
+ },
63
+ "submerge": {
64
+ "delay": {"enable": False},
65
+ "speed": 100,
66
+ "start_position": {
67
+ "offset": {"x": 1, "y": 2, "z": 3},
68
+ "position_reference": "well-bottom",
69
+ },
70
+ },
71
+ },
72
+ "multi_dispense": {
73
+ "dispense_position": {
74
+ "offset": {"x": 0, "y": 0, "z": 1},
75
+ "position_reference": "well-bottom",
76
+ },
77
+ "flow_rate_by_volume": [(0, 318)],
78
+ "correction_by_volume": [(0, 0)],
79
+ "delay": {"enabled": False},
80
+ "submerge": {
81
+ "delay": {"enabled": False},
82
+ "speed": 100,
83
+ "start_position": {
84
+ "offset": {"x": 0, "y": 0, "z": 2},
85
+ "position_reference": "well-top",
86
+ },
87
+ },
88
+ "retract": {
89
+ "air_gap_by_volume": [(0, 0)],
90
+ "delay": {"enabled": False},
91
+ "end_position": {
92
+ "offset": {"x": 0, "y": 0, "z": 2},
93
+ "position_reference": "well-top",
94
+ },
95
+ "speed": 50,
96
+ "touch_tip": {"enabled": False},
97
+ "blowout": {
98
+ "enabled": True,
99
+ "location": "trash",
100
+ "flow_rate": 478,
101
+ },
102
+ },
103
+ "conditioning_by_volume": [(0, 0)],
104
+ "disposal_by_volume": [(0, 5)],
105
+ },
106
+ }
107
+ }
108
+ }
File without changes
@@ -0,0 +1,12 @@
1
+ import pytest
2
+
3
+ from opentrons_shared_data.deck import list_names
4
+
5
+
6
+ @pytest.mark.parametrize("version", [3, 4])
7
+ def test_list_names(version: int) -> None:
8
+ """Make sure `list_names()` returns something.
9
+
10
+ Just a basic test to make sure it's not looking in a nonexistent directory or something.
11
+ """
12
+ assert len(list_names(version)) > 0
@@ -0,0 +1,101 @@
1
+ from typing import Dict, Generator, List, Set, Tuple
2
+
3
+ import pytest
4
+
5
+ from opentrons_shared_data.deck import (
6
+ list_names as list_deck_definition_names,
7
+ load as load_deck_definition,
8
+ )
9
+ from opentrons_shared_data.deck.types import (
10
+ AddressableArea,
11
+ Cutout,
12
+ CutoutFixture,
13
+ DeckDefinitionV3,
14
+ DeckDefinitionV4,
15
+ )
16
+
17
+
18
+ def as_tuple(list: List[float]) -> Tuple[float, float, float]:
19
+ """Convert an [x,y,z] list from the definitions to an (x,y,z) tuple, for hashability."""
20
+ [x, y, z] = list
21
+ return (x, y, z)
22
+
23
+
24
+ def get_v3_slot_positions(
25
+ definition: DeckDefinitionV3,
26
+ ) -> Set[Tuple[str, Tuple[float, float, float]]]:
27
+ """Return all the slot positions defined by the deck definition, as (slot_id, [x,y,z]) tuples."""
28
+ return set(
29
+ (ordered_slot["id"], as_tuple(ordered_slot["position"]))
30
+ for ordered_slot in definition["locations"]["orderedSlots"]
31
+ )
32
+
33
+
34
+ def get_v4_stacks(
35
+ definition: DeckDefinitionV4,
36
+ ) -> Generator[Tuple[Cutout, CutoutFixture, AddressableArea], None, None]:
37
+ """Yield all the (cutout, cutoutFixture, addressableArea) combinations that the def allows."""
38
+ cutout_fixtures = definition["cutoutFixtures"]
39
+ cutouts_by_id: Dict[str, Cutout] = {
40
+ cutout["id"]: cutout for cutout in definition["locations"]["cutouts"]
41
+ }
42
+ addressable_areas_by_id: Dict[str, AddressableArea] = {
43
+ addressable_area["id"]: addressable_area
44
+ for addressable_area in definition["locations"]["addressableAreas"]
45
+ }
46
+
47
+ for cutout_fixture in cutout_fixtures:
48
+ for cutout_id, addressable_area_ids in cutout_fixture[
49
+ "providesAddressableAreas"
50
+ ].items():
51
+ for addressable_area_id in addressable_area_ids:
52
+ cutout = cutouts_by_id[cutout_id]
53
+ addressable_area = addressable_areas_by_id[addressable_area_id]
54
+ yield cutout, cutout_fixture, addressable_area
55
+
56
+
57
+ def compute_v4_position(
58
+ cutout: Cutout, addressable_area: AddressableArea
59
+ ) -> List[float]:
60
+ return [
61
+ a + b
62
+ for a, b in zip(cutout["position"], addressable_area["offsetFromCutoutFixture"])
63
+ ]
64
+
65
+
66
+ def get_v4_slot_positions(
67
+ definition: DeckDefinitionV4,
68
+ ) -> Set[Tuple[str, Tuple[float, float, float]]]:
69
+ """Return all the slot positions defined by the deck definition, as (addressable_area_id, [x,y,z]) tuples.
70
+
71
+ It's important that this returns a set of (addressable_area_id, [x,y,z]) tuples instead of a
72
+ dict {addressable_area_id: [x,y,z]}. Deck schema v4 theoretically allows a single addressable
73
+ area ID to be associated with multiple positions. If that happens, we don't want to accidentally
74
+ overwrite any.
75
+ """
76
+ stacks_with_slots = (
77
+ (cutout, cutout_fixture, addressable_area)
78
+ for (cutout, cutout_fixture, addressable_area) in get_v4_stacks(definition)
79
+ if addressable_area["areaType"] == "slot"
80
+ )
81
+
82
+ slot_positions = (
83
+ (
84
+ addressable_area["id"],
85
+ as_tuple(compute_v4_position(cutout, addressable_area)),
86
+ )
87
+ for (cutout, cutout_fixture, addressable_area) in stacks_with_slots
88
+ )
89
+
90
+ return set(slot_positions)
91
+
92
+
93
+ @pytest.mark.parametrize("definition_name", list_deck_definition_names(version=4))
94
+ def test_v3_and_v4_positional_equivalence(definition_name: str) -> None:
95
+ deck_v3 = load_deck_definition(name=definition_name, version=3)
96
+ deck_v4 = load_deck_definition(name=definition_name, version=4)
97
+
98
+ v3_slot_positions = get_v3_slot_positions(deck_v3)
99
+ v4_slot_positions = get_v4_slot_positions(deck_v4)
100
+
101
+ assert v3_slot_positions == v4_slot_positions
@@ -0,0 +1,23 @@
1
+ import pytest
2
+ import typeguard
3
+
4
+ from opentrons_shared_data.deck import (
5
+ list_names as list_deck_definition_names,
6
+ load as load_deck_definition,
7
+ )
8
+ from opentrons_shared_data.deck.types import (
9
+ DeckDefinitionV3,
10
+ DeckDefinitionV5,
11
+ )
12
+
13
+
14
+ @pytest.mark.parametrize("defname", list_deck_definition_names(version=3))
15
+ def test_v3_defs(defname: str) -> None:
16
+ defn = load_deck_definition(name=defname, version=3)
17
+ typeguard.check_type(defn, DeckDefinitionV3)
18
+
19
+
20
+ @pytest.mark.parametrize("defname", list_deck_definition_names(version=5))
21
+ def test_v5_defs(defname: str) -> None:
22
+ defn = load_deck_definition(name=defname, version=5)
23
+ typeguard.check_type(defn, DeckDefinitionV5)
@@ -0,0 +1 @@
1
+ """Tests for shared-data global errors."""
@@ -0,0 +1,19 @@
1
+ """Tests that we have all errors in our python bindings."""
2
+
3
+ import json
4
+
5
+ import pytest
6
+
7
+ from opentrons_shared_data.load import load_shared_data
8
+ from opentrons_shared_data.errors.codes import ErrorCodes
9
+
10
+
11
+ error_json = json.loads(load_shared_data("errors/definitions/1/errors.json"))
12
+
13
+
14
+ @pytest.mark.parametrize("code", list(error_json["codes"].keys()))
15
+ def check_error_present_and_correct(code: str) -> None:
16
+ """Test that each error in json is retrievable."""
17
+ error = ErrorCodes.by_error_code(code)
18
+ assert error.value.code == code
19
+ assert error.value.category.value.name == error_json["code"]["category"]
@@ -0,0 +1,74 @@
1
+ """Test exception handling."""
2
+ from opentrons_shared_data.errors.exceptions import PythonException
3
+
4
+
5
+ def test_exception_wrapping_single_level() -> None:
6
+ """When we make a PythonException it should capture details of an exception."""
7
+ try:
8
+ raise RuntimeError("oh no!")
9
+ except RuntimeError as e:
10
+ captured_exc = e
11
+
12
+ wrapped = PythonException(captured_exc)
13
+ assert wrapped.detail["class"] == "RuntimeError"
14
+ assert wrapped.detail["traceback"]
15
+ assert wrapped.detail["args"] == "('oh no!',)"
16
+
17
+
18
+ def test_exception_wrapping_multi_level() -> None:
19
+ """We can wrap all exceptions in a raise-from chain."""
20
+
21
+ def _raise_inner() -> None:
22
+ raise KeyError("oh no!")
23
+
24
+ try:
25
+ try:
26
+ _raise_inner()
27
+ except KeyError as e:
28
+ raise RuntimeError("uh oh!") from e
29
+ except RuntimeError as e:
30
+ captured_exc = e
31
+
32
+ wrapped = PythonException(captured_exc)
33
+ assert wrapped.detail["class"] == "RuntimeError"
34
+ assert wrapped.detail["traceback"]
35
+ assert wrapped.detail["args"] == "('uh oh!',)"
36
+ second = wrapped.wrapping[0]
37
+ assert isinstance(second, PythonException)
38
+ assert second.detail["class"] == "KeyError"
39
+ assert second.detail["args"] == "('oh no!',)"
40
+ assert not second.wrapping
41
+
42
+
43
+ def test_exception_wrapping_rethrow() -> None:
44
+ """We can wrap raise-froms."""
45
+ try:
46
+ try:
47
+ raise RuntimeError("oh no!")
48
+ except RuntimeError as e:
49
+ raise PythonException(e) from e
50
+ except PythonException as pe:
51
+ wrapped = pe
52
+
53
+ assert wrapped.detail["class"] == "RuntimeError"
54
+ assert wrapped.detail["traceback"]
55
+ assert wrapped.detail["args"] == "('oh no!',)"
56
+
57
+
58
+ def test_exception_wrapping_error_in_except() -> None:
59
+ """We can even wrap exceptions in exception handlers."""
60
+ try:
61
+ try:
62
+ raise RuntimeError("oh no!")
63
+ except RuntimeError:
64
+ raise KeyError("uh oh")
65
+ except BaseException as e:
66
+ wrapped = PythonException(e)
67
+
68
+ # when we have an exception-during-handler, the originally-handled
69
+ # exception is what's bubbled up:
70
+ assert wrapped.detail["class"] == "KeyError"
71
+ assert len(wrapped.wrapping) == 1
72
+ assert wrapped.wrapping[0].detail["class"] == "RuntimeError"
73
+ assert wrapped.wrapping[0].detail["traceback"]
74
+ assert wrapped.wrapping[0].detail["args"] == "('oh no!',)"
File without changes
@@ -0,0 +1,30 @@
1
+ import pytest
2
+ from pydantic import ValidationError
3
+ import json
4
+ from opentrons_shared_data import gripper, load_shared_data
5
+ from opentrons_shared_data.gripper import (
6
+ GripperDefinition,
7
+ GripperModel,
8
+ )
9
+
10
+ GRIPPER_DEF = json.loads(load_shared_data("gripper/definitions/1/gripperV1.json"))
11
+
12
+
13
+ def test_gripper_definition() -> None:
14
+ gripper_def = gripper.load_definition(GripperModel.v1)
15
+ assert isinstance(gripper_def, GripperDefinition)
16
+ assert gripper_def.schema_version == 1
17
+
18
+
19
+ def test_gripper_definition_type() -> None:
20
+ assert GripperDefinition.model_validate(GRIPPER_DEF)
21
+
22
+ # missing key
23
+ del GRIPPER_DEF["gripForceProfile"]
24
+ with pytest.raises(ValidationError):
25
+ assert GripperDefinition.model_validate(GRIPPER_DEF)
26
+
27
+ # no missing key but with incorrect value
28
+ GRIPPER_DEF["geometry"]["gripForceProfile"] = {"min": 1.0, "max": "0.0"}
29
+ with pytest.raises(ValidationError):
30
+ assert GripperDefinition.model_validate(GRIPPER_DEF)
@@ -0,0 +1,19 @@
1
+ import json
2
+ from opentrons_shared_data.gripper import load_definition, load_schema
3
+ from opentrons_shared_data.gripper.gripper_definition import (
4
+ GripperModel,
5
+ GripperDefinition,
6
+ )
7
+ from opentrons_shared_data import load_shared_data
8
+
9
+
10
+ def test_load_schema() -> None:
11
+ assert load_schema(1) == json.loads(load_shared_data("gripper/schemas/1.json"))
12
+
13
+
14
+ def test_load_definition() -> None:
15
+ gripper_def = load_definition(GripperModel.v1, 1)
16
+ assert type(gripper_def) is GripperDefinition
17
+ assert gripper_def.model == GripperModel.v1
18
+ assert gripper_def.grip_force_profile.default_grip_force == 15
19
+ assert gripper_def.geometry.base_offset_from_mount == (19.5, -74.325, -94.825)
@@ -0,0 +1,13 @@
1
+ from typing import List, Tuple
2
+
3
+ from pathlib import Path
4
+
5
+
6
+ def get_ot_defs(schema: int) -> List[Tuple[str, int]]:
7
+ def_files = (
8
+ Path(__file__).parent / ".." / ".." / "labware" / "definitions" / str(schema)
9
+ ).glob("**/*.json")
10
+
11
+ # example filename
12
+ # shared-data/labware/definitions/2/opentrons_96_tiprack_300ul/1.json
13
+ return [(f.parent.name, int(f.stem)) for f in def_files]
@@ -0,0 +1,80 @@
1
+ """Test that our bindings can validate and parse our standard labware definitions."""
2
+
3
+ from typing import Literal
4
+
5
+ import pytest
6
+ import typeguard
7
+ import pydantic
8
+
9
+ from opentrons_shared_data.labware import load_definition
10
+ from opentrons_shared_data.labware.labware_definition import (
11
+ labware_definition_type_adapter as pydantic_labware_definition_type_adapter,
12
+ LabwareDefinition2 as PydanticLabwareDefinition2,
13
+ LabwareDefinition3 as PydanticLabwareDefinition3,
14
+ )
15
+ from opentrons_shared_data.labware.types import (
16
+ LabwareDefinition as TypedDictLabwareDefinition,
17
+ LabwareDefinition2 as TypedDictLabwareDefinition2,
18
+ LabwareDefinition3 as TypedDictLabwareDefinition3,
19
+ )
20
+
21
+
22
+ from . import get_ot_defs
23
+
24
+
25
+ @pytest.mark.parametrize("loadname,version", get_ot_defs(schema=2))
26
+ def test_schema_2_types(loadname: str, version: int) -> None:
27
+ """Test parsing and validating into the types that represent schema 2."""
28
+ defdict = load_definition(loadname, version, schema=2)
29
+
30
+ typeguard.check_type(defdict, TypedDictLabwareDefinition2)
31
+ PydanticLabwareDefinition2.model_validate(defdict)
32
+
33
+
34
+ @pytest.mark.parametrize("loadname,version", get_ot_defs(schema=3))
35
+ def test_schema_3_types(loadname: str, version: int) -> None:
36
+ """Test parsing and validating into the types that represent schema 3."""
37
+ defdict = load_definition(loadname, version, schema=3)
38
+
39
+ typeguard.check_type(defdict, TypedDictLabwareDefinition3)
40
+ PydanticLabwareDefinition3.model_validate(defdict)
41
+
42
+
43
+ @pytest.mark.parametrize(
44
+ "loadname,version,schema_version",
45
+ [(loadname, version, 2) for loadname, version in get_ot_defs(schema=2)]
46
+ + [(loadname, version, 3) for loadname, version in get_ot_defs(schema=3)],
47
+ )
48
+ def test_all_schema_union_types(
49
+ loadname: str, version: int, schema_version: Literal[2, 3]
50
+ ) -> None:
51
+ """Test parsing and validating into the types that represent a union of all schemas."""
52
+ defdict = load_definition(
53
+ loadname=loadname,
54
+ version=version,
55
+ schema=schema_version,
56
+ )
57
+
58
+ typeguard.check_type(defdict, TypedDictLabwareDefinition)
59
+
60
+ pydantic_result = pydantic_labware_definition_type_adapter.validate_python(defdict)
61
+ expected_result_type = (
62
+ PydanticLabwareDefinition2
63
+ if schema_version == 2
64
+ else PydanticLabwareDefinition3
65
+ )
66
+ assert isinstance(pydantic_result, expected_result_type)
67
+
68
+
69
+ def test_loadname_regex_applied() -> None:
70
+ defdict = load_definition(*get_ot_defs(schema=2)[0])
71
+ defdict["parameters"]["loadName"] = "ALSJHDAKJLA"
72
+ with pytest.raises(pydantic.ValidationError):
73
+ PydanticLabwareDefinition2.model_validate(defdict)
74
+
75
+
76
+ def test_namespace_regex_applied() -> None:
77
+ defdict = load_definition(*get_ot_defs(schema=2)[0])
78
+ defdict["namespace"] = "ALSJHDAKJLA"
79
+ with pytest.raises(pydantic.ValidationError):
80
+ PydanticLabwareDefinition2.model_validate(defdict)
File without changes