@contextlib.contextmanager<EOL>def captured_output(stream_name):
orig_stdout = getattr(sys, stream_name)<EOL>setattr(sys, stream_name, StreamWrapper.from_stream(orig_stdout))<EOL>try:<EOL><INDENT>yield getattr(sys, stream_name)<EOL><DEDENT>finally:<EOL><INDENT>setattr(sys, stream_name, orig_stdout)<EOL><DEDENT>
Return a context manager used by captured_stdout/stdin/stderr
    that temporarily replaces the sys stream *stream_name* with a StringIO.

    Taken from Lib/support/__init__.py in the CPython repo.