Coverage for src/pyensae/graphhelper/graphviz_helper.py: 88%
17 statements
« prev ^ index » next coverage.py v7.2.7, created at 2023-07-03 02:16 +0200
« prev ^ index » next coverage.py v7.2.7, created at 2023-07-03 02:16 +0200
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