Skip to content

Comments

Feat/optional training start#1917

Merged
Flix6x merged 106 commits intomainfrom
feat/optional-training-start
Feb 23, 2026
Merged

Feat/optional training start#1917
Flix6x merged 106 commits intomainfrom
feat/optional-training-start

Conversation

@Flix6x
Copy link
Contributor

@Flix6x Flix6x commented Jan 14, 2026

Description

  • Stop relying on start-date to be set by the user
  • Stop relying on end-date to be set by the user
  • Start testing the ForecasterParametersSchema directly to validate derivation of timing parameters
  • Added changelog item in documentation/changelog.rst

Look & Feel

possible to run forecasting cli command without start_date or end_date:

Examples:

  • flexmeasures add forecasts --sensor 20 --start-date "2025-01-01T00:00:00+01"
  • flexmeasures add forecasts --sensor 20 --end-date "2025-01-15T00:00:00+01"
  • flexmeasures add forecasts --sensor 20

How to test

pytest flexmeasures/data/schemas/tests/test_forecasting.py

...

Further Improvements

  • Clarify train-period vs max-training-window in cli.data_add.train_predict_pipeline (and for our first example in forecasting.rst we should mention train-period rather than max-training-window).
  • Rename def train_predict_pipeline -> def add_forecast

Signed-off-by: F.N. Claessen <felix@seita.nl>
Signed-off-by: F.N. Claessen <felix@seita.nl>
@Flix6x Flix6x added this to the 0.31.0 milestone Jan 14, 2026
@read-the-docs-community
Copy link

read-the-docs-community bot commented Jan 14, 2026

@Flix6x Flix6x requested a review from BelhsanHmida January 15, 2026 08:49
Flix6x and others added 24 commits January 15, 2026 11:49
Signed-off-by: F.N. Claessen <felix@seita.nl>
Signed-off-by: F.N. Claessen <felix@seita.nl>
Signed-off-by: F.N. Claessen <felix@seita.nl>
Signed-off-by: F.N. Claessen <felix@seita.nl>
…t_timing_parameters_of_forecaster_parameters_schema"`)

Signed-off-by: F.N. Claessen <felix@seita.nl>
Signed-off-by: Mohamed Belhsan Hmida <mohamedbelhsanhmida@gmail.com>
Signed-off-by: Mohamed Belhsan Hmida <mohamedbelhsanhmida@gmail.com>
…ameter in expected_timing_output

Signed-off-by: Mohamed Belhsan Hmida <mohamedbelhsanhmida@gmail.com>
Signed-off-by: Mohamed Belhsan Hmida <mohamedbelhsanhmida@gmail.com>
Signed-off-by: Mohamed Belhsan Hmida <mohamedbelhsanhmida@gmail.com>
Signed-off-by: Mohamed Belhsan Hmida <mohamedbelhsanhmida@gmail.com>
Signed-off-by: Mohamed Belhsan Hmida <mohamedbelhsanhmida@gmail.com>
Signed-off-by: Mohamed Belhsan Hmida <mohamedbelhsanhmida@gmail.com>
Signed-off-by: Mohamed Belhsan Hmida <mohamedbelhsanhmida@gmail.com>
…hema

Signed-off-by: Mohamed Belhsan Hmida <mohamedbelhsanhmida@gmail.com>
Signed-off-by: Mohamed Belhsan Hmida <mohamedbelhsanhmida@gmail.com>
…ParametersSchema

Signed-off-by: Mohamed Belhsan Hmida <mohamedbelhsanhmida@gmail.com>
…riod)

Signed-off-by: Mohamed Belhsan Hmida <mohamedbelhsanhmida@gmail.com>
…ncy (predict_period)

Signed-off-by: Mohamed Belhsan Hmida <mohamedbelhsanhmida@gmail.com>
…metersSchema validation

Signed-off-by: Mohamed Belhsan Hmida <mohamedbelhsanhmida@gmail.com>
Signed-off-by: Mohamed Belhsan Hmida <mohamedbelhsanhmida@gmail.com>
…f FutureWarning: 'H' is deprecated

Signed-off-by: Mohamed Belhsan Hmida <mohamedbelhsanhmida@gmail.com>
Flix6x and others added 28 commits February 16, 2026 10:32
Signed-off-by: F.N. Claessen <claessen@seita.nl>
… error messages

