Aluode/PerceptionLabPortable
0
1# Copyright Jonathan Hartley 2013. BSD 3-Clause license, see LICENSE file.2from contextlib import contextmanager3from io import StringIO4import sys5import os6 7 8class StreamTTY(StringIO):9 def isatty(self):10 return True11 12class StreamNonTTY(StringIO):13 def isatty(self):14 return False15 16@contextmanager17def osname(name):18 orig = os.name19 os.name = name20 yield21 os.name = orig22 23@contextmanager24def replace_by(stream):25 orig_stdout = sys.stdout26 orig_stderr = sys.stderr27 sys.stdout = stream28 sys.stderr = stream29 yield30 sys.stdout = orig_stdout31 sys.stderr = orig_stderr32 33@contextmanager34def replace_original_by(stream):35 orig_stdout = sys.__stdout__36 orig_stderr = sys.__stderr__37 sys.__stdout__ = stream38 sys.__stderr__ = stream39 yield40 sys.__stdout__ = orig_stdout41 sys.__stderr__ = orig_stderr42 43@contextmanager44def pycharm():45 os.environ["PYCHARM_HOSTED"] = "1"46 non_tty = StreamNonTTY()47 with replace_by(non_tty), replace_original_by(non_tty):48 yield49 del os.environ["PYCHARM_HOSTED"]50 