def test_validator_visit_repeat_nodes(): ctx = asdf.AsdfFile() node = asdf.tags.core.Software(name="Minesweeper") tree = yamlutil.custom_tree_to_tagged_tree( { "node": node, "other_node": node, "nested": { "node": node } }, ctx) visited_nodes = [] def _test_validator(validator, value, instance, schema): visited_nodes.append(instance) validator = schema.get_validator( ctx=ctx, validators=util.HashableDict(type=_test_validator)) validator.validate(tree) assert len(visited_nodes) == 1 visited_nodes.clear() validator = schema.get_validator( validators=util.HashableDict(type=_test_validator), _visit_repeat_nodes=True) validator.validate(tree) assert len(visited_nodes) == 3
def _check_value(value, schema): """ Perform the actual validation. """ if value is None: if schema.get('fits_required'): name = schema.get("fits_keyword") or schema.get("fits_hdu") raise jsonschema.ValidationError("%s is a required value" % name) else: validator_context = AsdfFile() validator_resolver = validator_context.resolver temp_schema = { '$schema': 'http://stsci.edu/schemas/asdf-schema/0.1.0/asdf-schema'} temp_schema.update(schema) validator = asdf_schema.get_validator(temp_schema, validator_context, validator_callbacks, validator_resolver) value = yamlutil.custom_tree_to_tagged_tree(value, validator_context) validator.validate(value, _schema=temp_schema) validator_context.close()
def _check_value(value, schema): """ Perform the actual validation. """ if value is None: if schema.get('fits_required'): name = schema.get("fits_keyword") or schema.get("fits_hdu") raise jsonschema.ValidationError("%s is a required value" % name) else: validator_context = AsdfFile() validator_resolver = validator_context.resolver temp_schema = { '$schema': 'http://stsci.edu/schemas/asdf-schema/0.1.0/asdf-schema'} temp_schema.update(schema) validator = asdf_schema.get_validator(temp_schema, validator_context, validator_callbacks, validator_resolver) value = yamlutil.custom_tree_to_tagged_tree(value, validator_context) validator.validate(value, _schema=temp_schema) validator_context.close()
def _assert_validation(jsonschema_type, expected_valid): validator = schema.get_validator() try: validator.validate(numpy_value, _schema={"type": jsonschema_type}) except ValidationError: valid = False else: valid = True if valid is not expected_valid: if expected_valid: description = "valid" else: description = "invalid" assert False, "Expected numpy.{} to be {} against jsonschema type '{}'".format( type(numpy_value).__name__, description, jsonschema_type)
def _save_from_schema(hdulist, tree, schema): def convert_datetimes(node, json_id): if isinstance(node, datetime.datetime): node = time.Time(node) if isinstance(node, time.Time): node = str(time.Time(node, format='iso')) return node tree = treeutil.walk_and_modify(tree, convert_datetimes) validator = asdf_schema.get_validator( schema, None, FITS_VALIDATORS, FITS_SCHEMA_URL_MAPPING) validator.hdulist = hdulist # TODO: Handle comment stack on per-hdu-basis validator.comment_stack = [] # This actually kicks off the saving validator.validate(tree, _schema=schema)
def _save_from_schema(hdulist, tree, schema): def convert_datetimes(node, json_id): if isinstance(node, datetime.datetime): node = time.Time(node) if isinstance(node, time.Time): node = str(time.Time(node, format='iso')) return node tree = treeutil.walk_and_modify(tree, convert_datetimes) validator = asdf_schema.get_validator( schema, None, FITS_VALIDATORS, FITS_SCHEMA_URL_MAPPING) validator.hdulist = hdulist # TODO: Handle comment stack on per-hdu-basis validator.comment_stack = [] # This actually kicks off the saving validator.validate(tree, _schema=schema)
def _check_value(value, schema, validator_context): """ Perform the actual validation. """ validator_resolver = validator_context.resolver temp_schema = { '$schema': 'http://stsci.edu/schemas/asdf-schema/0.1.0/asdf-schema' } temp_schema.update(schema) validator = asdfschema.get_validator(temp_schema, validator_context, validator_callbacks, validator_resolver) validator.validate(value, _schema=temp_schema) validator_context.close()
def _check_value(value): """ Perform the actual validation. """ validator_context = AsdfFile() validator_resolver = validator_context.resolver temp_schema = { '$schema': 'http://stsci.edu/schemas/asdf-schema/0.1.0/asdf-schema' } validator = asdf_schema.get_validator(temp_schema, validator_context, validator_callbacks, validator_resolver) value = yamlutil.custom_tree_to_tagged_tree(value, validator_context) validator.validate(value, _schema=temp_schema) validator_context.close()