Signed-off-by: F.N. Claessen <claessen@seita.nl>
Signed-off-by: F.N. Claessen <claessen@seita.nl>
Signed-off-by: F.N. Claessen <claessen@seita.nl>
Signed-off-by: F.N. Claessen <claessen@seita.nl>
Signed-off-by: F.N. Claessen <claessen@seita.nl>
Signed-off-by: F.N. Claessen <claessen@seita.nl>
Signed-off-by: F.N. Claessen <claessen@seita.nl>
Signed-off-by: F.N. Claessen <claessen@seita.nl>
Signed-off-by: F.N. Claessen <claessen@seita.nl>
Signed-off-by: F.N. Claessen <claessen@seita.nl>
…er to add new fields)

Signed-off-by: F.N. Claessen <claessen@seita.nl>
Signed-off-by: F.N. Claessen <claessen@seita.nl>
Signed-off-by: F.N. Claessen <claessen@seita.nl>
Signed-off-by: F.N. Claessen <claessen@seita.nl>
Signed-off-by: F.N. Claessen <claessen@seita.nl>
Signed-off-by: F.N. Claessen <claessen@seita.nl>
…r messages

Signed-off-by: F.N. Claessen <claessen@seita.nl>
…messages

Signed-off-by: F.N. Claessen <claessen@seita.nl>
Signed-off-by: F.N. Claessen <claessen@seita.nl>
…essages

Signed-off-by: F.N. Claessen <claessen@seita.nl>
Signed-off-by: F.N. Claessen <claessen@seita.nl>
Signed-off-by: F.N. Claessen <claessen@seita.nl>
Signed-off-by: F.N. Claessen <claessen@seita.nl>
Signed-off-by: Mohamed Belhsan Hmida <mohamedbelhsanhmida@gmail.com>
* feat: make predict retrain-frequency default to planning horizon then min(planning_horizon, data["max_forecast_horizon"])

Signed-off-by: Mohamed Belhsan Hmida <mohamedbelhsanhmida@gmail.com>

* refactor:  simplify end_date calculation to use predict_period instead of timedelta

Signed-off-by: Mohamed Belhsan Hmida <mohamedbelhsanhmida@gmail.com>

* feat: default max_forecast_horizon to predict_period

Signed-off-by: Mohamed Belhsan Hmida <mohamedbelhsanhmida@gmail.com>

* feat: add validation for max_forecast_horizon to ensure it does not exceed predict_period

Signed-off-by: Mohamed Belhsan Hmida <mohamedbelhsanhmida@gmail.com>

* feat: set default forecast_frequency based on min of planning_horizon, predict_period, and max_forecast_horizon

Signed-off-by: Mohamed Belhsan Hmida <mohamedbelhsanhmida@gmail.com>

* fix: add planning horizon from config

Signed-off-by: Mohamed Belhsan Hmida <mohamedbelhsanhmida@gmail.com>

* dev: uncomment out tests that were failing

Signed-off-by: Mohamed Belhsan Hmida <mohamedbelhsanhmida@gmail.com>

* fix: fix test cae forecast_frequency expectation it should be 12 hours not 48hours since we want New forecast viewpoint every 12 hours

Signed-off-by: Mohamed Belhsan Hmida <mohamedbelhsanhmida@gmail.com>

* fix: tests should expect 5 cycles. the test passes when we expect 1cycle

Signed-off-by: Mohamed Belhsan Hmida <mohamedbelhsanhmida@gmail.com>

* feat: add duration to schema

Signed-off-by: F.N. Claessen <claessen@seita.nl>

* feat: pass original data to `resolve_config` so we can check whether start, end and duration have been passed

Signed-off-by: F.N. Claessen <claessen@seita.nl>

* feat: move end_date calculation up

Signed-off-by: Mohamed Belhsan Hmida <mohamedbelhsanhmida@gmail.com>

* feat: fix max-forecast-horizon and forecast freq default calculation

Signed-off-by: Mohamed Belhsan Hmida <mohamedbelhsanhmida@gmail.com>

* dev: remove breakpoint

Signed-off-by: Mohamed Belhsan Hmida <mohamedbelhsanhmida@gmail.com>

* feat: throw ValidationError in case start, end and duration are all passed

Signed-off-by: F.N. Claessen <claessen@seita.nl>

* fix: remove unneeded validation

