well, my two cents here is that I do clear my screen - a lot. In the same use case as Guido's mentioned - exploratory programming. But when I do it, I do in a manner that was discussed in the original thread - by using CTRL+L, which is of course terminal-specific but clears everything both in Python's REPL and ipython.
As a comparison, I also code almost daily in Elixir, which has a REPL as well, but for some weird reason, CTRL+L does not work there. [image: --] Felipe V. Rodrigues [image: https://]felipevr.com <https://felipevr.com> On Sun, Dec 20, 2020 at 8:48 PM Christopher Barker <python...@gmail.com> wrote: > On Sun, Dec 20, 2020 at 1:23 PM Cameron Simpson <c...@cskk.id.au> wrote: > >> On 20Dec2020 08:51, Christopher Barker <python...@gmail.com> wrote: >> >On Sat, Dec 19, 2020 at 8:53 PM Guido van Rossum <gu...@python.org> >> wrote: >> >> at sounds like a very special status. Why not os.clear()? >> >> My anger at programmes which gratuitously clear the screen is large. >> > > There are a LOT of bad things one can do with Python, I don't think we > need to make something difficult simply because it can be abused. > > One problem is: what does it mean? On a terminal, easy. But in a GUI? >> Clear the screen (possibly forbidden)? A window? The "main" window? >> Etc. >> > > It would be meaningless outside of a terminal -- call it `clear_term` if > you want. > Even print() doesn't have a consistent useful meaning in a GUI program. > > Anyway, I think it should be in curses (or be loaded via curses on >> demand), > > > That would be great, though I just looked at the 3.9 docs and saw: > "The Windows version of Python doesn’t include the curses module." > > So we're pretty much back to square one. > > I think the idea here is that we want a simple way, out of the box that > people can use to clear the terminal, that will work on most commonly > configured systems out of the box, and can be overridden (monkey patched) > to work in IDEs (e.g. Idle), custom terminal emulators (e.g. iPython > Qtconsole), etc. We don't want to require a full curses implementation. > > and just have a clear_screen function thus: >> >> def clear_screen(): >> setupterm() >> print(ti_getstr('cl'), end='', flush=True) >> > > I just tried that on my mac and tigetstr('cl') simply returns None with no > effect. > > I've only looked for a coupe minutes, but it seems you need to set up > curses in order ot use it, so maybe not teh best way to go for a single > action? > > The tutorial seems to indicate there is a clear method available, so I did > try that, and it does nothing on my Mac with the default terminal app: > > def clear_screen(): > from curses import wrapper > > def clr(stdscr): > # Clear screen > stdscr.clear() > wrapper(clr) > clear_screen() > > I may have done something wrong, so anyone please correct -- but it's sure > looking to me like curses is not a solution to this problem. > > here is that this is trivial function > > > clearly not trivial to write for someone new to curses :-) > > >> On terminals, see above. In a GUI, who knows? And how does one tell the >> programme which it is talking to? >> > > That would be up to the GUI toolkit to provide if it includes a terminal > emulator of some sort. > > >is it so bad to use a subprocess? >> >> Yes. It is _really slow_, > > > could it possible be slow enough to matter? not the kind of thing that's > in a tight loop. > > depends on external reaources which might not >> be there, > > > oh, like the curses lib ;-) > > >> and subprocess brings other burdens too. Python comes with >> curses and that knows directly how to do this. >> > > not that I could figure out, and apparently not on Windows. > > Anyway, the idea (I have) is that this would be somewhere like > os.clear_term(), and the implementation would be platform specific -- if on > *nix systems, it used curses, great! > > The other thought is that this has been in iPython, with the simple > os.system() implementation, for years, so it eather works well enough, or > no one ever uses it :-) > > I looked at iPython issues, and apparently there is (or was) an issue with > Windows if the current working dir is a network mount, but that's all I > found. Of course, there are 1400 open issues, so I may have missed one :-) > > Anyway, not my area of expertise, I just think it's a good idea if someone > with the appropriate expertise wants to step up and write it. > > -CHB > > -- > Christopher Barker, PhD > > Python Language Consulting > - Teaching > - Scientific Software Development > - Desktop GUI and Web Development > - wxPython, numpy, scipy, Cython > _______________________________________________ > Python-ideas mailing list -- python-ideas@python.org > To unsubscribe send an email to python-ideas-le...@python.org > https://mail.python.org/mailman3/lists/python-ideas.python.org/ > Message archived at > https://mail.python.org/archives/list/python-ideas@python.org/message/IL2WSB5P4OTQURVBOHYK3QJ3JZOMYZYF/ > Code of Conduct: http://python.org/psf/codeofconduct/ >
_______________________________________________ Python-ideas mailing list -- python-ideas@python.org To unsubscribe send an email to python-ideas-le...@python.org https://mail.python.org/mailman3/lists/python-ideas.python.org/ Message archived at https://mail.python.org/archives/list/python-ideas@python.org/message/CYEZB44L62U6K3OS5OVHLKDAC62WUGNP/ Code of Conduct: http://python.org/psf/codeofconduct/