This is an abstraction that represents a single message either sent to
or received from the server. It is used to subclass the
It was written such that it can be populated by either raw data or by a
dict, with the other form being generated on-demand, as-needed.
It behaves almost exactly like a dict, but has some extra methods and a
special constructor. (It should quack fairly convincingly.)
Signed-off-by: John Snow <firstname.lastname@example.org>
message.py | 196 +++++++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 196 insertions(+)
create mode 100644 message.py
diff --git a/message.py b/message.py
new file mode 100644
@@ -0,0 +1,196 @@
+QMP Message format and errors.
+This module provides the `Message` class, which represents a single QMP
+message sent to or from the server. Several error-classes that depend on
+knowing the format of this message are also included here.
+from json import JSONDecodeError
+from typing import (
+from error import (
+ Represents a single QMP protocol message.
+ QMP uses JSON objects as its basic communicative unit; so this
+ object behaves like a MutableMapping. It may be instantiated from
+ either another mapping (like a dict), or from raw bytes that still
+ need to be deserialized.
+ :param value: Initial value, if any.
+ :param eager: When true, attempt to serialize (or deserialize) the
+ initial value immediately, such that conversion exceptions
+ are raised during the call to the initialization method.