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
+28 -13
View File
@@ -1,8 +1,16 @@
from __future__ import annotations
import logging
import threading
import time
from core.config import config, create_provider_from_config
from providers.activityrefdata.activity_ref_data_provider import ActivityRefDataProvider
from providers.alert.alert_provider import AlertProvider
from providers.callsigndata.callsign_data_provider import CallsignDataProvider
from providers.solarconditions.solar_conditions_provider import SolarConditionsProvider
from providers.spot.spot_provider import SpotProvider
from providers.staticdata.static_data_provider import StaticDataProvider
logger = logging.getLogger(__name__)
@@ -10,16 +18,16 @@ logger = logging.getLogger(__name__)
class DataProviders:
"""Global object for storing data providers."""
def __init__(self):
self.spot_providers = []
self.alert_providers = []
self.solar_condition_providers = []
self.static_data_providers = []
self.sig_ref_data_providers = []
self.callsign_data_providers = []
self._startup_timers = []
def __init__(self) -> None:
self.spot_providers: list[SpotProvider] = []
self.alert_providers: list[AlertProvider] = []
self.solar_condition_providers: list[SolarConditionsProvider] = []
self.static_data_providers: list[StaticDataProvider] = []
self.sig_ref_data_providers: list[ActivityRefDataProvider] = []
self.callsign_data_providers: list[CallsignDataProvider] = []
self._startup_timers: list[threading.Timer] = []
def setup(self):
def setup(self) -> None:
for entry in config["spot_providers"]:
self.spot_providers.append(create_provider_from_config("providers.spot", entry))
for entry in config["alert_providers"]:
@@ -34,7 +42,12 @@ class DataProviders:
self.callsign_data_providers.append(create_provider_from_config("providers.callsigndata", entry))
@staticmethod
def start_providers(providers, provider_type):
def start_providers(
providers: list[
SpotProvider | AlertProvider | SolarConditionsProvider | StaticDataProvider | ActivityRefDataProvider | CallsignDataProvider
],
provider_type: str,
) -> None:
"""Helper method to activate enabled providers in the list."""
logger.info(f"Starting {provider_type} providers...")
@@ -42,7 +55,7 @@ class DataProviders:
if p.enabled:
p.start()
def start(self):
def start(self) -> None:
# Start data providers before spot/alert providers so the lookup data is there already for incoming spots.
# Each category is fired off after a small delay to give the rest of Spothole chance to start up.
self._startup_timers = [
@@ -60,7 +73,7 @@ class DataProviders:
t.daemon = True
t.start()
def stop(self):
def stop(self) -> None:
# Cancel any startup timers that haven't fired yet
for t in self._startup_timers:
t.cancel()
@@ -81,7 +94,9 @@ class DataProviders:
if not all_providers:
return
def stop_provider(p):
def stop_provider(
p: SpotProvider | AlertProvider | SolarConditionsProvider | StaticDataProvider | ActivityRefDataProvider | CallsignDataProvider,
) -> None:
try:
p.stop()
except Exception: