From 8e6aebdda7d0150df486df566ecea1ceadfecd4a Mon Sep 17 00:00:00 2001 From: Marco Castelluccio Date: Thu, 5 Dec 2019 15:37:01 +0100 Subject: [PATCH 1/3] Add type annotations to bus.add_queue --- libmozevent/bus.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/libmozevent/bus.py b/libmozevent/bus.py index 087a609..b4a810d 100644 --- a/libmozevent/bus.py +++ b/libmozevent/bus.py @@ -40,7 +40,9 @@ def __init__(self): self.redis_enabled = "REDIS_URL" in os.environ logger.info("Redis support", enabled=self.redis_enabled and "yes" or "no") - def add_queue(self, name, mp=False, redis=False, maxsize=-1): + def add_queue( + self, name: str, mp: bool = False, redis: bool = False, maxsize: int = -1 + ): """ Create a new queue on the message bus * asyncio by default @@ -48,7 +50,6 @@ def add_queue(self, name, mp=False, redis=False, maxsize=-1): By default, there are no size limit enforced (maxsize=-1) """ assert name not in self.queues, "Queue {} already setup".format(name) - assert isinstance(maxsize, int) if self.redis_enabled and redis: self.queues[name] = RedisQueue(f"libmozevent:{name}") elif mp: From f54b518f13a0635e1a39b7e983206217e2f90e79 Mon Sep 17 00:00:00 2001 From: Marco Castelluccio Date: Thu, 5 Dec 2019 15:38:30 +0100 Subject: [PATCH 2/3] Use f-strings instead of format in the bus module --- libmozevent/bus.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/libmozevent/bus.py b/libmozevent/bus.py index b4a810d..e3c8ac7 100644 --- a/libmozevent/bus.py +++ b/libmozevent/bus.py @@ -49,7 +49,7 @@ def add_queue( * multiprocessing when mp=True By default, there are no size limit enforced (maxsize=-1) """ - assert name not in self.queues, "Queue {} already setup".format(name) + assert name not in self.queues, f"Queue {name} already setup" if self.redis_enabled and redis: self.queues[name] = RedisQueue(f"libmozevent:{name}") elif mp: @@ -61,7 +61,7 @@ async def send(self, name, payload): """ Send a message on a specific queue """ - assert name in self.queues, "Missing queue {}".format(name) + assert name in self.queues, f"Missing queue {name}" queue = self.queues[name] if isinstance(queue, RedisQueue): @@ -82,7 +82,7 @@ async def receive(self, name): Wait for a message on a specific queue This is a blocking operation """ - assert name in self.queues, "Missing queue {}".format(name) + assert name in self.queues, f"Missing queue {name}" queue = self.queues[name] logger.debug("Wait for message on bus", queue=name, instance=queue) @@ -125,11 +125,11 @@ async def run( Optionally applies some conversions methods This is also the "ideal" usage between 2 queues """ - assert input_name in self.queues, "Missing queue {}".format(input_name) + assert input_name in self.queues, f"Missing queue {input_name}" for output_name in output_names: assert ( output_name is None or output_name in self.queues - ), "Missing queue {}".format(output_name) + ), f"Missing queue {output_name}" assert ( sequential is True or len(output_names) == 0 From b523f10c746e53d66e189e80dc840841d732c4b2 Mon Sep 17 00:00:00 2001 From: Marco Castelluccio Date: Thu, 5 Dec 2019 15:40:13 +0100 Subject: [PATCH 3/3] Add type annotations to all methods in the bus module --- libmozevent/bus.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/libmozevent/bus.py b/libmozevent/bus.py index e3c8ac7..71c5b0b 100644 --- a/libmozevent/bus.py +++ b/libmozevent/bus.py @@ -6,7 +6,7 @@ import os import pickle from queue import Empty -from typing import Callable +from typing import Any, Callable import aioredis import structlog @@ -57,7 +57,7 @@ def add_queue( else: self.queues[name] = asyncio.Queue(maxsize=maxsize) - async def send(self, name, payload): + async def send(self, name: str, payload: Any): """ Send a message on a specific queue """ @@ -77,7 +77,7 @@ async def send(self, name, payload): None, lambda: queue.put(payload) ) - async def receive(self, name): + async def receive(self, name: str): """ Wait for a message on a specific queue This is a blocking operation