Coverage for HARK/validators.py: 100%
14 statements
« prev ^ index » next coverage.py v7.11.0, created at 2025-11-02 05:14 +0000
« prev ^ index » next coverage.py v7.11.0, created at 2025-11-02 05:14 +0000
1"""
2Decorators which can be used for validating arguments passed into decorated functions
3"""
5from functools import wraps
6from inspect import signature
9def non_empty(*parameter_names):
10 """
11 Enforces arguments to parameters passed in have len > 0
12 """
14 def _decorator(f):
15 sig = signature(f)
16 # TODO - add validation that parameter names are in signature
18 @wraps(f)
19 def _inner(*args, **kwargs):
20 bindings = sig.bind(*args, **kwargs)
21 for parameter_name in parameter_names:
22 if not len(bindings.arguments[parameter_name]):
23 raise TypeError(
24 "Expected non-empty argument for parameter {}".format(
25 parameter_name
26 )
27 )
28 return f(*args, **kwargs)
30 return _inner
32 return _decorator