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/
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4