Skip to main content

Decorate an instance method with pre- and/or postconditions that must be fulfilled

Project description

Decorate an instance method with pre- and/or postconditions that must be fulfilled

Example usage

from requiresthat import requires, RequirementNotFulfilledError, APRIORI, POSTMORTEM, BEFOREANDAFTER

class C:

    def __init__(self, data=None):
        self.data = data

    @requires(that='self.data is not None')
    @requires(that='self.data == "spam"', when=APRIORI)
    @requires(that='True is not False')
    @requires(that='self.data != "spam"', when=POSTMORTEM)
    @requires(that='len(self.data) >= 3', when=BEFOREANDAFTER)
    def method(self):
        self.data = 'ham'

X = C(data='spam')
X.method()

The that can be almost any valid Python statement which can be evaluated for its veracity, and whose result will decide whether or not the method fires/will be considered a success.

The parameter when decides if the condition is a-priori, post-mortem, or before-and-after. The default is a-priori, meaning a precondition. Note that before-and-after does not mean during; you cannot mandate an invariant this way!

RequirementNotFulfilledError is the exception you have to deal with in case a condition is not met.

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

requiresthat-2025.6.15.6.tar.gz (3.4 kB view details)

Uploaded Source

Built Distribution

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

requiresthat-2025.6.15.6-py3-none-any.whl (3.6 kB view details)

Uploaded Python 3

File details

Details for the file requiresthat-2025.6.15.6.tar.gz.

File metadata

  • Download URL: requiresthat-2025.6.15.6.tar.gz
  • Upload date:
  • Size: 3.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.3

File hashes

Hashes for requiresthat-2025.6.15.6.tar.gz
Algorithm Hash digest
SHA256 f2cea06759ef50771cf5490ed38d016312765998168ed1252f58ca954f558db0
MD5 fb87e026dac98e5d7208af09756cb644
BLAKE2b-256 04a696e30caeb805b17116f829ce53c53683c24969fd6c77c7008ae817378d86

See more details on using hashes here.

File details

Details for the file requiresthat-2025.6.15.6-py3-none-any.whl.

File metadata

File hashes

Hashes for requiresthat-2025.6.15.6-py3-none-any.whl
Algorithm Hash digest
SHA256 a4773c88973650b5a51f2b05f1aeb90c9c3b704136919d1d9cb6d548a416ea0b
MD5 d6ec83d3e7f0ba26d638ad08c56582e7
BLAKE2b-256 c35ddcf11c6afa0f89dba3a8f33e5078989e60cbb65499de5bd62772a8924d5e

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