OLD | NEW |
| (Empty) |
1 import atexit | |
2 import sys | |
3 | |
4 from .ansitowin32 import AnsiToWin32 | |
5 | |
6 | |
7 orig_stdout = sys.stdout | |
8 orig_stderr = sys.stderr | |
9 | |
10 wrapped_stdout = sys.stdout | |
11 wrapped_stderr = sys.stderr | |
12 | |
13 atexit_done = False | |
14 | |
15 | |
16 def reset_all(): | |
17 AnsiToWin32(orig_stdout).reset_all() | |
18 | |
19 | |
20 def init(autoreset=False, convert=None, strip=None, wrap=True): | |
21 | |
22 if not wrap and any([autoreset, convert, strip]): | |
23 raise ValueError('wrap=False conflicts with any other arg=True') | |
24 | |
25 global wrapped_stdout, wrapped_stderr | |
26 sys.stdout = wrapped_stdout = \ | |
27 wrap_stream(orig_stdout, convert, strip, autoreset, wrap) | |
28 sys.stderr = wrapped_stderr = \ | |
29 wrap_stream(orig_stderr, convert, strip, autoreset, wrap) | |
30 | |
31 global atexit_done | |
32 if not atexit_done: | |
33 atexit.register(reset_all) | |
34 atexit_done = True | |
35 | |
36 | |
37 def deinit(): | |
38 sys.stdout = orig_stdout | |
39 sys.stderr = orig_stderr | |
40 | |
41 | |
42 def reinit(): | |
43 sys.stdout = wrapped_stdout | |
44 sys.stderr = wrapped_stdout | |
45 | |
46 | |
47 def wrap_stream(stream, convert, strip, autoreset, wrap): | |
48 if wrap: | |
49 wrapper = AnsiToWin32(stream, | |
50 convert=convert, strip=strip, autoreset=autoreset) | |
51 if wrapper.should_wrap(): | |
52 stream = wrapper.stream | |
53 return stream | |
54 | |
55 | |
OLD | NEW |