From 2fda69b4d6a07591d88033561ea84bc455c86bea Mon Sep 17 00:00:00 2001 From: Valentin Lorentz Date: Mon, 20 Jan 2014 15:43:55 +0100 Subject: [PATCH] Continue accelerating the 2to3 step (remove fix_raise). --- plugins/Alias/plugin.py | 24 ++++++++++---------- plugins/Config/plugin.py | 4 ++-- plugins/Dict/local/dictclient.py | 22 +++++++++--------- plugins/Google/plugin.py | 2 +- plugins/Karma/plugin.py | 2 +- plugins/Math/local/convertcore.py | 12 +++++----- plugins/MoobotFactoids/plugin.py | 2 +- plugins/Network/plugin.py | 3 +-- plugins/Owner/plugin.py | 4 ++-- plugins/RSS/plugin.py | 4 ++-- plugins/Services/config.py | 3 +-- plugins/ShrinkUrl/config.py | 5 ++--- plugins/ShrinkUrl/plugin.py | 12 +++++----- plugins/User/plugin.py | 2 +- plugins/__init__.py | 4 ++-- setup.py | 1 - src/callbacks.py | 26 +++++++++++----------- src/cdb.py | 10 ++++----- src/commands.py | 6 ++--- src/dbi.py | 8 +++---- src/dynamicScope.py | 2 +- src/ircdb.py | 29 ++++++++++++------------ src/ircmsgs.py | 4 ++-- src/ircutils.py | 7 +++--- src/log.py | 5 ++--- src/plugin.py | 16 ++++++------- src/registry.py | 13 +++++------ src/shlex.py | 2 +- src/test.py | 20 ++++++++--------- src/utils/file.py | 6 ++--- src/utils/gen.py | 8 +++---- src/utils/iter.py | 4 ++-- src/utils/net.py | 2 +- src/utils/python.py | 2 +- src/utils/seq.py | 2 +- src/utils/str.py | 37 ++++++++++++++----------------- src/utils/structures.py | 24 ++++++++++---------- src/utils/web.py | 14 ++++++------ 38 files changed, 171 insertions(+), 182 deletions(-) diff --git a/plugins/Alias/plugin.py b/plugins/Alias/plugin.py index 187e5674a..6d818a0ae 100644 --- a/plugins/Alias/plugin.py +++ b/plugins/Alias/plugin.py @@ -57,13 +57,13 @@ def getChannel(msg, args=()): 'variable ' \ 'supybot.reply.requireChannelCommandsToBeSentInChannel ' \ 'to False.' - raise callbacks.Error, s + raise callbacks.Error(s) return args.pop(0) elif ircutils.isChannel(msg.args[0]): return msg.args[0] else: - raise callbacks.Error, 'Command must be sent in a channel or ' \ - 'include a channel in its arguments.' + raise callbacks.Error('Command must be sent in a channel or ' \ + 'include a channel in its arguments.') def getArgs(args, required=1, optional=0, wildcard=0): if len(args) < required: @@ -163,12 +163,12 @@ def makeNewAlias(name, alias): biggestAt = findBiggestAt(original) wildcard = '$*' in original if biggestAt and wildcard: - raise AliasError, 'Can\'t mix $* and optional args (@1, etc.)' + raise AliasError('Can\'t mix $* and optional args (@1, etc.)') if original.count('$*') > 1: - raise AliasError, 'There can be only one $* in an alias.' + raise AliasError('There can be only one $* in an alias.') testTokens = callbacks.tokenize(original) if testTokens and isinstance(testTokens[0], list): - raise AliasError, 'Commands may not be the result of nesting.' + raise AliasError('Commands may not be the result of nesting.') def f(self, irc, msg, args): alias = original.replace('$nick', msg.nick) if '$channel' in original: @@ -333,21 +333,21 @@ class Alias(callbacks.Plugin): realName = callbacks.canonicalName(name) if name != realName: s = format(_('That name isn\'t valid. Try %q instead.'), realName) - raise AliasError, s + raise AliasError(s) name = realName if self.isCommandMethod(name): if realName not in self.aliases: s = 'You can\'t overwrite commands in this plugin.' - raise AliasError, s + raise AliasError(s) if name in self.aliases: (currentAlias, locked, _) = self.aliases[name] if locked and currentAlias != alias: - raise AliasError, format('Alias %q is locked.', name) + raise AliasError(format('Alias %q is locked.', name)) try: f = makeNewAlias(name, alias) f = types.MethodType(f, self) except RecursiveAlias: - raise AliasError, 'You can\'t define a recursive alias.' + raise AliasError('You can\'t define a recursive alias.') if '.' in name or '|' in name: aliasGroup = self.registryValue('escapedaliases', value=False) confname = escapeAlias(name) @@ -374,9 +374,9 @@ class Alias(callbacks.Plugin): else: conf.supybot.plugins.Alias.aliases.unregister(name) else: - raise AliasError, 'That alias is locked.' + raise AliasError('That alias is locked.') else: - raise AliasError, 'There is no such alias.' + raise AliasError('There is no such alias.') @internationalizeDocstring def add(self, irc, msg, args, name, alias): diff --git a/plugins/Config/plugin.py b/plugins/Config/plugin.py index 3aaa07c3f..ce88f381a 100644 --- a/plugins/Config/plugin.py +++ b/plugins/Config/plugin.py @@ -51,7 +51,7 @@ _ = PluginInternationalization('Config') def getWrapper(name): parts = registry.split(name) if not parts or parts[0] not in ('supybot', 'users'): - raise InvalidRegistryName, name + raise InvalidRegistryName(name) group = getattr(conf, parts.pop(0)) while parts: try: @@ -60,7 +60,7 @@ def getWrapper(name): # that we have a useful error message for the user. except (registry.NonExistentRegistryEntry, registry.InvalidRegistryName): - raise registry.InvalidRegistryName, name + raise registry.InvalidRegistryName(name) return group def getCapability(name): diff --git a/plugins/Dict/local/dictclient.py b/plugins/Dict/local/dictclient.py index 8c54f7407..c6f48f4f6 100644 --- a/plugins/Dict/local/dictclient.py +++ b/plugins/Dict/local/dictclient.py @@ -65,8 +65,8 @@ class Connection: code, text = self.getresultcode() if code < 200 or code >= 300: - raise Exception, "Got '%s' when 200-class response expected" % \ - line + raise Exception("Got '%s' when 200-class response expected" % \ + line) return [code, text] def get100block(self): @@ -86,8 +86,8 @@ class Connection: finalcode]""" code, text = self.getresultcode() if code < 100 or code >= 200: - raise Exception, "Got '%s' when 100-class response expected" % \ - code + raise Exception("Got '%s' when 100-class response expected" % \ + code) bodylines = self.get100block().split("\n") @@ -157,7 +157,7 @@ class Connection: if dbname != '*' and dbname != '!' and \ not dbname in self.dbdescs.keys(): - raise Exception, "Invalid database name '%s'" % dbname + raise Exception("Invalid database name '%s'" % dbname) self.dbobjs[dbname] = Database(self, dbname) return self.dbobjs[dbname] @@ -181,7 +181,7 @@ class Connection: if database != '*' and database != '!' and \ not database in self.getdbdescs(): - raise Exception, "Invalid database '%s' specified" % database + raise Exception("Invalid database '%s' specified" % database) self.sendcommand("DEFINE " + enquote(database) + " " + enquote(word)) code = self.getresultcode()[0] @@ -192,7 +192,7 @@ class Connection: # No definitions. return [] if code != 150: - raise Exception, "Unknown code %d" % code + raise Exception("Unknown code %d" % code) while True: code, text = self.getresultcode() @@ -217,10 +217,10 @@ class Connection: self.getstratdescs() # Prime the cache self.getdbdescs() # Prime the cache if not strategy in self.getstratdescs().keys(): - raise Exception, "Invalid strategy '%s'" % strategy + raise Exception("Invalid strategy '%s'" % strategy) if database != '*' and database != '!' and \ not database in self.getdbdescs().keys(): - raise Exception, "Invalid database name '%s'" % database + raise Exception("Invalid database name '%s'" % database) self.sendcommand("MATCH %s %s %s" % (enquote(database), enquote(strategy), @@ -230,7 +230,7 @@ class Connection: # No Matches return [] if code != 152: - raise Exception, "Unexpected code %d" % code + raise Exception("Unexpected code %d" % code) retval = [] @@ -239,7 +239,7 @@ class Connection: retval.append(Definition(self, self.getdbobj(matchdict), dequote(matchword))) if self.getresultcode()[0] != 250: - raise Exception, "Unexpected end-of-list code %d" % code + raise Exception("Unexpected end-of-list code %d" % code) return retval class Database: diff --git a/plugins/Google/plugin.py b/plugins/Google/plugin.py index e648e8f4d..17d033e1c 100644 --- a/plugins/Google/plugin.py +++ b/plugins/Google/plugin.py @@ -120,7 +120,7 @@ class Google(callbacks.PluginRegexp): headers=headers).decode('utf8') data = json.loads(text) if data['responseStatus'] != 200: - raise callbacks.Error, _('We broke The Google!') + raise callbacks.Error(_('We broke The Google!')) return data def formatData(self, data, bold=True, max=0, onetoone=False): diff --git a/plugins/Karma/plugin.py b/plugins/Karma/plugin.py index 42c03ac95..713a3f128 100644 --- a/plugins/Karma/plugin.py +++ b/plugins/Karma/plugin.py @@ -167,7 +167,7 @@ class SqliteKarmaDB(object): elif kind == 'active': orderby = 'added+subtracted' else: - raise ValueError, 'invalid kind' + raise ValueError('invalid kind') sql = """SELECT name, %s FROM karma ORDER BY %s DESC LIMIT %s""" % \ (orderby, orderby, limit) db = self._getDb(channel) diff --git a/plugins/Math/local/convertcore.py b/plugins/Math/local/convertcore.py index 75d38fa11..f64420127 100644 --- a/plugins/Math/local/convertcore.py +++ b/plugins/Math/local/convertcore.py @@ -937,12 +937,12 @@ class UnitGroup: while tmpList: count += 1 if count > 5000: - raise UnitDataError, 'Circular unit definition' + raise UnitDataError('Circular unit definition') unit = tmpList.pop(0) if unit.equiv == '!': self.reducedList.append(copy.copy(unit)) elif not unit.equiv: - raise UnitDataError, 'Invalid conversion for "%s"' % unit.name + raise UnitDataError('Invalid conversion for "%s"' % unit.name) else: if unit.fromEqn: self.linear = 0 @@ -1029,7 +1029,7 @@ class UnitGroup: except OverflowError: return 1e9999 except: - raise UnitDataError, 'Bad equation for %s' % self.unitList[0].name + raise UnitDataError('Bad equation for %s' % self.unitList[0].name) def convertStr(self, num, toGroup): "Return formatted string of converted number" @@ -1063,7 +1063,7 @@ class UnitData(dict): lines = f.readlines() f.close() except IOError: - raise UnitDataError, 'Can not read "units.dat" file' + raise UnitDataError('Can not read "units.dat" file') for i in range(len(lines)): # join continuation lines delta = 1 while lines[i].rstrip().endswith('\\'): @@ -1087,7 +1087,7 @@ class UnitData(dict): self.sortedKeys.sort() if len(self.sortedKeys) < len(units): - raise UnitDataError, 'Duplicate unit names found' + raise UnitDataError('Duplicate unit names found') return (types, typeUnits) @@ -1132,7 +1132,7 @@ class Unit: self.toEqn = self.toEqn.strip() self.fromEqn = self.fromEqn.strip() except AttributeError: - raise UnitDataError, 'Bad equation for "%s"' % self.name + raise UnitDataError('Bad equation for "%s"' % self.name) else: # split factor and equiv unit for linear parts = self.equiv.split(None, 1) if len(parts) > 1 and re.search('[^\d\.eE\+\-\*/]', parts[0]) \ diff --git a/plugins/MoobotFactoids/plugin.py b/plugins/MoobotFactoids/plugin.py index 2208277d8..32026c016 100755 --- a/plugins/MoobotFactoids/plugin.py +++ b/plugins/MoobotFactoids/plugin.py @@ -376,7 +376,7 @@ class MoobotFactoids(callbacks.Plugin): self.log.debug('Invalid tokens for {add,replace}Factoid: %s.', tokens) s = _('Missing an \'is\' or \'_is_\'.') - raise ValueError, s + raise ValueError(s) (key, newfact) = map(' '.join, utils.iter.split(p, tokens, maxsplit=1)) key = self._sanitizeKey(key) return (key, newfact) diff --git a/plugins/Network/plugin.py b/plugins/Network/plugin.py index 9e7750152..0abe49a68 100644 --- a/plugins/Network/plugin.py +++ b/plugins/Network/plugin.py @@ -50,8 +50,7 @@ class Network(callbacks.Plugin): if irc: return irc else: - raise callbacks.Error, \ - 'I\'m not currently connected to %s.' % network + raise callbacks.Error('I\'m not currently connected to %s.' % network) @internationalizeDocstring def connect(self, irc, msg, args, opts, network, server, password): diff --git a/plugins/Owner/plugin.py b/plugins/Owner/plugin.py index 56234b829..f4b285593 100644 --- a/plugins/Owner/plugin.py +++ b/plugins/Owner/plugin.py @@ -169,8 +169,8 @@ class Owner(callbacks.Plugin): (server, port) = group.servers()[0] except (registry.NonExistentRegistryEntry, IndexError): if serverPort is None: - raise ValueError, 'connect requires a (server, port) ' \ - 'if the network is not registered.' + raise ValueError('connect requires a (server, port) ' \ + 'if the network is not registered.') conf.registerNetwork(network, password, ssl) serverS = '%s:%s' % serverPort conf.supybot.networks.get(network).servers.append(serverS) diff --git a/plugins/RSS/plugin.py b/plugins/RSS/plugin.py index e2929e531..5238ce865 100644 --- a/plugins/RSS/plugin.py +++ b/plugins/RSS/plugin.py @@ -286,7 +286,7 @@ class RSS(callbacks.Plugin): raise results['bozo_exception'] except feedparser.sgmllib.SGMLParseError: self.log.exception('Uncaught exception from feedparser:') - raise callbacks.Error, 'Invalid (unparsable) RSS feed.' + raise callbacks.Error('Invalid (unparsable) RSS feed.') except socket.timeout: return error('Timeout downloading feed.') except Exception, e: @@ -366,7 +366,7 @@ class RSS(callbacks.Plugin): self.locks[url] = threading.RLock() if self.isCommandMethod(name): s = format('I already have a command in this plugin named %s.',name) - raise callbacks.Error, s + raise callbacks.Error(s) def f(self, irc, msg, args): args.insert(0, url) self.rss(irc, msg, args) diff --git a/plugins/Services/config.py b/plugins/Services/config.py index 45d606e6a..67dd6014e 100644 --- a/plugins/Services/config.py +++ b/plugins/Services/config.py @@ -58,8 +58,7 @@ def configure(advanced): class ValidNickOrEmptyString(registry.String): def setValue(self, v): if v and not ircutils.isNick(v): - raise registry.InvalidRegistryValue, \ - 'Value must be a valid nick or the empty string.' + raise registry.InvalidRegistryValue('Value must be a valid nick or the empty string.') registry.String.setValue(self, v) class ValidNickSet(conf.ValidNicks): diff --git a/plugins/ShrinkUrl/config.py b/plugins/ShrinkUrl/config.py index 5bf421e79..675f6e28a 100644 --- a/plugins/ShrinkUrl/config.py +++ b/plugins/ShrinkUrl/config.py @@ -62,9 +62,8 @@ class ShrinkCycle(registry.SpaceSeparatedListOfStrings): if L: self.lastIndex = (self.lastIndex + 1) % len(L) return L[self.lastIndex] - raise ValueError, \ - 'No services have been configured for rotation. ' \ - 'See conf.supybot.plugins.ShrinkUrl.serviceRotation.' + raise ValueError('No services have been configured for rotation. ' \ + 'See conf.supybot.plugins.ShrinkUrl.serviceRotation.') ShrinkUrl = conf.registerPlugin('ShrinkUrl') conf.registerChannelValue(ShrinkUrl, 'shrinkSnarfer', diff --git a/plugins/ShrinkUrl/plugin.py b/plugins/ShrinkUrl/plugin.py index 3417c7ab6..26772e5ec 100644 --- a/plugins/ShrinkUrl/plugin.py +++ b/plugins/ShrinkUrl/plugin.py @@ -182,7 +182,7 @@ class ShrinkUrl(callbacks.PluginRegexp): self.db.set('ln', url, text) return text else: - raise ShrinkError, text + raise ShrinkError(text) @internationalizeDocstring def ln(self, irc, msg, args, url): @@ -207,7 +207,7 @@ class ShrinkUrl(callbacks.PluginRegexp): text = utils.web.getUrl('http://tinyurl.com/api-create.php?url=' + url) text = text.decode() if text.startswith('Error'): - raise ShrinkError, text[5:] + raise ShrinkError(text[5:]) self.db.set('tiny', url, text) return text @@ -236,7 +236,7 @@ class ShrinkUrl(callbacks.PluginRegexp): data = utils.web.urlencode({'long_url': url}) text = utils.web.getUrl(self._xrlApi, data=data).decode() if text.startswith('ERROR:'): - raise ShrinkError, text[6:] + raise ShrinkError(text[6:]) self.db.set('xrl', quotedurl, text) return text @@ -271,7 +271,7 @@ class ShrinkUrl(callbacks.PluginRegexp): self.db.set('goo', url, googl) return googl else: - raise ShrinkError, text + raise ShrinkError(text) def goo(self, irc, msg, args, url): """ @@ -301,7 +301,7 @@ class ShrinkUrl(callbacks.PluginRegexp): self.db.set('ur1', url, ur1ca) return ur1ca else: - raise ShrinkError, text + raise ShrinkError(text) def ur1(self, irc, msg, args, url): """ @@ -325,7 +325,7 @@ class ShrinkUrl(callbacks.PluginRegexp): except KeyError: text = utils.web.getUrl(self._x0Api % url).decode() if text.startswith('ERROR:'): - raise ShrinkError, text[6:] + raise ShrinkError(text[6:]) self.db.set('x0', url, text) return text diff --git a/plugins/User/plugin.py b/plugins/User/plugin.py index daf415e58..384ef930d 100644 --- a/plugins/User/plugin.py +++ b/plugins/User/plugin.py @@ -45,7 +45,7 @@ _ = PluginInternationalization('User') class User(callbacks.Plugin): def _checkNotChannel(self, irc, msg, password=' '): if password and irc.isChannel(msg.args[0]): - raise callbacks.Error, conf.supybot.replies.requiresPrivacy() + raise callbacks.Error(conf.supybot.replies.requiresPrivacy()) @internationalizeDocstring def list(self, irc, msg, args, optlist, glob): diff --git a/plugins/__init__.py b/plugins/__init__.py index cdda215dc..597a52b72 100644 --- a/plugins/__init__.py +++ b/plugins/__init__.py @@ -83,7 +83,7 @@ def DB(filename, types): return types[type](fn, *args, **kwargs) except KeyError: continue - raise NoSuitableDatabase, types.keys() + raise NoSuitableDatabase(types.keys()) return MakeDB def makeChannelFilename(filename, channel=None, dirname=None): @@ -503,7 +503,7 @@ class PeriodicFileDownloader(object): periodicFiles = None def __init__(self): if self.periodicFiles is None: - raise ValueError, 'You must provide files to download' + raise ValueError('You must provide files to download') self.lastDownloaded = {} self.downloadedCounter = {} for filename in self.periodicFiles: diff --git a/setup.py b/setup.py index e18c0c318..9ffbbe9d6 100644 --- a/setup.py +++ b/setup.py @@ -155,7 +155,6 @@ try: 'fix_itertools', 'fix_itertools_imports', 'fix_long', 'fix_map', 'fix_metaclass', 'fix_methodattrs', 'fix_numliterals', - 'fix_raise', 'fix_reduce', 'fix_renames', 'fix_repr', 'fix_set_literal', 'fix_standarderror', 'fix_sys_exc', 'fix_throw', 'fix_tuple_params', 'fix_types', diff --git a/src/callbacks.py b/src/callbacks.py index 420f94e2d..a437aa29b 100644 --- a/src/callbacks.py +++ b/src/callbacks.py @@ -315,11 +315,11 @@ class Tokenizer(object): while True: token = lexer.get_token() if not token: - raise SyntaxError, _('Missing "%s". You may want to ' + raise SyntaxError(_('Missing "%s". You may want to ' 'quote your arguments with double ' 'quotes in order to prevent extra ' 'brackets from being evaluated ' - 'as nested commands.') % self.right + 'as nested commands.') % self.right) elif token == self.right: return ret elif token == self.left: @@ -345,26 +345,26 @@ class Tokenizer(object): # for strings like 'foo | bar', where a pipe stands alone as a # token, but shouldn't be treated specially. if not args: - raise SyntaxError, _('"|" with nothing preceding. I ' + raise SyntaxError(_('"|" with nothing preceding. I ' 'obviously can\'t do a pipe with ' - 'nothing before the |.') + 'nothing before the |.')) ends.append(args) args = [] elif token == self.left: args.append(self._insideBrackets(lexer)) elif token == self.right: - raise SyntaxError, _('Spurious "%s". You may want to ' + raise SyntaxError(_('Spurious "%s". You may want to ' 'quote your arguments with double ' 'quotes in order to prevent extra ' 'brackets from being evaluated ' - 'as nested commands.') % self.right + 'as nested commands.') % self.right) else: args.append(self._handleToken(token)) if ends: if not args: - raise SyntaxError, _('"|" with nothing following. I ' + raise SyntaxError(_('"|" with nothing following. I ' 'obviously can\'t do a pipe with ' - 'nothing after the |.') + 'nothing after the |.')) args.append(ends.pop()) while ends: args[-1].append(ends.pop()) @@ -385,7 +385,7 @@ def tokenize(s, channel=None): ret = Tokenizer(brackets=brackets,pipe=pipe,quotes=quotes).tokenize(s) return ret except ValueError, e: - raise SyntaxError, str(e) + raise SyntaxError(str(e)) def formatCommand(command): return ' '.join(command) @@ -399,7 +399,7 @@ def checkCommandCapability(msg, cb, commandName): if ircdb.checkCapability(msg.prefix, capability): log.info('Preventing %s from calling %s because of %s.', msg.prefix, pluginCommand, capability) - raise RuntimeError, capability + raise RuntimeError(capability) try: antiPlugin = ircdb.makeAntiCapability(plugin) antiCommand = ircdb.makeAntiCapability(commandName) @@ -497,7 +497,7 @@ class RichReplyMethods(object): def _error(self, s, Raise=False, **kwargs): if Raise: - raise Error, s + raise Error(s) else: return self.error(s, **kwargs) @@ -598,7 +598,7 @@ class ReplyIrcProxy(RichReplyMethods): def error(self, s, msg=None, **kwargs): if 'Raise' in kwargs and kwargs['Raise']: if s: - raise Error, s + raise Error(s) else: raise ArgumentError if msg is None: @@ -992,7 +992,7 @@ class NestedCommandsIrcProxy(ReplyIrcProxy): self.repliedTo = True if Raise: if s: - raise Error, s + raise Error(s) else: raise ArgumentError if s: diff --git a/src/cdb.py b/src/cdb.py index 17eecf27a..b10b3ca56 100644 --- a/src/cdb.py +++ b/src/cdb.py @@ -80,7 +80,7 @@ def open_db(filename, mode='r', **kwargs): maker.finish() return ReaderWriter(filename, **kwargs) else: - raise ValueError, 'Invalid flag: %s' % mode + raise ValueError('Invalid flag: %s' % mode) def shelf(filename, *args, **kwargs): """Opens a new shelf database object.""" @@ -257,7 +257,7 @@ class Reader(utils.IterableMap): try: return self.default except AttributeError: - raise KeyError, key + raise KeyError(key) def findall(self, key): ret = [] @@ -377,7 +377,7 @@ class ReaderWriter(utils.IterableMap): def __getitem__(self, key): if key in self.removals: - raise KeyError, key + raise KeyError(key) else: try: return self.adds[key] @@ -386,7 +386,7 @@ class ReaderWriter(utils.IterableMap): def __delitem__(self, key): if key in self.removals: - raise KeyError, key + raise KeyError(key) else: if key in self.adds and key in self.cdb: self._journalRemoveKey(key) @@ -398,7 +398,7 @@ class ReaderWriter(utils.IterableMap): elif key in self.cdb: self._journalRemoveKey(key) else: - raise KeyError, key + raise KeyError(key) self.mods += 1 self._flushIfOverLimit() diff --git a/src/commands.py b/src/commands.py index 3ee2ff546..a6f3f2e2c 100644 --- a/src/commands.py +++ b/src/commands.py @@ -121,7 +121,7 @@ def process(f, *args, **kwargs): p.join(timeout) if p.is_alive(): p.terminate() - raise ProcessTimeoutError, "%s aborted due to timeout." % (p.name,) + raise ProcessTimeoutError("%s aborted due to timeout." % (p.name,)) try: v = q.get(block=False) except Queue.Empty: @@ -799,7 +799,7 @@ def getConverter(name): try: return wrappers[name] except KeyError, e: - raise UnknownConverter, str(e) + raise UnknownConverter(str(e)) def callConverter(name, irc, msg, args, state, *L): getConverter(name)(irc, msg, args, state, *L) @@ -1024,7 +1024,7 @@ class State(object): self.errored = True return getattr(dynamic.irc, attr) else: - raise AttributeError, attr + raise AttributeError(attr) def essence(self): st = State(self.types) diff --git a/src/dbi.py b/src/dbi.py index fbeeeea30..5a0c809a5 100644 --- a/src/dbi.py +++ b/src/dbi.py @@ -142,7 +142,7 @@ class DirMapping(MappingInterface): try: os.remove(self._makeFilename(id)) except EnvironmentError, e: - raise NoRecordError, id + raise NoRecordError(id) class FlatfileMapping(MappingInterface): def __init__(self, filename, maxSize=10**6): @@ -154,7 +154,7 @@ class FlatfileMapping(MappingInterface): try: self.currentId = int(strId) except ValueError: - raise Error, 'Invalid file for FlatfileMapping: %s' % filename + raise Error('Invalid file for FlatfileMapping: %s' % filename) except EnvironmentError, e: # File couldn't be opened. self.maxSize = int(math.log10(maxSize)) @@ -209,7 +209,7 @@ class FlatfileMapping(MappingInterface): (lineId, s) = self._splitLine(line) if lineId == strId: return s - raise NoRecordError, id + raise NoRecordError(id) finally: fd.close() @@ -295,7 +295,7 @@ class CdbMapping(MappingInterface): try: return self.db[str(id)] except KeyError: - raise NoRecordError, id + raise NoRecordError(id) # XXX Same as above. def set(self, id, s): diff --git a/src/dynamicScope.py b/src/dynamicScope.py index e1fd97fd2..322cf7e57 100644 --- a/src/dynamicScope.py +++ b/src/dynamicScope.py @@ -36,7 +36,7 @@ class DynamicScope(object): if name in f.f_locals: return f.f_locals f = f.f_back - raise NameError, name + raise NameError(name) def __getattr__(self, name): try: diff --git a/src/ircdb.py b/src/ircdb.py index d4553bceb..b82cdffc0 100644 --- a/src/ircdb.py +++ b/src/ircdb.py @@ -80,7 +80,7 @@ def unAntiCapability(capability): """Takes an anticapability and returns the non-anti form.""" assert isCapability(capability), 'got %s' % capability if not isAntiCapability(capability): - raise ValueError, '%s is not an anti capability' % capability + raise ValueError('%s is not an anti capability' % capability) if isChannelCapability(capability): (channel, capability) = fromChannelCapability(capability) return ','.join((channel, capability[1:])) @@ -290,8 +290,7 @@ class IrcUser(object): """Adds a hostmask to the user's hostmasks.""" assert ircutils.isUserHostmask(hostmask), 'got %s' % hostmask if len(unWildcardHostmask(hostmask)) < 3: - raise ValueError, \ - 'Hostmask must contain at least 3 non-wildcard characters.' + raise ValueError('Hostmask must contain at least 3 non-wildcard characters.') self.hostmasks.add(hostmask) def removeHostmask(self, hostmask): @@ -337,7 +336,7 @@ class IrcUser(object): uniqued = list(filter(uniqueHostmask, reversed(self.auth))) self.auth = list(reversed(uniqued)) else: - raise ValueError, 'secure flag set, unmatched hostmask' + raise ValueError('secure flag set, unmatched hostmask') def clearAuth(self): """Unsets a user's authenticated hostmask.""" @@ -492,7 +491,7 @@ class IrcChannel(object): class Creator(object): def badCommand(self, command, rest, lineno): - raise ValueError, 'Invalid command on line %s: %s' % (lineno, command) + raise ValueError('Invalid command on line %s: %s' % (lineno, command)) class IrcUserCreator(Creator): u = None @@ -503,12 +502,12 @@ class IrcUserCreator(Creator): def user(self, rest, lineno): if self.u.id is not None: - raise ValueError, 'Unexpected user command on line %s.' % lineno + raise ValueError('Unexpected user command on line %s.' % lineno) self.u.id = int(rest) def _checkId(self): if self.u.id is None: - raise ValueError, 'Unexpected user description without user.' + raise ValueError('Unexpected user description without user.') def name(self, rest, lineno): self._checkId() @@ -571,12 +570,12 @@ class IrcChannelCreator(Creator): def channel(self, rest, lineno): if self.name is not None: - raise ValueError, 'Unexpected channel command on line %s' % lineno + raise ValueError('Unexpected channel command on line %s' % lineno) IrcChannelCreator.name = rest def _checkId(self): if self.name is None: - raise ValueError, 'Unexpected channel description without channel.' + raise ValueError('Unexpected channel description without channel.') def lobotomized(self, rest, lineno): self._checkId() @@ -697,14 +696,14 @@ class UsersDictionary(utils.IterableMap): self._hostmaskCache[id] = set([s]) return id elif len(ids) == 0: - raise KeyError, s + raise KeyError(s) else: log.error('Multiple matches found in user database. ' 'Removing the offending hostmasks.') for (id, hostmask) in ids.iteritems(): log.error('Removing %q from user %s.', hostmask, id) self.users[id].removeHostmask(hostmask) - raise DuplicateHostmask, 'Ids %r matched.' % ids + raise DuplicateHostmask('Ids %r matched.' % ids) else: # Not a hostmask, must be a name. s = s.lower() try: @@ -716,7 +715,7 @@ class UsersDictionary(utils.IterableMap): self._nameCache[id] = s return id else: - raise KeyError, s + raise KeyError(s) def getUser(self, id): """Returns a user given its id, name, or hostmask.""" @@ -775,7 +774,7 @@ class UsersDictionary(utils.IterableMap): self.nextId = max(self.nextId, user.id) try: if self.getUserId(user.name) != user.id: - raise DuplicateHostmask, hostmask + raise DuplicateHostmask(hostmask) except KeyError: pass for hostmask in user.hostmasks: @@ -788,10 +787,10 @@ class UsersDictionary(utils.IterableMap): # raise an exception. So instead, we'll raise an # exception, but be nice and give the offending hostmask # back at the same time. - raise DuplicateHostmask, hostmask + raise DuplicateHostmask(hostmask) for otherHostmask in u.hostmasks: if ircutils.hostmaskPatternEqual(hostmask, otherHostmask): - raise DuplicateHostmask, hostmask + raise DuplicateHostmask(hostmask) self.invalidateCache(user.id) self.users[user.id] = user if flush: diff --git a/src/ircmsgs.py b/src/ircmsgs.py index 700b81576..325802f4a 100644 --- a/src/ircmsgs.py +++ b/src/ircmsgs.py @@ -85,7 +85,7 @@ class IrcMsg(object): def __init__(self, s='', command='', args=(), prefix='', msg=None): assert not (msg and s), 'IrcMsg.__init__ cannot accept both s and msg' if not s and not command and not msg: - raise MalformedIrcMsg, 'IRC messages require a command.' + raise MalformedIrcMsg('IRC messages require a command.') self._str = None self._repr = None self._hash = None @@ -109,7 +109,7 @@ class IrcMsg(object): self.args = s.split() self.command = self.args.pop(0) except (IndexError, ValueError): - raise MalformedIrcMsg, repr(originalString) + raise MalformedIrcMsg(repr(originalString)) else: if msg is not None: if prefix: diff --git a/src/ircutils.py b/src/ircutils.py index 9ff8c9abb..c032799c3 100644 --- a/src/ircutils.py +++ b/src/ircutils.py @@ -48,6 +48,7 @@ import functools from cStringIO import StringIO as sio from . import utils +from . import minisix from itertools import imap def debug(s, *args): @@ -88,13 +89,13 @@ def splitHostmask(hostmask): assert isUserHostmask(hostmask) nick, rest = hostmask.split('!', 1) user, host = rest.split('@', 1) - return (sys.intern(nick), sys.intern(user), sys.intern(host)) + return (minisix.intern(nick), minisix.intern(user), minisix.intern(host)) def joinHostmask(nick, ident, host): """nick, user, host => hostmask Joins the nick, ident, host into a user hostmask.""" assert nick and ident and host - return sys.intern('%s!%s@%s' % (nick, ident, host)) + return minisix.intern('%s!%s@%s' % (nick, ident, host)) _rfc1459trans = utils.str.MultipleReplacer(dict(zip( string.ascii_uppercase + r'\[]~', @@ -107,7 +108,7 @@ def toLower(s, casemapping=None): elif casemapping == 'ascii': # freenode return s.lower() else: - raise ValueError, 'Invalid casemapping: %r' % casemapping + raise ValueError('Invalid casemapping: %r' % casemapping) def strEqual(nick1, nick2): """s1, s2 => bool diff --git a/src/log.py b/src/log.py index b850512d5..d811a717b 100644 --- a/src/log.py +++ b/src/log.py @@ -185,12 +185,11 @@ try: messagesLogFilename = os.path.join(_logDir, 'messages.log') _handler = BetterFileHandler(messagesLogFilename) except EnvironmentError, e: - raise SystemExit, \ - 'Error opening messages logfile (%s). ' \ + raise SystemExit('Error opening messages logfile (%s). ' \ 'Generally, this is because you are running Supybot in a directory ' \ 'you don\'t have permissions to add files in, or you\'re running ' \ 'Supybot as a different user than you normal do. The original ' \ - 'error was: %s' % (messagesLogFilename, utils.gen.exnToString(e)) + 'error was: %s' % (messagesLogFilename, utils.gen.exnToString(e))) # These are public. formatter = Formatter('NEVER SEEN; IF YOU SEE THIS, FILE A BUG!') diff --git a/src/plugin.py b/src/plugin.py index 5d63800c2..3517aa3ce 100644 --- a/src/plugin.py +++ b/src/plugin.py @@ -59,7 +59,7 @@ def loadPluginModule(name, ignoreDeprecation=False): if len(matched_names) == 1: name = matched_names[0] else: - raise ImportError, name + raise ImportError(name) moduleInfo = imp.find_module(name, pluginDirs) try: module = imp.load_module(name, *moduleInfo) @@ -74,8 +74,8 @@ def loadPluginModule(name, ignoreDeprecation=False): if ignoreDeprecation: log.warning('Deprecated plugin loaded: %s', name) else: - raise Deprecated, format('Attempted to load deprecated plugin %s', - name) + raise Deprecated(format('Attempted to load deprecated plugin %s', + name)) if module.__name__ in sys.modules: sys.modules[module.__name__] = module linecache.checkcache() @@ -88,8 +88,7 @@ def loadPluginClass(irc, module, register=None): except TypeError, e: s = str(e) if '2 given' in s and '__init__' in s: - raise callbacks.Error, \ - 'In our switch from CVS to Darcs (after 0.80.1), we ' \ + raise callbacks.Error('In our switch from CVS to Darcs (after 0.80.1), we ' \ 'changed the __init__ for callbacks.Privmsg* to also ' \ 'accept an irc argument. This plugin (%s) is overriding ' \ 'its __init__ method and needs to update its prototype ' \ @@ -98,17 +97,16 @@ def loadPluginClass(irc, module, register=None): 'parent\'s __init__. Another possible cause: the code in ' \ 'your __init__ raised a TypeError when calling a function ' \ 'or creating an object, which doesn\'t take 2 arguments.' %\ - module.__name__ + module.__name__) else: raise except AttributeError, e: if 'Class' in str(e): - raise callbacks.Error, \ - 'This plugin module doesn\'t have a "Class" ' \ + raise callbacks.Error('This plugin module doesn\'t have a "Class" ' \ 'attribute to specify which plugin should be ' \ 'instantiated. If you didn\'t write this ' \ 'plugin, but received it with Supybot, file ' \ - 'a bug with us about this error.' + 'a bug with us about this error.') else: raise cb.classModule = module diff --git a/src/registry.py b/src/registry.py index 5a445275b..194f421ba 100644 --- a/src/registry.py +++ b/src/registry.py @@ -103,7 +103,7 @@ def open_registry(filename, clear=False): value = decoder(value)[0] acc = '' except ValueError: - raise InvalidRegistryFile, 'Error unpacking line %r' % acc + raise InvalidRegistryFile('Error unpacking line %r' % acc) _cache[key] = value _lastModified = time.time() _fd.close() @@ -199,11 +199,11 @@ class Group(object): self.X = X def __call__(self): - raise ValueError, 'Groups have no value.' + raise ValueError('Groups have no value.') def __nonExistentEntry(self, attr): s = '%r is not a valid entry in %r' % (attr, self._name) - raise NonExistentRegistryEntry, s + raise NonExistentRegistryEntry(s) def __makeChild(self, attr, s): v = self.__class__(self._default, self._help) @@ -250,7 +250,7 @@ class Group(object): def register(self, name, node=None): if not isValidRegistryName(name): - raise InvalidRegistryName, name + raise InvalidRegistryName(name) if node is None: node = Group(private=self._private) else: @@ -626,9 +626,8 @@ class Regexp(Value): self.sr = sr self.__parent.setValue(v) else: - raise InvalidRegistryValue, \ - 'Can\'t setValue a regexp, there would be an inconsistency '\ - 'between the regexp and the recorded string value.' + raise InvalidRegistryValue('Can\'t setValue a regexp, there would be an inconsistency '\ + 'between the regexp and the recorded string value.') def __str__(self): self() # Gotta update if we've been reloaded. diff --git a/src/shlex.py b/src/shlex.py index 6dbd1dfc9..d2e364342 100644 --- a/src/shlex.py +++ b/src/shlex.py @@ -149,7 +149,7 @@ class shlex: if self.debug >= 2: print("shlex: I see EOF in quotes state") # XXX what error should be raised here? - raise ValueError, "No closing quotation" + raise ValueError("No closing quotation") elif self.state == 'a': if not nextchar: self.state = None # end of file diff --git a/src/test.py b/src/test.py index a1d9f269b..f3e85a815 100644 --- a/src/test.py +++ b/src/test.py @@ -187,7 +187,7 @@ class PluginTestCase(SupyTestCase): ircdb.ignores.reload() ircdb.channels.reload() if self.plugins is None: - raise ValueError, 'PluginTestCase must have a "plugins" attribute.' + raise ValueError('PluginTestCase must have a "plugins" attribute.') self.nick = nick self.prefix = ircutils.joinHostmask(nick, 'user', 'host.domain.tld') self.irc = getTestIrc() @@ -276,7 +276,7 @@ class PluginTestCase(SupyTestCase): def assertError(self, query, **kwargs): m = self._feedMsg(query, **kwargs) if m is None: - raise TimeoutError, query + raise TimeoutError(query) if lastGetHelp not in m.args[1]: self.failUnless(m.args[1].startswith('Error:'), '%r did not error: %s' % (query, m.args[1])) @@ -288,7 +288,7 @@ class PluginTestCase(SupyTestCase): def assertNotError(self, query, **kwargs): m = self._feedMsg(query, **kwargs) if m is None: - raise TimeoutError, query + raise TimeoutError(query) self.failIf(m.args[1].startswith('Error:'), '%r errored: %s' % (query, m.args[1])) self.failIf(lastGetHelp in m.args[1], @@ -301,7 +301,7 @@ class PluginTestCase(SupyTestCase): def assertHelp(self, query, **kwargs): m = self._feedMsg(query, **kwargs) if m is None: - raise TimeoutError, query + raise TimeoutError(query) msg = m.args[1] if 'more message' in msg: msg = msg[0:-27] # Strip (XXX more messages) @@ -321,7 +321,7 @@ class PluginTestCase(SupyTestCase): def assertResponse(self, query, expectedResponse, **kwargs): m = self._feedMsg(query, **kwargs) if m is None: - raise TimeoutError, query + raise TimeoutError(query) self.assertEqual(m.args[1], expectedResponse, '%r != %r' % (expectedResponse, m.args[1])) return m @@ -333,7 +333,7 @@ class PluginTestCase(SupyTestCase): def assertRegexp(self, query, regexp, flags=re.I, **kwargs): m = self._feedMsg(query, **kwargs) if m is None: - raise TimeoutError, query + raise TimeoutError(query) self.failUnless(re.search(regexp, m.args[1], flags), '%r does not match %r' % (m.args[1], regexp)) return m @@ -345,7 +345,7 @@ class PluginTestCase(SupyTestCase): def assertNotRegexp(self, query, regexp, flags=re.I, **kwargs): m = self._feedMsg(query, **kwargs) if m is None: - raise TimeoutError, query + raise TimeoutError(query) self.failUnless(re.search(regexp, m.args[1], flags) is None, '%r matched %r' % (m.args[1], regexp)) return m @@ -357,7 +357,7 @@ class PluginTestCase(SupyTestCase): def assertAction(self, query, expectedResponse=None, **kwargs): m = self._feedMsg(query, **kwargs) if m is None: - raise TimeoutError, query + raise TimeoutError(query) self.failUnless(ircmsgs.isAction(m), '%r is not an action.' % m) if expectedResponse is not None: s = ircmsgs.unAction(m) @@ -372,7 +372,7 @@ class PluginTestCase(SupyTestCase): def assertActionRegexp(self, query, regexp, flags=re.I, **kwargs): m = self._feedMsg(query, **kwargs) if m is None: - raise TimeoutError, query + raise TimeoutError(query) self.failUnless(ircmsgs.isAction(m)) s = ircmsgs.unAction(m) self.failUnless(re.search(regexp, s, flags), @@ -537,7 +537,7 @@ def open_http(url, data=None): host = realhost #print "proxy via http:", host, selector - if not host: raise IOError, ('http error', 'no host given') + if not host: raise IOError('http error', 'no host given') if proxy_passwd: import base64 diff --git a/src/utils/file.py b/src/utils/file.py index 16981db5a..6f68cc952 100644 --- a/src/utils/file.py +++ b/src/utils/file.py @@ -50,7 +50,7 @@ def open_mkdir(filename, mode='wb', *args, **kwargs): baz in it. """ if mode not in ('w', 'wb'): - raise ValueError, 'utils.file.open expects to write.' + raise ValueError('utils.file.open expects to write.') (dirname, basename) = os.path.split(filename) os.makedirs(dirname) return open(filename, mode, *args, **kwargs) @@ -137,7 +137,7 @@ class AtomicFile(object): if allowEmptyOverwrite is None: allowEmptyOverwrite = force(self.default.allowEmptyOverwrite) if mode not in ('w', 'wb'): - raise ValueError, format('Invalid mode: %q', mode) + raise ValueError(format('Invalid mode: %q', mode)) self.rolledback = False self.allowEmptyOverwrite = allowEmptyOverwrite self.makeBackupIfSmaller = makeBackupIfSmaller @@ -219,7 +219,7 @@ class AtomicFile(object): shutil.move(self.tempFilename, self.filename) else: - raise ValueError, 'AtomicFile.close called after rollback.' + raise ValueError('AtomicFile.close called after rollback.') def __del__(self): # We rollback because if we're deleted without being explicitly closed, diff --git a/src/utils/gen.py b/src/utils/gen.py index c2b3e6648..7327743cf 100644 --- a/src/utils/gen.py +++ b/src/utils/gen.py @@ -117,7 +117,7 @@ def timeElapsed(elapsed, short=False, leadingZeroes=False, years=True, leadingZeroes = True Format(_('second'), secs) if not ret: - raise ValueError, 'Time difference not great enough to be noted.' + raise ValueError('Time difference not great enough to be noted.') result = '' if short: result = ' '.join(ret) @@ -161,13 +161,13 @@ def safeEval(s, namespace={'True': True, 'False': False, 'None': None}): try: node = ast.parse(s) except SyntaxError, e: - raise ValueError, 'Invalid string: %s.' % e + raise ValueError('Invalid string: %s.' % e) nodes = ast.parse(s).body if not nodes: if node.__class__ is ast.Module: return node.doc else: - raise ValueError, format('Unsafe string: %q', s) + raise ValueError(format('Unsafe string: %q', s)) node = nodes[0] def checkNode(node): if node.__class__ is ast.Expr: @@ -192,7 +192,7 @@ def safeEval(s, namespace={'True': True, 'False': False, 'None': None}): if checkNode(node): return eval(s, namespace, namespace) else: - raise ValueError, format('Unsafe string: %q', s) + raise ValueError(format('Unsafe string: %q', s)) def exnToString(e): """Turns a simple exception instance into a string (better than str(e))""" diff --git a/src/utils/iter.py b/src/utils/iter.py index 1416859b5..8a9e1fde0 100644 --- a/src/utils/iter.py +++ b/src/utils/iter.py @@ -154,7 +154,7 @@ def limited(iterable, limit): yield next(iterable) i -= 1 except StopIteration: - raise ValueError, 'Expected %s elements in iterable (%r), got %s.' % \ - (limit, iterable, limit-i) + raise ValueError('Expected %s elements in iterable (%r), got %s.' % \ + (limit, iterable, limit-i)) # vim:set shiftwidth=4 softtabstop=4 expandtab textwidth=79: diff --git a/src/utils/net.py b/src/utils/net.py index f65ead27a..cb8b522a3 100644 --- a/src/utils/net.py +++ b/src/utils/net.py @@ -67,7 +67,7 @@ def getSocket(host, socks_proxy=None): elif isIPV6(host): return socket.socket(socket.AF_INET6, socket.SOCK_STREAM) else: - raise socket.error, 'Something wonky happened.' + raise socket.error('Something wonky happened.') def isIP(s): """Returns whether or not a given string is an IP address. diff --git a/src/utils/python.py b/src/utils/python.py index b9d6c1886..ca704e71a 100644 --- a/src/utils/python.py +++ b/src/utils/python.py @@ -53,7 +53,7 @@ def universalImport(*names): ret = getattr(ret, parts[0]) del parts[0] return ret - raise ImportError, ','.join(names) + raise ImportError(','.join(names)) def changeFunctionName(f, name, doc=None): if doc is None: diff --git a/src/utils/seq.py b/src/utils/seq.py index 67b0272be..0fa37e492 100644 --- a/src/utils/seq.py +++ b/src/utils/seq.py @@ -33,7 +33,7 @@ def window(L, size): Returns a sliding 'window' through the list L of size size.""" assert not isinstance(L, int), 'Argument order swapped: window(L, size)' if size < 1: - raise ValueError, 'size <= 0 disallowed.' + raise ValueError('size <= 0 disallowed.') for i in xrange(len(L) - (size-1)): yield L[i:i+size] diff --git a/src/utils/str.py b/src/utils/str.py index 8b8aacfef..a080653f5 100644 --- a/src/utils/str.py +++ b/src/utils/str.py @@ -124,7 +124,7 @@ def soundex(s, length=4): s = s.upper() # Make everything uppercase. s = ''.join([x for x in s if x in string.ascii_uppercase]) if not s: - raise ValueError, 'Invalid string for soundex: %s' + raise ValueError('Invalid string for soundex: %s') firstChar = s[0] # Save the first character. s = _soundextrans(s) # Convert to soundex numbers. s = s.lstrip(s[0]) # Remove all repeated first characters. @@ -155,7 +155,7 @@ _openers = '{[(<' _closers = '}])>' def _getSep(s, allowBraces=False): if len(s) < 2: - raise ValueError, 'string given to _getSep is too short: %r' % s + raise ValueError('string given to _getSep is too short: %r' % s) if allowBraces: braces = _closers else: @@ -165,9 +165,8 @@ def _getSep(s, allowBraces=False): else: separator = s[0] if separator.isalnum() or separator in braces: - raise ValueError, \ - 'Invalid separator: separator must not be alphanumeric or in ' \ - '"%s"' % braces + raise ValueError('Invalid separator: separator must not be alphanumeric or in ' \ + '"%s"' % braces) return separator def perlReToPythonRe(s): @@ -183,7 +182,7 @@ def perlReToPythonRe(s): try: (regexp, flags) = matcher.match(s).groups() except AttributeError: # Unpack list of wrong size. - raise ValueError, 'Must be of the form m/.../ or /.../' + raise ValueError('Must be of the form m/.../ or /.../') regexp = regexp.replace('\\'+opener, opener) if opener != closer: regexp = regexp.replace('\\'+closer, closer) @@ -192,11 +191,11 @@ def perlReToPythonRe(s): for c in flags.upper(): flag |= getattr(re, c) except AttributeError: - raise ValueError, 'Invalid flag: %s' % c + raise ValueError('Invalid flag: %s' % c) try: return re.compile(regexp, flag) except re.error, e: - raise ValueError, str(e) + raise ValueError(str(e)) def perlReToReplacer(s): """Converts a string representation of a Perl regular expression (i.e., @@ -210,7 +209,7 @@ def perlReToReplacer(s): try: (regexp, replace, flags) = matcher.match(s).groups() except AttributeError: # Unpack list of wrong size. - raise ValueError, 'Must be of the form s/.../.../' + raise ValueError('Must be of the form s/.../.../') regexp = regexp.replace('\x08', r'\b') replace = replace.replace('\\'+sep, sep) for i in xrange(10): @@ -414,7 +413,7 @@ def toBool(s): elif s in ('false', 'off', 'disable', 'disabled', '0'): return False else: - raise ValueError, 'Invalid string for toBool: %s' % quoted(s) + raise ValueError('Invalid string for toBool: %s' % quoted(s)) # When used with Supybot, this is overriden when supybot.conf is loaded def timestamp(t): @@ -476,14 +475,12 @@ def format(s, *args, **kwargs): return commaAndify(t) elif isinstance(t, tuple) and len(t) == 2: if not isinstance(t[0], list): - raise ValueError, \ - 'Invalid list for %%L in format: %s' % t + raise ValueError('Invalid list for %%L in format: %s' % t) if not isinstance(t[1], basestring): - raise ValueError, \ - 'Invalid string for %%L in format: %s' % t + raise ValueError('Invalid string for %%L in format: %s' % t) return commaAndify(t[0], And=t[1]) else: - raise ValueError, 'Invalid value for %%L in format: %s' % t + raise ValueError('Invalid value for %%L in format: %s' % t) elif char == 'p': return pluralize(args.pop()) elif char == 'q': @@ -493,17 +490,17 @@ def format(s, *args, **kwargs): elif char == 'n': t = args.pop() if not isinstance(t, (tuple, list)): - raise ValueError, 'Invalid value for %%n in format: %s' % t + raise ValueError('Invalid value for %%n in format: %s' % t) if len(t) == 2: return nItems(*t) elif len(t) == 3: return nItems(t[0], t[2], between=t[1]) else: - raise ValueError, 'Invalid value for %%n in format: %s' % t + raise ValueError('Invalid value for %%n in format: %s' % t) elif char == 'S': t = args.pop() if not isinstance(t, (int, long)): - raise ValueError, 'Invalid value for %%S in format: %s' % t + raise ValueError('Invalid value for %%S in format: %s' % t) for suffix in ['B','KB','MB','GB','TB']: if t < 1024: return "%i%s" % (t, suffix) @@ -527,10 +524,10 @@ def format(s, *args, **kwargs): elif char == '%': return '%' else: - raise ValueError, 'Invalid char in sub (in format).' + raise ValueError('Invalid char in sub (in format).') try: return _formatRe.sub(sub, s) except IndexError: - raise ValueError, 'Extra format chars in format spec: %r' % s + raise ValueError('Extra format chars in format spec: %r' % s) # vim:set shiftwidth=4 softtabstop=4 expandtab textwidth=79: diff --git a/src/utils/structures.py b/src/utils/structures.py index 0d9652d00..865ddd155 100644 --- a/src/utils/structures.py +++ b/src/utils/structures.py @@ -41,7 +41,7 @@ class RingBuffer(object): __slots__ = ('L', 'i', 'full', 'maxSize') def __init__(self, maxSize, seq=()): if maxSize <= 0: - raise ValueError, 'maxSize must be > 0.' + raise ValueError('maxSize must be > 0.') self.maxSize = maxSize self.reset() for elt in seq: @@ -109,7 +109,7 @@ class RingBuffer(object): else: (m, idx) = divmod(oidx, len(self.L)) if m and m != -1: - raise IndexError, oidx + raise IndexError(oidx) idx = (idx + self.i) % len(self.L) return self.L[idx] else: @@ -127,21 +127,21 @@ class RingBuffer(object): if isinstance(oidx, types.SliceType): range_ = xrange(*slice.indices(oidx, len(self))) if len(range_) != len(elt): - raise ValueError, 'seq must be the same length as slice.' + raise ValueError('seq must be the same length as slice.') else: for (i, x) in zip(range_, elt): self[i] = x else: (m, idx) = divmod(oidx, len(self.L)) if m and m != -1: - raise IndexError, oidx + raise IndexError(oidx) idx = (idx + self.i) % len(self.L) self.L[idx] = elt else: if isinstance(idx, types.SliceType): range_ = xrange(*slice.indices(idx, len(self))) if len(range_) != len(elt): - raise ValueError, 'seq must be the same length as slice.' + raise ValueError('seq must be the same length as slice.') else: for (i, x) in zip(range_, elt): self[i] = x @@ -226,7 +226,7 @@ class queue(object): def __getitem__(self, oidx): if len(self) == 0: - raise IndexError, 'queue index out of range' + raise IndexError('queue index out of range') if isinstance(oidx, types.SliceType): L = [] for i in xrange(*slice.indices(oidx, len(self))): @@ -235,7 +235,7 @@ class queue(object): else: (m, idx) = divmod(oidx, len(self)) if m and m != -1: - raise IndexError, oidx + raise IndexError(oidx) if len(self.front) > idx: return self.front[-(idx+1)] else: @@ -243,22 +243,22 @@ class queue(object): def __setitem__(self, oidx, value): if len(self) == 0: - raise IndexError, 'queue index out of range' + raise IndexError('queue index out of range') if isinstance(oidx, types.SliceType): range_ = xrange(*slice.indices(oidx, len(self))) if len(range_) != len(value): - raise ValueError, 'seq must be the same length as slice.' + raise ValueError('seq must be the same length as slice.') else: for i in range_: (m, idx) = divmod(oidx, len(self)) if m and m != -1: - raise IndexError, oidx + raise IndexError(oidx) for (i, x) in zip(range_, value): self[i] = x else: (m, idx) = divmod(oidx, len(self)) if m and m != -1: - raise IndexError, oidx + raise IndexError(oidx) if len(self.front) > idx: self.front[-(idx+1)] = value else: @@ -272,7 +272,7 @@ class queue(object): else: (m, idx) = divmod(oidx, len(self)) if m and m != -1: - raise IndexError, oidx + raise IndexError(oidx) if len(self.front) > idx: del self.front[-(idx+1)] else: diff --git a/src/utils/web.py b/src/utils/web.py index f439d1925..422e9eec3 100644 --- a/src/utils/web.py +++ b/src/utils/web.py @@ -126,18 +126,18 @@ def getUrlFd(url, headers=None, data=None, timeout=None): fd = urllib2.urlopen(request, timeout=timeout) return fd except socket.timeout, e: - raise Error, TIMED_OUT + raise Error(TIMED_OUT) except sockerrors, e: - raise Error, strError(e) + raise Error(strError(e)) except httplib.InvalidURL, e: - raise Error, 'Invalid URL: %s' % e + raise Error('Invalid URL: %s' % e) except urllib2.HTTPError, e: - raise Error, strError(e) + raise Error(strError(e)) except urllib2.URLError, e: - raise Error, strError(e.reason) + raise Error(strError(e.reason)) # Raised when urllib doesn't recognize the url type except ValueError, e: - raise Error, strError(e) + raise Error(strError(e)) def getUrl(url, size=None, headers=None, data=None): """getUrl(url, size=None, headers=None, data=None) @@ -152,7 +152,7 @@ def getUrl(url, size=None, headers=None, data=None): else: text = fd.read(size) except socket.timeout, e: - raise Error, TIMED_OUT + raise Error(TIMED_OUT) fd.close() return text