Re: [Python-checkins] CVS: python/dist/src/Lib/curses __init__.py,NONE,1.1 wrapper.py,NONE,1.1
On Sat, Jun 10, 2000 at 04:06:55PM -0700, A.M. Kuchling wrote:
... def wrapper(func, *rest): """Wrapper function that initializes curses and calls another function, restoring normal keyboard/screen behavior on error. The callable object 'func' is then passed the main window 'stdscr' as its first argument, followed by any other arguments passed to wrapper(). """
res = None try: # Initialize curses stdscr=curses.initscr() # Turn off echoing of keys, and enter cbreak mode, # where no buffering is performed on keyboard input curses.noecho() ; curses.cbreak()
# In keypad mode, escape sequences for special keys # (like the cursor keys) will be interpreted and # a special value like curses.KEY_LEFT will be returned stdscr.keypad(1)
res = apply(func, (stdscr,) + rest) except: # In the event of an error, restore the terminal # to a sane state. stdscr.keypad(0) curses.echo() ; curses.nocbreak() curses.endwin() # Pass the exception upwards (exc_type, exc_value, exc_traceback) = sys.exc_info() raise exc_type, exc_value, exc_traceback else: # Set everything back to normal stdscr.keypad(0) curses.echo() ; curses.nocbreak() curses.endwin() # Terminate curses
return res
This is too complicated. It should read: ... return apply(func, (stdscr,) + rest) finally: # Set everything back to normal stdscr.keypad(0) curses.echo() curses.nocbreak() curses.endwin() Andrew: can you make this change? Separate from the above simplification, it is important to note: exc_type, exc_value, exc_traceback = sys.exc_info() raise exc_type, exc_value, exc_traceback and raise are equivalent in (most) function. The difference is that the former places the traceback into local variable storage (exc_traceback) which then introduces a reference loop. Whenever sys.exc_info() is used, it is very important to watch out for loops caused by the traceback object. "del exc_traceback" is very handy :-) Cheers, -g -- Greg Stein, http://www.lyra.org/
On Sat, Jun 10, 2000 at 04:30:13PM -0700, Greg Stein wrote:
On Sat, Jun 10, 2000 at 04:06:55PM -0700, A.M. Kuchling wrote:
... def wrapper(func, *rest): """Wrapper function that initializes curses and calls another function, restoring normal keyboard/screen behavior on error. The callable object 'func' is then passed the main window 'stdscr' as its first argument, followed by any other arguments passed to wrapper(). """
res = None
Oh. This line can disappear, too. Cheers, -g -- Greg Stein, http://www.lyra.org/
Greg Stein <gstein@lyra.org>:
This is too complicated. It should read:
... return apply(func, (stdscr,) + rest) finally: # Set everything back to normal stdscr.keypad(0) curses.echo() curses.nocbreak() curses.endwin()
Andrew: can you make this change?
I'll test it and make the change in my masters if it works for both cases. I haven't actually shipped the box of goodies yet... -- <a href="http://www.tuxedo.org/~esr">Eric S. Raymond</a> Alcohol still kills more people every year than all `illegal' drugs put together, and Prohibition only made it worse. Oppose the War On Some Drugs!
On Sat, Jun 10, 2000 at 07:48:22PM -0400, Eric S. Raymond wrote:
I'll test it and make the change in my masters if it works for both cases. I haven't actually shipped the box of goodies yet...
Already tested and checked in. If you make other changes, just ship me the new version. (Oh, I forgot about the stupid legal stuff; you should probably send wrapper.py and textbox.py to patches@python.org with the requisite legal disclaimer.) --amk
Andrew Kuchling <akuchlin@cnri.reston.va.us>:
On Sat, Jun 10, 2000 at 07:48:22PM -0400, Eric S. Raymond wrote:
I'll test it and make the change in my masters if it works for both cases. I haven't actually shipped the box of goodies yet...
Already tested and checked in. If you make other changes, just ship me the new version.
Well, dang. Didn't you want me to document it first? :-) -- <a href="http://www.tuxedo.org/~esr">Eric S. Raymond</a> Rifles, muskets, long-bows and hand-grenades are inherently democratic weapons. A complex weapon makes the strong stronger, while a simple weapon -- so long as there is no answer to it -- gives claws to the weak. -- George Orwell, "You and the Atom Bomb", 1945
participants (3)
-
Andrew Kuchling
-
Eric S. Raymond
-
Greg Stein