Skip to main content

Support for requirements-assisted development

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.17.0.tar.gz (3.5 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.17.0-py3-none-any.whl (3.6 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: requiresthat-2025.6.17.0.tar.gz
  • Upload date:
  • Size: 3.5 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.17.0.tar.gz
Algorithm Hash digest
SHA256 8bec94aad258073cd101c5138d4ea10ab9d477062005cd9426a6c4ae4d5386fd
MD5 a662c9e0412a32f4c31becebabebc953
BLAKE2b-256 0b71b6f0a6495d80ac1c8c22b71b9b6c048da789c88d13f80410774b002e2cd3

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for requiresthat-2025.6.17.0-py3-none-any.whl
Algorithm Hash digest
SHA256 5a67075e5af046ebaf5c6bd6673b90e640bf5516b05d7e52e7e0669b078921fe
MD5 0b91210ccc6f2f7999d7e27a4bfe070c
BLAKE2b-256 2b7a3be06a47270a9058e6ec6c2113b347537d830e176fc32f45d73884e7d6ed

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