Add new electricity price provider: Energy-Charts #381 (#590)
Some checks failed
docker-build / platform-excludes (push) Has been cancelled
pre-commit / pre-commit (push) Has been cancelled
Run Pytest on Pull Request / test (push) Has been cancelled
docker-build / build (push) Has been cancelled
docker-build / merge (push) Has been cancelled
Close stale pull requests/issues / Find Stale issues and PRs (push) Has been cancelled

* feat(ElecPriceEnergyCharts): Add new electricity price provider: Energy-Charts

* feat(ElecPriceEnergyCharts): update data only if needed

* test(elecpriceforecast): add test for energycharts

* docs(predictions.md): add ElecPriceEnergyCharts Provider

Signed-off-by: redmoon2711 <redmoon2711@gmx.de>
This commit is contained in:
redmoon2711
2025-06-23 07:29:33 +02:00
committed by GitHub
parent 9e789e1786
commit 8c56410338
7 changed files with 601 additions and 9 deletions

View File

@@ -2,6 +2,7 @@ import pytest
from pydantic import ValidationError
from akkudoktoreos.prediction.elecpriceakkudoktor import ElecPriceAkkudoktor
from akkudoktoreos.prediction.elecpriceenergycharts import ElecPriceEnergyCharts
from akkudoktoreos.prediction.elecpriceimport import ElecPriceImport
from akkudoktoreos.prediction.loadakkudoktor import LoadAkkudoktor
from akkudoktoreos.prediction.loadimport import LoadImport
@@ -28,6 +29,7 @@ def forecast_providers():
"""Fixture for singleton forecast provider instances."""
return [
ElecPriceAkkudoktor(),
ElecPriceEnergyCharts(),
ElecPriceImport(),
LoadAkkudoktor(),
LoadImport(),
@@ -68,14 +70,15 @@ def test_initialization(prediction, forecast_providers):
def test_provider_sequence(prediction):
"""Test the provider sequence is maintained in the Prediction instance."""
assert isinstance(prediction.providers[0], ElecPriceAkkudoktor)
assert isinstance(prediction.providers[1], ElecPriceImport)
assert isinstance(prediction.providers[2], LoadAkkudoktor)
assert isinstance(prediction.providers[3], LoadImport)
assert isinstance(prediction.providers[4], PVForecastAkkudoktor)
assert isinstance(prediction.providers[5], PVForecastImport)
assert isinstance(prediction.providers[6], WeatherBrightSky)
assert isinstance(prediction.providers[7], WeatherClearOutside)
assert isinstance(prediction.providers[8], WeatherImport)
assert isinstance(prediction.providers[1], ElecPriceEnergyCharts)
assert isinstance(prediction.providers[2], ElecPriceImport)
assert isinstance(prediction.providers[3], LoadAkkudoktor)
assert isinstance(prediction.providers[4], LoadImport)
assert isinstance(prediction.providers[5], PVForecastAkkudoktor)
assert isinstance(prediction.providers[6], PVForecastImport)
assert isinstance(prediction.providers[7], WeatherBrightSky)
assert isinstance(prediction.providers[8], WeatherClearOutside)
assert isinstance(prediction.providers[9], WeatherImport)
def test_provider_by_id(prediction, forecast_providers):
@@ -89,6 +92,7 @@ def test_prediction_repr(prediction):
result = repr(prediction)
assert "Prediction([" in result
assert "ElecPriceAkkudoktor" in result
assert "ElecPriceEnergyCharts" in result
assert "ElecPriceImport" in result
assert "LoadAkkudoktor" in result
assert "LoadImport" in result