Why: Sub of #763
What: Refactor TimeSync so that it is an IF builtin feature and not a plugin. It accepts config from the top level manifest context and is automatically executed after regroup if the config exists.
Blocked by:
809
Scope of work:
[ ] Refactor TimeSync so that it is an IF core feature rather than a plugin
[ ] Config is set at the top level (i.e. the context portion of a manifest) instead of in the plugin initialize field
[ ] IF recognizes that TimeSync config exists and automatically executes between regroup and compute
Acceptance criteria
[ ] Time Sync is an IF builtin feature
GIVEN TimeSync is moved
WHEN I browse the IF repository
THEN I should NOT find /src/builtins/time-sync.ts but I SHOULD find src/lib/time-sync.ts
[ ] Time Sync does not require intiializing in a manifest, and its config comes from manifest context
GIVEN TimeSync is moved to a core feature
WHEN I run if-run -m demo.yml
AND demo.yml contains the following:
[ ] TimeSync checks that there are no duplicate timestamps in each time series
GIVEN the check is implemented
WHEN I run the following manifest (first timestep is duplicated)
THEN TimeSync throws an exception , such as TimeSeriesError: Duplicaste timestamps exist in <path-to-node>
[ ] Time Sync executes immediately after regroup and immediately before compute
GIVEN The changes are implemented
WHEN I run a manifest that includes valid TimeSync config and regroup config in the context
THEN IF should execute observe then regroup then timesync then compute
e.g. this manifest should trigger the intended behaviour
Why: Sub of #763 What: Refactor
TimeSync
so that it is an IF builtin feature and not a plugin. It accepts config from the top level manifestcontext
and is automatically executed afterregroup
if the config exists.Blocked by:
809
Scope of work:
TimeSync
so that it is an IF core feature rather than a plugincontext
portion of a manifest) instead of in the plugininitialize
fieldTimeSync
config exists and automatically executes betweenregroup
andcompute
Acceptance criteria
[ ] Time Sync is an IF builtin feature GIVEN TimeSync is moved WHEN I browse the IF repository THEN I should NOT find
/src/builtins/time-sync.ts
but I SHOULD findsrc/lib/time-sync.ts
[ ] Time Sync does not require intiializing in a manifest, and its config comes from manifest
context
GIVEN TimeSync is moved to a core feature WHEN I run
if-run -m demo.yml
AND demo.yml contains the following:THEN it runs successfully and the output is:
[ ] TimeSync checks that there are no duplicate timestamps in each time series GIVEN the check is implemented WHEN I run the following manifest (first timestep is duplicated)
THEN TimeSync throws an exception , such as
TimeSeriesError: Duplicaste timestamps exist in <path-to-node>
[ ] Time Sync executes immediately after
regroup
and immediately beforecompute
GIVEN The changes are implemented WHEN I run a manifest that includes valid TimeSync config andregroup
config in thecontext
THEN IF should executeobserve
thenregroup
thentimesync
thencompute
e.g. this manifest should trigger the intended behaviour