Skip to content

Commit dfad22f

Browse files
feat: Generate REC/2024/03 liquid chromatography schema models (#1186)
## Summary - Add generated Python dataclass models for the REC/2024/03 liquid chromatography tabular schema - Include cached JSON schemas and generated models for dependencies: chromatography-detectors, conductivity-cube-detection, UV-absorbance (spectrum + cube), mass-chromatogram-cube-detection - Generated via `hatch run scripts:generate-schemas "liquid-chromatography REC/2024/03"` ## Test plan - [x] All 770 existing tests pass - [x] ruff, black, mypy all clean - [ ] Verify generated models can be imported and instantiated 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
1 parent 8a5e03d commit dfad22f

12 files changed

Lines changed: 3879 additions & 0 deletions

File tree

Lines changed: 148 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,148 @@
1+
# generated by allotropy.schema_gen
2+
3+
from __future__ import annotations
4+
5+
from dataclasses import dataclass, field
6+
7+
from allotropy.allotrope.models.adm.core.rec._2024._03.core import (
8+
OrderedItem,
9+
TQuantityValue,
10+
)
11+
from allotropy.allotrope.models.adm.core.rec._2024._03.cube import (
12+
TDatacube,
13+
TDatacubeStructure,
14+
)
15+
from allotropy.allotrope.models.shared.definitions.quantity_values import (
16+
TQuantityValueCounts,
17+
TQuantityValueCountsTimesSecond,
18+
TQuantityValueMilliDegreeAngle,
19+
TQuantityValueMillivolt,
20+
TQuantityValueMillivoltTimesSecond,
21+
TQuantityValueNanoCoulomb,
22+
TQuantityValueNanoCoulombTimesSecond,
23+
TQuantityValueNanometer,
24+
TQuantityValuePicoAmpere,
25+
TQuantityValuePicoAmpereTimesSecond,
26+
TQuantityValueRelativeFluorescenceUnit,
27+
)
28+
29+
30+
@dataclass(frozen=True, kw_only=True)
31+
class ChromatogramDataCube(TDatacube):
32+
cube_structure: TDatacubeStructure | None = field(
33+
default=None, metadata={"json_name": "cube-structure"}
34+
)
35+
36+
37+
@dataclass(frozen=True, kw_only=True)
38+
class DeviceControlDocumentItem(OrderedItem):
39+
detector_wavelength_setting: TQuantityValueNanometer | None = None
40+
detector_bandwidth_setting: TQuantityValueNanometer | None = None
41+
42+
43+
@dataclass(frozen=True, kw_only=True)
44+
class PeakItemCounts(OrderedItem):
45+
peak_height: TQuantityValueCounts | None = None
46+
peak_area: TQuantityValueCountsTimesSecond | None = None
47+
48+
49+
@dataclass(frozen=True, kw_only=True)
50+
class PeakItemMillidegrees(OrderedItem):
51+
peak_height: TQuantityValueMilliDegreeAngle | None = None
52+
peak_area: TQuantityValue | None = None
53+
54+
55+
@dataclass(frozen=True, kw_only=True)
56+
class PeakItemMillivolts(OrderedItem):
57+
peak_height: TQuantityValueMillivolt | None = None
58+
peak_area: TQuantityValueMillivoltTimesSecond | None = None
59+
60+
61+
@dataclass(frozen=True, kw_only=True)
62+
class PeakItemNanocoulombs(OrderedItem):
63+
peak_height: TQuantityValueNanoCoulomb | None = None
64+
peak_area: TQuantityValueNanoCoulombTimesSecond | None = None
65+
66+
67+
@dataclass(frozen=True, kw_only=True)
68+
class PeakItemPicoamperes(OrderedItem):
69+
peak_height: TQuantityValuePicoAmpere | None = None
70+
peak_area: TQuantityValuePicoAmpereTimesSecond | None = None
71+
72+
73+
@dataclass(frozen=True, kw_only=True)
74+
class PeakItemRfu(OrderedItem):
75+
peak_height: TQuantityValueRelativeFluorescenceUnit | None = None
76+
peak_area: TQuantityValue | None = None
77+
78+
79+
@dataclass(frozen=True, kw_only=True)
80+
class DeviceControlAggregateDocument:
81+
device_control_document: list[DeviceControlDocumentItem] | None = None
82+
83+
84+
PeakItem = (
85+
PeakItemCounts
86+
| PeakItemMillidegrees
87+
| PeakItemMillivolts
88+
| PeakItemNanocoulombs
89+
| PeakItemPicoamperes
90+
| PeakItemRfu
91+
)
92+
93+
94+
@dataclass(frozen=True, kw_only=True)
95+
class PeakList:
96+
peak: list[PeakItem] | None = None
97+
98+
99+
@dataclass(frozen=True, kw_only=True)
100+
class ProcessedDataDocumentItem:
101+
peak_list: PeakList | None = None
102+
103+
104+
@dataclass(frozen=True, kw_only=True)
105+
class ProcessedDataAggregateDocument:
106+
processed_data_document: list[ProcessedDataDocumentItem] | None = None
107+
108+
109+
@dataclass(frozen=True, kw_only=True)
110+
class Counts:
111+
device_control_aggregate_document: DeviceControlAggregateDocument | None = None
112+
chromatogram_data_cube: ChromatogramDataCube | None = None
113+
processed_data_aggregate_document: ProcessedDataAggregateDocument | None = None
114+
115+
116+
@dataclass(frozen=True, kw_only=True)
117+
class Millidegrees:
118+
device_control_aggregate_document: DeviceControlAggregateDocument | None = None
119+
chromatogram_data_cube: ChromatogramDataCube | None = None
120+
processed_data_aggregate_document: ProcessedDataAggregateDocument | None = None
121+
122+
123+
@dataclass(frozen=True, kw_only=True)
124+
class Millivolts:
125+
device_control_aggregate_document: DeviceControlAggregateDocument | None = None
126+
chromatogram_data_cube: ChromatogramDataCube | None = None
127+
processed_data_aggregate_document: ProcessedDataAggregateDocument | None = None
128+
129+
130+
@dataclass(frozen=True, kw_only=True)
131+
class Nanocoulombs:
132+
device_control_aggregate_document: DeviceControlAggregateDocument | None = None
133+
chromatogram_data_cube: ChromatogramDataCube | None = None
134+
processed_data_aggregate_document: ProcessedDataAggregateDocument | None = None
135+
136+
137+
@dataclass(frozen=True, kw_only=True)
138+
class Picoamperes:
139+
device_control_aggregate_document: DeviceControlAggregateDocument | None = None
140+
chromatogram_data_cube: ChromatogramDataCube | None = None
141+
processed_data_aggregate_document: ProcessedDataAggregateDocument | None = None
142+
143+
144+
@dataclass(frozen=True, kw_only=True)
145+
class Rfu:
146+
device_control_aggregate_document: DeviceControlAggregateDocument | None = None
147+
chromatogram_data_cube: ChromatogramDataCube | None = None
148+
processed_data_aggregate_document: ProcessedDataAggregateDocument | None = None
Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
# generated by allotropy.schema_gen
2+
3+
from __future__ import annotations
4+
5+
from dataclasses import dataclass, field
6+
7+
from allotropy.allotrope.models.adm.core.rec._2024._03.core import OrderedItem
8+
from allotropy.allotrope.models.adm.core.rec._2024._03.cube import (
9+
TDatacube,
10+
TDatacubeStructure,
11+
)
12+
from allotropy.allotrope.models.shared.definitions.quantity_values import (
13+
TQuantityValueNanometer,
14+
TQuantityValueSiemensPerMeter,
15+
TQuantityValueSiemensPerMeterTimesSecond,
16+
)
17+
18+
19+
@dataclass(frozen=True, kw_only=True)
20+
class ChromatogramDataCube(TDatacube):
21+
cube_structure: TDatacubeStructure | None = field(
22+
default=None, metadata={"json_name": "cube-structure"}
23+
)
24+
25+
26+
@dataclass(frozen=True, kw_only=True)
27+
class DeviceControlDocumentItem(OrderedItem):
28+
detector_wavelength_setting: TQuantityValueNanometer | None = None
29+
detector_bandwidth_setting: TQuantityValueNanometer | None = None
30+
31+
32+
@dataclass(frozen=True, kw_only=True)
33+
class PeakItem(OrderedItem):
34+
peak_height: TQuantityValueSiemensPerMeter | None = None
35+
peak_area: TQuantityValueSiemensPerMeterTimesSecond | None = None
36+
37+
38+
@dataclass(frozen=True, kw_only=True)
39+
class DeviceControlAggregateDocument:
40+
device_control_document: list[DeviceControlDocumentItem] | None = None
41+
42+
43+
@dataclass(frozen=True, kw_only=True)
44+
class PeakList:
45+
peak: list[PeakItem] | None = None
46+
47+
48+
@dataclass(frozen=True, kw_only=True)
49+
class ProcessedDataDocument:
50+
peak_list: PeakList | None = None
51+
52+
53+
@dataclass(frozen=True, kw_only=True)
54+
class MeasurementDocumentItems:
55+
device_control_aggregate_document: DeviceControlAggregateDocument | None = None
56+
chromatogram_data_cube: ChromatogramDataCube | None = None
57+
processed_data_document: ProcessedDataDocument | None = None

0 commit comments

Comments
 (0)