python: Make exception handling Python 3 safe

Change-Id: I9c2cdfad20deb1ddfa224320cf93f2105d126652
Reviewed-on: https://gem5-review.googlesource.com/c/15980
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-by: Giacomo Travaglini <giacomo.travaglini@arm.com>
This commit is contained in:
Andreas Sandberg
2019-01-25 11:32:25 +00:00
parent 6ba4545b1f
commit fa21127a64
13 changed files with 177 additions and 182 deletions

View File

@@ -128,7 +128,7 @@ def compareVersions(v1, v2):
elif isinstance(v, str):
return map(lambda x: int(re.match('\d+', x).group()), v.split('.'))
else:
raise TypeError
raise TypeError()
v1 = make_version_list(v1)
v2 = make_version_list(v2)
@@ -194,7 +194,7 @@ def readCommand(cmd, **kwargs):
kwargs.setdefault('close_fds', True)
try:
subp = Popen(cmd, **kwargs)
except Exception, e:
except Exception as e:
if no_exception:
return exception
raise
@@ -206,7 +206,7 @@ def makeDir(path):
ensure that it is a directory"""
if os.path.exists(path):
if not os.path.isdir(path):
raise AttributeError, "%s exists but is not directory" % path
raise AttributeError("%s exists but is not directory" % path)
else:
os.mkdir(path)

View File

@@ -74,7 +74,7 @@ class lookup(object):
return self.args[item]
except ValueError:
pass
raise IndexError, "Could not find '%s'" % item
raise IndexError("Could not find '%s'" % item)
class code_formatter_meta(type):
pattern = r"""

View File

