Blessings: a pythonic answer to curses
pypi.python.org
pypi.python.org
I'd love to hear what kind of projects other folks are doing with it. Any neat hacks? One of my fun little demos is this terminal-dwelling Game of Life: http://pypi.python.org/pypi/conway/. I was thinking of adding an interactive mode so you can draw your own patterns and set them free; it would be an excuse to add key trapping to Blessings.
A sequel to itertools: http://pypi.python.org/pypi/more-itertools/ (The upcoming 2.1 will include all the routines from the "recipes" section of the docs as well.)
A front end for the popular Nose test runner that shows a progress bar and tracebacks during tests (via blessings, of course): http://pypi.python.org/pypi/nose-progressive/
A shim for using Nose with Django (and making your tests go 4x as fast): http://pypi.python.org/pypi/django-nose/
While on the subject of Django, here's a little shim to let you write lightweight management subcommands (and generate commands at runtime, if you want to go crazy): http://pypi.python.org/pypi/django-subcommander/
Those people are the unabombers of programming.
Weird, isolated, and unhappy with everything.
If you hate this, you can tweak your terminal definition so curses apps don't do it. http://fixlog.blogspot.com.au/2006/09/stop-gnome-terminal-sc...
Why doesn't the module figure this out at import? Since there is a single terminal (at least right now), I don't see the point of having to instantiate a class. All that stuff could be provided directly by the module. Or if there's the possibility of controlling 2 terminals simultaneously, do something similar with the random module. Provide both functions and a class that can be instantiated if needed.
As for hanging everything off the Terminal instance, the motivation is that there's significant state on it that you might want to customize. Things like type (ANSI, vt100, etc.) and whether to suppress or force styling affect the result of formatting methods. See http://packages.python.org/blessings/#blessings.Terminal.__i.... I've several times benefitted by making a formatting-suppressed Terminal and passing it around.
I fully endorse you saying...
term = Terminal()
...at the top level of some module and referencing it there. Then you get the init-on-import behavior you want, but it's not forced on anybody who'd rather not have it.Cheers!
Also I can't believe how few lines of code it is...
Blessings will make my task a piece of cake. Thanks!