Skip to main content

Capture stdout/stderr and optionally release when an exception occurs.

Project description

Compatibility Implementations Format Downloads

Capture stdout/stderr and optionally release when an exception occurs.

from abduct import captured, out, err

with captured(out()) as stdout:
    ...

with captured(out(), err()) as (stdout, stderr):
    ...

@captured(out(), err())
...

Installation:

$ 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:

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:

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:

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.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

abduct-2.0.1.tar.gz (2.9 kB view details)

Uploaded Source

Built Distribution

abduct-2.0.1-py2.py3-none-any.whl (3.4 kB view details)

Uploaded Python 2 Python 3

File details

Details for the file abduct-2.0.1.tar.gz.

File metadata

  • Download URL: abduct-2.0.1.tar.gz
  • Upload date:
  • Size: 2.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for abduct-2.0.1.tar.gz
Algorithm Hash digest
SHA256 7617a853d5feed772863c4cbf51adedd7d06ba025ea1396224a5f0becdb9cf2f
MD5 8f0ae503bc9bc3cdd37886f8347dec77
BLAKE2b-256 fc0b7880d5c7e482cefb58a4049df5ef486639e7c4a44a33a7eed7eba9a1ea7b

See more details on using hashes here.

File details

Details for the file abduct-2.0.1-py2.py3-none-any.whl.

File metadata

File hashes

Hashes for abduct-2.0.1-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 a3d1a3dcc7e544054534a1e10c3443d8ed5cde57c9dc47da8484910c36478a3b
MD5 6c67d72b2e1aab6a5a39c9ec7d003bbf
BLAKE2b-256 23165e3393ab3c9c5a4c15feab2e95636409087fac077438a80fa35861c9ac5e

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page