[Python-3000] Proposed new language for newline parameter to TextIOBase

Barry Warsaw barry at python.org
Wed Aug 15 14:25:49 CEST 2007


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

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;  
>> lines
>> 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.
- -Barry

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.7 (Darwin)

iQCVAwUBRsLwznEjvBPtnXfVAQKMQAP9FzztQ09re2pLBN/uNKrLCf2i5Z1ENZQU
Rbfwv8Ek2ZcBurvDht8Oyj3wgOzOKUhk6XfHdHD0Mf3CW9XL6dMvSZHQOv3sORQF
Fh6MI4B9HezL/Fuy2C9OenM0TaYHkH5aoYagIjM9/LOezEkxliHU/gOMGY4657dG
Turqz+xPunw=
=xC3V
-----END PGP SIGNATURE-----


More information about the Python-3000 mailing list