Harmonise order of methods (process_conf at top).
authorBenjamin Braatz <bb@bbraatz.eu>
Fri, 22 Oct 2021 08:01:33 +0000 (10:01 +0200)
committerBenjamin Braatz <bb@bbraatz.eu>
Fri, 22 Oct 2021 08:01:33 +0000 (10:01 +0200)
controlpi_plugins/util.py
controlpi_plugins/wait.py

index 60fd17c0cadf26fb183941df4a93409258762931..278fc3a2075e30ed76437ca1c2fba476cda84efa 100644 (file)
@@ -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
index a66f00b1cd520298a33799bd3e756b643c7f8594..b6050d3fd67726bdd69b07ab584ec4a3451690ba 100644 (file)
@@ -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