Signed-off-by: Mohamed Belhsan Hmida <mohamedbelhsanhmida@gmail.com>

* style: run pre-commit

Signed-off-by: Mohamed Belhsan Hmida <mohamedbelhsanhmida@gmail.com>

* refactor: move check to pre_load

Signed-off-by: F.N. Claessen <claessen@seita.nl>

* dev: comment out tests cases that pass

Signed-off-by: Mohamed Belhsan Hmida <mohamedbelhsanhmida@gmail.com>

* fix: fix calculation for retrain_freq

Signed-off-by: Mohamed Belhsan Hmida <mohamedbelhsanhmida@gmail.com>

* Revert "dev: comment out tests cases that pass"

This reverts commit 9e7acc9.

* style: run pre-commit

Signed-off-by: Mohamed Belhsan Hmida <mohamedbelhsanhmida@gmail.com>

* chore: regenerate openapi-spec.json

Signed-off-by: Mohamed Belhsan Hmida <mohamedbelhsanhmida@gmail.com>

* refactor: move parametrized cases next to case descriptions

Signed-off-by: F.N. Claessen <claessen@seita.nl>

* dev: remove breakpoint

Signed-off-by: F.N. Claessen <claessen@seita.nl>

* fix: check predict period

Signed-off-by: F.N. Claessen <claessen@seita.nl>

* fix: case 1

Signed-off-by: F.N. Claessen <claessen@seita.nl>

* feat: improve error message for failing test cases

Signed-off-by: F.N. Claessen <claessen@seita.nl>

* dev: case 2 needs further investigation

Signed-off-by: F.N. Claessen <claessen@seita.nl>

* fix: case 4

Signed-off-by: F.N. Claessen <claessen@seita.nl>

* fix: partially fix case 5

Signed-off-by: F.N. Claessen <claessen@seita.nl>

* dev: case 5 needs further investigation

Signed-off-by: F.N. Claessen <claessen@seita.nl>

* fix: case 6

Signed-off-by: F.N. Claessen <claessen@seita.nl>

* dev: comment out test cases that need further investigation, and preferably these should also become enumerated cases with similarly annotated expectations

Signed-off-by: F.N. Claessen <claessen@seita.nl>

* docs: move the documented defaults and choices for timing parameters to the post_load docstring where these are actually acted upon

Signed-off-by: F.N. Claessen <claessen@seita.nl>

* fix: correctly set retrain_frequency_in_hours

Signed-off-by: Mohamed Belhsan Hmida <mohamedbelhsanhmida@gmail.com>

* fix: streamline job metadata handling in run method to prevent undefined variable issue

Signed-off-by: Mohamed Belhsan Hmida <mohamedbelhsanhmida@gmail.com>

* refactor: rename parameter name to match field name

Signed-off-by: F.N. Claessen <claessen@seita.nl>

* fix: stop mixing up retrain-frequency and predict-period

Signed-off-by: F.N. Claessen <claessen@seita.nl>

* fix: false variable name

Signed-off-by: F.N. Claessen <claessen@seita.nl>

* style: black

Signed-off-by: F.N. Claessen <claessen@seita.nl>

* fix: cap retrain-frequency to not exceed predict-period

Signed-off-by: F.N. Claessen <claessen@seita.nl>

* fix: incomplete schema renaming

Signed-off-by: F.N. Claessen <claessen@seita.nl>

* fix: exclude CLI-specific fields from API schema

Signed-off-by: F.N. Claessen <claessen@seita.nl>

* docs: clarify what happens to the source ID if you change the forecaster config

Signed-off-by: F.N. Claessen <claessen@seita.nl>

* fix: change target_sensor reference from target to sensor

Signed-off-by: Mohamed Belhsan Hmida <mohamedbelhsanhmida@gmail.com>

* fix: update test case 4 comment and expectations. we expect 4 cycles because of retrain_frequency and predict_period

Signed-off-by: Mohamed Belhsan Hmida <mohamedbelhsanhmida@gmail.com>

* fix: update cycle frequency calculation to use retrain_frequency instead of predict_period

Signed-off-by: Mohamed Belhsan Hmida <mohamedbelhsanhmida@gmail.com>

* fix: search sensor forecasts (the ones computed directly not via api) by source forecaster type since the source isn't the same as one generated by api.

Signed-off-by: Mohamed Belhsan Hmida <mohamedbelhsanhmida@gmail.com>

