Skip to main content

A replacement for assert

Project description

Integrity Check

This package is the python version of a cross-language api for runtime internal tests.

How to use

Install the package (pip install integrity-check)

At the top of one of your python source code files put from integrity_check import Integrity

then you can do things like:

Integrity.check(a == b, "expected {} to be same as {}", a, b)
or
Integrity.check(a == b, a, b)
or even just
Integrity.check(a == b)

The main function is check, but the full list of functions is:

    check(condition, *msg)
    checkNotNone(test, *msg)
    checkIsBool(test, *msg)
    checkIsBoolOrNone(test, *msg)
    checkIsString(test, *msg)
    checkIsStringOrNone(test, *msg)
    checkStringNotNoneOrEmpty(test, *msg)
    checkIsValidNumber(test, *msg)
    checkIsValidNumberOrNone(test, *msg)
    checkIsFunction(test, *msg)
    checkIsFunctionOrNone(test, *msg)

    fail(*msg)

In all cases the *msg parameters work like this:

check*(test) - the exception will contain a default message
check*(test, var1) - the message will be just the string representaiton of var1
check*(test, var1, var2, ... varN) - the message will be the string representaitons of the vars in the format "var1, var2, ..., varN"
check*(test, "the vars are {} {}", var1, var2) - the message will substitute the string representations of va1, var2 into the {}
check*(test, var1, var2, " and {} ", var3) - the message will be "var1, var2 and var3"

there can be as many message parameters as you like. Note that if a variable is a string and happens to contain {} then it will be used in subsequent substitutions.

Example

from integrity_check import Integrity

def myComplicatedFunction(aNumber, callback, aName):
    Integrity.checkIsValidNumberOrNone(aNumber)
    Integrity.checkIsFunction(callback)
    Integrity.checkStringNotNoneOrEmpty(aName)

    handle = callback(aName)
    Integrity.checkNotNone(handle, "expected valid handle, aName was {}", aName)

    diameter = someOtherFunction(handle)
    Integrity.check(diameter >= 0, "expected non-negative diameter, was {}", diameter)

What are the advantages of using Integrity?

Consistent api across languages

If you jump around from one language to another, it is nice to have a consistent way of testing your assumptions regardless of what language you are in. For example:

Python: Integrity.check(a == b, "some text {}", a)
JavaScript: Integrity.check(a == b, "some text {}", a)
C#: Integrity.Check(a == b, "some text {}", a)

There are minor consession made to language conventions. For example, in c# the function names are capitalised.

Delayed and safe string building

The components of the message string are only used if the integrity check fails. This means that the execution time of the check is minimised. The building of the string is guarenteed not to error.

Compact format

If you did not use Integrity (or similar), and wrote the check out by hand, it would look something like:

if(a != b):
	raise ValueError("some text " + str(a))

note that there is potentional for the creation of the message within ValueError(~) to cause a problem, if, for example, the developer forgot to put str() around an int.

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

integrity-check-1.3.4.tar.gz (4.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

integrity_check-1.3.4-py3-none-any.whl (5.3 kB view details)

Uploaded Python 3

File details

Details for the file integrity-check-1.3.4.tar.gz.

File metadata

  • Download URL: integrity-check-1.3.4.tar.gz
  • Upload date:
  • Size: 4.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/50.3.0 requests-toolbelt/0.9.1 tqdm/4.49.0 CPython/3.8.5

File hashes

Hashes for integrity-check-1.3.4.tar.gz
Algorithm Hash digest
SHA256 549bb5a08c3d363a1cad3b51ed7270249b6846cab12be0882e15aa29f17562fe
MD5 4aa87bd2a9a91325cb0364980518ecbf
BLAKE2b-256 18b3015b8d40700dce9d1d4db09d0aa73ab83a946173d464cbf256614572658e

See more details on using hashes here.

File details

Details for the file integrity_check-1.3.4-py3-none-any.whl.

File metadata

  • Download URL: integrity_check-1.3.4-py3-none-any.whl
  • Upload date:
  • Size: 5.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/50.3.0 requests-toolbelt/0.9.1 tqdm/4.49.0 CPython/3.8.5

File hashes

Hashes for integrity_check-1.3.4-py3-none-any.whl
Algorithm Hash digest
SHA256 73a0c5654a44937ed091fef88085b8debe375afc833f0728b934dfac9fb4fa83
MD5 637631e47758c624e759628f45f0a055
BLAKE2b-256 9b6ca60acec80d2ab31587d0ac1883f1cd00708bb014da83b91a1d7f39f4218b

See more details on using hashes here.

Supported by

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