Add complete OMNI variable support#83
Conversation
|
@Simon060899 in child classes which are inheriting from OMNI, I think tz enforcement and time inequality assertion can be removed since parent class already have them. A similar refactoring should be performed for DSTOMNI to make things consistent. let me know if you need help |
|
@Simon060899 I think https://github.com/Simon060899/SWVO/blob/codex%2Fomni-all-variables/docs/omni_implementation_report.md can be removed from when we merge the PR. |
|
Thanks for the suggestion. This is addressed in I removed the duplicate timezone enforcement and time-range validation from I also refactored I added regression coverage for parent delegation, mixed naive/UTC inputs, invalid ranges, cadence boundaries, and provenance. All deterministic tests passed. The 2 opt-in NASA smoke checks also passed; only 10 existing SIDC tests remain skipped because their data source is unavailable. |
|
Agreed—removed in |
|
|
Thanks. I added Regarding the linked review comments, the link currently opens the Files changed view but does not display an inline conversation for me. If the review is still pending, could you please submit it or repost the inline comments? I’ll address them promptly. |
|
Okay, thanks.
|
|
Thanks, addressed in I added the shared cadence-aware I also converted the private cadence and cache helpers to instance methods in both readers and updated the documentation and regression tests. |
|
LGTM. I will merge it. Thanks for the effort. |
Summary
variables=None,variables="all", ordered subset selection, normalized aliases, andavailable_variables()metadata discoveryCompatibility and robustness
Existing calls retain their previous schemas because the new argument is optional. The implementation also adds explicit validation for cadence-incompatible selections, empty or invalid selections, mixed timezone inputs, invalid ranges, malformed NASA responses, invalid time fields, corrupt caches, and unsupported hourly record widths.
Focused Dst, Kp, F10.7, and SYM-H readers delegate normalized time and range handling to their parent OMNI readers. Their established output windows and schemas remain unchanged.
Cache replacement remains atomic and uses
pathlibandtempfile, so the implementation is portable across Linux, macOS, and Windows-style path handling.Documentation
Verification
tests/iosuite: 588 passed; 10 existing SIDC tests whose data source is unavailable and 2 opt-in NASA checks skippedThe manually dispatched Linux/macOS Python 3.11–3.14 matrix established that every OMNI test passes on every requested combination. Seven jobs failed only the existing live SuperMAG test (zero or one of two requested days returned); macOS/Python 3.11 received both responses and passed completely. The Ty job reports the same two RBMDataSet diagnostics reproduced on untouched
upstream/main; neither is in a file changed by this PR.Reviewer entry points
swvo/io/omni/variables.py— authoritative variable metadata and selection rulesswvo/io/omni/omni_high_res.py— complete OMNIWeb request, parsing, and monthly cache-upgrade flowswvo/io/omni/omni_low_res.py— version-tolerant OMNI2 parsing and yearly cache-upgrade flowdocs/omni_variables.rst— complete public guide