Kevin Wolf <kw...@redhat.com> writes:

> Am 24.09.2014 um 09:34 hat Markus Armbruster geschrieben:
>> Eric Blake <ebl...@redhat.com> writes:
>> 
>> > On 09/23/2014 08:56 AM, Markus Armbruster wrote:
>> >> Eric Blake <ebl...@redhat.com> writes:
>> >>> Add check_keys to cover these situations, and update testcases to
>> >>> match.  A couple other tests (enum-missing-data, indented-expr) had
>> >>> to change since the validation added here occurs so early.
>> >>>
>> >>> While valid .json files won't trigger any of these cases, we might
>> >>> as well be nicer to developers that make a typo while trying to add
>> >>> new QAPI code.
>> >>>
>> >>> Signed-off-by: Eric Blake <ebl...@redhat.com>
>> >> 
>> >
>> >>> +def check_keys(expr_elem, meta, required, optional=[]):
>> >>> +    expr = expr_elem['expr']
>> >>> +    info = expr_elem['info']
>> >>> +    name = expr[meta]
>> >> 
>> >> Caller ensures expr[meta] exists.  Okay.
>> >> 
>> >>> +    if not isinstance(name, basestring):
>> >> 
>> >> I'm a Python noob: why basestring and not str?
>> >
>> > Me too.  No clue.  Copy and paste from existing code.
>> > http://git.qemu.org/?p=qemu.git;a=blob;f=scripts/qapi.py;h=77d46aa;hb=769188d3b#l361
>> 
>> Yes.  It's our only use of basestring.  Other places use isinstance(FOO,
>> str).
>> 
>> The basestring use comes from Kevin's commit b35284e.  Kevin, why
>> basestring and not str?
>
> Do I look as if I knew what I'm doing when I write Python code? :-)
>
> Apparently basestring is the superclass for ASCII and Unicode strings. I
> seem to dimly remember that I did indeed get a Unicode string somewhere
> (even though probably no non-ASCII characters in it) and it caused
> trouble. Might well have been here.

Aha.  These links apply:

https://stackoverflow.com/questions/11301138/how-to-check-if-variable-is-string-with-python-2-and-3-compatibility
https://en.wikipedia.org/wiki/File:Pieter_Bruegel_the_Elder_%281568%29_The_Blind_Leading_the_Blind.jpg

Reply via email to