Repair mypy and doctest. Bump to 0.3.0.
authorBenjamin Braatz <bb@bbraatz.eu>
Mon, 17 Jul 2023 01:04:36 +0000 (03:04 +0200)
committerBenjamin Braatz <bb@bbraatz.eu>
Mon, 17 Jul 2023 01:04:36 +0000 (03:04 +0200)
controlpi/messagebus.py
controlpi_plugins/util.py
setup.py

index 3c94ecf9ef1892b2066d1bf140dd6c743faa10d8..264909ee86f5b5a39ece472fca9a8b2c6f72edac 100644 (file)
@@ -30,12 +30,12 @@ means that it wants to send arbitrary or receive all messages, respectively:
 >>> async def setup(bus):
 ...     bus.register('Logger', 'Test Plugin',
 ...                  [],
-...                  [MessageTemplate({})],
-...                  callback_for_receiver('Logger'))
+...                  [([MessageTemplate({})],
+...                    callback_for_receiver('Logger'))])
 ...     bus.register('Client 1', 'Test Plugin',
 ...                  [MessageTemplate({'k1': {'type': 'string'}})],
-...                  [MessageTemplate({'target': {'const': 'Client 1'}})],
-...                  callback_for_receiver('Client 1'))
+...                  [([MessageTemplate({'target': {'const': 'Client 1'}})],
+...                    callback_for_receiver('Client 1'))])
 
 While most clients should always use their own name for sending, this is not
 enforced and debugging or management clients could send messages on behalf
@@ -173,7 +173,7 @@ class Message(Dict[str, MessageValue]):
     """
 
     def __init__(self, sender: str,
-                 init: Dict[str, MessageValue] = None) -> None:
+                 init: Optional[Dict[str, MessageValue]] = None) -> None:
         """Initialise message.
 
         Message is initialised with given sender and possibly given
@@ -379,7 +379,7 @@ class MessageTemplate(Dict[str, JSONSchema]):
     True
     """
 
-    def __init__(self, init: Dict[str, JSONSchema] = None) -> None:
+    def __init__(self, init: Optional[Dict[str, JSONSchema]] = None) -> None:
         """Initialise message.
 
         Template is initialised empty or with given key-value pairs:
@@ -536,7 +536,8 @@ class MessageTemplate(Dict[str, JSONSchema]):
         for key in kwargs:
             self[key] = kwargs[key]
 
-    def setdefault(self, key: str, value: JSONSchema = None) -> JSONSchema:
+    def setdefault(self, key: str,
+                   value: Optional[JSONSchema] = None) -> JSONSchema:
         """Override setdefault to use validity checks.
 
         >>> t = MessageTemplate()
@@ -1017,16 +1018,18 @@ class MessageBus:
     ...     print("Setting up.")
     ...     bus.register('Logger', 'Test Plugin',
     ...                  [],
-    ...                  [MessageTemplate({})],
-    ...                  callback_for_receiver('Logger'))
+    ...                  [([MessageTemplate({})],
+    ...                    callback_for_receiver('Logger'))])
     ...     bus.register('Client 1', 'Test Plugin',
     ...                  [MessageTemplate({'k1': {'type': 'string'}})],
-    ...                  [MessageTemplate({'target': {'const': 'Client 1'}})],
-    ...                  callback_for_receiver('Client 1'))
+    ...                  [([MessageTemplate({'target':
+    ...                                      {'const': 'Client 1'}})],
+    ...                    callback_for_receiver('Client 1'))])
     ...     bus.register('Client 2', 'Test Plugin',
     ...                  [MessageTemplate({})],
-    ...                  [MessageTemplate({'target': {'const': 'Client 2'}})],
-    ...                  callback_for_receiver('Client 2'))
+    ...                  [([MessageTemplate({'target':
+    ...                                      {'const': 'Client 2'}})],
+    ...                    callback_for_receiver('Client 2'))])
 
     The bus itself is addressed by the empty string. It sends messages for
     each registration and deregestration of a client with a key 'event' and
@@ -1121,21 +1124,21 @@ class MessageBus:
         ...     bus = MessageBus()
         ...     bus.register('Logger', 'Test Plugin',
         ...                  [],    # send nothing
-        ...                  [MessageTemplate({})],  # receive everything
-        ...                  callback)
+        ...                  [([MessageTemplate({})],  # receive everything
+        ...                    callback)])
         ...     bus.register('Client 1', 'Test Plugin',
         ...                  [MessageTemplate({'k1': {'type': 'string'}})],
         ...                      # send with key 'k1' and string value
-        ...                  [MessageTemplate({'target':
-        ...                                    {'const': 'Client 1'}})],
+        ...                  [([MessageTemplate({'target':
+        ...                                      {'const': 'Client 1'}})],
         ...                      # receive for this client
-        ...                  callback)
+        ...                    callback)])
         ...     bus.register('Client 2', 'Test Plugin',
         ...                  [MessageTemplate({})],  # send arbitrary
-        ...                  [MessageTemplate({'target':
-        ...                                    {'const': 'Client 2'}})],
+        ...                  [([MessageTemplate({'target':
+        ...                                      {'const': 'Client 2'}})],
         ...                      # receive for this client
-        ...                  callback)
+        ...                    callback)])
         >>> asyncio.run(main())
         """
         if not client:
