[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH v2 0/7] qapi: static typing conversion, pt5c
From: |
John Snow |
Subject: |
[PATCH v2 0/7] qapi: static typing conversion, pt5c |
Date: |
Tue, 7 Feb 2023 21:12:59 -0500 |
This is part five (c), and focuses on sharing strict types between
parser.py and expr.py.
gitlab: https://gitlab.com/jsnow/qemu/-/commits/python-qapi-cleanup-pt5c
Every commit should pass with:
- `isort -c qapi/`
- `flake8 qapi/`
- `pylint --rcfile=qapi/pylintrc qapi/`
- `mypy --config-file=qapi/mypy.ini qapi/`
Some notes on this series:
Patches 2 and 3 are almost entirely superseded by patch 5, but I wasn't
as confident that Markus would like patch 5, so these patches aren't
squashed quite as tightly as they could be -- I recommend peeking ahead
at the cover letters before reviewing the actual patch diffs.
By the end of this series, the only JSON-y types we have left are:
(A) QAPIExpression,
(B) JSONValue,
(C) _ExprValue.
The argument I'm making here is that QAPIExpression and JSONValue are
distinct enough to warrant having both types (for now, at least); and
that _ExprValue is specialized enough to also warrant its inclusion.
(Brutal honesty: my attempts at unifying this even further had even more
hacks and unsatisfying conclusions, and fully unifying these types
should probably wait until we're allowed to rely on some fairly modern
Python versions.)
John Snow (7):
qapi/expr: Split check_expr out from check_exprs
qapi/parser.py: add ParsedExpression type
qapi/expr: Use TopLevelExpr where appropriate
qapi/expr: add typing workaround for AbstractSet
qapi/parser: [RFC] add QAPIExpression
qapi: remove _JSONObject
qapi: remove JSON value FIXME
scripts/qapi/expr.py | 282 +++++++++++++++++++----------------------
scripts/qapi/parser.py | 51 +++++---
scripts/qapi/schema.py | 105 +++++++--------
3 files changed, 218 insertions(+), 220 deletions(-)
--
2.39.0
- [PATCH v2 0/7] qapi: static typing conversion, pt5c,
John Snow <=
- [PATCH v2 2/7] qapi/parser.py: add ParsedExpression type, John Snow, 2023/02/07
- [PATCH v2 6/7] qapi: remove _JSONObject, John Snow, 2023/02/07
- [PATCH v2 3/7] qapi/expr: Use TopLevelExpr where appropriate, John Snow, 2023/02/07
- [PATCH v2 1/7] qapi/expr: Split check_expr out from check_exprs, John Snow, 2023/02/07
- [PATCH v2 5/7] qapi/parser: [RFC] add QAPIExpression, John Snow, 2023/02/07