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/

Reply via email to