<s> import atexit <EOL> import contextlib <EOL> import sys <EOL> from . ansitowin32 import AnsiToWin32 <EOL> orig_stdout = None <EOL> orig_stderr = None <EOL> wrapped_stdout = None <EOL> wrapped_stderr = None <EOL> atexit_done = False <EOL> def reset_all ( ) : <EOL> AnsiToWin32 ( orig_stdout ) . reset_all ( ) <EOL> def init ( autoreset = False , convert = None , strip = None , wrap = True ) : <EOL> if not wrap and any ( [ autoreset , convert , strip ] ) : <EOL> raise ValueError ( '<STR_LIT>' ) <EOL> global wrapped_stdout , wrapped_stderr <EOL> global orig_stdout , orig_stderr <EOL> orig_stdout = sys . stdout <EOL> orig_stderr = sys . stderr <EOL> if sys . stdout is None : <EOL> wrapped_stdout = None <EOL> else : <EOL> sys . stdout = wrapped_stdout = wrap_stream ( orig_stdout , convert , strip , autoreset , wrap ) <EOL> if sys . stderr is None : <EOL> wrapped_stderr = None <EOL> else : <EOL> sys . stderr = wrapped_stderr = wrap_stream ( orig_stderr , convert , strip , autoreset , wrap ) <EOL> global atexit_done <EOL> if not atexit_done : <EOL> atexit . register ( reset_all ) <EOL> atexit_done = True <EOL> def deinit ( ) : <EOL> if orig_stdout is not None : <EOL> sys . stdout = orig_stdout <EOL> if orig_stderr is not None : <EOL> sys . stderr = orig_stderr <EOL> @ contextlib . contextmanager <EOL> def colorama_text ( * args , ** kwargs ) : <EOL> init ( * args , ** kwargs ) <EOL> try : <EOL> yield <EOL> finally : <EOL> deinit ( ) <EOL> def reinit ( ) : <EOL> if wrapped_stdout is not None : <EOL> sys . stdout = wrapped_stdout <EOL> if wrapped_stderr is not None : <EOL> sys . stderr = wrapped_stderr <EOL> def wrap_stream ( stream , convert , strip , autoreset , wrap ) : <EOL> if wrap : <EOL> wrapper = AnsiToWin32 ( stream , <EOL> convert = convert , strip = strip , autoreset = autoreset ) <EOL> if wrapper . should_wrap ( ) : <EOL> stream = wrapper . stream <EOL> return stream </s>
