diff --git a/mapping_provider/backends/brian.py b/mapping_provider/backends/brian.py index 12a0262328d3c0191ccaf638bccd4ccc71266508..3f5febfa5f82cd2a390e386d3b06ad3301330437 100644 --- a/mapping_provider/backends/brian.py +++ b/mapping_provider/backends/brian.py @@ -1,8 +1,8 @@ -import os import contextlib from influxdb import InfluxDBClient from threading import Event import time +from typing import Generator, Any import logging @@ -59,7 +59,7 @@ CACHED_SCID_RATES_SCHEMA = { } @contextlib.contextmanager -def influx_client(influx_params: config.InfluxConnectionParams): +def influx_client(influx_params: config.InfluxConnectionParams) -> Generator[InfluxDBClient]: """ context manager for creating an influx db connection @@ -87,7 +87,9 @@ def influx_client(influx_params: config.InfluxConnectionParams): client.close() -def _load_scid_rates_rows(influx_params: config.InfluxConnectionParams, window: str = '24h'): +def _load_scid_rates_rows( + influx_params: config.InfluxConnectionParams, + window: str = '24h') -> Generator[dict[str, str|float|None], None, None]: """ Return the count of all fields, grouped by hostname & interface_name. @@ -127,14 +129,16 @@ def _load_scid_rates_rows(influx_params: config.InfluxConnectionParams, window: yield rate -def load_scid_rates(influx_params: config.InfluxConnectionParams): +def load_scid_rates(influx_params: config.InfluxConnectionParams) -> list[dict[str, Any]]: rates = [] for r in _load_scid_rates_rows(influx_params): def _bitrate_or_none(field_name: str) -> float | None: - if field_name in r: - return r[field_name] * 8 - return None + _rate = r.get(field_name, None) + assert isinstance(_rate, float | None) # mypy noise + if _rate: + return _rate * 8 + return _rate # could be 0 or None values = { 'latest': { diff --git a/mapping_provider/backends/cache.py b/mapping_provider/backends/cache.py index a4cc5ffc950f5052c5c42070dbba519d93797b8f..31021523bf7c1b71d15963246dc4f2ade6e9a7bc 100644 --- a/mapping_provider/backends/cache.py +++ b/mapping_provider/backends/cache.py @@ -22,9 +22,9 @@ def init(cache_dir: str) -> None: logger.debug(f"set cache directory: {_cache_dir}") -def set(filename: str, data: dict[str, Any]) -> None: +def set(filename: str, data: Any) -> None: """ - data must be a JSON-serializable dict. + data must be JSON-serializable. """ assert _cache_dir is not None, "cache_dir hasn't been initialized" with open(os.path.join(_cache_dir, filename), 'w') as f: diff --git a/pyproject.toml b/pyproject.toml index 0c59d10f535b1f9c20c9b302fbaac3cb8bbc4789..e0f844bedfc89b18351d68c0d6d9f1f0ee59b913 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -11,6 +11,10 @@ strict = true warn_unused_ignores = true warn_return_any = true +[[tool.mypy.overrides]] +module = ["influxdb"] +ignore_missing_imports = true + [tool.coverage.run] source = ["mapping_provider"] omit = [