Module brevettiai.utils.validate_args

Expand source code
import inspect
import logging

log = logging.getLogger(__name__)

class ValidateArgs:
    """
    Decorator for validating parameters of function
    """
    def __init__(self, validator, throw=True):
        self.__dict__.update({k: v for k, v in locals().items() if not (k.startswith("__") or k is "self")})

    def __call__(self, fn):
        self.sig = inspect.signature(fn)

        def _validate(*args, **kwargs):
            try:
                args_ = self.sig.bind(*args, **kwargs)
                args_.apply_defaults()
                self.validator(**args_.arguments)
            except Exception as ex:
                if not self.throw:
                    log.warning(f"Validator failed for {fn}", exc_info=ex)
                else:
                    raise ex

            return fn(*args, **kwargs)
        return _validate

Classes

class ValidateArgs (validator, throw=True)

Decorator for validating parameters of function

Expand source code
class ValidateArgs:
    """
    Decorator for validating parameters of function
    """
    def __init__(self, validator, throw=True):
        self.__dict__.update({k: v for k, v in locals().items() if not (k.startswith("__") or k is "self")})

    def __call__(self, fn):
        self.sig = inspect.signature(fn)

        def _validate(*args, **kwargs):
            try:
                args_ = self.sig.bind(*args, **kwargs)
                args_.apply_defaults()
                self.validator(**args_.arguments)
            except Exception as ex:
                if not self.throw:
                    log.warning(f"Validator failed for {fn}", exc_info=ex)
                else:
                    raise ex

            return fn(*args, **kwargs)
        return _validate