From 8e282b69f7f2fc630666dd8e59e5c4fe8b4416e2 Mon Sep 17 00:00:00 2001 From: Thomas Ilsche Date: Fri, 15 Mar 2024 10:19:29 +0100 Subject: [PATCH] fix: typing --- metricq_sink_websocket/views.py | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/metricq_sink_websocket/views.py b/metricq_sink_websocket/views.py index 926bb32..f74201f 100644 --- a/metricq_sink_websocket/views.py +++ b/metricq_sink_websocket/views.py @@ -4,7 +4,7 @@ import aiohttp from aiohttp.web import Request -from metricq import JsonDict, get_logger +from metricq import Metric, get_logger from .web_socket import MetricqWebSocketResponse @@ -17,7 +17,7 @@ async def websocket_handler(request: Request) -> MetricqWebSocketResponse: ws = MetricqWebSocketResponse(sink) await ws.prepare(request) logger.info("Websocket opened") - metrics: set[JsonDict] = set() + metrics: set[Metric] = set() try: async for msg in ws: if msg.type == aiohttp.WSMsgType.TEXT: @@ -25,7 +25,11 @@ async def websocket_handler(request: Request) -> MetricqWebSocketResponse: try: msg_data = json.loads(msg.data) if msg_data["function"] == "subscribe": - new_metrics = set(msg_data["metrics"]) + if not isinstance(list, msg_data["metrics"]) or any( + not isinstance(m, str) for m in msg_data["metrics"] + ): + raise TypeError("metrics must be a list of strings") + new_metrics: set[str] = set(msg_data["metrics"]) metadata = await sink.subscribe_ws(ws, new_metrics - metrics) await ws.send_metadata(metadata) metrics |= new_metrics