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
+9 -6
View File
@@ -1,3 +1,5 @@
from __future__ import annotations
import hashlib
import json
import logging
@@ -32,6 +34,7 @@ from core.utils import (
)
from data.activities import ACTIVITIES
from data.activity_ref import ActivityRef
from data.lookup_credentials import LookupCredentials
logger = logging.getLogger(__name__)
@@ -129,7 +132,7 @@ class Spot:
sig: str | None = None
# Activity references. We allow multiple here for e.g. n-fer activations, unlike ADIF SIG_INFO. Still named
# "sig_refs" for API backwards compatibility.
sig_refs: list = field(default_factory=list)
sig_refs: list[ActivityRef] = field(default_factory=list)
# Timing info
@@ -156,7 +159,7 @@ class Spot:
# Icon to use when displaying this spot in the web UI. Chosen from the Font Awesome set.
icon: str | None = None
def __post_init__(self):
def __post_init__(self) -> None:
"""Normalise fields that don't survive a plain dict to Spot conversion. This is used in the "add spot" API
endpoint where the client is submitting JSON, and we want to recreate a full Spot object, including nested
objects such as the sig_refs list.."""
@@ -167,7 +170,7 @@ class Spot:
for activity_ref in self.sig_refs
]
def infer_missing(self, credentials=None):
def infer_missing(self, credentials: LookupCredentials | None = None) -> None:
"""Infer missing parameters where possible"""
try:
@@ -538,12 +541,12 @@ class Spot:
except Exception:
logger.exception("Exception while inferring missing data from spot")
def to_json(self):
def to_json(self) -> str:
"""JSON serialise"""
return json.dumps(self, default=lambda o: o.__dict__, sort_keys=True)
def _append_activity_ref_if_missing(self, new_activity_ref):
def _append_activity_ref_if_missing(self, new_activity_ref: ActivityRef) -> None:
"""Append an activity ref to the list, so long as it's not already there."""
new_activity_ref.id = new_activity_ref.id.strip().upper()
@@ -555,7 +558,7 @@ class Spot:
return
self.sig_refs.append(new_activity_ref)
def expired(self):
def expired(self) -> bool:
"""Decide if this spot has expired (in which case it should not be added to the system in the first place, and not
returned by the web server if later requested, and removed by the cleanup functions). "Expired" is defined as
either having a time further ago than the server's MAX_SPOT_AGE. If it somehow doesn't have a time either, it is