[issue42044] Running Python in unbuffered mode may not write all contents to the console

2021-06-11 Thread Fabio Zadrozny


Fabio Zadrozny  added the comment:

Seems fair. I just did a pull request to remove those limits. 

Please let me know if you think something else is needed there.

--

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue42044] Running Python in unbuffered mode may not write all contents to the console

2021-06-11 Thread Fabio Zadrozny


Change by Fabio Zadrozny :


--
keywords: +patch
pull_requests: +25264
stage:  -> patch review
pull_request: https://github.com/python/cpython/pull/26678

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue42044] Running Python in unbuffered mode may not write all contents to the console

2020-10-15 Thread Eryk Sun


Eryk Sun  added the comment:

Text mode without a buffer isn't reliable. That said, Python 3.9 no longer 
supports Windows 7, so it can remove the 32 KiB limit on console I/O files.

The size limit in Windows 7 and earlier is due to the LPC-based pseudo-files 
that it uses for I/O. Under the hood, console pseudo-files use a 64 KiB heap 
that's shared between the console host process and client processes. 

In Windows 8+, console files are real files that use the ConDrv device instead 
of LPC, in which case there is practically no limit on the size of buffers that 
can be read and written.

--
nosy: +eryksun

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue42044] Running Python in unbuffered mode may not write all contents to the console

2020-10-15 Thread Fabio Zadrozny


New submission from Fabio Zadrozny :

When running Python in unbuffered mode it may fail to write all the contents to 
the actual console (on Windows).

The code below can reproduce the issue: 

```
import sys
s = ''
for i in range(1,301):
s += f"{str(i*100).zfill(10)}{'x' * 89}\n"

sys.stdout.write(s)
```

When calling it with `python -u code.py` it'll write only up to line 15000 and 
when calling it with `python code.py` it'll write up to line 3.

This fails because in `_textiowrapper_writeflush` it doesn't verify if all the 
contents have been indeed written and thus fails in a partial write. In 
buffered mode it works because `_io_BufferedWriter_write_impl` does the job 
properly.

I'm a bit uncertain on why doesn't `_io__WindowsConsoleIO_write_impl` itself do 
the loop to write everything instead of leaving it up to callers to do that 
work (apparently due to issue11395 it says that it only writes partially, but 
maybe the fix could've been to loop inside of 
`_io__WindowsConsoleIO_write_impl` to write everything instead of expecting 
callers to handle partial writes...

--
components: IO
messages: 378684
nosy: fabioz
priority: normal
severity: normal
status: open
title: Running Python in unbuffered mode may not write all contents to the 
console
type: behavior
versions: Python 3.8

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com