Re: [Qemu-devel] [PATCH v4 06/51] qapi: pass 'if' condition into QAPISchemaEntity objects

2018-02-06 Thread Markus Armbruster
Marc-André Lureau  writes:

> Hi
>
> On Tue, Feb 6, 2018 at 11:12 AM, Markus Armbruster  wrote:
>> Marc-André Lureau  writes:
>>
>>> Built-in objects remain unconditional.  Explicitly defined objects
>>> use the condition specified in the schema.  Implicitly defined
>>> objects inherit their condition from their users.  For most of them,
>>> there is exactly one user, so the condition to use is obvious.  The
>>> exception is the wrapped type's generated for simple union variants,
>>> which can be shared by any number of simple unions.  The tight
>>> condition would be the disjunction of the conditions of these simple
>>> unions.  For now, use wrapped type's condition instead.  Much
>>> simpler and good enough for now.
>>>
>>> Signed-off-by: Marc-André Lureau 
>>> Reviewed-by: Markus Armbruster 
>>> ---
>>>  scripts/qapi.py | 98 
>>> ++---
>>>  1 file changed, 66 insertions(+), 32 deletions(-)
>>>
>>> diff --git a/scripts/qapi.py b/scripts/qapi.py
>>> index 27df0fcf48..8f54dead8d 100644
>>> --- a/scripts/qapi.py
>>> +++ b/scripts/qapi.py
>>> @@ -991,8 +991,17 @@ def check_exprs(exprs):
>>>  # Schema compiler frontend
>>>  #
>>>
>>> +def listify_cond(ifcond):
>>> +if not ifcond:
>>> +return []
>>> +elif not isinstance(ifcond, list):
>>> +return [ifcond]
>>> +else:
>>> +return ifcond
>>
>> pylint complains:
>>
>> R:995, 4: Unnecessary "else" after "return" (no-else-return)
>>
>> Matter of taste.  Mine happens to agree with pylint's.  Suggest:
>>
>>def listify_cond(ifcond):
>>if not ifcond:
>>return []
>>if not isinstance(ifcond, list):
>>return [ifcond]
>>return ifcond
>>
>
> There are so many errors with pylint, that I don't bother running it.

pylint reports lots of stuff that is actually just fine.

> How did you notice? you run diff of error output between commits?

Yes.

> pycodestyle --diff is more convenient, and silent on this code.

Formerly known as pep8.  Confusingly, Fedora 26 packages both
separately.  Thanks for the pointer.

> Feel free to touch if you pick the patch.

Okay.

>>> +
>>> +
>>>  class QAPISchemaEntity(object):
>>> -def __init__(self, name, info, doc):
>>> +def __init__(self, name, info, doc, ifcond=None):
>>>  assert isinstance(name, str)
>>>  self.name = name
>>>  # For explicitly defined entities, info points to the (explicit)
>> [...]
>>



Re: [Qemu-devel] [PATCH v4 06/51] qapi: pass 'if' condition into QAPISchemaEntity objects

2018-02-06 Thread Marc-André Lureau
Hi

On Tue, Feb 6, 2018 at 11:12 AM, Markus Armbruster  wrote:
> Marc-André Lureau  writes:
>
>> Built-in objects remain unconditional.  Explicitly defined objects
>> use the condition specified in the schema.  Implicitly defined
>> objects inherit their condition from their users.  For most of them,
>> there is exactly one user, so the condition to use is obvious.  The
>> exception is the wrapped type's generated for simple union variants,
>> which can be shared by any number of simple unions.  The tight
>> condition would be the disjunction of the conditions of these simple
>> unions.  For now, use wrapped type's condition instead.  Much
>> simpler and good enough for now.
>>
>> Signed-off-by: Marc-André Lureau 
>> Reviewed-by: Markus Armbruster 
>> ---
>>  scripts/qapi.py | 98 
>> ++---
>>  1 file changed, 66 insertions(+), 32 deletions(-)
>>
>> diff --git a/scripts/qapi.py b/scripts/qapi.py
>> index 27df0fcf48..8f54dead8d 100644
>> --- a/scripts/qapi.py
>> +++ b/scripts/qapi.py
>> @@ -991,8 +991,17 @@ def check_exprs(exprs):
>>  # Schema compiler frontend
>>  #
>>
>> +def listify_cond(ifcond):
>> +if not ifcond:
>> +return []
>> +elif not isinstance(ifcond, list):
>> +return [ifcond]
>> +else:
>> +return ifcond
>
> pylint complains:
>
> R:995, 4: Unnecessary "else" after "return" (no-else-return)
>
> Matter of taste.  Mine happens to agree with pylint's.  Suggest:
>
>def listify_cond(ifcond):
>if not ifcond:
>return []
>if not isinstance(ifcond, list):
>return [ifcond]
>return ifcond
>

