Skip to content
Snippets Groups Projects
Commit 21bfe7d3 authored by Alexander Schlemmer's avatar Alexander Schlemmer
Browse files

ENH(core): new validator module that is supposed to check created records using a json schema

parent bd74a095
No related branches found
No related tags found
2 merge requests!217TST: Make NamedTemporaryFiles Windows-compatible,!201Validator that checks created records using a json schema
Pipeline #57794 passed
#!/usr/bin/env python3
# encoding: utf-8
#
# This file is a part of the LinkAhead Project.
#
# Copyright (C) 2024 Indiscale GmbH <info@indiscale.com>
# Copyright (C) 2024 Alexander Schlemmer
#
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as
# published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <https://www.gnu.org/licenses/>.
#
# ** end header
#
"""
This module contains functions to validate the output of a scanner run with a
json schema.
"""
import json
import jsonschema
import linkahead as db
# from caosadvancedtools.models.parser import parse_model_from_string
from caosadvancedtools.json_schema_exporter import recordtype_to_json_schema
from caosadvancedtools.models.parser import parse_model_from_yaml
from linkahead.high_level_api import convert_to_python_object
from caoscrawler import scanner
def load_json_schema_from_datamodel_yaml(filename: str) -> list:
"""
Load a data model yaml file (using caosadvancedtools) and convert
all record types into a json schema using the json_schema_exporter module.
Arguments
---------
filename: str
The filename of the yaml file to load.
Returns
-------
A list of json schema objects.
"""
model = parse_model_from_yaml(filename)
# TODO: fix needed (https://gitlab.indiscale.com/caosdb/customers/f-fit/management/-/issues/58)
rt_schemas = []
for el in model:
if isinstance(el, db.RecordType):
rt_schemas.append(recordtype_to_json_schema(el))
return rt_schemas
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment