opentrons-shared-data 8.8.0a12__py3-none-any.whl → 9.0.0a2__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (96) hide show
  1. opentrons_shared_data/__init__.py +1 -2
  2. opentrons_shared_data/_version.py +2 -2
  3. opentrons_shared_data/command/__init__.py +6 -6
  4. opentrons_shared_data/data/command/schemas/16.json +7690 -0
  5. opentrons_shared_data/data/commandAnnotation/schemas/2.json +105 -0
  6. opentrons_shared_data/data/deck/definitions/5/ot3_standard.json +24 -0
  7. opentrons_shared_data/data/labware/definitions/2/black_96_well_microtiter_plate_lid/2.json +110 -0
  8. opentrons_shared_data/data/labware/definitions/2/corning_96_wellplate_360ul_lid/2.json +117 -0
  9. opentrons_shared_data/data/labware/definitions/2/corning_falcon_384_wellplate_130ul_flat_lid/2.json +118 -0
  10. opentrons_shared_data/data/labware/definitions/2/thermofisher_nunc_maxisorp_lockwell_elisa/1.json +1168 -0
  11. opentrons_shared_data/data/liquid-class/definitions/1/water/3.json +7880 -0
  12. opentrons_shared_data/data/liquid-class/schemas/1.json +3 -0
  13. opentrons_shared_data/data/module/definitions/3/vacuumModuleMilliporeV1.json +70 -0
  14. opentrons_shared_data/data/module/schemas/3.json +3 -2
  15. opentrons_shared_data/data/pipette/definitions/2/general/eight_channel/p50/3_0.json +27 -9
  16. opentrons_shared_data/data/pipette/definitions/2/general/eight_channel/p50/3_3.json +27 -9
  17. opentrons_shared_data/data/pipette/definitions/2/general/eight_channel/p50/3_4.json +53 -15
  18. opentrons_shared_data/data/pipette/definitions/2/general/eight_channel/p50/3_5.json +53 -15
  19. opentrons_shared_data/data/pipette/definitions/2/general/ninety_six_channel/p200/3_0.json +154 -13
  20. opentrons_shared_data/data/pipette/definitions/2/general/ninety_six_channel/p200/3_1.json +187 -18
  21. opentrons_shared_data/data/pipette/definitions/2/general/ninety_six_channel/p200/3_2.json +187 -18
  22. opentrons_shared_data/data/pipette/definitions/2/general/single_channel/p50/3_0.json +2 -0
  23. opentrons_shared_data/data/pipette/definitions/2/general/single_channel/p50/3_3.json +2 -0
  24. opentrons_shared_data/data/pipette/definitions/2/general/single_channel/p50/3_4.json +4 -0
  25. opentrons_shared_data/data/pipette/definitions/2/general/single_channel/p50/3_5.json +4 -0
  26. opentrons_shared_data/data/pipette/definitions/2/general/single_channel/p50/3_6.json +4 -0
  27. opentrons_shared_data/data/pipette/definitions/2/geometry/single_channel/p1000/2_2.json +2 -2
  28. opentrons_shared_data/data/pipette/definitions/2/geometry/single_channel/p1000/3_5.json +4 -0
  29. opentrons_shared_data/data/pipette/definitions/2/geometry/single_channel/p20/2_2.json +2 -2
  30. opentrons_shared_data/data/pipette/definitions/2/geometry/single_channel/p300/2_1.json +2 -2
  31. opentrons_shared_data/data/pipette/definitions/2/liquid/eight_channel/p50/default/3_0.json +67 -0
  32. opentrons_shared_data/data/pipette/definitions/2/liquid/eight_channel/p50/default/3_3.json +68 -1
  33. opentrons_shared_data/data/pipette/definitions/2/liquid/eight_channel/p50/default/3_4.json +67 -0
  34. opentrons_shared_data/data/pipette/definitions/2/liquid/eight_channel/p50/default/3_5.json +2 -0
  35. opentrons_shared_data/data/pipette/definitions/2/liquid/eight_channel/p50/lowVolumeDefault/3_0.json +67 -2
  36. opentrons_shared_data/data/pipette/definitions/2/liquid/eight_channel/p50/lowVolumeDefault/3_3.json +67 -2
  37. opentrons_shared_data/data/pipette/definitions/2/liquid/eight_channel/p50/lowVolumeDefault/3_4.json +67 -2
  38. opentrons_shared_data/data/pipette/definitions/2/liquid/eight_channel/p50/lowVolumeDefault/3_5.json +4 -2
  39. opentrons_shared_data/data/pipette/definitions/2/liquid/ninety_six_channel/p200/default/3_0.json +2 -1
  40. opentrons_shared_data/data/pipette/definitions/2/liquid/single_channel/p50/default/3_0.json +68 -1
  41. opentrons_shared_data/data/pipette/definitions/2/liquid/single_channel/p50/default/3_3.json +68 -1
  42. opentrons_shared_data/data/pipette/definitions/2/liquid/single_channel/p50/default/3_4.json +68 -1
  43. opentrons_shared_data/data/pipette/definitions/2/liquid/single_channel/p50/default/3_5.json +3 -1
  44. opentrons_shared_data/data/pipette/definitions/2/liquid/single_channel/p50/default/3_6.json +3 -1
  45. opentrons_shared_data/data/pipette/definitions/2/liquid/single_channel/p50/lowVolumeDefault/3_0.json +67 -2
  46. opentrons_shared_data/data/pipette/definitions/2/liquid/single_channel/p50/lowVolumeDefault/3_3.json +67 -2
  47. opentrons_shared_data/data/pipette/definitions/2/liquid/single_channel/p50/lowVolumeDefault/3_4.json +67 -2
  48. opentrons_shared_data/data/pipette/definitions/2/liquid/single_channel/p50/lowVolumeDefault/3_5.json +4 -2
  49. opentrons_shared_data/data/pipette/definitions/2/liquid/single_channel/p50/lowVolumeDefault/3_6.json +4 -2
  50. opentrons_shared_data/data_files/__init__.py +5 -6
  51. opentrons_shared_data/data_files/types.py +4 -2
  52. opentrons_shared_data/deck/__init__.py +11 -13
  53. opentrons_shared_data/deck/types.py +2 -2
  54. opentrons_shared_data/errors/__init__.py +2 -2
  55. opentrons_shared_data/errors/categories.py +2 -3
  56. opentrons_shared_data/errors/codes.py +3 -3
  57. opentrons_shared_data/errors/exceptions.py +13 -13
  58. opentrons_shared_data/gripper/__init__.py +7 -5
  59. opentrons_shared_data/gripper/gripper_definition.py +6 -4
  60. opentrons_shared_data/labware/__init__.py +5 -8
  61. opentrons_shared_data/labware/constants.py +1 -1
  62. opentrons_shared_data/labware/labware_definition.py +15 -14
  63. opentrons_shared_data/labware/types.py +5 -2
  64. opentrons_shared_data/liquid_classes/__init__.py +3 -2
  65. opentrons_shared_data/liquid_classes/liquid_class_definition.py +47 -22
  66. opentrons_shared_data/liquid_classes/types.py +5 -1
  67. opentrons_shared_data/load.py +2 -2
  68. opentrons_shared_data/module/__init__.py +12 -14
  69. opentrons_shared_data/module/types.py +7 -1
  70. opentrons_shared_data/pipette/__init__.py +9 -8
  71. opentrons_shared_data/pipette/dev_types.py +3 -3
  72. opentrons_shared_data/pipette/file_operation_helpers.py +2 -2
  73. opentrons_shared_data/pipette/load_data.py +8 -10
  74. opentrons_shared_data/pipette/model_constants.py +4 -4
  75. opentrons_shared_data/pipette/mutable_configurations.py +20 -20
  76. opentrons_shared_data/pipette/pipette_definition.py +7 -5
  77. opentrons_shared_data/pipette/pipette_load_name_conversions.py +11 -10
  78. opentrons_shared_data/pipette/scripts/build_json_script.py +11 -13
  79. opentrons_shared_data/pipette/scripts/update_configuration_files.py +17 -18
  80. opentrons_shared_data/pipette/types.py +1 -2
  81. opentrons_shared_data/pipette/ul_per_mm.py +1 -1
  82. opentrons_shared_data/protocol/__init__.py +2 -1
  83. opentrons_shared_data/protocol/constants.py +25 -82
  84. opentrons_shared_data/protocol/models/__init__.py +11 -10
  85. opentrons_shared_data/protocol/models/protocol_schema_v6.py +10 -9
  86. opentrons_shared_data/protocol/models/protocol_schema_v7.py +9 -9
  87. opentrons_shared_data/protocol/models/protocol_schema_v8.py +10 -8
  88. opentrons_shared_data/protocol/models/shared_models.py +2 -1
  89. opentrons_shared_data/protocol/types.py +4 -3
  90. opentrons_shared_data/robot/__init__.py +3 -3
  91. opentrons_shared_data/robot/types.py +4 -2
  92. opentrons_shared_data/util/__init__.py +21 -0
  93. {opentrons_shared_data-8.8.0a12.dist-info → opentrons_shared_data-9.0.0a2.dist-info}/METADATA +2 -1
  94. {opentrons_shared_data-8.8.0a12.dist-info → opentrons_shared_data-9.0.0a2.dist-info}/RECORD +96 -87
  95. {opentrons_shared_data-8.8.0a12.dist-info → opentrons_shared_data-9.0.0a2.dist-info}/WHEEL +0 -0
  96. {opentrons_shared_data-8.8.0a12.dist-info → opentrons_shared_data-9.0.0a2.dist-info}/licenses/LICENSE +0 -0
