File Python-Fix-a-number-of-scripts-to-by-Python-3-compliant.patch of Package petsc
From: Egbert Eich <eich@suse.com>
Date: Sat Feb 24 19:41:46 2018 +0100
Subject: Python: Fix a number of scripts to by Python 3 compliant.
Patch-mainline: Not yet
Git-commit: 4a44f39b12a255e42cbee85177427b270ceb8889
References:
Signed-off-by: Egbert Eich <eich@suse.com>
---
bin/FASTMathInstaller.py | 94 ++++++++++++++++++------------------
bin/PetscBinaryIOTrajectory.py | 2 +-
bin/TOPSGenerator.py | 4 +-
bin/configVars.py | 12 ++---
bin/parseargs.py | 4 +-
bin/petsclogformat.py | 48 +++++++++---------
bin/portabilitycheck.py | 8 +--
bin/saws/SAWs.py | 2 +-
bin/taucc.py | 6 +--
bin/update.py | 2 +-
src/ts/examples/tutorials/extchem.py | 2 +-
11 files changed, 92 insertions(+), 92 deletions(-)
diff --git a/bin/FASTMathInstaller.py b/bin/FASTMathInstaller.py
index 49cab5a..9da0594 100755
--- a/bin/FASTMathInstaller.py
+++ b/bin/FASTMathInstaller.py
@@ -61,13 +61,13 @@ except:
sys.exit('Python is NOT installed with Tkinter on this system')
if TkVersion < 8.0 :
- print "\n" * 3
- print "*"*75
- print "Running Tk version:", TkVersion
- print "You must be using Tk version 8.0 or greater to use EasyGui."
- print "Terminating."
- print "*"*75
- print "\n" * 3
+ print("\n" * 3)
+ print("*"*75)
+ print("Running Tk version:", TkVersion)
+ print("You must be using Tk version 8.0 or greater to use EasyGui.")
+ print("Terminating.")
+ print("*"*75)
+ print("\n" * 3)
sys.exit(0)
@@ -202,10 +202,10 @@ def buttonbox(message="Shall I continue?", title="", choices = ["Button1", "Butt
messageWidget.configure(font=(DEFAULT_FONT_FAMILY,fontSize))
messageWidget.pack(side=TOP, expand=YES, fill=X, padx='3m', pady='3m')
- if message2:
- messageWidget = Message(messageFrame, text=message2, width=len(message)*fontSize+4)
- messageWidget.configure(font=(DEFAULT_FONT_FAMILY,DEFAULT_FONT_SIZE))
- messageWidget.pack(expand=YES, fill=X, padx='3m', pady='3m')
+ if message2:
+ messageWidget = Message(messageFrame, text=message2, width=len(message)*fontSize+4)
+ messageWidget.configure(font=(DEFAULT_FONT_FAMILY,DEFAULT_FONT_SIZE))
+ messageWidget.pack(expand=YES, fill=X, padx='3m', pady='3m')
__put_buttons_in_buttonframe(choices)
@@ -311,10 +311,10 @@ def multenterbox(message="Fill in values for the fields."
----------------------------------------------------------------------
"""
- if not argListOfFieldNames:
- argListOfFieldNames = ['']
- for i in range(0,len(argListOfFieldValues)+2):
- argListOfFieldNames.append('')
+ if not argListOfFieldNames:
+ argListOfFieldNames = ['']
+ for i in range(0,len(argListOfFieldValues)+2):
+ argListOfFieldNames.append('')
return __multfillablebox(
message,title,argListOfFieldNames,argListOfFieldValues,None)
@@ -360,9 +360,9 @@ def __multfillablebox(message="Fill in values for the fields."
lastWidgetIndex = len(argListOfFieldNames) - 1
- max = 40
- for i in range(len(argListOfFieldNames)):
- if len(argListOfFieldValues[i]) > max: max = len(argListOfFieldValues[i])+2
+ max = 40
+ for i in range(len(argListOfFieldNames)):
+ if len(argListOfFieldValues[i]) > max: max = len(argListOfFieldValues[i])+2
for widgetIndex in range(len(argListOfFieldNames)):
argFieldName = argListOfFieldNames[widgetIndex]
argFieldValue = argListOfFieldValues[widgetIndex]
@@ -745,8 +745,8 @@ def __choiceboxGetChoice(event):
choice_index = choiceboxWidget.curselection()
__choiceboxResults = choiceboxWidget.get(choice_index)
- # print "Debugging> mouse-event=", event, " event.type=", event.type
- # print "Debugging> choice =", choice_index, __choiceboxResults
+ # print("Debugging> mouse-event=", event, " event.type=", event.type)
+ # print("Debugging> choice =", choice_index, __choiceboxResults)
root.quit()
@@ -1093,7 +1093,7 @@ def __put_buttons_in_buttonframe(choices):
def _test():
# simple way to clear the console
- print "\n" * 100
+ print("\n" * 100)
# START DEMONSTRATION DATA ===================================================
choices_abc = ["This is choice 1", "And this is choice 2"]
message = "Pick one! This is a huge choice, and you've got to make the right one " \
@@ -1164,67 +1164,67 @@ for someItem in myListOfStuff:
if reply[0] == "msgbox":
reply = msgbox("short message", "This is a long title")
- print "Reply was:", reply
+ print("Reply was:", reply)
elif reply[0] == "buttonbox":
reply = buttonbox()
- print "Reply was:", reply
+ print("Reply was:", reply)
reply = buttonbox(message, "Demo of Buttonbox with many, many buttons!", choices)
- print "Reply was:", reply
+ print("Reply was:", reply)
elif reply[0] == "boolbox":
reply = boolbox()
- print "Reply was:", reply
+ print("Reply was:", reply)
elif reply[0] == "integerbox":
reply = integerbox(
"Enter a number between 3 and 333",
"Demo: integerbox WITH a default value",
222, 3, 333)
- print "Reply was:", reply
+ print("Reply was:", reply)
reply = integerbox(
"Enter a number between 0 and 99",
"Demo: integerbox WITHOUT a default value"
)
- print "Reply was:", reply
+ print("Reply was:", reply)
elif reply[0] == "diropenbox":
title = "Demo of diropenbox"
msg = "This is a test of the diropenbox.\n\nPick the directory that you wish to open."
d = diropenbox(msg, title)
- print "You chose directory...:", d
+ print("You chose directory...:", d)
elif reply[0] == "fileopenbox":
f = fileopenbox()
- print "You chose to open file:", f
+ print("You chose to open file:", f)
elif reply[0] == "filesavebox":
f = filesavebox()
- print "You chose to save file:", f
+ print("You chose to save file:", f)
elif reply[0] == "indexbox":
title = reply[0]
msg = "Demo of " + reply[0]
choices = ["Choice1", "Choice2", "Choice3", "Choice4"]
reply = indexbox(msg, title, choices)
- print "Reply was:", reply
+ print("Reply was:", reply)
elif reply[0] == "enterbox":
reply = enterbox("Enter the name of your best friend:", "Love!", "Suzy Smith")
- print "Reply was:", str(reply)
+ print("Reply was:", str(reply))
reply = enterbox("Enter the name of your worst enemy:", "Hate!")
- print "Reply was:", str(reply)
+ print("Reply was:", str(reply))
elif reply[0] == "ynbox":
reply = ynbox(message, title)
- print "Reply was:", reply
+ print("Reply was:", reply)
elif reply[0] == "ccbox":
reply = ccbox(message)
- print "Reply was:", reply
+ print("Reply was:", reply)
elif reply[0] == "choicebox":
longchoice = "This is an example of a very long option which you may or may not wish to choose."*2
@@ -1233,15 +1233,15 @@ for someItem in myListOfStuff:
message = "Pick something. " + ("A wrapable sentence of text ?! "*30) + "\nA separate line of text."*6
reply = choicebox(message, None, listChoices)
- print "Reply was:", reply
+ print("Reply was:", reply)
message = "Pick something. "
reply = choicebox(message, None, listChoices)
- print "Reply was:", reply
+ print("Reply was:", reply)
message = "Pick something. "
reply = choicebox("The list of choices is empty!", None, [])
- print "Reply was:", reply
+ print("Reply was:", reply)
elif reply[0] == "multchoicebox":
listChoices = ["aaa", "bbb", "ccc", "ggg", "hhh", "iii", "jjj", "kkk"
@@ -1250,17 +1250,17 @@ for someItem in myListOfStuff:
message = "Pick as many choices as you wish."
reply = multchoicebox(message,"DEMO OF multchoicebox", listChoices)
- print "Reply was:", reply
+ print("Reply was:", reply)
elif reply[0] == "textbox":
message = "Here is some sample text. " * 16
reply = textbox(message, "Text Sample", text_snippet)
- print "Reply was:", reply
+ print("Reply was:", reply)
elif reply[0] == "codebox":
message = "Here is some sample code. " * 16
reply = codebox(message, "Code Sample", code_snippet)
- print "Reply was:", reply
+ print("Reply was:", reply)
else:
msgbox("Choice\n\n" + choice + "\n\nis not recognized", "Program Logic Error")
@@ -1277,10 +1277,10 @@ The software installed is covered by a variety of licenses, please refer to
each package's license information before redistributing it. This installer
can also install additional packages that are used by the FASTMath packages."""
- result = buttonbox(message=message1, title="FASTMath Software Installer", choices = ["Cancel", "Continue"],fontSize = 20,message2=message2)
+ result = buttonbox(message=message1, title="FASTMath Software Installer", choices = ["Cancel", "Continue"],fontSize = 20,message2=message2)
if result == "Cancel": sys.exit()
- result = buttonbox(message='Should you encounter problems please send email\nto petsc-maint@mcs.anl.gov with all output\n', title="FASTMath Software Installer", choices = ["Cancel", "Continue"])
+ result = buttonbox(message='Should you encounter problems please send email\nto petsc-maint@mcs.anl.gov with all output\n', title="FASTMath Software Installer", choices = ["Cancel", "Continue"])
if result == "Cancel": sys.exit()
options = []
@@ -1387,19 +1387,19 @@ can also install additional packages that are used by the FASTMath packages."""
import urllib
try:
urllib.urlretrieve('http://ftp.mcs.anl.gov/pub/petsc/petsc.tar.gz', os.path.join(reply,'petsc.tar.gz'))
- except Exception, e:
+ except Exception as e:
raise RuntimeError('Unable to download PETSc')
import commands
try:
commands.getoutput('cd '+reply+'; gunzip petsc.tar.gz ; tar xf petsc.tar')
- except RuntimeError, e:
+ except RuntimeError as e:
raise RuntimeError('Error unzipping petsc.tar.gz'+str(e))
os.unlink(os.path.join(reply, 'petsc.tar'))
else:
import commands
try:
commands.getoutput('cd '+reply+'; git clone https://bitbucket.org/petsc/petsc.git')
- except RuntimeError, e:
+ except RuntimeError as e:
raise RuntimeError('Error trying to obtain development version of PETSc with git'+str(e))
ldir = os.listdir(reply)
for i in ldir:
@@ -1422,7 +1422,7 @@ can also install additional packages that are used by the FASTMath packages."""
f.write(' configure_options = '+repr(args)+'\n')
f.write(' configure.petsc_configure(configure_options)\n')
f.close()
- os.chmod(configfile,0755)
+ os.chmod(configfile,0o755)
msgbox('After hitting OK run\n\n cd '+petscroot+'\npython config-'+arch+'.py\n\nto continue the install')
print("Execute the following two commands and follow the directions")
print('cd '+petscroot)
diff --git a/bin/PetscBinaryIOTrajectory.py b/bin/PetscBinaryIOTrajectory.py
index b5db184..7985354 100755
--- a/bin/PetscBinaryIOTrajectory.py
+++ b/bin/PetscBinaryIOTrajectory.py
@@ -41,7 +41,7 @@ def ReadTrajectory(directory):
return (t,v,names)
def PlotTrajectories(t,v,names,subnames):
- print names
+ print(names)
sub = []
for s in subnames:
sub.append(names.index(s))
diff --git a/bin/TOPSGenerator.py b/bin/TOPSGenerator.py
index c65a673..0767d29 100755
--- a/bin/TOPSGenerator.py
+++ b/bin/TOPSGenerator.py
@@ -17,10 +17,10 @@ information on TOPS may be found at http://www.tops-scidac.org. \n\n
This tool allows you to define the class of algebraic problem you are solving
and generates the appropriate "glue" code needed to use the TOPS Solver Components"""
- result = buttonbox(message=message1, title=title, choices = ["Cancel", "Continue"],fontSize = 20,message2=message2)
+ result = buttonbox(message=message1, title=title, choices = ["Cancel", "Continue"],fontSize = 20,message2=message2)
if result == "Cancel": sys.exit()
- dim = int(buttonbox(message="Dimension of the grid?", title=title, choices = ["1", "2", "3"],fontSize = 20))
+ dim = int(buttonbox(message="Dimension of the grid?", title=title, choices = ["1", "2", "3"],fontSize = 20))
lin = buttonbox(message="Type of algebraic problem?", title=title, choices = ["linear", "nonlinear"],fontSize = 20)
if lin == "nonlinear":
diff --git a/bin/configVars.py b/bin/configVars.py
index 73664e7..ee7f5c6 100755
--- a/bin/configVars.py
+++ b/bin/configVars.py
@@ -21,16 +21,16 @@ class ConfigReader(script.Script):
self.setup()
framework = self.loadConfigure()
mpi = framework.require('config.packages.MPI', None)
- print mpi.include, mpi.lib
+ print(mpi.include, mpi.lib)
arch = framework.require('PETSc.options.arch', None)
- print arch.arch
- print 'Configure is cached:',('configureCache' in self.argDB)
+ print(arch.arch)
+ print('Configure is cached:',('configureCache' in self.argDB))
for k in framework.argDB.keys():
if k.startswith('known'):
- print k,framework.argDB[k]
+ print(k,framework.argDB[k])
return
if __name__ == '__main__':
- print 'Starting'
+ print('Starting')
ConfigReader().run()
- print 'Ending'
+ print('Ending')
diff --git a/bin/parseargs.py b/bin/parseargs.py
index 8a109bf..c880b2f 100755
--- a/bin/parseargs.py
+++ b/bin/parseargs.py
@@ -34,8 +34,8 @@ def parseargs(search_arg,return_nargs,arg_list):
return 1,None
if index+1 == len(arg_list):
- print 'Error! Option has no value!'
- print 'Expecting value with option: ' + search_arg
+ print('Error! Option has no value!')
+ print('Expecting value with option: ' + search_arg)
sys.exit()
else:
ret_arg = arg_list[index+1]
diff --git a/bin/petsclogformat.py b/bin/petsclogformat.py
index 30e874f..de3598c 100755
--- a/bin/petsclogformat.py
+++ b/bin/petsclogformat.py
@@ -257,24 +257,24 @@ def ObjectsCompare(a,b):
def PrintPercentTable(localTimes,localFlops,localMessages,localMessageLens,localReductions,Stages,Latex = False):
''' Prints a simple table that displays the percent of time, flops, etc for each event in each stage'''
if Latex:
- print "\documentclass{article}"
- print "\\begin{document}"
- print "\\begin{table}[!htbp]"
- print "\centering"
+ print("\documentclass{article}")
+ print("\\begin{document}")
+ print("\\begin{table}[!htbp]")
+ print("\centering")
if len(localTimes) > 1:
- print "\\begin{tabular}{lcccccc}"
- print " & & \multicolumn{4}{c}{--------------- Percent of -------------} & \\\\"
- print "Event & Count & Time & Flops & Messages & Reductions & Flop rate \\\\"
- print "\hline"
+ print("\\begin{tabular}{lcccccc}")
+ print(" & & \multicolumn{4}{c}{--------------- Percent of -------------} & \\\\")
+ print("Event & Count & Time & Flops & Messages & Reductions & Flop rate \\\\")
+ print("\hline")
else:
if len(localTimes) > 1:
- print " --------- Percent of ------"
- print "Event Count Time Flops Messages Reductions Flop rate"
- print "============================================================================"
+ print(" --------- Percent of ------")
+ print("Event Count Time Flops Messages Reductions Flop rate")
+ print("============================================================================")
else:
- print " Percent of"
- print "Event Count Time Flops Flop rate"
- print "========================================================="
+ print(" Percent of")
+ print("Event Count Time Flops Flop rate")
+ print("=========================================================")
time,flops,numMessages,numMessageLen,numReductions = ComputeTotals(localTimes,localFlops,localMessages,localMessageLens,localReductions)
if not numMessages: numMessages = 1
@@ -304,30 +304,30 @@ def PrintPercentTable(localTimes,localFlops,localMessages,localMessageLens,local
space = 2
if not seperatoradded:
if Latex:
- print "--Overlapping events---\\\\"
+ print("--Overlapping events---\\\\")
else:
- print "--Overlapping events---"
+ print("--Overlapping events---")
seperatoradded = True
if len(localTimes) > 1:
values = [100*sumStages[stage][event]["time"]/time,100*sumStages[stage][event]["flops"]/flops,100*sumStages[stage][event]["numMessages"]/numMessages,100*sumStages[stage][event]["numReductions"]/numReductions]
if max(values) > .5:
if Latex:
- print '\\hspace{%1dem}' % space,event,"&",'%6.0f' % sumStages[stage][event]["count"],"&",'%5.0f' % values[0],"&",'%5.0f' % values[1],"&",'%5.0f' % values[2],"&",'%5.0f' % values[3],"&",'%8.0f' % ((sumStages[stage][event]["flops"]/sumStages[stage][event]["time"])/1000000.0),"\\\\"
+ print('\\hspace{%1dem}' % space,event,"&",'%6.0f' % sumStages[stage][event]["count"],"&",'%5.0f' % values[0],"&",'%5.0f' % values[1],"&",'%5.0f' % values[2],"&",'%5.0f' % values[3],"&",'%8.0f' % ((sumStages[stage][event]["flops"]/sumStages[stage][event]["time"])/1000000.0),"\\\\")
else:
- print " "[0:space],event.ljust(26-space),'%6.0f' % sumStages[stage][event]["count"]," ",'%5.0f' % values[0],'%5.0f' % values[1],'%5.0f' % values[2],'%5.0f' % values[3]," ",'%8.0f' % ((sumStages[stage][event]["flops"]/sumStages[stage][event]["time"])/1000000.0)
+ print(" "[0:space],event.ljust(26-space),'%6.0f' % sumStages[stage][event]["count"]," ",'%5.0f' % values[0],'%5.0f' % values[1],'%5.0f' % values[2],'%5.0f' % values[3]," ",'%8.0f' % ((sumStages[stage][event]["flops"]/sumStages[stage][event]["time"])/1000000.0))
else:
values = [100*sumStages[stage][event]["time"]/time,100*sumStages[stage][event]["flops"]/flops]
if max(values) > .5:
if Latex:
- print '\\hspace{%1dem}' % space,event,"&",'%6.0f' % sumStages[stage][event]["count"],"&",'%5.0f' % values[0],"&",'%5.0f' % values[1],"&",'%8.0f' % ((sumStages[stage][event]["flops"]/sumStages[stage][event]["time"])/1000000.0),"\\\\"
+ print('\\hspace{%1dem}' % space,event,"&",'%6.0f' % sumStages[stage][event]["count"],"&",'%5.0f' % values[0],"&",'%5.0f' % values[1],"&",'%8.0f' % ((sumStages[stage][event]["flops"]/sumStages[stage][event]["time"])/1000000.0),"\\\\")
else:
- print " ",event.ljust(24),'%6.0f' % sumStages[stage][event]["count"]," ",'%5.0f' % values[0],'%5.0f' % values[1]," ",'%8.0f' % ((sumStages[stage][event]["flops"]/sumStages[stage][event]["time"])/1000000.0)
+ print(" ",event.ljust(24),'%6.0f' % sumStages[stage][event]["count"]," ",'%5.0f' % values[0],'%5.0f' % values[1]," ",'%8.0f' % ((sumStages[stage][event]["flops"]/sumStages[stage][event]["time"])/1000000.0))
if Latex:
- print "\end{tabular}"
- print "\end{table}"
- print "\end{document}"
+ print("\end{tabular}")
+ print("\end{table}")
+ print("\end{document}")
if __name__ == '__main__':
import sys
@@ -339,4 +339,4 @@ if __name__ == '__main__':
latex = False
if len(sys.argv) > 2: latex = True
- PrintPercentTable(data.LocalTimes,data.LocalFlops,data.LocalMessages,data.LocalMessageLens,data.LocalReductions,data.Stages,Latex = latex)
\ No newline at end of file
+ PrintPercentTable(data.LocalTimes,data.LocalFlops,data.LocalMessages,data.LocalMessageLens,data.LocalReductions,data.Stages,Latex = latex)
diff --git a/bin/portabilitycheck.py b/bin/portabilitycheck.py
index f733730..4fb8478 100755
--- a/bin/portabilitycheck.py
+++ b/bin/portabilitycheck.py
@@ -13,8 +13,8 @@ def portabilityCheck(filename,includes):
pipe = os.popen("nm " + filename)
for line in pipe.readlines():
if bad.search(line):
- print 'For portability avoid direct read, write, or system commands in file ' + filename
- print 'Function: '+ line
+ print('For portability avoid direct read, write, or system commands in file ' + filename)
+ print('Function: '+ line)
os.unlink(filename)
return 1
return 0
@@ -34,8 +34,8 @@ def portabilityCheck(filename,includes):
if portabilityCheck(l,sys.argv[2:]): return 1
found = 1
if not found:
- print 'For portability avoid direct use of generic system #include files in ' + filename
- print 'Line: '+ line
+ print('For portability avoid direct use of generic system #include files in ' + filename)
+ print('Line: '+ line)
return 1
file.close()
return 0
diff --git a/bin/saws/SAWs.py b/bin/saws/SAWs.py
index 813b210..2daa0d1 100755
--- a/bin/saws/SAWs.py
+++ b/bin/saws/SAWs.py
@@ -25,6 +25,6 @@ j = json.loads(r.content)
# Example that access the functions in the stack
j = j['directories']['SAWs_ROOT_DIRECTORY']['directories']['PETSc']['directories']['Stack']['variables']['functions']['data']
-print j
+print(j)
diff --git a/bin/taucc.py b/bin/taucc.py
index 38a2ec2..5537683 100755
--- a/bin/taucc.py
+++ b/bin/taucc.py
@@ -19,12 +19,12 @@ import string
import tempfile
def runcmd(cmd,verbose):
if verbose:
- print cmd
+ print(cmd)
(status, output) = commands.getstatusoutput(cmd)
if status:
raise RuntimeError('Unable to run '+cmd+':\n'+output)
elif output:
- print output
+ print(output)
def getTauFlags(tau_lib_dir):
fd,name=tempfile.mkstemp(prefix='taucc-')
@@ -161,5 +161,5 @@ def main():
if __name__ == '__main__':
try:
main()
- except Exception, e:
+ except Exception as e:
sys.exit('ERROR: '+str(e))
diff --git a/bin/update.py b/bin/update.py
index 566e77e..fc694df 100755
--- a/bin/update.py
+++ b/bin/update.py
@@ -72,7 +72,7 @@ def updatePatches():
import urllib
try:
urllib.urlretrieve(patchfile1, patches1)
- except Exception, e:
+ except Exception as e:
raise RuntimeError('Unable to download patches. Perhaps you are off the network?\n '+str(e))
else:
log.write('Using '+patches1+' for PETSc patches\n')
diff --git a/src/ts/examples/tutorials/extchem.py b/src/ts/examples/tutorials/extchem.py
index 2800598..52abfc6 100644
--- a/src/ts/examples/tutorials/extchem.py
+++ b/src/ts/examples/tutorials/extchem.py
@@ -19,6 +19,6 @@ if __name__ == '__main__':
# Code is currently hardwired to display certain species only, edit the list below to display the species you want displayed
#
for i in range(0,len(t)-1):
- print t[i],v[i][names.index('Temp')],v[i][names.index('CH4')],v[i][names.index('O2')],v[i][names.index('N2')],v[i][names.index('CO')],v[i][names.index('CO2')],v[i][names.index('O')],v[i][names.index('OH')],v[i][names.index('H2O')]
+ print (t[i],v[i][names.index('Temp')],v[i][names.index('CH4')],v[i][names.index('O2')],v[i][names.index('N2')],v[i][names.index('CO')],v[i][names.index('CO2')],v[i][names.index('O')],v[i][names.index('OH')],v[i][names.index('H2O')])