diff --git a/setup.py b/setup.py index 6201149eb90df793e8c28e5684f79cf617548d0b..eed060aaf515260a03c1cbde6d205a8fa06ae395 100755 --- a/setup.py +++ b/setup.py @@ -163,7 +163,8 @@ def setup_package(): "xlrd>=2.0", ], extras_require={"h5-crawler": ["h5py>=3.3.0", ], - "gitignore-parser ": ["gitignore-parser >=0.1.0", ], + "gitignore-parser": ["gitignore-parser >=0.1.0", ], + "jsonref": ["jsonref", ], }, packages=find_packages('src'), package_dir={'': 'src'}, diff --git a/src/caosadvancedtools/models/parser.py b/src/caosadvancedtools/models/parser.py index 6a33d5c03e40d3c7a2dd99c10f88601f1e2f95a3..abf47d03c056714a66295aefefc3800f1d3dfd7a 100644 --- a/src/caosadvancedtools/models/parser.py +++ b/src/caosadvancedtools/models/parser.py @@ -35,8 +35,9 @@ not defined, simply the name can be supplied with no value. Parents can be provided under the 'inherit_from_xxxx' keywords. The value needs to be a list with the names. Here, NO NEW entities can be defined. """ -import json import argparse +import json +import jsonref import re import sys import yaml @@ -648,7 +649,7 @@ class JsonSchemaParser(Parser): # @date 2022-02-17 # @review Timm Fitschen 2022-02-30 with open(filename, 'r') as schema_file: - model_dict = json.load(schema_file) + model_dict = jsonref.load(schema_file) return self._create_model_from_dict(model_dict, top_level_recordtype=top_level_recordtype) diff --git a/unittests/json-schema-models/datamodel_no_toplevel_entity.schema.json b/unittests/json-schema-models/datamodel_no_toplevel_entity.schema.json index 3e4f1770bb1f38ff39ebc5242acf13b61ab24b67..104d22c7e8501d4f1ae66f680f7403cb02b8b090 100644 --- a/unittests/json-schema-models/datamodel_no_toplevel_entity.schema.json +++ b/unittests/json-schema-models/datamodel_no_toplevel_entity.schema.json @@ -32,6 +32,9 @@ "number_prop": { "type": "number", "description": "Some float property" + }, + "user_id": { + "$ref": "#/definitions/uuid" } }, "required": ["title", "number_prop"] diff --git a/unittests/test_json_schema_model_parser.py b/unittests/test_json_schema_model_parser.py index 81c76cb9a13747bf08cb3e4915ecebaf2143a447..483955985c3d9cb52ff63c9f41c35ee56d112c09 100644 --- a/unittests/test_json_schema_model_parser.py +++ b/unittests/test_json_schema_model_parser.py @@ -367,11 +367,12 @@ def test_no_toplevel_entity(): assert rt1.name == "Dataset1" assert rt1.description == "Some description" - assert len(rt1.get_properties()) == 3 + assert len(rt1.get_properties()) == 4 assert rt1.get_property("title") is not None assert rt1.get_property("campaign") is not None assert rt1.get_property("number_prop") is not None + assert rt1.get_property("user_id") is not None title_prop = rt1.get_property("title") assert title_prop.datatype == db.TEXT