(func, /, *args, **kwds)
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().
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().
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 () .
def wrapper(func, /, *args, **kwds):
    """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().
    """

    try:
        # Initialize curses
        stdscr = initscr()

        # Turn off echoing of keys, and enter cbreak mode,
        # where no buffering is performed on keyboard input
        noecho()
        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)

        # Start color, too.  Harmless if the terminal doesn't have
        # color; user can test with has_color() later on.  The try/catch
        # works around a minor bit of over-conscientiousness in the curses
        # module -- the error return from C start_color() is ignorable.
        try:
            start_color()
        except:
            pass

        return func(stdscr, *args, **kwds)
    finally:
        # Set everything back to normal
        if 'stdscr' in locals():
            stdscr.keypad(0)
            echo()
            nocbreak()
            endwin()
def wrapper ( func , / , * args , * * kwds ) : try : # Initialize curses stdscr = initscr ( ) # Turn off echoing of keys, and enter cbreak mode, # where no buffering is performed on keyboard input noecho ( ) 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 ) # Start color, too.  Harmless if the terminal doesn't have # color; user can test with has_color() later on.  The try/catch # works around a minor bit of over-conscientiousness in the curses # module -- the error return from C start_color() is ignorable. try : start_color ( ) except : pass return func ( stdscr , * args , * * kwds ) finally : # Set everything back to normal if 'stdscr' in locals ( ) : stdscr . keypad ( 0 ) echo ( ) nocbreak ( ) endwin ( )