From 933e2d747b0e547fe39232b1c119ed52c1ccf27f Mon Sep 17 00:00:00 2001 From: Benjamin Braatz Date: Fri, 22 Oct 2021 10:01:33 +0200 Subject: [PATCH] Harmonise order of methods (process_conf at top). --- controlpi_plugins/util.py | 48 ++++++++++++++++++++------------------- controlpi_plugins/wait.py | 34 +++++++++++++-------------- 2 files changed, 42 insertions(+), 40 deletions(-) diff --git a/controlpi_plugins/util.py b/controlpi_plugins/util.py index 60fd17c..278fc3a 100644 --- a/controlpi_plugins/util.py +++ b/controlpi_plugins/util.py @@ -41,6 +41,8 @@ import asyncio from controlpi import BasePlugin, Message, MessageTemplate +from typing import List + class Log(BasePlugin): """Log messages on stdout. @@ -94,14 +96,14 @@ class Log(BasePlugin): - 'filter': list of message templates to be logged. """ - async def log(self, message: Message) -> None: - """Log received message on stdout using own name as prefix.""" - print(f"{self.name}: {message}") - def process_conf(self) -> None: """Register plugin as bus client.""" self.bus.register(self.name, 'Log', [], self.conf['filter'], self.log) + async def log(self, message: Message) -> None: + """Log received message on stdout using own name as prefix.""" + print(f"{self.name}: {message}") + async def run(self) -> None: """Run no code proactively.""" pass @@ -165,13 +167,6 @@ class Init(BasePlugin): - 'messages': list of messages to be sent. """ - async def execute(self, message: Message) -> None: - """Send configured messages.""" - for message in self.conf['messages']: - await self.bus.send(Message(self.name, message)) - # Give immediate reactions to messages opportunity to happen: - await asyncio.sleep(0) - def process_conf(self) -> None: """Register plugin as bus client.""" receives = [MessageTemplate({'target': {'const': self.name}, @@ -180,6 +175,13 @@ class Init(BasePlugin): for message in self.conf['messages']] self.bus.register(self.name, 'Init', sends, receives, self.execute) + async def execute(self, message: Message) -> None: + """Send configured messages.""" + for message in self.conf['messages']: + await self.bus.send(Message(self.name, message)) + # Give immediate reactions to messages opportunity to happen: + await asyncio.sleep(0) + async def run(self) -> None: """Send configured messages on startup.""" for message in self.conf['messages']: @@ -231,20 +233,9 @@ class Execute(BasePlugin): There are no required or optional configuration keys. """ - async def execute(self, message: Message) -> None: - """Set or send configured messages.""" - if message['command'] == 'set messages': - assert isinstance(message['messages'], list) - self.messages = list(message['messages']) - elif message['command'] == 'execute': - for message in self.messages: - await self.bus.send(Message(self.name, message)) - # Give immediate reactions to messages opportunity to happen: - await asyncio.sleep(0) - def process_conf(self) -> None: """Register plugin as bus client.""" - self.messages = [] + self.messages: List[Message] = [] receives = [MessageTemplate({'target': {'const': self.name}, 'command': {'const': 'set messages'}, 'messages': @@ -255,6 +246,17 @@ class Execute(BasePlugin): sends = [MessageTemplate()] self.bus.register(self.name, 'Execute', sends, receives, self.execute) + async def execute(self, message: Message) -> None: + """Set or send configured messages.""" + if message['command'] == 'set messages': + assert isinstance(message['messages'], list) + self.messages = list(message['messages']) + elif message['command'] == 'execute': + for message in self.messages: + await self.bus.send(Message(self.name, message)) + # Give immediate reactions to messages opportunity to happen: + await asyncio.sleep(0) + async def run(self) -> None: """Run no code proactively.""" pass diff --git a/controlpi_plugins/wait.py b/controlpi_plugins/wait.py index a66f00b..b6050d3 100644 --- a/controlpi_plugins/wait.py +++ b/controlpi_plugins/wait.py @@ -74,6 +74,13 @@ class Wait(BasePlugin): - 'seconds': number of seconds to wait. """ + def process_conf(self) -> None: + """Register plugin as bus client.""" + receives = [MessageTemplate({'target': {'const': self.name}, + 'command': {'const': 'wait'}})] + sends = [MessageTemplate({'event': {'const': 'finished'}})] + self.bus.register(self.name, 'Wait', sends, receives, self.wait) + async def wait(self, message: Message) -> None: """Wait configured time and send "finished" event.""" async def wait_coroutine(): @@ -82,13 +89,6 @@ class Wait(BasePlugin): # Done in separate task to not block queue awaiting this callback: asyncio.create_task(wait_coroutine()) - def process_conf(self) -> None: - """Register plugin as bus client.""" - receives = [MessageTemplate({'target': {'const': self.name}, - 'command': {'const': 'wait'}})] - sends = [MessageTemplate({'event': {'const': 'finished'}})] - self.bus.register(self.name, 'Wait', sends, receives, self.wait) - async def run(self) -> None: """Run no code proactively.""" pass @@ -132,6 +132,16 @@ class GenericWait(BasePlugin): There are no required or optional configuration keys. """ + def process_conf(self) -> None: + """Register plugin as bus client.""" + receives = [MessageTemplate({'target': {'const': self.name}, + 'command': {'const': 'wait'}, + 'seconds': {'type': 'number'}, + 'id': {'type': 'string'}})] + sends = [MessageTemplate({'event': {'const': 'finished'}, + 'id': {'type': 'string'}})] + self.bus.register(self.name, 'GenericWait', sends, receives, self.wait) + async def wait(self, message: Message) -> None: """Wait given time and send "finished" event with given "id".""" async def wait_coroutine(): @@ -143,16 +153,6 @@ class GenericWait(BasePlugin): # Done in separate task to not block queue awaiting this callback: asyncio.create_task(wait_coroutine()) - def process_conf(self) -> None: - """Register plugin as bus client.""" - receives = [MessageTemplate({'target': {'const': self.name}, - 'command': {'const': 'wait'}, - 'seconds': {'type': 'number'}, - 'id': {'type': 'string'}})] - sends = [MessageTemplate({'event': {'const': 'finished'}, - 'id': {'type': 'string'}})] - self.bus.register(self.name, 'GenericWait', sends, receives, self.wait) - async def run(self) -> None: """Run no code proactively.""" pass -- 2.34.1