mirror of
https://git.ianrenton.com/ian/spothole.git
synced 2026-09-21 06:47:42 +00:00
Autogenerated type safety parameterisation of all methods
This commit is contained in:
+28
-13
@@ -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:
|
||||
|
||||
Reference in New Issue
Block a user