Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
sqlmapproject
GitHub Repository: sqlmapproject/sqlmap
Path: blob/master/thirdparty/colorama/initialise.py
2992 views
1
# Copyright Jonathan Hartley 2013. BSD 3-Clause license, see LICENSE file.
2
import atexit
3
import contextlib
4
import sys
5
6
from .ansitowin32 import AnsiToWin32
7
8
9
orig_stdout = None
10
orig_stderr = None
11
12
wrapped_stdout = None
13
wrapped_stderr = None
14
15
atexit_done = False
16
17
18
def reset_all():
19
if AnsiToWin32 is not None: # Issue #74: objects might become None at exit
20
AnsiToWin32(orig_stdout).reset_all()
21
22
23
def init(autoreset=False, convert=None, strip=None, wrap=True):
24
global wrapped_stdout, wrapped_stderr
25
global orig_stdout, orig_stderr
26
27
if orig_stdout is not None:
28
return
29
30
if not wrap and any([autoreset, convert, strip]):
31
raise ValueError('wrap=False conflicts with any other arg=True')
32
33
orig_stdout = sys.stdout
34
orig_stderr = sys.stderr
35
36
if sys.stdout is None:
37
wrapped_stdout = None
38
else:
39
sys.stdout = wrapped_stdout = \
40
wrap_stream(orig_stdout, convert, strip, autoreset, wrap)
41
if sys.stderr is None:
42
wrapped_stderr = None
43
else:
44
sys.stderr = wrapped_stderr = \
45
wrap_stream(orig_stderr, convert, strip, autoreset, wrap)
46
47
global atexit_done
48
if not atexit_done:
49
atexit.register(reset_all)
50
atexit_done = True
51
52
53
def deinit():
54
global orig_stdout
55
global orig_stderr
56
57
if orig_stdout is not None:
58
sys.stdout = orig_stdout
59
orig_stdout = None
60
if orig_stderr is not None:
61
sys.stderr = orig_stderr
62
orig_stderr = None
63
64
65
@contextlib.contextmanager
66
def colorama_text(*args, **kwargs):
67
init(*args, **kwargs)
68
try:
69
yield
70
finally:
71
deinit()
72
73
74
def reinit():
75
if wrapped_stdout is not None:
76
sys.stdout = wrapped_stdout
77
if wrapped_stderr is not None:
78
sys.stderr = wrapped_stderr
79
80
81
def wrap_stream(stream, convert, strip, autoreset, wrap):
82
if wrap:
83
wrapper = AnsiToWin32(stream,
84
convert=convert, strip=strip, autoreset=autoreset)
85
if wrapper.should_wrap():
86
stream = wrapper.stream
87
return stream
88
89
90
91