def validate_object(obj, field_validators=None, non_field_validators=None, schema=None, context=None): """ Takes a mapping and applies a mapping of validator functions to it collecting and reraising any validation errors that occur. """ if schema is None: schema = {} if context is None: context = {} if field_validators is None: field_validators = ValidationDict() if non_field_validators is None: non_field_validators = ValidationList() from flex.validation.schema import ( construct_schema_validators, ) schema_validators = construct_schema_validators(schema, context) if '$ref' in schema_validators and hasattr(schema_validators['$ref'], 'validators'): ref_ = field_validators.pop('$ref') for k, v in ref_.validators.items(): if k not in schema_validators: schema_validators.add_validator(k, v) if 'discriminator' in schema: add_polymorphism_requirements(obj, schema, context, schema_validators) schema_validators.update(field_validators) schema_validators.validate_object(obj, context=context) non_field_validators.validate_object(obj, context=context) return obj
functools.partial(apply_validator_to_object, validator=schema_validator), ) properties_validator = generate_object_validator( schema=common_properties_schema, non_field_validators=properties_non_field_validators, ) # Now put the properties validator onto the schema validator. schema_field_validators.add_property_validator('properties', properties_validator) # # Items # items_non_field_validators = ValidationList() items_non_field_validators.add_validator( skip_if_empty(skip_if_not_of_type(OBJECT)(schema_validator))) items_non_field_validators.add_validator( skip_if_empty( skip_if_not_of_type(ARRAY)(functools.partial( apply_validator_to_array, validator=schema_validator), )), ) items_validator = generate_object_validator( schema=common_items_schema, non_field_validators=items_non_field_validators, ) # Now put the items validator onto the schema validator schema_field_validators.add_property_validator('items', items_validator)
import functools from flex.datastructures import ( ValidationList, ) from flex.constants import ( OBJECT, ) from flex.validation.common import ( generate_object_validator, apply_validator_to_object, ) from .single import ( single_parameter_validator, ) parameters_schema = { 'type': OBJECT, } parameters_non_field_validators = ValidationList() parameters_non_field_validators.add_validator( functools.partial(apply_validator_to_object, validator=single_parameter_validator), ) parameters_validator = generate_object_validator( schema=parameters_schema, non_field_validators=parameters_non_field_validators, )