#6771: Move wrapper function into __init__ and eliminate wrapper module
Andrew agreed in the issue that eliminating the module file made sense. Wrapper has only been exposed as a function, and so there is no (easy) way to access the wrapper module, which in any case only had the one function in it. Since __init__ already contains a couple wrapper functions, it seems to make sense to just move wrapper there instead of importing it from a single function module.
This commit is contained in:
parent
50ae84e727
commit
afc9a5eaa1
|
@ -13,7 +13,6 @@ the package, and perhaps a particular module inside it.
|
||||||
__revision__ = "$Id$"
|
__revision__ = "$Id$"
|
||||||
|
|
||||||
from _curses import *
|
from _curses import *
|
||||||
from curses.wrapper import wrapper
|
|
||||||
import os as _os
|
import os as _os
|
||||||
import sys as _sys
|
import sys as _sys
|
||||||
|
|
||||||
|
@ -57,3 +56,48 @@ try:
|
||||||
has_key
|
has_key
|
||||||
except NameError:
|
except NameError:
|
||||||
from has_key import has_key
|
from has_key import has_key
|
||||||
|
|
||||||
|
# Wrapper for the entire curses-based application. Runs a function which
|
||||||
|
# should be the rest of your curses-based application. If the application
|
||||||
|
# raises an exception, wrapper() will restore the terminal to a sane state so
|
||||||
|
# you can read the resulting traceback.
|
||||||
|
|
||||||
|
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()
|
||||||
|
|
|
@ -1,50 +0,0 @@
|
||||||
"""curses.wrapper
|
|
||||||
|
|
||||||
Contains one function, wrapper(), which runs another function which
|
|
||||||
should be the rest of your curses-based application. If the
|
|
||||||
application raises an exception, wrapper() will restore the terminal
|
|
||||||
to a sane state so you can read the resulting traceback.
|
|
||||||
|
|
||||||
"""
|
|
||||||
|
|
||||||
import curses
|
|
||||||
|
|
||||||
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 = 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)
|
|
||||||
|
|
||||||
# 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:
|
|
||||||
curses.start_color()
|
|
||||||
except:
|
|
||||||
pass
|
|
||||||
|
|
||||||
return func(stdscr, *args, **kwds)
|
|
||||||
finally:
|
|
||||||
# Set everything back to normal
|
|
||||||
if 'stdscr' in locals():
|
|
||||||
stdscr.keypad(0)
|
|
||||||
curses.echo()
|
|
||||||
curses.nocbreak()
|
|
||||||
curses.endwin()
|
|
|
@ -193,6 +193,10 @@ Core and Builtins
|
||||||
Library
|
Library
|
||||||
-------
|
-------
|
||||||
|
|
||||||
|
- Issue #6771: moved the curses.wrapper function from the single-function
|
||||||
|
wrapper module into __init__, eliminating the module. Since __init__ was
|
||||||
|
already importing the function to curses.wrapper, there is no API change.
|
||||||
|
|
||||||
- Issue #11584: email.header.decode_header no longer fails if the header
|
- Issue #11584: email.header.decode_header no longer fails if the header
|
||||||
passed to it is a Header object, and Header/make_header no longer fail
|
passed to it is a Header object, and Header/make_header no longer fail
|
||||||
if given binary unknown-8bit input.
|
if given binary unknown-8bit input.
|
||||||
|
|
Loading…
Reference in New Issue