* fix: adjust event end date calculation in forecast belief search to exclude sensor resolution

Signed-off-by: Mohamed Belhsan Hmida <mohamedbelhsanhmida@gmail.com>

* refactor: move cycle_frequency variable outside for loop

Signed-off-by: Mohamed Belhsan Hmida <mohamedbelhsanhmida@gmail.com>

* fix: update predict_end calculation to use cycle_frequency instead of predict_period_in_hours

Signed-off-by: Mohamed Belhsan Hmida <mohamedbelhsanhmida@gmail.com>

* fix: use default value for probabilistic in ForecasterParametersSchema this fixes issue when we call via api this param default isn't loaded

Signed-off-by: Mohamed Belhsan Hmida <mohamedbelhsanhmida@gmail.com>

* chore: remove unused import and run pre-commit

Signed-off-by: Mohamed Belhsan Hmida <mohamedbelhsanhmida@gmail.com>

* feat(test): update test case to only one day of prediction

Signed-off-by: Mohamed Belhsan Hmida <mohamedbelhsanhmida@gmail.com>

* fix: add forecast_frequency to test params

Signed-off-by: Mohamed Belhsan Hmida <mohamedbelhsanhmida@gmail.com>

* chore: remove old commented out test case

Signed-off-by: Mohamed Belhsan Hmida <mohamedbelhsanhmida@gmail.com>

* dev: uncomment out test cases

Signed-off-by: Mohamed Belhsan Hmida <mohamedbelhsanhmida@gmail.com>

* chore: remove default value for probabilistic when calling with get

Signed-off-by: Mohamed Belhsan Hmida <mohamedbelhsanhmida@gmail.com>

* docs: update test case comment

Signed-off-by: Mohamed Belhsan Hmida <mohamedbelhsanhmida@gmail.com>

* feat: calculate pred start date from end date and duration

Signed-off-by: Mohamed Belhsan Hmida <mohamedbelhsanhmida@gmail.com>

* feat: remove planning horizon from forecast frequency calculation and default retrain_frequency to  predict_period

Signed-off-by: Mohamed Belhsan Hmida <mohamedbelhsanhmida@gmail.com>

* fix(tests): updates test cases

Signed-off-by: Mohamed Belhsan Hmida <mohamedbelhsanhmida@gmail.com>

* docs: annotate case 7

Signed-off-by: F.N. Claessen <claessen@seita.nl>

* fix(test): update forecast_frequency in tests

Signed-off-by: Mohamed Belhsan Hmida <mohamedbelhsanhmida@gmail.com>

* docs: annotate case 8

Signed-off-by: F.N. Claessen <claessen@seita.nl>

* docs: enumerate remaining test cases

Signed-off-by: F.N. Claessen <claessen@seita.nl>

* fix(tests): add start-predict-date  to case 3

Signed-off-by: Mohamed Belhsan Hmida <mohamedbelhsanhmida@gmail.com>

* docs: clarify case 0

Signed-off-by: F.N. Claessen <claessen@seita.nl>

* docs: add comment

Signed-off-by: Mohamed Belhsan Hmida <mohamedbelhsanhmida@gmail.com>

* docs: check retraining-frequency in case 1

Signed-off-by: F.N. Claessen <claessen@seita.nl>

* docs: enumerate defaults and choices

Signed-off-by: F.N. Claessen <claessen@seita.nl>

* docs: add docstring

Signed-off-by: Mohamed Belhsan Hmida <mohamedbelhsanhmida@gmail.com>

* fix: case 2

Signed-off-by: F.N. Claessen <claessen@seita.nl>

* docs: explain case 3 slightly better

Signed-off-by: F.N. Claessen <claessen@seita.nl>

* feat: set load_default for the retrain-frequency and make it independent of any parameters, because it will be moved to the config, and we don't want to let changing parameters lead to new data source IDs

Signed-off-by: F.N. Claessen <claessen@seita.nl>

* feat: base the number of cycles on the retrain-frequency and the forecast-frequency, whichever is larger, and ensure there is always at least 1 cycle

Signed-off-by: F.N. Claessen <claessen@seita.nl>

* refactor: // guarantees an int already

Signed-off-by: F.N. Claessen <claessen@seita.nl>

* delete: validator no longer appropriate

