qapi: Require ASCII in schema

Python 2 and Python 3 have a wild history of whether strings
default to ascii or unicode, where Python 3 requires checking
isinstance(foo, basestr) to cover all strings, but where that
code is not portable to Python 2. It's simpler to just state
that we don't care about Unicode strings, and to just always
use the simpler isinstance(foo, str) everywhere.

I'm no python expert, so I'm basing it on this conversation:
https://lists.gnu.org/archive/html/qemu-devel/2014-09/msg05278.html

Backports commit fe2a9303c9e511462f662a415c2e9d2defe9b7ca from qemu
This commit is contained in:
Eric Blake 2018-02-19 14:18:46 -05:00 committed by Lioncash
parent 0fc76ffc1f
commit b18ac34baa
No known key found for this signature in database
GPG key ID: 4E3C3CC1031BA9C7

View file

@ -2,7 +2,7 @@
# QAPI helper library # QAPI helper library
# #
# Copyright IBM, Corp. 2011 # Copyright IBM, Corp. 2011
# Copyright (c) 2013 Red Hat Inc. # Copyright (c) 2013-2015 Red Hat Inc.
# #
# Authors: # Authors:
# Anthony Liguori <aliguori@us.ibm.com> # Anthony Liguori <aliguori@us.ibm.com>
@ -676,7 +676,7 @@ def parse_schema(input_file):
return exprs return exprs
def parse_args(typeinfo): def parse_args(typeinfo):
if isinstance(typeinfo, basestring): if isinstance(typeinfo, str):
struct = find_struct(typeinfo) struct = find_struct(typeinfo)
assert struct != None assert struct != None
typeinfo = struct['data'] typeinfo = struct['data']