Overview
While we've made significant improvements to the generated models, there are opportunities for further refinement.
Current State
✅ Completed:
- 22 enum types with 210 values
- 18 field mixins (629 fields eliminated, 52.9% reduction)
- 29 method mixins (~141 helper methods)
- 894 required fields (64%)
- 100% snake_case with aliases
Areas for Further Refinement
1. Additional Field Mixins
Candidate fields for new mixins:
time field (8 models)
id field (5 models)
metadata field (55 wrapper models)
data field (130 wrapper models)
margin, surplus fields
Impact: Could eliminate another ~100-150 field definitions
2. Optional Field Review
Some fields marked as Optional might be required. Use tools/infer_required_fields.py to test actual API responses.
3. Optimize Wrapper Models
Many *_DatasetResponse models are similar - could use generics or shared base class.
Success Metrics
- Field mixin coverage: 50% → 60%+
- Required fields: 64% → 70%+
- Field definitions eliminated: 629 → 750+
Files
elexon_bmrs/generated_models.py
elexon_bmrs/field_mixins.py
tools/generate_models.py
- See
TODO.md for detailed plan
Overview
While we've made significant improvements to the generated models, there are opportunities for further refinement.
Current State
✅ Completed:
Areas for Further Refinement
1. Additional Field Mixins
Candidate fields for new mixins:
timefield (8 models)idfield (5 models)metadatafield (55 wrapper models)datafield (130 wrapper models)margin,surplusfieldsImpact: Could eliminate another ~100-150 field definitions
2. Optional Field Review
Some fields marked as Optional might be required. Use
tools/infer_required_fields.pyto test actual API responses.3. Optimize Wrapper Models
Many
*_DatasetResponsemodels are similar - could use generics or shared base class.Success Metrics
Files
elexon_bmrs/generated_models.pyelexon_bmrs/field_mixins.pytools/generate_models.pyTODO.mdfor detailed plan