Coverage for HARK/validators.py: 100%

14 statements  

« 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""" 

4 

5from functools import wraps 

6from inspect import signature 

7 

8 

9def non_empty(*parameter_names): 

10 """ 

11 Enforces arguments to parameters passed in have len > 0 

12 """ 

13 

14 def _decorator(f): 

15 sig = signature(f) 

16 # TODO - add validation that parameter names are in signature 

17 

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) 

29 

30 return _inner 

31 

32 return _decorator