@@ -140,6 +140,8 @@
140
140
  "minVolume": 5,
141
141
  "defaultTipracks": [
142
142
  "opentrons/opentrons_flex_96_tiprack_50ul/1",
143
- "opentrons/opentrons_flex_96_filtertiprack_50ul/1"
143
+ "opentrons/opentrons_flex_96_filtertiprack_50ul/1",
144
+ "opentrons/opentrons_flex_96_tiprack_20ul/1",
145
+ "opentrons/opentrons_flex_96_filtertiprack_20ul/1"
144
146
  ]
145
147
  }
@@ -140,6 +140,8 @@
140
140
  "minVolume": 5,
141
141
  "defaultTipracks": [
142
142
  "opentrons/opentrons_flex_96_tiprack_50ul/1",
143
- "opentrons/opentrons_flex_96_filtertiprack_50ul/1"
143
+ "opentrons/opentrons_flex_96_filtertiprack_50ul/1",
144
+ "opentrons/opentrons_flex_96_tiprack_20ul/1",
145
+ "opentrons/opentrons_flex_96_filtertiprack_20ul/1"
144
146
  ]
145
147
  }
@@ -1,6 +1,69 @@
1
1
  {
2
2
  "$otSharedSchema": "#/pipette/schemas/2/pipetteLiquidPropertiesSchema.json",
3
3
  "supportedTips": {
4
+ "t20": {
5
+ "uiMaxFlowRate": 26.7,
6
+ "defaultAspirateFlowRate": {
7
+ "default": 22,
8
+ "valuesByApiLevel": { "2.14": 22 }
9
+ },
10
+ "defaultDispenseFlowRate": {
11
+ "default": 22,
12
+ "valuesByApiLevel": { "2.14": 22 }
13
+ },
14
+ "defaultBlowOutFlowRate": {
15
+ "default": 26.7,
16
+ "valuesByApiLevel": { "2.14": 26.7 }
17
+ },
18
+ "defaultFlowAcceleration": 1200.0,
19
+ "defaultTipLength": 52.0,
20
+ "defaultReturnTipHeight": 0.71,
21
+ "aspirate": {
22
+ "default": {
23
+ "1": [
24
+ [0.11, 0.207815, 0.040201],
25
+ [0.65, 0.43933, 0.014735],
26
+ [1.04, 0.256666, 0.133466],
27
+ [1.67, 0.147126, 0.247388],
28
+ [2.45, 0.078774, 0.361536],
29
+ [2.89, 0.042387, 0.450684],
30
+ [3.2, 0.014781, 0.530464],
31
+ [3.79, 0.071819, 0.347944],
32
+ [4.22, 0.051592, 0.424605],
33
+ [4.93, 0.021219, 0.552775],
34
+ [5.81, 0.023461, 0.541725],
35
+ [7.21, 0.008959, 0.625982],
36
+ [8.93, 0.005456, 0.651235],
37
+ [10.0, 0.007108, 0.636489],
38
+ [13.61, 0.002591, 0.681656],
39
+ [21.61, 0.002591, 0.681656]
40
+ ]
41
+ }
42
+ },
43
+ "dispense": {
44
+ "default": {
45
+ "1": [
46
+ [0.11, 0.207815, 0.040201],
47
+ [0.65, 0.43933, 0.014735],
48
+ [1.04, 0.256666, 0.133466],
49
+ [1.67, 0.147126, 0.247388],
50
+ [2.45, 0.078774, 0.361536],
51
+ [2.89, 0.042387, 0.450684],
52
+ [3.2, 0.014781, 0.530464],
53
+ [3.79, 0.071819, 0.347944],
54
+ [4.22, 0.051592, 0.424605],
55
+ [4.93, 0.021219, 0.552775],
56
+ [5.81, 0.023461, 0.541725],
57
+ [7.21, 0.008959, 0.625982],
58
+ [8.93, 0.005456, 0.651235],
59
+ [10.0, 0.007108, 0.636489],
60
+ [13.61, 0.002591, 0.681656],
61
+ [21.61, 0.002591, 0.681656]
62
+ ]
63
+ }
64
+ },
65
+ "defaultPushOutVolume": 3.5
66
+ },
4
67
  "t50": {
5
68
  "defaultAspirateFlowRate": {
6
69
  "default": 8,
@@ -69,9 +132,11 @@
69
132
  }
70
133
  },
71
134
  "maxVolume": 30,
72
- "minVolume": 1,
135
+ "minVolume": 0.5,
73
136
  "defaultTipracks": [
74
137
  "opentrons/opentrons_flex_96_tiprack_50ul/1",
75
- "opentrons/opentrons_flex_96_filtertiprack_50ul/1"
138
+ "opentrons/opentrons_flex_96_filtertiprack_50ul/1",
139
+ "opentrons/opentrons_flex_96_tiprack_20ul/1",
140
+ "opentrons/opentrons_flex_96_filtertiprack_20ul/1"
76
141
  ]
77
142
  }
@@ -1,6 +1,69 @@
1
1
  {
2
2
  "$otSharedSchema": "#/pipette/schemas/2/pipetteLiquidPropertiesSchema.json",
3
3
  "supportedTips": {
4
+ "t20": {
5
+ "uiMaxFlowRate": 26.7,
6
+ "defaultAspirateFlowRate": {
7
+ "default": 22,
8
+ "valuesByApiLevel": { "2.14": 22 }
9
+ },
10
+ "defaultDispenseFlowRate": {
11
+ "default": 22,
12
+ "valuesByApiLevel": { "2.14": 22 }
13
+ },
14
+ "defaultBlowOutFlowRate": {
15
+ "default": 26.7,
16
+ "valuesByApiLevel": { "2.14": 26.7 }
17
+ },
18
+ "defaultFlowAcceleration": 1200.0,
19
+ "defaultTipLength": 52.0,
20
+ "defaultReturnTipHeight": 0.71,
21
+ "aspirate": {
22
+ "default": {
23
+ "1": [
24
+ [0.11, 0.207815, 0.040201],
25
+ [0.65, 0.43933, 0.014735],
26
+ [1.04, 0.256666, 0.133466],
27
+ [1.67, 0.147126, 0.247388],
28
+ [2.45, 0.078774, 0.361536],
29
+ [2.89, 0.042387, 0.450684],
30
+ [3.2, 0.014781, 0.530464],
31
+ [3.79, 0.071819, 0.347944],
32
+ [4.22, 0.051592, 0.424605],
33
+ [4.93, 0.021219, 0.552775],
34
+ [5.81, 0.023461, 0.541725],
35
+ [7.21, 0.008959, 0.625982],
36
+ [8.93, 0.005456, 0.651235],
37
+ [10.0, 0.007108, 0.636489],
38
+ [13.61, 0.002591, 0.681656],
39
+ [21.61, 0.002591, 0.681656]
40
+ ]
41
+ }
42
+ },
43
+ "dispense": {
44
+ "default": {
45
+ "1": [
46
+ [0.11, 0.207815, 0.040201],
47
+ [0.65, 0.43933, 0.014735],
48
+ [1.04, 0.256666, 0.133466],
49
+ [1.67, 0.147126, 0.247388],
50
+ [2.45, 0.078774, 0.361536],
51
+ [2.89, 0.042387, 0.450684],
52
+ [3.2, 0.014781, 0.530464],
53
+ [3.79, 0.071819, 0.347944],
54
+ [4.22, 0.051592, 0.424605],
55
+ [4.93, 0.021219, 0.552775],
56
+ [5.81, 0.023461, 0.541725],
57
+ [7.21, 0.008959, 0.625982],
58
+ [8.93, 0.005456, 0.651235],
59
+ [10.0, 0.007108, 0.636489],
60
+ [13.61, 0.002591, 0.681656],
61
+ [21.61, 0.002591, 0.681656]
62
+ ]
63
+ }
64
+ },
65
+ "defaultPushOutVolume": 3.5
66
+ },
4
67
  "t50": {
5
68
  "uiMaxFlowRate": 31.8,
6
69
  "defaultAspirateFlowRate": {
@@ -70,9 +133,11 @@
70
133
  }
71
134
  },
72
135
  "maxVolume": 30,
73
- "minVolume": 1,
136
+ "minVolume": 0.5,
74
137
  "defaultTipracks": [
75
138
  "opentrons/opentrons_flex_96_tiprack_50ul/1",
76
- "opentrons/opentrons_flex_96_filtertiprack_50ul/1"
139
+ "opentrons/opentrons_flex_96_filtertiprack_50ul/1",
140
+ "opentrons/opentrons_flex_96_tiprack_20ul/1",
141
+ "opentrons/opentrons_flex_96_filtertiprack_20ul/1"
77
142
  ]
78
143
  }
@@ -1,6 +1,69 @@
1
1
  {
2
2
  "$otSharedSchema": "#/pipette/schemas/2/pipetteLiquidPropertiesSchema.json",
3
3
  "supportedTips": {
4
+ "t20": {
5
+ "uiMaxFlowRate": 26.7,
6
+ "defaultAspirateFlowRate": {
7
+ "default": 22,
8
+ "valuesByApiLevel": { "2.14": 22 }
9
+ },
10
+ "defaultDispenseFlowRate": {
11
+ "default": 22,
12
+ "valuesByApiLevel": { "2.14": 22 }
13
+ },
14
+ "defaultBlowOutFlowRate": {
15
+ "default": 26.7,
16
+ "valuesByApiLevel": { "2.14": 26.7 }
17
+ },
18
+ "defaultFlowAcceleration": 1200.0,
19
+ "defaultTipLength": 52.0,
20
+ "defaultReturnTipHeight": 0.71,
21
+ "aspirate": {
22
+ "default": {
23
+ "1": [
24
+ [0.11, 0.207815, 0.040201],
25
+ [0.65, 0.43933, 0.014735],
26
+ [1.04, 0.256666, 0.133466],
27
+ [1.67, 0.147126, 0.247388],
28
+ [2.45, 0.078774, 0.361536],
29
+ [2.89, 0.042387, 0.450684],
30
+ [3.2, 0.014781, 0.530464],
31
+ [3.79, 0.071819, 0.347944],
32
+ [4.22, 0.051592, 0.424605],
33
+ [4.93, 0.021219, 0.552775],
34
+ [5.81, 0.023461, 0.541725],
35
+ [7.21, 0.008959, 0.625982],
36
+ [8.93, 0.005456, 0.651235],
37
+ [10.0, 0.007108, 0.636489],
38
+ [13.61, 0.002591, 0.681656],
39
+ [21.61, 0.002591, 0.681656]
40
+ ]
41
+ }
42
+ },
43
+ "dispense": {
44
+ "default": {
45
+ "1": [
46
+ [0.11, 0.207815, 0.040201],
47
+ [0.65, 0.43933, 0.014735],
48
+ [1.04, 0.256666, 0.133466],
49
+ [1.67, 0.147126, 0.247388],
50
+ [2.45, 0.078774, 0.361536],
51
+ [2.89, 0.042387, 0.450684],
52
+ [3.2, 0.014781, 0.530464],
53
+ [3.79, 0.071819, 0.347944],
54
+ [4.22, 0.051592, 0.424605],
55
+ [4.93, 0.021219, 0.552775],
56
+ [5.81, 0.023461, 0.541725],
57
+ [7.21, 0.008959, 0.625982],
58
+ [8.93, 0.005456, 0.651235],
59
+ [10.0, 0.007108, 0.636489],
60
+ [13.61, 0.002591, 0.681656],
61
+ [21.61, 0.002591, 0.681656]
62
+ ]
63
+ }
64
+ },
65
+ "defaultPushOutVolume": 3.5
66
+ },
4
67
  "t50": {
5
68
  "uiMaxFlowRate": 31.8,
6
69
  "defaultAspirateFlowRate": {
@@ -70,9 +133,11 @@
70
133
  }
71
134
  },
72
135
  "maxVolume": 30,
73
- "minVolume": 1,
136
+ "minVolume": 0.5,
74
137
  "defaultTipracks": [
75
138
  "opentrons/opentrons_flex_96_tiprack_50ul/1",
76
- "opentrons/opentrons_flex_96_filtertiprack_50ul/1"
139
+ "opentrons/opentrons_flex_96_filtertiprack_50ul/1",
140
+ "opentrons/opentrons_flex_96_tiprack_20ul/1",
141
+ "opentrons/opentrons_flex_96_filtertiprack_20ul/1"
77
142
  ]
78
143
  }
@@ -133,9 +133,11 @@
133
133
  }
134
134
  },
135
135
  "maxVolume": 30,
136
- "minVolume": 1,
136
+ "minVolume": 0.5,
137
137
  "defaultTipracks": [
138
138
  "opentrons/opentrons_flex_96_tiprack_50ul/1",
139
- "opentrons/opentrons_flex_96_filtertiprack_50ul/1"
139
+ "opentrons/opentrons_flex_96_filtertiprack_50ul/1",
140
+ "opentrons/opentrons_flex_96_tiprack_20ul/1",
141
+ "opentrons/opentrons_flex_96_filtertiprack_20ul/1"
140
142
  ]
141
143
  }
