Hide keyboard shortcuts

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. 

5 

6.. versionadded:: 1.1 

7""" 

8 

9import os 

10from pyquickhelper.helpgen.conf_path_tools import find_graphviz_dot 

11from pyquickhelper.loghelper import run_cmd 

12 

13 

14def dot_exe(): 

15 """ 

16 retrieve graphivz executable 

17 

18 @return filename 

19 

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 

26 

27 

28def run_dot(dot_file, outimg): 

29 """ 

30 calls graphivz on a dot file and produces an image 

31 

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) 

35 

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