Capture C-level output in context managers
Project description
Wurlitzer
Capture C-level stdout/stderr pipes in Python via os.dup2
.
For more details on why this is needed, please read this blog post.
Install
pip install wurlitzer
Usage
Capture stdout/stderr in pipes:
from wurlitzer import pipes
with pipes() as (out, err):
call_some_c_function()
stdout = out.read()
Capture stdout/stderr in StringIO:
from io import StringIO
from wurlitzer import pipes, STDOUT
out = StringIO()
with pipes(stdout=out, stderr=STDOUT):
call_some_c_function()
stdout = out.getvalue()
Forward C-level stdout/stderr to Python sys.stdout/stderr, which may already be forwarded somewhere by the environment, e.g. IPython:
from wurlitzer import sys_pipes
with sys_pipes():
call_some_c_function()
Or even simpler, enable it as an IPython extension:
%load_ext wurlitzer
To forward all C-level output to IPython during execution.
Acknowledgments
This package is based on stuff we learned with @takluyver and @karies while working on capturing output from the Cling Kernel for Jupyter.
Wurlitzer?!
Wurlitzer makes pipe organs. Get it? Pipes? Naming is hard.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for wurlitzer-2.0.1-py2.py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 2b4f1a6b62660ccddb066a49cda3845f6583ed5ab70e22a0ccc0f741063945d8 |
|
MD5 | 68819d5b25f114da402dd4e488f76a1b |
|
BLAKE2b-256 | 0c1e52f4effa64a447c4ec0fb71222799e2ac32c55b4b6c1725fccdf6123146e |