Skip to main content

exceptbool

https://img.shields.io/pypi/v/exceptbool.svg https://pepy.tech/badge/exceptbool https://travis-ci.org/konrad-kocik/exceptbool.svg?branch=master https://readthedocs.org/projects/exceptbool/badge/?version=latest

Converts caught exception into bool value.

Features

How many of those have you written in your life?

def is_something_possible():
    try:
        do_something()
        return True
    except DoingSomethingError:
        return False

Ugh! A perfect example of six-line boilerplate code. With exceptbool you can shorten that into only three lines!

@except_to_bool(exc=DoingSomethingError)
def is_something_possible():
    do_something()

Exceptbool makes decorated function return bool instead of raising an exception by converting given exception(s) into given bool value. If no exception will be raised, then negation of given bool will be returned. If exception different than given one will be raised, then it will not be caught.

Don’t want to decorate whole function? Fine, you can convert exceptions raised from chosen block of code by using context manager:

with except_converter(exc=DoingSomethingError) as converted_exception:
    do_something()

Installation

Stable release

To install exceptbool, run this command in your terminal:

$ pip install exceptbool

This is the preferred method to install exceptbool, as it will always install the most recent stable release.

If you don’t have pip installed, this Python installation guide can guide you through the process.

From sources

The sources for exceptbool can be downloaded from the Github repo.

You can either clone the public repository:

$ git clone https://github.com/konrad-kocik/exceptbool.git

Or download the tarball:

$ curl  -OL https://github.com/konrad-kocik/exceptbool/tarball/master

Once you have a copy of the source, you can install it with:

$ python setup.py install

Usage

As decorator

First, import except_to_bool decorator into current namespace:

from exceptbool import except_to_bool

To catch any exception and convert it into False:

@except_to_bool
def decorated_function():
    error_raising_function()

Now decorated_function will return False if error_raising_function raises Exception, True otherwise.

To catch given exception and convert it into given bool value:

@except_to_bool(exc=ValueError, to=True)
def decorated_function():
   error_raising_function()

Now decorated_function will return True if error_raising_function raises ValueError, False otherwise.

To catch any of multiple exceptions:

@except_to_bool(exc=(TypeError, TimeoutError))
def decorated_function():
   error_raising_function()

Now decorated_function will return False if error_raising_function raises TypeError or TimeoutError, True otherwise.

Function decorated with except_to_bool is perfectly capable of accepting positional and keyword arguments:

@except_to_bool
def decorated_function(*args, **kwargs):
    error_raising_function(*args, **kwargs)

decorated_function("foo", bar="baz")  # no error

As context manager

First, import except_converter context manager into current namespace:

from exceptbool import except_converter

To catch any exception and convert it into False:

with except_converter() as converted_exception:
    error_raising_function()

Now converted_exception.value will return False if error_raising_function raises Exception, True otherwise.

To catch given exception and convert it into given bool value:

with except_converter(exc=ValueError, to=True) as converted_exception:
   error_raising_function()

Now converted_exception.value will return True if error_raising_function raises ValueError, False otherwise.

To catch any of multiple exceptions:

with except_converter(exc=(OSError, KeyError)) as converted_exception:
   error_raising_function()

Now converted_exception.value will return False if error_raising_function raises OSError or KeyError, True otherwise.

History

1.2.0 (2019-01-12)

  • Added possibility to convert exceptions by using context manager.

1.1.0 (2018-12-18)

  • Added support for Python 3.5.

1.0.1 (2018-12-12)

  • Updated and improved documentation.

1.0.0 (2018-12-10)

  • First release on PyPI with basic functionality.

Metadata

Release files for exceptbool 1.2.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for exceptbool 1.2.0
File Size Uploaded
exceptbool-1.2.0.tar.gz 12.1 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for exceptbool 1.2.0
File Interpreter ABI Platform
exceptbool-1.2.0-py3-none-any.whl Python 3 none any Details

Total release size: 17.9 kB

Release files / exceptbool-1.2.0.tar.gz

Download URL exceptbool-1.2.0.tar.gz
Size 12.1 kB
Tags Source
SHA-256 checksum
How to use checksums
c2cf175b252f42c9c98c1fb7ff63bc08f30c5bd0cf69fc923612ae41f6e5bdd8
BLAKE2b-256 checksum
How to use checksums
0cf4f1d07d33aaed79e65270c141d7ce0069a05ebfb5746dc082544d548d506b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/1.12.1 pkginfo/1.4.2 requests/2.20.1 setuptools/40.6.2 requests-toolbelt/0.8.0 tqdm/4.28.1 CPython/3.6.7

Release files / exceptbool-1.2.0-py3-none-any.whl

Download URL exceptbool-1.2.0-py3-none-any.whl
Size 5.9 kB
Tags Python 3
SHA-256 checksum
How to use checksums
ff13de167f04325dccf3b9af2d498b028a64ea7489dfa1313ebc97fef8b5700d
BLAKE2b-256 checksum
How to use checksums
8475acdd846d9350dcf62db3b6ebeddb1547e97c2ca2092fcac5f5cfcb9a3eb7
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/1.12.1 pkginfo/1.4.2 requests/2.20.1 setuptools/40.6.2 requests-toolbelt/0.8.0 tqdm/4.28.1 CPython/3.6.7

Release history Release notifications | RSS feed

1.2.1

2 release files

This release

1.2.0 This release

2 release files

1.1.0

2 release files

1.0.1

2 release files

1.0.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page