diff --git a/ipywidgets_jsonschema/__init__.py b/ipywidgets_jsonschema/__init__.py index 262349f..3ebd6e0 100644 --- a/ipywidgets_jsonschema/__init__.py +++ b/ipywidgets_jsonschema/__init__.py @@ -1,3 +1,3 @@ from ipywidgets_jsonschema.form import Form -__version__ = "0.7.3" +__version__ = "0.8.0" diff --git a/ipywidgets_jsonschema/form.py b/ipywidgets_jsonschema/form.py index f2db786..ee4ffb8 100644 --- a/ipywidgets_jsonschema/form.py +++ b/ipywidgets_jsonschema/form.py @@ -1,4 +1,5 @@ from IPython.display import display +from packaging import version import collections import ipywidgets @@ -9,6 +10,10 @@ import traitlets +# We are providing some compatibility for ipywidgets v7 and v8 +IS_VERSION_8 = version.parse(ipywidgets.__version__) >= version.parse("8") + + class FormError(Exception): pass @@ -196,9 +201,15 @@ def _wrap_accordion(self, widget_list, schema, label=None): titles = [] if label is not None or "title" in schema: titles = [schema.get("title", label)] - accordion = ipywidgets.Accordion( - children=[ipywidgets.VBox(widget_list)], titles=titles - ) + + if IS_VERSION_8: + accordion = ipywidgets.Accordion( + children=[ipywidgets.VBox(widget_list)], titles=titles + ) + else: + accordion = ipywidgets.Accordion(children=[ipywidgets.VBox(widget_list)]) + for i, title in enumerate(titles): + accordion.set_title(i, title) # This folds the accordion accordion.selected_index = None diff --git a/setup.cfg b/setup.cfg index d045a20..ad7e938 100644 --- a/setup.cfg +++ b/setup.cfg @@ -17,6 +17,7 @@ classifiers = packages = find: install_requires = IPython - ipywidgets>=8.0.0b1 - jsonschema==3.2.0 + ipywidgets + jsonschema<4 + packaging traitlets