@@ -1166,9 +1169,9 @@ class MessageBus:
         ...     bus = MessageBus()
         ...     bus.register('Client 1', 'Test Plugin',
         ...                  [MessageTemplate({'k1': {'type': 'string'}})],
-        ...                  [MessageTemplate({'target':
-        ...                                    {'const': 'Client 1'}})],
-        ...                  callback)
+        ...                  [([MessageTemplate({'target':
+        ...                                      {'const': 'Client 1'}})],
+        ...                    callback)])
         ...     bus.unregister('Client 1')
         >>> asyncio.run(main())
         """
@@ -1237,14 +1240,14 @@ class MessageBus:
         ...     bus = MessageBus()
         ...     bus.register('Client 1', 'Test Plugin',
         ...                  [MessageTemplate({'k1': {'type': 'string'}})],
-        ...                  [MessageTemplate({'target':
-        ...                                    {'const': 'Client 1'}})],
-        ...                  callback)
+        ...                  [([MessageTemplate({'target':
+        ...                                      {'const': 'Client 1'}})],
+        ...                    callback)])
         ...     bus.register('Client 2', 'Test Plugin',
         ...                  [MessageTemplate({})],
-        ...                  [MessageTemplate({'target':
-        ...                                    {'const': 'Client 2'}})],
-        ...                  callback)
+        ...                  [([MessageTemplate({'target':
+        ...                                      {'const': 'Client 2'}})],
+        ...                    callback)])
         ...     bus_task = asyncio.create_task(bus.run())
         ...     await bus.send({'sender': 'Client 1', 'target': 'Client 2',
         ...                     'k1': 'Test'})
@@ -1279,14 +1282,14 @@ class MessageBus:
         ...     bus = MessageBus()
         ...     bus.register('Client 1', 'Test Plugin',
         ...                  [MessageTemplate({'k1': {'type': 'string'}})],
-        ...                  [MessageTemplate({'target':
-        ...                                    {'const': 'Client 1'}})],
-        ...                  callback)
+        ...                  [([MessageTemplate({'target':
+        ...                                      {'const': 'Client 1'}})],
+        ...                    callback)])
         ...     bus.register('Client 2', 'Test Plugin',
         ...                  [MessageTemplate({})],
-        ...                  [MessageTemplate({'target':
-        ...                                    {'const': 'Client 2'}})],
-        ...                  callback)
+        ...                  [([MessageTemplate({'target':
+        ...                                      {'const': 'Client 2'}})],
+        ...                    callback)])
         ...     bus_task = asyncio.create_task(bus.run())
         ...     bus.send_nowait({'sender': 'Client 1', 'target': 'Client 2',
         ...                      'k1': 'Test'})
index 0808d9d667571202f280f1161338f95cdb4a5507..f23ffcf14fa3b34ab6f1e091f5b62e5e3a8bda32 100644 (file)
@@ -351,7 +351,7 @@ class Alias(BasePlugin):
     ...     {"Test Alias": {"plugin": "Alias",
     ...                     "from": {"id": {"const": 42}},
     ...                     "to": 42}}, []))
-    data.to must be valid by one of anyOf definition
+    data.to cannot be validated by any definition
     Configuration for 'Test Alias' is not valid.
     """
 
index 919aff464018dd60d8aa5a4da8830f777545a6d9..275a14cefcee9f0e339419f69899afdf58143ac2 100644 (file)
--- a/setup.py
+++ b/setup.py
@@ -5,7 +5,7 @@ with open("README.md", "r") as readme_file:
 
 setuptools.setup(
     name="controlpi",
-    version="0.2.0",
+    version="0.3.0",
     author="Graph-IT GmbH",
     author_email="info@graph-it.com",
     description="Control-Pi Infrastructure",