1from flex.error_messages import MESSAGES 2from flex.exceptions import ValidationError 3from flex.constants import ( 4 ARRAY, 5 INTEGER, 6) 7from flex.utils import pluralize 8from flex.validation.common import ( 9 generate_object_validator, 10) 11from flex.validation.schema import ( 12 construct_schema_validators, 13) 14from flex.decorators import ( 15 pull_keys_from_obj, 16 suffix_reserved_words, 17 skip_if_any_kwargs_empty, 18) 19 20 21@pull_keys_from_obj('type', 'minItems') 22@suffix_reserved_words 23@skip_if_any_kwargs_empty('type_', 'minItems') 24def validate_type_for_min_items(type_, minItems, **kwargs): 25 types = pluralize(type_) 26 27 if not set(types).intersection((ARRAY,)): 28 raise ValidationError( 29 MESSAGES['type']['invalid_type_for_min_items'], 30 ) 31 32 33min_items_schema = { 34 'type': INTEGER, 35 'minimum': 0, 36} 37min_items_validators = construct_schema_validators(min_items_schema, {}) 38 39min_items_validator = generate_object_validator( 40 field_validators=min_items_validators, 41) 42