The `a or b` syntax evaluates if a is 'trueish' and if so returns a if not
returns b so `c = None or {}` -> c == {} but `c = {'a': 1} or {}` -> c ==
{'a': 1}
See
https://docs.python.org/3.5/reference/expressions.html#grammar-token-or_test
for the docs on or. and works almost the same, but returns a if a is False
and b in a is True.
In the grammar for calls it should be looking for thing like "'**'
expression" which means in the parsing anything that is part of the
expression gets evaluated before the unpacking of the mapping. If you
chase far enough back in the grammar an 'or_test' is an 'expression' (I may
be butchering the terminology here, only just learned how lexing/parsing
works a few weeks ago) so it should be fully evaluated before trying to
unpack.
See https://docs.python.org/3.5/reference/expressions.html#calls for the
official docs.
I suspect the source of this bug is that the grammar is getting rearranged
a bit to allow for things like d = {**other_dict, 'x':6} and b = (*a, *c)
to work as expected and something did not get changed quite right.
Tom
On Wed, May 13, 2015 at 8:33 PM Juan Nunez-Iglesias <jni.s...@gmail.com>
wrote:
> Fascinating! Can you "unpack" (heh) that error for us mere mortals? In
> particular:
>
> - never seen that "or" syntax before... Is it coercing both expressions as
> bool, or is it evaluating to left if bool(left) evaluates to True, else to
> right?
> - Why do you expect the second expression to work? Is ** supposed to have
> lower preference than "or"? (Which seems weird to me.)
>
> Thanks!
>
> Juan.
>
> On Thu, May 14, 2015 at 5:08 AM, Thomas Caswell <tcasw...@gmail.com>
> wrote:
>
>>
>> The failures on python nightly are currently due to a bug in python (
>> http://bugs.python.org/issue24176)
>>
>> Tom
>>
>>
>> ------------------------------------------------------------------------------
>> One dashboard for servers and applications across Physical-Virtual-Cloud
>> Widest out-of-the-box monitoring support with 50+ applications
>> Performance metrics, stats and reports that give you Actionable Insights
>> Deep dive visibility with transaction tracing using APM Insight.
>> http://ad.doubleclick.net/ddm/clk/290420510;117567292;y
>> _______________________________________________
>> Matplotlib-devel mailing list
>> Matplotlib-devel@lists.sourceforge.net
>> https://lists.sourceforge.net/lists/listinfo/matplotlib-devel
>>
>>
>
> ------------------------------------------------------------------------------
> One dashboard for servers and applications across Physical-Virtual-Cloud
> Widest out-of-the-box monitoring support with 50+ applications
> Performance metrics, stats and reports that give you Actionable Insights
> Deep dive visibility with transaction tracing using APM Insight.
> http://ad.doubleclick.net/ddm/clk/290420510;117567292;y
> _______________________________________________
> Matplotlib-devel mailing list
> Matplotlib-devel@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/matplotlib-devel
>
------------------------------------------------------------------------------
One dashboard for servers and applications across Physical-Virtual-Cloud
Widest out-of-the-box monitoring support with 50+ applications
Performance metrics, stats and reports that give you Actionable Insights
Deep dive visibility with transaction tracing using APM Insight.
http://ad.doubleclick.net/ddm/clk/290420510;117567292;y
_______________________________________________
Matplotlib-devel mailing list
Matplotlib-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-devel