Skip to content

Commit f8f941e

Browse files
committed
Test speed fixed but can't validate JSON again. #591
1 parent bf81980 commit f8f941e

File tree

3 files changed

+21
-10
lines changed

3 files changed

+21
-10
lines changed

isatools/convert/isatab2cedar.py

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,11 @@
1010
from os.path import isdir, join
1111
from uuid import uuid4
1212

13-
from jsonschema import Draft4Validator, RefResolver
14-
from jsonschema.exceptions import ValidationError
13+
from jsonschema import Draft4Validator
14+
from referencing.jsonschema import DRAFT4
15+
from referencing import Registry
1516

17+
from jsonschema.exceptions import ValidationError
1618
from isatools.io import isatab_parser
1719

1820
__author__ = "agbeltran"
@@ -38,10 +40,12 @@ def createCEDARjson(self, work_dir, json_dir, inv_identifier):
3840
log.info("Converting ISA to CEDAR model for {}".format(work_dir))
3941
schema_file = "investigation_template.json"
4042
with open(join(CEDAR_SCHEMA_PATH, schema_file)) as json_fp:
41-
schema = json.load(json_fp)
42-
if schema is None:
43+
investigation_schema = json.load(json_fp)
44+
if investigation_schema is None:
4345
raise IOError("Could not load schema from {}".format(join(CEDAR_SCHEMA_PATH, schema_file)))
44-
validator = Draft4Validator(schema)
46+
schema = DRAFT4.create_resource(investigation_schema)
47+
registry = Registry.with_resource(investigation_schema['id'], schema)
48+
validator = Draft4Validator(investigation_schema, registry=registry)
4549

4650
isa_tab = isatab_parser.parse(work_dir)
4751

isatools/convert/isatab2json.py

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,9 @@
1010
from os.path import join
1111
from uuid import uuid4
1212

13-
from jsonschema import Draft4Validator, RefResolver
13+
from jsonschema import Draft4Validator
14+
from referencing import Registry
15+
from referencing.jsonschema import DRAFT4
1416

1517
from isatools import isatab
1618
from isatools.io.isatab_parser import parse
@@ -139,8 +141,10 @@ def convert(self, work_dir):
139141

140142
# validate json
141143
with open(join(SCHEMAS_PATH, INVESTIGATION_SCHEMA)) as json_fp:
142-
schema = json.load(json_fp)
143-
validator = Draft4Validator(schema)
144+
investigation_schema = json.load(json_fp)
145+
schema = DRAFT4.create_resource(investigation_schema)
146+
registry = Registry.with_resource(investigation_schema['id'], schema)
147+
validator = Draft4Validator(investigation_schema, registry=registry)
144148
validator.validate(isa_json)
145149

146150
log.info("Conversion finished")

isatools/isajson/validate.py

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,8 @@
1515
from io import StringIO
1616

1717
from jsonschema import Draft4Validator, ValidationError
18+
from referencing import Registry
19+
from referencing.jsonschema import DRAFT4
1820

1921
from isatools.isajson.load import load
2022

@@ -548,9 +550,10 @@ def check_isa_schemas(isa_json, investigation_schema_path):
548550
try:
549551
with open(investigation_schema_path) as fp:
550552
investigation_schema = json.load(fp)
551-
validator = Draft4Validator(investigation_schema)
553+
schema = DRAFT4.create_resource(investigation_schema)
554+
registry = Registry.with_resource(investigation_schema['id'], schema)
555+
validator = Draft4Validator(investigation_schema, registry=registry)
552556
validator.validate(isa_json)
553-
#jsonschema.validate(instance=isa_json, schema=investigation_schema, cls=jsonschema.Draft4Validator)
554557
except ValidationError as ve:
555558
errors.append({"message": "Invalid JSON against ISA-JSON schemas", "supplemental": str(ve), "code": 3})
556559
log.fatal("(F) The JSON does not validate against the provided ISA-JSON schemas!")

0 commit comments

Comments
 (0)