@@ -133,9 +133,11 @@
133
133
  }
134
134
  },
135
135
  "maxVolume": 30,
136
- "minVolume": 1,
136
+ "minVolume": 0.5,
137
137
  "defaultTipracks": [
138
138
  "opentrons/opentrons_flex_96_tiprack_50ul/1",
139
- "opentrons/opentrons_flex_96_filtertiprack_50ul/1"
139
+ "opentrons/opentrons_flex_96_filtertiprack_50ul/1",
140
+ "opentrons/opentrons_flex_96_tiprack_20ul/1",
141
+ "opentrons/opentrons_flex_96_filtertiprack_20ul/1"
140
142
  ]
141
143
  }
@@ -1,18 +1,17 @@
1
1
  """Types and functions for accessing data files."""
2
2
 
3
3
  from .types import (
4
+ CmdDataFileInfo,
4
5
  DataFileInfo,
6
+ DataFileInfoWithCommands,
7
+ DataFileSource,
5
8
  InputDataFileInfo,
6
- OutputDataFileInfo,
7
- CmdDataFileInfo,
8
- MimeType,
9
9
  IODataFileInfo,
10
- DataFileSource,
11
- DataFileInfoWithCommands,
10
+ MimeType,
11
+ OutputDataFileInfo,
12
12
  RunFileNameMetadata,
13
13
  )
