On Mon, 18 Aug 2008, Stefan Behnel wrote:

> Hi,
>
> Dag Sverre Seljebotn wrote:
>> There's a problem if you do an empty print (newline
>> print) right after a non-newline print. The attached test case works in
>> Py2 but fails in Py3 (the line with "2 2 2" is output as "2 2 2 " instead).
>
>> for i in range(3):
>>        print 2,
>> print
>
> Right, that makes sense. The Py3 print() function (that we map the print
> statement to when running under Py3) has an explicit 'end' keyword that keeps
> it from having to do any "softspace" special casing. So this is a difference
> that is hard to emulate in Py3, which (as opposed to Py2) does not expose the
> softspace hint at all.
>
> http://www.python.org/dev/peps/pep-3105/
>
> Open poll:
>
> a) would it be acceptable if this difference persisted, i.e. if Cython code
>   that uses something like the example above would behave different in Py3
> b) should Cython try to special case this in Py3 to emulate the Py2 behaviour
>   in common cases
> c) should Cython stick to the Py3 behaviour also in Py2 (thus breaking the
>   complete semantics of the print statement)
>
> ?

I certainly think (b) is the rigth option, depending on how hard and/or 
hackish it is. After that is should fall back to (a). I really don't like 
option (c), not only does it break existing code but the print statement 
doesn't even exist in Py3 so trying to "match" it is probably a bad thing.


>
> (I am not asking here if we should support the print() function in Cython
> source code, which we may do anyway some day. But that's orthogonal.)
>
> Stefan
> _______________________________________________
> Cython-dev mailing list
> [email protected]
> http://codespeak.net/mailman/listinfo/cython-dev
>
_______________________________________________
Cython-dev mailing list
[email protected]
http://codespeak.net/mailman/listinfo/cython-dev

Reply via email to