Source code for graphcat.notebook

# Copyright 2020 Timothy M. Shead
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#    http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

"""Integration with Jupyter notebooks, https://jupyter.org"""

import graphcat.diagram
import graphcat.optional
import graphcat.require


IPython = graphcat.optional.module("IPython.display")


[docs]@graphcat.require.loaded_module("IPython.display") def display(graph, hide=None, rankdir="LR"): """Display a computational graph inline in a Jupyter notebook. This is extremely useful for understanding and debugging graphs. The structure and current state of the graph is displayed as an inline SVG graphic. See :func:`graphcat.diagram.draw` for details. Parameters ---------- graph: :class:`graphcat.Graph` or :class:`pygraphviz.AGraph`, required The graph to be visualized. hide: Python callable, optional Python callable that can be used to hide tasks in the displayed figure. If :any:`None` (the default), all tasks will be displayed. Ignored if `graph` is a :class:`pygraphviz.AGraph`. rankdir: :class:`str`, optional Graphviz rankdir attribute that determines the direction of data flow within the diagram. Default: ``"LR"``, which is left-to-right flow. Ignored if `graph` is a :class:`pygraphviz.AGraph`. """ agraph = graphcat.diagram.draw(graph, hide=hide, rankdir=rankdir) IPython.display.display(IPython.display.SVG(data=agraph.draw(prog="dot", format="svg")))