EnergySystemsModellingLab / EnergySystemsModellingLab/MUSE2
Improve error messages with custom serde deserialisation functions
- Dominant language
- Rust
- Stars
- 8
- Forks
- 5
- Avg merge
- 1d 2m
- Merged PRs (30d)
- 37
Description
The lack of clarity in the error output is consistent with other times this custom deserialisation is used in the code.
One thing worth noting, is that when it is used with a toml input file, the error message is quite clear. For example
```
[16:53:05 ERROR muse2] Failed to load model.
Caused by:
0: Error reading /private/var/folders/td/5nhj1569101bqjj_vmltr_7r0000gp/T/.tmpaxxQee/circularity/model.toml
1: TOML parse error at line 2, column 19
|
2 | capacity_margin = -0.3
| ^^^^
Value must be a finite number greater than or equal to zero
```
But it's less clear with CSV input files
```
[16:53:19 ERROR muse2] Failed to load model.
Caused by:
0: Error reading /private/var/folders/td/5nhj1569101bqjj_vmltr_7r0000gp/T/.tmpzLMuo8/circularity/agent_commodity_portions.csv
1: CSV deserialize error: record 11 (line: 12, byte: 246): Value must be > 0 and <= 1
```
_Originally posted by @AdrianDAlessandro in https://github.com/EnergySystemsModellingLab/MUSE2/issues/1485#issuecomment-5282971078_
Contributor guide
Research direction
Start by locating the custom serde deserialisation functions and the CSV input-loading path, then compare their errors with the clearer TOML output shown here. Done means CSV deserialisation errors provide similarly clear context for invalid values, while preserving the existing record and line information.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- rust
- Domain
- data
- Issue type
- Bug
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Activity status
- Quiet
- Clarity
- Mostly clear
- Newbie friendliness
- 52/100