qemu/scripts
John Snow 7c6e446476 qapi/parser: demote QAPIExpression to Dict[str, Any]
Dict[str, object] is a stricter type, but with the way that code is
currently arranged, it is infeasible to enforce this strictness.

In particular, although expr.py's entire raison d'être is normalization
and type-checking of QAPI Expressions, that type information is not
"remembered" in any meaningful way by mypy because each individual
expression is not downcast to a specific expression type that holds all
the details of each expression's unique form.

As a result, all of the code in schema.py that deals with actually
creating type-safe specialized structures has no guarantee (myopically)
that the data it is being passed is correct.

There are two ways to solve this:

(1) Re-assert that the incoming data is in the shape we expect it to be, or
(2) Disable type checking for this data.

(1) is appealing to my sense of strictness, but I gotta concede that it
is asinine to re-check the shape of a QAPIExpression in schema.py when
expr.py has just completed that work at length. The duplication of code
and the nightmare thought of needing to update both locations if and
when we change the shape of these structures makes me extremely
reluctant to go down this route.

(2) allows us the chance to miss updating types in the case that types
are updated in expr.py, but it *is* an awful lot simpler and,
importantly, gets us closer to type checking schema.py *at
all*. Something is better than nothing, I'd argue.

So, do the simpler dumber thing and worry about future strictness
improvements later.

