Conversation
Codecov Report❌ Patch coverage is Additional details and impacted files@@ Coverage Diff @@
## develop #285 +/- ##
===========================================
- Coverage 50.96% 50.86% -0.10%
===========================================
Files 481 481
Lines 22812 23035 +223
Branches 1569 1620 +51
===========================================
+ Hits 11625 11717 +92
- Misses 11187 11318 +131 ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
dsarmany
force-pushed
the
feature/convert-mars-request-regrouping
branch
from
September 26, 2026 11:16
736a85a to
60cd68c
Compare
danovaro
force-pushed
the
feature/convert-mars-request-regrouping
branch
2 times, most recently
from
October 5, 2026 08:10
15cba60 to
269d99f
Compare
Converting a request used to flatten it into one request per field, which ran out of memory on large requests (~5M fields). - Flatten only the keys read by the mars2mars rules - Compact each group over the keys that vary within it without relying on MarsRequest::count() - Order the output by the position of the first field in the input - Pass post-processing, sink and unknown keys through without validating or expanding them, inherited like MARS does - Add a regression test for convert-mars-request. Add packing and interpolation aliases to the language mars2mars: Do not fail on step ranges, missing param or missing step - Read step as a string before trying long, so that a step range such as 0-24 in a MarsRequest reaches the range conversion instead of failing to parse as long - Write step to a MarsRequest as a plain number (24, not 24h) - Leave requests without param unchanged (e.g. type=tf tracks) - Skip the timespan fix when there is no timespan, as for products indexed by fcmonth rather than step - Add these cases to the convert-mars-request regression test mars2mars: Convert stream enwh to enfh Wave hindcasts are encoded as enfh, similar to how 'wave' maps to 'oper' and 'waef' to 'enfo'. Add a test for the three wave stream conversions. mars2mars: Convert CY50r1 wave streams to their CY50r2 equivalents Only wave, waef and enwh were converted before. - BC and long-window data: scwv, dcwv, lwwv, ewda, ewla, fsow - Ensemble, extended range and hindcasts: weef, weeh, ewho, weov, ewhc - Hindcast statistics: wehs, wees - Monthly means and climatology: wamo, wamd, ewmm, ewmo, dacw The legacy seasonal and monthly forecast wave streams, and the wave streams without a clear counterpart (mawv, wvhc, wavm), are unchanged. TypeParam: Read bare param numbers from the table of the request context A param number without table was read as a table-128 paramId whenever no rule of the context listed it, even when the context held no such param. For example, param=229 in stream=wave became 229 (iews) instead of 140229 (swh), and param=246 at levtype=sfc became 246 (clwc) instead of 228246 (100u). MARS reads such numbers from the table that holds them in the request context. For each fully specified context (class, levtype, stream, type), record the numbers that are not in table-128 but are in at least one other table. If they appear in more than one table, use table 228. These resolutions are consulted before the existing lookup, so explicit tables (246.128), table-128 params of the context and shortnames are unaffected. They are cached in params.bin, whose version is bumped to 2. convert-mars-request: Validate post-processing keys known to the language Post-processing and sink keys were passed through verbatim, so their values were neither validated nor normalised. Now that the language accepts the usual spellings (e.g. second_order, nearest_neighbour), pass through only the keys unknown to the language of the verb (e.g. password), and let the expansion validate and normalise all others. Add MarsLanguage::isKeyword() to tell keywords and their aliases from unknown keys. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
danovaro
force-pushed
the
feature/convert-mars-request-regrouping
branch
from
October 5, 2026 10:23
269d99f to
54fb723
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Converting a request used to flatten it into one request per field, which ran out of memory on large requests (~5M fields). The compaction afterwards split levelist=all requests per param, lost keys that are not hypercube axes (grid, area, target, ...) whenever a group was sparse, and printed groups in key-set order rather than request order.
Add a regression test for convert-mars-request.
Description
Contributor Declaration
By opening this pull request, I affirm the following:
📋 Metkit Documentation 📋
https://sites.ecmwf.int/docs/metkit/pull-requests/PR-285