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 1.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-1.1.0.tar.gz (21.0 kB view details)

Uploaded Source

Built Distribution

AssertionLib-1.1.0-py3-none-any.whl (28.7 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: AssertionLib-1.1.0.tar.gz
  • Upload date:
  • Size: 21.0 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-1.1.0.tar.gz
Algorithm Hash digest
SHA256 cd2a62dbbc6c01867f565f0be12e27d013d16bb81e8aac60f6dea589243481b4
MD5 886ef9620e333bee722197e79a5896ce
BLAKE2b-256 cb9d888e2a9ad16468ae5d8871e4651052b1db2b0f3c58c7cf2795a899275dfe

See more details on using hashes here.

File details

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

File metadata

  • Download URL: AssertionLib-1.1.0-py3-none-any.whl
  • Upload date:
  • Size: 28.7 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-1.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 71991d6db7e375c25295d1990d3200a0297cde82e160045f1521aeff1baebce5
MD5 f7c7a4c686e745ab82d9d5d67e082f1a
BLAKE2b-256 25e80224cce636f7cd189099fbc68e444b8fb79da87408f828a9b39463c9ffa8

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