##// END OF EJS Templates
Remove unused convert function from validator
Remove unused convert function from validator

File last commit:

r16336:6addf98a
r16336:6addf98a
Show More
validator.py
70 lines | 1.9 KiB | text/x-python | PythonLexer
Thomas Kluyver
Convert print statements to print function calls...
r13348 from __future__ import print_function
Matthias BUSSONNIER
create a ipynbv3 json schema and a validator...
r8519 #!/usr/bin/env python
# -*- coding: utf8 -*-
Thomas Kluyver
Import argparse directly from stdlib
r12547 import json
Jessica B. Hamrick
Allow validator to be called from reads_json and writes_json
r16330 import os
Matthias BUSSONNIER
create a ipynbv3 json schema and a validator...
r8519
Jessica B. Hamrick
Clean up validator, and rename nbvalidate to validate
r16332 from IPython.external.jsonschema import Draft3Validator
Matthias BUSSONNIER
import jsonpointer and schema from external
r8525 import IPython.external.jsonpointer as jsonpointer
Thomas Kluyver
Fix references to dict.iteritems and dict.itervalues
r13361 from IPython.utils.py3compat import iteritems
Matthias BUSSONNIER
create a ipynbv3 json schema and a validator...
r8519
Jessica B. Hamrick
Allow validator to be called from reads_json and writes_json
r16330
from .current import nbformat, nbformat_schema
Jessica B. Hamrick
Add comments inside validator
r16335 schema_path = os.path.join(
Jessica B. Hamrick
Allow validator to be called from reads_json and writes_json
r16330 os.path.split(__file__)[0], "v%d" % nbformat, nbformat_schema)
Jessica B. Hamrick
Add comments inside validator
r16335 def validate(nbjson, key='', verbose=True):
# load the schema file
with open(schema_path, 'r') as fh:
schema_json = json.load(fh)
# resolve internal references
v3schema = resolve_ref(schema_json)
v3schema = jsonpointer.resolve_pointer(v3schema, key)
Matthias BUSSONNIER
create a ipynbv3 json schema and a validator...
r8519 errors = 0
Jessica B. Hamrick
Allow validator to be called from reads_json and writes_json
r16330 v = Draft3Validator(v3schema)
Matthias BUSSONNIER
update Jsonschema version
r8674 for error in v.iter_errors(nbjson):
Matthias BUSSONNIER
create a ipynbv3 json schema and a validator...
r8519 errors = errors + 1
if verbose:
print(error)
Jessica B. Hamrick
Add comments inside validator
r16335
Matthias BUSSONNIER
create a ipynbv3 json schema and a validator...
r8519 return errors
Jessica B. Hamrick
Allow validator to be called from reads_json and writes_json
r16330
Jessica B. Hamrick
Add comments inside validator
r16335 def resolve_ref(json, schema=None):
Matthias BUSSONNIER
create a ipynbv3 json schema and a validator...
r8519 """return a json with resolved internal references
only support local reference to the same json
"""
Jessica B. Hamrick
Add comments inside validator
r16335 if not schema:
schema = json
# if it's a list, resolve references for each item in the list
Matthias BUSSONNIER
create a ipynbv3 json schema and a validator...
r8519 if type(json) is list:
Jessica B. Hamrick
Add comments inside validator
r16335 resolved = []
Matthias BUSSONNIER
create a ipynbv3 json schema and a validator...
r8519 for item in json:
Jessica B. Hamrick
Add comments inside validator
r16335 resolved.append(resolve_ref(item, schema=schema))
# if it's a dictionary, resolve references for each item in the
# dictionary
Matthias BUSSONNIER
create a ipynbv3 json schema and a validator...
r8519 elif type(json) is dict:
Jessica B. Hamrick
Add comments inside validator
r16335 resolved = {}
for key, ref in iteritems(json):
# if the key is equal to $ref, then replace the entire
# dictionary with the resolved value
Matthias BUSSONNIER
create a ipynbv3 json schema and a validator...
r8519 if key == '$ref':
Jessica B. Hamrick
Add comments inside validator
r16335 assert len(json) == 1
pointer = jsonpointer.resolve_pointer(schema, ref)
resolved = resolve_ref(pointer, schema=schema)
Jessica B. Hamrick
Clean up validator, and rename nbvalidate to validate
r16332 else:
Jessica B. Hamrick
Add comments inside validator
r16335 resolved[key] = resolve_ref(ref, schema=schema)
# otherwise it's a normal object, so just return it
Jessica B. Hamrick
Clean up validator, and rename nbvalidate to validate
r16332 else:
Jessica B. Hamrick
Add comments inside validator
r16335 resolved = json
return resolved