import tempfile
import warnings
import numpy as np
import pandas as pd
from lightgbm import LGBMRegressor
from spotforecast2_safe.forecaster.recursive._forecaster_recursive import (
ForecasterRecursive,
)
from spotforecast2_safe.manager.persistence import load_forecasters, save_forecasters
rng = np.random.default_rng(0)
y = pd.Series(rng.normal(size=50), name="target")
with warnings.catch_warnings():
warnings.simplefilter("ignore")
fc = ForecasterRecursive(
estimator=LGBMRegressor(
n_estimators=10, random_state=1234, verbose=-1
),
lags=3,
)
fc.fit(y)
with tempfile.TemporaryDirectory() as tmpdir:
_ = save_forecasters({"power": fc}, tmpdir)
forecasters, missing = load_forecasters(
["power", "energy"], tmpdir, verbose=False
)
assert "power" in forecasters
assert "energy" in missing
assert isinstance(forecasters["power"], ForecasterRecursive)
print("power" in forecasters)
print("energy" in missing)
print(type(forecasters["power"]).__name__)
with tempfile.TemporaryDirectory() as tmpdir:
forecasters, missing = load_forecasters(["nonexistent"], tmpdir)
assert len(forecasters) == 0
assert len(missing) == 1
print(len(forecasters), len(missing))