python: add a show= keyword to display_inline()

* python/spot/jupyter.py: Here.
* tests/python/alternation.ipynb: Use it.
* NEWS: Mention the above notebook as usage example.
This commit is contained in:
Alexandre Duret-Lutz 2018-05-11 14:58:55 +02:00
parent 60898b6d22
commit 9361bd9401
3 changed files with 15 additions and 10 deletions

4
NEWS
View file

@ -72,7 +72,9 @@ New in spot 2.5.3.dev (not yet released)
Python: Python:
- New spot.jupyter package. This currently contains a function for - New spot.jupyter package. This currently contains a function for
displaying several argument side by side in a Jupyter notebook. displaying several arguments side by side in a Jupyter notebook.
See https://spot.lrde.epita.fr/ipynb/alternation.html for some
examples.
Bugs fixed: Bugs fixed:

View file

@ -23,7 +23,7 @@ Auxiliary functions for Spot's Python bindings.
from IPython.display import display, HTML from IPython.display import display, HTML
def display_inline(*args, per_row=None): def display_inline(*args, per_row=None, show=None):
""" """
This is a wrapper around IPython's `display()` to display multiple This is a wrapper around IPython's `display()` to display multiple
elements in a row, without forced line break between them. elements in a row, without forced line break between them.
@ -36,7 +36,9 @@ def display_inline(*args, per_row=None):
width = 'width:{}%;'.format(100//per_row) width = 'width:{}%;'.format(100//per_row)
for arg in args: for arg in args:
dpy = 'inline-block' dpy = 'inline-block'
if hasattr(arg, '_repr_svg_'): if show is not None and hasattr(arg, 'show'):
rep = arg.show(show)._repr_svg_()
elif hasattr(arg, '_repr_svg_'):
rep = arg._repr_svg_() rep = arg._repr_svg_()
elif hasattr(arg, '_repr_html_'): elif hasattr(arg, '_repr_html_'):
rep = arg._repr_html_() rep = arg._repr_html_()

View file

@ -715,7 +715,9 @@
"cell_type": "markdown", "cell_type": "markdown",
"metadata": {}, "metadata": {},
"source": [ "source": [
"If the state labels take too much space, you can reduce the size of the automaton by forcing states to be numbered with option `1`. The original label is still displayed as a tooltip when the mouse is over the state." "If the state labels take too much space, you can reduce the size of the automaton by forcing states to be numbered with option `1`. The original label is still displayed as a tooltip when the mouse is over the state.\n",
"\n",
"Note that passing option `show=...` to `display_inline` is similar to calling `aut.show(...)` on each argument."
] ]
}, },
{ {
@ -1359,7 +1361,7 @@
} }
], ],
"source": [ "source": [
"display_inline(aut1.show('.bav1'), aut2.show('.bav1'), aut3.show('.bav1'), aut4.show('.bav1'), aut5.show('.bav1'))" "display_inline(aut1, aut2, aut3, aut4, aut5, show='.bav1')"
] ]
}, },
{ {
@ -1371,7 +1373,7 @@
}, },
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": 5, "execution_count": 9,
"metadata": {}, "metadata": {},
"outputs": [ "outputs": [
{ {
@ -1947,7 +1949,7 @@
} }
], ],
"source": [ "source": [
"display_inline(aut1.show('.bav1u'), aut2.show('.bav1u'), aut3.show('.bav1u'), aut4.show('.bav1u'), aut5.show('.bav1u'))" "display_inline(aut1, aut2, aut3, aut4, aut5, show='.bav1u')"
] ]
}, },
{ {
@ -1959,7 +1961,7 @@
}, },
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": 6, "execution_count": 10,
"metadata": {}, "metadata": {},
"outputs": [ "outputs": [
{ {
@ -2579,8 +2581,7 @@
} }
], ],
"source": [ "source": [
"display_inline(aut1.show('.bav1us'), aut2.show('.bav1us'), aut3.show('.bav1us'), \n", "display_inline(aut1, aut2, aut3, aut4, aut5, show='.bav1us')"
" aut4.show('.bav1us'), aut5.show('.bav1us'))"
] ]
}, },
{ {