Hi, Lisandro Dalcin wrote: > I definitelly disagree with you. Cython 'pyx' has the chance of being > more backward compatible even that source 'py' files.
That's why I'm asking. There are reasons for and against this idea. > I would instead propose the following: > > * Iff 'from __future__ import unicode_literals' is issued, then Cython > should generate unicode strings REGARDELESS of the C-generated compile > time Python version. In Py2.X, that would be 'unicode' type, and in > Py3, 'str' type. Sure. > * Iff 'from __future__ import unicode_literals' is NOT issued, then at > compile time, Cython should create strings as is the default in the > compile-time Python version, that is, (byte) 'str' type as in Py2, or > (unicode) 'str' type as in Py3. This contradicts what you said above. If you want source compatibility, you can't change the semantics based on the compile time environment - except for the cases where the runtime environments really differ (such as byte/unicode identifiers). Imagine you had some latin-1 encoded XML byte literal in your code. In Py2, under your proposal, this would become a byte string that can be parsed. In Py3, however, this would suddenly become a unicode string and the parser would refuse to handle it, as it's no longer ISO encoded. > * Iff string literals are prefixed with 'b' as in b"abc", then Cython > sould create at compile time a (byte) 'str' type object in the case of > Py2.X (note: Python2.6 already does this), and a 'bytes' instance in > the case of Py3. That's the right thing to do. Stefan _______________________________________________ Cython-dev mailing list [email protected] http://codespeak.net/mailman/listinfo/cython-dev
