@@ -112,10 +112,16 @@ def jsdefault(trait):
112
112
default = trait .make_dynamic_default ()
113
113
if issubclass (trait .klass , widgets .Widget ):
114
114
return 'reference to new instance'
115
- elif isinstance (trait , Union ):
116
- default = trait .make_dynamic_default ()
117
115
else :
118
- default = trait .default_value
116
+ try :
117
+ # traitlets 5
118
+ default = trait .default ()
119
+ except AttributeError :
120
+ # traitlets 4 - can be deleted when we depend only on traitlets 5
121
+ if isinstance (trait , Union ):
122
+ default = trait .make_dynamic_default ()
123
+ else :
124
+ default = trait .default_value
119
125
if isinstance (default , bytes ) or isinstance (default , memoryview ):
120
126
default = trait .default_value_repr ()
121
127
return default
@@ -231,7 +237,12 @@ def create_markdown(spec):
231
237
widgets_to_document = sorted (widgets .Widget ._widget_types .items ())
232
238
spec = create_spec (widgets_to_document )
233
239
if format == 'json' :
234
- print (json .dumps (spec , sort_keys = True ))
240
+ try :
241
+ print (json .dumps (spec , sort_keys = True ))
242
+ except TypeError :
243
+ print ('Encountered error when converting spec to JSON. Here is the spec:' )
244
+ print (spec )
245
+ raise
235
246
elif format == 'json-pretty' :
236
247
print (json .dumps (spec , sort_keys = True ,
237
248
indent = 2 , separators = (',' , ': ' )))
0 commit comments