Skip to content

Commit 2de28de

Browse files
authored
Merge pull request #3234 from jasongrout/spectraitlets5
Fix spec generation for traitlets 5
2 parents 130c0e2 + 486855e commit 2de28de

File tree

1 file changed

+15
-4
lines changed

1 file changed

+15
-4
lines changed

packages/schema/generate-spec.py

+15-4
Original file line numberDiff line numberDiff line change
@@ -112,10 +112,16 @@ def jsdefault(trait):
112112
default = trait.make_dynamic_default()
113113
if issubclass(trait.klass, widgets.Widget):
114114
return 'reference to new instance'
115-
elif isinstance(trait, Union):
116-
default = trait.make_dynamic_default()
117115
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
119125
if isinstance(default, bytes) or isinstance(default, memoryview):
120126
default = trait.default_value_repr()
121127
return default
@@ -231,7 +237,12 @@ def create_markdown(spec):
231237
widgets_to_document = sorted(widgets.Widget._widget_types.items())
232238
spec = create_spec(widgets_to_document)
233239
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
235246
elif format == 'json-pretty':
236247
print(json.dumps(spec, sort_keys=True,
237248
indent=2, separators=(',', ': ')))

0 commit comments

Comments
 (0)