@@ -89,7 +89,7 @@ binary_prefixes = {
def assertStr(value):
if not isinstance(value, str):
raise TypeError, "wrong type '%s' should be str" % type(value)
raise TypeError("wrong type '%s' should be str" % type(value))
# memory size configuration stuff
@@ -102,8 +102,8 @@ def toFloat(value, target_type='float', units=None, prefixes=[]):
try:
return float(value)
except ValueError:
raise ValueError, "cannot convert '%s' to %s" % \
(value, target_type)
raise ValueError("cannot convert '%s' to %s" % \
(value, target_type))
value = value[:-len(units)]
@@ -124,8 +124,8 @@ def toInteger(value, target_type='integer', units=None, prefixes=[]):
value = toFloat(value, target_type, units, prefixes)
result = long(value)
if value != result:
raise ValueError, "cannot convert '%s' to integer %s" % \
(value, target_type)
raise ValueError("cannot convert '%s' to integer %s" % \
(value, target_type))
return result
@@ -155,7 +155,7 @@ def anyToLatency(value):
"""result is a clock period"""
try:
return 1 / toFrequency(value)
except ValueError, ZeroDivisionError:
except (ValueError, ZeroDivisionError):
pass
try:
@@ -163,7 +163,7 @@ def anyToLatency(value):
except ValueError:
pass
raise ValueError, "cannot convert '%s' to clock period" % value
raise ValueError("cannot convert '%s' to clock period" % value)
def anyToFrequency(value):
"""result is a clock period"""
@@ -174,10 +174,10 @@ def anyToFrequency(value):
try:
return 1 / toLatency(value)
except ValueError, ZeroDivisionError:
except ValueError as ZeroDivisionError:
pass
raise ValueError, "cannot convert '%s' to clock period" % value
raise ValueError("cannot convert '%s' to clock period" % value)
def toNetworkBandwidth(value):
return toMetricFloat(value, 'network bandwidth', 'bps')
@@ -190,29 +190,29 @@ def toMemorySize(value):
def toIpAddress(value):
if not isinstance(value, str):
raise TypeError, "wrong type '%s' should be str" % type(value)
raise TypeError("wrong type '%s' should be str" % type(value))
bytes = value.split('.')
if len(bytes) != 4:
raise ValueError, 'invalid ip address %s' % value
raise ValueError('invalid ip address %s' % value)
for byte in bytes:
if not 0 <= int(byte) <= 0xff:
raise ValueError, 'invalid ip address %s' % value
raise ValueError('invalid ip address %s' % value)
return (int(bytes[0]) << 24) | (int(bytes[1]) << 16) | \
(int(bytes[2]) << 8) | (int(bytes[3]) << 0)
def toIpNetmask(value):
if not isinstance(value, str):
raise TypeError, "wrong type '%s' should be str" % type(value)
raise TypeError("wrong type '%s' should be str" % type(value))
(ip, netmask) = value.split('/')
ip = toIpAddress(ip)
netmaskParts = netmask.split('.')
if len(netmaskParts) == 1:
if not 0 <= int(netmask) <= 32:
raise ValueError, 'invalid netmask %s' % netmask
raise ValueError('invalid netmask %s' % netmask)
return (ip, int(netmask))
elif len(netmaskParts) == 4:
netmaskNum = toIpAddress(netmask)
@@ -223,18 +223,18 @@ def toIpNetmask(value):
testVal |= (1 << (31 - i))
if testVal == netmaskNum:
return (ip, i + 1)
raise ValueError, 'invalid netmask %s' % netmask
raise ValueError('invalid netmask %s' % netmask)
else:
raise ValueError, 'invalid netmask %s' % netmask
raise ValueError('invalid netmask %s' % netmask)
def toIpWithPort(value):
if not isinstance(value, str):
raise TypeError, "wrong type '%s' should be str" % type(value)
raise TypeError("wrong type '%s' should be str" % type(value))
(ip, port) = value.split(':')
ip = toIpAddress(ip)
if not 0 <= int(port) <= 0xffff:
raise ValueError, 'invalid port %s' % port
raise ValueError('invalid port %s' % port)
return (ip, int(port))
def toVoltage(value):

View File

@@ -37,18 +37,17 @@ class ParseError(Exception):
class Grammar(object):
def setupLexerFactory(self, **kwargs):
if 'module' in kwargs:
raise AttributeError, "module is an illegal attribute"
raise AttributeError("module is an illegal attribute")
self.lex_kwargs = kwargs
def setupParserFactory(self, **kwargs):
if 'module' in kwargs:
raise AttributeError, "module is an illegal attribute"
raise AttributeError("module is an illegal attribute")
if 'output' in kwargs:
dir,tab = os.path.split(output)
if not tab.endswith('.py'):
raise AttributeError, \
'The output file must end with .py'
raise AttributeError('The output file must end with .py')
kwargs['outputdir'] = dir
kwargs['tabmodule'] = tab[:-3]
@@ -90,13 +89,13 @@ class Grammar(object):
return -1
return self.current_lexer.lineno
raise AttributeError, \
"'%s' object has no attribute '%s'" % (type(self), attr)
raise AttributeError(
"'%s' object has no attribute '%s'" % (type(self), attr))
def parse_string(self, data, source='<string>', debug=None, tracking=0):
if not isinstance(data, basestring):
raise AttributeError, \
"argument must be a string, was '%s'" % type(f)
raise AttributeError(
"argument must be a string, was '%s'" % type(f))
import new
lexer = self.lex.clone()
@@ -120,8 +119,8 @@ class Grammar(object):
elif isinstance(f, file):
source = f.name
else:
raise AttributeError, \
"argument must be either a string or file, was '%s'" % type(f)
raise AttributeError(
"argument must be either a string or file, was '%s'" % type(f))
return self.parse_string(f.read(), source, **kwargs)

View File

@@ -38,7 +38,7 @@ class Data(object):
def update(self, obj):
if not isinstance(obj, Data):
raise AttributeError, "can only update from Data object"
raise AttributeError("can only update from Data object")
for key,val in obj.__dict__.iteritems():
if key.startswith('_') or key in ('name', 'desc'):
@@ -52,22 +52,22 @@ class Data(object):
if self.__dict__[key] == val:
continue
raise AttributeError, \
"%s specified more than once old: %s new: %s" % \
(key, self.__dict__[key], val)
raise AttributeError(
"%s specified more than once old: %s new: %s" % \
(key, self.__dict__[key], val))
d = self.__dict__[key]
for k,v in val.iteritems():
if k in d:
raise AttributeError, \
"%s specified more than once in %s" % (k, key)
raise AttributeError(
"%s specified more than once in %s" % (k, key))
d[k] = v
if hasattr(self, 'system') and hasattr(obj, 'system'):
if self.system != obj.system:
raise AttributeError, \
"conflicting values for system: '%s'/'%s'" % \
(self.system, obj.system)
raise AttributeError(
"conflicting values for system: '%s'/'%s'" % \
(self.system, obj.system))
def printinfo(self):
if self.name:
@@ -96,7 +96,7 @@ class Data(object):
def __getitem__(self, key):
if key.startswith('_'):
raise KeyError, "Key '%s' not found" % attr
raise KeyError("Key '%s' not found" % attr)
return self.__dict__[key]
def __iter__(self):
@@ -131,8 +131,8 @@ class Job(Data):
config = options[0]._config
for opt in options:
if opt._config != config:
raise AttributeError, \
"All options are not from the same Configuration"
raise AttributeError(
"All options are not from the same Configuration")
self._config = config
self._groups = [ opt._group for opt in options ]
@@ -309,7 +309,7 @@ class Configuration(Data):
def checkchildren(self, kids):
for kid in kids:
if kid._config != self:
raise AttributeError, "child from the wrong configuration"
raise AttributeError("child from the wrong configuration")
def sortgroups(self, groups):
groups = [ (grp._number, grp) for grp in groups ]
@@ -387,7 +387,7 @@ class Configuration(Data):
if job.name == jobname:
return job
else:
raise AttributeError, "job '%s' not found" % jobname
raise AttributeError("job '%s' not found" % jobname)
def job(self, options):
self.checkchildren(options)
@@ -414,13 +414,12 @@ def JobFile(jobfile):
filename = testname
break
else:
raise AttributeError, \
"Could not find file '%s'" % jobfile
raise AttributeError("Could not find file '%s'" % jobfile)
data = {}
execfile(filename, data)
if 'conf' not in data:
raise ImportError, 'cannot import name conf from %s' % jobfile
raise ImportError('cannot import name conf from %s' % jobfile)
return data['conf']
def main(conf=None):
@@ -448,11 +447,11 @@ def main(conf=None):
if conf is None:
if len(args) != 1:
raise AttributeError, usage
raise AttributeError(usage)
conf = JobFile(args[0])
else:
if len(args) != 0:
raise AttributeError, usage
raise AttributeError(usage)
if both:
jobs = conf.alljobs()

View File

@@ -48,11 +48,11 @@ class multidict(object):
def __delitem__(self, key):
try:
del self.local[key]
except KeyError, e:
except KeyError as e:
if key in self.parent:
self.deleted[key] = True
else:
raise KeyError, e
raise KeyError(e)
def __setitem__(self, key, value):
self.deleted.pop(key, False)
@@ -61,11 +61,11 @@ class multidict(object):
def __getitem__(self, key):
try:
return self.local[key]
except KeyError, e:
except KeyError as e:
if not self.deleted.get(key, False) and key in self.parent:
return self.parent[key]
else:
raise KeyError, e
raise KeyError(e)
def __len__(self):
return len(self.local) + len(self.parent)
@@ -106,7 +106,7 @@ class multidict(object):
def get(self, key, default=None):
try:
return self[key]
except KeyError, e:
except KeyError as e:
return default
def setdefault(self, key, default):