[Python-3000] Proposed new language for newline parameter to TextIOBase
barry at python.org
Wed Aug 15 14:25:49 CEST 2007
-----BEGIN PGP SIGNED MESSAGE-----
On Aug 15, 2007, at 3:47 AM, Brett Cannon wrote:
> On 8/14/07, Guido van Rossum <guido at python.org> wrote:
>> I thought some more about the universal newlines situation, and I
>> think I can handle all the use cases with a single 'newline'
>> parameter. The use cases are:
>> (A) input use cases:
>> (1) newline=None: input with default universal newlines mode; lines
>> may end in \r, \n, or \r\n, and these are translated to \n.
>> (2) newline='': input with untranslated universal newlines mode;
>> may end in \r, \n, or \r\n, and these are returned untranslated.
>> (3) newline='\r', newline='\n', newline='\r\n': input lines must end
>> with the given character(s), and these are translated to \n.
>> (B) output use cases:
>> (1) newline=None: every \n written is translated to os.linesep.
>> (2) newline='': no translation takes place.
>> (3) newline='\r', newline='\n', newline='\r\n': every \n written is
>> translated to the value of newline.
> I like the options, but I would swap the meaning of None and the empty
> string. My reasoning for this is that for option 3 it says to me
> "here is a string representing EOL, and make it \n". So I would think
> of the empty string as, "I don't know what EOL is, but I want it
> translated to \n". Then None means, "I don't want any translation
> done" by the fact that the argument is not a string. In other words,
> the existence of a string argument means you want EOL translated to
> \n, and the specific value of 'newline' specifying how to determine
> what EOL is.
What Brett said.
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.7 (Darwin)
-----END PGP SIGNATURE-----
More information about the Python-3000