From ba50d0c3e23264702491dd3cb607c2f12cc8f5ea Mon Sep 17 00:00:00 2001 From: Benjamin Braatz Date: Mon, 17 Jul 2023 03:04:36 +0200 Subject: [PATCH] Repair mypy and doctest. Bump to 0.3.0. --- controlpi/messagebus.py | 75 ++++++++++++++++++++------------------- controlpi_plugins/util.py | 2 +- setup.py | 2 +- 3 files changed, 41 insertions(+), 38 deletions(-) diff --git a/controlpi/messagebus.py b/controlpi/messagebus.py index 3c94ecf..264909e 100644 --- a/controlpi/messagebus.py +++ b/controlpi/messagebus.py @@ -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'}) diff --git a/controlpi_plugins/util.py b/controlpi_plugins/util.py index 0808d9d..f23ffcf 100644 --- a/controlpi_plugins/util.py +++ b/controlpi_plugins/util.py @@ -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. """ diff --git a/setup.py b/setup.py index 919aff4..275a14c 100644 --- 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", -- 2.34.1