There are so many errors with pylint, that I don't bother running it.
How did you notice? you run diff of error output between commits?

pycodestyle --diff is more convenient, and silent on this code.

Feel free to touch if you pick the patch.

>> +
>> +
>>  class QAPISchemaEntity(object):
>> -def __init__(self, name, info, doc):
>> +def __init__(self, name, info, doc, ifcond=None):
>>  assert isinstance(name, str)
>>  self.name = name
>>  # For explicitly defined entities, info points to the (explicit)
> [...]
>



-- 
Marc-André Lureau



Re: [Qemu-devel] [PATCH v4 06/51] qapi: pass 'if' condition into QAPISchemaEntity objects

2018-02-06 Thread Markus Armbruster
Marc-André Lureau  writes:

> Built-in objects remain unconditional.  Explicitly defined objects
> use the condition specified in the schema.  Implicitly defined
> objects inherit their condition from their users.  For most of them,
> there is exactly one user, so the condition to use is obvious.  The
> exception is the wrapped type's generated for simple union variants,
> which can be shared by any number of simple unions.  The tight
> condition would be the disjunction of the conditions of these simple
> unions.  For now, use wrapped type's condition instead.  Much
> simpler and good enough for now.
>
> Signed-off-by: Marc-André Lureau 
> Reviewed-by: Markus Armbruster 
> ---
>  scripts/qapi.py | 98 
> ++---
>  1 file changed, 66 insertions(+), 32 deletions(-)
>
> diff --git a/scripts/qapi.py b/scripts/qapi.py
> index 27df0fcf48..8f54dead8d 100644
> --- a/scripts/qapi.py
> +++ b/scripts/qapi.py
> @@ -991,8 +991,17 @@ def check_exprs(exprs):
>  # Schema compiler frontend
>  #
>  
> +def listify_cond(ifcond):
> +if not ifcond:
> +return []
> +elif not isinstance(ifcond, list):
> +return [ifcond]
> +else:
> +return ifcond

pylint complains:

R:995, 4: Unnecessary "else" after "return" (no-else-return)

Matter of taste.  Mine happens to agree with pylint's.  Suggest:

   def listify_cond(ifcond):
   if not ifcond:
   return []
   if not isinstance(ifcond, list):
   return [ifcond]
   return ifcond

> +
> +
>  class QAPISchemaEntity(object):
> -def __init__(self, name, info, doc):
> +def __init__(self, name, info, doc, ifcond=None):
>  assert isinstance(name, str)
>  self.name = name
>  # For explicitly defined entities, info points to the (explicit)
[...]



Re: [Qemu-devel] [PATCH v4 06/51] qapi: pass 'if' condition into QAPISchemaEntity objects

2018-02-04 Thread Markus Armbruster
Marc-André Lureau  writes:

> Built-in objects remain unconditional.  Explicitly defined objects
> use the condition specified in the schema.  Implicitly defined
> objects inherit their condition from their users.  For most of them,
> there is exactly one user, so the condition to use is obvious.  The
> exception is the wrapped type's generated for simple union variants,

Editing accident: you changed "is the wrapper types" to "is the wrapped
type's" here instead of

> which can be shared by any number of simple unions.  The tight
> condition would be the disjunction of the conditions of these simple
> unions.  For now, use wrapped type's condition instead.  Much

changing "use wrapped type's"  to "use the wrapped type's" here.  Can
touch up on commit.

> simpler and good enough for now.
>
> Signed-off-by: Marc-André Lureau 
> Reviewed-by: Markus Armbruster 

R-by stands.