Skip to main content

A package for performing assertions and providing informative exception messages.

Project description

https://travis-ci.org/nlesc-nano/AssertionLib.svg?branch=master https://readthedocs.org/projects/assertionlib/badge/?version=latest https://badge.fury.io/py/AssertionLib.svg

https://img.shields.io/badge/python-3.6-blue.svg https://img.shields.io/badge/python-3.7-blue.svg https://img.shields.io/badge/python-3.8-blue.svg

AssertionLib 2.1.0

A package for performing assertions and providing informative exception messages.

Installation

AssertionLib has no external dependencies and can be installed as following:

  • PyPi: pip install AssertionLib

  • GitHub: pip install git+https://github.com/nlesc-nano/AssertionLib

Usage

A comprehensive overview of all available assertion methods is provided in the documentation. A few examples of some basic assertion:

>>> from assertionlib import assertion

# Assert the output of specific callables
>>> assertion.eq(5, 5)  # 5 == 5
>>> assertion.lt(5, 6)  # 5 < 6
>>> assertion.gt(6, 5)  # 5 > 6
>>> assertion.isinstance(5, int)
>>> assertion.hasattr(5, '__init__')

# Simply assert a value
>>> assertion(5 == 5)
>>> assertion(isinstance(5, int))

# Perform an assertion which will raise an AssertionError
>>> assertion.eq(5, 6)  # 5 == 6
AssertionError: output = eq(a, b); assert output

exception: AssertionError = AssertionError()

output: bool = False
a: int = 5
b: int = 6

A few examples of AssertionErrors raised due to incorrect method signatures:

>>> from assertionlib import assertion

>>> assertion.len(5)
AssertionError: output = len(obj); assert output

exception: TypeError = TypeError("object of type 'int' has no len()")

output: NoneType = None
obj: int = 5

>>> assertion.eq(5, 5, 5, 5)
AssertionError: output = eq(a, b, _a, _b); assert output

exception: TypeError = TypeError('eq expected 2 arguments, got 4')

output: NoneType = None
a: int = 5
b: int = 5
_a: int = 5
_b: int = 5

A demonstration of the exception parameter. Providing an exception type will assert that the provided exception is raised during/before the assertion process:

>>> from assertionlib import assertion

>>> len(5)
TypeError: object of type 'int' has no len()

>>> assertion.len(5, exception=TypeError)  # i.e. len(5) should raise a TypeError
>>> assertion.len([5], exception=TypeError)
AssertionError: output = len(obj); assert output

exception: AssertionError = AssertionError("Failed to raise 'TypeError'")

output: int = 1
obj: list = [5]

Lastly, the output of custom callables can be asserted in one of the following two ways, supplying the callable to AssertionManager.assert() or creating a custom assertion method and adding it to an instance with AssertionManager.add_to_instance():

>>> from assertionlib import assertion

>>> my_fancy_func(a):
...     return False

# Approach #1, supply to-be asserted callable to assertion.assert_()
>>> assertion.assert_(my_fancy_func, 5)
AssertionError: output = my_fancy_func(a); assert output

exception: AssertionError = AssertionError()

output: bool = False
a: int = 5

# Approach #2, permanantly add a new bound method using assertion.add_to_instance()
>>> assertion.add_to_instance(my_fancy_func)
>>> assertion.my_fancy_func(5)
AssertionError: output = my_fancy_func(a); assert output

exception: AssertionError = AssertionError()

output: bool = False
a: int = 5

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

AssertionLib-2.1.0.tar.gz (21.3 kB view details)

Uploaded Source

Built Distribution

AssertionLib-2.1.0-py3-none-any.whl (29.0 kB view details)

Uploaded Python 3

File details

Details for the file AssertionLib-2.1.0.tar.gz.

File metadata

  • Download URL: AssertionLib-2.1.0.tar.gz
  • Upload date:
  • Size: 21.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/42.0.2.post20191201 requests-toolbelt/0.9.1 tqdm/4.41.1 CPython/3.7.3

File hashes

Hashes for AssertionLib-2.1.0.tar.gz
Algorithm Hash digest
SHA256 e427f666a1d64d1071eed5991384678891c88c4fd4e1d1d09ef342809cd7935b
MD5 20114d427dcc926f2df15f8a258f1e6d
BLAKE2b-256 1f3801e7ef0f957a9d020d174dfce964199ba3dc846b03c64bfaf03883d787f9

See more details on using hashes here.

File details

Details for the file AssertionLib-2.1.0-py3-none-any.whl.

File metadata

  • Download URL: AssertionLib-2.1.0-py3-none-any.whl
  • Upload date:
  • Size: 29.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/42.0.2.post20191201 requests-toolbelt/0.9.1 tqdm/4.41.1 CPython/3.7.3

File hashes

Hashes for AssertionLib-2.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 39a743f72a968d4aa15b661bdc62877fce176a2628ee1e84801f692874298898
MD5 56a5114e17d01d20759de6d6250acf15
BLAKE2b-256 aaf9d1d03a1fca4e00a364fb52e0a331b1670f3865fe7b69e0ed67005f24e585

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