##// END OF EJS Templates
Merge pull request #3409 from pankajp/qt-console-freeze-on-output-clip...
Merge pull request #3409 from pankajp/qt-console-freeze-on-output-clip Prevent qtconsole frontend freeze on lots of output. The output from the kernel is now clipped to last buffer_size before displaying and a timer is used to flush the pending output text instead of attempting to display text on every stream output from kernel. The timer interval is adjusted based on actual time taken to append a screenful of text to widget. This throttles the widget repaints and avoids choking the Qt event loop leaving time to handle other Qt events.

File last commit:

r8675:61470140
r11532:0397c02f merge
Show More
validator.py
88 lines | 2.7 KiB | text/x-python | PythonLexer
#!/usr/bin/env python
# -*- coding: utf8 -*-
from IPython.external.jsonschema import Draft3Validator, validate, ValidationError
import IPython.external.jsonpointer as jsonpointer
from IPython.external import argparse
import traceback
import json
def nbvalidate(nbjson, schema='v3.withref.json', key=None,verbose=True):
v3schema = resolve_ref(json.load(open(schema,'r')))
if key :
v3schema = jsonpointer.resolve_pointer(v3schema,key)
errors = 0
v = Draft3Validator(v3schema);
for error in v.iter_errors(nbjson):
errors = errors + 1
if verbose:
print(error)
return errors
def resolve_ref(json, base=None):
"""return a json with resolved internal references
only support local reference to the same json
"""
if not base :
base = json
temp = None
if type(json) is list:
temp = [];
for item in json:
temp.append(resolve_ref(item, base=base))
elif type(json) is dict:
temp = {};
for key,value in json.iteritems():
if key == '$ref':
return resolve_ref(jsonpointer.resolve_pointer(base,value), base=base)
else :
temp[key]=resolve_ref(value, base=base)
else :
return json
return temp
def convert(namein, nameout, indent=2):
"""resolve the references of namein, save the result in nameout"""
jsn = None
with open(namein) as file :
jsn = json.load(file)
v = resolve_ref(jsn, base=jsn)
x = jsonpointer.resolve_pointer(v, '/notebook')
with open(nameout,'w') as file:
json.dump(x,file,indent=indent)
if __name__ == '__main__':
parser = argparse.ArgumentParser()
parser.add_argument('-s', '--schema',
type=str, default='v3.withref.json')
parser.add_argument('-k', '--key',
type=str, default='/notebook',
help='subkey to extract json schema from json file')
parser.add_argument("-v", "--verbose", action="store_true",
help="increase output verbosity")
parser.add_argument('filename',
type=str,
help="file to validate",
nargs='*',
metavar='names')
args = parser.parse_args()
for name in args.filename :
nerror = nbvalidate(json.load(open(name,'r')),
schema=args.schema,
key=args.key,
verbose=args.verbose)
if nerror is 0:
print u"[Pass]",name
else :
print u"[ ]",name,'(%d)'%(nerror)
if args.verbose :
print '=================================================='