Signed-off-by: John Snow <jsnow@redhat.com>
Reviewed-by: Markus Armbruster <armbru@redhat.com>
Signed-off-by: Markus Armbruster <armbru@redhat.com>
Message-ID: <20240315152301.3621858-20-armbru@redhat.com>
2024-04-24 10:03:54 +02:00
..
ci ci/gitlab-pipeline-status: correct typos 2024-02-21 08:16:57 +03:00
coccinelle cleanup: Tweak and re-run return_directly.cocci 2022-12-14 16:19:35 +01:00
codeconverter scripts/: spelling fixes 2023-09-08 13:08:52 +03:00
coverage scripts/coverage: initial coverage comparison script 2023-04-04 15:16:29 +01:00
coverity-scan run-coverity-scan: add --check-upload-only option 2024-03-08 19:08:23 +01:00
kvm target/i386: enumerate bit 56 of MSR_IA32_VMX_BASIC 2023-09-21 10:39:51 +02:00
modules scripts/modules/module_block: Use Python 3 interpreter & add pseudo-main 2020-05-31 13:56:46 +02:00
oss-fuzz system: Rename softmmu/ directory as system/ 2023-10-08 21:08:08 +02:00
performance scripts/: spelling fixes 2023-09-08 13:08:52 +03:00
qapi qapi/parser: demote QAPIExpression to Dict[str, Any] 2024-04-24 10:03:54 +02:00
qemu-guest-agent qemu-guest-agent: freeze-hook to ignore dpkg files as well 2018-08-23 18:46:25 +02:00
qemugdb scripts/gdb: implement 'qemu bt' 2021-01-12 12:38:03 +01:00
qmp python: rename qemu.aqmp to qemu.qmp 2022-04-21 11:01:00 -04:00
simplebench scripts/: spelling fixes 2023-09-08 13:08:52 +03:00
tracetool tracetool: avoid invalid escape in Python string 2023-11-09 15:03:02 +08:00
analyse-9p-simpletrace.py drop "from __future__ import print_function" 2020-02-07 15:15:16 +01:00
analyse-locks-simpletrace.py scripts/analyse-locks-simpletrace.py: changed iteritems() to items() 2023-09-26 12:28:51 -04:00
analyze-inclusions scripts/analyze-inclusions: drop qemu-common.h from analysis 2022-04-21 16:56:55 +04:00
analyze-migration.py analyze-migration.py: Remove trick on parsing ramblocks 2024-01-29 11:02:12 +08:00
archive-source.sh make-release: do not ship dtc sources 2023-09-29 09:33:10 +02:00
block-coroutine-wrapper.py block-coroutine-wrapper: use qemu_get_current_aio_context() 2023-12-21 22:49:28 +01:00
check_sparse.py meson: move sparse detection to Meson and rewrite check_sparse.py 2020-10-04 18:36:23 +02:00
checkpatch.pl scripts/checkpatch: Support codespell checking 2024-01-11 14:13:07 +01:00
clean-header-guards.pl disas: Remove libvixl disassembler 2022-07-05 10:15:49 +02:00
clean-includes scripts/clean-includes: Update exclude list 2024-01-30 21:20:20 +03:00
cleanup-trace-events.pl scripts/cleanup-trace-events: Emit files in alphabetical order 2020-09-09 17:17:00 +01:00
cocci-macro-file.h compiler.h: replace QEMU_NORETURN with G_NORETURN 2022-04-21 17:03:51 +04:00
cpu-x86-uarch-abi.py scripts: drop comment about autogenerated CPU API file 2024-02-09 12:48:07 +00:00
decodetree.py tests/decode: Suppress "error: " string for expected-failure tests 2023-07-25 10:56:52 +01:00
device-crash-test python/qemu: rename command() to cmd() 2023-10-12 14:21:43 -04:00
disas-objdump.pl scripts: Switch to more portable Perl shebang 2017-05-10 10:19:24 +03:00
dump-guest-memory.py drop "from __future__ import print_function" 2020-02-07 15:15:16 +01:00
entitlement.sh scripts/entitlement.sh: Use backward-compatible cp flags 2021-11-30 22:25:58 +01:00
extract-vsssdk-headers
feature_to_c.py gdbstub: Add members to identify registers to GDBFeature 2024-02-28 09:10:11 +00:00
fix-multiline-comments.sh docs: move CODING_STYLE into the developer documentation 2021-02-24 11:05:21 +00:00
gensyscalls.sh linux-user: Add LoongArch syscall support 2022-07-04 11:08:57 +05:30
get_maintainer.pl scripts/get_maintainer.pl: don't print parentheses 2023-10-17 15:20:53 +02:00
git-submodule.sh scripts/git-submodule.sh: Don't rely on non-POSIX 'read' behaviour 2023-07-25 10:56:51 +01:00
git.orderfile scripts/git.orderfile: Display MAINTAINERS changes first 2023-01-13 16:22:57 +01:00
hxtool meson: generate hxtool files 2020-08-21 06:30:14 -04:00
kernel-doc scripts/kernel-doc: strip QEMU_ from function definitions 2021-03-24 14:24:40 +00:00
make-config-poison.sh exec/poison: Do not poison CONFIG_SOFTMMU 2023-06-05 12:04:29 -07:00
make-release make-release: switch to .xz format by default 2024-03-09 18:56:37 +03:00
meson-buildoptions.py meson-buildoptions: document the data at the top 2023-10-18 10:01:02 +02:00
meson-buildoptions.sh build-sys: add a "pixman" feature 2023-11-07 14:04:24 +04:00
meson.build scripts: add a XML preprocessor script 2023-06-27 17:08:56 +02:00
minikconf.py meson: infrastructure for building emulators 2020-08-21 06:30:17 -04:00
modinfo-collect.py scripts: make sure scripts are invoked via $(PYTHON) 2023-05-19 20:40:29 +02:00
modinfo-generate.py scripts: make sure scripts are invoked via $(PYTHON) 2023-05-19 20:40:29 +02:00
mtest2make.py mtest2make: stop disabling meson test timeouts 2024-01-12 13:23:48 +00:00
nsis.py scripts/nsis.py: Automatically package required DLLs of QEMU executables 2022-10-31 10:06:11 +01:00
probe-gdb-support.py scripts: make sure scripts are invoked via $(PYTHON) 2023-05-19 20:40:29 +02:00
python_qmp_updater.py scripts: add python_qmp_updater.py 2023-10-12 14:21:44 -04:00
qapi-gen.py qapi: move generator entrypoint into package 2020-10-10 11:37:47 +02:00
qemu-binfmt-conf.sh scripts/qemu-binfmt-conf: Add LoongArch to qemu_get_family() 2022-07-05 16:17:53 +05:30
qemu-gdb.py scripts/gdb: implement 'qemu bt' 2021-01-12 12:38:03 +01:00
qemu-stamp.py meson, configure: move --with-pkgversion, CONFIG_STAMP to meson 2022-05-07 07:46:58 +02:00
qemu-trace-stap qemu-trace-stap: changing SYSTEMTAP_TAPSET considered harmful. 2021-07-12 17:37:06 +01:00
qemu-version.sh build-sys: fix git version from -version 2020-10-12 11:50:23 -04:00
qom-cast-macro-clean-cocci-gen.py scripts: Add qom-cast-macro-clean-cocci-gen.py 2023-06-05 20:48:34 +02:00
refresh-pxe-roms.sh
render_block_graph.py python/qemu: rename command() to cmd() 2023-10-12 14:21:43 -04:00
replay-dump.py scripts/replay_dump: track total number of instructions 2024-01-08 13:58:35 +00:00
shaderinclude.py build-sys: fix crlf-ending C code 2023-02-02 10:44:23 +00:00
signrom.py drop "from __future__ import print_function" 2020-02-07 15:15:16 +01:00
simpletrace.py simpletrace: added simplified Analyzer2 class 2023-09-26 12:28:51 -04:00
symlink-install-tree.py Add information how to fix common build error on Windows in symlink-install-tree 2023-05-16 09:14:18 +02:00
tracetool.py tracetool: remove redundant --target-type / --target-name args 2024-03-12 14:52:07 -04:00
u2f-setup-gen.py scripts: Add u2f-setup-gen script 2020-08-31 08:23:39 +02:00
undefsym.py build: fix macOS --enable-modules build 2020-10-22 11:53:52 -04:00
update-linux-headers.sh linux-headers: riscv: add ptrace.h 2024-01-10 18:47:47 +10:00
update-mips-syscall-args.sh linux-user, mips: update syscall-args-o32.c.inc to Linux v5.13 2021-07-13 13:59:59 +02:00
update-syscalltbl.sh linux-user, scripts: add a script to update syscall.tbl 2020-03-20 16:02:00 +01:00
userfaultfd-wrlat.py migration: introduce 'userfaultfd-wrlat.py' script 2021-02-08 11:19:51 +00:00
vmstate-static-checker.py vmstate-static-checker: Recognize "num" field 2023-04-27 10:18:26 +02:00
xen-detect.c xen: Drop support for Xen versions below 4.7.1 2023-06-07 15:07:10 +01:00
xml-preprocess-test.py scripts: add a XML preprocessor script 2023-06-27 17:08:56 +02:00
xml-preprocess.py scripts/xml-preprocess: Make sure this script is invoked via the right Python 2023-10-12 00:37:39 +03:00