Autogenerated type safety parameterisation of all methods

This commit is contained in:
Ian Renton
2026-09-20 20:02:19 +01:00
parent 6037e742cc
commit 324dd1414b
132 changed files with 1228 additions and 706 deletions
+15 -6
View File
@@ -1,28 +1,37 @@
from __future__ import annotations
from datetime import datetime
from typing import TYPE_CHECKING, Any
import pytz
from core.data_store import DATA_STORE
from core.live_data_cache import LiveDataCache
if TYPE_CHECKING:
# Deferred to avoid a circular import: data.alert imports core.call_lookup_helper, which imports
# core.data_providers, which imports this module.
from data.alert import Alert
class AlertProvider:
"""Generic alert provider class. Subclasses of this query the individual APIs for alerts."""
def __init__(self, name, provider_config):
def __init__(self, name: str, provider_config: dict[str, Any]) -> None:
"""Constructor"""
self.name = name
self.enabled = provider_config.get("enabled", True)
self.last_update_time = datetime.min.replace(tzinfo=pytz.UTC)
self.status = "Not Started" if self.enabled else "Disabled"
self._alerts = DATA_STORE.alerts
self._alerts: LiveDataCache[Alert] = DATA_STORE.alerts
def start(self):
def start(self) -> None:
"""Start the provider. This should return immediately after spawning threads to access the remote resources"""
raise NotImplementedError("Subclasses must implement this method")
def _submit_batch(self, alerts):
def _submit_batch(self, alerts: list[Alert]) -> None:
"""Submit a batch of alerts retrieved from the provider. There is no timestamp checking like there is for spots,
because alerts could be created at any point for any time in the future. Rely on hashcode-based id matching
to deal with duplicates."""
@@ -35,11 +44,11 @@ class AlertProvider:
alert.infer_missing()
self._add_alert(alert)
def _add_alert(self, alert):
def _add_alert(self, alert: Alert) -> None:
if not alert.expired():
self._alerts.set(alert.id, alert)
def stop(self):
def stop(self) -> None:
"""Stop any threads and prepare for application shutdown"""
raise NotImplementedError("Subclasses must implement this method")