14
14
 
15
-
16
15
  __all__ = [
17
16
  "DataFileInfo",
18
17
  "InputDataFileInfo",
@@ -3,7 +3,9 @@
3
3
  from dataclasses import dataclass
4
4
  from datetime import datetime
5
5
  from enum import Enum
6
- from typing import Union, Optional
6
+ from typing import Optional, Union
7
+
8
+ from ..util import StrEnum
7
9
 
8
10
 
9
11
  @dataclass(frozen=True)
@@ -16,7 +18,7 @@ class RunFileNameMetadata:
16
18
  protocol_name: Optional[str]
17
19
 
18
20
 
19
- class MimeType(str, Enum):
21
+ class MimeType(StrEnum):
20
22
  """File mime types."""
21
23
 
22
24
  TEXT_CSV = "text/csv"
@@ -1,21 +1,23 @@
1
1
  """
2
2
  opentrons_shared_data.deck: types and bindings for deck definitions
3
3
  """
4
- from typing import Dict, List, NamedTuple, cast, overload, TYPE_CHECKING
5
- from typing_extensions import Final
4
+
6
5
  import json
6
+ from typing import TYPE_CHECKING, Dict, List, NamedTuple, cast, overload
7
+
8
+ from typing_extensions import Final
7
9
 
8
10
  from .. import get_shared_data_root, load_shared_data
9
11
 
10
12
  if TYPE_CHECKING:
11
13
  from .types import (
12
- DeckSchema,
13
14
  DeckDefinition,
14
15
  DeckDefinitionV3,
15
- DeckSchemaVersion3,
16
16
  DeckDefinitionV4,
17
- DeckSchemaVersion4,
18
17
  DeckDefinitionV5,
18
+ DeckSchema,
19
+ DeckSchemaVersion3,
20
+ DeckSchemaVersion4,
19
21
  DeckSchemaVersion5,
20
22
  )
21
23
 
@@ -41,23 +43,19 @@ CALIBRATION_SQUARE_EDGES: Dict[str, Offset] = {
41
43
 
42
44
 
43
45
  @overload
44
- def load(name: str, version: "DeckSchemaVersion5") -> "DeckDefinitionV5":
45
- ...
46
+ def load(name: str, version: "DeckSchemaVersion5") -> "DeckDefinitionV5": ...
46
47
 
47
48
 
48
49
  @overload
49
- def load(name: str, version: "DeckSchemaVersion4") -> "DeckDefinitionV4":
50
- ...
50
+ def load(name: str, version: "DeckSchemaVersion4") -> "DeckDefinitionV4": ...
51
51
 
52
52
 
53
53
  @overload
54
- def load(name: str, version: "DeckSchemaVersion3") -> "DeckDefinitionV3":
55
- ...
54
+ def load(name: str, version: "DeckSchemaVersion3") -> "DeckDefinitionV3": ...
56
55
 
57
56
 
58
57
  @overload
59
- def load(name: str) -> "DeckDefinitionV5":
60
- ...
58
+ def load(name: str) -> "DeckDefinitionV5": ...
61
59
 
62
60
 
63
61
  def load(name: str, version: int = DEFAULT_DECK_DEFINITION_VERSION) -> "DeckDefinition":
@@ -5,12 +5,12 @@ This should only be imported if typing.TYPE_CHECKING is True
5
5
  """
6
6
 
7
7
  from typing import Any, Dict, List, NewType, Union
8
+
8
9
  from typing_extensions import Literal, TypedDict
9
10
 
10
- from ..module.types import ModuleType, ModuleOrientation
11
+ from ..module.types import ModuleOrientation, ModuleType
11
12
  from opentrons_shared_data.labware.types import LocatingFeatures
12
13
 
13
-
14
14
  DeckSchemaVersion5 = Literal[5]
15
15
  DeckSchemaVersion4 = Literal[4]
16
16
  DeckSchemaVersion3 = Literal[3]
@@ -8,11 +8,11 @@ our static analysis and dev setup.
8
8
  """
9
9
 
10
10
  from .categories import ErrorCategories, ErrorCategory
11
- from .codes import ErrorCodes, ErrorCode
11
+ from .codes import ErrorCode, ErrorCodes
12
12
  from .exceptions import (
13
13
  EnumeratedError,
14
- PythonException,
15
14
  GeneralError,
15
+ PythonException,
16
16
  RoboticsControlError,
17
17
  RoboticsInteractionError,
18
18
  )
@@ -1,14 +1,13 @@
1
1
  """Error categories."""
2
2
 
3
- from enum import Enum
4
- from dataclasses import dataclass
5
3
  import json
4
+ from dataclasses import dataclass
5
+ from enum import Enum
6
6
  from functools import lru_cache
7
7
  from typing import Dict
8
8
 
9
9
  from ..load import load_shared_data
10
10
 
11
-
12
11
  CATEGORIES: Dict[str, Dict[str, str]] = json.loads(
13
12
  load_shared_data("errors/definitions/1/errors.json")
14
13
  )["categories"]
@@ -1,10 +1,10 @@
1
1
  """Error codes."""
2
2
 
3
- from enum import Enum
4
- from dataclasses import dataclass
5
3
  import json
6
- from typing import Tuple, Dict
4
+ from dataclasses import dataclass
5
+ from enum import Enum
7
6
  from functools import lru_cache
7
+ from typing import Dict, Tuple
8
8
 
9
9
  from ..load import load_shared_data
10
10
  from .categories import ErrorCategories
@@ -1,26 +1,26 @@
1
1
  """Exception hierarchy for error codes."""
2
2
 
3
3
  from __future__ import annotations
4
+
5
+ import inspect
6
+ import sys
7
+ from logging import getLogger
8
+ from traceback import format_exception_only, format_tb
4
9
  from typing import (
5
- Dict,
6
10
  Any,
7
- Optional,
8
- List,
11
+ Dict,
9
12
  Iterator,
10
- Union,
13
+ List,
14
+ Optional,
11
15
  Sequence,
12
- overload,
13
16
  Type,
14
17
  TypeVar,
18
+ Union,
19
+ overload,
15
20
  )
16
- from logging import getLogger
17
- from traceback import format_exception_only, format_tb
18
- import inspect
19
- import sys
20
21
 
21
- from .codes import ErrorCodes
22
22
  from .categories import ErrorCategories
23
-
23
+ from .codes import ErrorCodes
24
24
 
25
25
  log = getLogger(__name__)
26
26
 
@@ -60,7 +60,7 @@ class EnumeratedError(Exception):
60
60
  def __str__(self) -> str:
61
61
  """Get a human-readable string."""
62
62
  _node = self.detail.get("node")
63
- 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 ""}'
63
+ 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 ''}"
64
64
 
