11import os
22from pathlib import Path
3+ import subprocess
34import sys
45
5- from os .path import join , basename , splitext , normpath , abspath
6+ from os .path import join , basename , splitext , normpath
67
78from string import Template
89import logging
3334
3435
3536def runcmd (syscmd ):
36- # err = os.system(syscmd)
37- sres = os .popen (syscmd )
38- resdata = sres .read ()
39- err = sres .close ()
37+ result = subprocess .run (syscmd , text = True , capture_output = True )
38+ err = result .returncode
4039 if err :
4140 log .warning ('Failed to run command:\n %s' , syscmd )
42- log .debug ('Output:\n %s' , resdata )
41+ log .debug ('Output:\n %s' , result )
4342 return err
4443
4544
4645def meps (filename ):
4746 fn = splitext (filename )[0 ]
48- s = "latex -halt-on-error -interaction nonstopmode %s.tex" % fn
47+ s = [ "latex', ' -halt-on-error', ' -interaction nonstopmode %s.tex" % fn ]
4948 err = runcmd (s )
5049 if err :
5150 return err
5251 if sys .platform == 'win32' :
53- s = "dvips -Ppdf -G0 -D600 -E* -o%s.eps %s.dvi" % (fn , fn )
52+ s = [ "dvips" , " -Ppdf" , " -G0" , " -D600" , " -E*" , " -o%s.eps %s.dvi" % (fn , fn )]
5453 err = runcmd (s )
5554 if err :
5655 return err
57- s = "epstool --bbox --copy --output %s_tmp.eps %s.eps" % (fn , fn )
56+ s = [ "epstool" , " --bbox" , " --copy" , " --output %s_tmp.eps %s.eps" % (fn , fn )]
5857 err = runcmd (s )
5958 if err :
6059 return err
@@ -65,19 +64,19 @@ def meps(filename):
6564 os .remove ("%s.log" % fn )
6665 # os.remove("%s.pgf" % fn)
6766
68- except :
67+ except OSError :
6968 raise
7069 os .rename ("%s_tmp.eps" % fn , "%s.eps" % fn )
71- s = "epstopdf %s.eps" % fn
70+ s = [ "epstopdf" , " %s.eps" % fn ]
7271 err = runcmd (s )
7372 else :
74- s = "dvips %s.dvi" % fn
73+ s = [ "dvips" , " %s.dvi" % fn ]
7574 err = runcmd (s )
76- s = "ps2eps -B -f %s.ps" % fn
75+ s = [ "ps2eps" , "-B" , "-f" , " %s.ps" % fn ]
7776 err = runcmd (s )
7877 if err :
7978 return err
80- s = "epstopdf %s.eps" % fn
79+ s = [ "epstopdf" , " %s.eps" % fn ]
8180 err = runcmd (s )
8281
8382 return err
@@ -114,9 +113,9 @@ def create_pdf(texfile, use_pdftex=True):
114113 else :
115114 fn = basename (texfile )
116115 if sys .platform == 'win32' :
117- syscmd = 'texify --pdf --clean %s' % (fn )
116+ syscmd = [ 'texify' , ' --pdf --clean %s' % (fn )]
118117 else :
119- syscmd = 'pdflatex -halt-on-error -interaction nonstopmode %s' % (fn )
118+ syscmd = [ 'pdflatex' , ' -halt-on-error -interaction nonstopmode %s' % (fn )]
120119 err = runcmd (syscmd )
121120 return err
122121
@@ -129,9 +128,9 @@ def create_original(dotfilename):
129128 destfile = normpath (join (DEST_DIR , splitext (basefn )[0 ]))
130129 cwd = os .getcwd ()
131130 os .chdir (os .path .dirname (destfile ))
132- syscmd = 'dot -Tps2 %s > %s.ps' % (dotfilename , destfile )
131+ syscmd = [ 'dot' , ' -Tps2 %s > %s.ps' % (dotfilename , destfile )]
133132 err = runcmd (syscmd )
134- syscmd = 'ps2pdf %s.ps' % (destfile )
133+ syscmd = [ 'ps2pdf' , ' %s.ps' % (destfile )]
135134 # os.remove("%s.ps" % destfile)
136135 err = runcmd (syscmd )
137136 os .chdir (cwd )
@@ -141,7 +140,7 @@ def create_original(dotfilename):
141140def create_tikz (dotfilename ):
142141 basefn = basename (dotfilename )
143142 destfile = normpath (join (DEST_DIR , splitext (basefn )[0 ])) + '_tikz'
144- syscmd = 'dot2tex -ftikz --crop %s > %s.tex' % (dotfilename , destfile )
143+ syscmd = [ 'dot2tex' , ' -ftikz --crop %s > %s.tex' % (dotfilename , destfile )]
145144 err = runcmd (syscmd )
146145 cwd = os .getcwd ()
147146 os .chdir (os .path .dirname (destfile ))
@@ -154,7 +153,7 @@ def create_tikz(dotfilename):
154153def create_pgf (dotfilename ):
155154 basefn = basename (dotfilename )
156155 destfile = normpath (join (DEST_DIR , splitext (basefn )[0 ])) + '_pgf'
157- syscmd = 'dot2tex --crop %s > %s.tex' % (dotfilename , destfile )
156+ syscmd = [ 'dot2tex' , ' --crop %s > %s.tex' % (dotfilename , destfile )]
158157 err = runcmd (syscmd )
159158 cwd = os .getcwd ()
160159 os .chdir (os .path .dirname (destfile ))
@@ -167,7 +166,7 @@ def create_pgf(dotfilename):
167166def create_pst (dotfilename ):
168167 basefn = basename (dotfilename )
169168 destfile = normpath (join (DEST_DIR , splitext (basefn )[0 ])) + '_pst'
170- syscmd = 'dot2tex -fpst %s > %s.tex' % (dotfilename , destfile )
169+ syscmd = [ 'dot2tex' , ' -fpst' , ' %s > %s.tex' % (dotfilename , destfile )]
171170 err = runcmd (syscmd )
172171 cwd = os .getcwd ()
173172 os .chdir (os .path .dirname (destfile ))
@@ -317,11 +316,12 @@ def test_zzzzzzzzzzzfinal(self):
317316 for dotfile in self .cmplist :
318317 basefn = basename (dotfile )
319318 flist .append (normpath (join (splitext (basefn )[0 ])) + '_cmp.pdf' )
320- s = "pdftk %s cat output testrenders.pdf dont_ask" % " " .join (flist )
319+ s = ["pdftk" , " " .join (flist ), "cat" ,
320+ "output" , "testrenders.pdf" , "dont_ask" ]
321321 err = runcmd (s )
322322 self .assertFalse (err )
323323 if sys .platform == 'win32' :
324- syscmd = "start %s" % 'testrenders.pdf'
324+ syscmd = [ "start" , 'testrenders.pdf' ]
325325 err = runcmd (syscmd )
326326 print ("Check testrenders.pdf manually" )
327327
0 commit comments