diff --git a/.gitignore b/.gitignore index 140e783..c3d3932 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,7 @@ # Project specific / generated files -tests/files/data/*.new.txt +tests/cases/*/data/*.new.txt +tests/cases/*/svg/* +!tests/cases/*/svg/.gitkeep # Byte-compiled / optimized / DLL files __pycache__/ @@ -163,6 +165,3 @@ cython_debug/ # and can be added to the global gitignore or merged into this file. For a more nuclear # option (not recommended) you can uncomment the following to ignore the entire idea folder. #.idea/ - -tests/files/svgs/* -!tests/files/svgs/.gitkeep diff --git a/src/sirocco/core/graph_items.py b/src/sirocco/core/graph_items.py index 4f99605..0bed3d8 100644 --- a/src/sirocco/core/graph_items.py +++ b/src/sirocco/core/graph_items.py @@ -12,6 +12,8 @@ if TYPE_CHECKING: from collections.abc import Iterator + from datetime import datetime + from pathlib import Path from sirocco.parsing._yaml_data_models import ConfigBaseData, ConfigCycleTask, ConfigTask, TargetNodesBaseModel @@ -36,6 +38,9 @@ class Task(ConfigBaseTaskSpecs, GraphItem): inputs: list[Data] = field(default_factory=list) outputs: list[Data] = field(default_factory=list) wait_on: list[Task] = field(default_factory=list) + config_rootdir: Path | None = None + start_date: datetime | None = None + end_date: datetime | None = None def __init_subclass__(cls, **kwargs): super().__init_subclass__(**kwargs) @@ -48,6 +53,9 @@ def __init_subclass__(cls, **kwargs): def from_config( cls, config: ConfigTask, + config_rootdir: Path, + start_date: datetime | None, + end_date: datetime | None, coordinates: dict[str, Any], datastore: Store, graph_spec: ConfigCycleTask, @@ -64,7 +72,10 @@ def from_config( raise ValueError(msg) new = plugin_cls( + config_rootdir=config_rootdir, coordinates=coordinates, + start_date=start_date, + end_date=end_date, inputs=inputs, outputs=outputs, **cls_config, diff --git a/src/sirocco/core/workflow.py b/src/sirocco/core/workflow.py index 6a3b3a1..06ee46e 100644 --- a/src/sirocco/core/workflow.py +++ b/src/sirocco/core/workflow.py @@ -57,7 +57,13 @@ def iter_coordinates(param_refs: list, date: datetime | None = None) -> Iterator for coordinates in iter_coordinates(param_refs=task_config.parameters, date=date): task = Task.from_config( - config=task_config, coordinates=coordinates, datastore=self.data, graph_spec=task_graph_spec + config=task_config, + config_rootdir=workflow_config.rootdir, + start_date=cycle_config.start_date, + end_date=cycle_config.end_date, + coordinates=coordinates, + datastore=self.data, + graph_spec=task_graph_spec, ) self.tasks.add(task) cycle_tasks.append(task) diff --git a/src/sirocco/parsing/_yaml_data_models.py b/src/sirocco/parsing/_yaml_data_models.py index 30f2b79..976f7fa 100644 --- a/src/sirocco/parsing/_yaml_data_models.py +++ b/src/sirocco/parsing/_yaml_data_models.py @@ -388,6 +388,7 @@ def get_plugin_from_named_base_model(data: dict) -> str: class ConfigWorkflow(BaseModel): name: str | None = None + rootdir: Path | None = None cycles: list[ConfigCycle] tasks: list[ConfigTask] data: ConfigData @@ -447,4 +448,6 @@ def load_workflow_config(workflow_config: str) -> ConfigWorkflow: if parsed_workflow.name is None: parsed_workflow.name = config_path.stem + parsed_workflow.rootdir = config_path.resolve().parent + return parsed_workflow diff --git a/src/sirocco/pretty_print.py b/src/sirocco/pretty_print.py index 322fcd5..4100b15 100644 --- a/src/sirocco/pretty_print.py +++ b/src/sirocco/pretty_print.py @@ -148,6 +148,7 @@ def format_task(self, obj: core.Task) -> str: repr_attrs.remove("inputs") repr_attrs.remove("outputs") repr_attrs.remove("wait_on") + repr_attrs.remove("config_rootdir") for attr_name in repr_attrs: attr = getattr(obj, attr_name) diff --git a/tests/files/configs/test_config_large.yml b/tests/cases/large/config/test_config_large.yml similarity index 100% rename from tests/files/configs/test_config_large.yml rename to tests/cases/large/config/test_config_large.yml diff --git a/tests/files/data/test_config_large.txt b/tests/cases/large/data/test_config_large.txt similarity index 90% rename from tests/files/data/test_config_large.txt rename to tests/cases/large/data/test_config_large.txt index 41ab797..24445df 100644 --- a/tests/files/data/test_config_large.txt +++ b/tests/cases/large/data/test_config_large.txt @@ -28,6 +28,8 @@ cycles: uenv: {'squashfs': 'path/to/squashfs', 'mount_point': 'runtime/mount/point'} nodes: 4 walltime: time.struct_time(tm_year=1900, tm_mon=1, tm_mday=1, tm_hour=0, tm_min=2, tm_sec=0, tm_wday=0, tm_yday=1, tm_isdst=-1) + start date: 2025-01-01 00:00:00 + end date: 2027-01-01 00:00:00 plugin: 'shell' command: '$PWD/examples/files/scripts/cleanup.sh' cli arguments: positional=['grid_file'] keyword={'-p': 'extpar_file', '-e': 'ERA5'} flags=None source_file='dummy_source_file' @@ -44,6 +46,8 @@ cycles: uenv: {'squashfs': 'path/to/squashfs', 'mount_point': 'runtime/mount/point'} nodes: 40 walltime: time.struct_time(tm_year=1900, tm_mon=1, tm_mday=1, tm_hour=23, tm_min=59, tm_sec=59, tm_wday=0, tm_yday=1, tm_isdst=-1) + start date: 2025-01-01 00:00:00 + end date: 2027-01-01 00:00:00 plugin: 'icon' namelists: {'master': 'path/to/mater_nml', 'model': 'path/to/model_nml'} - postproc_1 [date: 2025-01-01 00:00:00]: @@ -56,6 +60,8 @@ cycles: uenv: {'squashfs': 'path/to/squashfs', 'mount_point': 'runtime/mount/point'} nodes: 2 walltime: time.struct_time(tm_year=1900, tm_mon=1, tm_mday=1, tm_hour=0, tm_min=5, tm_sec=0, tm_wday=0, tm_yday=1, tm_isdst=-1) + start date: 2025-01-01 00:00:00 + end date: 2027-01-01 00:00:00 plugin: 'shell' command: '$PWD/examples/files/scripts/main_script_ocn.sh' cli arguments: positional=None keyword={'--input': 'stream_1'} flags=None source_file=None @@ -70,6 +76,8 @@ cycles: coordinates: {'date': datetime.datetime(2025, 1, 1, 0, 0)} nodes: 1 walltime: time.struct_time(tm_year=1900, tm_mon=1, tm_mday=1, tm_hour=0, tm_min=1, tm_sec=0, tm_wday=0, tm_yday=1, tm_isdst=-1) + start date: 2025-01-01 00:00:00 + end date: 2027-01-01 00:00:00 plugin: 'shell' command: '$PWD/examples/files/scripts/post_clean.sh' cli arguments: positional=None keyword={'--input': 'postout_1', '--stream': 'stream_1', '--icon_input': 'icon_input'} flags=None source_file=None @@ -87,6 +95,8 @@ cycles: uenv: {'squashfs': 'path/to/squashfs', 'mount_point': 'runtime/mount/point'} nodes: 4 walltime: time.struct_time(tm_year=1900, tm_mon=1, tm_mday=1, tm_hour=0, tm_min=2, tm_sec=0, tm_wday=0, tm_yday=1, tm_isdst=-1) + start date: 2025-01-01 00:00:00 + end date: 2027-01-01 00:00:00 plugin: 'shell' command: '$PWD/examples/files/scripts/cleanup.sh' cli arguments: positional=['grid_file'] keyword={'-p': 'extpar_file', '-e': 'ERA5'} flags=None source_file='dummy_source_file' @@ -104,6 +114,8 @@ cycles: uenv: {'squashfs': 'path/to/squashfs', 'mount_point': 'runtime/mount/point'} nodes: 40 walltime: time.struct_time(tm_year=1900, tm_mon=1, tm_mday=1, tm_hour=23, tm_min=59, tm_sec=59, tm_wday=0, tm_yday=1, tm_isdst=-1) + start date: 2025-01-01 00:00:00 + end date: 2027-01-01 00:00:00 plugin: 'icon' namelists: {'master': 'path/to/mater_nml', 'model': 'path/to/model_nml'} - postproc_1 [date: 2025-03-01 00:00:00]: @@ -116,6 +128,8 @@ cycles: uenv: {'squashfs': 'path/to/squashfs', 'mount_point': 'runtime/mount/point'} nodes: 2 walltime: time.struct_time(tm_year=1900, tm_mon=1, tm_mday=1, tm_hour=0, tm_min=5, tm_sec=0, tm_wday=0, tm_yday=1, tm_isdst=-1) + start date: 2025-01-01 00:00:00 + end date: 2027-01-01 00:00:00 plugin: 'shell' command: '$PWD/examples/files/scripts/main_script_ocn.sh' cli arguments: positional=None keyword={'--input': 'stream_1'} flags=None source_file=None @@ -130,6 +144,8 @@ cycles: coordinates: {'date': datetime.datetime(2025, 3, 1, 0, 0)} nodes: 1 walltime: time.struct_time(tm_year=1900, tm_mon=1, tm_mday=1, tm_hour=0, tm_min=1, tm_sec=0, tm_wday=0, tm_yday=1, tm_isdst=-1) + start date: 2025-01-01 00:00:00 + end date: 2027-01-01 00:00:00 plugin: 'shell' command: '$PWD/examples/files/scripts/post_clean.sh' cli arguments: positional=None keyword={'--input': 'postout_1', '--stream': 'stream_1', '--icon_input': 'icon_input'} flags=None source_file=None @@ -149,6 +165,8 @@ cycles: uenv: {'squashfs': 'path/to/squashfs', 'mount_point': 'runtime/mount/point'} nodes: 4 walltime: time.struct_time(tm_year=1900, tm_mon=1, tm_mday=1, tm_hour=0, tm_min=2, tm_sec=0, tm_wday=0, tm_yday=1, tm_isdst=-1) + start date: 2025-01-01 00:00:00 + end date: 2027-01-01 00:00:00 plugin: 'shell' command: '$PWD/examples/files/scripts/cleanup.sh' cli arguments: positional=['grid_file'] keyword={'-p': 'extpar_file', '-e': 'ERA5'} flags=None source_file='dummy_source_file' @@ -166,6 +184,8 @@ cycles: uenv: {'squashfs': 'path/to/squashfs', 'mount_point': 'runtime/mount/point'} nodes: 40 walltime: time.struct_time(tm_year=1900, tm_mon=1, tm_mday=1, tm_hour=23, tm_min=59, tm_sec=59, tm_wday=0, tm_yday=1, tm_isdst=-1) + start date: 2025-01-01 00:00:00 + end date: 2027-01-01 00:00:00 plugin: 'icon' namelists: {'master': 'path/to/mater_nml', 'model': 'path/to/model_nml'} - postproc_1 [date: 2025-05-01 00:00:00]: @@ -178,6 +198,8 @@ cycles: uenv: {'squashfs': 'path/to/squashfs', 'mount_point': 'runtime/mount/point'} nodes: 2 walltime: time.struct_time(tm_year=1900, tm_mon=1, tm_mday=1, tm_hour=0, tm_min=5, tm_sec=0, tm_wday=0, tm_yday=1, tm_isdst=-1) + start date: 2025-01-01 00:00:00 + end date: 2027-01-01 00:00:00 plugin: 'shell' command: '$PWD/examples/files/scripts/main_script_ocn.sh' cli arguments: positional=None keyword={'--input': 'stream_1'} flags=None source_file=None @@ -192,6 +214,8 @@ cycles: coordinates: {'date': datetime.datetime(2025, 5, 1, 0, 0)} nodes: 1 walltime: time.struct_time(tm_year=1900, tm_mon=1, tm_mday=1, tm_hour=0, tm_min=1, tm_sec=0, tm_wday=0, tm_yday=1, tm_isdst=-1) + start date: 2025-01-01 00:00:00 + end date: 2027-01-01 00:00:00 plugin: 'shell' command: '$PWD/examples/files/scripts/post_clean.sh' cli arguments: positional=None keyword={'--input': 'postout_1', '--stream': 'stream_1', '--icon_input': 'icon_input'} flags=None source_file=None @@ -211,6 +235,8 @@ cycles: uenv: {'squashfs': 'path/to/squashfs', 'mount_point': 'runtime/mount/point'} nodes: 4 walltime: time.struct_time(tm_year=1900, tm_mon=1, tm_mday=1, tm_hour=0, tm_min=2, tm_sec=0, tm_wday=0, tm_yday=1, tm_isdst=-1) + start date: 2025-01-01 00:00:00 + end date: 2027-01-01 00:00:00 plugin: 'shell' command: '$PWD/examples/files/scripts/cleanup.sh' cli arguments: positional=['grid_file'] keyword={'-p': 'extpar_file', '-e': 'ERA5'} flags=None source_file='dummy_source_file' @@ -228,6 +254,8 @@ cycles: uenv: {'squashfs': 'path/to/squashfs', 'mount_point': 'runtime/mount/point'} nodes: 40 walltime: time.struct_time(tm_year=1900, tm_mon=1, tm_mday=1, tm_hour=23, tm_min=59, tm_sec=59, tm_wday=0, tm_yday=1, tm_isdst=-1) + start date: 2025-01-01 00:00:00 + end date: 2027-01-01 00:00:00 plugin: 'icon' namelists: {'master': 'path/to/mater_nml', 'model': 'path/to/model_nml'} - postproc_1 [date: 2025-07-01 00:00:00]: @@ -240,6 +268,8 @@ cycles: uenv: {'squashfs': 'path/to/squashfs', 'mount_point': 'runtime/mount/point'} nodes: 2 walltime: time.struct_time(tm_year=1900, tm_mon=1, tm_mday=1, tm_hour=0, tm_min=5, tm_sec=0, tm_wday=0, tm_yday=1, tm_isdst=-1) + start date: 2025-01-01 00:00:00 + end date: 2027-01-01 00:00:00 plugin: 'shell' command: '$PWD/examples/files/scripts/main_script_ocn.sh' cli arguments: positional=None keyword={'--input': 'stream_1'} flags=None source_file=None @@ -254,6 +284,8 @@ cycles: coordinates: {'date': datetime.datetime(2025, 7, 1, 0, 0)} nodes: 1 walltime: time.struct_time(tm_year=1900, tm_mon=1, tm_mday=1, tm_hour=0, tm_min=1, tm_sec=0, tm_wday=0, tm_yday=1, tm_isdst=-1) + start date: 2025-01-01 00:00:00 + end date: 2027-01-01 00:00:00 plugin: 'shell' command: '$PWD/examples/files/scripts/post_clean.sh' cli arguments: positional=None keyword={'--input': 'postout_1', '--stream': 'stream_1', '--icon_input': 'icon_input'} flags=None source_file=None @@ -273,6 +305,8 @@ cycles: uenv: {'squashfs': 'path/to/squashfs', 'mount_point': 'runtime/mount/point'} nodes: 4 walltime: time.struct_time(tm_year=1900, tm_mon=1, tm_mday=1, tm_hour=0, tm_min=2, tm_sec=0, tm_wday=0, tm_yday=1, tm_isdst=-1) + start date: 2025-01-01 00:00:00 + end date: 2027-01-01 00:00:00 plugin: 'shell' command: '$PWD/examples/files/scripts/cleanup.sh' cli arguments: positional=['grid_file'] keyword={'-p': 'extpar_file', '-e': 'ERA5'} flags=None source_file='dummy_source_file' @@ -290,6 +324,8 @@ cycles: uenv: {'squashfs': 'path/to/squashfs', 'mount_point': 'runtime/mount/point'} nodes: 40 walltime: time.struct_time(tm_year=1900, tm_mon=1, tm_mday=1, tm_hour=23, tm_min=59, tm_sec=59, tm_wday=0, tm_yday=1, tm_isdst=-1) + start date: 2025-01-01 00:00:00 + end date: 2027-01-01 00:00:00 plugin: 'icon' namelists: {'master': 'path/to/mater_nml', 'model': 'path/to/model_nml'} - postproc_1 [date: 2025-09-01 00:00:00]: @@ -302,6 +338,8 @@ cycles: uenv: {'squashfs': 'path/to/squashfs', 'mount_point': 'runtime/mount/point'} nodes: 2 walltime: time.struct_time(tm_year=1900, tm_mon=1, tm_mday=1, tm_hour=0, tm_min=5, tm_sec=0, tm_wday=0, tm_yday=1, tm_isdst=-1) + start date: 2025-01-01 00:00:00 + end date: 2027-01-01 00:00:00 plugin: 'shell' command: '$PWD/examples/files/scripts/main_script_ocn.sh' cli arguments: positional=None keyword={'--input': 'stream_1'} flags=None source_file=None @@ -316,6 +354,8 @@ cycles: coordinates: {'date': datetime.datetime(2025, 9, 1, 0, 0)} nodes: 1 walltime: time.struct_time(tm_year=1900, tm_mon=1, tm_mday=1, tm_hour=0, tm_min=1, tm_sec=0, tm_wday=0, tm_yday=1, tm_isdst=-1) + start date: 2025-01-01 00:00:00 + end date: 2027-01-01 00:00:00 plugin: 'shell' command: '$PWD/examples/files/scripts/post_clean.sh' cli arguments: positional=None keyword={'--input': 'postout_1', '--stream': 'stream_1', '--icon_input': 'icon_input'} flags=None source_file=None @@ -335,6 +375,8 @@ cycles: uenv: {'squashfs': 'path/to/squashfs', 'mount_point': 'runtime/mount/point'} nodes: 4 walltime: time.struct_time(tm_year=1900, tm_mon=1, tm_mday=1, tm_hour=0, tm_min=2, tm_sec=0, tm_wday=0, tm_yday=1, tm_isdst=-1) + start date: 2025-01-01 00:00:00 + end date: 2027-01-01 00:00:00 plugin: 'shell' command: '$PWD/examples/files/scripts/cleanup.sh' cli arguments: positional=['grid_file'] keyword={'-p': 'extpar_file', '-e': 'ERA5'} flags=None source_file='dummy_source_file' @@ -352,6 +394,8 @@ cycles: uenv: {'squashfs': 'path/to/squashfs', 'mount_point': 'runtime/mount/point'} nodes: 40 walltime: time.struct_time(tm_year=1900, tm_mon=1, tm_mday=1, tm_hour=23, tm_min=59, tm_sec=59, tm_wday=0, tm_yday=1, tm_isdst=-1) + start date: 2025-01-01 00:00:00 + end date: 2027-01-01 00:00:00 plugin: 'icon' namelists: {'master': 'path/to/mater_nml', 'model': 'path/to/model_nml'} - postproc_1 [date: 2025-11-01 00:00:00]: @@ -364,6 +408,8 @@ cycles: uenv: {'squashfs': 'path/to/squashfs', 'mount_point': 'runtime/mount/point'} nodes: 2 walltime: time.struct_time(tm_year=1900, tm_mon=1, tm_mday=1, tm_hour=0, tm_min=5, tm_sec=0, tm_wday=0, tm_yday=1, tm_isdst=-1) + start date: 2025-01-01 00:00:00 + end date: 2027-01-01 00:00:00 plugin: 'shell' command: '$PWD/examples/files/scripts/main_script_ocn.sh' cli arguments: positional=None keyword={'--input': 'stream_1'} flags=None source_file=None @@ -378,6 +424,8 @@ cycles: coordinates: {'date': datetime.datetime(2025, 11, 1, 0, 0)} nodes: 1 walltime: time.struct_time(tm_year=1900, tm_mon=1, tm_mday=1, tm_hour=0, tm_min=1, tm_sec=0, tm_wday=0, tm_yday=1, tm_isdst=-1) + start date: 2025-01-01 00:00:00 + end date: 2027-01-01 00:00:00 plugin: 'shell' command: '$PWD/examples/files/scripts/post_clean.sh' cli arguments: positional=None keyword={'--input': 'postout_1', '--stream': 'stream_1', '--icon_input': 'icon_input'} flags=None source_file=None @@ -397,6 +445,8 @@ cycles: uenv: {'squashfs': 'path/to/squashfs', 'mount_point': 'runtime/mount/point'} nodes: 4 walltime: time.struct_time(tm_year=1900, tm_mon=1, tm_mday=1, tm_hour=0, tm_min=2, tm_sec=0, tm_wday=0, tm_yday=1, tm_isdst=-1) + start date: 2025-01-01 00:00:00 + end date: 2027-01-01 00:00:00 plugin: 'shell' command: '$PWD/examples/files/scripts/cleanup.sh' cli arguments: positional=['grid_file'] keyword={'-p': 'extpar_file', '-e': 'ERA5'} flags=None source_file='dummy_source_file' @@ -414,6 +464,8 @@ cycles: uenv: {'squashfs': 'path/to/squashfs', 'mount_point': 'runtime/mount/point'} nodes: 40 walltime: time.struct_time(tm_year=1900, tm_mon=1, tm_mday=1, tm_hour=23, tm_min=59, tm_sec=59, tm_wday=0, tm_yday=1, tm_isdst=-1) + start date: 2025-01-01 00:00:00 + end date: 2027-01-01 00:00:00 plugin: 'icon' namelists: {'master': 'path/to/mater_nml', 'model': 'path/to/model_nml'} - postproc_1 [date: 2026-01-01 00:00:00]: @@ -426,6 +478,8 @@ cycles: uenv: {'squashfs': 'path/to/squashfs', 'mount_point': 'runtime/mount/point'} nodes: 2 walltime: time.struct_time(tm_year=1900, tm_mon=1, tm_mday=1, tm_hour=0, tm_min=5, tm_sec=0, tm_wday=0, tm_yday=1, tm_isdst=-1) + start date: 2025-01-01 00:00:00 + end date: 2027-01-01 00:00:00 plugin: 'shell' command: '$PWD/examples/files/scripts/main_script_ocn.sh' cli arguments: positional=None keyword={'--input': 'stream_1'} flags=None source_file=None @@ -440,6 +494,8 @@ cycles: coordinates: {'date': datetime.datetime(2026, 1, 1, 0, 0)} nodes: 1 walltime: time.struct_time(tm_year=1900, tm_mon=1, tm_mday=1, tm_hour=0, tm_min=1, tm_sec=0, tm_wday=0, tm_yday=1, tm_isdst=-1) + start date: 2025-01-01 00:00:00 + end date: 2027-01-01 00:00:00 plugin: 'shell' command: '$PWD/examples/files/scripts/post_clean.sh' cli arguments: positional=None keyword={'--input': 'postout_1', '--stream': 'stream_1', '--icon_input': 'icon_input'} flags=None source_file=None @@ -459,6 +515,8 @@ cycles: uenv: {'squashfs': 'path/to/squashfs', 'mount_point': 'runtime/mount/point'} nodes: 4 walltime: time.struct_time(tm_year=1900, tm_mon=1, tm_mday=1, tm_hour=0, tm_min=2, tm_sec=0, tm_wday=0, tm_yday=1, tm_isdst=-1) + start date: 2025-01-01 00:00:00 + end date: 2027-01-01 00:00:00 plugin: 'shell' command: '$PWD/examples/files/scripts/cleanup.sh' cli arguments: positional=['grid_file'] keyword={'-p': 'extpar_file', '-e': 'ERA5'} flags=None source_file='dummy_source_file' @@ -476,6 +534,8 @@ cycles: uenv: {'squashfs': 'path/to/squashfs', 'mount_point': 'runtime/mount/point'} nodes: 40 walltime: time.struct_time(tm_year=1900, tm_mon=1, tm_mday=1, tm_hour=23, tm_min=59, tm_sec=59, tm_wday=0, tm_yday=1, tm_isdst=-1) + start date: 2025-01-01 00:00:00 + end date: 2027-01-01 00:00:00 plugin: 'icon' namelists: {'master': 'path/to/mater_nml', 'model': 'path/to/model_nml'} - postproc_1 [date: 2026-03-01 00:00:00]: @@ -488,6 +548,8 @@ cycles: uenv: {'squashfs': 'path/to/squashfs', 'mount_point': 'runtime/mount/point'} nodes: 2 walltime: time.struct_time(tm_year=1900, tm_mon=1, tm_mday=1, tm_hour=0, tm_min=5, tm_sec=0, tm_wday=0, tm_yday=1, tm_isdst=-1) + start date: 2025-01-01 00:00:00 + end date: 2027-01-01 00:00:00 plugin: 'shell' command: '$PWD/examples/files/scripts/main_script_ocn.sh' cli arguments: positional=None keyword={'--input': 'stream_1'} flags=None source_file=None @@ -502,6 +564,8 @@ cycles: coordinates: {'date': datetime.datetime(2026, 3, 1, 0, 0)} nodes: 1 walltime: time.struct_time(tm_year=1900, tm_mon=1, tm_mday=1, tm_hour=0, tm_min=1, tm_sec=0, tm_wday=0, tm_yday=1, tm_isdst=-1) + start date: 2025-01-01 00:00:00 + end date: 2027-01-01 00:00:00 plugin: 'shell' command: '$PWD/examples/files/scripts/post_clean.sh' cli arguments: positional=None keyword={'--input': 'postout_1', '--stream': 'stream_1', '--icon_input': 'icon_input'} flags=None source_file=None @@ -521,6 +585,8 @@ cycles: uenv: {'squashfs': 'path/to/squashfs', 'mount_point': 'runtime/mount/point'} nodes: 4 walltime: time.struct_time(tm_year=1900, tm_mon=1, tm_mday=1, tm_hour=0, tm_min=2, tm_sec=0, tm_wday=0, tm_yday=1, tm_isdst=-1) + start date: 2025-01-01 00:00:00 + end date: 2027-01-01 00:00:00 plugin: 'shell' command: '$PWD/examples/files/scripts/cleanup.sh' cli arguments: positional=['grid_file'] keyword={'-p': 'extpar_file', '-e': 'ERA5'} flags=None source_file='dummy_source_file' @@ -538,6 +604,8 @@ cycles: uenv: {'squashfs': 'path/to/squashfs', 'mount_point': 'runtime/mount/point'} nodes: 40 walltime: time.struct_time(tm_year=1900, tm_mon=1, tm_mday=1, tm_hour=23, tm_min=59, tm_sec=59, tm_wday=0, tm_yday=1, tm_isdst=-1) + start date: 2025-01-01 00:00:00 + end date: 2027-01-01 00:00:00 plugin: 'icon' namelists: {'master': 'path/to/mater_nml', 'model': 'path/to/model_nml'} - postproc_1 [date: 2026-05-01 00:00:00]: @@ -550,6 +618,8 @@ cycles: uenv: {'squashfs': 'path/to/squashfs', 'mount_point': 'runtime/mount/point'} nodes: 2 walltime: time.struct_time(tm_year=1900, tm_mon=1, tm_mday=1, tm_hour=0, tm_min=5, tm_sec=0, tm_wday=0, tm_yday=1, tm_isdst=-1) + start date: 2025-01-01 00:00:00 + end date: 2027-01-01 00:00:00 plugin: 'shell' command: '$PWD/examples/files/scripts/main_script_ocn.sh' cli arguments: positional=None keyword={'--input': 'stream_1'} flags=None source_file=None @@ -564,6 +634,8 @@ cycles: coordinates: {'date': datetime.datetime(2026, 5, 1, 0, 0)} nodes: 1 walltime: time.struct_time(tm_year=1900, tm_mon=1, tm_mday=1, tm_hour=0, tm_min=1, tm_sec=0, tm_wday=0, tm_yday=1, tm_isdst=-1) + start date: 2025-01-01 00:00:00 + end date: 2027-01-01 00:00:00 plugin: 'shell' command: '$PWD/examples/files/scripts/post_clean.sh' cli arguments: positional=None keyword={'--input': 'postout_1', '--stream': 'stream_1', '--icon_input': 'icon_input'} flags=None source_file=None @@ -583,6 +655,8 @@ cycles: uenv: {'squashfs': 'path/to/squashfs', 'mount_point': 'runtime/mount/point'} nodes: 4 walltime: time.struct_time(tm_year=1900, tm_mon=1, tm_mday=1, tm_hour=0, tm_min=2, tm_sec=0, tm_wday=0, tm_yday=1, tm_isdst=-1) + start date: 2025-01-01 00:00:00 + end date: 2027-01-01 00:00:00 plugin: 'shell' command: '$PWD/examples/files/scripts/cleanup.sh' cli arguments: positional=['grid_file'] keyword={'-p': 'extpar_file', '-e': 'ERA5'} flags=None source_file='dummy_source_file' @@ -600,6 +674,8 @@ cycles: uenv: {'squashfs': 'path/to/squashfs', 'mount_point': 'runtime/mount/point'} nodes: 40 walltime: time.struct_time(tm_year=1900, tm_mon=1, tm_mday=1, tm_hour=23, tm_min=59, tm_sec=59, tm_wday=0, tm_yday=1, tm_isdst=-1) + start date: 2025-01-01 00:00:00 + end date: 2027-01-01 00:00:00 plugin: 'icon' namelists: {'master': 'path/to/mater_nml', 'model': 'path/to/model_nml'} - postproc_1 [date: 2026-07-01 00:00:00]: @@ -612,6 +688,8 @@ cycles: uenv: {'squashfs': 'path/to/squashfs', 'mount_point': 'runtime/mount/point'} nodes: 2 walltime: time.struct_time(tm_year=1900, tm_mon=1, tm_mday=1, tm_hour=0, tm_min=5, tm_sec=0, tm_wday=0, tm_yday=1, tm_isdst=-1) + start date: 2025-01-01 00:00:00 + end date: 2027-01-01 00:00:00 plugin: 'shell' command: '$PWD/examples/files/scripts/main_script_ocn.sh' cli arguments: positional=None keyword={'--input': 'stream_1'} flags=None source_file=None @@ -626,6 +704,8 @@ cycles: coordinates: {'date': datetime.datetime(2026, 7, 1, 0, 0)} nodes: 1 walltime: time.struct_time(tm_year=1900, tm_mon=1, tm_mday=1, tm_hour=0, tm_min=1, tm_sec=0, tm_wday=0, tm_yday=1, tm_isdst=-1) + start date: 2025-01-01 00:00:00 + end date: 2027-01-01 00:00:00 plugin: 'shell' command: '$PWD/examples/files/scripts/post_clean.sh' cli arguments: positional=None keyword={'--input': 'postout_1', '--stream': 'stream_1', '--icon_input': 'icon_input'} flags=None source_file=None @@ -645,6 +725,8 @@ cycles: uenv: {'squashfs': 'path/to/squashfs', 'mount_point': 'runtime/mount/point'} nodes: 4 walltime: time.struct_time(tm_year=1900, tm_mon=1, tm_mday=1, tm_hour=0, tm_min=2, tm_sec=0, tm_wday=0, tm_yday=1, tm_isdst=-1) + start date: 2025-01-01 00:00:00 + end date: 2027-01-01 00:00:00 plugin: 'shell' command: '$PWD/examples/files/scripts/cleanup.sh' cli arguments: positional=['grid_file'] keyword={'-p': 'extpar_file', '-e': 'ERA5'} flags=None source_file='dummy_source_file' @@ -662,6 +744,8 @@ cycles: uenv: {'squashfs': 'path/to/squashfs', 'mount_point': 'runtime/mount/point'} nodes: 40 walltime: time.struct_time(tm_year=1900, tm_mon=1, tm_mday=1, tm_hour=23, tm_min=59, tm_sec=59, tm_wday=0, tm_yday=1, tm_isdst=-1) + start date: 2025-01-01 00:00:00 + end date: 2027-01-01 00:00:00 plugin: 'icon' namelists: {'master': 'path/to/mater_nml', 'model': 'path/to/model_nml'} - postproc_1 [date: 2026-09-01 00:00:00]: @@ -674,6 +758,8 @@ cycles: uenv: {'squashfs': 'path/to/squashfs', 'mount_point': 'runtime/mount/point'} nodes: 2 walltime: time.struct_time(tm_year=1900, tm_mon=1, tm_mday=1, tm_hour=0, tm_min=5, tm_sec=0, tm_wday=0, tm_yday=1, tm_isdst=-1) + start date: 2025-01-01 00:00:00 + end date: 2027-01-01 00:00:00 plugin: 'shell' command: '$PWD/examples/files/scripts/main_script_ocn.sh' cli arguments: positional=None keyword={'--input': 'stream_1'} flags=None source_file=None @@ -688,6 +774,8 @@ cycles: coordinates: {'date': datetime.datetime(2026, 9, 1, 0, 0)} nodes: 1 walltime: time.struct_time(tm_year=1900, tm_mon=1, tm_mday=1, tm_hour=0, tm_min=1, tm_sec=0, tm_wday=0, tm_yday=1, tm_isdst=-1) + start date: 2025-01-01 00:00:00 + end date: 2027-01-01 00:00:00 plugin: 'shell' command: '$PWD/examples/files/scripts/post_clean.sh' cli arguments: positional=None keyword={'--input': 'postout_1', '--stream': 'stream_1', '--icon_input': 'icon_input'} flags=None source_file=None @@ -707,6 +795,8 @@ cycles: uenv: {'squashfs': 'path/to/squashfs', 'mount_point': 'runtime/mount/point'} nodes: 4 walltime: time.struct_time(tm_year=1900, tm_mon=1, tm_mday=1, tm_hour=0, tm_min=2, tm_sec=0, tm_wday=0, tm_yday=1, tm_isdst=-1) + start date: 2025-01-01 00:00:00 + end date: 2027-01-01 00:00:00 plugin: 'shell' command: '$PWD/examples/files/scripts/cleanup.sh' cli arguments: positional=['grid_file'] keyword={'-p': 'extpar_file', '-e': 'ERA5'} flags=None source_file='dummy_source_file' @@ -724,6 +814,8 @@ cycles: uenv: {'squashfs': 'path/to/squashfs', 'mount_point': 'runtime/mount/point'} nodes: 40 walltime: time.struct_time(tm_year=1900, tm_mon=1, tm_mday=1, tm_hour=23, tm_min=59, tm_sec=59, tm_wday=0, tm_yday=1, tm_isdst=-1) + start date: 2025-01-01 00:00:00 + end date: 2027-01-01 00:00:00 plugin: 'icon' namelists: {'master': 'path/to/mater_nml', 'model': 'path/to/model_nml'} - postproc_1 [date: 2026-11-01 00:00:00]: @@ -736,6 +828,8 @@ cycles: uenv: {'squashfs': 'path/to/squashfs', 'mount_point': 'runtime/mount/point'} nodes: 2 walltime: time.struct_time(tm_year=1900, tm_mon=1, tm_mday=1, tm_hour=0, tm_min=5, tm_sec=0, tm_wday=0, tm_yday=1, tm_isdst=-1) + start date: 2025-01-01 00:00:00 + end date: 2027-01-01 00:00:00 plugin: 'shell' command: '$PWD/examples/files/scripts/main_script_ocn.sh' cli arguments: positional=None keyword={'--input': 'stream_1'} flags=None source_file=None @@ -750,6 +844,8 @@ cycles: coordinates: {'date': datetime.datetime(2026, 11, 1, 0, 0)} nodes: 1 walltime: time.struct_time(tm_year=1900, tm_mon=1, tm_mday=1, tm_hour=0, tm_min=1, tm_sec=0, tm_wday=0, tm_yday=1, tm_isdst=-1) + start date: 2025-01-01 00:00:00 + end date: 2027-01-01 00:00:00 plugin: 'shell' command: '$PWD/examples/files/scripts/post_clean.sh' cli arguments: positional=None keyword={'--input': 'postout_1', '--stream': 'stream_1', '--icon_input': 'icon_input'} flags=None source_file=None @@ -770,6 +866,8 @@ cycles: uenv: {'squashfs': 'path/to/squashfs', 'mount_point': 'runtime/mount/point'} nodes: 2 walltime: time.struct_time(tm_year=1900, tm_mon=1, tm_mday=1, tm_hour=0, tm_min=5, tm_sec=0, tm_wday=0, tm_yday=1, tm_isdst=-1) + start date: 2025-01-01 00:00:00 + end date: 2027-01-01 00:00:00 plugin: 'shell' command: '$PWD/examples/files/scripts/main_script_atm.sh' cli arguments: positional=None keyword={'--input': 'stream_2'} flags=None source_file=None @@ -789,6 +887,8 @@ cycles: coordinates: {'date': datetime.datetime(2025, 1, 1, 0, 0)} nodes: 1 walltime: time.struct_time(tm_year=1900, tm_mon=1, tm_mday=1, tm_hour=0, tm_min=1, tm_sec=0, tm_wday=0, tm_yday=1, tm_isdst=-1) + start date: 2025-01-01 00:00:00 + end date: 2027-01-01 00:00:00 plugin: 'shell' command: '$PWD/examples/files/scripts/post_clean.sh' cli arguments: positional=None keyword={'--input': 'postout_2'} flags=None source_file=None @@ -809,6 +909,8 @@ cycles: uenv: {'squashfs': 'path/to/squashfs', 'mount_point': 'runtime/mount/point'} nodes: 2 walltime: time.struct_time(tm_year=1900, tm_mon=1, tm_mday=1, tm_hour=0, tm_min=5, tm_sec=0, tm_wday=0, tm_yday=1, tm_isdst=-1) + start date: 2025-01-01 00:00:00 + end date: 2027-01-01 00:00:00 plugin: 'shell' command: '$PWD/examples/files/scripts/main_script_atm.sh' cli arguments: positional=None keyword={'--input': 'stream_2'} flags=None source_file=None @@ -828,6 +930,8 @@ cycles: coordinates: {'date': datetime.datetime(2026, 1, 1, 0, 0)} nodes: 1 walltime: time.struct_time(tm_year=1900, tm_mon=1, tm_mday=1, tm_hour=0, tm_min=1, tm_sec=0, tm_wday=0, tm_yday=1, tm_isdst=-1) + start date: 2025-01-01 00:00:00 + end date: 2027-01-01 00:00:00 plugin: 'shell' command: '$PWD/examples/files/scripts/post_clean.sh' cli arguments: positional=None keyword={'--input': 'postout_2'} flags=None source_file=None \ No newline at end of file diff --git a/tests/files/svgs/.gitkeep b/tests/cases/large/svg/.gitkeep similarity index 100% rename from tests/files/svgs/.gitkeep rename to tests/cases/large/svg/.gitkeep diff --git a/tests/files/configs/test_config_parameters.yml b/tests/cases/parameters/config/test_config_parameters.yml similarity index 100% rename from tests/files/configs/test_config_parameters.yml rename to tests/cases/parameters/config/test_config_parameters.yml diff --git a/tests/files/data/test_config_parameters.txt b/tests/cases/parameters/data/test_config_parameters.txt similarity index 88% rename from tests/files/data/test_config_parameters.txt rename to tests/cases/parameters/data/test_config_parameters.txt index e64a52c..fc0a828 100644 --- a/tests/files/data/test_config_parameters.txt +++ b/tests/cases/parameters/data/test_config_parameters.txt @@ -10,6 +10,8 @@ cycles: - icon_restart [date: 2026-01-01 00:00:00, foo: 0, bar: 3.0] name: 'icon' coordinates: {'date': datetime.datetime(2026, 1, 1, 0, 0), 'foo': 0, 'bar': 3.0} + start date: 2026-01-01 00:00:00 + end date: 2028-01-01 00:00:00 plugin: 'shell' command: '$PWD/tests/files/scripts/icon.py' cli arguments: positional=None keyword={'--restart': 'icon_restart'} flags=None source_file=None @@ -22,6 +24,8 @@ cycles: - icon_restart [date: 2026-01-01 00:00:00, foo: 0, bar: 3.5] name: 'icon' coordinates: {'date': datetime.datetime(2026, 1, 1, 0, 0), 'foo': 0, 'bar': 3.5} + start date: 2026-01-01 00:00:00 + end date: 2028-01-01 00:00:00 plugin: 'shell' command: '$PWD/tests/files/scripts/icon.py' cli arguments: positional=None keyword={'--restart': 'icon_restart'} flags=None source_file=None @@ -34,6 +38,8 @@ cycles: - icon_restart [date: 2026-01-01 00:00:00, foo: 1, bar: 3.0] name: 'icon' coordinates: {'date': datetime.datetime(2026, 1, 1, 0, 0), 'foo': 1, 'bar': 3.0} + start date: 2026-01-01 00:00:00 + end date: 2028-01-01 00:00:00 plugin: 'shell' command: '$PWD/tests/files/scripts/icon.py' cli arguments: positional=None keyword={'--restart': 'icon_restart'} flags=None source_file=None @@ -46,6 +52,8 @@ cycles: - icon_restart [date: 2026-01-01 00:00:00, foo: 1, bar: 3.5] name: 'icon' coordinates: {'date': datetime.datetime(2026, 1, 1, 0, 0), 'foo': 1, 'bar': 3.5} + start date: 2026-01-01 00:00:00 + end date: 2028-01-01 00:00:00 plugin: 'shell' command: '$PWD/tests/files/scripts/icon.py' cli arguments: positional=None keyword={'--restart': 'icon_restart'} flags=None source_file=None @@ -58,6 +66,8 @@ cycles: - icon_restart [date: 2026-01-01 00:00:00, foo: 2, bar: 3.0] name: 'icon' coordinates: {'date': datetime.datetime(2026, 1, 1, 0, 0), 'foo': 2, 'bar': 3.0} + start date: 2026-01-01 00:00:00 + end date: 2028-01-01 00:00:00 plugin: 'shell' command: '$PWD/tests/files/scripts/icon.py' cli arguments: positional=None keyword={'--restart': 'icon_restart'} flags=None source_file=None @@ -70,6 +80,8 @@ cycles: - icon_restart [date: 2026-01-01 00:00:00, foo: 2, bar: 3.5] name: 'icon' coordinates: {'date': datetime.datetime(2026, 1, 1, 0, 0), 'foo': 2, 'bar': 3.5} + start date: 2026-01-01 00:00:00 + end date: 2028-01-01 00:00:00 plugin: 'shell' command: '$PWD/tests/files/scripts/icon.py' cli arguments: positional=None keyword={'--restart': 'icon_restart'} flags=None source_file=None @@ -82,6 +94,8 @@ cycles: - analysis_foo [date: 2026-01-01 00:00:00, bar: 3.0] name: 'statistics_foo' coordinates: {'date': datetime.datetime(2026, 1, 1, 0, 0), 'bar': 3.0} + start date: 2026-01-01 00:00:00 + end date: 2028-01-01 00:00:00 plugin: 'shell' command: '$PWD/tests/files/scripts/statistics.py' - statistics_foo [date: 2026-01-01 00:00:00, bar: 3.5]: @@ -93,6 +107,8 @@ cycles: - analysis_foo [date: 2026-01-01 00:00:00, bar: 3.5] name: 'statistics_foo' coordinates: {'date': datetime.datetime(2026, 1, 1, 0, 0), 'bar': 3.5} + start date: 2026-01-01 00:00:00 + end date: 2028-01-01 00:00:00 plugin: 'shell' command: '$PWD/tests/files/scripts/statistics.py' - statistics_foo_bar [date: 2026-01-01 00:00:00]: @@ -103,6 +119,8 @@ cycles: - analysis_foo_bar [date: 2026-01-01 00:00:00] name: 'statistics_foo_bar' coordinates: {'date': datetime.datetime(2026, 1, 1, 0, 0)} + start date: 2026-01-01 00:00:00 + end date: 2028-01-01 00:00:00 plugin: 'shell' command: '$PWD/tests/files/scripts/statistics.py' - bimonthly_tasks [date: 2026-03-01 00:00:00]: @@ -116,6 +134,8 @@ cycles: - icon_restart [date: 2026-03-01 00:00:00, foo: 0, bar: 3.0] name: 'icon' coordinates: {'date': datetime.datetime(2026, 3, 1, 0, 0), 'foo': 0, 'bar': 3.0} + start date: 2026-01-01 00:00:00 + end date: 2028-01-01 00:00:00 plugin: 'shell' command: '$PWD/tests/files/scripts/icon.py' cli arguments: positional=None keyword={'--restart': 'icon_restart'} flags=None source_file=None @@ -128,6 +148,8 @@ cycles: - icon_restart [date: 2026-03-01 00:00:00, foo: 0, bar: 3.5] name: 'icon' coordinates: {'date': datetime.datetime(2026, 3, 1, 0, 0), 'foo': 0, 'bar': 3.5} + start date: 2026-01-01 00:00:00 + end date: 2028-01-01 00:00:00 plugin: 'shell' command: '$PWD/tests/files/scripts/icon.py' cli arguments: positional=None keyword={'--restart': 'icon_restart'} flags=None source_file=None @@ -140,6 +162,8 @@ cycles: - icon_restart [date: 2026-03-01 00:00:00, foo: 1, bar: 3.0] name: 'icon' coordinates: {'date': datetime.datetime(2026, 3, 1, 0, 0), 'foo': 1, 'bar': 3.0} + start date: 2026-01-01 00:00:00 + end date: 2028-01-01 00:00:00 plugin: 'shell' command: '$PWD/tests/files/scripts/icon.py' cli arguments: positional=None keyword={'--restart': 'icon_restart'} flags=None source_file=None @@ -152,6 +176,8 @@ cycles: - icon_restart [date: 2026-03-01 00:00:00, foo: 1, bar: 3.5] name: 'icon' coordinates: {'date': datetime.datetime(2026, 3, 1, 0, 0), 'foo': 1, 'bar': 3.5} + start date: 2026-01-01 00:00:00 + end date: 2028-01-01 00:00:00 plugin: 'shell' command: '$PWD/tests/files/scripts/icon.py' cli arguments: positional=None keyword={'--restart': 'icon_restart'} flags=None source_file=None @@ -164,6 +190,8 @@ cycles: - icon_restart [date: 2026-03-01 00:00:00, foo: 2, bar: 3.0] name: 'icon' coordinates: {'date': datetime.datetime(2026, 3, 1, 0, 0), 'foo': 2, 'bar': 3.0} + start date: 2026-01-01 00:00:00 + end date: 2028-01-01 00:00:00 plugin: 'shell' command: '$PWD/tests/files/scripts/icon.py' cli arguments: positional=None keyword={'--restart': 'icon_restart'} flags=None source_file=None @@ -176,6 +204,8 @@ cycles: - icon_restart [date: 2026-03-01 00:00:00, foo: 2, bar: 3.5] name: 'icon' coordinates: {'date': datetime.datetime(2026, 3, 1, 0, 0), 'foo': 2, 'bar': 3.5} + start date: 2026-01-01 00:00:00 + end date: 2028-01-01 00:00:00 plugin: 'shell' command: '$PWD/tests/files/scripts/icon.py' cli arguments: positional=None keyword={'--restart': 'icon_restart'} flags=None source_file=None @@ -188,6 +218,8 @@ cycles: - analysis_foo [date: 2026-03-01 00:00:00, bar: 3.0] name: 'statistics_foo' coordinates: {'date': datetime.datetime(2026, 3, 1, 0, 0), 'bar': 3.0} + start date: 2026-01-01 00:00:00 + end date: 2028-01-01 00:00:00 plugin: 'shell' command: '$PWD/tests/files/scripts/statistics.py' - statistics_foo [date: 2026-03-01 00:00:00, bar: 3.5]: @@ -199,6 +231,8 @@ cycles: - analysis_foo [date: 2026-03-01 00:00:00, bar: 3.5] name: 'statistics_foo' coordinates: {'date': datetime.datetime(2026, 3, 1, 0, 0), 'bar': 3.5} + start date: 2026-01-01 00:00:00 + end date: 2028-01-01 00:00:00 plugin: 'shell' command: '$PWD/tests/files/scripts/statistics.py' - statistics_foo_bar [date: 2026-03-01 00:00:00]: @@ -209,6 +243,8 @@ cycles: - analysis_foo_bar [date: 2026-03-01 00:00:00] name: 'statistics_foo_bar' coordinates: {'date': datetime.datetime(2026, 3, 1, 0, 0)} + start date: 2026-01-01 00:00:00 + end date: 2028-01-01 00:00:00 plugin: 'shell' command: '$PWD/tests/files/scripts/statistics.py' - bimonthly_tasks [date: 2026-05-01 00:00:00]: @@ -222,6 +258,8 @@ cycles: - icon_restart [date: 2026-05-01 00:00:00, foo: 0, bar: 3.0] name: 'icon' coordinates: {'date': datetime.datetime(2026, 5, 1, 0, 0), 'foo': 0, 'bar': 3.0} + start date: 2026-01-01 00:00:00 + end date: 2028-01-01 00:00:00 plugin: 'shell' command: '$PWD/tests/files/scripts/icon.py' cli arguments: positional=None keyword={'--restart': 'icon_restart'} flags=None source_file=None @@ -234,6 +272,8 @@ cycles: - icon_restart [date: 2026-05-01 00:00:00, foo: 0, bar: 3.5] name: 'icon' coordinates: {'date': datetime.datetime(2026, 5, 1, 0, 0), 'foo': 0, 'bar': 3.5} + start date: 2026-01-01 00:00:00 + end date: 2028-01-01 00:00:00 plugin: 'shell' command: '$PWD/tests/files/scripts/icon.py' cli arguments: positional=None keyword={'--restart': 'icon_restart'} flags=None source_file=None @@ -246,6 +286,8 @@ cycles: - icon_restart [date: 2026-05-01 00:00:00, foo: 1, bar: 3.0] name: 'icon' coordinates: {'date': datetime.datetime(2026, 5, 1, 0, 0), 'foo': 1, 'bar': 3.0} + start date: 2026-01-01 00:00:00 + end date: 2028-01-01 00:00:00 plugin: 'shell' command: '$PWD/tests/files/scripts/icon.py' cli arguments: positional=None keyword={'--restart': 'icon_restart'} flags=None source_file=None @@ -258,6 +300,8 @@ cycles: - icon_restart [date: 2026-05-01 00:00:00, foo: 1, bar: 3.5] name: 'icon' coordinates: {'date': datetime.datetime(2026, 5, 1, 0, 0), 'foo': 1, 'bar': 3.5} + start date: 2026-01-01 00:00:00 + end date: 2028-01-01 00:00:00 plugin: 'shell' command: '$PWD/tests/files/scripts/icon.py' cli arguments: positional=None keyword={'--restart': 'icon_restart'} flags=None source_file=None @@ -270,6 +314,8 @@ cycles: - icon_restart [date: 2026-05-01 00:00:00, foo: 2, bar: 3.0] name: 'icon' coordinates: {'date': datetime.datetime(2026, 5, 1, 0, 0), 'foo': 2, 'bar': 3.0} + start date: 2026-01-01 00:00:00 + end date: 2028-01-01 00:00:00 plugin: 'shell' command: '$PWD/tests/files/scripts/icon.py' cli arguments: positional=None keyword={'--restart': 'icon_restart'} flags=None source_file=None @@ -282,6 +328,8 @@ cycles: - icon_restart [date: 2026-05-01 00:00:00, foo: 2, bar: 3.5] name: 'icon' coordinates: {'date': datetime.datetime(2026, 5, 1, 0, 0), 'foo': 2, 'bar': 3.5} + start date: 2026-01-01 00:00:00 + end date: 2028-01-01 00:00:00 plugin: 'shell' command: '$PWD/tests/files/scripts/icon.py' cli arguments: positional=None keyword={'--restart': 'icon_restart'} flags=None source_file=None @@ -294,6 +342,8 @@ cycles: - analysis_foo [date: 2026-05-01 00:00:00, bar: 3.0] name: 'statistics_foo' coordinates: {'date': datetime.datetime(2026, 5, 1, 0, 0), 'bar': 3.0} + start date: 2026-01-01 00:00:00 + end date: 2028-01-01 00:00:00 plugin: 'shell' command: '$PWD/tests/files/scripts/statistics.py' - statistics_foo [date: 2026-05-01 00:00:00, bar: 3.5]: @@ -305,6 +355,8 @@ cycles: - analysis_foo [date: 2026-05-01 00:00:00, bar: 3.5] name: 'statistics_foo' coordinates: {'date': datetime.datetime(2026, 5, 1, 0, 0), 'bar': 3.5} + start date: 2026-01-01 00:00:00 + end date: 2028-01-01 00:00:00 plugin: 'shell' command: '$PWD/tests/files/scripts/statistics.py' - statistics_foo_bar [date: 2026-05-01 00:00:00]: @@ -315,6 +367,8 @@ cycles: - analysis_foo_bar [date: 2026-05-01 00:00:00] name: 'statistics_foo_bar' coordinates: {'date': datetime.datetime(2026, 5, 1, 0, 0)} + start date: 2026-01-01 00:00:00 + end date: 2028-01-01 00:00:00 plugin: 'shell' command: '$PWD/tests/files/scripts/statistics.py' - bimonthly_tasks [date: 2026-07-01 00:00:00]: @@ -328,6 +382,8 @@ cycles: - icon_restart [date: 2026-07-01 00:00:00, foo: 0, bar: 3.0] name: 'icon' coordinates: {'date': datetime.datetime(2026, 7, 1, 0, 0), 'foo': 0, 'bar': 3.0} + start date: 2026-01-01 00:00:00 + end date: 2028-01-01 00:00:00 plugin: 'shell' command: '$PWD/tests/files/scripts/icon.py' cli arguments: positional=None keyword={'--restart': 'icon_restart'} flags=None source_file=None @@ -340,6 +396,8 @@ cycles: - icon_restart [date: 2026-07-01 00:00:00, foo: 0, bar: 3.5] name: 'icon' coordinates: {'date': datetime.datetime(2026, 7, 1, 0, 0), 'foo': 0, 'bar': 3.5} + start date: 2026-01-01 00:00:00 + end date: 2028-01-01 00:00:00 plugin: 'shell' command: '$PWD/tests/files/scripts/icon.py' cli arguments: positional=None keyword={'--restart': 'icon_restart'} flags=None source_file=None @@ -352,6 +410,8 @@ cycles: - icon_restart [date: 2026-07-01 00:00:00, foo: 1, bar: 3.0] name: 'icon' coordinates: {'date': datetime.datetime(2026, 7, 1, 0, 0), 'foo': 1, 'bar': 3.0} + start date: 2026-01-01 00:00:00 + end date: 2028-01-01 00:00:00 plugin: 'shell' command: '$PWD/tests/files/scripts/icon.py' cli arguments: positional=None keyword={'--restart': 'icon_restart'} flags=None source_file=None @@ -364,6 +424,8 @@ cycles: - icon_restart [date: 2026-07-01 00:00:00, foo: 1, bar: 3.5] name: 'icon' coordinates: {'date': datetime.datetime(2026, 7, 1, 0, 0), 'foo': 1, 'bar': 3.5} + start date: 2026-01-01 00:00:00 + end date: 2028-01-01 00:00:00 plugin: 'shell' command: '$PWD/tests/files/scripts/icon.py' cli arguments: positional=None keyword={'--restart': 'icon_restart'} flags=None source_file=None @@ -376,6 +438,8 @@ cycles: - icon_restart [date: 2026-07-01 00:00:00, foo: 2, bar: 3.0] name: 'icon' coordinates: {'date': datetime.datetime(2026, 7, 1, 0, 0), 'foo': 2, 'bar': 3.0} + start date: 2026-01-01 00:00:00 + end date: 2028-01-01 00:00:00 plugin: 'shell' command: '$PWD/tests/files/scripts/icon.py' cli arguments: positional=None keyword={'--restart': 'icon_restart'} flags=None source_file=None @@ -388,6 +452,8 @@ cycles: - icon_restart [date: 2026-07-01 00:00:00, foo: 2, bar: 3.5] name: 'icon' coordinates: {'date': datetime.datetime(2026, 7, 1, 0, 0), 'foo': 2, 'bar': 3.5} + start date: 2026-01-01 00:00:00 + end date: 2028-01-01 00:00:00 plugin: 'shell' command: '$PWD/tests/files/scripts/icon.py' cli arguments: positional=None keyword={'--restart': 'icon_restart'} flags=None source_file=None @@ -400,6 +466,8 @@ cycles: - analysis_foo [date: 2026-07-01 00:00:00, bar: 3.0] name: 'statistics_foo' coordinates: {'date': datetime.datetime(2026, 7, 1, 0, 0), 'bar': 3.0} + start date: 2026-01-01 00:00:00 + end date: 2028-01-01 00:00:00 plugin: 'shell' command: '$PWD/tests/files/scripts/statistics.py' - statistics_foo [date: 2026-07-01 00:00:00, bar: 3.5]: @@ -411,6 +479,8 @@ cycles: - analysis_foo [date: 2026-07-01 00:00:00, bar: 3.5] name: 'statistics_foo' coordinates: {'date': datetime.datetime(2026, 7, 1, 0, 0), 'bar': 3.5} + start date: 2026-01-01 00:00:00 + end date: 2028-01-01 00:00:00 plugin: 'shell' command: '$PWD/tests/files/scripts/statistics.py' - statistics_foo_bar [date: 2026-07-01 00:00:00]: @@ -421,6 +491,8 @@ cycles: - analysis_foo_bar [date: 2026-07-01 00:00:00] name: 'statistics_foo_bar' coordinates: {'date': datetime.datetime(2026, 7, 1, 0, 0)} + start date: 2026-01-01 00:00:00 + end date: 2028-01-01 00:00:00 plugin: 'shell' command: '$PWD/tests/files/scripts/statistics.py' - bimonthly_tasks [date: 2026-09-01 00:00:00]: @@ -434,6 +506,8 @@ cycles: - icon_restart [date: 2026-09-01 00:00:00, foo: 0, bar: 3.0] name: 'icon' coordinates: {'date': datetime.datetime(2026, 9, 1, 0, 0), 'foo': 0, 'bar': 3.0} + start date: 2026-01-01 00:00:00 + end date: 2028-01-01 00:00:00 plugin: 'shell' command: '$PWD/tests/files/scripts/icon.py' cli arguments: positional=None keyword={'--restart': 'icon_restart'} flags=None source_file=None @@ -446,6 +520,8 @@ cycles: - icon_restart [date: 2026-09-01 00:00:00, foo: 0, bar: 3.5] name: 'icon' coordinates: {'date': datetime.datetime(2026, 9, 1, 0, 0), 'foo': 0, 'bar': 3.5} + start date: 2026-01-01 00:00:00 + end date: 2028-01-01 00:00:00 plugin: 'shell' command: '$PWD/tests/files/scripts/icon.py' cli arguments: positional=None keyword={'--restart': 'icon_restart'} flags=None source_file=None @@ -458,6 +534,8 @@ cycles: - icon_restart [date: 2026-09-01 00:00:00, foo: 1, bar: 3.0] name: 'icon' coordinates: {'date': datetime.datetime(2026, 9, 1, 0, 0), 'foo': 1, 'bar': 3.0} + start date: 2026-01-01 00:00:00 + end date: 2028-01-01 00:00:00 plugin: 'shell' command: '$PWD/tests/files/scripts/icon.py' cli arguments: positional=None keyword={'--restart': 'icon_restart'} flags=None source_file=None @@ -470,6 +548,8 @@ cycles: - icon_restart [date: 2026-09-01 00:00:00, foo: 1, bar: 3.5] name: 'icon' coordinates: {'date': datetime.datetime(2026, 9, 1, 0, 0), 'foo': 1, 'bar': 3.5} + start date: 2026-01-01 00:00:00 + end date: 2028-01-01 00:00:00 plugin: 'shell' command: '$PWD/tests/files/scripts/icon.py' cli arguments: positional=None keyword={'--restart': 'icon_restart'} flags=None source_file=None @@ -482,6 +562,8 @@ cycles: - icon_restart [date: 2026-09-01 00:00:00, foo: 2, bar: 3.0] name: 'icon' coordinates: {'date': datetime.datetime(2026, 9, 1, 0, 0), 'foo': 2, 'bar': 3.0} + start date: 2026-01-01 00:00:00 + end date: 2028-01-01 00:00:00 plugin: 'shell' command: '$PWD/tests/files/scripts/icon.py' cli arguments: positional=None keyword={'--restart': 'icon_restart'} flags=None source_file=None @@ -494,6 +576,8 @@ cycles: - icon_restart [date: 2026-09-01 00:00:00, foo: 2, bar: 3.5] name: 'icon' coordinates: {'date': datetime.datetime(2026, 9, 1, 0, 0), 'foo': 2, 'bar': 3.5} + start date: 2026-01-01 00:00:00 + end date: 2028-01-01 00:00:00 plugin: 'shell' command: '$PWD/tests/files/scripts/icon.py' cli arguments: positional=None keyword={'--restart': 'icon_restart'} flags=None source_file=None @@ -506,6 +590,8 @@ cycles: - analysis_foo [date: 2026-09-01 00:00:00, bar: 3.0] name: 'statistics_foo' coordinates: {'date': datetime.datetime(2026, 9, 1, 0, 0), 'bar': 3.0} + start date: 2026-01-01 00:00:00 + end date: 2028-01-01 00:00:00 plugin: 'shell' command: '$PWD/tests/files/scripts/statistics.py' - statistics_foo [date: 2026-09-01 00:00:00, bar: 3.5]: @@ -517,6 +603,8 @@ cycles: - analysis_foo [date: 2026-09-01 00:00:00, bar: 3.5] name: 'statistics_foo' coordinates: {'date': datetime.datetime(2026, 9, 1, 0, 0), 'bar': 3.5} + start date: 2026-01-01 00:00:00 + end date: 2028-01-01 00:00:00 plugin: 'shell' command: '$PWD/tests/files/scripts/statistics.py' - statistics_foo_bar [date: 2026-09-01 00:00:00]: @@ -527,6 +615,8 @@ cycles: - analysis_foo_bar [date: 2026-09-01 00:00:00] name: 'statistics_foo_bar' coordinates: {'date': datetime.datetime(2026, 9, 1, 0, 0)} + start date: 2026-01-01 00:00:00 + end date: 2028-01-01 00:00:00 plugin: 'shell' command: '$PWD/tests/files/scripts/statistics.py' - bimonthly_tasks [date: 2026-11-01 00:00:00]: @@ -540,6 +630,8 @@ cycles: - icon_restart [date: 2026-11-01 00:00:00, foo: 0, bar: 3.0] name: 'icon' coordinates: {'date': datetime.datetime(2026, 11, 1, 0, 0), 'foo': 0, 'bar': 3.0} + start date: 2026-01-01 00:00:00 + end date: 2028-01-01 00:00:00 plugin: 'shell' command: '$PWD/tests/files/scripts/icon.py' cli arguments: positional=None keyword={'--restart': 'icon_restart'} flags=None source_file=None @@ -552,6 +644,8 @@ cycles: - icon_restart [date: 2026-11-01 00:00:00, foo: 0, bar: 3.5] name: 'icon' coordinates: {'date': datetime.datetime(2026, 11, 1, 0, 0), 'foo': 0, 'bar': 3.5} + start date: 2026-01-01 00:00:00 + end date: 2028-01-01 00:00:00 plugin: 'shell' command: '$PWD/tests/files/scripts/icon.py' cli arguments: positional=None keyword={'--restart': 'icon_restart'} flags=None source_file=None @@ -564,6 +658,8 @@ cycles: - icon_restart [date: 2026-11-01 00:00:00, foo: 1, bar: 3.0] name: 'icon' coordinates: {'date': datetime.datetime(2026, 11, 1, 0, 0), 'foo': 1, 'bar': 3.0} + start date: 2026-01-01 00:00:00 + end date: 2028-01-01 00:00:00 plugin: 'shell' command: '$PWD/tests/files/scripts/icon.py' cli arguments: positional=None keyword={'--restart': 'icon_restart'} flags=None source_file=None @@ -576,6 +672,8 @@ cycles: - icon_restart [date: 2026-11-01 00:00:00, foo: 1, bar: 3.5] name: 'icon' coordinates: {'date': datetime.datetime(2026, 11, 1, 0, 0), 'foo': 1, 'bar': 3.5} + start date: 2026-01-01 00:00:00 + end date: 2028-01-01 00:00:00 plugin: 'shell' command: '$PWD/tests/files/scripts/icon.py' cli arguments: positional=None keyword={'--restart': 'icon_restart'} flags=None source_file=None @@ -588,6 +686,8 @@ cycles: - icon_restart [date: 2026-11-01 00:00:00, foo: 2, bar: 3.0] name: 'icon' coordinates: {'date': datetime.datetime(2026, 11, 1, 0, 0), 'foo': 2, 'bar': 3.0} + start date: 2026-01-01 00:00:00 + end date: 2028-01-01 00:00:00 plugin: 'shell' command: '$PWD/tests/files/scripts/icon.py' cli arguments: positional=None keyword={'--restart': 'icon_restart'} flags=None source_file=None @@ -600,6 +700,8 @@ cycles: - icon_restart [date: 2026-11-01 00:00:00, foo: 2, bar: 3.5] name: 'icon' coordinates: {'date': datetime.datetime(2026, 11, 1, 0, 0), 'foo': 2, 'bar': 3.5} + start date: 2026-01-01 00:00:00 + end date: 2028-01-01 00:00:00 plugin: 'shell' command: '$PWD/tests/files/scripts/icon.py' cli arguments: positional=None keyword={'--restart': 'icon_restart'} flags=None source_file=None @@ -612,6 +714,8 @@ cycles: - analysis_foo [date: 2026-11-01 00:00:00, bar: 3.0] name: 'statistics_foo' coordinates: {'date': datetime.datetime(2026, 11, 1, 0, 0), 'bar': 3.0} + start date: 2026-01-01 00:00:00 + end date: 2028-01-01 00:00:00 plugin: 'shell' command: '$PWD/tests/files/scripts/statistics.py' - statistics_foo [date: 2026-11-01 00:00:00, bar: 3.5]: @@ -623,6 +727,8 @@ cycles: - analysis_foo [date: 2026-11-01 00:00:00, bar: 3.5] name: 'statistics_foo' coordinates: {'date': datetime.datetime(2026, 11, 1, 0, 0), 'bar': 3.5} + start date: 2026-01-01 00:00:00 + end date: 2028-01-01 00:00:00 plugin: 'shell' command: '$PWD/tests/files/scripts/statistics.py' - statistics_foo_bar [date: 2026-11-01 00:00:00]: @@ -633,6 +739,8 @@ cycles: - analysis_foo_bar [date: 2026-11-01 00:00:00] name: 'statistics_foo_bar' coordinates: {'date': datetime.datetime(2026, 11, 1, 0, 0)} + start date: 2026-01-01 00:00:00 + end date: 2028-01-01 00:00:00 plugin: 'shell' command: '$PWD/tests/files/scripts/statistics.py' - bimonthly_tasks [date: 2027-01-01 00:00:00]: @@ -646,6 +754,8 @@ cycles: - icon_restart [date: 2027-01-01 00:00:00, foo: 0, bar: 3.0] name: 'icon' coordinates: {'date': datetime.datetime(2027, 1, 1, 0, 0), 'foo': 0, 'bar': 3.0} + start date: 2026-01-01 00:00:00 + end date: 2028-01-01 00:00:00 plugin: 'shell' command: '$PWD/tests/files/scripts/icon.py' cli arguments: positional=None keyword={'--restart': 'icon_restart'} flags=None source_file=None @@ -658,6 +768,8 @@ cycles: - icon_restart [date: 2027-01-01 00:00:00, foo: 0, bar: 3.5] name: 'icon' coordinates: {'date': datetime.datetime(2027, 1, 1, 0, 0), 'foo': 0, 'bar': 3.5} + start date: 2026-01-01 00:00:00 + end date: 2028-01-01 00:00:00 plugin: 'shell' command: '$PWD/tests/files/scripts/icon.py' cli arguments: positional=None keyword={'--restart': 'icon_restart'} flags=None source_file=None @@ -670,6 +782,8 @@ cycles: - icon_restart [date: 2027-01-01 00:00:00, foo: 1, bar: 3.0] name: 'icon' coordinates: {'date': datetime.datetime(2027, 1, 1, 0, 0), 'foo': 1, 'bar': 3.0} + start date: 2026-01-01 00:00:00 + end date: 2028-01-01 00:00:00 plugin: 'shell' command: '$PWD/tests/files/scripts/icon.py' cli arguments: positional=None keyword={'--restart': 'icon_restart'} flags=None source_file=None @@ -682,6 +796,8 @@ cycles: - icon_restart [date: 2027-01-01 00:00:00, foo: 1, bar: 3.5] name: 'icon' coordinates: {'date': datetime.datetime(2027, 1, 1, 0, 0), 'foo': 1, 'bar': 3.5} + start date: 2026-01-01 00:00:00 + end date: 2028-01-01 00:00:00 plugin: 'shell' command: '$PWD/tests/files/scripts/icon.py' cli arguments: positional=None keyword={'--restart': 'icon_restart'} flags=None source_file=None @@ -694,6 +810,8 @@ cycles: - icon_restart [date: 2027-01-01 00:00:00, foo: 2, bar: 3.0] name: 'icon' coordinates: {'date': datetime.datetime(2027, 1, 1, 0, 0), 'foo': 2, 'bar': 3.0} + start date: 2026-01-01 00:00:00 + end date: 2028-01-01 00:00:00 plugin: 'shell' command: '$PWD/tests/files/scripts/icon.py' cli arguments: positional=None keyword={'--restart': 'icon_restart'} flags=None source_file=None @@ -706,6 +824,8 @@ cycles: - icon_restart [date: 2027-01-01 00:00:00, foo: 2, bar: 3.5] name: 'icon' coordinates: {'date': datetime.datetime(2027, 1, 1, 0, 0), 'foo': 2, 'bar': 3.5} + start date: 2026-01-01 00:00:00 + end date: 2028-01-01 00:00:00 plugin: 'shell' command: '$PWD/tests/files/scripts/icon.py' cli arguments: positional=None keyword={'--restart': 'icon_restart'} flags=None source_file=None @@ -718,6 +838,8 @@ cycles: - analysis_foo [date: 2027-01-01 00:00:00, bar: 3.0] name: 'statistics_foo' coordinates: {'date': datetime.datetime(2027, 1, 1, 0, 0), 'bar': 3.0} + start date: 2026-01-01 00:00:00 + end date: 2028-01-01 00:00:00 plugin: 'shell' command: '$PWD/tests/files/scripts/statistics.py' - statistics_foo [date: 2027-01-01 00:00:00, bar: 3.5]: @@ -729,6 +851,8 @@ cycles: - analysis_foo [date: 2027-01-01 00:00:00, bar: 3.5] name: 'statistics_foo' coordinates: {'date': datetime.datetime(2027, 1, 1, 0, 0), 'bar': 3.5} + start date: 2026-01-01 00:00:00 + end date: 2028-01-01 00:00:00 plugin: 'shell' command: '$PWD/tests/files/scripts/statistics.py' - statistics_foo_bar [date: 2027-01-01 00:00:00]: @@ -739,6 +863,8 @@ cycles: - analysis_foo_bar [date: 2027-01-01 00:00:00] name: 'statistics_foo_bar' coordinates: {'date': datetime.datetime(2027, 1, 1, 0, 0)} + start date: 2026-01-01 00:00:00 + end date: 2028-01-01 00:00:00 plugin: 'shell' command: '$PWD/tests/files/scripts/statistics.py' - bimonthly_tasks [date: 2027-03-01 00:00:00]: @@ -752,6 +878,8 @@ cycles: - icon_restart [date: 2027-03-01 00:00:00, foo: 0, bar: 3.0] name: 'icon' coordinates: {'date': datetime.datetime(2027, 3, 1, 0, 0), 'foo': 0, 'bar': 3.0} + start date: 2026-01-01 00:00:00 + end date: 2028-01-01 00:00:00 plugin: 'shell' command: '$PWD/tests/files/scripts/icon.py' cli arguments: positional=None keyword={'--restart': 'icon_restart'} flags=None source_file=None @@ -764,6 +892,8 @@ cycles: - icon_restart [date: 2027-03-01 00:00:00, foo: 0, bar: 3.5] name: 'icon' coordinates: {'date': datetime.datetime(2027, 3, 1, 0, 0), 'foo': 0, 'bar': 3.5} + start date: 2026-01-01 00:00:00 + end date: 2028-01-01 00:00:00 plugin: 'shell' command: '$PWD/tests/files/scripts/icon.py' cli arguments: positional=None keyword={'--restart': 'icon_restart'} flags=None source_file=None @@ -776,6 +906,8 @@ cycles: - icon_restart [date: 2027-03-01 00:00:00, foo: 1, bar: 3.0] name: 'icon' coordinates: {'date': datetime.datetime(2027, 3, 1, 0, 0), 'foo': 1, 'bar': 3.0} + start date: 2026-01-01 00:00:00 + end date: 2028-01-01 00:00:00 plugin: 'shell' command: '$PWD/tests/files/scripts/icon.py' cli arguments: positional=None keyword={'--restart': 'icon_restart'} flags=None source_file=None @@ -788,6 +920,8 @@ cycles: - icon_restart [date: 2027-03-01 00:00:00, foo: 1, bar: 3.5] name: 'icon' coordinates: {'date': datetime.datetime(2027, 3, 1, 0, 0), 'foo': 1, 'bar': 3.5} + start date: 2026-01-01 00:00:00 + end date: 2028-01-01 00:00:00 plugin: 'shell' command: '$PWD/tests/files/scripts/icon.py' cli arguments: positional=None keyword={'--restart': 'icon_restart'} flags=None source_file=None @@ -800,6 +934,8 @@ cycles: - icon_restart [date: 2027-03-01 00:00:00, foo: 2, bar: 3.0] name: 'icon' coordinates: {'date': datetime.datetime(2027, 3, 1, 0, 0), 'foo': 2, 'bar': 3.0} + start date: 2026-01-01 00:00:00 + end date: 2028-01-01 00:00:00 plugin: 'shell' command: '$PWD/tests/files/scripts/icon.py' cli arguments: positional=None keyword={'--restart': 'icon_restart'} flags=None source_file=None @@ -812,6 +948,8 @@ cycles: - icon_restart [date: 2027-03-01 00:00:00, foo: 2, bar: 3.5] name: 'icon' coordinates: {'date': datetime.datetime(2027, 3, 1, 0, 0), 'foo': 2, 'bar': 3.5} + start date: 2026-01-01 00:00:00 + end date: 2028-01-01 00:00:00 plugin: 'shell' command: '$PWD/tests/files/scripts/icon.py' cli arguments: positional=None keyword={'--restart': 'icon_restart'} flags=None source_file=None @@ -824,6 +962,8 @@ cycles: - analysis_foo [date: 2027-03-01 00:00:00, bar: 3.0] name: 'statistics_foo' coordinates: {'date': datetime.datetime(2027, 3, 1, 0, 0), 'bar': 3.0} + start date: 2026-01-01 00:00:00 + end date: 2028-01-01 00:00:00 plugin: 'shell' command: '$PWD/tests/files/scripts/statistics.py' - statistics_foo [date: 2027-03-01 00:00:00, bar: 3.5]: @@ -835,6 +975,8 @@ cycles: - analysis_foo [date: 2027-03-01 00:00:00, bar: 3.5] name: 'statistics_foo' coordinates: {'date': datetime.datetime(2027, 3, 1, 0, 0), 'bar': 3.5} + start date: 2026-01-01 00:00:00 + end date: 2028-01-01 00:00:00 plugin: 'shell' command: '$PWD/tests/files/scripts/statistics.py' - statistics_foo_bar [date: 2027-03-01 00:00:00]: @@ -845,6 +987,8 @@ cycles: - analysis_foo_bar [date: 2027-03-01 00:00:00] name: 'statistics_foo_bar' coordinates: {'date': datetime.datetime(2027, 3, 1, 0, 0)} + start date: 2026-01-01 00:00:00 + end date: 2028-01-01 00:00:00 plugin: 'shell' command: '$PWD/tests/files/scripts/statistics.py' - bimonthly_tasks [date: 2027-05-01 00:00:00]: @@ -858,6 +1002,8 @@ cycles: - icon_restart [date: 2027-05-01 00:00:00, foo: 0, bar: 3.0] name: 'icon' coordinates: {'date': datetime.datetime(2027, 5, 1, 0, 0), 'foo': 0, 'bar': 3.0} + start date: 2026-01-01 00:00:00 + end date: 2028-01-01 00:00:00 plugin: 'shell' command: '$PWD/tests/files/scripts/icon.py' cli arguments: positional=None keyword={'--restart': 'icon_restart'} flags=None source_file=None @@ -870,6 +1016,8 @@ cycles: - icon_restart [date: 2027-05-01 00:00:00, foo: 0, bar: 3.5] name: 'icon' coordinates: {'date': datetime.datetime(2027, 5, 1, 0, 0), 'foo': 0, 'bar': 3.5} + start date: 2026-01-01 00:00:00 + end date: 2028-01-01 00:00:00 plugin: 'shell' command: '$PWD/tests/files/scripts/icon.py' cli arguments: positional=None keyword={'--restart': 'icon_restart'} flags=None source_file=None @@ -882,6 +1030,8 @@ cycles: - icon_restart [date: 2027-05-01 00:00:00, foo: 1, bar: 3.0] name: 'icon' coordinates: {'date': datetime.datetime(2027, 5, 1, 0, 0), 'foo': 1, 'bar': 3.0} + start date: 2026-01-01 00:00:00 + end date: 2028-01-01 00:00:00 plugin: 'shell' command: '$PWD/tests/files/scripts/icon.py' cli arguments: positional=None keyword={'--restart': 'icon_restart'} flags=None source_file=None @@ -894,6 +1044,8 @@ cycles: - icon_restart [date: 2027-05-01 00:00:00, foo: 1, bar: 3.5] name: 'icon' coordinates: {'date': datetime.datetime(2027, 5, 1, 0, 0), 'foo': 1, 'bar': 3.5} + start date: 2026-01-01 00:00:00 + end date: 2028-01-01 00:00:00 plugin: 'shell' command: '$PWD/tests/files/scripts/icon.py' cli arguments: positional=None keyword={'--restart': 'icon_restart'} flags=None source_file=None @@ -906,6 +1058,8 @@ cycles: - icon_restart [date: 2027-05-01 00:00:00, foo: 2, bar: 3.0] name: 'icon' coordinates: {'date': datetime.datetime(2027, 5, 1, 0, 0), 'foo': 2, 'bar': 3.0} + start date: 2026-01-01 00:00:00 + end date: 2028-01-01 00:00:00 plugin: 'shell' command: '$PWD/tests/files/scripts/icon.py' cli arguments: positional=None keyword={'--restart': 'icon_restart'} flags=None source_file=None @@ -918,6 +1072,8 @@ cycles: - icon_restart [date: 2027-05-01 00:00:00, foo: 2, bar: 3.5] name: 'icon' coordinates: {'date': datetime.datetime(2027, 5, 1, 0, 0), 'foo': 2, 'bar': 3.5} + start date: 2026-01-01 00:00:00 + end date: 2028-01-01 00:00:00 plugin: 'shell' command: '$PWD/tests/files/scripts/icon.py' cli arguments: positional=None keyword={'--restart': 'icon_restart'} flags=None source_file=None @@ -930,6 +1086,8 @@ cycles: - analysis_foo [date: 2027-05-01 00:00:00, bar: 3.0] name: 'statistics_foo' coordinates: {'date': datetime.datetime(2027, 5, 1, 0, 0), 'bar': 3.0} + start date: 2026-01-01 00:00:00 + end date: 2028-01-01 00:00:00 plugin: 'shell' command: '$PWD/tests/files/scripts/statistics.py' - statistics_foo [date: 2027-05-01 00:00:00, bar: 3.5]: @@ -941,6 +1099,8 @@ cycles: - analysis_foo [date: 2027-05-01 00:00:00, bar: 3.5] name: 'statistics_foo' coordinates: {'date': datetime.datetime(2027, 5, 1, 0, 0), 'bar': 3.5} + start date: 2026-01-01 00:00:00 + end date: 2028-01-01 00:00:00 plugin: 'shell' command: '$PWD/tests/files/scripts/statistics.py' - statistics_foo_bar [date: 2027-05-01 00:00:00]: @@ -951,6 +1111,8 @@ cycles: - analysis_foo_bar [date: 2027-05-01 00:00:00] name: 'statistics_foo_bar' coordinates: {'date': datetime.datetime(2027, 5, 1, 0, 0)} + start date: 2026-01-01 00:00:00 + end date: 2028-01-01 00:00:00 plugin: 'shell' command: '$PWD/tests/files/scripts/statistics.py' - bimonthly_tasks [date: 2027-07-01 00:00:00]: @@ -964,6 +1126,8 @@ cycles: - icon_restart [date: 2027-07-01 00:00:00, foo: 0, bar: 3.0] name: 'icon' coordinates: {'date': datetime.datetime(2027, 7, 1, 0, 0), 'foo': 0, 'bar': 3.0} + start date: 2026-01-01 00:00:00 + end date: 2028-01-01 00:00:00 plugin: 'shell' command: '$PWD/tests/files/scripts/icon.py' cli arguments: positional=None keyword={'--restart': 'icon_restart'} flags=None source_file=None @@ -976,6 +1140,8 @@ cycles: - icon_restart [date: 2027-07-01 00:00:00, foo: 0, bar: 3.5] name: 'icon' coordinates: {'date': datetime.datetime(2027, 7, 1, 0, 0), 'foo': 0, 'bar': 3.5} + start date: 2026-01-01 00:00:00 + end date: 2028-01-01 00:00:00 plugin: 'shell' command: '$PWD/tests/files/scripts/icon.py' cli arguments: positional=None keyword={'--restart': 'icon_restart'} flags=None source_file=None @@ -988,6 +1154,8 @@ cycles: - icon_restart [date: 2027-07-01 00:00:00, foo: 1, bar: 3.0] name: 'icon' coordinates: {'date': datetime.datetime(2027, 7, 1, 0, 0), 'foo': 1, 'bar': 3.0} + start date: 2026-01-01 00:00:00 + end date: 2028-01-01 00:00:00 plugin: 'shell' command: '$PWD/tests/files/scripts/icon.py' cli arguments: positional=None keyword={'--restart': 'icon_restart'} flags=None source_file=None @@ -1000,6 +1168,8 @@ cycles: - icon_restart [date: 2027-07-01 00:00:00, foo: 1, bar: 3.5] name: 'icon' coordinates: {'date': datetime.datetime(2027, 7, 1, 0, 0), 'foo': 1, 'bar': 3.5} + start date: 2026-01-01 00:00:00 + end date: 2028-01-01 00:00:00 plugin: 'shell' command: '$PWD/tests/files/scripts/icon.py' cli arguments: positional=None keyword={'--restart': 'icon_restart'} flags=None source_file=None @@ -1012,6 +1182,8 @@ cycles: - icon_restart [date: 2027-07-01 00:00:00, foo: 2, bar: 3.0] name: 'icon' coordinates: {'date': datetime.datetime(2027, 7, 1, 0, 0), 'foo': 2, 'bar': 3.0} + start date: 2026-01-01 00:00:00 + end date: 2028-01-01 00:00:00 plugin: 'shell' command: '$PWD/tests/files/scripts/icon.py' cli arguments: positional=None keyword={'--restart': 'icon_restart'} flags=None source_file=None @@ -1024,6 +1196,8 @@ cycles: - icon_restart [date: 2027-07-01 00:00:00, foo: 2, bar: 3.5] name: 'icon' coordinates: {'date': datetime.datetime(2027, 7, 1, 0, 0), 'foo': 2, 'bar': 3.5} + start date: 2026-01-01 00:00:00 + end date: 2028-01-01 00:00:00 plugin: 'shell' command: '$PWD/tests/files/scripts/icon.py' cli arguments: positional=None keyword={'--restart': 'icon_restart'} flags=None source_file=None @@ -1036,6 +1210,8 @@ cycles: - analysis_foo [date: 2027-07-01 00:00:00, bar: 3.0] name: 'statistics_foo' coordinates: {'date': datetime.datetime(2027, 7, 1, 0, 0), 'bar': 3.0} + start date: 2026-01-01 00:00:00 + end date: 2028-01-01 00:00:00 plugin: 'shell' command: '$PWD/tests/files/scripts/statistics.py' - statistics_foo [date: 2027-07-01 00:00:00, bar: 3.5]: @@ -1047,6 +1223,8 @@ cycles: - analysis_foo [date: 2027-07-01 00:00:00, bar: 3.5] name: 'statistics_foo' coordinates: {'date': datetime.datetime(2027, 7, 1, 0, 0), 'bar': 3.5} + start date: 2026-01-01 00:00:00 + end date: 2028-01-01 00:00:00 plugin: 'shell' command: '$PWD/tests/files/scripts/statistics.py' - statistics_foo_bar [date: 2027-07-01 00:00:00]: @@ -1057,6 +1235,8 @@ cycles: - analysis_foo_bar [date: 2027-07-01 00:00:00] name: 'statistics_foo_bar' coordinates: {'date': datetime.datetime(2027, 7, 1, 0, 0)} + start date: 2026-01-01 00:00:00 + end date: 2028-01-01 00:00:00 plugin: 'shell' command: '$PWD/tests/files/scripts/statistics.py' - bimonthly_tasks [date: 2027-09-01 00:00:00]: @@ -1070,6 +1250,8 @@ cycles: - icon_restart [date: 2027-09-01 00:00:00, foo: 0, bar: 3.0] name: 'icon' coordinates: {'date': datetime.datetime(2027, 9, 1, 0, 0), 'foo': 0, 'bar': 3.0} + start date: 2026-01-01 00:00:00 + end date: 2028-01-01 00:00:00 plugin: 'shell' command: '$PWD/tests/files/scripts/icon.py' cli arguments: positional=None keyword={'--restart': 'icon_restart'} flags=None source_file=None @@ -1082,6 +1264,8 @@ cycles: - icon_restart [date: 2027-09-01 00:00:00, foo: 0, bar: 3.5] name: 'icon' coordinates: {'date': datetime.datetime(2027, 9, 1, 0, 0), 'foo': 0, 'bar': 3.5} + start date: 2026-01-01 00:00:00 + end date: 2028-01-01 00:00:00 plugin: 'shell' command: '$PWD/tests/files/scripts/icon.py' cli arguments: positional=None keyword={'--restart': 'icon_restart'} flags=None source_file=None @@ -1094,6 +1278,8 @@ cycles: - icon_restart [date: 2027-09-01 00:00:00, foo: 1, bar: 3.0] name: 'icon' coordinates: {'date': datetime.datetime(2027, 9, 1, 0, 0), 'foo': 1, 'bar': 3.0} + start date: 2026-01-01 00:00:00 + end date: 2028-01-01 00:00:00 plugin: 'shell' command: '$PWD/tests/files/scripts/icon.py' cli arguments: positional=None keyword={'--restart': 'icon_restart'} flags=None source_file=None @@ -1106,6 +1292,8 @@ cycles: - icon_restart [date: 2027-09-01 00:00:00, foo: 1, bar: 3.5] name: 'icon' coordinates: {'date': datetime.datetime(2027, 9, 1, 0, 0), 'foo': 1, 'bar': 3.5} + start date: 2026-01-01 00:00:00 + end date: 2028-01-01 00:00:00 plugin: 'shell' command: '$PWD/tests/files/scripts/icon.py' cli arguments: positional=None keyword={'--restart': 'icon_restart'} flags=None source_file=None @@ -1118,6 +1306,8 @@ cycles: - icon_restart [date: 2027-09-01 00:00:00, foo: 2, bar: 3.0] name: 'icon' coordinates: {'date': datetime.datetime(2027, 9, 1, 0, 0), 'foo': 2, 'bar': 3.0} + start date: 2026-01-01 00:00:00 + end date: 2028-01-01 00:00:00 plugin: 'shell' command: '$PWD/tests/files/scripts/icon.py' cli arguments: positional=None keyword={'--restart': 'icon_restart'} flags=None source_file=None @@ -1130,6 +1320,8 @@ cycles: - icon_restart [date: 2027-09-01 00:00:00, foo: 2, bar: 3.5] name: 'icon' coordinates: {'date': datetime.datetime(2027, 9, 1, 0, 0), 'foo': 2, 'bar': 3.5} + start date: 2026-01-01 00:00:00 + end date: 2028-01-01 00:00:00 plugin: 'shell' command: '$PWD/tests/files/scripts/icon.py' cli arguments: positional=None keyword={'--restart': 'icon_restart'} flags=None source_file=None @@ -1142,6 +1334,8 @@ cycles: - analysis_foo [date: 2027-09-01 00:00:00, bar: 3.0] name: 'statistics_foo' coordinates: {'date': datetime.datetime(2027, 9, 1, 0, 0), 'bar': 3.0} + start date: 2026-01-01 00:00:00 + end date: 2028-01-01 00:00:00 plugin: 'shell' command: '$PWD/tests/files/scripts/statistics.py' - statistics_foo [date: 2027-09-01 00:00:00, bar: 3.5]: @@ -1153,6 +1347,8 @@ cycles: - analysis_foo [date: 2027-09-01 00:00:00, bar: 3.5] name: 'statistics_foo' coordinates: {'date': datetime.datetime(2027, 9, 1, 0, 0), 'bar': 3.5} + start date: 2026-01-01 00:00:00 + end date: 2028-01-01 00:00:00 plugin: 'shell' command: '$PWD/tests/files/scripts/statistics.py' - statistics_foo_bar [date: 2027-09-01 00:00:00]: @@ -1163,6 +1359,8 @@ cycles: - analysis_foo_bar [date: 2027-09-01 00:00:00] name: 'statistics_foo_bar' coordinates: {'date': datetime.datetime(2027, 9, 1, 0, 0)} + start date: 2026-01-01 00:00:00 + end date: 2028-01-01 00:00:00 plugin: 'shell' command: '$PWD/tests/files/scripts/statistics.py' - bimonthly_tasks [date: 2027-11-01 00:00:00]: @@ -1176,6 +1374,8 @@ cycles: - icon_restart [date: 2027-11-01 00:00:00, foo: 0, bar: 3.0] name: 'icon' coordinates: {'date': datetime.datetime(2027, 11, 1, 0, 0), 'foo': 0, 'bar': 3.0} + start date: 2026-01-01 00:00:00 + end date: 2028-01-01 00:00:00 plugin: 'shell' command: '$PWD/tests/files/scripts/icon.py' cli arguments: positional=None keyword={'--restart': 'icon_restart'} flags=None source_file=None @@ -1188,6 +1388,8 @@ cycles: - icon_restart [date: 2027-11-01 00:00:00, foo: 0, bar: 3.5] name: 'icon' coordinates: {'date': datetime.datetime(2027, 11, 1, 0, 0), 'foo': 0, 'bar': 3.5} + start date: 2026-01-01 00:00:00 + end date: 2028-01-01 00:00:00 plugin: 'shell' command: '$PWD/tests/files/scripts/icon.py' cli arguments: positional=None keyword={'--restart': 'icon_restart'} flags=None source_file=None @@ -1200,6 +1402,8 @@ cycles: - icon_restart [date: 2027-11-01 00:00:00, foo: 1, bar: 3.0] name: 'icon' coordinates: {'date': datetime.datetime(2027, 11, 1, 0, 0), 'foo': 1, 'bar': 3.0} + start date: 2026-01-01 00:00:00 + end date: 2028-01-01 00:00:00 plugin: 'shell' command: '$PWD/tests/files/scripts/icon.py' cli arguments: positional=None keyword={'--restart': 'icon_restart'} flags=None source_file=None @@ -1212,6 +1416,8 @@ cycles: - icon_restart [date: 2027-11-01 00:00:00, foo: 1, bar: 3.5] name: 'icon' coordinates: {'date': datetime.datetime(2027, 11, 1, 0, 0), 'foo': 1, 'bar': 3.5} + start date: 2026-01-01 00:00:00 + end date: 2028-01-01 00:00:00 plugin: 'shell' command: '$PWD/tests/files/scripts/icon.py' cli arguments: positional=None keyword={'--restart': 'icon_restart'} flags=None source_file=None @@ -1224,6 +1430,8 @@ cycles: - icon_restart [date: 2027-11-01 00:00:00, foo: 2, bar: 3.0] name: 'icon' coordinates: {'date': datetime.datetime(2027, 11, 1, 0, 0), 'foo': 2, 'bar': 3.0} + start date: 2026-01-01 00:00:00 + end date: 2028-01-01 00:00:00 plugin: 'shell' command: '$PWD/tests/files/scripts/icon.py' cli arguments: positional=None keyword={'--restart': 'icon_restart'} flags=None source_file=None @@ -1236,6 +1444,8 @@ cycles: - icon_restart [date: 2027-11-01 00:00:00, foo: 2, bar: 3.5] name: 'icon' coordinates: {'date': datetime.datetime(2027, 11, 1, 0, 0), 'foo': 2, 'bar': 3.5} + start date: 2026-01-01 00:00:00 + end date: 2028-01-01 00:00:00 plugin: 'shell' command: '$PWD/tests/files/scripts/icon.py' cli arguments: positional=None keyword={'--restart': 'icon_restart'} flags=None source_file=None @@ -1248,6 +1458,8 @@ cycles: - analysis_foo [date: 2027-11-01 00:00:00, bar: 3.0] name: 'statistics_foo' coordinates: {'date': datetime.datetime(2027, 11, 1, 0, 0), 'bar': 3.0} + start date: 2026-01-01 00:00:00 + end date: 2028-01-01 00:00:00 plugin: 'shell' command: '$PWD/tests/files/scripts/statistics.py' - statistics_foo [date: 2027-11-01 00:00:00, bar: 3.5]: @@ -1259,6 +1471,8 @@ cycles: - analysis_foo [date: 2027-11-01 00:00:00, bar: 3.5] name: 'statistics_foo' coordinates: {'date': datetime.datetime(2027, 11, 1, 0, 0), 'bar': 3.5} + start date: 2026-01-01 00:00:00 + end date: 2028-01-01 00:00:00 plugin: 'shell' command: '$PWD/tests/files/scripts/statistics.py' - statistics_foo_bar [date: 2027-11-01 00:00:00]: @@ -1269,6 +1483,8 @@ cycles: - analysis_foo_bar [date: 2027-11-01 00:00:00] name: 'statistics_foo_bar' coordinates: {'date': datetime.datetime(2027, 11, 1, 0, 0)} + start date: 2026-01-01 00:00:00 + end date: 2028-01-01 00:00:00 plugin: 'shell' command: '$PWD/tests/files/scripts/statistics.py' - yearly [date: 2026-01-01 00:00:00]: @@ -1285,6 +1501,8 @@ cycles: - yearly_analysis [date: 2026-01-01 00:00:00] name: 'merge' coordinates: {'date': datetime.datetime(2026, 1, 1, 0, 0)} + start date: 2026-01-01 00:00:00 + end date: 2028-01-01 00:00:00 plugin: 'shell' command: '$PWD/tests/files/scripts/merge.py' - yearly [date: 2027-01-01 00:00:00]: @@ -1301,5 +1519,7 @@ cycles: - yearly_analysis [date: 2027-01-01 00:00:00] name: 'merge' coordinates: {'date': datetime.datetime(2027, 1, 1, 0, 0)} + start date: 2026-01-01 00:00:00 + end date: 2028-01-01 00:00:00 plugin: 'shell' command: '$PWD/tests/files/scripts/merge.py' \ No newline at end of file diff --git a/tests/cases/parameters/svg/.gitkeep b/tests/cases/parameters/svg/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/tests/files/configs/test_config_small.yml b/tests/cases/small/config/test_config_small.yml similarity index 100% rename from tests/files/configs/test_config_small.yml rename to tests/cases/small/config/test_config_small.yml diff --git a/tests/files/data/test_config_small.txt b/tests/cases/small/data/test_config_small.txt similarity index 88% rename from tests/files/data/test_config_small.txt rename to tests/cases/small/data/test_config_small.txt index ec105f3..8af67b5 100644 --- a/tests/files/data/test_config_small.txt +++ b/tests/cases/small/data/test_config_small.txt @@ -7,6 +7,8 @@ cycles: - icon_restart [date: 2026-01-01 00:00:00] name: 'icon' coordinates: {'date': datetime.datetime(2026, 1, 1, 0, 0)} + start date: 2026-01-01 00:00:00 + end date: 2026-06-01 00:00:00 plugin: 'shell' command: '$PWD/tests/files/scripts/icon.py' cli arguments: positional=None keyword={'--restart': 'icon_restart'} flags=None source_file=None @@ -20,6 +22,8 @@ cycles: - icon_restart [date: 2026-03-01 00:00:00] name: 'icon' coordinates: {'date': datetime.datetime(2026, 3, 1, 0, 0)} + start date: 2026-01-01 00:00:00 + end date: 2026-06-01 00:00:00 plugin: 'shell' command: '$PWD/tests/files/scripts/icon.py' cli arguments: positional=None keyword={'--restart': 'icon_restart'} flags=None source_file=None @@ -33,6 +37,8 @@ cycles: - icon_restart [date: 2026-05-01 00:00:00] name: 'icon' coordinates: {'date': datetime.datetime(2026, 5, 1, 0, 0)} + start date: 2026-01-01 00:00:00 + end date: 2026-06-01 00:00:00 plugin: 'shell' command: '$PWD/tests/files/scripts/icon.py' cli arguments: positional=None keyword={'--restart': 'icon_restart'} flags=None source_file=None diff --git a/tests/cases/small/svg/.gitkeep b/tests/cases/small/svg/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/tests/test_wc_workflow.py b/tests/test_wc_workflow.py index 29dcd5c..5c253a3 100644 --- a/tests/test_wc_workflow.py +++ b/tests/test_wc_workflow.py @@ -13,9 +13,9 @@ def pprinter(): config_test_files = [ - "tests/files/configs/test_config_small.yml", - "tests/files/configs/test_config_large.yml", - "tests/files/configs/test_config_parameters.yml", + "tests/cases/small/config/test_config_small.yml", + "tests/cases/large/config/test_config_large.yml", + "tests/cases/parameters/config/test_config_parameters.yml", ] @@ -25,7 +25,7 @@ def config_paths(request): return { "yml": config_path, "txt": (config_path.parent.parent / "data" / config_path.name).with_suffix(".txt"), - "svg": (config_path.parent.parent / "svgs" / config_path.name).with_suffix(".svg"), + "svg": (config_path.parent.parent / "svg" / config_path.name).with_suffix(".svg"), }