Hot-keys on this page
r m x p toggle line displays
j k next/prev highlighted chunk
0 (zero) top of page
1 (one) first highlighted chunk
1# -*- coding: utf-8 -*-
2"""
3@file
4@brief Various functions about graphviz.
6.. versionadded:: 1.1
7"""
9import os
10from pyquickhelper.helpgen.conf_path_tools import find_graphviz_dot
11from pyquickhelper.loghelper import run_cmd
14def dot_exe():
15 """
16 retrieve graphivz executable
18 @return filename
20 .. versionadded:: 1.1
21 """
22 r = find_graphviz_dot()
23 if r is None:
24 raise FileNotFoundError("unable to find graphviz")
25 return r
28def run_dot(dot_file, outimg):
29 """
30 calls graphivz on a dot file and produces an image
32 @param dot_file file, format `DOT <http://www.graphviz.org/doc/info/lang.html>`_
33 @param outimg output image
34 @return out, err (stdout, stderr from graphviz)
36 .. versionadded:: 1.1
37 """
38 ext = os.path.splitext(outimg)[-1].strip(".")
39 exe = dot_exe()
40 cmd = "\"{0}\" -T{1} -o{2} {3}".format(exe, ext, outimg, dot_file)
41 out, err = run_cmd(cmd, wait=True)
42 if len(err) > 0:
43 raise Exception("unable to run graphviz on {0}.\nCMD:\n{1}\nOUT:\n{2}\nERR:\n{3}".format(
44 dot_file, cmd, out, err))
45 return out, err