Skip to main content

Helpers for handling Python errors

Project description

errorhelpers

PyPI version PyPI pyversions Maintainability Test Coverage

Helpers for handling Python errors.

Usage:

# As a decorator
@errorhelpers.expect_error(*errors, on_unexpected_error=handler)
def some_error_prone_funcion():
    ...

# Using with statement
with errorhelpers.expect_error(*errors, on_unexpected_error=handler):
    # Some error prone operation
    ...

Example 1: Basic usage

import pytest
import errorhelpers

with errorhelpers.expect_errors(ZeroDivisionError):
    assert 4 / 2 == 2

# `ZeroDivisionError` will be re-raised.
with pytest.raises(ZeroDivisionError):
    with errorhelpers.expect_errors(ZeroDivisionError):
        4 / 0

# In case of other exceptions, `errorhelpers.UnexpectedError("Unexpected error")`
# will be raised instead.
with pytest.raises(errorhelpers.UnexpectedError, match="Unexpected error"):
    with errorhelpers.expect_errors(ZeroDivisionError):
        "a" / "b"

Example 2: Custom error

import pytest
import errorhelpers

class CustomError(Exception):
    @classmethod
    def raise_(cls, msg):
        def raiser(error):
            print("Hiding error:", error)
            raise cls(msg)

        return raiser

@errorhelpers.expect_errors(
    ZeroDivisionError, on_unexpected_error=CustomError.raise_("Custom error")
)
def sensitive_transaction(x, y):
    return int(x) / int(y)

assert sensitive_transaction(4, "2") == 2

# `ZeroDivisionError` will be re-raised.
with pytest.raises(ZeroDivisionError):
    sensitive_transaction(4, 0)

# In case of other exceptions, `CustomError` will be raised instead.
with pytest.raises(CustomError, match="Custom error"):
    sensitive_transaction("a", "b")

# Hiding error: invalid literal for int() with base 10: 'a'

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

errorhelpers-0.2.0.tar.gz (3.5 kB view details)

Uploaded Source

Built Distribution

errorhelpers-0.2.0-py3-none-any.whl (3.7 kB view details)

Uploaded Python 3

File details

Details for the file errorhelpers-0.2.0.tar.gz.

File metadata

  • Download URL: errorhelpers-0.2.0.tar.gz
  • Upload date:
  • Size: 3.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.1.4 CPython/3.8.8 Linux/5.9.16-1-MANJARO

File hashes

Hashes for errorhelpers-0.2.0.tar.gz
Algorithm Hash digest
SHA256 109e0f5b9fa3b144a31870c10957a77777570f158151285ddf53860343d60cf3
MD5 4b6844b0a7f97b37bf50ef5ee7e6e4b2
BLAKE2b-256 71888db9c4c044cdb37bc88567e768048c9bf80a1a2efdf1e7cbb2328d104094

See more details on using hashes here.

File details

Details for the file errorhelpers-0.2.0-py3-none-any.whl.

File metadata

  • Download URL: errorhelpers-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 3.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.1.4 CPython/3.8.8 Linux/5.9.16-1-MANJARO

File hashes

Hashes for errorhelpers-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 3d3a660eb88c4f5ed4a65570685828735e22a55cc1f94870f9039cdb097228d1
MD5 4615cc8d4cf4e0e0c42bc4d8ccbf8ded
BLAKE2b-256 7d45f526ba5717082cfe86e3c1e0f9258a18e9438cf0e45eb3455345a2da3417

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