fix: energy charts bidding zone in request (#948)
Bump Version / Bump Version Workflow (push) Has been cancelled
CodeQL Advanced / Analyze (actions) (push) Has been cancelled
CodeQL Advanced / Analyze (python) (push) Has been cancelled
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

Ensure that the bidding zone in the request is correctly set to a
string value (not an enum).

This seems to be also an issue with python version < 3.11. Add safeguards
to only use python >= 3.11. Still keep a regression test for the enum
conversion to string.

Signed-off-by: Bobby Noelte <b0661n0e17e@gmail.com>
This commit is contained in:
Bobby Noelte
2026-03-15 13:32:05 +01:00
committed by GitHub
parent f749caa98c
commit 71e5abce88
13 changed files with 162 additions and 111 deletions
+2 -20
View File
@@ -3,38 +3,20 @@
Kept in an extra module to avoid cyclic dependencies on package import.
"""
from enum import Enum
from typing import Optional, Union
from enum import StrEnum
from pydantic import Field
from akkudoktoreos.config.configabc import SettingsBaseModel, is_home_assistant_addon
class EnergyManagementMode(str, Enum):
class EnergyManagementMode(StrEnum):
"""Energy management mode."""
DISABLED = "DISABLED"
PREDICTION = "PREDICTION"
OPTIMIZATION = "OPTIMIZATION"
@classmethod
def is_valid(cls, mode: Union[str, "EnergyManagementMode"]) -> bool:
"""Check if value is a valid mode."""
try:
cls(mode)
return True
except (ValueError, TypeError):
return False
@classmethod
def from_value(cls, value: str) -> Optional["EnergyManagementMode"]:
"""Safely convert string to enum, return None if invalid."""
try:
return cls(value)
except ValueError:
return None
def ems_default_mode() -> EnergyManagementMode:
"""Provide default EMS mode.