diff --git a/colorama/initialise.py b/colorama/initialise.py index 430d066..d0c633c 100644 --- a/colorama/initialise.py +++ b/colorama/initialise.py @@ -28,6 +28,9 @@ def init(autoreset=False, convert=None, strip=None, wrap=True): global wrapped_stdout, wrapped_stderr global orig_stdout, orig_stderr + if (orig_stdout is not None) or (orig_stderr is not None): + deinit() + orig_stdout = sys.stdout orig_stderr = sys.stderr @@ -49,10 +52,14 @@ def init(autoreset=False, convert=None, strip=None, wrap=True): def deinit(): + global orig_stdout, orig_stderr + if orig_stdout is not None: sys.stdout = orig_stdout + orig_stdout = None if orig_stderr is not None: sys.stderr = orig_stderr + orig_stderr = None @contextlib.contextmanager diff --git a/colorama/tests/initialise_test.py b/colorama/tests/initialise_test.py index 2f7384d..b7a73eb 100644 --- a/colorama/tests/initialise_test.py +++ b/colorama/tests/initialise_test.py @@ -6,7 +6,7 @@ from mock import patch from ..ansitowin32 import StreamWrapper -from ..initialise import init +from ..initialise import init, deinit from .utils import osname, redirected_output, replace_by orig_stdout = sys.stdout @@ -22,6 +22,7 @@ def setUp(self): def tearDown(self): sys.stdout = orig_stdout sys.stderr = orig_stderr + deinit() def assertWrapped(self): self.assertIsNot(sys.stdout, orig_stdout, 'stdout should be wrapped')