Since I claimed that supporting py2 & py3 in parallel would be easy for QEMU, I figured I ought to actually give it a try to backup that assertion.
This small patch series is the result of that effort. I tested this series on Fedora 26 using 2.7.13 and Python 3.6.2. To test with py3, I hacked config-host.mak to change the PYTHON variable to point to 'python3' binary, then compared the following generated content for the files: qmp-commands.h qapi-types.h qapi-visit.h qapi-event.h qmp-marshal.c qapi-types.c qapi-visit.c qapi-event.c qmp-introspect.c qmp-introspect.h with that generated under py2 to see they are identical. It is possible there's still more bugs hiding that could impact on 2.6 or earlier versions of 3.x or 2.7.x, so this probably needs a bit wider testing, but I think the series illustrates the broad scope of the changes we can expect. Only the need to adapt to different module import locations adds to the line count, and that's fairly minimal. Daniel P. Berrange (5): qapi: convert to use python print function instead of statement qapi: use items()/values() intead of iteritems()/itervalues() qapi: Use OrderedDict from standard library if available qapi: adapt to moved location of StringIO module in py3 qapi: Adapt to moved location of 'maketrans' function in py3 scripts/qapi.py | 41 +++++++++++++++++++++++++---------------- scripts/qapi2texi.py | 11 ++++++----- 2 files changed, 31 insertions(+), 21 deletions(-) -- 2.13.5