@opentrons/shared-data 0.0.0-alpha.2 → 0.0.1-alpha.1

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 (681) hide show
  1. package/LICENSE +202 -0
  2. package/Makefile +4 -12
  3. package/command/schemas/8.json +17 -17
  4. package/command/types/gantry.ts +6 -0
  5. package/command/types/setup.ts +4 -4
  6. package/js/constants.ts +2 -0
  7. package/js/getLabware.ts +0 -8
  8. package/js/helpers/getAddressableAreasInProtocol.ts +59 -0
  9. package/js/helpers/index.ts +1 -0
  10. package/js/helpers/wellSets.ts +20 -15
  11. package/lib/build/labware.json +1 -0
  12. package/lib/command/schemas/.json +0 -0
  13. package/lib/js/helpers/__tests__/getRobotTypeFromLoadedLabware.test.d.ts +1 -0
  14. package/lib/js/helpers/__tests__/schemaV6Adapter.test.d.ts +0 -0
  15. package/lib/js/helpers/getAddressableAreasInProtocol.d.ts +3 -0
  16. package/lib/js/helpers/schemaV6Adapter.d.ts +10 -0
  17. package/lib/labware/definitions/2/opentrons_calibration_adapter_magnetic_module/1.json +62 -0
  18. package/lib/labware/definitions/2/opentrons_ot3_96_tiprack_1000ul/1.json +1017 -0
  19. package/lib/labware/definitions/2/opentrons_ot3_96_tiprack_200ul/1.json +1017 -0
  20. package/lib/labware/definitions/2/opentrons_ot3_96_tiprack_50ul/1.json +1017 -0
  21. package/lib/opentrons-shared-data.js +3 -0
  22. package/lib/opentrons-shared-data.js.LICENSE.txt +1 -0
  23. package/lib/opentrons-shared-data.js.map +1 -0
  24. package/lib/pipette/definitions/2/liquid/eight_channel/p10/1_0.json +58 -0
  25. package/lib/pipette/definitions/2/liquid/eight_channel/p10/1_3.json +58 -0
  26. package/lib/pipette/definitions/2/liquid/eight_channel/p10/1_4.json +58 -0
  27. package/lib/pipette/definitions/2/liquid/eight_channel/p10/1_5.json +49 -0
  28. package/lib/pipette/definitions/2/liquid/eight_channel/p10/1_6.json +57 -0
  29. package/lib/pipette/definitions/2/liquid/eight_channel/p1000/1_0.json +374 -0
  30. package/lib/pipette/definitions/2/liquid/eight_channel/p1000/3_0.json +374 -0
  31. package/lib/pipette/definitions/2/liquid/eight_channel/p1000/3_3.json +374 -0
  32. package/lib/pipette/definitions/2/liquid/eight_channel/p1000/3_4.json +374 -0
  33. package/lib/pipette/definitions/2/liquid/eight_channel/p1000/3_5.json +374 -0
  34. package/lib/pipette/definitions/2/liquid/eight_channel/p20/2_0.json +323 -0
  35. package/lib/pipette/definitions/2/liquid/eight_channel/p20/2_1.json +203 -0
  36. package/lib/pipette/definitions/2/liquid/eight_channel/p300/1_0.json +75 -0
  37. package/lib/pipette/definitions/2/liquid/eight_channel/p300/1_3.json +75 -0
  38. package/lib/pipette/definitions/2/liquid/eight_channel/p300/1_4.json +75 -0
  39. package/lib/pipette/definitions/2/liquid/eight_channel/p300/1_5.json +75 -0
  40. package/lib/pipette/definitions/2/liquid/eight_channel/p300/2_0.json +202 -0
  41. package/lib/pipette/definitions/2/liquid/eight_channel/p300/2_1.json +202 -0
  42. package/lib/pipette/definitions/2/liquid/eight_channel/p50/1_0.json +128 -0
  43. package/lib/pipette/definitions/2/liquid/eight_channel/p50/1_3.json +128 -0
  44. package/lib/pipette/definitions/2/liquid/eight_channel/p50/1_4.json +128 -0
  45. package/lib/pipette/definitions/2/liquid/eight_channel/p50/1_5.json +118 -0
  46. package/lib/pipette/definitions/2/liquid/eight_channel/p50/3_0.json +98 -0
  47. package/lib/pipette/definitions/2/liquid/eight_channel/p50/3_3.json +98 -0
  48. package/lib/pipette/definitions/2/liquid/eight_channel/p50/3_4.json +98 -0
  49. package/lib/pipette/definitions/2/liquid/eight_channel/p50/3_5.json +98 -0
  50. package/lib/pipette/definitions/2/liquid/ninety_six_channel/p1000/1_0.json +374 -0
  51. package/lib/pipette/definitions/2/liquid/ninety_six_channel/p1000/3_0.json +374 -0
  52. package/lib/pipette/definitions/2/liquid/ninety_six_channel/p1000/3_3.json +374 -0
  53. package/lib/pipette/definitions/2/liquid/ninety_six_channel/p1000/3_4.json +374 -0
  54. package/lib/pipette/definitions/2/liquid/ninety_six_channel/p1000/3_5.json +374 -0
  55. package/lib/pipette/definitions/2/liquid/single_channel/p10/1_0.json +59 -0
  56. package/lib/pipette/definitions/2/liquid/single_channel/p10/1_3.json +59 -0
  57. package/lib/pipette/definitions/2/liquid/single_channel/p10/1_4.json +59 -0
  58. package/lib/pipette/definitions/2/liquid/single_channel/p10/1_5.json +58 -0
  59. package/lib/pipette/definitions/2/liquid/single_channel/p1000/1_0.json +50 -0
  60. package/lib/pipette/definitions/2/liquid/single_channel/p1000/1_3.json +52 -0
  61. package/lib/pipette/definitions/2/liquid/single_channel/p1000/1_4.json +52 -0
  62. package/lib/pipette/definitions/2/liquid/single_channel/p1000/1_5.json +50 -0
  63. package/lib/pipette/definitions/2/liquid/single_channel/p1000/2_0.json +114 -0
  64. package/lib/pipette/definitions/2/liquid/single_channel/p1000/2_1.json +116 -0
  65. package/lib/pipette/definitions/2/liquid/single_channel/p1000/2_2.json +116 -0
  66. package/lib/pipette/definitions/2/liquid/single_channel/p1000/3_0.json +374 -0
  67. package/lib/pipette/definitions/2/liquid/single_channel/p1000/3_3.json +374 -0
  68. package/lib/pipette/definitions/2/liquid/single_channel/p1000/3_4.json +300 -0
  69. package/lib/pipette/definitions/2/liquid/single_channel/p1000/3_5.json +300 -0
  70. package/lib/pipette/definitions/2/liquid/single_channel/p20/2_0.json +449 -0
  71. package/lib/pipette/definitions/2/liquid/single_channel/p20/2_1.json +269 -0
  72. package/lib/pipette/definitions/2/liquid/single_channel/p20/2_2.json +329 -0
  73. package/lib/pipette/definitions/2/liquid/single_channel/p300/1_0.json +99 -0
  74. package/lib/pipette/definitions/2/liquid/single_channel/p300/1_3.json +99 -0
  75. package/lib/pipette/definitions/2/liquid/single_channel/p300/1_4.json +99 -0
  76. package/lib/pipette/definitions/2/liquid/single_channel/p300/1_5.json +83 -0
  77. package/lib/pipette/definitions/2/liquid/single_channel/p300/2_0.json +206 -0
  78. package/lib/pipette/definitions/2/liquid/single_channel/p300/2_1.json +206 -0
  79. package/lib/pipette/definitions/2/liquid/single_channel/p50/1_0.json +128 -0
  80. package/lib/pipette/definitions/2/liquid/single_channel/p50/1_3.json +128 -0
  81. package/lib/pipette/definitions/2/liquid/single_channel/p50/1_4.json +128 -0
  82. package/lib/pipette/definitions/2/liquid/single_channel/p50/1_5.json +116 -0
  83. package/lib/pipette/definitions/2/liquid/single_channel/p50/3_0.json +98 -0
  84. package/lib/pipette/definitions/2/liquid/single_channel/p50/3_3.json +98 -0
  85. package/lib/pipette/definitions/2/liquid/single_channel/p50/3_4.json +100 -0
  86. package/lib/pipette/definitions/2/liquid/single_channel/p50/3_5.json +100 -0
  87. package/lib/pipette/definitions/pipetteModelSpecs.json +8073 -0
  88. package/lib/pipette/definitions/pipetteNameSpecs.json +665 -0
  89. package/lib/pipette/schemas/pipetteModelSpecsSchema.json +153 -0
  90. package/lib/pipette/schemas/pipetteNameSpecsSchema.json +89 -0
  91. package/package.json +3 -2
  92. package/python/.coverage +0 -0
  93. package/python/build/lib/opentrons_shared_data/__init__.py +17 -0
  94. package/python/build/lib/opentrons_shared_data/_version.py +20 -0
  95. package/python/build/lib/opentrons_shared_data/command/__init__.py +26 -0
  96. package/python/build/lib/opentrons_shared_data/data/deck/definitions/3/ot2_short_trash.json +477 -0
  97. package/python/build/lib/opentrons_shared_data/data/deck/definitions/3/ot2_standard.json +477 -0
  98. package/python/build/lib/opentrons_shared_data/data/deck/definitions/3/ot3_standard.json +989 -0
  99. package/python/build/lib/opentrons_shared_data/data/deck/schemas/1.json +240 -0
  100. package/python/build/lib/opentrons_shared_data/data/deck/schemas/2.json +249 -0
  101. package/python/build/lib/opentrons_shared_data/data/deck/schemas/3.json +296 -0
  102. package/python/build/lib/opentrons_shared_data/data/errors/definitions/1/errors.json +198 -0
  103. package/python/build/lib/opentrons_shared_data/data/errors/schemas/1.json +50 -0
  104. package/python/build/lib/opentrons_shared_data/data/gripper/definitions/1/gripperV1.1.json +28 -0
  105. package/python/build/lib/opentrons_shared_data/data/gripper/definitions/1/gripperV1.2.json +28 -0
  106. package/python/build/lib/opentrons_shared_data/data/gripper/definitions/1/gripperV1.json +27 -0
  107. package/python/build/lib/opentrons_shared_data/data/gripper/schemas/1.json +181 -0
  108. package/python/build/lib/opentrons_shared_data/data/labware/definitions/1/12-well-plate.json +147 -0
  109. package/python/build/lib/opentrons_shared_data/data/labware/definitions/1/24-vial-rack.json +281 -0
  110. package/python/build/lib/opentrons_shared_data/data/labware/definitions/1/24-well-plate.json +281 -0
  111. package/python/build/lib/opentrons_shared_data/data/labware/definitions/1/384-plate.json +4667 -0
  112. package/python/build/lib/opentrons_shared_data/data/labware/definitions/1/48-vial-plate.json +547 -0
  113. package/python/build/lib/opentrons_shared_data/data/labware/definitions/1/48-well-plate.json +547 -0
  114. package/python/build/lib/opentrons_shared_data/data/labware/definitions/1/5ml-3x4.json +147 -0
  115. package/python/build/lib/opentrons_shared_data/data/labware/definitions/1/6-well-plate.json +80 -0
  116. package/python/build/lib/opentrons_shared_data/data/labware/definitions/1/96-PCR-flat.json +1079 -0
  117. package/python/build/lib/opentrons_shared_data/data/labware/definitions/1/96-PCR-tall.json +1079 -0
  118. package/python/build/lib/opentrons_shared_data/data/labware/definitions/1/96-deep-well.json +1079 -0
  119. package/python/build/lib/opentrons_shared_data/data/labware/definitions/1/96-flat.json +1079 -0
  120. package/python/build/lib/opentrons_shared_data/data/labware/definitions/1/96-well-plate-20mm.json +1079 -0
  121. package/python/build/lib/opentrons_shared_data/data/labware/definitions/1/MALDI-plate.json +4282 -0
  122. package/python/build/lib/opentrons_shared_data/data/labware/definitions/1/PCR-strip-tall.json +1079 -0
  123. package/python/build/lib/opentrons_shared_data/data/labware/definitions/1/T25-flask.json +20 -0
  124. package/python/build/lib/opentrons_shared_data/data/labware/definitions/1/T75-flask.json +20 -0
  125. package/python/build/lib/opentrons_shared_data/data/labware/definitions/1/alum-block-pcr-strips.json +188 -0
  126. package/python/build/lib/opentrons_shared_data/data/labware/definitions/1/biorad-hardshell-96-PCR.json +1079 -0
  127. package/python/build/lib/opentrons_shared_data/data/labware/definitions/1/e-gelgol.json +1078 -0
  128. package/python/build/lib/opentrons_shared_data/data/labware/definitions/1/fixed-trash.json +19 -0
  129. package/python/build/lib/opentrons_shared_data/data/labware/definitions/1/hampton-1ml-deep-block.json +1078 -0
  130. package/python/build/lib/opentrons_shared_data/data/labware/definitions/1/opentrons-aluminum-block-2ml-eppendorf.json +281 -0
  131. package/python/build/lib/opentrons_shared_data/data/labware/definitions/1/opentrons-aluminum-block-2ml-screwcap.json +281 -0
  132. package/python/build/lib/opentrons_shared_data/data/labware/definitions/1/opentrons-aluminum-block-96-PCR-plate.json +1079 -0
  133. package/python/build/lib/opentrons_shared_data/data/labware/definitions/1/opentrons-aluminum-block-PCR-strips-200ul.json +1079 -0
  134. package/python/build/lib/opentrons_shared_data/data/labware/definitions/1/opentrons-tiprack-10ul.json +986 -0
  135. package/python/build/lib/opentrons_shared_data/data/labware/definitions/1/opentrons-tiprack-300ul.json +986 -0
  136. package/python/build/lib/opentrons_shared_data/data/labware/definitions/1/opentrons-tuberack-1.5ml-eppendorf.json +281 -0
  137. package/python/build/lib/opentrons_shared_data/data/labware/definitions/1/opentrons-tuberack-15_50ml.json +125 -0
  138. package/python/build/lib/opentrons_shared_data/data/labware/definitions/1/opentrons-tuberack-15ml.json +181 -0
  139. package/python/build/lib/opentrons_shared_data/data/labware/definitions/1/opentrons-tuberack-2ml-eppendorf.json +281 -0
  140. package/python/build/lib/opentrons_shared_data/data/labware/definitions/1/opentrons-tuberack-2ml-screwcap.json +281 -0
  141. package/python/build/lib/opentrons_shared_data/data/labware/definitions/1/opentrons-tuberack-50ml.json +80 -0
  142. package/python/build/lib/opentrons_shared_data/data/labware/definitions/1/point.json +18 -0
  143. package/python/build/lib/opentrons_shared_data/data/labware/definitions/1/rigaku-compact-crystallization-plate.json +2146 -0
  144. package/python/build/lib/opentrons_shared_data/data/labware/definitions/1/small_vial_rack_16x45.json +280 -0
  145. package/python/build/lib/opentrons_shared_data/data/labware/definitions/1/tall-fixed-trash.json +19 -0
  146. package/python/build/lib/opentrons_shared_data/data/labware/definitions/1/tiprack-1000ul-H.json +503 -0
  147. package/python/build/lib/opentrons_shared_data/data/labware/definitions/1/tiprack-1000ul-chem.json +1034 -0
  148. package/python/build/lib/opentrons_shared_data/data/labware/definitions/1/tiprack-1000ul.json +986 -0
  149. package/python/build/lib/opentrons_shared_data/data/labware/definitions/1/tiprack-10ul-H.json +503 -0
  150. package/python/build/lib/opentrons_shared_data/data/labware/definitions/1/tiprack-10ul.json +986 -0
  151. package/python/build/lib/opentrons_shared_data/data/labware/definitions/1/tiprack-200ul.json +986 -0
  152. package/python/build/lib/opentrons_shared_data/data/labware/definitions/1/trash-box.json +20 -0
  153. package/python/build/lib/opentrons_shared_data/data/labware/definitions/1/trough-12row-short.json +143 -0
  154. package/python/build/lib/opentrons_shared_data/data/labware/definitions/1/trough-12row.json +143 -0
  155. package/python/build/lib/opentrons_shared_data/data/labware/definitions/1/trough-1row-25ml.json +21 -0
  156. package/python/build/lib/opentrons_shared_data/data/labware/definitions/1/tube-rack-.75ml.json +281 -0
  157. package/python/build/lib/opentrons_shared_data/data/labware/definitions/1/tube-rack-15_50ml.json +125 -0
  158. package/python/build/lib/opentrons_shared_data/data/labware/definitions/1/tube-rack-2ml-9x9.json +911 -0
  159. package/python/build/lib/opentrons_shared_data/data/labware/definitions/1/tube-rack-2ml.json +281 -0
  160. package/python/build/lib/opentrons_shared_data/data/labware/definitions/1/tube-rack-5ml-96.json +1079 -0
  161. package/python/build/lib/opentrons_shared_data/data/labware/definitions/1/tube-rack-80well.json +907 -0
  162. package/python/build/lib/opentrons_shared_data/data/labware/definitions/1/wheaton_vial_rack.json +565 -0
  163. package/python/build/lib/opentrons_shared_data/data/labware/definitions/2/agilent_1_reservoir_290ml/1.json +54 -0
  164. package/python/build/lib/opentrons_shared_data/data/labware/definitions/2/appliedbiosystemsmicroamp_384_wellplate_40ul/1.json +4320 -0
  165. package/python/build/lib/opentrons_shared_data/data/labware/definitions/2/armadillo_96_wellplate_200ul_pcr_full_skirt/1.json +1019 -0
  166. package/python/build/lib/opentrons_shared_data/data/labware/definitions/2/armadillo_96_wellplate_200ul_pcr_full_skirt/2.json +1045 -0
  167. package/python/build/lib/opentrons_shared_data/data/labware/definitions/2/axygen_1_reservoir_90ml/1.json +56 -0
  168. package/python/build/lib/opentrons_shared_data/data/labware/definitions/2/biorad_384_wellplate_50ul/1.json +4329 -0
  169. package/python/build/lib/opentrons_shared_data/data/labware/definitions/2/biorad_384_wellplate_50ul/2.json +4331 -0
  170. package/python/build/lib/opentrons_shared_data/data/labware/definitions/2/biorad_96_wellplate_200ul_pcr/1.json +1020 -0
  171. package/python/build/lib/opentrons_shared_data/data/labware/definitions/2/biorad_96_wellplate_200ul_pcr/2.json +1036 -0
  172. package/python/build/lib/opentrons_shared_data/data/labware/definitions/2/corning_12_wellplate_6.9ml_flat/1.json +171 -0
  173. package/python/build/lib/opentrons_shared_data/data/labware/definitions/2/corning_12_wellplate_6.9ml_flat/2.json +180 -0
  174. package/python/build/lib/opentrons_shared_data/data/labware/definitions/2/corning_24_wellplate_3.4ml_flat/1.json +293 -0
  175. package/python/build/lib/opentrons_shared_data/data/labware/definitions/2/corning_24_wellplate_3.4ml_flat/2.json +300 -0
  176. package/python/build/lib/opentrons_shared_data/data/labware/definitions/2/corning_384_wellplate_112ul_flat/1.json +4703 -0
  177. package/python/build/lib/opentrons_shared_data/data/labware/definitions/2/corning_384_wellplate_112ul_flat/2.json +4717 -0
  178. package/python/build/lib/opentrons_shared_data/data/labware/definitions/2/corning_48_wellplate_1.6ml_flat/1.json +535 -0
  179. package/python/build/lib/opentrons_shared_data/data/labware/definitions/2/corning_48_wellplate_1.6ml_flat/2.json +544 -0
  180. package/python/build/lib/opentrons_shared_data/data/labware/definitions/2/corning_6_wellplate_16.8ml_flat/1.json +103 -0
  181. package/python/build/lib/opentrons_shared_data/data/labware/definitions/2/corning_6_wellplate_16.8ml_flat/2.json +110 -0
  182. package/python/build/lib/opentrons_shared_data/data/labware/definitions/2/corning_96_wellplate_360ul_flat/1.json +1049 -0
  183. package/python/build/lib/opentrons_shared_data/data/labware/definitions/2/corning_96_wellplate_360ul_flat/2.json +1063 -0
  184. package/python/build/lib/opentrons_shared_data/data/labware/definitions/2/eppendorf_96_tiprack_1000ul_eptips/1.json +1019 -0
  185. package/python/build/lib/opentrons_shared_data/data/labware/definitions/2/eppendorf_96_tiprack_10ul_eptips/1.json +1019 -0
  186. package/python/build/lib/opentrons_shared_data/data/labware/definitions/2/geb_96_tiprack_1000ul/1.json +1017 -0
  187. package/python/build/lib/opentrons_shared_data/data/labware/definitions/2/geb_96_tiprack_10ul/1.json +1017 -0
  188. package/python/build/lib/opentrons_shared_data/data/labware/definitions/2/nest_12_reservoir_15ml/1.json +190 -0
  189. package/python/build/lib/opentrons_shared_data/data/labware/definitions/2/nest_1_reservoir_195ml/1.json +54 -0
  190. package/python/build/lib/opentrons_shared_data/data/labware/definitions/2/nest_1_reservoir_195ml/2.json +56 -0
  191. package/python/build/lib/opentrons_shared_data/data/labware/definitions/2/nest_1_reservoir_290ml/1.json +54 -0
  192. package/python/build/lib/opentrons_shared_data/data/labware/definitions/2/nest_96_wellplate_100ul_pcr_full_skirt/1.json +1018 -0
  193. package/python/build/lib/opentrons_shared_data/data/labware/definitions/2/nest_96_wellplate_100ul_pcr_full_skirt/2.json +1039 -0
  194. package/python/build/lib/opentrons_shared_data/data/labware/definitions/2/nest_96_wellplate_200ul_flat/1.json +1017 -0
  195. package/python/build/lib/opentrons_shared_data/data/labware/definitions/2/nest_96_wellplate_200ul_flat/2.json +1031 -0
  196. package/python/build/lib/opentrons_shared_data/data/labware/definitions/2/nest_96_wellplate_2ml_deep/1.json +1121 -0
  197. package/python/build/lib/opentrons_shared_data/data/labware/definitions/2/nest_96_wellplate_2ml_deep/2.json +1137 -0
  198. package/python/build/lib/opentrons_shared_data/data/labware/definitions/2/opentrons_10_tuberack_falcon_4x50ml_6x15ml_conical/1.json +164 -0
  199. package/python/build/lib/opentrons_shared_data/data/labware/definitions/2/opentrons_10_tuberack_falcon_4x50ml_6x15ml_conical_acrylic/1.json +162 -0
  200. package/python/build/lib/opentrons_shared_data/data/labware/definitions/2/opentrons_10_tuberack_nest_4x50ml_6x15ml_conical/1.json +160 -0
  201. package/python/build/lib/opentrons_shared_data/data/labware/definitions/2/opentrons_15_tuberack_falcon_15ml_conical/1.json +211 -0
  202. package/python/build/lib/opentrons_shared_data/data/labware/definitions/2/opentrons_15_tuberack_nest_15ml_conical/1.json +209 -0
  203. package/python/build/lib/opentrons_shared_data/data/labware/definitions/2/opentrons_1_trash_1100ml_fixed/1.json +50 -0
  204. package/python/build/lib/opentrons_shared_data/data/labware/definitions/2/opentrons_1_trash_3200ml_fixed/1.json +50 -0
  205. package/python/build/lib/opentrons_shared_data/data/labware/definitions/2/opentrons_1_trash_850ml_fixed/1.json +50 -0
  206. package/python/build/lib/opentrons_shared_data/data/labware/definitions/2/opentrons_24_aluminumblock_generic_2ml_screwcap/1.json +300 -0
  207. package/python/build/lib/opentrons_shared_data/data/labware/definitions/2/opentrons_24_aluminumblock_generic_2ml_screwcap/2.json +301 -0
  208. package/python/build/lib/opentrons_shared_data/data/labware/definitions/2/opentrons_24_aluminumblock_nest_0.5ml_screwcap/1.json +299 -0
  209. package/python/build/lib/opentrons_shared_data/data/labware/definitions/2/opentrons_24_aluminumblock_nest_1.5ml_screwcap/1.json +299 -0
  210. package/python/build/lib/opentrons_shared_data/data/labware/definitions/2/opentrons_24_aluminumblock_nest_1.5ml_snapcap/1.json +301 -0
  211. package/python/build/lib/opentrons_shared_data/data/labware/definitions/2/opentrons_24_aluminumblock_nest_2ml_screwcap/1.json +299 -0
  212. package/python/build/lib/opentrons_shared_data/data/labware/definitions/2/opentrons_24_aluminumblock_nest_2ml_snapcap/1.json +301 -0
  213. package/python/build/lib/opentrons_shared_data/data/labware/definitions/2/opentrons_24_tuberack_eppendorf_1.5ml_safelock_snapcap/1.json +312 -0
  214. package/python/build/lib/opentrons_shared_data/data/labware/definitions/2/opentrons_24_tuberack_eppendorf_2ml_safelock_snapcap/1.json +311 -0
  215. package/python/build/lib/opentrons_shared_data/data/labware/definitions/2/opentrons_24_tuberack_eppendorf_2ml_safelock_snapcap_acrylic/1.json +309 -0
  216. package/python/build/lib/opentrons_shared_data/data/labware/definitions/2/opentrons_24_tuberack_generic_0.75ml_snapcap_acrylic/1.json +298 -0
  217. package/python/build/lib/opentrons_shared_data/data/labware/definitions/2/opentrons_24_tuberack_generic_2ml_screwcap/1.json +300 -0
  218. package/python/build/lib/opentrons_shared_data/data/labware/definitions/2/opentrons_24_tuberack_nest_0.5ml_screwcap/1.json +300 -0
  219. package/python/build/lib/opentrons_shared_data/data/labware/definitions/2/opentrons_24_tuberack_nest_1.5ml_screwcap/1.json +300 -0
  220. package/python/build/lib/opentrons_shared_data/data/labware/definitions/2/opentrons_24_tuberack_nest_1.5ml_snapcap/1.json +302 -0
  221. package/python/build/lib/opentrons_shared_data/data/labware/definitions/2/opentrons_24_tuberack_nest_2ml_screwcap/1.json +300 -0
  222. package/python/build/lib/opentrons_shared_data/data/labware/definitions/2/opentrons_24_tuberack_nest_2ml_snapcap/1.json +302 -0
  223. package/python/build/lib/opentrons_shared_data/data/labware/definitions/2/opentrons_40_aluminumblock_eppendorf_24x2ml_safelock_snapcap_generic_16x0.2ml_pcr_strip/1.json +481 -0
  224. package/python/build/lib/opentrons_shared_data/data/labware/definitions/2/opentrons_6_tuberack_falcon_50ml_conical/1.json +112 -0
  225. package/python/build/lib/opentrons_shared_data/data/labware/definitions/2/opentrons_6_tuberack_nest_50ml_conical/1.json +110 -0
  226. package/python/build/lib/opentrons_shared_data/data/labware/definitions/2/opentrons_96_aluminumblock_biorad_wellplate_200ul/1.json +1029 -0
  227. package/python/build/lib/opentrons_shared_data/data/labware/definitions/2/opentrons_96_aluminumblock_generic_pcr_strip_200ul/1.json +1026 -0
  228. package/python/build/lib/opentrons_shared_data/data/labware/definitions/2/opentrons_96_aluminumblock_generic_pcr_strip_200ul/2.json +1027 -0
  229. package/python/build/lib/opentrons_shared_data/data/labware/definitions/2/opentrons_96_aluminumblock_nest_wellplate_100ul/1.json +1027 -0
  230. package/python/build/lib/opentrons_shared_data/data/labware/definitions/2/opentrons_96_deep_well_adapter/1.json +41 -0
  231. package/python/build/lib/opentrons_shared_data/data/labware/definitions/2/opentrons_96_deep_well_adapter_nest_wellplate_2ml_deep/1.json +1121 -0
  232. package/python/build/lib/opentrons_shared_data/data/labware/definitions/2/opentrons_96_filtertiprack_1000ul/1.json +1017 -0
  233. package/python/build/lib/opentrons_shared_data/data/labware/definitions/2/opentrons_96_filtertiprack_10ul/1.json +1017 -0
  234. package/python/build/lib/opentrons_shared_data/data/labware/definitions/2/opentrons_96_filtertiprack_200ul/1.json +1017 -0
  235. package/python/build/lib/opentrons_shared_data/data/labware/definitions/2/opentrons_96_filtertiprack_20ul/1.json +1017 -0
  236. package/python/build/lib/opentrons_shared_data/data/labware/definitions/2/opentrons_96_flat_bottom_adapter/1.json +41 -0
  237. package/python/build/lib/opentrons_shared_data/data/labware/definitions/2/opentrons_96_flat_bottom_adapter_nest_wellplate_200ul_flat/1.json +1027 -0
  238. package/python/build/lib/opentrons_shared_data/data/labware/definitions/2/opentrons_96_pcr_adapter/1.json +1018 -0
  239. package/python/build/lib/opentrons_shared_data/data/labware/definitions/2/opentrons_96_pcr_adapter_armadillo_wellplate_200ul/1.json +1027 -0
  240. package/python/build/lib/opentrons_shared_data/data/labware/definitions/2/opentrons_96_pcr_adapter_nest_wellplate_100ul_pcr_full_skirt/1.json +1025 -0
  241. package/python/build/lib/opentrons_shared_data/data/labware/definitions/2/opentrons_96_tiprack_1000ul/1.json +1019 -0
  242. package/python/build/lib/opentrons_shared_data/data/labware/definitions/2/opentrons_96_tiprack_10ul/1.json +1019 -0
  243. package/python/build/lib/opentrons_shared_data/data/labware/definitions/2/opentrons_96_tiprack_20ul/1.json +1019 -0
  244. package/python/build/lib/opentrons_shared_data/data/labware/definitions/2/opentrons_96_tiprack_300ul/1.json +1019 -0
  245. package/python/build/lib/opentrons_shared_data/data/labware/definitions/2/opentrons_96_well_aluminum_block/1.json +1018 -0
  246. package/python/build/lib/opentrons_shared_data/data/labware/definitions/2/opentrons_96_wellplate_200ul_pcr_full_skirt/1.json +1019 -0
  247. package/python/build/lib/opentrons_shared_data/data/labware/definitions/2/opentrons_96_wellplate_200ul_pcr_full_skirt/2.json +1045 -0
  248. package/python/build/lib/opentrons_shared_data/data/labware/definitions/2/opentrons_aluminum_flat_bottom_plate/1.json +41 -0
  249. package/python/build/lib/opentrons_shared_data/data/labware/definitions/2/opentrons_calibration_adapter_heatershaker_module/1.json +62 -0
  250. package/python/build/lib/opentrons_shared_data/data/labware/definitions/2/opentrons_calibration_adapter_magnetic_module/1.json +62 -0
  251. package/python/build/lib/opentrons_shared_data/data/labware/definitions/2/opentrons_calibration_adapter_temperature_module/1.json +62 -0
  252. package/python/build/lib/opentrons_shared_data/data/labware/definitions/2/opentrons_calibration_adapter_thermocycler_module/1.json +69 -0
  253. package/python/build/lib/opentrons_shared_data/data/labware/definitions/2/opentrons_calibrationblock_short_side_left/1.json +71 -0
  254. package/python/build/lib/opentrons_shared_data/data/labware/definitions/2/opentrons_calibrationblock_short_side_right/1.json +71 -0
  255. package/python/build/lib/opentrons_shared_data/data/labware/definitions/2/opentrons_flex_96_filtertiprack_1000ul/1.json +1026 -0
  256. package/python/build/lib/opentrons_shared_data/data/labware/definitions/2/opentrons_flex_96_filtertiprack_200ul/1.json +1026 -0
  257. package/python/build/lib/opentrons_shared_data/data/labware/definitions/2/opentrons_flex_96_filtertiprack_50ul/1.json +1026 -0
  258. package/python/build/lib/opentrons_shared_data/data/labware/definitions/2/opentrons_flex_96_tiprack_1000ul/1.json +1026 -0
  259. package/python/build/lib/opentrons_shared_data/data/labware/definitions/2/opentrons_flex_96_tiprack_200ul/1.json +1026 -0
  260. package/python/build/lib/opentrons_shared_data/data/labware/definitions/2/opentrons_flex_96_tiprack_50ul/1.json +1026 -0
  261. package/python/build/lib/opentrons_shared_data/data/labware/definitions/2/opentrons_flex_96_tiprack_adapter/1.json +41 -0
  262. package/python/build/lib/opentrons_shared_data/data/labware/definitions/2/opentrons_ot3_96_tiprack_1000ul/1.json +1017 -0
  263. package/python/build/lib/opentrons_shared_data/data/labware/definitions/2/opentrons_ot3_96_tiprack_200ul/1.json +1017 -0
  264. package/python/build/lib/opentrons_shared_data/data/labware/definitions/2/opentrons_ot3_96_tiprack_50ul/1.json +1017 -0
  265. package/python/build/lib/opentrons_shared_data/data/labware/definitions/2/opentrons_universal_flat_adapter/1.json +151 -0
  266. package/python/build/lib/opentrons_shared_data/data/labware/definitions/2/opentrons_universal_flat_adapter_corning_384_wellplate_112ul_flat/1.json +4710 -0
  267. package/python/build/lib/opentrons_shared_data/data/labware/definitions/2/thermoscientificnunc_96_wellplate_1300ul/1.json +1019 -0
  268. package/python/build/lib/opentrons_shared_data/data/labware/definitions/2/thermoscientificnunc_96_wellplate_2000ul/1.json +1019 -0
  269. package/python/build/lib/opentrons_shared_data/data/labware/definitions/2/tipone_96_tiprack_200ul/1.json +1017 -0
  270. package/python/build/lib/opentrons_shared_data/data/labware/definitions/2/usascientific_12_reservoir_22ml/1.json +192 -0
  271. package/python/build/lib/opentrons_shared_data/data/labware/definitions/2/usascientific_96_wellplate_2.4ml_deep/1.json +1116 -0
  272. package/python/build/lib/opentrons_shared_data/data/labware/schemas/2.json +372 -0
  273. package/python/build/lib/opentrons_shared_data/data/module/definitions/1.json +57 -0
  274. package/python/build/lib/opentrons_shared_data/data/module/definitions/2/magneticModuleV1.json +22 -0
  275. package/python/build/lib/opentrons_shared_data/data/module/definitions/2/magneticModuleV2.json +69 -0
  276. package/python/build/lib/opentrons_shared_data/data/module/definitions/2/temperatureModuleV1.json +22 -0
  277. package/python/build/lib/opentrons_shared_data/data/module/definitions/2/temperatureModuleV2.json +69 -0
  278. package/python/build/lib/opentrons_shared_data/data/module/definitions/2/thermocyclerModuleV1.json +23 -0
  279. package/python/build/lib/opentrons_shared_data/data/module/definitions/3/heaterShakerModuleV1.json +521 -0
  280. package/python/build/lib/opentrons_shared_data/data/module/definitions/3/magneticBlockV1.json +199 -0
  281. package/python/build/lib/opentrons_shared_data/data/module/definitions/3/magneticModuleV1.json +435 -0
  282. package/python/build/lib/opentrons_shared_data/data/module/definitions/3/magneticModuleV2.json +488 -0
  283. package/python/build/lib/opentrons_shared_data/data/module/definitions/3/temperatureModuleV1.json +190 -0
  284. package/python/build/lib/opentrons_shared_data/data/module/definitions/3/temperatureModuleV2.json +315 -0
  285. package/python/build/lib/opentrons_shared_data/data/module/definitions/3/thermocyclerModuleV1.json +1380 -0
  286. package/python/build/lib/opentrons_shared_data/data/module/definitions/3/thermocyclerModuleV2.json +3686 -0
  287. package/python/build/lib/opentrons_shared_data/data/module/schemas/1.json +55 -0
  288. package/python/build/lib/opentrons_shared_data/data/module/schemas/2.json +112 -0
  289. package/python/build/lib/opentrons_shared_data/data/module/schemas/3.json +206 -0
  290. package/python/build/lib/opentrons_shared_data/data/pipette/definitions/1/pipetteModelSpecs.json +10214 -0
  291. package/python/build/lib/opentrons_shared_data/data/pipette/definitions/1/pipetteNameSpecs.json +679 -0
  292. package/python/build/lib/opentrons_shared_data/data/pipette/definitions/2/general/eight_channel/p10/1_0.json +40 -0
  293. package/python/build/lib/opentrons_shared_data/data/pipette/definitions/2/general/eight_channel/p10/1_3.json +40 -0
  294. package/python/build/lib/opentrons_shared_data/data/pipette/definitions/2/general/eight_channel/p10/1_4.json +40 -0
  295. package/python/build/lib/opentrons_shared_data/data/pipette/definitions/2/general/eight_channel/p10/1_5.json +40 -0
  296. package/python/build/lib/opentrons_shared_data/data/pipette/definitions/2/general/eight_channel/p10/1_6.json +40 -0
  297. package/python/build/lib/opentrons_shared_data/data/pipette/definitions/2/general/eight_channel/p1000/1_0.json +39 -0
  298. package/python/build/lib/opentrons_shared_data/data/pipette/definitions/2/general/eight_channel/p1000/3_0.json +39 -0
  299. package/python/build/lib/opentrons_shared_data/data/pipette/definitions/2/general/eight_channel/p1000/3_3.json +39 -0
  300. package/python/build/lib/opentrons_shared_data/data/pipette/definitions/2/general/eight_channel/p1000/3_4.json +39 -0
  301. package/python/build/lib/opentrons_shared_data/data/pipette/definitions/2/general/eight_channel/p1000/3_5.json +39 -0
  302. package/python/build/lib/opentrons_shared_data/data/pipette/definitions/2/general/eight_channel/p20/2_0.json +40 -0
  303. package/python/build/lib/opentrons_shared_data/data/pipette/definitions/2/general/eight_channel/p20/2_1.json +40 -0
  304. package/python/build/lib/opentrons_shared_data/data/pipette/definitions/2/general/eight_channel/p300/1_0.json +40 -0
  305. package/python/build/lib/opentrons_shared_data/data/pipette/definitions/2/general/eight_channel/p300/1_3.json +40 -0
  306. package/python/build/lib/opentrons_shared_data/data/pipette/definitions/2/general/eight_channel/p300/1_4.json +40 -0
  307. package/python/build/lib/opentrons_shared_data/data/pipette/definitions/2/general/eight_channel/p300/1_5.json +40 -0
  308. package/python/build/lib/opentrons_shared_data/data/pipette/definitions/2/general/eight_channel/p300/2_0.json +40 -0
  309. package/python/build/lib/opentrons_shared_data/data/pipette/definitions/2/general/eight_channel/p300/2_1.json +40 -0
  310. package/python/build/lib/opentrons_shared_data/data/pipette/definitions/2/general/eight_channel/p50/1_0.json +40 -0
  311. package/python/build/lib/opentrons_shared_data/data/pipette/definitions/2/general/eight_channel/p50/1_3.json +40 -0
  312. package/python/build/lib/opentrons_shared_data/data/pipette/definitions/2/general/eight_channel/p50/1_4.json +40 -0
  313. package/python/build/lib/opentrons_shared_data/data/pipette/definitions/2/general/eight_channel/p50/1_5.json +40 -0
  314. package/python/build/lib/opentrons_shared_data/data/pipette/definitions/2/general/eight_channel/p50/3_0.json +45 -0
  315. package/python/build/lib/opentrons_shared_data/data/pipette/definitions/2/general/eight_channel/p50/3_3.json +45 -0
  316. package/python/build/lib/opentrons_shared_data/data/pipette/definitions/2/general/eight_channel/p50/3_4.json +45 -0
  317. package/python/build/lib/opentrons_shared_data/data/pipette/definitions/2/general/eight_channel/p50/3_5.json +45 -0
  318. package/python/build/lib/opentrons_shared_data/data/pipette/definitions/2/general/ninety_six_channel/p1000/1_0.json +39 -0
  319. package/python/build/lib/opentrons_shared_data/data/pipette/definitions/2/general/ninety_six_channel/p1000/3_0.json +39 -0
  320. package/python/build/lib/opentrons_shared_data/data/pipette/definitions/2/general/ninety_six_channel/p1000/3_3.json +39 -0
  321. package/python/build/lib/opentrons_shared_data/data/pipette/definitions/2/general/ninety_six_channel/p1000/3_4.json +46 -0
  322. package/python/build/lib/opentrons_shared_data/data/pipette/definitions/2/general/ninety_six_channel/p1000/3_5.json +46 -0
  323. package/python/build/lib/opentrons_shared_data/data/pipette/definitions/2/general/single_channel/p10/1_0.json +40 -0
  324. package/python/build/lib/opentrons_shared_data/data/pipette/definitions/2/general/single_channel/p10/1_3.json +40 -0
  325. package/python/build/lib/opentrons_shared_data/data/pipette/definitions/2/general/single_channel/p10/1_4.json +40 -0
  326. package/python/build/lib/opentrons_shared_data/data/pipette/definitions/2/general/single_channel/p10/1_5.json +40 -0
  327. package/python/build/lib/opentrons_shared_data/data/pipette/definitions/2/general/single_channel/p1000/1_0.json +40 -0
  328. package/python/build/lib/opentrons_shared_data/data/pipette/definitions/2/general/single_channel/p1000/1_3.json +40 -0
  329. package/python/build/lib/opentrons_shared_data/data/pipette/definitions/2/general/single_channel/p1000/1_4.json +40 -0
  330. package/python/build/lib/opentrons_shared_data/data/pipette/definitions/2/general/single_channel/p1000/1_5.json +40 -0
  331. package/python/build/lib/opentrons_shared_data/data/pipette/definitions/2/general/single_channel/p1000/2_0.json +40 -0
  332. package/python/build/lib/opentrons_shared_data/data/pipette/definitions/2/general/single_channel/p1000/2_1.json +40 -0
  333. package/python/build/lib/opentrons_shared_data/data/pipette/definitions/2/general/single_channel/p1000/2_2.json +40 -0
  334. package/python/build/lib/opentrons_shared_data/data/pipette/definitions/2/general/single_channel/p1000/3_0.json +36 -0
  335. package/python/build/lib/opentrons_shared_data/data/pipette/definitions/2/general/single_channel/p1000/3_3.json +36 -0
  336. package/python/build/lib/opentrons_shared_data/data/pipette/definitions/2/general/single_channel/p1000/3_4.json +36 -0
  337. package/python/build/lib/opentrons_shared_data/data/pipette/definitions/2/general/single_channel/p1000/3_5.json +36 -0
  338. package/python/build/lib/opentrons_shared_data/data/pipette/definitions/2/general/single_channel/p20/2_0.json +40 -0
  339. package/python/build/lib/opentrons_shared_data/data/pipette/definitions/2/general/single_channel/p20/2_1.json +40 -0
  340. package/python/build/lib/opentrons_shared_data/data/pipette/definitions/2/general/single_channel/p20/2_2.json +40 -0
  341. package/python/build/lib/opentrons_shared_data/data/pipette/definitions/2/general/single_channel/p300/1_0.json +40 -0
  342. package/python/build/lib/opentrons_shared_data/data/pipette/definitions/2/general/single_channel/p300/1_3.json +40 -0
  343. package/python/build/lib/opentrons_shared_data/data/pipette/definitions/2/general/single_channel/p300/1_4.json +40 -0
  344. package/python/build/lib/opentrons_shared_data/data/pipette/definitions/2/general/single_channel/p300/1_5.json +40 -0
  345. package/python/build/lib/opentrons_shared_data/data/pipette/definitions/2/general/single_channel/p300/2_0.json +40 -0
  346. package/python/build/lib/opentrons_shared_data/data/pipette/definitions/2/general/single_channel/p300/2_1.json +40 -0
  347. package/python/build/lib/opentrons_shared_data/data/pipette/definitions/2/general/single_channel/p50/1_0.json +40 -0
  348. package/python/build/lib/opentrons_shared_data/data/pipette/definitions/2/general/single_channel/p50/1_3.json +40 -0
  349. package/python/build/lib/opentrons_shared_data/data/pipette/definitions/2/general/single_channel/p50/1_4.json +40 -0
  350. package/python/build/lib/opentrons_shared_data/data/pipette/definitions/2/general/single_channel/p50/1_5.json +42 -0
  351. package/python/build/lib/opentrons_shared_data/data/pipette/definitions/2/general/single_channel/p50/3_0.json +42 -0
  352. package/python/build/lib/opentrons_shared_data/data/pipette/definitions/2/general/single_channel/p50/3_3.json +42 -0
  353. package/python/build/lib/opentrons_shared_data/data/pipette/definitions/2/general/single_channel/p50/3_4.json +42 -0
  354. package/python/build/lib/opentrons_shared_data/data/pipette/definitions/2/general/single_channel/p50/3_5.json +42 -0
  355. package/python/build/lib/opentrons_shared_data/data/pipette/definitions/2/geometry/eight_channel/p10/1_0.json +15 -0
  356. package/python/build/lib/opentrons_shared_data/data/pipette/definitions/2/geometry/eight_channel/p10/1_3.json +15 -0
  357. package/python/build/lib/opentrons_shared_data/data/pipette/definitions/2/geometry/eight_channel/p10/1_4.json +15 -0
  358. package/python/build/lib/opentrons_shared_data/data/pipette/definitions/2/geometry/eight_channel/p10/1_5.json +15 -0
  359. package/python/build/lib/opentrons_shared_data/data/pipette/definitions/2/geometry/eight_channel/p10/1_6.json +15 -0
  360. package/python/build/lib/opentrons_shared_data/data/pipette/definitions/2/geometry/eight_channel/p1000/1_0.json +15 -0
  361. package/python/build/lib/opentrons_shared_data/data/pipette/definitions/2/geometry/eight_channel/p1000/3_0.json +15 -0
  362. package/python/build/lib/opentrons_shared_data/data/pipette/definitions/2/geometry/eight_channel/p1000/3_3.json +15 -0
  363. package/python/build/lib/opentrons_shared_data/data/pipette/definitions/2/geometry/eight_channel/p1000/3_4.json +15 -0
  364. package/python/build/lib/opentrons_shared_data/data/pipette/definitions/2/geometry/eight_channel/p1000/3_5.json +15 -0
  365. package/python/build/lib/opentrons_shared_data/data/pipette/definitions/2/geometry/eight_channel/p20/2_0.json +15 -0
  366. package/python/build/lib/opentrons_shared_data/data/pipette/definitions/2/geometry/eight_channel/p20/2_1.json +15 -0
  367. package/python/build/lib/opentrons_shared_data/data/pipette/definitions/2/geometry/eight_channel/p300/1_0.json +15 -0
  368. package/python/build/lib/opentrons_shared_data/data/pipette/definitions/2/geometry/eight_channel/p300/1_3.json +15 -0
  369. package/python/build/lib/opentrons_shared_data/data/pipette/definitions/2/geometry/eight_channel/p300/1_4.json +15 -0
  370. package/python/build/lib/opentrons_shared_data/data/pipette/definitions/2/geometry/eight_channel/p300/1_5.json +15 -0
  371. package/python/build/lib/opentrons_shared_data/data/pipette/definitions/2/geometry/eight_channel/p300/2_0.json +15 -0
  372. package/python/build/lib/opentrons_shared_data/data/pipette/definitions/2/geometry/eight_channel/p300/2_1.json +15 -0
  373. package/python/build/lib/opentrons_shared_data/data/pipette/definitions/2/geometry/eight_channel/p50/1_0.json +15 -0
  374. package/python/build/lib/opentrons_shared_data/data/pipette/definitions/2/geometry/eight_channel/p50/1_3.json +15 -0
  375. package/python/build/lib/opentrons_shared_data/data/pipette/definitions/2/geometry/eight_channel/p50/1_4.json +15 -0
  376. package/python/build/lib/opentrons_shared_data/data/pipette/definitions/2/geometry/eight_channel/p50/1_5.json +15 -0
  377. package/python/build/lib/opentrons_shared_data/data/pipette/definitions/2/geometry/eight_channel/p50/3_0.json +15 -0
  378. package/python/build/lib/opentrons_shared_data/data/pipette/definitions/2/geometry/eight_channel/p50/3_3.json +15 -0
  379. package/python/build/lib/opentrons_shared_data/data/pipette/definitions/2/geometry/eight_channel/p50/3_4.json +15 -0
  380. package/python/build/lib/opentrons_shared_data/data/pipette/definitions/2/geometry/eight_channel/p50/3_5.json +15 -0
  381. package/python/build/lib/opentrons_shared_data/data/pipette/definitions/2/geometry/ninety_six_channel/p1000/1_0.json +103 -0
  382. package/python/build/lib/opentrons_shared_data/data/pipette/definitions/2/geometry/ninety_six_channel/p1000/3_0.json +103 -0
  383. package/python/build/lib/opentrons_shared_data/data/pipette/definitions/2/geometry/ninety_six_channel/p1000/3_3.json +103 -0
  384. package/python/build/lib/opentrons_shared_data/data/pipette/definitions/2/geometry/ninety_six_channel/p1000/3_4.json +103 -0
  385. package/python/build/lib/opentrons_shared_data/data/pipette/definitions/2/geometry/ninety_six_channel/p1000/3_5.json +103 -0
  386. package/python/build/lib/opentrons_shared_data/data/pipette/definitions/2/geometry/single_channel/p10/1_0.json +8 -0
  387. package/python/build/lib/opentrons_shared_data/data/pipette/definitions/2/geometry/single_channel/p10/1_3.json +8 -0
  388. package/python/build/lib/opentrons_shared_data/data/pipette/definitions/2/geometry/single_channel/p10/1_4.json +8 -0
  389. package/python/build/lib/opentrons_shared_data/data/pipette/definitions/2/geometry/single_channel/p10/1_5.json +8 -0
  390. package/python/build/lib/opentrons_shared_data/data/pipette/definitions/2/geometry/single_channel/p1000/1_0.json +8 -0
  391. package/python/build/lib/opentrons_shared_data/data/pipette/definitions/2/geometry/single_channel/p1000/1_3.json +8 -0
  392. package/python/build/lib/opentrons_shared_data/data/pipette/definitions/2/geometry/single_channel/p1000/1_4.json +8 -0
  393. package/python/build/lib/opentrons_shared_data/data/pipette/definitions/2/geometry/single_channel/p1000/1_5.json +8 -0
  394. package/python/build/lib/opentrons_shared_data/data/pipette/definitions/2/geometry/single_channel/p1000/2_0.json +8 -0
  395. package/python/build/lib/opentrons_shared_data/data/pipette/definitions/2/geometry/single_channel/p1000/2_1.json +8 -0
  396. package/python/build/lib/opentrons_shared_data/data/pipette/definitions/2/geometry/single_channel/p1000/2_2.json +8 -0
  397. package/python/build/lib/opentrons_shared_data/data/pipette/definitions/2/geometry/single_channel/p1000/3_0.json +8 -0
  398. package/python/build/lib/opentrons_shared_data/data/pipette/definitions/2/geometry/single_channel/p1000/3_3.json +8 -0
  399. package/python/build/lib/opentrons_shared_data/data/pipette/definitions/2/geometry/single_channel/p1000/3_4.json +8 -0
  400. package/python/build/lib/opentrons_shared_data/data/pipette/definitions/2/geometry/single_channel/p1000/3_5.json +8 -0
  401. package/python/build/lib/opentrons_shared_data/data/pipette/definitions/2/geometry/single_channel/p20/2_0.json +8 -0
  402. package/python/build/lib/opentrons_shared_data/data/pipette/definitions/2/geometry/single_channel/p20/2_1.json +8 -0
  403. package/python/build/lib/opentrons_shared_data/data/pipette/definitions/2/geometry/single_channel/p20/2_2.json +8 -0
  404. package/python/build/lib/opentrons_shared_data/data/pipette/definitions/2/geometry/single_channel/p300/1_0.json +8 -0
  405. package/python/build/lib/opentrons_shared_data/data/pipette/definitions/2/geometry/single_channel/p300/1_3.json +8 -0
  406. package/python/build/lib/opentrons_shared_data/data/pipette/definitions/2/geometry/single_channel/p300/1_4.json +8 -0
  407. package/python/build/lib/opentrons_shared_data/data/pipette/definitions/2/geometry/single_channel/p300/1_5.json +8 -0
  408. package/python/build/lib/opentrons_shared_data/data/pipette/definitions/2/geometry/single_channel/p300/2_0.json +8 -0
  409. package/python/build/lib/opentrons_shared_data/data/pipette/definitions/2/geometry/single_channel/p300/2_1.json +8 -0
  410. package/python/build/lib/opentrons_shared_data/data/pipette/definitions/2/geometry/single_channel/p50/1_0.json +8 -0
  411. package/python/build/lib/opentrons_shared_data/data/pipette/definitions/2/geometry/single_channel/p50/1_3.json +8 -0
  412. package/python/build/lib/opentrons_shared_data/data/pipette/definitions/2/geometry/single_channel/p50/1_4.json +8 -0
  413. package/python/build/lib/opentrons_shared_data/data/pipette/definitions/2/geometry/single_channel/p50/1_5.json +8 -0
  414. package/python/build/lib/opentrons_shared_data/data/pipette/definitions/2/geometry/single_channel/p50/3_0.json +8 -0
  415. package/python/build/lib/opentrons_shared_data/data/pipette/definitions/2/geometry/single_channel/p50/3_3.json +8 -0
  416. package/python/build/lib/opentrons_shared_data/data/pipette/definitions/2/geometry/single_channel/p50/3_4.json +8 -0
  417. package/python/build/lib/opentrons_shared_data/data/pipette/definitions/2/geometry/single_channel/p50/3_5.json +8 -0
  418. package/python/build/lib/opentrons_shared_data/data/pipette/definitions/2/liquid/eight_channel/p10/1_0.json +72 -0
  419. package/python/build/lib/opentrons_shared_data/data/pipette/definitions/2/liquid/eight_channel/p10/1_3.json +72 -0
  420. package/python/build/lib/opentrons_shared_data/data/pipette/definitions/2/liquid/eight_channel/p10/1_4.json +72 -0
  421. package/python/build/lib/opentrons_shared_data/data/pipette/definitions/2/liquid/eight_channel/p10/1_5.json +77 -0
  422. package/python/build/lib/opentrons_shared_data/data/pipette/definitions/2/liquid/eight_channel/p10/1_6.json +117 -0
  423. package/python/build/lib/opentrons_shared_data/data/pipette/definitions/2/liquid/eight_channel/p10/default/1_0.json +58 -0
  424. package/python/build/lib/opentrons_shared_data/data/pipette/definitions/2/liquid/eight_channel/p10/default/1_3.json +58 -0
  425. package/python/build/lib/opentrons_shared_data/data/pipette/definitions/2/liquid/eight_channel/p10/default/1_4.json +58 -0
  426. package/python/build/lib/opentrons_shared_data/data/pipette/definitions/2/liquid/eight_channel/p10/default/1_5.json +47 -0
  427. package/python/build/lib/opentrons_shared_data/data/pipette/definitions/2/liquid/eight_channel/p10/default/1_6.json +55 -0
  428. package/python/build/lib/opentrons_shared_data/data/pipette/definitions/2/liquid/eight_channel/p1000/1_0.json +311 -0
  429. package/python/build/lib/opentrons_shared_data/data/pipette/definitions/2/liquid/eight_channel/p1000/3_0.json +311 -0
  430. package/python/build/lib/opentrons_shared_data/data/pipette/definitions/2/liquid/eight_channel/p1000/3_3.json +311 -0
  431. package/python/build/lib/opentrons_shared_data/data/pipette/definitions/2/liquid/eight_channel/p1000/3_4.json +311 -0
  432. package/python/build/lib/opentrons_shared_data/data/pipette/definitions/2/liquid/eight_channel/p1000/default/1_0.json +356 -0
  433. package/python/build/lib/opentrons_shared_data/data/pipette/definitions/2/liquid/eight_channel/p1000/default/3_0.json +359 -0
  434. package/python/build/lib/opentrons_shared_data/data/pipette/definitions/2/liquid/eight_channel/p1000/default/3_3.json +359 -0
  435. package/python/build/lib/opentrons_shared_data/data/pipette/definitions/2/liquid/eight_channel/p1000/default/3_4.json +359 -0
  436. package/python/build/lib/opentrons_shared_data/data/pipette/definitions/2/liquid/eight_channel/p1000/default/3_5.json +239 -0
  437. package/python/build/lib/opentrons_shared_data/data/pipette/definitions/2/liquid/eight_channel/p20/2_0.json +440 -0
  438. package/python/build/lib/opentrons_shared_data/data/pipette/definitions/2/liquid/eight_channel/p20/2_1.json +530 -0
  439. package/python/build/lib/opentrons_shared_data/data/pipette/definitions/2/liquid/eight_channel/p20/default/2_0.json +311 -0
  440. package/python/build/lib/opentrons_shared_data/data/pipette/definitions/2/liquid/eight_channel/p20/default/2_1.json +191 -0
  441. package/python/build/lib/opentrons_shared_data/data/pipette/definitions/2/liquid/eight_channel/p300/1_0.json +70 -0
  442. package/python/build/lib/opentrons_shared_data/data/pipette/definitions/2/liquid/eight_channel/p300/1_3.json +75 -0
  443. package/python/build/lib/opentrons_shared_data/data/pipette/definitions/2/liquid/eight_channel/p300/1_4.json +75 -0
  444. package/python/build/lib/opentrons_shared_data/data/pipette/definitions/2/liquid/eight_channel/p300/1_5.json +75 -0
  445. package/python/build/lib/opentrons_shared_data/data/pipette/definitions/2/liquid/eight_channel/p300/2_0.json +260 -0
  446. package/python/build/lib/opentrons_shared_data/data/pipette/definitions/2/liquid/eight_channel/p300/2_1.json +291 -0
  447. package/python/build/lib/opentrons_shared_data/data/pipette/definitions/2/liquid/eight_channel/p300/default/1_0.json +67 -0
  448. package/python/build/lib/opentrons_shared_data/data/pipette/definitions/2/liquid/eight_channel/p300/default/1_3.json +67 -0
  449. package/python/build/lib/opentrons_shared_data/data/pipette/definitions/2/liquid/eight_channel/p300/default/1_4.json +67 -0
  450. package/python/build/lib/opentrons_shared_data/data/pipette/definitions/2/liquid/eight_channel/p300/default/1_5.json +67 -0
  451. package/python/build/lib/opentrons_shared_data/data/pipette/definitions/2/liquid/eight_channel/p300/default/2_0.json +190 -0
  452. package/python/build/lib/opentrons_shared_data/data/pipette/definitions/2/liquid/eight_channel/p300/default/2_1.json +190 -0
  453. package/python/build/lib/opentrons_shared_data/data/pipette/definitions/2/liquid/eight_channel/p50/1_0.json +71 -0
  454. package/python/build/lib/opentrons_shared_data/data/pipette/definitions/2/liquid/eight_channel/p50/1_3.json +66 -0
  455. package/python/build/lib/opentrons_shared_data/data/pipette/definitions/2/liquid/eight_channel/p50/1_4.json +67 -0
  456. package/python/build/lib/opentrons_shared_data/data/pipette/definitions/2/liquid/eight_channel/p50/1_5.json +86 -0
  457. package/python/build/lib/opentrons_shared_data/data/pipette/definitions/2/liquid/eight_channel/p50/3_0.json +81 -0
  458. package/python/build/lib/opentrons_shared_data/data/pipette/definitions/2/liquid/eight_channel/p50/3_3.json +81 -0
  459. package/python/build/lib/opentrons_shared_data/data/pipette/definitions/2/liquid/eight_channel/p50/3_4.json +81 -0
  460. package/python/build/lib/opentrons_shared_data/data/pipette/definitions/2/liquid/eight_channel/p50/default/1_0.json +128 -0
  461. package/python/build/lib/opentrons_shared_data/data/pipette/definitions/2/liquid/eight_channel/p50/default/1_3.json +128 -0
  462. package/python/build/lib/opentrons_shared_data/data/pipette/definitions/2/liquid/eight_channel/p50/default/1_4.json +128 -0
  463. package/python/build/lib/opentrons_shared_data/data/pipette/definitions/2/liquid/eight_channel/p50/default/1_5.json +110 -0
  464. package/python/build/lib/opentrons_shared_data/data/pipette/definitions/2/liquid/eight_channel/p50/default/3_0.json +99 -0
  465. package/python/build/lib/opentrons_shared_data/data/pipette/definitions/2/liquid/eight_channel/p50/default/3_3.json +99 -0
  466. package/python/build/lib/opentrons_shared_data/data/pipette/definitions/2/liquid/eight_channel/p50/default/3_4.json +99 -0
  467. package/python/build/lib/opentrons_shared_data/data/pipette/definitions/2/liquid/eight_channel/p50/default/3_5.json +91 -0
  468. package/python/build/lib/opentrons_shared_data/data/pipette/definitions/2/liquid/eight_channel/p50/lowVolumeDefault/3_0.json +94 -0
  469. package/python/build/lib/opentrons_shared_data/data/pipette/definitions/2/liquid/eight_channel/p50/lowVolumeDefault/3_3.json +89 -0
  470. package/python/build/lib/opentrons_shared_data/data/pipette/definitions/2/liquid/eight_channel/p50/lowVolumeDefault/3_4.json +89 -0
  471. package/python/build/lib/opentrons_shared_data/data/pipette/definitions/2/liquid/eight_channel/p50/lowVolumeDefault/3_5.json +89 -0
  472. package/python/build/lib/opentrons_shared_data/data/pipette/definitions/2/liquid/ninety_six_channel/p1000/1_0.json +311 -0
  473. package/python/build/lib/opentrons_shared_data/data/pipette/definitions/2/liquid/ninety_six_channel/p1000/3_0.json +311 -0
  474. package/python/build/lib/opentrons_shared_data/data/pipette/definitions/2/liquid/ninety_six_channel/p1000/3_3.json +311 -0
  475. package/python/build/lib/opentrons_shared_data/data/pipette/definitions/2/liquid/ninety_six_channel/p1000/3_4.json +311 -0
  476. package/python/build/lib/opentrons_shared_data/data/pipette/definitions/2/liquid/ninety_six_channel/p1000/default/1_0.json +356 -0
  477. package/python/build/lib/opentrons_shared_data/data/pipette/definitions/2/liquid/ninety_six_channel/p1000/default/3_0.json +356 -0
  478. package/python/build/lib/opentrons_shared_data/data/pipette/definitions/2/liquid/ninety_six_channel/p1000/default/3_3.json +356 -0
  479. package/python/build/lib/opentrons_shared_data/data/pipette/definitions/2/liquid/ninety_six_channel/p1000/default/3_4.json +356 -0
  480. package/python/build/lib/opentrons_shared_data/data/pipette/definitions/2/liquid/ninety_six_channel/p1000/default/3_5.json +356 -0
  481. package/python/build/lib/opentrons_shared_data/data/pipette/definitions/2/liquid/single_channel/p10/1_0.json +73 -0
  482. package/python/build/lib/opentrons_shared_data/data/pipette/definitions/2/liquid/single_channel/p10/1_3.json +73 -0
  483. package/python/build/lib/opentrons_shared_data/data/pipette/definitions/2/liquid/single_channel/p10/1_4.json +70 -0
  484. package/python/build/lib/opentrons_shared_data/data/pipette/definitions/2/liquid/single_channel/p10/1_5.json +73 -0
  485. package/python/build/lib/opentrons_shared_data/data/pipette/definitions/2/liquid/single_channel/p10/default/1_0.json +59 -0
  486. package/python/build/lib/opentrons_shared_data/data/pipette/definitions/2/liquid/single_channel/p10/default/1_3.json +59 -0
  487. package/python/build/lib/opentrons_shared_data/data/pipette/definitions/2/liquid/single_channel/p10/default/1_4.json +56 -0
  488. package/python/build/lib/opentrons_shared_data/data/pipette/definitions/2/liquid/single_channel/p10/default/1_5.json +54 -0
  489. package/python/build/lib/opentrons_shared_data/data/pipette/definitions/2/liquid/single_channel/p1000/1_0.json +80 -0
  490. package/python/build/lib/opentrons_shared_data/data/pipette/definitions/2/liquid/single_channel/p1000/1_3.json +80 -0
  491. package/python/build/lib/opentrons_shared_data/data/pipette/definitions/2/liquid/single_channel/p1000/1_4.json +80 -0
  492. package/python/build/lib/opentrons_shared_data/data/pipette/definitions/2/liquid/single_channel/p1000/1_5.json +80 -0
  493. package/python/build/lib/opentrons_shared_data/data/pipette/definitions/2/liquid/single_channel/p1000/2_0.json +278 -0
  494. package/python/build/lib/opentrons_shared_data/data/pipette/definitions/2/liquid/single_channel/p1000/2_1.json +286 -0
  495. package/python/build/lib/opentrons_shared_data/data/pipette/definitions/2/liquid/single_channel/p1000/2_2.json +286 -0
  496. package/python/build/lib/opentrons_shared_data/data/pipette/definitions/2/liquid/single_channel/p1000/3_0.json +311 -0
  497. package/python/build/lib/opentrons_shared_data/data/pipette/definitions/2/liquid/single_channel/p1000/3_3.json +311 -0
  498. package/python/build/lib/opentrons_shared_data/data/pipette/definitions/2/liquid/single_channel/p1000/3_4.json +237 -0
  499. package/python/build/lib/opentrons_shared_data/data/pipette/definitions/2/liquid/single_channel/p1000/default/1_0.json +48 -0
  500. package/python/build/lib/opentrons_shared_data/data/pipette/definitions/2/liquid/single_channel/p1000/default/1_3.json +48 -0
  501. package/python/build/lib/opentrons_shared_data/data/pipette/definitions/2/liquid/single_channel/p1000/default/1_4.json +48 -0
  502. package/python/build/lib/opentrons_shared_data/data/pipette/definitions/2/liquid/single_channel/p1000/default/1_5.json +48 -0
  503. package/python/build/lib/opentrons_shared_data/data/pipette/definitions/2/liquid/single_channel/p1000/default/2_0.json +105 -0
  504. package/python/build/lib/opentrons_shared_data/data/pipette/definitions/2/liquid/single_channel/p1000/default/2_1.json +107 -0
  505. package/python/build/lib/opentrons_shared_data/data/pipette/definitions/2/liquid/single_channel/p1000/default/2_2.json +107 -0
  506. package/python/build/lib/opentrons_shared_data/data/pipette/definitions/2/liquid/single_channel/p1000/default/3_0.json +356 -0
  507. package/python/build/lib/opentrons_shared_data/data/pipette/definitions/2/liquid/single_channel/p1000/default/3_3.json +356 -0
  508. package/python/build/lib/opentrons_shared_data/data/pipette/definitions/2/liquid/single_channel/p1000/default/3_4.json +282 -0
  509. package/python/build/lib/opentrons_shared_data/data/pipette/definitions/2/liquid/single_channel/p1000/default/3_5.json +204 -0
  510. package/python/build/lib/opentrons_shared_data/data/pipette/definitions/2/liquid/single_channel/p20/2_0.json +530 -0
  511. package/python/build/lib/opentrons_shared_data/data/pipette/definitions/2/liquid/single_channel/p20/2_1.json +469 -0
  512. package/python/build/lib/opentrons_shared_data/data/pipette/definitions/2/liquid/single_channel/p20/2_2.json +469 -0
  513. package/python/build/lib/opentrons_shared_data/data/pipette/definitions/2/liquid/single_channel/p20/default/2_0.json +431 -0
  514. package/python/build/lib/opentrons_shared_data/data/pipette/definitions/2/liquid/single_channel/p20/default/2_1.json +251 -0
  515. package/python/build/lib/opentrons_shared_data/data/pipette/definitions/2/liquid/single_channel/p20/default/2_2.json +311 -0
  516. package/python/build/lib/opentrons_shared_data/data/pipette/definitions/2/liquid/single_channel/p300/1_0.json +90 -0
  517. package/python/build/lib/opentrons_shared_data/data/pipette/definitions/2/liquid/single_channel/p300/1_3.json +90 -0
  518. package/python/build/lib/opentrons_shared_data/data/pipette/definitions/2/liquid/single_channel/p300/1_4.json +90 -0
  519. package/python/build/lib/opentrons_shared_data/data/pipette/definitions/2/liquid/single_channel/p300/1_5.json +95 -0
  520. package/python/build/lib/opentrons_shared_data/data/pipette/definitions/2/liquid/single_channel/p300/2_0.json +291 -0
  521. package/python/build/lib/opentrons_shared_data/data/pipette/definitions/2/liquid/single_channel/p300/2_1.json +291 -0
  522. package/python/build/lib/opentrons_shared_data/data/pipette/definitions/2/liquid/single_channel/p300/default/1_0.json +99 -0
  523. package/python/build/lib/opentrons_shared_data/data/pipette/definitions/2/liquid/single_channel/p300/default/1_3.json +99 -0
  524. package/python/build/lib/opentrons_shared_data/data/pipette/definitions/2/liquid/single_channel/p300/default/1_4.json +99 -0
  525. package/python/build/lib/opentrons_shared_data/data/pipette/definitions/2/liquid/single_channel/p300/default/1_5.json +75 -0
  526. package/python/build/lib/opentrons_shared_data/data/pipette/definitions/2/liquid/single_channel/p300/default/2_0.json +188 -0
  527. package/python/build/lib/opentrons_shared_data/data/pipette/definitions/2/liquid/single_channel/p300/default/2_1.json +188 -0
  528. package/python/build/lib/opentrons_shared_data/data/pipette/definitions/2/liquid/single_channel/p50/1_0.json +74 -0
  529. package/python/build/lib/opentrons_shared_data/data/pipette/definitions/2/liquid/single_channel/p50/1_3.json +66 -0
  530. package/python/build/lib/opentrons_shared_data/data/pipette/definitions/2/liquid/single_channel/p50/1_4.json +71 -0
  531. package/python/build/lib/opentrons_shared_data/data/pipette/definitions/2/liquid/single_channel/p50/1_5.json +91 -0
  532. package/python/build/lib/opentrons_shared_data/data/pipette/definitions/2/liquid/single_channel/p50/3_0.json +81 -0
  533. package/python/build/lib/opentrons_shared_data/data/pipette/definitions/2/liquid/single_channel/p50/3_3.json +81 -0
  534. package/python/build/lib/opentrons_shared_data/data/pipette/definitions/2/liquid/single_channel/p50/3_4.json +83 -0
  535. package/python/build/lib/opentrons_shared_data/data/pipette/definitions/2/liquid/single_channel/p50/default/1_0.json +119 -0
  536. package/python/build/lib/opentrons_shared_data/data/pipette/definitions/2/liquid/single_channel/p50/default/1_3.json +128 -0
  537. package/python/build/lib/opentrons_shared_data/data/pipette/definitions/2/liquid/single_channel/p50/default/1_4.json +128 -0
  538. package/python/build/lib/opentrons_shared_data/data/pipette/definitions/2/liquid/single_channel/p50/default/1_5.json +104 -0
  539. package/python/build/lib/opentrons_shared_data/data/pipette/definitions/2/liquid/single_channel/p50/default/3_0.json +98 -0
  540. package/python/build/lib/opentrons_shared_data/data/pipette/definitions/2/liquid/single_channel/p50/default/3_3.json +98 -0
  541. package/python/build/lib/opentrons_shared_data/data/pipette/definitions/2/liquid/single_channel/p50/default/3_4.json +100 -0
  542. package/python/build/lib/opentrons_shared_data/data/pipette/definitions/2/liquid/single_channel/p50/default/3_5.json +80 -0
  543. package/python/build/lib/opentrons_shared_data/data/pipette/definitions/2/liquid/single_channel/p50/lowVolumeDefault/3_0.json +78 -0
  544. package/python/build/lib/opentrons_shared_data/data/pipette/definitions/2/liquid/single_channel/p50/lowVolumeDefault/3_3.json +78 -0
  545. package/python/build/lib/opentrons_shared_data/data/pipette/definitions/2/liquid/single_channel/p50/lowVolumeDefault/3_4.json +78 -0
  546. package/python/build/lib/opentrons_shared_data/data/pipette/definitions/2/liquid/single_channel/p50/lowVolumeDefault/3_5.json +76 -0
  547. package/python/build/lib/opentrons_shared_data/data/pipette/schemas/1/pipetteModelSpecsSchema.json +155 -0
  548. package/python/build/lib/opentrons_shared_data/data/pipette/schemas/1/pipetteNameSpecsSchema.json +91 -0
  549. package/python/build/lib/opentrons_shared_data/data/pipette/schemas/2/pipetteGeometrySchema.json +35 -0
  550. package/python/build/lib/opentrons_shared_data/data/pipette/schemas/2/pipetteLiquidPropertiesSchema.json +120 -0
  551. package/python/build/lib/opentrons_shared_data/data/pipette/schemas/2/pipettePropertiesSchema.json +189 -0
  552. package/python/build/lib/opentrons_shared_data/data/protocol/schemas/1.json +389 -0
  553. package/python/build/lib/opentrons_shared_data/data/protocol/schemas/2.json +416 -0
  554. package/python/build/lib/opentrons_shared_data/data/protocol/schemas/3.json +360 -0
  555. package/python/build/lib/opentrons_shared_data/data/protocol/schemas/4.json +662 -0
  556. package/python/build/lib/opentrons_shared_data/data/protocol/schemas/5.json +701 -0
  557. package/python/build/lib/opentrons_shared_data/data/protocol/schemas/6.json +1225 -0
  558. package/python/build/lib/opentrons_shared_data/data/protocol/schemas/7-draft.json +285 -0
  559. package/python/build/lib/opentrons_shared_data/data/protocol/schemas/7.json +290 -0
  560. package/python/build/lib/opentrons_shared_data/data/robot/definitions/1/ot2.json +5 -0
  561. package/python/build/lib/opentrons_shared_data/data/robot/definitions/1/ot3.json +5 -0
  562. package/python/build/lib/opentrons_shared_data/data/robot/schemas/1.json +30 -0
  563. package/python/build/lib/opentrons_shared_data/deck/__init__.py +84 -0
  564. package/python/build/lib/opentrons_shared_data/deck/dev_types.py +127 -0
  565. package/python/build/lib/opentrons_shared_data/errors/__init__.py +30 -0
  566. package/python/build/lib/opentrons_shared_data/errors/categories.py +60 -0
  567. package/python/build/lib/opentrons_shared_data/errors/codes.py +102 -0
  568. package/python/build/lib/opentrons_shared_data/errors/exceptions.py +799 -0
  569. package/python/build/lib/opentrons_shared_data/gripper/__init__.py +63 -0
  570. package/python/build/lib/opentrons_shared_data/gripper/constants.py +5 -0
  571. package/python/build/lib/opentrons_shared_data/gripper/gripper_definition.py +101 -0
  572. package/python/build/lib/opentrons_shared_data/labware/__init__.py +22 -0
  573. package/python/build/lib/opentrons_shared_data/labware/constants.py +7 -0
  574. package/python/build/lib/opentrons_shared_data/labware/dev_types.py +140 -0
  575. package/python/build/lib/opentrons_shared_data/labware/labware_definition.py +328 -0
  576. package/python/build/lib/opentrons_shared_data/load.py +57 -0
  577. package/python/build/lib/opentrons_shared_data/module/__init__.py +74 -0
  578. package/python/build/lib/opentrons_shared_data/module/dev_types.py +141 -0
  579. package/python/build/lib/opentrons_shared_data/pipette/__init__.py +107 -0
  580. package/python/build/lib/opentrons_shared_data/pipette/dev_types.py +177 -0
  581. package/python/build/lib/opentrons_shared_data/pipette/file_operation_helpers.py +37 -0
  582. package/python/build/lib/opentrons_shared_data/pipette/load_data.py +256 -0
  583. package/python/build/lib/opentrons_shared_data/pipette/model_constants.py +151 -0
  584. package/python/build/lib/opentrons_shared_data/pipette/mutable_configurations.py +402 -0
  585. package/python/build/lib/opentrons_shared_data/pipette/pipette_definition.py +389 -0
  586. package/python/build/lib/opentrons_shared_data/pipette/pipette_load_name_conversions.py +236 -0
  587. package/python/build/lib/opentrons_shared_data/pipette/scripts/__init__.py +0 -0
  588. package/python/build/lib/opentrons_shared_data/pipette/scripts/build_json_script.py +454 -0
  589. package/python/build/lib/opentrons_shared_data/pipette/scripts/update_configuration_files.py +453 -0
  590. package/python/build/lib/opentrons_shared_data/pipette/types.py +193 -0
  591. package/python/build/lib/opentrons_shared_data/protocol/__init__.py +13 -0
  592. package/python/build/lib/opentrons_shared_data/protocol/constants.py +98 -0
  593. package/python/build/lib/opentrons_shared_data/protocol/dev_types.py +436 -0
  594. package/python/build/lib/opentrons_shared_data/protocol/models/__init__.py +45 -0
  595. package/python/build/lib/opentrons_shared_data/protocol/models/protocol_schema_v6.py +145 -0
  596. package/python/build/lib/opentrons_shared_data/protocol/models/protocol_schema_v7.py +93 -0
  597. package/python/build/lib/opentrons_shared_data/protocol/models/shared_models.py +104 -0
  598. package/python/build/lib/opentrons_shared_data/py.typed +0 -0
  599. package/python/build/lib/opentrons_shared_data/robot/__init__.py +25 -0
  600. package/python/build/lib/opentrons_shared_data/robot/dev_types.py +37 -0
  601. package/python/build/lib/tests/deck/__init__.py +18 -0
  602. package/python/build/lib/tests/deck/test_typechecks.py +21 -0
  603. package/python/build/lib/tests/errors/__init__.py +1 -0
  604. package/python/build/lib/tests/errors/test_error_completeness.py +19 -0
  605. package/python/build/lib/tests/errors/test_exceptions.py +74 -0
  606. package/python/build/lib/tests/gripper/__init__.py +0 -0
  607. package/python/build/lib/tests/gripper/test_definition.py +30 -0
  608. package/python/build/lib/tests/gripper/test_load.py +16 -0
  609. package/python/build/lib/tests/labware/__init__.py +13 -0
  610. package/python/build/lib/tests/labware/test_typechecks.py +21 -0
  611. package/python/build/lib/tests/module/__init__.py +20 -0
  612. package/python/build/lib/tests/module/test_load.py +49 -0
  613. package/python/build/lib/tests/module/test_typechecks.py +34 -0
  614. package/python/build/lib/tests/pipette/__init__.py +0 -0
  615. package/python/build/lib/tests/pipette/test_load_data.py +102 -0
  616. package/python/build/lib/tests/pipette/test_mutable_configurations.py +266 -0
  617. package/python/build/lib/tests/pipette/test_pipette_definition.py +183 -0
  618. package/python/build/lib/tests/pipette/test_pipette_load_name_conversions.py +222 -0
  619. package/python/build/lib/tests/pipette/test_typechecks.py +50 -0
  620. package/python/build/lib/tests/pipette/test_validate_schema.py +36 -0
  621. package/python/build/lib/tests/protocol/__init__.py +15 -0
  622. package/python/build/lib/tests/protocol/test_protocol_schema_v6.py +107 -0
  623. package/python/build/lib/tests/protocol/test_protocol_schema_v7.py +34 -0
  624. package/python/build/lib/tests/protocol/test_typechecks.py +36 -0
  625. package/python/build/lib/tests/robot/__init__.py +0 -0
  626. package/python/build/lib/tests/robot/test_typechecks.py +20 -0
  627. package/python/coverage.xml +1549 -0
  628. package/python/opentrons_shared_data/__pycache__/__init__.cpython-37.pyc +0 -0
  629. package/python/opentrons_shared_data/__pycache__/_version.cpython-37.pyc +0 -0
  630. package/python/opentrons_shared_data/__pycache__/load.cpython-37.pyc +0 -0
  631. package/python/opentrons_shared_data/command/__pycache__/__init__.cpython-37.pyc +0 -0
  632. package/python/opentrons_shared_data/deck/__pycache__/__init__.cpython-37.pyc +0 -0
  633. package/python/opentrons_shared_data/deck/__pycache__/deck_definitions.cpython-37.pyc +0 -0
  634. package/python/opentrons_shared_data/deck/__pycache__/dev_types.cpython-37.pyc +0 -0
  635. package/python/opentrons_shared_data/errors/__pycache__/__init__.cpython-37.pyc +0 -0
  636. package/python/opentrons_shared_data/errors/__pycache__/categories.cpython-37.pyc +0 -0
  637. package/python/opentrons_shared_data/errors/__pycache__/codes.cpython-37.pyc +0 -0
  638. package/python/opentrons_shared_data/errors/__pycache__/exceptions.cpython-37.pyc +0 -0
  639. package/python/opentrons_shared_data/gripper/__pycache__/__init__.cpython-37.pyc +0 -0
  640. package/python/opentrons_shared_data/gripper/__pycache__/constants.cpython-37.pyc +0 -0
  641. package/python/opentrons_shared_data/gripper/__pycache__/dev_types.cpython-37.pyc +0 -0
  642. package/python/opentrons_shared_data/gripper/__pycache__/gripper_definition.cpython-37.pyc +0 -0
  643. package/python/opentrons_shared_data/gripper/constants.py +1 -0
  644. package/python/opentrons_shared_data/labware/__pycache__/__init__.cpython-37.pyc +0 -0
  645. package/python/opentrons_shared_data/labware/__pycache__/constants.cpython-37.pyc +0 -0
  646. package/python/opentrons_shared_data/labware/__pycache__/dev_types.cpython-37.pyc +0 -0
  647. package/python/opentrons_shared_data/labware/__pycache__/labware_definition.cpython-37.pyc +0 -0
  648. package/python/opentrons_shared_data/module/__pycache__/__init__.cpython-37.pyc +0 -0
  649. package/python/opentrons_shared_data/module/__pycache__/dev_types.cpython-37.pyc +0 -0
  650. package/python/opentrons_shared_data/pipette/__pycache__/__init__.cpython-37.pyc +0 -0
  651. package/python/opentrons_shared_data/pipette/__pycache__/dev_types.cpython-37.pyc +0 -0
  652. package/python/opentrons_shared_data/pipette/__pycache__/file_operation_helpers.cpython-37.pyc +0 -0
  653. package/python/opentrons_shared_data/pipette/__pycache__/load_data.cpython-37.pyc +0 -0
  654. package/python/opentrons_shared_data/pipette/__pycache__/model_constants.cpython-37.pyc +0 -0
  655. package/python/opentrons_shared_data/pipette/__pycache__/mutable_configurations.cpython-37.pyc +0 -0
  656. package/python/opentrons_shared_data/pipette/__pycache__/pipette_definition.cpython-37.pyc +0 -0
  657. package/python/opentrons_shared_data/pipette/__pycache__/pipette_load_name_conversions.cpython-37.pyc +0 -0
  658. package/python/opentrons_shared_data/pipette/__pycache__/types.cpython-37.pyc +0 -0
  659. package/python/opentrons_shared_data/pipette/pipette_load_name_conversions.py +5 -1
  660. package/python/opentrons_shared_data/protocol/__pycache__/__init__.cpython-37.pyc +0 -0
  661. package/python/opentrons_shared_data/protocol/__pycache__/constants.cpython-37.pyc +0 -0
  662. package/python/opentrons_shared_data/protocol/__pycache__/dev_types.cpython-37.pyc +0 -0
  663. package/python/opentrons_shared_data/protocol/models/__pycache__/__init__.cpython-37.pyc +0 -0
  664. package/python/opentrons_shared_data/protocol/models/__pycache__/protocol_schema_v6.cpython-37.pyc +0 -0
  665. package/python/opentrons_shared_data/protocol/models/__pycache__/protocol_schema_v7.cpython-37.pyc +0 -0
  666. package/python/opentrons_shared_data/protocol/models/__pycache__/protocol_schema_v8.cpython-37.pyc +0 -0
  667. package/python/opentrons_shared_data/protocol/models/__pycache__/shared_models.cpython-37.pyc +0 -0
  668. package/python/opentrons_shared_data/protocol/models/protocol_schema_v8.py +2 -0
  669. package/python/opentrons_shared_data/protocol/models/shared_models.py +6 -0
  670. package/python/opentrons_shared_data/robot/__init__.py +8 -0
  671. package/python/opentrons_shared_data/robot/__pycache__/__init__.cpython-37.pyc +0 -0
  672. package/python/opentrons_shared_data/robot/__pycache__/dev_types.cpython-37.pyc +0 -0
  673. package/python/opentrons_shared_data.egg-info/PKG-INFO +26 -0
  674. package/python/opentrons_shared_data.egg-info/SOURCES.txt +81 -0
  675. package/python/opentrons_shared_data.egg-info/dependency_links.txt +1 -0
  676. package/python/opentrons_shared_data.egg-info/not-zip-safe +1 -0
  677. package/python/opentrons_shared_data.egg-info/requires.txt +3 -0
  678. package/python/opentrons_shared_data.egg-info/top_level.txt +2 -0
  679. package/python/pyproject.toml +3 -0
  680. package/webpack.config.js +19 -0
  681. package/js/scripts/build.js +0 -32
