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()
See the tests for more.
The that can be almost any valid Python statement which can be evaluated and whose veracity can be asserted, and the result thereof 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. NoCallableConstructError gets raised should you apply the decorator to a construct that is not callable.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file requiresthat-2025.6.18.3.tar.gz.
File metadata
- Download URL: requiresthat-2025.6.18.3.tar.gz
- Upload date:
- Size: 3.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
144f2c3a775867934f19da31cf922cf6ffb1295de5a950dad3ab7e64d598783a
|
|
| MD5 |
0fab2e97d0352b809d5538a5f80d6afb
|
|
| BLAKE2b-256 |
8deebd44114e7d63cdb0800cf861a62c5d635810ba363a7df9eef64689214c23
|
File details
Details for the file requiresthat-2025.6.18.3-py3-none-any.whl.
File metadata
- Download URL: requiresthat-2025.6.18.3-py3-none-any.whl
- Upload date:
- Size: 4.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d7d73f8ae6e5a9a2e9c100c57c5d4d781f1fb28d6da42f8e134ee18b11f5a5ef
|
|
| MD5 |
7fdb3c5ccbe29aff2f12f6d15819e0b0
|
|
| BLAKE2b-256 |
5b30e715adf5b8642c486e18ce520c8c60c2c7ee2eb4a44ae0a86d6f617a86a6
|