Signed-off-by: F.N. Claessen <claessen@seita.nl>

* feat: raise in case of explicitly setting inconsistent variables that would result in incomplete coverage for the prediction window

Signed-off-by: F.N. Claessen <claessen@seita.nl>

* feat: check retrain-frequency explicitly

Signed-off-by: F.N. Claessen <claessen@seita.nl>

* docs: explain number to devs

Signed-off-by: F.N. Claessen <claessen@seita.nl>

* style: black

Signed-off-by: F.N. Claessen <claessen@seita.nl>

* feat: update test expectations and add another test case

Signed-off-by: F.N. Claessen <claessen@seita.nl>

* fix: only update default predict-period in case a forecast-frequency was not set explicitly

Signed-off-by: F.N. Claessen <claessen@seita.nl>

* delete: obsolete variable

Signed-off-by: F.N. Claessen <claessen@seita.nl>

* fix: we are now guaranteed one cycle, and it is allowed to be smaller than the retrain-frequency

Signed-off-by: F.N. Claessen <claessen@seita.nl>

* fix: counter in train_predict_params starts at 1

Signed-off-by: F.N. Claessen <claessen@seita.nl>

* dev: better error messages

Signed-off-by: F.N. Claessen <claessen@seita.nl>

* fix: update test case that tries to get two cycles out of the API

Signed-off-by: F.N. Claessen <claessen@seita.nl>

* fix: expose forecast-frequency to API users

Signed-off-by: F.N. Claessen <claessen@seita.nl>

* docs: update forecast-frequency default description

Signed-off-by: F.N. Claessen <claessen@seita.nl>

* docs: add comment

Signed-off-by: Mohamed Belhsan Hmida <mohamedbelhsanhmida@gmail.com>
Signed-off-by: F.N. Claessen <claessen@seita.nl>

* docs: add docstring

Signed-off-by: Mohamed Belhsan Hmida <mohamedbelhsanhmida@gmail.com>
Signed-off-by: F.N. Claessen <claessen@seita.nl>

* docs: update comment for selecting a default predict-period

Signed-off-by: F.N. Claessen <claessen@seita.nl>

* fix: remove code after merge conflict

Signed-off-by: F.N. Claessen <claessen@seita.nl>

* style: move flake8 noqa

Signed-off-by: F.N. Claessen <claessen@seita.nl>

* test(docs) update test comments

Signed-off-by: Mohamed Belhsan Hmida <mohamedbelhsanhmida@gmail.com>

* feat: move retrain-frequency to config

Signed-off-by: F.N. Claessen <claessen@seita.nl>

* feat(test): uncomment and fix dates params

Signed-off-by: Mohamed Belhsan Hmida <mohamedbelhsanhmida@gmail.com>

* feat: ensure a retrain-frequency of at least 1 hour

Signed-off-by: F.N. Claessen <claessen@seita.nl>

* fix: n_cycles now determined outside of schemas

Signed-off-by: F.N. Claessen <claessen@seita.nl>

* fix: update test coverage of ForecasterParametersSchema

Signed-off-by: F.N. Claessen <claessen@seita.nl>

* dev: partial fix for failing test

Signed-off-by: F.N. Claessen <claessen@seita.nl>

* fix: test_missing_data_logs_warning

Signed-off-by: F.N. Claessen <claessen@seita.nl>

* fix: test_train_period_capped_logs_warning

Signed-off-by: F.N. Claessen <claessen@seita.nl>

* fix: test_trigger_and_fetch_forecasts

Signed-off-by: F.N. Claessen <claessen@seita.nl>

