python/qmp.py: add casts to JSON deserialization
authorJohn Snow <jsnow@redhat.com>
Fri, 10 Jul 2020 05:22:09 +0000 (01:22 -0400)
committerPhilippe Mathieu-Daudé <philmd@redhat.com>
Tue, 14 Jul 2020 20:22:22 +0000 (22:22 +0200)
commit2e2d93051753067fc5b888fdc18831127a4a900e
tree7d1270e3e77b8ce582e9adf37f61fdf2c4239c77
parentef5d474472426eda6abf8128cdb1d026af94862b
python/qmp.py: add casts to JSON deserialization

mypy and python type hints are not powerful enough to properly describe
JSON messages in Python 3.6. The best we can do, generally, is describe
them as Dict[str, Any].

Add casts to coerce this type for static analysis; but do NOT enforce
this type at runtime in any way.

Note: Python 3.8 adds a TypedDict construct which allows for the
description of more arbitrary Dictionary shapes. There is a third-party
module, "Pydantic", which is compatible with 3.6 that can be used
instead of the JSON library that parses JSON messages to fully-typed
Python objects, and may be preferable in some cases.

(That is well beyond the scope of this commit or series.)

Signed-off-by: John Snow <jsnow@redhat.com>
Reviewed-by: Kevin Wolf <kwolf@redhat.com>
Message-Id: <20200710052220.3306-6-jsnow@redhat.com>
Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com>
python/qemu/qmp.py