Current collected state Current
Observed since 20 Oct, 17:18 UTC
No superseded metadata states collected. Unchanged observations do not create new revisions.
Capture stdout/stderr and optionally release when an exception occurs.
Abduct |Version| |Build| |Coverage| |Health|
============================================
|Compatibility| |Implementations| |Format| |Downloads|
Capture stdout/stderr and optionally release when an exception occurs.
.. code:: python
from abduct import captured, out, err
with captured(out()) as stdout:
...
with captured(out(), err()) as (stdout, stderr):
...
@captured(out(), err())
...
Installation:
.. code:: console
$ pip install abduct
When stdout or stderr is captured, the related ``sys.stdout`` or
``sys.stderr`` object is replaced with a ``StringIO`` object for the
life of the context.
Examples
--------
It's often useful to capture the output of a block of code. Abduct
makes this easy:
.. code:: python
with captured(out()) as stdout:
print('hello!')
assert stdout.getvalue() == 'hello!'
Sometimes you may want to hide the output of some code *unless*
something goes wrong. In this case, simply specify
``release_on_exception=True``:
.. code:: python
with captured(out(release_on_exception=True)):
print('Really important message!')
if blow_up:
raise RuntimeError()
In this case, ``Really important message!`` will be printed on
``stdout`` if the exception is raised.
If you'd like to capture the output, but still write through to
``stdout`` or ``stderr``, use the ``tee=True`` parameter:
.. code:: python
with captured(err(tee=True)) as stderr:
sys.stderr.write('Error!')
assert stderr.getvalue() == 'Error!'
In this case, ``Error!`` is captured *and* written to ``stderr``
at the same time.
Changelog
---------
**2.0.1**
- Added tests for the decorator usage.
**2.0.0**
- Feature: "Create a write-through option for output."
- Backwards-incompatible change: ``stdout`` and ``stderr`` methods are now ``out`` and ``err`` respectively.
**1.0.4**
- Fixed Travis release criteria.
**1.0.3**
- Refactored test runner.
**1.0.2**
- Fixed README and description.
**1.0.1**
- Travis config now defers to tox.
- Added examples to README.
**1.0.0**
- Actual working code. Yay!
**0.0.1**
- Initial release.
.. |Build| image:: https://travis-ci.org/themattrix/python-abduct.svg?branch=master
:target: https://travis-ci.org/themattrix/python-abduct
.. |Coverage| image:: https://img.shields.io/coveralls/themattrix/python-abduct.svg
:target: https://coveralls.io/r/themattrix/python-abduct
.. |Health| image:: https://landscape.io/github/themattrix/python-abduct/master/landscape.svg
:target: https://landscape.io/github/themattrix/python-abduct/master
.. |Version| image:: https://pypip.in/version/abduct/badge.svg?text=version
:target: https://pypi.python.org/pypi/abduct
.. |Downloads| image:: https://pypip.in/download/abduct/badge.svg
:target: https://pypi.python.org/pypi/abduct
.. |Compatibility| image:: https://pypip.in/py_versions/abduct/badge.svg
:target: https://pypi.python.org/pypi/abduct
.. |Implementations| image:: https://pypip.in/implementation/abduct/badge.svg
:target: https://pypi.python.org/pypi/abduct
.. |Format| image:: https://pypip.in/format/abduct/badge.svg
:target: https://pypi.python.org/pypi/abduct
Download counts and popularity will appear here as the collector receives them.
| Version | Published | Direct dependencies | Open version |
|---|---|---|---|
| 2.0.1 | 16 May 2015 | 0 |
This describes our collected data; it is not a security assessment.
Observed since 20 Oct, 17:18 UTC
No superseded metadata states collected. Unchanged observations do not create new revisions.
package:7a537f1ed3ecd5c7febc662a572e40f3d25f854f9f92ae73eb656002ffd9d5d3