[issue21396] Python io implementation doesn't flush with write_through=True unlike C implementation

akira report at bugs.python.org
Wed Apr 30 12:36:57 CEST 2014


New submission from akira:

related: msg217596 (bufsize=1 is broken if subprocess module uses Python io)

TextIOWrapper.write behavior:

_pyio.py [1]:

        if self._line_buffering and (haslf or "\r" in s):
            self.flush()

textio.c [2]:

    if (self->write_through)
        needflush = 1;
    else if (self->line_buffering &&
        (haslf ||
         PyUnicode_FindChar(text, '\r', 0, PyUnicode_GET_LENGTH(text), 1) != -1))
        needflush = 1;

C implementation calls flush() if write_through=True, Python implementation doesn't.

[1]: http://hg.python.org/cpython/file/0b2e199ad088/Lib/_pyio.py#l1636
[2]: http://hg.python.org/cpython/file/0b2e199ad088/Modules/_io/textio.c#l1333

----------
components: IO
messages: 217600
nosy: akira
priority: normal
severity: normal
status: open
title: Python io implementation doesn't flush with write_through=True unlike C implementation
type: behavior
versions: Python 3.3, Python 3.4, Python 3.5

_______________________________________
Python tracker <report at bugs.python.org>
<http://bugs.python.org/issue21396>
_______________________________________


More information about the Python-bugs-list mailing list