Source code for nrel.hive.config.dispatcher_config

from __future__ import annotations

from typing import NamedTuple, Dict, Tuple, Optional

from nrel.hive.config.config_builder import ConfigBuilder
from nrel.hive.dispatcher.instruction_generator.charging_search_type import ChargingSearchType
from nrel.hive.util.units import Ratio, Seconds, Kilometers


[docs]class DispatcherConfig(NamedTuple): default_update_interval_seconds: Seconds matching_range_km_threshold: Kilometers charging_range_km_threshold: Kilometers charging_range_km_soft_threshold: Kilometers base_charging_range_km_threshold: Kilometers ideal_fastcharge_soc_limit: Ratio max_search_radius_km: Kilometers charging_search_type: ChargingSearchType human_driver_off_shift_charge_target: Ratio idle_time_out_seconds: Seconds valid_dispatch_states: Tuple[str, ...]
[docs] @classmethod def default_config(cls) -> Dict: return {}
[docs] @classmethod def required_config(cls) -> Tuple[str, ...]: return ()
[docs] @classmethod def build(cls, config: Optional[Dict] = None) -> DispatcherConfig: return ConfigBuilder.build( default_config=cls.default_config(), required_config=cls.required_config(), config_constructor=lambda c: DispatcherConfig.from_dict(c), config=config, )
[docs] @classmethod def from_dict(cls, d: Dict) -> DispatcherConfig: try: d["valid_dispatch_states"] = tuple(s.lower() for s in d["valid_dispatch_states"]) d["charging_search_type"] = ChargingSearchType.from_string(d["charging_search_type"]) except ValueError: raise IOError("valid_dispatch_states and active_states must be in a list format") return DispatcherConfig(**d)
[docs] def asdict(self) -> Dict: return self._asdict()