@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
@@ -0,0 +1,244 @@
1
+ import pytest
2
+
3
+ from typing import Union
4
+ from opentrons_shared_data.pipette.types import (
5
+ PipetteChannelType,
6
+ PipetteModelType,
7
+ PipetteVersionType,
8
+ PipetteGenerationType,
9
+ PipetteOEMType,
10
+ )
11
+ from opentrons_shared_data.pipette.types import PipetteModel, PipetteName
12
+ from opentrons_shared_data.pipette import (
13
+ pipette_definition as pc,
14
+ pipette_load_name_conversions as ps,
15
+ )
16
+
17
+
18
+ @pytest.mark.parametrize(
19
+ argnames=["model", "output"],
20
+ argvalues=[
21
+ [
22
+ "p50_single_v2.0",
23
+ pc.PipetteModelVersionType(
24
+ PipetteModelType.p50,
25
+ PipetteChannelType.SINGLE_CHANNEL,
26
+ PipetteVersionType(2, 0),
27
+ PipetteOEMType.OT,
28
+ ),
29
+ ],
30
+ [
31
+ "p1000_multi_v1.0",
32
+ pc.PipetteModelVersionType(
33
+ PipetteModelType.p1000,
34
+ PipetteChannelType.EIGHT_CHANNEL,
35
+ PipetteVersionType(1, 0),
36
+ PipetteOEMType.OT,
37
+ ),
38
+ ],
39
+ [
40
+ "p1000_96_v1.0",
41
+ pc.PipetteModelVersionType(
42
+ PipetteModelType.p1000,
43
+ PipetteChannelType.NINETY_SIX_CHANNEL,
44
+ PipetteVersionType(1, 0),
45
+ PipetteOEMType.OT,
46
+ ),
47
+ ],
48
+ ],
49
+ )
50
+ def test_convert_pipette_model(
51
+ model: PipetteModel, output: pc.PipetteModelVersionType
52
+ ) -> None:
53
+ assert output == ps.convert_pipette_model(model)
54
+
55
+
56
+ @pytest.mark.parametrize(
57
+ argnames=["model", "version", "output"],
58
+ argvalues=[
59
+ [
60
+ "p50_single",
61
+ "2.0",
62
+ pc.PipetteModelVersionType(
63
+ PipetteModelType.p50,
64
+ PipetteChannelType.SINGLE_CHANNEL,
65
+ PipetteVersionType(2, 0),
66
+ PipetteOEMType.OT,
67
+ ),
68
+ ],
69
+ [
70
+ "p1000_multi",
71
+ "3.3",
72
+ pc.PipetteModelVersionType(
73
+ PipetteModelType.p1000,
74
+ PipetteChannelType.EIGHT_CHANNEL,
75
+ PipetteVersionType(3, 3),
76
+ PipetteOEMType.OT,
77
+ ),
78
+ ],
79
+ [
80
+ "p1000_96",
81
+ "1.1",
82
+ pc.PipetteModelVersionType(
83
+ PipetteModelType.p1000,
84
+ PipetteChannelType.NINETY_SIX_CHANNEL,
85
+ PipetteVersionType(1, 1),
86
+ PipetteOEMType.OT,
87
+ ),
88
+ ],
89
+ ],
90
+ )
91
+ def test_convert_pipette_model_provided_version(
92
+ model: PipetteModel, version: str, output: pc.PipetteModelVersionType
93
+ ) -> None:
94
+ assert output == ps.convert_pipette_model(model, version)
95
+
96
+
97
+ @pytest.mark.parametrize(
98
+ argnames=["name", "output"],
99
+ argvalues=[
100
+ [
101
+ "p50_single_gen2",
102
+ pc.PipetteModelVersionType(
103
+ PipetteModelType.p50,
104
+ PipetteChannelType.SINGLE_CHANNEL,
105
+ PipetteVersionType(2, 0),
106
+ PipetteOEMType.OT,
107
+ ),
108
+ ],
109
+ [
110
+ "p1000_multi_flex",
111
+ pc.PipetteModelVersionType(
112
+ PipetteModelType.p1000,
113
+ PipetteChannelType.EIGHT_CHANNEL,
114
+ PipetteVersionType(3, 5),
115
+ PipetteOEMType.OT,
116
+ ),
117
+ ],
118
+ [
119
+ "p1000_96",
120
+ pc.PipetteModelVersionType(
121
+ PipetteModelType.p1000,
122
+ PipetteChannelType.NINETY_SIX_CHANNEL,
123
+ PipetteVersionType(3, 6),
124
+ PipetteOEMType.OT,
125
+ ),
126
+ ],
127
+ ],
128
+ )
129
+ def test_convert_pipette_name(
130
+ name: PipetteName, output: pc.PipetteModelVersionType
131
+ ) -> None:
132
+ assert output == ps.convert_pipette_name(name)
133
+
134
+
135
+ @pytest.mark.parametrize(
136
+ argnames=["model_type", "channels", "generation", "output", "oem"],
137
+ argvalues=[
138
+ [
139
+ PipetteModelType.p50,
140
+ PipetteChannelType.SINGLE_CHANNEL,
141
+ PipetteGenerationType.GEN2,
142
+ "p50_single_gen2",
143
+ PipetteOEMType.OT,
144
+ ],
145
+ [
146
+ PipetteModelType.p1000,
147
+ PipetteChannelType.EIGHT_CHANNEL,
148
+ PipetteGenerationType.GEN2,
149
+ "p1000_multi_gen2",
150
+ PipetteOEMType.OT,
151
+ ],
152
+ [
153
+ # 96 channel has a unique "name" right now
154
+ PipetteModelType.p1000,
155
+ PipetteChannelType.NINETY_SIX_CHANNEL,
156
+ PipetteGenerationType.FLEX,
157
+ "p1000_96",
158
+ PipetteOEMType.OT,
159
+ ],
160
+ ],
161
+ )
162
+ def test_model_version_type_string_version(
163
+ model_type: PipetteModelType,
164
+ channels: PipetteChannelType,
165
+ generation: PipetteGenerationType,
166
+ output: PipetteName,
167
+ oem: PipetteOEMType,
168
+ ) -> None:
169
+ data = pc.PipetteNameType(
170
+ pipette_type=model_type,
171
+ pipette_channels=channels,
172
+ pipette_generation=generation,
173
+ oem_type=oem,
174
+ )
175
+ assert output == str(data)
176
+
177
+
178
+ @pytest.mark.parametrize(
179
+ argnames=["model_type", "channels", "version", "output", "oem"],
180
+ argvalues=[
181
+ [
182
+ PipetteModelType.p50,
183
+ PipetteChannelType.SINGLE_CHANNEL,
184
+ PipetteVersionType(1, 0),
185
+ "p50_single_v1",
186
+ PipetteOEMType.OT,
187
+ ],
188
+ [
189
+ PipetteModelType.p1000,
190
+ PipetteChannelType.EIGHT_CHANNEL,
191
+ PipetteVersionType(2, 1),
192
+ "p1000_multi_v2.1",
193
+ PipetteOEMType.OT,
194
+ ],
195
+ [
196
+ PipetteModelType.p1000,
197
+ PipetteChannelType.NINETY_SIX_CHANNEL,
198
+ PipetteVersionType(3, 3),
199
+ "p1000_96_v3.3",
200
+ PipetteOEMType.OT,
201
+ ],
202
+ ],
203
+ )
204
+ def test_name_type_string_generation(
205
+ model_type: PipetteModelType,
206
+ channels: PipetteChannelType,
207
+ version: PipetteVersionType,
208
+ output: PipetteModel,
209
+ oem: PipetteOEMType,
210
+ ) -> None:
211
+ data = pc.PipetteModelVersionType(
212
+ pipette_type=model_type,
213
+ pipette_channels=channels,
214
+ pipette_version=version,
215
+ oem_type=oem,
216
+ )
217
+ assert output == str(data)
218
+
219
+
220
+ @pytest.mark.parametrize(
221
+ argnames=["model_or_name", "valid"],
222
+ argvalues=[
223
+ [
224
+ "p50_single",
225
+ True,
226
+ ],
227
+ [
228
+ "p50_sing",
229
+ False,
230
+ ],
231
+ [
232
+ "p100_multi",
233
+ False,
234
+ ],
235
+ [
236
+ "p1000_multi_v3.3",
237
+ True,
238
+ ],
239
+ ],
240
+ )
241
+ def test_supported_pipette(
242
+ model_or_name: Union[PipetteName, PipetteModel, None], valid: bool
243
+ ) -> None:
244
+ assert ps.supported_pipette(model_or_name) == valid
@@ -0,0 +1,47 @@
1
+ import pytest
2
+ import typeguard
3
+
4
+ from typing import Generator, Tuple
5
+
6
+ from opentrons_shared_data.pipette import (
7
+ model_config,
8
+ name_config,
9
+ fuse_specs,
10
+ dummy_model_for_name,
11
+ )
12
+ from opentrons_shared_data.pipette.types import (
13
+ PipetteModelSpecs,
14
+ PipetteNameSpecs,
15
+ PipetteFusedSpec,
16
+ PipetteName,
17
+ PipetteModel,
18
+ )
19
+
20
+
21
+ def test_model_config_check() -> None:
22
+ defdict = model_config()
23
+ typeguard.check_type(defdict, PipetteModelSpecs)
24
+
25
+
26
+ def test_name_config_check() -> None:
27
+ defdict = name_config()
28
+ typeguard.check_type(defdict, PipetteNameSpecs)
29
+
30
+
31
+ def build_model_name_pairs() -> Generator[Tuple[PipetteModel, PipetteName], None, None]:
32
+ for model, conf in model_config()["config"].items():
33
+ yield model, conf["name"]
34
+ for bcn in conf.get("backCompatNames", []):
35
+ yield model, bcn
36
+
37
+
38
+ @pytest.mark.parametrize("model,name", list(build_model_name_pairs()))
39
+ def test_fuse(model: PipetteModel, name: PipetteName) -> None:
40
+ defdict = fuse_specs(model, name)
41
+ typeguard.check_type(defdict, PipetteFusedSpec)
42
+
43
+
44
+ @pytest.mark.parametrize("name", list(name_config().keys()))
45
+ def test_model_for_name(name: PipetteName) -> None:
46
+ model = dummy_model_for_name(name)
47
+ assert model in model_config()["config"]
@@ -0,0 +1,198 @@
1
+ import os
2
+ import json
3
+ from typing import Iterator
4
+ from opentrons_shared_data import get_shared_data_root
5
+
6
+ from opentrons_shared_data.pipette.pipette_definition import (
7
+ PipetteConfigurations,
8
+ )
9
+ from opentrons_shared_data.pipette.load_data import (
10
+ load_definition,
11
+ load_valid_nozzle_maps,
12
+ )
13
+ from opentrons_shared_data.pipette.pipette_load_name_conversions import (
14
+ convert_pipette_model,
15
+ )
16
+ from opentrons_shared_data.pipette import types
17
+
18
+
19
+ def iterate_models() -> Iterator[types.PipetteModel]:
20
+ """Get an iterator of all pipette models."""
21
+ _channel_model_str = {
22
+ "single_channel": "single",
23
+ "ninety_six_channel": "96",
24
+ "eight_channel": "multi",
25
+ "eight_channel_em": "multi_em",
26
+ }
27
+ defn_root = get_shared_data_root() / "pipette" / "definitions" / "2" / "liquid"
28
+ assert os.listdir(defn_root), "A path is wrong"
29
+ for channel_dir in defn_root.iterdir():
30
+ for model_dir in channel_dir.iterdir():
31
+ for lc_dir in model_dir.iterdir():
32
+ for version_file in lc_dir.iterdir():
33
+ version_list = version_file.stem.split("_")
34
+ yield types.PipetteModel(
35
+ f"{model_dir.stem}_{_channel_model_str[channel_dir.stem]}_v{version_list[0]}.{version_list[1]}"
36
+ )
37
+
38
+
39
+ def test_check_all_models_are_valid() -> None:
40
+ """Make sure each model can be loaded."""
41
+ for model in iterate_models():
42
+ model_version = convert_pipette_model(model)
43
+ try:
44
+ loaded_model = load_definition(
45
+ model_version.pipette_type,
46
+ model_version.pipette_channels,
47
+ model_version.pipette_version,
48
+ model_version.oem_type,
49
+ )
50
+ except json.JSONDecodeError:
51
+ print(
52
+ f"Failed to parse {model_version.pipette_type} {model_version.pipette_channels} {model_version.pipette_version}"
53
+ )
54
+ raise
55
+
56
+ assert isinstance(loaded_model, PipetteConfigurations)
57
+
58
+
59
+ def test_pick_up_configs_configuration_by_nozzle_map_keys() -> None:
60
+ """Verify that for every nozzle map the pickUpTipConfigurations have a valid configuration set."""
61
+ paths_to_validate = (
62
+ get_shared_data_root() / "pipette" / "definitions" / "2" / "general"
63
+ )
64
+ _channel_model_str = {
65
+ "single_channel": "single",
66
+ "ninety_six_channel": "96",
67
+ "eight_channel": "multi",
68
+ "eight_channel_em": "multi_em",
69
+ }
70
+ assert os.listdir(paths_to_validate), "You have a path wrong"
71
+ for channel_dir in os.listdir(paths_to_validate):
72
+ for model_dir in os.listdir(paths_to_validate / channel_dir):
73
+ for version_file in os.listdir(paths_to_validate / channel_dir / model_dir):
74
+ print(version_file)
75
+ version_list = version_file.split(".json")[0].split("_")
76
+ built_model: types.PipetteModel = types.PipetteModel(
77
+ f"{model_dir}_{_channel_model_str[channel_dir]}_v{version_list[0]}.{version_list[1]}"
78
+ )
79
+
80
+ model_version = convert_pipette_model(built_model)
81
+ loaded_model = load_definition(
82
+ model_version.pipette_type,
83
+ model_version.pipette_channels,
84
+ model_version.pipette_version,
85
+ model_version.oem_type,
86
+ )
87
+ valid_nozzle_maps = load_valid_nozzle_maps(
88
+ model_version.pipette_type,
89
+ model_version.pipette_channels,
90
+ model_version.pipette_version,
91
+ model_version.oem_type,
92
+ )
93
+
94
+ pipette_maps = list(
95
+ loaded_model.pick_up_tip_configurations.press_fit.configuration_by_nozzle_map.keys()
96
+ )
97
+ if loaded_model.pick_up_tip_configurations.cam_action is not None:
98
+ pipette_maps += list(
99
+ loaded_model.pick_up_tip_configurations.cam_action.configuration_by_nozzle_map.keys()
100
+ )
101
+ assert pipette_maps == list(valid_nozzle_maps.maps.keys())
102
+
103
+
104
+ def test_pick_up_configs_configuration_ordered_from_smallest_to_largest() -> None:
105
+ """Verify that ValidNozzleMaps and PickUpTipConfigurations are ordered from smallest nozzle configuration to largest, ensuring mutable config compliancy."""
106
+ paths_to_validate = (
107
+ get_shared_data_root() / "pipette" / "definitions" / "2" / "general"
108
+ )
109
+ _channel_model_str = {
110
+ "single_channel": "single",
111
+ "ninety_six_channel": "96",
112
+ "eight_channel": "multi",
113
+ "eight_channel_em": "multi_em",
114
+ }
115
+ assert os.listdir(paths_to_validate), "You have a path wrong"
116
+ for channel_dir in os.listdir(paths_to_validate):
117
+ for model_dir in os.listdir(paths_to_validate / channel_dir):
118
+ for version_file in os.listdir(paths_to_validate / channel_dir / model_dir):
119
+ version_list = version_file.split(".json")[0].split("_")
120
+ built_model: types.PipetteModel = types.PipetteModel(
121
+ f"{model_dir}_{_channel_model_str[channel_dir]}_v{version_list[0]}.{version_list[1]}"
122
+ )
123
+
124
+ model_version = convert_pipette_model(built_model)
125
+ loaded_model = load_definition(
126
+ model_version.pipette_type,
127
+ model_version.pipette_channels,
128
+ model_version.pipette_version,
129
+ model_version.oem_type,
130
+ )
131
+ valid_nozzle_maps = load_valid_nozzle_maps(
132
+ model_version.pipette_type,
133
+ model_version.pipette_channels,
134
+ model_version.pipette_version,
135
+ model_version.oem_type,
136
+ )
137
+
138
+ map_keys = list(valid_nozzle_maps.maps.keys())
139
+ for key in map_keys:
140
+ for i in range(map_keys.index(key)):
141
+ assert len(valid_nozzle_maps.maps[map_keys[i]]) <= len(
142
+ valid_nozzle_maps.maps[key]
143
+ )
144
+
145
+ pipette_maps = list(
146
+ loaded_model.pick_up_tip_configurations.press_fit.configuration_by_nozzle_map.keys()
147
+ )
148
+ for key in pipette_maps:
149
+ for i in range(pipette_maps.index(key)):
150
+ assert len(valid_nozzle_maps.maps[pipette_maps[i]]) <= len(
151
+ valid_nozzle_maps.maps[key]
152
+ )
153
+
154
+
155
+ def test_serializer() -> None:
156
+ """Verify that the serializer works as expected."""
157
+
158
+ loaded_model = load_definition(
159
+ types.PipetteModelType.p1000,
160
+ types.PipetteChannelType.NINETY_SIX_CHANNEL,
161
+ types.PipetteVersionType(3, 3),
162
+ types.PipetteOEMType.OT,
163
+ )
164
+ quirk_0 = types.Quirks.pickupTipShake
165
+ quirk_1 = types.Quirks.dropTipShake
166
+ loaded_model.quirks = [quirk_0, quirk_1]
167
+
168
+ assert loaded_model.pipette_type == types.PipetteModelType.p1000
169
+ assert loaded_model.display_category == types.PipetteGenerationType.FLEX
170
+ assert loaded_model.channels == types.PipetteChannelType.NINETY_SIX_CHANNEL
171
+
172
+ model_dict = loaded_model.model_dump()
173
+ # each field should be the value of the enum class
174
+ assert (
175
+ isinstance(model_dict["pipette_type"], str)
176
+ and model_dict["pipette_type"] == loaded_model.pipette_type.value
177
+ )
178
+ assert (
179
+ isinstance(model_dict["display_category"], str)
180
+ and model_dict["display_category"] == loaded_model.display_category.value
181
+ )
182
+ assert (
183
+ isinstance(model_dict["channels"], int)
184
+ and model_dict["channels"] == loaded_model.channels.value
185
+ )
186
+
187
+ assert len(model_dict["quirks"]) == 2
188
+ dict_quirk_0 = model_dict["quirks"][0]
189
+ dict_quirk_1 = model_dict["quirks"][1]
190
+ assert isinstance(dict_quirk_0, str) and dict_quirk_0 == quirk_0.value
191
+ assert isinstance(dict_quirk_1, str) and dict_quirk_1 == quirk_1.value
192
+
193
+
194
+ # TODO: (AA, 4/9/2024) we should add a test to validate the dumped json to make
195
+ # sure we can re-load it as the BaseModel class. But we haven't added serializer
196
+ # for other enums yet, such as LiquidClass, and since we haven't been
197
+ # creating the definition files using model_dump/model_dump_json, it is okay to
198
+ # skip this for now.
@@ -0,0 +1,7 @@
1
+ from typing import List
2
+ from pathlib import Path
3
+
4
+
5
+ def list_fixtures(version: int) -> List[Path]:
6
+ base = Path(__file__).parent / ".." / ".." / "protocol" / "fixtures" / f"{version}"
7
+ return list(base.iterdir())
@@ -0,0 +1,108 @@
1
+ import json
2
+ import pytest
3
+ from typing import Any, Dict
4
+ from pathlib import Path
5
+ from opentrons_shared_data import load_shared_data
6
+ from opentrons_shared_data.protocol.models import (
7
+ protocol_schema_v6,
8
+ Robot,
9
+ Metadata,
10
+ Liquid,
11
+ Module,
12
+ Pipette,
13
+ Labware,
14
+ )
15
+
16
+ from . import list_fixtures
17
+
18
+
19
+ @pytest.mark.parametrize("defpath", list_fixtures(6))
20
+ def test_v6_types(defpath: Path) -> None:
21
+ def_data = load_shared_data(defpath)
22
+ def_model = protocol_schema_v6.ProtocolSchemaV6.model_validate_json(def_data)
23
+ def_dict_from_model = def_model.model_dump(
24
+ exclude_unset=True,
25
+ # 'schemaVersion' in python is '$schemaVersion' in JSON
26
+ by_alias=True,
27
+ )
28
+ expected_def_dict = json.loads(def_data)
29
+ delete_unexpected_results(expected_def_dict)
30
+ assert def_dict_from_model == expected_def_dict
31
+
32
+
33
+ # TODO (Tamar and Max 3/16/22):
34
+ # Some of our v6 fixtures accidentally contain command "result" data,
35
+ # which is not part of the schema, and which we don't parse into our models.
36
+ # Here, we delete the extra junk from the fixtures.
37
+ # Remove this when the fixtures are corrected.
38
+ # https://github.com/Opentrons/opentrons/issues/9701
39
+ def delete_unexpected_results(protocol_fixture: Dict[str, Any]) -> None:
40
+ for command_object_dict in protocol_fixture["commands"]:
41
+ command_object_dict.pop("result", None)
42
+ command_object_dict.pop("id", None)
43
+
44
+
45
+ @pytest.mark.parametrize(
46
+ "input_command, missing_id, load_command",
47
+ [
48
+ (
49
+ protocol_schema_v6.Command(
50
+ commandType="loadLabware",
51
+ params=protocol_schema_v6.Params(labwareId="labware-id-3"),
52
+ ),
53
+ "labware-id-3",
54
+ "loadLabware",
55
+ ),
56
+ (
57
+ protocol_schema_v6.Command(
58
+ commandType="loadPipette",
59
+ params=protocol_schema_v6.Params(pipetteId="pipette-id-3"),
60
+ ),
61
+ "pipette-id-3",
62
+ "loadPipette",
63
+ ),
64
+ (
65
+ protocol_schema_v6.Command(
66
+ commandType="loadLiquid",
67
+ params=protocol_schema_v6.Params(liquidId="liquid-id-3"),
68
+ ),
69
+ "liquid-id-3",
70
+ "loadLiquid",
71
+ ),
72
+ (
73
+ protocol_schema_v6.Command(
74
+ commandType="loadModule",
75
+ params=protocol_schema_v6.Params(moduleId="module-id-3"),
76
+ ),
77
+ "module-id-3",
78
+ "loadModule",
79
+ ),
80
+ ],
81
+ )
82
+ def test_schema_validators(
83
+ input_command: protocol_schema_v6.Command, missing_id: str, load_command: str
84
+ ) -> None:
85
+ """Should raise an error the keys do not match."""
86
+ labware = {
87
+ "labware-id-1": Labware(definitionId="definition-1"),
88
+ "labware-id-2": Labware(definitionId="definition-2"),
89
+ }
90
+ pipettes = {"pipette-id-1": Pipette(name="pipette-1")}
91
+ liquids = {"liquid-id-1": Liquid(displayName="liquid-1", description="liquid desc")}
92
+ modules = {"module-id-1": Module(model="model-1")}
93
+ with pytest.raises(
94
+ ValueError,
95
+ match=f"{load_command} command at index 0 references ID {missing_id}, which doesn't exist.",
96
+ ):
97
+ protocol_schema_v6.ProtocolSchemaV6(
98
+ otSharedSchema="#/protocol/schemas/6",
99
+ schemaVersion=6,
100
+ metadata=Metadata(),
101
+ robot=Robot(model="OT-2 Standard", deckId=""),
102
+ labware=labware,
103
+ pipettes=pipettes,
104
+ liquids=liquids,
105
+ modules=modules,
106
+ labwareDefinitions={},
107
+ commands=[input_command],
108
+ )
@@ -0,0 +1,35 @@
1
+ import json
2
+ import pytest
3
+ from typing import Any, Dict
4
+ from pathlib import Path
5
+
6
+ from opentrons_shared_data import load_shared_data
7
+ from opentrons_shared_data.protocol.models import protocol_schema_v7
8
+
9
+ from . import list_fixtures
10
+
11
+
12
+ @pytest.mark.parametrize("defpath", list_fixtures(7))
13
+ def test_v7_types(defpath: Path) -> None:
14
+ def_data = load_shared_data(defpath)
15
+ def_model = protocol_schema_v7.ProtocolSchemaV7.model_validate_json(def_data)
16
+ def_dict_from_model = def_model.model_dump(
17
+ exclude_unset=True,
18
+ # 'schemaVersion' in python is '$schemaVersion' in JSON
19
+ by_alias=True,
20
+ )
21
+ expected_def_dict = json.loads(def_data)
22
+ delete_unexpected_results(expected_def_dict)
23
+ assert def_dict_from_model == expected_def_dict
24
+
25
+
26
+ # TODO (Tamar and Max 3/16/22):
27
+ # Some of our v7 fixtures accidentally contain command "result" data,
28
+ # which is not part of the schema, and which we don't parse into our models.
29
+ # Here, we delete the extra junk from the fixtures.
30
+ # Remove this when the fixtures are corrected.
31
+ # https://github.com/Opentrons/opentrons/issues/9701
32
+ def delete_unexpected_results(protocol_fixture: Dict[str, Any]) -> None:
33
+ for command_object_dict in protocol_fixture["commands"]:
34
+ command_object_dict.pop("result", None)
35
+ command_object_dict.pop("id", None)
@@ -0,0 +1,17 @@
1
+ import json
2
+ import pytest
3
+ from pathlib import Path
4
+
5
+ from opentrons_shared_data import load_shared_data
6
+ from opentrons_shared_data.protocol.models import protocol_schema_v8
7
+
8
+ from . import list_fixtures
9
+
10
+
11
+ @pytest.mark.parametrize("defpath", list_fixtures(8))
12
+ def test_v8_types(defpath: Path) -> None:
13
+ def_data = load_shared_data(defpath)
14
+ def_model = protocol_schema_v8.ProtocolSchemaV8.model_validate_json(def_data)
15
+ def_dict_from_model = def_model.model_dump(by_alias=True, exclude_unset=True)
16
+ expected_def_dict = json.loads(def_data)
17
+ assert def_dict_from_model == expected_def_dict
@@ -0,0 +1,30 @@
1
+ import json
2
+ import pytest
3
+ from pathlib import Path
4
+ import typeguard
5
+
6
+ from opentrons_shared_data import load_shared_data
7
+ from opentrons_shared_data.protocol.types import (
8
+ JsonProtocolV3,
9
+ JsonProtocolV4,
10
+ JsonProtocolV5,
11
+ )
12
+ from . import list_fixtures
13
+
14
+
15
+ @pytest.mark.parametrize("defpath", list_fixtures(3))
16
+ def test_v3_types(defpath: Path) -> None:
17
+ defn = json.loads(load_shared_data(defpath))
18
+ typeguard.check_type(defn, JsonProtocolV3)
19
+
20
+
21
+ @pytest.mark.parametrize("defpath", list_fixtures(4))
22
+ def test_v4_types(defpath: Path) -> None:
23
+ defn = json.loads(load_shared_data(defpath))
24
+ typeguard.check_type(defn, JsonProtocolV4)
25
+
26
+
27
+ @pytest.mark.parametrize("defpath", list_fixtures(5))
28
+ def test_v5_types(defpath: Path) -> None:
29
+ defn = json.loads(load_shared_data(defpath))
30
+ typeguard.check_type(defn, JsonProtocolV5)
File without changes