def does_not_contain(*avoid_keys, error_cls=ValueError):
    """Decorator: value must not contain any of the :attr:`avoid_keys`.
    """

    def decorator(func):
        def not_contains(instance, attribute, value):
            instance_name = instance.__class__.__name__

            num_matched_keys = len(set(avoid_keys) & value.keys())
            if num_matched_keys > 0:
                avoid_keys_str = ', '.join(avoid_keys)
                err_str = ("Given keys ({num_matched} of {{avoid_keys}} "
                           "that must not be given in the '{attr}' of a "
                           "'{cls}'").format(num_matched=num_matched_keys,
                                             avoid_keys=avoid_keys_str,
                                             attr=attribute.name,
                                             cls=instance_name)
                raise error_cls(err_str)

            return func(instance, attribute, value)
        return not_contains
    return decorator