65
65
  def __eq__(self, other: object) -> bool:
66
66
  """Compare if two enumerated errors match."""
@@ -202,7 +202,7 @@ def _exc_harvest_predicate(v: Any) -> bool:
202
202
  return False
203
203
  # on python 3.11 and up we can check if things are method wrappers, which basic builtin
204
204
  # dunders like __add__ are, but until then we can't and also don't know this is real
205
- if sys.version_info.minor >= 11 and inspect.ismethodwrapper(v): # type: ignore[attr-defined]
205
+ if sys.version_info.minor >= 11 and inspect.ismethodwrapper(v):
206
206
  return False
207
207
  return True
208
208
 
@@ -1,17 +1,19 @@
1
1
  """opentrons_shared_data.gripper: functions and types for gripper config."""
2
- from typing import cast, Any
3
- from typing_extensions import Literal
2
+
4
3
  import json
5
4
  from pathlib import Path
5
+ from typing import Any, cast
6
+
7
+ from typing_extensions import Literal
6
8
 
7
9
  from .. import load_shared_data
8
10
  from .gripper_definition import (
11
+ Geometry,
12
+ GripForceProfile,
9
13
  GripperDefinition,
14
+ GripperModel,
10
15
  GripperSchema,
11
16
  GripperSchemaVersion,
12
- GripForceProfile,
13
- GripperModel,
14
- Geometry,
15
17
  )
