socket.makefile raises ValueError when mode = 'rt'
Antoon Pardon
antoon.pardon at rece.vub.ac.be
Wed Jan 9 09:14:46 EST 2013
Op 01/09/13 14:54, Dave Angel schreef:
> On 01/09/2013 08:22 AM, Antoon Pardon wrote:
>> This is using python 3.2.
...
>> But the documentation states:
>> socket.makefile(mode='r', buffering=None, *, encoding=None, errors=None,
>> newline=None)
>> Return a file object associated with the socket. The exact returned
>> type depends on the arguments given to makefile(). These arguments are
>> interpreted the same way as by the built-in open() function.
>>
>> And since 't' is allowed in the mode of the built-in open() function I
>> would consider this a bug.
>> Unless I am missing something?
> I believe that 't' was a new addition to mode, for Python 3.x So
> perhaps the socket library hasn't kept consistent with it.
>
> I don't really know the socket library. Does it even support text
> mode? Does that make sense? Remember that text mode means a different
> thing in 3.x than it did in 2.x
As far as I understand the code, it does support text. This is part of
the makefile method.
def makefile(self, mode="r", buffering=None, *,
encoding=None, errors=None, newline=None):
for c in mode:
if c not in {"r", "w", "b"}:
raise ValueError("invalid mode %r (only r, w, b allowed)")
writing = "w" in mode
reading = "r" in mode or not writing
assert reading or writing
binary = "b" in mode
...
if binary:
return buffer
text = io.TextIOWrapper(buffer, encoding, errors, newline)
text.mode = mode
return text
So it seems that if the mode is not binary an io.TextIOWrapper is
returned. That indicates to me that
text mode is supported.
--
Antoon Pardon
More information about the Python-list
mailing list