Skip to content

Commit e381f64

Browse files
author
Peter Amstutz
committed
Return metaschema loader from load_schema. Don't crash expanding identifier
fields when value is not a string.
1 parent ff192e8 commit e381f64

File tree

3 files changed

+6
-5
lines changed

3 files changed

+6
-5
lines changed

schema_salad/metaschema/metaschema.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@ $graph:
7070
- "string: Unicode character sequence"
7171

7272

73-
- name: "Any"
73+
- name: Any
7474
type: enum
7575
symbols: ["#Any"]
7676
doc: |

schema_salad/ref_resolver.py

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -368,9 +368,10 @@ def resolve_all(self, document, base_url, file_base=None):
368368
for identifer in loader.identity_links:
369369
if identifer in document and isinstance(document[identifer], list):
370370
for n, v in enumerate(document[identifer]):
371-
document[identifer][n] = loader.expand_url(document[identifer][n], base_url, scoped=True)
372-
if document[identifer][n] not in loader.idx:
373-
loader.idx[document[identifer][n]] = document[identifer][n]
371+
if isinstance(document[identifer][n], basestring):
372+
document[identifer][n] = loader.expand_url(document[identifer][n], base_url, scoped=True)
373+
if document[identifer][n] not in loader.idx:
374+
loader.idx[document[identifer][n]] = document[identifer][n]
374375
#else:
375376
# raise validate.ValidationException("identity field '%s' must be a string" % (document[identifer]))
376377

schema_salad/schema.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -176,7 +176,7 @@ def load_schema(schema_ref, cache=None):
176176
# Make the Avro validation that will be used to validate the target document
177177
(avsc_names, avsc_obj) = make_avro_schema(schema_doc, document_loader)
178178

179-
return document_loader, avsc_names, schema_metadata
179+
return document_loader, avsc_names, schema_metadata, metaschema_loader
180180

181181
def load_and_validate(document_loader, avsc_names, document, strict):
182182
if isinstance(document, dict):

0 commit comments

Comments
 (0)