New submission from Tal Einat <talei...@gmail.com>:

IDLE's shell doesn't currently handle \r and \b in any special way; they are 
written the the Tk Text widget which displays them in strange, system-dependent 
ways.

These are often used to show continuously updated progress, e.g. in text-based 
progress bars, without flooding the output, since they allow overwriting 
previously written output. If we implement handling for \r and \b, progress 
indicators such as these could finally work properly in IDLE's shell.

To make things worse, Tk's Text widget becomes increasingly slow when it wraps 
very long lines. IDLE's shell must wrap lines, and is therefore prone to such 
slowdowns. Attempting to show updating progress info using \r or \b results in 
such increasingly long lines of output, eventually slowing IDLE's shell down to 
a crawl. (The recent addition of squeezing of long outputs help for the case of 
single, very long outputs, but not with many short strings written on a single 
line.)

As a recent example, the basic Tensorflow tutorial shows such progress 
information for several of its stages. Due to the lack of handling for these 
control characters, it is practically unusable in the IDLE shell due to this. 
See issue #37762 about this.

Since the shell aims to closely emulate using an interactive terminal session, 
and since showing progress is so common in interactive work, I propose to add 
special handling of these two control characters in outputs written to the 
shell window.


Related issues:

#23220: Documents input/output effects of how IDLE runs user code (originally 
titled "IDLE does not display \b backspace correctly")

#24572: IDLE Text Output With ASCII Control Codes Not Working (marked as 
duplicate of #23220)

#37762: IDLE very slow due a super long line output in chunks

StackOverflow: what is the difference between cmd and idle when using tqdm? 
(https://stackoverflow.com/questions/35895864/what-is-the-difference-between-cmd-and-idle-when-using-tqdm)

----------
assignee: terry.reedy
components: IDLE
messages: 349440
nosy: cheryl.sabella, rhettinger, taleinat, terry.reedy
priority: normal
severity: normal
status: open
title: IDLE: Have the shell mimic terminal handling of \r and \b control 
characters in outputs
type: enhancement
versions: Python 3.9

_______________________________________
Python tracker <rep...@bugs.python.org>
<https://bugs.python.org/issue37827>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com

Reply via email to