* fix: remove sensor from documented payload (it's in the URI path already)

Signed-off-by: F.N. Claessen <claessen@seita.nl>

* feat: move training timing fields from parameters to config

Signed-off-by: F.N. Claessen <claessen@seita.nl>

* refactor: do not store any forecaster parameters by default

Signed-off-by: F.N. Claessen <claessen@seita.nl>

* refactor: move derivation of training period into class method, and add a docstring

Signed-off-by: F.N. Claessen <claessen@seita.nl>

* refactor: simplify logic for deriving the training period

Signed-off-by: F.N. Claessen <claessen@seita.nl>

* style: flake8

Signed-off-by: F.N. Claessen <claessen@seita.nl>

* chore: update openapi-specs.json

Signed-off-by: F.N. Claessen <claessen@seita.nl>

* fix: remove CLI-only fields from nested config, too

Signed-off-by: F.N. Claessen <claessen@seita.nl>

* feat: remove end-date and training timing fields from API docs

Signed-off-by: F.N. Claessen <claessen@seita.nl>

* refactor: rename start-predict-date to start

Signed-off-by: Mohamed Belhsan Hmida <mohamedbelhsanhmida@gmail.com>

* refactor: change start-date to train-start

Signed-off-by: Mohamed Belhsan Hmida <mohamedbelhsanhmida@gmail.com>

* refactor: change end-date to end

Signed-off-by: Mohamed Belhsan Hmida <mohamedbelhsanhmida@gmail.com>

* refactor: update forecasting job JSON keys to match new naming conventions

Signed-off-by: Mohamed Belhsan Hmida <mohamedbelhsanhmida@gmail.com>

* refactor: update forecasting trigger schema keys to match new naming conventions

Signed-off-by: Mohamed Belhsan Hmida <mohamedbelhsanhmida@gmail.com>

* refactor: update job metadata keys to match new naming conventions

Signed-off-by: Mohamed Belhsan Hmida <mohamedbelhsanhmida@gmail.com>

* refactor: update forecasting job metadata keys to match new naming conventions

Signed-off-by: Mohamed Belhsan Hmida <mohamedbelhsanhmida@gmail.com>

* refactor: update forecasting parameter keys to match new naming conventions

Signed-off-by: Mohamed Belhsan Hmida <mohamedbelhsanhmida@gmail.com>

* refactor(test): update forecast job payload and job metadata keys to match new naming conventions

Signed-off-by: Mohamed Belhsan Hmida <mohamedbelhsanhmida@gmail.com>

* doc: fix comment typo

Signed-off-by: Mohamed Belhsan Hmida <mohamedbelhsanhmida@gmail.com>

* refactor(tests): update test cases to use 'end' and 'train-start' keys

Signed-off-by: Mohamed Belhsan Hmida <mohamedbelhsanhmida@gmail.com>

* chore: update field names in comments

Signed-off-by: Mohamed Belhsan Hmida <mohamedbelhsanhmida@gmail.com>

* refactor(tests): update date keys in test cases to match new naming conventions

Signed-off-by: Mohamed Belhsan Hmida <mohamedbelhsanhmida@gmail.com>

* style: black

Signed-off-by: F.N. Claessen <claessen@seita.nl>

* refactor(doc): update forecasting job example to use 'duration' instead of 'end' key

Signed-off-by: Mohamed Belhsan Hmida <mohamedbelhsanhmida@gmail.com>

* refactor(api): update forecasting trigger example to use 'duration' instead of 'end' key

Signed-off-by: Mohamed Belhsan Hmida <mohamedbelhsanhmida@gmail.com>

* feat: remove max-forecast-horizon field from API docs

Signed-off-by: F.N. Claessen <claessen@seita.nl>

* docs: fix typo

Signed-off-by: F.N. Claessen <claessen@seita.nl>

* chore: update openapi-specs.json

Signed-off-by: F.N. Claessen <claessen@seita.nl>

* docs: clarify mention of planning horizon in forecast duration field

Signed-off-by: F.N. Claessen <claessen@seita.nl>

* docs: clarify use case for forecast-frequency field

Signed-off-by: F.N. Claessen <claessen@seita.nl>

* feat: expose duration field to the CLI

Signed-off-by: F.N. Claessen <claessen@seita.nl>

* docs: capitalize start of sentence

Signed-off-by: F.N. Claessen <claessen@seita.nl>

* fix: (CLI) description of end field

Signed-off-by: F.N. Claessen <claessen@seita.nl>

* style: flake8

Signed-off-by: F.N. Claessen <claessen@seita.nl>

---------

Signed-off-by: Mohamed Belhsan Hmida <mohamedbelhsanhmida@gmail.com>
Signed-off-by: F.N. Claessen <claessen@seita.nl>
Co-authored-by: F.N. Claessen <claessen@seita.nl>
Signed-off-by: F.N. Claessen <claessen@seita.nl>
@Flix6x Flix6x merged commit 6633ff2 into main Feb 23, 2026
6 of 7 checks passed
@Flix6x Flix6x deleted the feat/optional-training-start branch February 23, 2026 12:26
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Make forecast training start optional

3 participants