1import six
2
3from flex.exceptions import ValidationError
4from flex.error_messages import MESSAGES
5from flex.decorators import (
6    pull_keys_from_obj,
7    suffix_reserved_words,
8    skip_if_any_kwargs_empty,
9)
10from flex.utils import is_value_of_any_type
11
12
13@pull_keys_from_obj('type', 'default')
14@suffix_reserved_words
15@skip_if_any_kwargs_empty('default', 'type_')
16def validate_default_is_of_one_of_declared_types(default, type_, **kwargs):
17    if isinstance(type_, six.string_types):
18        type_ = [type_]
19
20    if not is_value_of_any_type(default, type_):
21        raise ValidationError(
22            MESSAGES['default']['invalid_type'].format(default, type_),
23        )
24