16
18
 
17
19
 
@@ -1,9 +1,11 @@
1
1
  """Gripper configurations."""
2
2
 
3
+ from typing import Any, Dict, List, NewType, Tuple
4
+
5
+ from pydantic import BaseModel, ConfigDict, Field
3
6
  from typing_extensions import Annotated, Literal
4
- from typing import List, Dict, Tuple, Any, NewType
5
- from pydantic import ConfigDict, BaseModel, Field
6
- from enum import Enum
7
+
8
+ from ..util import StrEnum
7
9
 
8
10
 
9
11
  def _snake_to_camel_case(snake: str) -> str:
@@ -18,7 +20,7 @@ GripperModelStr = NewType("GripperModelStr", str)
18
20
 
19
21
  # TODO (spp, 2023-01-31): figure out if we want to keep this a string enum or revert to
20
22
  # a regular enum with custom stringification
21
- class GripperModel(str, Enum):
23
+ class GripperModel(StrEnum):
22
24
  """Gripper models."""
23
25
 
24
26
  v1 = "gripperV1"
@@ -4,14 +4,13 @@ opentrons_shared_data.labware: types and functions for accessing labware defs
4
4
 
5
5
  from __future__ import annotations
6
6
 
7
- from functools import lru_cache
8
7
  import json