@@ -0,0 +1,799 @@
1
+ """Exception hierarchy for error codes."""
2
+ from typing import Dict, Any, Optional, List, Iterator, Union, Sequence
3
+ from logging import getLogger
4
+ from traceback import format_exception_only, format_tb
5
+ import inspect
6
+ import sys
7
+
8
+ from .codes import ErrorCodes
9
+ from .categories import ErrorCategories
10
+
11
+
12
+ log = getLogger(__name__)
13
+
14
+
15
+ class EnumeratedError(Exception):
16
+ """The root class of error-code-bearing exceptions."""
17
+
18
+ def __init__(
19
+ self,
20
+ code: ErrorCodes,
21
+ message: Optional[str] = None,
22
+ detail: Optional[Dict[str, Any]] = None,
23
+ wrapping: Optional[Sequence["EnumeratedError"]] = None,
24
+ ) -> None:
25
+ """Build an EnumeratedError."""
26
+ self.code = code
27
+ self.message = message or ""
28
+ self.detail = detail or {}
29
+ self.wrapping = wrapping or []
30
+
31
+ def __repr__(self) -> str:
32
+ """Get a representative string for the exception."""
33
+ return f"<{self.__class__.__name__}: code=<{self.code.value.code} {self.code.name}> message={self.message} detail={str(self.detail)}"
34
+
35
+ def __str__(self) -> str:
36
+ """Get a human-readable string."""
37
+ _node = self.detail.get("node")
38
+ return f'Error {self.code.value.code} {self.code.name} ({self.__class__.__name__}){f": {self.message}" if self.message else ""}{f" ({_node})" if _node else ""}'
39
+
40
+ def __eq__(self, other: object) -> bool:
41
+ """Compare if two enumerated errors match."""
42
+ if not isinstance(other, EnumeratedError):
43
+ return NotImplemented
44
+ return (
45
+ self.code == other.code
46
+ and self.message == other.message
47
+ and self.detail == other.detail
48
+ and self.wrapping == other.wrapping
49
+ )
50
+
51
+
52
+ class CommunicationError(EnumeratedError):
53
+ """An exception indicating an unknown communications error.
54
+
55
+ This can either be used directly (by not specifying an error code, in which case
56
+ it will get the base communication error code) or as an intermediate parent in which
57
+ case you should specify the code with a super call.
58
+ """
59
+
60
+ def __init__(
61
+ self,
62
+ code: Optional[ErrorCodes] = None,
63
+ message: Optional[str] = None,
64
+ detail: Optional[Dict[str, Any]] = None,
65
+ wrapping: Optional[Sequence[EnumeratedError]] = None,
66
+ ) -> None:
67
+ """Build a CommunicationError."""
68
+ if code and code not in code.of_category(
69
+ ErrorCategories.HARDWARE_COMMUNICATION_ERROR
70
+ ):
71
+ log.error(
72
+ f"Error {code.name} is inappropriate for a CommunicationError exception"
73
+ )
74
+ super().__init__(
75
+ code or ErrorCodes.COMMUNICATION_ERROR, message, detail, wrapping
76
+ )
77
+
78
+
79
+ class RoboticsControlError(EnumeratedError):
80
+ """An exception indicating an unknown robotics control error.
81
+
82
+ This can either be used directly (by not specifying an error code, in which case
83
+ it will get the base robotics control error code) or as an intermediate parent in which
84
+ case you should specify the code with a super call.
85
+ """
86
+
87
+ def __init__(
88
+ self,
89
+ code: Optional[ErrorCodes] = None,
90
+ message: Optional[str] = None,
91
+ detail: Optional[Dict[str, Any]] = None,
92
+ wrapping: Optional[Sequence[EnumeratedError]] = None,
93
+ ) -> None:
94
+ """Build a RoboticsControlError."""
95
+ if code and code not in code.of_category(
96
+ ErrorCategories.ROBOTICS_CONTROL_ERROR
97
+ ):
98
+ log.error(
99
+ f"Error {code.name} is inappropriate for a RoboticsControlError exception"
100
+ )
101
+
102
+ super().__init__(
103
+ code or ErrorCodes.ROBOTICS_CONTROL_ERROR, message, detail, wrapping
104
+ )
105
+
106
+
107
+ class RoboticsInteractionError(EnumeratedError):
108
+ """An exception indicating an unknown robotics interacion error.
109
+
110
+ This can either be used directly (by not specifying an error code, in which case
111
+ it will get the base robotics interaction error code) or as an intermediate parent in which
112
+ case you should specify the code with a super call.
113
+ """
114
+
115
+ def __init__(
116
+ self,
117
+ code: Optional[ErrorCodes] = None,
118
+ message: Optional[str] = None,
119
+ detail: Optional[Dict[str, Any]] = None,
120
+ wrapping: Optional[Sequence[EnumeratedError]] = None,
121
+ ) -> None:
122
+ """Build a RoboticsInteractionError."""
123
+ if code and code not in code.of_category(
124
+ ErrorCategories.ROBOTICS_INTERACTION_ERROR
125
+ ):
126
+ log.error(
127
+ f"Error {code.name} is inappropriate for a RoboticsInteractionError exception"
128
+ )
129
+
130
+ super().__init__(
131
+ code or ErrorCodes.ROBOTICS_INTERACTION_ERROR, message, detail, wrapping
132
+ )
133
+
134
+
135
+ class GeneralError(EnumeratedError):
136
+ """An exception indicating an unknown general error.
137
+
138
+ This can either be used directly (by not specifying an error code, in which case
139
+ it will get the base general error code) or as an intermediate parent in which
140
+ case you should specify the code with a super call.
141
+ """
142
+
143
+ def __init__(
144
+ self,
145
+ code: Optional[ErrorCodes] = None,
146
+ message: Optional[str] = None,
147
+ detail: Optional[Dict[str, Any]] = None,
148
+ wrapping: Optional[Sequence[Union[EnumeratedError, BaseException]]] = None,
149
+ ) -> None:
150
+ """Build a GeneralError."""
151
+ if code and code not in code.of_category(ErrorCategories.GENERAL_ERROR):
152
+ log.error(
153
+ f"Error {code.name} is inappropriate for a GeneralError exception"
154
+ )
155
+
156
+ def _wrapped_excs() -> Iterator[EnumeratedError]:
157
+ if not wrapping:
158
+ return
159
+ for exc in wrapping:
160
+ if isinstance(exc, EnumeratedError):
161
+ yield exc
162
+ else:
163
+ yield PythonException(exc)
164
+
165
+ super().__init__(
166
+ code or ErrorCodes.GENERAL_ERROR, message, detail, list(_wrapped_excs())
167
+ )
168
+
169
+
170
+ def _exc_harvest_predicate(v: Any) -> bool:
171
+ if inspect.isroutine(v):
172
+ return False
173
+ if inspect.ismethoddescriptor(v):
174
+ return False
175
+ # on python 3.11 and up we can check if things are method wrappers, which basic builtin
176
+ # dunders like __add__ are, but until then we can't and also don't know this is real
177
+ if sys.version_info.minor >= 11 and inspect.ismethodwrapper(v): # type: ignore[attr-defined]
178
+ return False
179
+ return True
180
+
181
+
182
+ class PythonException(GeneralError):
183
+ """An exception wrapping a base exception but with a GeneralError code and storing details."""
184
+
185
+ def __init__(self, exc: BaseException) -> None:
186
+ """Build a PythonException."""
187
+
188
+ def _descend_exc_ctx(exc: BaseException) -> List[PythonException]:
189
+ descendants: List[PythonException] = []
190
+ if exc.__context__:
191
+ descendants.append(PythonException(exc.__context__))
192
+ if exc.__cause__:
193
+ descendants.append(PythonException(exc.__cause__))
194
+ return descendants
195
+
196
+ base_details = {
197
+ k: str(v)
198
+ for k, v in inspect.getmembers(exc, _exc_harvest_predicate)
199
+ if not k.startswith("_")
200
+ }
201
+ try:
202
+ tb = exc.__traceback__
203
+ except AttributeError:
204
+ tb = None
205
+
206
+ if tb:
207
+ base_details["traceback"] = "\n".join(format_tb(tb))
208
+ base_details["class"] = type(exc).__name__
209
+
210
+ super().__init__(
211
+ message="\n".join(format_exception_only(type(exc), exc)).strip(),
212
+ detail=base_details,
213
+ wrapping=_descend_exc_ctx(exc),
214
+ )
215
+
216
+
217
+ class RobotInUseError(CommunicationError):
218
+ """An error indicating that an action cannot proceed because another is in progress."""
219
+
220
+ def __init__(
221
+ self,
222
+ message: Optional[str] = None,
223
+ detail: Optional[Dict[str, Any]] = None,
224
+ wrapping: Optional[Sequence[EnumeratedError]] = None,
225
+ ) -> None:
226
+ """Build a CanbusCommunicationError."""
227
+ super().__init__(ErrorCodes.ROBOT_IN_USE, message, detail, wrapping)
228
+
229
+
230
+ class CanbusCommunicationError(CommunicationError):
231
+ """An error indicating a problem with canbus communication."""
232
+
233
+ def __init__(
234
+ self,
235
+ message: Optional[str] = None,
236
+ detail: Optional[Dict[str, Any]] = None,
237
+ wrapping: Optional[Sequence[EnumeratedError]] = None,
238
+ ) -> None:
239
+ """Build a CanbusCommunicationError."""
240
+ super().__init__(
241
+ ErrorCodes.CANBUS_COMMUNICATION_ERROR, message, detail, wrapping
242
+ )
243
+
244
+
245
+ class InternalUSBCommunicationError(CommunicationError):
246
+ """An error indicating a problem with internal USB communication - e.g. with the rear panel."""
247
+
248
+ def __init__(
249
+ self,
250
+ message: Optional[str] = None,
251
+ detail: Optional[Dict[str, Any]] = None,
252
+ wrapping: Optional[Sequence[EnumeratedError]] = None,
253
+ ) -> None:
254
+ """Build an InternalUSBCommunicationError."""
255
+ super().__init__(
256
+ ErrorCodes.INTERNAL_USB_COMMUNICATION_ERROR, message, detail, wrapping
257
+ )
258
+
259
+
260
+ class ModuleCommunicationError(CommunicationError):
261
+ """An error indicating a problem with module communication."""
262
+
263
+ def __init__(
264
+ self,
265
+ message: Optional[str] = None,
266
+ detail: Optional[Dict[str, Any]] = None,
267
+ wrapping: Optional[Sequence[EnumeratedError]] = None,
268
+ ) -> None:
269
+ """Build a CanbusCommunicationError."""
270
+ super().__init__(
271
+ ErrorCodes.CANBUS_COMMUNICATION_ERROR, message, detail, wrapping
272
+ )
273
+
274
+
275
+ class CommandTimedOutError(CommunicationError):
276
+ """An error indicating that a command timed out."""
277
+
278
+ def __init__(
279
+ self,
280
+ message: Optional[str] = None,
281
+ detail: Optional[Dict[str, Any]] = None,
282
+ wrapping: Optional[Sequence[EnumeratedError]] = None,
283
+ ) -> None:
284
+ """Build a CommandTimedOutError."""
285
+ super().__init__(ErrorCodes.COMMAND_TIMED_OUT, message, detail, wrapping)
286
+
287
+
288
+ class FirmwareUpdateFailedError(CommunicationError):
289
+ """An error indicating that a firmware update failed."""
290
+
291
+ def __init__(
292
+ self,
293
+ message: Optional[str] = None,
294
+ detail: Optional[Dict[str, Any]] = None,
295
+ wrapping: Optional[Sequence[EnumeratedError]] = None,
296
+ ) -> None:
297
+ """Build a FirmwareUpdateFailedError."""
298
+ super().__init__(ErrorCodes.FIRMWARE_UPDATE_FAILED, message, detail, wrapping)
299
+
300
+
301
+ class InternalMessageFormatError(CommunicationError):
302
+ """An error indicating that an internal message was formatted incorrectly."""
303
+
304
+ def __init__(
305
+ self,
306
+ message: Optional[str] = None,
307
+ detail: Optional[Dict[str, Any]] = None,
308
+ wrapping: Optional[Sequence[EnumeratedError]] = None,
309
+ ) -> None:
310
+ """Build an InternalMesasgeFormatError."""
311
+ super().__init__(
312
+ ErrorCodes.INTERNAL_MESSAGE_FORMAT_ERROR, message, detail, wrapping
313
+ )
314
+
315
+
316
+ class CANBusConfigurationError(CommunicationError):
317
+ """An error indicating a misconfiguration of the CANbus."""
318
+
319
+ def __init__(
320
+ self,
321
+ message: Optional[str] = None,
322
+ detail: Optional[Dict[str, Any]] = None,
323
+ wrapping: Optional[Sequence[EnumeratedError]] = None,
324
+ ) -> None:
325
+ """Build a CANBus Configuration Error."""
326
+ super().__init__(
327
+ ErrorCodes.CANBUS_CONFIGURATION_ERROR, message, detail, wrapping
328
+ )
329
+
330
+
331
+ class CANBusBusError(CommunicationError):
332
+ """An error indicating a low-level bus error on the CANbus like an error frame."""
333
+
334
+ def __init__(
335
+ self,
336
+ message: Optional[str] = None,
337
+ detail: Optional[Dict[str, Any]] = None,
338
+ wrapping: Optional[Sequence[EnumeratedError]] = None,
339
+ ) -> None:
340
+ """Build a CANBus Bus Error."""
341
+ super().__init__(ErrorCodes.CANBUS_BUS_ERROR, message, detail, wrapping)
342
+
343
+
344
+ class MotionFailedError(RoboticsControlError):
345
+ """An error indicating that a motion failed."""
346
+
347
+ def __init__(
348
+ self,
349
+ message: Optional[str] = None,
350
+ detail: Optional[Dict[str, Any]] = None,
351
+ wrapping: Optional[Sequence[EnumeratedError]] = None,
352
+ ) -> None:
353
+ """Build a FirmwareUpdateFailedError."""
354
+ super().__init__(ErrorCodes.MOTION_FAILED, message, detail, wrapping)
355
+
356
+
357
+ class HomingFailedError(RoboticsControlError):
358
+ """An error indicating that a homing failed."""
359
+
360
+ def __init__(
361
+ self,
362
+ message: Optional[str] = None,
363
+ detail: Optional[Dict[str, Any]] = None,
364
+ wrapping: Optional[Sequence[EnumeratedError]] = None,
365
+ ) -> None:
366
+ """Build a FirmwareUpdateFailedError."""
367
+ super().__init__(ErrorCodes.HOMING_FAILED, message, detail, wrapping)
368
+
369
+
370
+ class StallOrCollisionDetectedError(RoboticsControlError):
371
+ """An error indicating that a stall or collision occurred."""
372
+
373
+ def __init__(
374
+ self,
375
+ message: Optional[str] = None,
376
+ detail: Optional[Dict[str, Any]] = None,
377
+ wrapping: Optional[Sequence[EnumeratedError]] = None,
378
+ ) -> None:
379
+ """Build a StallOrCollisionDetectedError."""
380
+ super().__init__(
381
+ ErrorCodes.STALL_OR_COLLISION_DETECTED, message, detail, wrapping
382
+ )
383
+
384
+
385
+ class MotionPlanningFailureError(RoboticsControlError):
386
+ """An error indicating that motion planning failed."""
387
+
388
+ def __init__(
389
+ self,
390
+ message: Optional[str] = None,
391
+ detail: Optional[Dict[str, Any]] = None,
392
+ wrapping: Optional[Sequence[EnumeratedError]] = None,
393
+ ) -> None:
394
+ """Build a MotionPlanningFailureError."""
395
+ super().__init__(ErrorCodes.MOTION_PLANNING_FAILURE, message, detail, wrapping)
396
+
397
+
398
+ class PositionEstimationInvalidError(RoboticsControlError):
399
+ """An error indicating that a command failed because position estimation was invalid."""
400
+
401
+ def __init__(
402
+ self,
403
+ message: Optional[str] = None,
404
+ detail: Optional[Dict[str, Any]] = None,
405
+ wrapping: Optional[Sequence[EnumeratedError]] = None,
406
+ ) -> None:
407
+ """Build a PositionEstimationFailedError."""
408
+ super().__init__(
409
+ ErrorCodes.POSITION_ESTIMATION_INVALID, message, detail, wrapping
410
+ )
411
+
412
+
413
+ class MoveConditionNotMetError(RoboticsControlError):
414
+ """An error indicating that a move completed without its condition being met."""
415
+
416
+ def __init__(
417
+ self,
418
+ message: Optional[str] = None,
419
+ detail: Optional[Dict[str, Any]] = None,
420
+ wrapping: Optional[Sequence[EnumeratedError]] = None,
421
+ ) -> None:
422
+ """Build a MoveConditionNotMetError."""
423
+ super().__init__(
424
+ ErrorCodes.MOVE_CONDITION_NOT_MET,
425
+ message or "Move completed without its complete condition being met",
426
+ detail,
427
+ wrapping,
428
+ )
429
+
430
+
431
+ class CalibrationStructureNotFoundError(RoboticsControlError):
432
+ """An error indicating that a calibration square was not able to be found."""
433
+
434
+ def __init__(
435
+ self,
436
+ structure_height: float,
437
+ lower_limit: float,
438
+ detail: Optional[Dict[str, Any]] = None,
439
+ wrapping: Optional[Sequence[EnumeratedError]] = None,
440
+ ) -> None:
441
+ """Build a CalibrationStructureNotFoundError."""
442
+ super().__init__(
443
+ ErrorCodes.CALIBRATION_STRUCTURE_NOT_FOUND,
444
+ f"Structure height at z={structure_height}mm beyond lower limit: {lower_limit}.",
445
+ detail,
446
+ wrapping,
447
+ )
448
+
449
+
450
+ class EdgeNotFoundError(RoboticsControlError):
451
+ """An error indicating that a calibration square edge was not able to be found."""
452
+
453
+ def __init__(
454
+ self,
455
+ edge_name: str,
456
+ stride: float,
457
+ detail: Optional[Dict[str, Any]] = None,
458
+ wrapping: Optional[Sequence[EnumeratedError]] = None,
459
+ ) -> None:
460
+ """Build a EdgeNotFoundError."""
461
+ super().__init__(
462
+ ErrorCodes.EDGE_NOT_FOUND,
463
+ f"Edge {edge_name} could not be verified at {stride} mm resolution.",
464
+ detail,
465
+ wrapping,
466
+ )
467
+
468
+
469
+ class EarlyCapacitiveSenseTrigger(RoboticsControlError):
470
+ """An error indicating that a capacitive probe triggered too early."""
471
+
472
+ def __init__(
473
+ self,
474
+ found: float,
475
+ nominal: float,
476
+ detail: Optional[Dict[str, Any]] = None,
477
+ wrapping: Optional[Sequence[EnumeratedError]] = None,
478
+ ) -> None:
479
+ """Build a EarlyCapacitiveSenseTrigger."""
480
+ super().__init__(
481
+ ErrorCodes.EARLY_CAPACITIVE_SENSE_TRIGGER,
482
+ f"Calibration triggered early at z={found}mm, expected {nominal}",
483
+ detail,
484
+ wrapping,
485
+ )
486
+
487
+
488
+ class InaccurateNonContactSweepError(RoboticsControlError):
489
+ """An error indicating that a capacitive sweep was inaccurate."""
490
+
491
+ def __init__(
492
+ self,
493
+ found: float,
494
+ nominal: float,
495
+ detail: Optional[Dict[str, Any]] = None,
496
+ wrapping: Optional[Sequence[EnumeratedError]] = None,
497
+ ) -> None:
498
+ """Build a InaccurateNonContactSweepError."""
499
+ msg = (
500
+ f"Calibration detected a slot width of {found:.3f}mm, "
501
+ f"which is too far from the design width of {nominal:.3f}mm"
502
+ )
503
+ super().__init__(
504
+ ErrorCodes.INACCURATE_NON_CONTACT_SWEEP,
505
+ msg,
506
+ detail,
507
+ wrapping,
508
+ )
509
+
510
+
511
+ class MisalignedGantryError(RoboticsControlError):
512
+ """An error indicating that the robot's gantry and deck are misaligned."""
513
+
514
+ def __init__(
515
+ self,
516
+ detail: Optional[Dict[str, Any]] = None,
517
+ wrapping: Optional[Sequence[EnumeratedError]] = None,
518
+ ) -> None:
519
+ """Build a MisalignedGantryError."""
520
+ msg = "This machine is misaligned and requires maintenance."
521
+ if detail:
522
+ msg += str(detail)
523
+ super().__init__(
524
+ ErrorCodes.MISALIGNED_GANTRY,
525
+ msg,
526
+ detail,
527
+ wrapping,
528
+ )
529
+
530
+
531
+ class LabwareDroppedError(RoboticsInteractionError):
532
+ """An error indicating that the gripper dropped labware it was holding."""
533
+
534
+ def __init__(
535
+ self,
536
+ message: Optional[str] = None,
537
+ detail: Optional[Dict[str, Any]] = None,
538
+ wrapping: Optional[Sequence[EnumeratedError]] = None,
539
+ ) -> None:
540
+ """Build a LabwareDroppedError."""
541
+ super().__init__(ErrorCodes.LABWARE_DROPPED, message, detail, wrapping)
542
+
543
+
544
+ class TipPickupFailedError(RoboticsInteractionError):
545
+ """An error indicating that a pipette failed to pick up a tip."""
546
+
547
+ def __init__(
548
+ self,
549
+ message: Optional[str] = None,
550
+ detail: Optional[Dict[str, Any]] = None,
551
+ wrapping: Optional[Sequence[EnumeratedError]] = None,
552
+ ) -> None:
553
+ """Build a TipPickupFailedError."""
554
+ super().__init__(ErrorCodes.TIP_PICKUP_FAILED, message, detail, wrapping)
555
+
556
+
557
+ class TipDropFailedError(RoboticsInteractionError):
558
+ """An error indicating that a pipette failed to drop a tip."""
559
+
560
+ def __init__(
561
+ self,
562
+ message: Optional[str] = None,
563
+ detail: Optional[Dict[str, Any]] = None,
564
+ wrapping: Optional[Sequence[EnumeratedError]] = None,
565
+ ) -> None:
566
+ """Build a TipPickupFailedError."""
567
+ super().__init__(ErrorCodes.TIP_DROP_FAILED, message, detail, wrapping)
568
+
569
+
570
+ class UnexpectedTipRemovalError(RoboticsInteractionError):
571
+ """An error indicating that a pipette did not have a tip when it should (aka it fell off)."""
572
+
573
+ def __init__(
574
+ self,
575
+ message: Optional[str] = None,
576
+ detail: Optional[Dict[str, Any]] = None,
577
+ wrapping: Optional[Sequence[EnumeratedError]] = None,
578
+ ) -> None:
579
+ """Build an UnexpectedTipRemovalError."""
580
+ super().__init__(ErrorCodes.UNEXPECTED_TIP_REMOVAL, message, detail, wrapping)
581
+
582
+
583
+ class UnexpectedTipAttachError(RoboticsInteractionError):
584
+ """An error indicating that a pipette had a tip when it shouldn't."""
585
+
586
+ def __init__(
587
+ self,
588
+ message: Optional[str] = None,
589
+ detail: Optional[Dict[str, Any]] = None,
590
+ wrapping: Optional[Sequence[EnumeratedError]] = None,
591
+ ) -> None:
592
+ """Build an UnexpectedTipAttachError."""
593
+ super().__init__(ErrorCodes.UNEXPECTED_TIP_ATTACH, message, detail, wrapping)
594
+
595
+
596
+ class FirmwareUpdateRequiredError(RoboticsInteractionError):
597
+ """An error indicating that a firmware update is required."""
598
+
599
+ def __init__(
600
+ self,
601
+ message: Optional[str] = None,
602
+ detail: Optional[Dict[str, Any]] = None,
603
+ wrapping: Optional[Sequence[EnumeratedError]] = None,
604
+ ) -> None:
605
+ """Build a FirmwareUpdateRequiredError."""
606
+ super().__init__(ErrorCodes.FIRMWARE_UPDATE_REQUIRED, message, detail, wrapping)
607
+
608
+
609
+ class PipetteOverpressureError(RoboticsInteractionError):
610
+ """An error indicating that a pipette experienced an overpressure event, likely because of a clog."""
611
+
612
+ def __init__(
613
+ self,
614
+ message: Optional[str] = None,
615
+ detail: Optional[Dict[str, Any]] = None,
616
+ wrapping: Optional[Sequence[EnumeratedError]] = None,
617
+ ) -> None:
618
+ """Build an PipetteOverpressureError."""
619
+ super().__init__(ErrorCodes.PIPETTE_OVERPRESSURE, message, detail, wrapping)
620
+
621
+
622
+ class EStopActivatedError(RoboticsInteractionError):
623
+ """An error indicating that the E-stop was activated."""
624
+
625
+ def __init__(
626
+ self,
627
+ message: Optional[str] = None,
628
+ detail: Optional[Dict[str, Any]] = None,
629
+ wrapping: Optional[Sequence[EnumeratedError]] = None,
630
+ ) -> None:
631
+ """Build an EStopActivatedError."""
632
+ super().__init__(ErrorCodes.E_STOP_ACTIVATED, message, detail, wrapping)
633
+
634
+
635
+ class EStopNotPresentError(RoboticsInteractionError):
636
+ """An error indicating that the E-stop is not present."""
637
+
638
+ def __init__(
639
+ self,
640
+ message: Optional[str] = None,
641
+ detail: Optional[Dict[str, Any]] = None,
642
+ wrapping: Optional[Sequence[EnumeratedError]] = None,
643
+ ) -> None:
644
+ """Build an EStopNotPresentError."""
645
+ super().__init__(ErrorCodes.E_STOP_NOT_PRESENT, message, detail, wrapping)
646
+
647
+
648
+ class PipetteNotPresentError(RoboticsInteractionError):
649
+ """An error indicating that the specified pipette is not present."""
650
+
651
+ def __init__(
652
+ self,
653
+ message: Optional[str] = None,
654
+ detail: Optional[Dict[str, Any]] = None,
655
+ wrapping: Optional[Sequence[EnumeratedError]] = None,
656
+ ) -> None:
657
+ """Build an PipetteNotPresentError."""
658
+ super().__init__(ErrorCodes.PIPETTE_NOT_PRESENT, message, detail, wrapping)
659
+
660
+
661
+ class GripperNotPresentError(RoboticsInteractionError):
662
+ """An error indicating that the specified gripper is not present."""
663
+
664
+ def __init__(
665
+ self,
666
+ message: Optional[str] = None,
667
+ detail: Optional[Dict[str, Any]] = None,
668
+ wrapping: Optional[Sequence[EnumeratedError]] = None,
669
+ ) -> None:
670
+ """Build a GripperNotPresentError."""
671
+ super().__init__(ErrorCodes.GRIPPER_NOT_PRESENT, message, detail, wrapping)
672
+
673
+
674
+ class InvalidActuator(RoboticsInteractionError):
675
+ """An error indicating that a specified actuator is not valid."""
676
+
677
+ def __init__(
678
+ self,
679
+ message: Optional[str] = None,
680
+ detail: Optional[Dict[str, Any]] = None,
681
+ wrapping: Optional[Sequence[EnumeratedError]] = None,
682
+ ) -> None:
683
+ """Build an GripperNotPresentError."""
684
+ super().__init__(ErrorCodes.INVALID_ACTUATOR, message, detail, wrapping)
685
+
686
+
687
+ class ModuleNotPresent(RoboticsInteractionError):
688
+ """An error indicating that a specific module was not present."""
689
+
690
+ def __init__(
691
+ self,
692
+ identifier: str,
693
+ message: Optional[str] = None,
694
+ detail: Optional[Dict[str, Any]] = None,
695
+ wrapping: Optional[Sequence[EnumeratedError]] = None,
696
+ ) -> None:
697
+ """Build a ModuleNotPresentError."""
698
+ checked_detail: Dict[str, Any] = detail or {}
699
+ checked_detail["identifier"] = identifier
700
+ checked_message = message or f"Module {identifier} is not present"
701
+ super().__init__(
702
+ ErrorCodes.MODULE_NOT_PRESENT, checked_message, checked_detail, wrapping
703
+ )
704
+
705
+
706
+ class InvalidInstrumentData(RoboticsInteractionError):
707
+ """An error indicating that instrument data is invalid."""
708
+
709
+ def __init__(
710
+ self,
711
+ message: Optional[str] = None,
712
+ detail: Optional[Dict[str, Any]] = None,
713
+ wrapping: Optional[Sequence[EnumeratedError]] = None,
714
+ ) -> None:
715
+ """Build an GripperNotPresentError."""
716
+ super().__init__(ErrorCodes.INVALID_INSTRUMENT_DATA, message, detail, wrapping)
717
+
718
+
719
+ class InvalidLiquidClassName(RoboticsInteractionError):
720
+ """An error indicating that a liquid class name does not exist on a pipette."""
721
+
722
+ def __init__(
723
+ self,
724
+ message: Optional[str] = None,
725
+ detail: Optional[Dict[str, Any]] = None,
726
+ wrapping: Optional[Sequence[EnumeratedError]] = None,
727
+ ) -> None:
728
+ """Build an InvalidLiquidClassName."""
729
+ super().__init__(
730
+ ErrorCodes.INVALID_LIQUID_CLASS_NAME, message, detail, wrapping
731
+ )
732
+
733
+
734
+ class APIRemoved(GeneralError):
735
+ """An error indicating that a specific API is no longer available."""
736
+
737
+ def __init__(
738
+ self,
739
+ api_element: str,
740
+ since_version: str,
741
+ message: Optional[str] = None,
742
+ detail: Optional[Dict[str, Any]] = None,
743
+ wrapping: Optional[Sequence[EnumeratedError]] = None,
744
+ ) -> None:
745
+ """Build an APIRemoved error."""
746
+ checked_detail: Dict[str, Any] = detail or {}
747
+ checked_detail["identifier"] = api_element
748
+ checked_detail["since_version"] = since_version
749
+ checked_message = (
750
+ message
751
+ or f"{api_element} is no longer available since version {since_version}."
752
+ )
753
+ super().__init__(
754
+ ErrorCodes.API_REMOVED, checked_message, checked_detail, wrapping
755
+ )
756
+
757
+
758
+ class CommandPreconditionViolated(GeneralError):
759
+ """An error indicating that a command was issued in a robot state incompatible with it."""
760
+
761
+ def __init__(
762
+ self,
763
+ message: Optional[str] = None,
764
+ detail: Optional[Dict[str, Any]] = None,
765
+ wrapping: Optional[Sequence[EnumeratedError]] = None,
766
+ ) -> None:
767
+ """Build a CommandPreconditionViolated instance."""
768
+ super().__init__(
769
+ ErrorCodes.COMMAND_PRECONDITION_VIOLATED, message, detail, wrapping
770
+ )
771
+
772
+
773
+ class CommandParameterLimitViolated(GeneralError):
774
+ """An error indicating that a command's parameter limit was violated."""
775
+
776
+ def __init__(
777
+ self,
778
+ command_name: str,
779
+ parameter_name: str,
780
+ limit_statement: str,
781
+ actual_value: str,
782
+ wrapping: Optional[Sequence[Union[EnumeratedError, BaseException]]] = None,
783
+ ) -> None:
784
+ """Build a CommandParameterLimitViolated error."""
785
+ wrapping_checked = wrapping or []
786
+ super().__init__(
787
+ ErrorCodes.COMMAND_PARAMETER_LIMIT_VIOLATED,
788
+ f"The parameter {parameter_name} of {command_name} must be {limit_statement} but is {actual_value}",
789
+ detail={
790
+ "command": command_name,
791
+ "argument": parameter_name,
792
+ "limit": limit_statement,
793
+ "value": actual_value,
794
+ },
795
+ wrapping=[
796
+ PythonException(e) if isinstance(e, BaseException) else e
797
+ for e in wrapping_checked
798
+ ],
799
+ )