8
+ from functools import lru_cache
9
9
  from itertools import chain
10
- from typing import Any, Iterable, NewType, TYPE_CHECKING, overload, Literal
11
-
12
- from opentrons_shared_data.load import get_shared_data_root
10
+ from typing import TYPE_CHECKING, Any, Iterable, Literal, NewType, overload
13
11
 
14
12
  from .. import load_shared_data
13
+ from opentrons_shared_data.load import get_shared_data_root
15
14
 
16
15
  if TYPE_CHECKING:
17
16
  from .types import LabwareDefinition, LabwareDefinition2, LabwareDefinition3
@@ -22,15 +21,13 @@ Schema = NewType("Schema", dict[str, Any])
22
21
  @overload
23
22
  def load_definition(
24
23
  loadname: str, version: int, schema: Literal[2] = 2
25
- ) -> LabwareDefinition2:
26
- ...
24
+ ) -> LabwareDefinition2: ...
27
25
 
28
26
 
29
27
  @overload
30
28
  def load_definition(
31
29
  loadname: str, version: int, schema: Literal[3]
32
- ) -> LabwareDefinition3:
33
- ...
30
+ ) -> LabwareDefinition3: ...
34
31
 
35
32
 
36
33
  def load_definition(loadname: str, version: int, schema: int = 2) -> LabwareDefinition:
@@ -1,7 +1,7 @@
1
1
  import re
2
- from typing_extensions import Final
3
2
  from typing import Literal, Union
4
3
 
4
+ from typing_extensions import Final
5
5
 
6
6
  # Regular expression to validate and extract row, column from well name
7
7
  # (ie A3, C1)