From a211115b7e4c530e367f24bcc69ac14c618b090d Mon Sep 17 00:00:00 2001 From: Fletcher Boyd Date: Thu, 5 Sep 2013 08:53:07 +0800 Subject: [PATCH 1/6] I'm sure there was a reason this was complicated. --- plugins/choose.py | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/plugins/choose.py b/plugins/choose.py index e28ac29..7c47168 100755 --- a/plugins/choose.py +++ b/plugins/choose.py @@ -1,4 +1,3 @@ -import re import random from util import hook @@ -6,13 +5,10 @@ from util import hook @hook.command def choose(inp): - """choose , [choice2], [choice3] ... [choiceN] + """choose , [choice2], [choice3] Randomly picks one of the given choices.""" - c = re.findall(r'([^,]+)', inp) + c = inp.split(" ") if len(c) == 1: - c = re.findall(r'(\S+)', inp) - if len(c) == 1: - return 'The decision is up to you!' - + return 'banana' return random.choice(c).strip() From 2812569593e6f118e36052a9b40dadcaa88840ad Mon Sep 17 00:00:00 2001 From: Fletcher Boyd Date: Thu, 5 Sep 2013 09:03:01 +0800 Subject: [PATCH 2/6] .format --- plugins/minecraft_ping.py | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/plugins/minecraft_ping.py b/plugins/minecraft_ping.py index a4ae0e2..63b56f4 100644 --- a/plugins/minecraft_ping.py +++ b/plugins/minecraft_ping.py @@ -50,8 +50,7 @@ def mcping_connect(host, port): return message except: - return "Error pinging " + host + ":" + str(port) + \ - ", is it up? Double-check your address!" + return "Error pinging {}:{}, is it up? Double-check your address!".format(host,str(port)) def srvData(domain): @@ -91,8 +90,8 @@ def mcping(inp): port = int(getdata[0]) return format_motd(mcping_connect(host, port)) except: - return "Error pinging %s, is it up? Double-check your address!" % inp + return "Error pinging {}, is it up? Double-check your address!".format(inp) else: - return "Error pinging %s, is it up? Double-check your address!" % inp + return "Error pinging {}, is it up? Double-check your address!".format(inp) else: return rdata From 7ab4f756fe645d3bb1d7abad3c1b3500eada0999 Mon Sep 17 00:00:00 2001 From: Fletcher Boyd Date: Thu, 5 Sep 2013 09:46:49 +0800 Subject: [PATCH 3/6] .format --- plugins/admin.py | 44 +++++++++++++++++++++---------------------- plugins/attacks.py | 4 ++-- plugins/bitcoin.py | 4 ++-- plugins/brainfuck.py | 2 +- plugins/coin.py | 5 ++--- plugins/core_ctcp.py | 2 +- plugins/core_misc.py | 8 ++------ plugins/correction.py | 6 +++--- plugins/dice.py | 4 ++-- plugins/dictionary.py | 8 ++++---- plugins/down.py | 4 ++-- plugins/drama.py | 2 +- plugins/eightball.py | 2 +- plugins/fact.py | 2 +- plugins/factoids.py | 14 ++++++-------- plugins/fmylife.py | 2 +- plugins/gcalc.py | 4 ++-- plugins/github.py | 8 ++++---- plugins/google.py | 8 +++----- plugins/horoscope.py | 2 +- plugins/ignore.py | 10 +++++----- plugins/imdb.py | 2 +- 22 files changed, 69 insertions(+), 78 deletions(-) diff --git a/plugins/admin.py b/plugins/admin.py index 851e642..11b7a2e 100755 --- a/plugins/admin.py +++ b/plugins/admin.py @@ -19,7 +19,7 @@ def permissions(inp, bot=None, notice=None): for k in permissions: groups.append(k) if not groups: - notice("%s is not a group with permissions" % inp) + notice("{} is not a group with permissions".format(inp)) return None for v in groups: @@ -27,10 +27,10 @@ def permissions(inp, bot=None, notice=None): for value in permissions[v]["users"]: members = members + value + ", " if members: - notice("the members in the %s group are.." % v) + notice("the members in the {} group are..".format(v)) notice(members[:-2]) else: - notice("there are no members in the %s group" % v) + notice("there are no members in the {} group".format(v)) @hook.command(permissions=["permissions_users"]) @@ -51,7 +51,7 @@ def deluser(inp, bot=None, notice=None): if specgroup == k: groups.append(k) if not groups: - notice("%s is not a group with permissions" % inp[1]) + notice("{} is not a group with permissions".format(inp[1])) return None removed = 0 @@ -61,14 +61,14 @@ def deluser(inp, bot=None, notice=None): if inp[0] == value: users.remove(inp[0]) removed = 1 - notice("%s has been removed from the group %s" % (inp[0], v)) + notice("{} has been removed from the group {}".format(inp[0], v)) json.dump(bot.config, open('config', 'w'), sort_keys=True, indent=2) if specgroup: if removed == 0: - notice("%s is not in the group %s" % (inp[0], specgroup)) + notice("{} is not in the group {}".format(inp[0], specgroup)) else: if removed == 0: - notice("%s is not in any groups" % inp[0]) + notice("{} is not in any groups".format(inp[0])) @hook.command(permissions=["permissions_users"]) @@ -89,14 +89,14 @@ def adduser(inp, bot=None, notice=None): try: users = permissions[targetgroup]["users"] except KeyError: - notice("no such group as %s" % targetgroup) + notice("no such group as {}".format(targetgroup)) return None if user in users: - notice("%s is already in %s" % (user, targetgroup)) + notice("{} is already in {}".format(user, targetgroup)) return None users.append(user) - notice("%s has been added to the group %s" % (user, targetgroup)) + notice("{} has been added to the group {}".format(user, targetgroup)) users.sort() json.dump(bot.config, open('config', 'w'), sort_keys=True, indent=2) @@ -106,9 +106,9 @@ def adduser(inp, bot=None, notice=None): def stop(inp, nick=None, conn=None): """stop [reason] -- Kills the bot with [reason] as its quit message.""" if inp: - conn.cmd("QUIT", ["Killed by %s (%s)" % (nick, inp)]) + conn.cmd("QUIT", ["Killed by {} ({})".format(nick, inp)]) else: - conn.cmd("QUIT", ["Killed by %s." % nick]) + conn.cmd("QUIT", ["Killed by {}.".format(nick)]) time.sleep(5) os.execl("./cloudbot", "cloudbot", "stop") @@ -117,9 +117,9 @@ def stop(inp, nick=None, conn=None): def restart(inp, nick=None, conn=None): """restart [reason] -- Restarts the bot with [reason] as its quit message.""" if inp: - conn.cmd("QUIT", ["Restarted by %s (%s)" % (nick, inp)]) + conn.cmd("QUIT", ["Restarted by {} ({})".format(nick, inp)]) else: - conn.cmd("QUIT", ["Restarted by %s." % nick]) + conn.cmd("QUIT", ["Restarted by {}.".format(nick)]) time.sleep(5) os.execl("./cloudbot", "cloudbot", "restart") @@ -133,7 +133,7 @@ def clearlogs(inp, input=None): @hook.command(permissions=["botcontrol"]) def join(inp, conn=None, notice=None): """join -- Joins .""" - notice("Attempting to join %s..." % inp) + notice("Attempting to join {}...".format(inp)) conn.join(inp) @@ -146,7 +146,7 @@ def part(inp, conn=None, chan=None, notice=None): target = inp else: target = chan - notice("Attempting to leave %s..." % target) + notice("Attempting to leave {}...".format(target)) conn.part(target) @@ -159,7 +159,7 @@ def cycle(inp, conn=None, chan=None, notice=None): target = inp else: target = chan - notice("Attempting to cycle %s..." % target) + notice("Attempting to cycle {}...".format(target}) conn.part(target) conn.join(target) @@ -170,7 +170,7 @@ def nick(inp, notice=None, conn=None): if not re.match("^[A-Za-z0-9_|.-\]\[]*$", inp.lower()): notice("Invalid username!") return - notice("Attempting to change nick to \"%s\"..." % inp) + notice("Attempting to change nick to \"{}\"...".format(inp)) conn.set_nick(inp) @@ -189,10 +189,10 @@ def say(inp, conn=None, chan=None): inp = inp.split(" ") if inp[0][0] == "#": message = " ".join(inp[1:]) - out = "PRIVMSG %s :%s" % (inp[0], message) + out = "PRIVMSG {} :{}".format(inp[0], message) else: message = " ".join(inp[0:]) - out = "PRIVMSG %s :%s" % (chan, message) + out = "PRIVMSG {} :{}".format(chan, message) conn.send(out) @@ -208,11 +208,11 @@ def me(inp, conn=None, chan=None): for x in inp[1:]: message = message + x + " " message = message[:-1] - out = "PRIVMSG %s :\x01ACTION %s\x01" % (inp[0], message) + out = "PRIVMSG {} :\x01ACTION {}\x01".format(inp[0], message) else: message = "" for x in inp[0:]: message = message + x + " " message = message[:-1] - out = "PRIVMSG %s :\x01ACTION %s\x01" % (chan, message) + out = "PRIVMSG {} :\x01ACTION {}\x01".format(chan, message) conn.send(out) diff --git a/plugins/attacks.py b/plugins/attacks.py index 14fa7ac..2a24102 100644 --- a/plugins/attacks.py +++ b/plugins/attacks.py @@ -100,7 +100,7 @@ def insult(inp, nick=None, me=None, conn=None, notice=None): else: target = inp - out = 'insults %s... "%s"' % (target, random.choice(insults)) + out = 'insults {}... "{}"'.format(target, random.choice(insults)) me(out) @@ -118,5 +118,5 @@ def flirt(inp, me=None, conn=None, notice=None): else: target = inp - out = 'flirts with %s... "%s"' % (target, random.choice(flirts)) + out = 'flirts with {}... "{}"'.format(target, random.choice(flirts)) me(out) diff --git a/plugins/bitcoin.py b/plugins/bitcoin.py index ea7967d..adf985b 100755 --- a/plugins/bitcoin.py +++ b/plugins/bitcoin.py @@ -12,5 +12,5 @@ def bitcoin(inp, say=None): 'low': data['low']['display_short'], 'vol': data['vol']['display_short'], } - say("Current: \x0307%(buy)s\x0f - High: \x0307%(high)s\x0f" - " - Low: \x0307%(low)s\x0f - Volume: %(vol)s" % ticker) + say("Current: \x0307{}\x0f - High: \x0307{}\x0f" + " - Low: \x0307{}\x0f - Volume: {}".format(data['buy'],data['high'],data['low'],data['vol'])) diff --git a/plugins/brainfuck.py b/plugins/brainfuck.py index a2fb126..1c68b57 100755 --- a/plugins/brainfuck.py +++ b/plugins/brainfuck.py @@ -76,7 +76,7 @@ def bf(inp): if steps > MAX_STEPS: if output == '': output = '(no output)' - output += '[exceeded %d iterations]' % MAX_STEPS + output += '[exceeded {} iterations]'.format(MAX_STEPS) break stripped_output = re.sub(r'[\x00-\x1F]', '', output) diff --git a/plugins/coin.py b/plugins/coin.py index ef984fe..78668bb 100755 --- a/plugins/coin.py +++ b/plugins/coin.py @@ -15,11 +15,10 @@ def coin(inp, me=None): amount = 1 if amount == 1: - me("flips a coin and gets %s." % random.choice(["heads", "tails"])) + me("flips a coin and gets {}.".format(random.choice(["heads", "tails"]))) elif amount == 0: me("makes a coin flipping motion with its hands.") else: heads = int(random.normalvariate(.5 * amount, (.75 * amount) ** .5)) tails = amount - heads - me("flips %i coins and gets " - "%i heads and %i tails." % (amount, heads, tails)) + me("flips {} coins and gets {} heads and {} tails.".format(amount, heads, tails)) diff --git a/plugins/core_ctcp.py b/plugins/core_ctcp.py index 523a4e4..4f399f6 100755 --- a/plugins/core_ctcp.py +++ b/plugins/core_ctcp.py @@ -15,4 +15,4 @@ def ctcp_ping(inp, notice=None): @hook.regex(r'^\x01TIME\x01$') def ctcp_time(inp, notice=None): - notice('\x01TIME: The time is: %s' % time.strftime("%r", time.localtime())) + notice('\x01TIME: The time is: {}'.format(time.strftime("%r", time.localtime()))) diff --git a/plugins/core_misc.py b/plugins/core_misc.py index 5e075a9..0b43542 100755 --- a/plugins/core_misc.py +++ b/plugins/core_misc.py @@ -25,16 +25,12 @@ def onjoin(paraml, conn=None, bot=None): nickserv_account_name = conn.conf.get('nickserv_user', '') nickserv_command = conn.conf.get('nickserv_command', 'IDENTIFY') if nickserv_password: - print "Found a password..." if nickserv_password in bot.config['censored_strings']: bot.config['censored_strings'].remove(nickserv_password) if nickserv_account_name: - print "Found an account name..." - print "Sending"," ".join([nickserv_command, nickserv_account_name, nickserv_password]),"to",nickserv_name - conn.msg(nickserv_name, " ".join([nickserv_command, nickserv_account_name, nickserv_password])) + conn.msg(nickserv_name, "{} {} {}".format([nickserv_command, nickserv_account_name, nickserv_password])) else: - print "Sending"," ".join([nickserv_command, nickserv_password]),"to",nickserv_name - conn.msg(nickserv_name, " ".join([nickserv_command, nickserv_password])) + conn.msg(nickserv_name, "{} {}".format([nickserv_command, nickserv_password])) bot.config['censored_strings'].append(nickserv_password) time.sleep(1) diff --git a/plugins/correction.py b/plugins/correction.py index c7d248d..5f2e2f6 100644 --- a/plugins/correction.py +++ b/plugins/correction.py @@ -20,11 +20,11 @@ def correction(inp, say=None, notice=None, db=None): message = last_message[1].replace("\x01ACTION ", "/me ").replace("\x01", "") else: message = last_message[1] - say("%s meant to say: %s" % (nick, message.replace(find, "\x02" + replace + "\x02"))) + say("{} meant to say: {}".format(nick, message.replace(find, "\x02" + replace + "\x02"))) else: - notice("%s can't be found in your last message" % find) + notice("{} can't be found in your last message".format(find)) else: if nick == input.nick: notice("I haven't seen you say anything here yet") else: - notice("I haven't seen %s say anything here yet" % nick) + notice("I haven't seen {} say anything here yet".format(nick)) diff --git a/plugins/dice.py b/plugins/dice.py index f2173d1..94e0f46 100755 --- a/plugins/dice.py +++ b/plugins/dice.py @@ -84,6 +84,6 @@ def dice(inp): return "Thanks for overflowing a float, jerk >:[" if desc: - return "%s: %d (%s)" % (desc.strip(), total, ", ".join(rolls)) + return "{}: {} ({})".format(desc.strip(), total, ", ".join(rolls)) else: - return "%d (%s)" % (total, ", ".join(rolls)) + return "{} ({})".format(total, ", ".join(rolls)) diff --git a/plugins/dictionary.py b/plugins/dictionary.py index dac19b6..478f77f 100755 --- a/plugins/dictionary.py +++ b/plugins/dictionary.py @@ -21,11 +21,11 @@ def define(inp): return 'No results for ' + inp + ' :(' def format_output(show_examples): - result = '%s: ' % h.xpath('//dt[@class="title-word"]/a/text()')[0] + result = '{}: '.format(h.xpath('//dt[@class="title-word"]/a/text()')[0]) correction = h.xpath('//span[@class="correct-word"]/text()') if correction: - result = 'Definition for "%s": ' % correction[0] + result = 'Definition for "{}": '.format(correction[0]) sections = [] for section in definition: @@ -40,7 +40,7 @@ def define(inp): for article in sections: result += article[0] if len(article) > 2: - result += ' '.join('%d. %s' % (n + 1, section) + result += ' '.join('{}. {}'.format(n + 1, section) for n, section in enumerate(article[1:])) else: result += article[1] + ' ' @@ -76,7 +76,7 @@ def etymology(inp): etym = h.xpath('//dl') if not etym: - return 'No etymology found for ' + inp + ' :(' + return 'No etymology found for {} :('.format(inp) etym = etym[0].text_content() diff --git a/plugins/down.py b/plugins/down.py index ec6dc0d..f03c078 100755 --- a/plugins/down.py +++ b/plugins/down.py @@ -15,6 +15,6 @@ def down(inp): # http://mail.python.org/pipermail/python-list/2006-December/589854.html try: http.get(inp, get_method='HEAD') - return inp + ' seems to be up' + return '{} seems to be up'.format(inp) except http.URLError: - return inp + ' seems to be down' + return '{} seems to be down'.format(inp) diff --git a/plugins/drama.py b/plugins/drama.py index b6bf77d..351c5c8 100755 --- a/plugins/drama.py +++ b/plugins/drama.py @@ -24,6 +24,6 @@ def drama(inp): summary = " ".join(p.text_content().splitlines()) summary = re.sub("\[\d+\]", "", summary) summary = text.truncate_str(summary, 220) - return "%s :: %s" % (summary, url) + return "{} :: {}".format(summary, url) return "Unknown Error." diff --git a/plugins/eightball.py b/plugins/eightball.py index e7ef418..141c464 100755 --- a/plugins/eightball.py +++ b/plugins/eightball.py @@ -18,4 +18,4 @@ def eightball(input, me=None): in electronic form. Ask and it shall be answered!""" magic = text.multiword_replace(random.choice(responses), color_codes) - me("shakes the magic 8 ball... %s" % magic) + me("shakes the magic 8 ball... {}".format(magic)) diff --git a/plugins/fact.py b/plugins/fact.py index 062be77..ab05f17 100755 --- a/plugins/fact.py +++ b/plugins/fact.py @@ -34,4 +34,4 @@ def fact(inp, say=False, nick=False): url = web.try_isgd(link) - return "%s - %s" % (fact, url) + return "{} - {}".format(fact, url) diff --git a/plugins/factoids.py b/plugins/factoids.py index 8440fc1..a42ed56 100755 --- a/plugins/factoids.py +++ b/plugins/factoids.py @@ -62,14 +62,12 @@ def remember(inp, nick='', db=None, notice=None): if old_data: if append: - notice("Appending \x02%s\x02 to \x02%s\x02" % (new_data, old_data)) + notice("Appending \x02{}\x02 to \x02{}\x02".format(new_data, old_data)) else: - notice('Remembering \x02%s\x02 for \x02%s\x02. Type ?%s to see it.' - % (data, word, word)) - notice('Previous data was \x02%s\x02' % old_data) + notice('Remembering \x02{}\x02 for \x02{}\x02. Type ?{} to see it.'.format(data, word, word)) + notice('Previous data was \x02{}\x02'.format(old_data)) else: - notice('Remembering \x02%s\x02 for \x02%s\x02. Type ?%s to see it.' - % (data, word, word)) + notice('Remembering \x02{}\x02 for \x02{}\x02. Type ?{} to see it.'.format(data, word, word)) @hook.command("f", permissions=["delfactoid"]) @@ -131,7 +129,7 @@ def factoid(inp, say=None, db=None, bot=None, me=None, conn=None, input=None): # factoid preprocessors if data.startswith(""): code = data[4:].strip() - variables = 'input="""%s"""; nick="%s"; chan="%s"; bot_nick="%s";' % (arguments.replace('"', '\\"'), + variables = 'input="""{}"""; nick="{}"; chan="{}"; bot_nick="{}";'.format(arguments.replace('"', '\\"'), input.nick, input.chan, input.conn.nick) result = execute.eval_py(variables + code) @@ -152,6 +150,6 @@ def factoid(inp, say=None, db=None, bot=None, me=None, conn=None, input=None): say("Could not fetch URL.") else: if prefix_on: - say("\x02[%s]:\x02 %s" % (factoid_id, result)) + say("\x02[{}]:\x02 {}".format(factoid_id, result)) else: say(result) diff --git a/plugins/fmylife.py b/plugins/fmylife.py index c213d44..a25b1a4 100755 --- a/plugins/fmylife.py +++ b/plugins/fmylife.py @@ -23,7 +23,7 @@ def fml(inp, reply=None): # grab the last item in the fml cache and remove it id, text = fml_cache.pop() # reply with the fml we grabbed - reply('(#%d) %s' % (id, text)) + reply('(#{}) {}'.format(id, text)) # refresh fml cache if its getting empty if len(fml_cache) < 3: refresh_cache() diff --git a/plugins/gcalc.py b/plugins/gcalc.py index fd4b136..9a2dbb5 100755 --- a/plugins/gcalc.py +++ b/plugins/gcalc.py @@ -11,9 +11,9 @@ def calc(inp): result = soup.find('h2', {'class': 'r'}) exponent = result.find('sup') if not result: - return "Could not calculate '%s'" % inp + return "Could not calculate '{}'".format(inp) if not exponent: return result.contents[0] if exponent: - return result.contents[0] + "^" + exponent.contents[0] + return "{}^{}".format(result.contents[0]*2) diff --git a/plugins/github.py b/plugins/github.py index dd1aeb9..00ee88d 100644 --- a/plugins/github.py +++ b/plugins/github.py @@ -31,7 +31,7 @@ def ghissues(inp): repo = shortcuts[args[0]] else: repo = args[0] - url = "https://api.github.com/repos/%s/issues" % repo + url = "https://api.github.com/repos/{}/issues".format(repo) except IndexError: return "Invalid syntax. .github issues username/repo [number]" try: @@ -50,13 +50,13 @@ def ghissues(inp): return "Repo has no open issues" except ValueError: return "Invalid data returned. Check arguments (.github issues username/repo [number]" - fmt = "Issue: #%s (%s) by %s: %s | %s %s" # (number, state, user.login, title, truncate(body), gitio.gitio(data.url)) - fmt1 = "Issue: #%s (%s) by %s: %s %s" # (number, state, user.login, title, gitio.gitio(data.url)) + fmt = "Issue: #{} ({}) by {}: {} | {} {}".format(number, state, user.login, title, truncate(body), gitio.gitio(data.url)) + fmt1 = "Issue: #{} ({}) by {}: {} {}".format(number, state, user.login, title, gitio.gitio(data.url)) number = data["number"] if data["state"] == "open": state = u"\x033\x02OPEN\x02\x0f" else: - state = u"\x034\x02CLOSED\x02\x0f by %s" % data["closed_by"]["login"] + state = u"\x034\x02CLOSED\x02\x0f by {}".format(data["closed_by"]["login"]) user = data["user"]["login"] title = data["title"] summary = truncate(data["body"]) diff --git a/plugins/google.py b/plugins/google.py index 1e1dad4..74b0c18 100755 --- a/plugins/google.py +++ b/plugins/google.py @@ -17,8 +17,7 @@ def googleimage(inp): parsed = api_get('images', inp) if not 200 <= parsed['responseStatus'] < 300: - raise IOError('error searching for images: %d: %s' % ( - parsed['responseStatus'], '')) + raise IOError('error searching for images: {}: {}'.format(parsed['responseStatus'], '')) if not parsed['responseData']['results']: return 'no images found' return random.choice(parsed['responseData']['results'][:10]) \ @@ -33,8 +32,7 @@ def google(inp): parsed = api_get('web', inp) if not 200 <= parsed['responseStatus'] < 300: - raise IOError('error searching for pages: %d: %s' % ( - parsed['responseStatus'], '')) + raise IOError('error searching for pages: {}: {}'.format(parsed['responseStatus'], '')) if not parsed['responseData']['results']: return 'No results found.' @@ -50,6 +48,6 @@ def google(inp): content = http.html.fromstring(content).text_content() content = text.truncate_str(content, 150) - out = '%s -- \x02%s\x02: "%s"' % (result['unescapedUrl'], title, content) + out = '{} -- \x02{}\x02: "{}"'.format(result['unescapedUrl'], title, content) return out diff --git a/plugins/horoscope.py b/plugins/horoscope.py index 7bd6221..ef3ed84 100644 --- a/plugins/horoscope.py +++ b/plugins/horoscope.py @@ -46,7 +46,7 @@ def horoscope(inp, db=None, notice=None, nick=None): #result = unicode(result, "utf8").replace('flight ','') if not title: - return "Could not get the horoscope for %s." % inp + return "Could not get the horoscope for {}.".format(inp) if inp and not dontsave: db.execute("insert or replace into horoscope(nick, sign) values (?,?)", diff --git a/plugins/ignore.py b/plugins/ignore.py index 00ce9e1..dc3f382 100755 --- a/plugins/ignore.py +++ b/plugins/ignore.py @@ -34,7 +34,7 @@ def ignored(inp, notice=None, bot=None): """ignored -- Lists ignored channels/users.""" ignorelist = bot.config["plugins"]["ignore"]["ignored"] if ignorelist: - notice("Ignored channels/users are: %s" % ", ".join(ignorelist)) + notice("Ignored channels/users are: {}".format(", ".join(ignorelist))) else: notice("No masks are currently ignored.") return @@ -46,9 +46,9 @@ def ignore(inp, notice=None, bot=None, config=None): target = inp.lower() ignorelist = bot.config["plugins"]["ignore"]["ignored"] if target in ignorelist: - notice("%s is already ignored." % target) + notice("{} is already ignored.".format(target)) else: - notice("%s has been ignored." % target) + notice("{} has been ignored.".format(target)) ignorelist.append(target) ignorelist.sort() json.dump(bot.config, open('config', 'w'), sort_keys=True, indent=2) @@ -62,10 +62,10 @@ def unignore(inp, notice=None, bot=None, config=None): target = inp.lower() ignorelist = bot.config["plugins"]["ignore"]["ignored"] if target in ignorelist: - notice("%s has been unignored." % target) + notice("{} has been unignored.".format(target)) ignorelist.remove(target) ignorelist.sort() json.dump(bot.config, open('config', 'w'), sort_keys=True, indent=2) else: - notice("%s is not ignored." % target) + notice("{} is not ignored.".format(target)) return diff --git a/plugins/imdb.py b/plugins/imdb.py index e44bd2c..f7a0223 100755 --- a/plugins/imdb.py +++ b/plugins/imdb.py @@ -21,7 +21,7 @@ def imdb(inp): if content.get('Error', None) == 'Movie not found!': return 'Movie not found!' elif content['Response'] == 'True': - content['URL'] = 'http://www.imdb.com/title/%(imdbID)s' % content + content['URL'] = 'http://www.imdb.com/title/{}'.format(content['imdbID']) out = '\x02%(Title)s\x02 (%(Year)s) (%(Genre)s): %(Plot)s' if content['Runtime'] != 'N/A': From 0aa2185edeae2129e3297fcaafcd5d72696e68e2 Mon Sep 17 00:00:00 2001 From: Fletcher Boyd Date: Thu, 5 Sep 2013 10:11:18 +0800 Subject: [PATCH 4/6] more .format. --- plugins/lastfm.py | 12 ++++++------ plugins/lmgtfy.py | 2 +- plugins/lyrics.py | 10 +++++----- plugins/metacritic.py | 9 ++++----- plugins/minecraft_bukkit.py | 20 +++++++------------- plugins/minecraft_items.py | 8 ++++---- plugins/minecraft_wiki.py | 2 +- plugins/mlia.py | 4 ++-- plugins/namegen.py | 2 +- plugins/ping.py | 2 +- plugins/potato.py | 4 ++-- plugins/puush.py | 2 +- plugins/quote.py | 9 ++++----- plugins/reddit.py | 2 +- plugins/snopes.py | 2 +- 15 files changed, 41 insertions(+), 49 deletions(-) diff --git a/plugins/lastfm.py b/plugins/lastfm.py index 5436409..4f56ee3 100755 --- a/plugins/lastfm.py +++ b/plugins/lastfm.py @@ -34,10 +34,10 @@ def lastfm(inp, nick='', db=None, bot=None, notice=None): api_key=api_key, user=user, limit=1) if 'error' in response: - return "Error: %s." % response["message"] + return "Error: {}.".format(response["message"]) if not "track" in response["recenttracks"] or len(response["recenttracks"]["track"]) == 0: - return 'No recent tracks for user "%s" found.' % user + return 'No recent tracks for user "{}" found.'.format(user) tracks = response["recenttracks"]["track"] @@ -55,7 +55,7 @@ def lastfm(inp, nick='', db=None, bot=None, notice=None): # lets see how long ago they listened to it time_listened = datetime.fromtimestamp(int(track["date"]["uts"])) time_since = timesince.timesince(time_listened) - ending = ' (%s ago)' % time_since + ending = ' ({} ago)'.format(time_since) else: return "error: could not parse track listing" @@ -64,11 +64,11 @@ def lastfm(inp, nick='', db=None, bot=None, notice=None): album = track["album"]["#text"] artist = track["artist"]["#text"] - out = '%s %s "%s"' % (user, status, title) + out = '{} {} "{}"'.format(user, status, title) if artist: - out += " by \x02%s\x0f" % artist + out += " by \x02{}\x0f".format(artist) if album: - out += " from the album \x02%s\x0f" % album + out += " from the album \x02{}\x0f".format(album) # append ending based on what type it was out += ending diff --git a/plugins/lmgtfy.py b/plugins/lmgtfy.py index 5d10823..c8dcee3 100644 --- a/plugins/lmgtfy.py +++ b/plugins/lmgtfy.py @@ -6,7 +6,7 @@ from util import hook, web, http def lmgtfy(inp): """lmgtfy [phrase] - Posts a google link for the specified phrase""" - link = "http://lmgtfy.com/?q=%s" % http.quote_plus(inp) + link = "http://lmgtfy.com/?q={}".format(http.quote_plus(inp)) try: return web.isgd(link) diff --git a/plugins/lyrics.py b/plugins/lyrics.py index 1456c36..72a8351 100644 --- a/plugins/lyrics.py +++ b/plugins/lyrics.py @@ -29,7 +29,7 @@ def lyrics(inp): lyrics = newsoup.find('div', {'style': 'margin-left:10px;margin-right:10px;'}).text.strip() pasteurl = " " + web.haste(lyrics) except Exception as e: - pasteurl = " (\x02Unable to paste lyrics\x02 [%s])" % str(e) + pasteurl = " (\x02Unable to paste lyrics\x02 [{}])".format(str(e)) else: pasteurl = "" artist = div.find('b').text.title() @@ -39,10 +39,10 @@ def lyrics(inp): spurl = "" lyricsum = div.find('div').text if "\r\n" in lyricsum.strip(): - lyricsum = " / ".join(lyricsum.strip().split("\r\n")[0:4]) # truncate, format + lyricsum = " / ".join(lyricsum.strip().split("\r\n")[0:4]) # truncate, format else: - lyricsum = " / ".join(lyricsum.strip().split("\n")[0:4]) # truncate, format - return "\x02%s\x02 by \x02%s\x02 %s%s%s - %s" % ( - title, artist, web.try_isgd(link), spurl, pasteurl, lyricsum[:-3]) + lyricsum = " / ".join(lyricsum.strip().split("\n")[0:4]) # truncate, format + return "\x02{}\x02 by \x02{}\x02 {}{}{} - {}".format(title, artist, web.try_isgd(link), spurl, pasteurl, + lyricsum[:-3]) else: return "No song results. " + url + inp.replace(" ", "+") diff --git a/plugins/metacritic.py b/plugins/metacritic.py index 5679529..0168230 100755 --- a/plugins/metacritic.py +++ b/plugins/metacritic.py @@ -36,7 +36,7 @@ def metacritic(inp): title_safe = http.quote_plus(title) - url = 'http://www.metacritic.com/search/%s/%s/results' % (cat, title_safe) + url = 'http://www.metacritic.com/search/{}/{}/results'.format(cat, title_safe) try: doc = http.get_html(url) @@ -132,7 +132,6 @@ def metacritic(inp): except IndexError: score = None - return '[%s] %s - \x02%s/100\x02, %s - %s' % (plat.upper(), name, - score or 'no score', - 'release: \x02%s\x02' % release if release else 'unreleased', - link) + return '[{}] {} - \x02{}/100\x02, {} - {}'.format(plat.upper(), name, score or 'no score', + 'release: \x02%s\x02' % release if release else 'unreleased', + link) diff --git a/plugins/minecraft_bukkit.py b/plugins/minecraft_bukkit.py index 9bc8201..ad1a38c 100644 --- a/plugins/minecraft_bukkit.py +++ b/plugins/minecraft_bukkit.py @@ -27,13 +27,10 @@ def randombukkitplugin(inp, reply=None): bukkitver = ", ".join(data['versions'][0]['game_versions']) link = web.isgd(data['versions'][0]['link']) if description != "": - reply("\x02%s\x02, by \x02%s\x02 - %s - (%s) \x02%s" - % (name, authors, description, stage, url)) + reply("\x02{}\x02, by \x02{}\x02 - {} - ({}) \x02{}".format(name, authors, description, stage, url)) else: - reply("\x02%s\x02, by \x02%s\x02 (%s) \x02%s" - % (name, authors, stage, url)) - reply("Last release: \x02v%s\x02 for \x02%s\x02 at %s \x02%s\x02" - % (lastVersion, bukkitver, lastUpdate, link)) + reply("\x02{}\x02, by \x02{}\x02 ({}) \x02{}".format(name, authors, stage, url)) + reply("Last release: \x02v{}\x02 for \x02{}\x02 at {} \x02{}\x02".format(lastVersion, bukkitver, lastUpdate, link)) @hook.command('bplugin') @@ -57,13 +54,10 @@ def bukkitplugin(inp, reply=None): bukkitver = ", ".join(data['versions'][0]['game_versions']) link = web.isgd(data['versions'][0]['link']) if description != "": - reply("\x02%s\x02, by \x02%s\x02 - %s - (%s) \x02%s" - % (name, authors, description, stage, url)) + reply("\x02{}\x02, by \x02{}\x02 - {} - ({}) \x02{}".format(name, authors, description, stage, url)) else: - reply("\x02%s\x02, by \x02%s\x02 (%s) \x02%s" - % (name, authors, stage, url)) - reply("Last release: \x02v%s\x02 for \x02%s\x02 at %s \x02%s\x02" - % (lastVersion, bukkitver, lastUpdate, link)) + reply("\x02{}\x02, by \x02{}\x02 ({}) \x02{}".format(name, authors, stage, url)) + reply("Last release: \x02v{}\x02 for \x02{}\x02 at {} \x02{}\x02".format(lastVersion, bukkitver, lastUpdate, link)) def getplugininfo(inp): @@ -75,5 +69,5 @@ def getplugininfo(inp): data = http.get_json("http://api.bukget.org/3/plugins/bukkit/%s/" % slug) except HTTPError as e: - return "Got error: %s" % e + return "Got error: {}".format(e) return data diff --git a/plugins/minecraft_items.py b/plugins/minecraft_items.py index ac64e05..97a6420 100755 --- a/plugins/minecraft_items.py +++ b/plugins/minecraft_items.py @@ -61,16 +61,16 @@ def mcitem(input, reply=None): for id, name in ids: if input == id: - results = ["\x02[%s]\x02 %s" % (id, name)] + results = ["\x02[{}]\x02 {}".format(id, name)] break elif input in name.lower(): - results.append("\x02[%s]\x02 %s" % (id, name)) + results.append("\x02[{}]\x02 {}".format(id, name)) if not results: return "No matches found." if len(results) > 12: - reply("There are too many options, please narrow your search. (%s)" % len(results)) + reply("There are too many options, please narrow your search. ({})".format(str(len(results)))) return out = ", ".join(results) @@ -91,7 +91,7 @@ def mcrecipe(input, reply=None): return "No matches found." if len(results) > 3: - reply("There are too many options, please narrow your search. (%s)" % len(results)) + reply("There are too many options, please narrow your search. ({})".format(len(results))) return for result in results: diff --git a/plugins/minecraft_wiki.py b/plugins/minecraft_wiki.py index a2b4cf3..210c3f4 100755 --- a/plugins/minecraft_wiki.py +++ b/plugins/minecraft_wiki.py @@ -24,6 +24,6 @@ def mcwiki(inp): summary = " ".join(p.text_content().splitlines()) summary = re.sub("\[\d+\]", "", summary) summary = text.truncate_str(summary, 200) - return "%s :: %s" % (summary, url) + return "{} :: {}".format(summary, url) return "Unknown Error." diff --git a/plugins/mlia.py b/plugins/mlia.py index ad3de91..c155a3e 100644 --- a/plugins/mlia.py +++ b/plugins/mlia.py @@ -9,7 +9,7 @@ mlia_cache = [] def refresh_cache(): """gets a page of random MLIAs and puts them into a dictionary """ - url = 'http://mylifeisaverage.com/%s' % random.randint(1, 11000) + url = 'http://mylifeisaverage.com/{}'.format(random.randint(1, 11000)) soup = http.get_soup(url) for story in soup.find_all('div', {'class': 'story '}): @@ -27,7 +27,7 @@ def mlia(inp, reply=None): # grab the last item in the mlia cache and remove it id, text = mlia_cache.pop() # reply with the mlia we grabbed - reply('(%s) %s' % (id, text)) + reply('({}) {}'.format(id, text)) # refresh mlia cache if its getting empty if len(mlia_cache) < 3: refresh_cache() diff --git a/plugins/namegen.py b/plugins/namegen.py index a761924..6e081c0 100755 --- a/plugins/namegen.py +++ b/plugins/namegen.py @@ -36,7 +36,7 @@ class NameGenerator(object): for name_part in name_parts: part = random.choice(self.parts[name_part]) - name = name.replace("{%s}" % name_part, part) + name = name.replace("{{}}".format(name_part), part) return name diff --git a/plugins/ping.py b/plugins/ping.py index 549906b..746ea05 100755 --- a/plugins/ping.py +++ b/plugins/ping.py @@ -31,7 +31,7 @@ def ping(inp, reply=None): # I assume it's no longer needed with the way we run the process # host = re.sub(r'([^\s\w\.])+', '', host) - reply("Attempting to ping %s %s times..." % (host, count)) + reply("Attempting to ping {} {} times...".format(host, count)) pingcmd = subprocess.check_output(["ping", "-c", count, host]) if "request timed out" in pingcmd or "unknown host" in pingcmd: diff --git a/plugins/potato.py b/plugins/potato.py index 1fd4b1e..8d03e2b 100755 --- a/plugins/potato.py +++ b/plugins/potato.py @@ -50,5 +50,5 @@ def potato(inp, me=None, input=None): method = random.choice(['bakes', 'fries', 'boils', 'roasts']) side_dish = random.choice(['side salad', 'dollop of sour cream', 'piece of chicken', 'bowl of shredded bacon']) - me("%s a %s %s %s potato for %s and serves it with a small %s!" % ( - method, flavor, size, potato_type, inp, side_dish)) + me("{} a {} {} {} potato for {} and serves it with a small {}!".format(method, flavor, size, potato_type, inp, + side_dish)) diff --git a/plugins/puush.py b/plugins/puush.py index fdf8953..07b1e5c 100644 --- a/plugins/puush.py +++ b/plugins/puush.py @@ -20,7 +20,7 @@ def check_url(code): def make_url(code): - return "http://puu.sh/" + code + return "http://puu.sh/{}".format(code) @hook.command(autohelp=False) diff --git a/plugins/quote.py b/plugins/quote.py index 3d8ad9d..25c614d 100755 --- a/plugins/quote.py +++ b/plugins/quote.py @@ -8,8 +8,8 @@ from util import hook def format_quote(q, num, n_quotes): """Returns a formatted string of a quote""" ctime, nick, msg = q - return "[%d/%d] <%s> %s" % (num, n_quotes, - nick, msg) + return "[{}/{}] <{}> {}".format((num, n_quotes, + nick, msg)) def create_table_if_not_exists(db): @@ -45,12 +45,11 @@ def get_quote_num(num, count, name): if num: # Make sure num is a number if it isn't false num = int(num) if count == 0: # Error on no quotes - raise Exception("No quotes found for %s." % name) + raise Exception("No quotes found for {}.".format(name)) if num and num < 0: # Count back if possible num = count + num + 1 if num + count > -1 else count + 1 if num and num > count: # If there are not enough quotes, raise an error - raise Exception("I only have %d quote%s for %s." - % (count, ('s', '')[count == 1], name)) + raise Exception("I only have {} quote{} for {}.".format(count, ('s', '')[count == 1], name)) if num and num == 0: # If the number is zero, set it to one num = 1 if not num: # If a number is not given, select a random one diff --git a/plugins/reddit.py b/plugins/reddit.py index 609c352..96f96b5 100644 --- a/plugins/reddit.py +++ b/plugins/reddit.py @@ -15,5 +15,5 @@ def reddit_url(match): timeago = thread.xpath("//div[@id='siteTable']//p[@class='tagline']/time/text()")[0] comments = thread.xpath("//div[@id='siteTable']//a[@class='comments']/text()")[0] - return '\x02%s\x02 - posted by \x02%s\x02 %s ago - %s upvotes, %s downvotes - %s' % ( + return '\x02{}\x02 - posted by \x02{}\x02 {} ago - {} upvotes, {} downvotes - {}'.format( title, author, timeago, upvotes, downvotes, comments) diff --git a/plugins/snopes.py b/plugins/snopes.py index bc32f18..9850a68 100755 --- a/plugins/snopes.py +++ b/plugins/snopes.py @@ -31,4 +31,4 @@ def snopes(inp): claim = re.sub(r"[\s\xa0]+", " ", claim) # compress whitespace status = re.sub(r"[\s\xa0]+", " ", status) - return "%s %s %s" % (claim, status, result_urls[0]) + return "{} {} {}".format(claim, status, result_urls[0]) From 015dd93df34db4a8a5cc3ca20d794dfcdb18e6de Mon Sep 17 00:00:00 2001 From: Fletcher Boyd Date: Thu, 5 Sep 2013 10:36:25 +0800 Subject: [PATCH 5/6] last round of .format conversion for string formatting. --- plugins/steam.py | 8 ++++---- plugins/stock.py | 2 +- plugins/system.py | 18 +++++++++--------- plugins/tell.py | 8 ++++---- plugins/time.py | 6 +++--- plugins/todo.py | 14 +++++++------- plugins/tvdb.py | 24 ++++++++++++------------ plugins/validate.py | 4 ++-- plugins/valvesounds.py | 2 +- plugins/wikipedia.py | 2 +- plugins/wolframalpha.py | 2 +- 11 files changed, 45 insertions(+), 45 deletions(-) diff --git a/plugins/steam.py b/plugins/steam.py index b4230c6..140e780 100644 --- a/plugins/steam.py +++ b/plugins/steam.py @@ -63,8 +63,8 @@ def steamcalc(inp, nick='', db=None): out += soup.findAll('h1', {'class': 'header-title'})[1].text.strip() except Exception as e: print e - return u"\x02Unable to retrieve info for %s!\x02 Is it a valid SteamCommunity profile username (%s)? " \ - "Check if your profile is private, or go here to search: %s" % ( + return u"\x02Unable to retrieve info for {}!\x02 Is it a valid SteamCommunity profile username ({})? " \ + "Check if your profile is private, or go here to search: {}".format( inp, web.try_isgd("http://steamcommunity.com/id/%s" % inp), web.try_isgd(url)) nextone = False @@ -96,8 +96,8 @@ def steamcalc(inp, nick='', db=None): notplayed = data[2].text.split(" ")[-1] nppercent = data[3].text.split(" ")[-1] time = data[4].text.split(" ")[-1].replace("h", "hours") - out += " This account is worth \x02%s\x02, and they've spent \x02%s\x02 playing games! " % (money, time) - out += " They have \x02%s games\x02, but \x02%s of them haven't been touched\x02! That's \x02%s\x02! " % ( + out += " This account is worth \x02{}\x02, and they've spent \x02{}\x02 playing games! ".format(money, time) + out += " They have \x02{} games\x02, but \x02{} of them haven't been touched\x02! That's \x02{}\x02! ".format( totalgames, notplayed, nppercent) if not dontsave: diff --git a/plugins/stock.py b/plugins/stock.py index 234ac2d..d2d40c5 100755 --- a/plugins/stock.py +++ b/plugins/stock.py @@ -27,7 +27,7 @@ def stock(inp): guess = guess[0]["symbol"] return stock(guess) else: - return "error: unable to get stock info for '%s'" % inp + return "error: unable to get stock info for '{}'".format(inp) if results['last'] == '0.00': return "%(company)s - last known stock value was 0.00 %(currency)s" \ diff --git a/plugins/system.py b/plugins/system.py index 40a60f1..e8489d1 100755 --- a/plugins/system.py +++ b/plugins/system.py @@ -24,9 +24,9 @@ def system(inp): python_ver = platform.python_version() architecture = '-'.join(platform.architecture()) cpu = platform.machine() - return "Hostname: \x02%s\x02, Operating System: \x02%s\x02, Python " \ - "Version: \x02%s %s\x02, Architecture: \x02%s\x02, CPU: \x02%s" \ - "\x02" % (hostname, os, python_imp, python_ver, architecture, cpu) + return "Hostname: \x02{}\x02, Operating System: \x02{}\x02, Python " \ + "Version: \x02{} {}\x02, Architecture: \x02{}\x02, CPU: \x02{}" \ + "\x02".format(hostname, os, python_imp, python_ver, architecture, cpu) @hook.command(autohelp=False) @@ -41,9 +41,9 @@ def memory(inp): data = [float(i.replace(' kB', '')) for i in data] strings = [convert_kilobytes(i) for i in data] # prepare the output - out = "Threads: \x02%s\x02, Real Memory: \x02%s\x02, Allocated Memory: \x02%s\x02, Peak " \ - "Allocated Memory: \x02%s\x02, Stack Size: \x02%s\x02, Heap " \ - "Size: \x02%s\x02" % (s['Threads'], strings[0], strings[1], strings[2], + out = "Threads: \x02{}\x02, Real Memory: \x02{}\x02, Allocated Memory: \x02{}\x02, Peak " \ + "Allocated Memory: \x02{}\x02, Stack Size: \x02{}\x02, Heap " \ + "Size: \x02{}\x02".format(s['Threads'], strings[0], strings[1], strings[2], strings[3], strings[4]) # return output return out @@ -55,7 +55,7 @@ def memory(inp): for amount in re.findall(r'([,0-9]+) K', out): memory += float(amount.replace(',', '')) memory = convert_kilobytes(memory) - return "Memory Usage: \x02%s\x02" % memory + return "Memory Usage: \x02{}\x02".format(memory) else: return "Sorry, this command is not supported on your OS." @@ -66,10 +66,10 @@ def uptime(inp, bot=None): """uptime -- Shows the bot's uptime.""" uptime_raw = round(time.time() - bot.start_time) uptime = timedelta(seconds=uptime_raw) - return "Uptime: \x02%s\x02" % uptime + return "Uptime: \x02{}\x02".format(uptime) @hook.command(autohelp=False) def pid(inp): """pid -- Prints the bot's PID.""" - return "PID: \x02%s\x02" % os.getpid() + return "PID: \x02{}\x02".format(os.getpid()) diff --git a/plugins/tell.py b/plugins/tell.py index 9bcc7b0..bf0d887 100755 --- a/plugins/tell.py +++ b/plugins/tell.py @@ -37,10 +37,10 @@ def tellinput(paraml, input=None, notice=None, db=None, bot=None, nick=None, con user_from, message, time, chan = tells[0] reltime = timesince.timesince(time) - reply = "%s sent you a message %s ago from %s: %s" % (user_from, reltime, chan, + reply = "{} sent you a message {} ago from {}: {}".format(user_from, reltime, chan, message) if len(tells) > 1: - reply += " (+%d more, %sshowtells to view)" % (len(tells) - 1, conn.conf["command_prefix"]) + reply += " (+{} more, {}showtells to view)".format(len(tells) - 1, conn.conf["command_prefix"]) db.execute("delete from tell where user_to=lower(?) and message=?", (nick, message)) @@ -63,7 +63,7 @@ def showtells(inp, nick='', chan='', notice=None, db=None): for tell in tells: user_from, message, time, chan = tell past = timesince.timesince(time) - notice("%s sent you a message %s ago from %s: %s" % (user_from, past, chan, message)) + notice("{} sent you a message {} ago from {}: {}".format(user_from, past, chan, message)) db.execute("delete from tell where user_to=lower(?)", (nick,)) @@ -92,7 +92,7 @@ def tell(inp, nick='', chan='', db=None, input=None, notice=None): if user_to.lower() == input.conn.nick.lower(): # user is looking for us, being a smartass - notice("Thanks for the message, %s!" % user_from) + notice("Thanks for the message, {}!".format(user_from)) return if not re.match("^[A-Za-z0-9_|.-\]\[]*$", user_to.lower()): diff --git a/plugins/time.py b/plugins/time.py index b8a18cb..b508522 100755 --- a/plugins/time.py +++ b/plugins/time.py @@ -9,7 +9,7 @@ api_url = 'http://api.wolframalpha.com/v2/query?format=plaintext' def time_command(inp, bot=None): """time -- Gets the time in """ - query = "current time in %s" % inp + query = "current time in {}".format(inp) api_key = bot.config.get("api_keys", {}).get("wolframalpha", None) if not api_key: @@ -27,9 +27,9 @@ def time_command(inp, bot=None): place = capitalize_first(" ".join(request.xpath("//pod[@" "title='Input interpretation']/subpod/plaintext/text()"))[ 16:]) - return "%s - \x02%s\x02" % (time, place) + return "{} - \x02{}\x02".format(time, place) else: - return "Could not get the time for '%s'." % inp + return "Could not get the time for '{}'.".format(inp) @hook.command(autohelp=False) diff --git a/plugins/todo.py b/plugins/todo.py index 65c4fce..d18177d 100755 --- a/plugins/todo.py +++ b/plugins/todo.py @@ -130,7 +130,7 @@ def todo(inp, nick='', chan='', db=None, notice=None, bot=None): if not row: notice("No such entry.") return - notice("[%d]: %s: %s" % (index, row[0], row[1])) + notice("[{}]: {}: {}".format(index, row[0], row[1])) elif cmd == 'del' or cmd == 'delete' or cmd == 'remove': if not len(args): return "error" @@ -146,7 +146,7 @@ def todo(inp, nick='', chan='', db=None, notice=None, bot=None): rows = db_del(db, nick, index) - notice("Deleted %d entries" % rows.rowcount) + notice("Deleted {} entries".format(rows.rowcount)) elif cmd == 'list': limit = -1 @@ -163,11 +163,11 @@ def todo(inp, nick='', chan='', db=None, notice=None, bot=None): found = False for (index, row) in enumerate(rows): - notice("[%d]: %s: %s" % (index, row[0], row[1])) + notice("[{}]: {}: {}".format(index, row[0], row[1])) found = True if not found: - notice("%s has no entries." % nick) + notice("{} has no entries.".format(nick)) elif cmd == 'search': if not len(args): notice("No search query given!") @@ -178,11 +178,11 @@ def todo(inp, nick='', chan='', db=None, notice=None, bot=None): found = False for (index, row) in enumerate(rows): - notice("[%d]: %s: %s" % (index, row[0], row[1])) + notice("[{}]: {}: {}".format(index, row[0], row[1])) found = True if not found: - notice("%s has no matching entries for: %s" % (nick, query)) + notice("{} has no matching entries for: {}".format(nick, query)) else: - notice("Unknown command: %s" % cmd) + notice("Unknown command: {}".format(cmd)) diff --git a/plugins/tvdb.py b/plugins/tvdb.py index 18f02eb..22a5cd7 100755 --- a/plugins/tvdb.py +++ b/plugins/tvdb.py @@ -76,9 +76,9 @@ def get_episode_info(episode, api_key): if episode_name == "TBA": episode_name = None - episode_desc = '%s' % episode_num + episode_desc = '{}'.format(episode_num) if episode_name: - episode_desc += ' - %s' % episode_name + episode_desc += ' - {}'.format(episode_name) return first_aired, airdate, episode_desc @@ -100,7 +100,7 @@ def tv_next(inp, bot=None): episodes = episodes["episodes"] if ended: - return "%s has ended." % series_name + return "{} has ended.".format(series_name) next_eps = [] today = datetime.date.today() @@ -114,22 +114,22 @@ def tv_next(inp, bot=None): (first_aired, airdate, episode_desc) = ep_info if airdate > today: - next_eps = ['%s (%s)' % (first_aired, episode_desc)] + next_eps = ['{} ({})'.format(first_aired, episode_desc)] elif airdate == today: - next_eps = ['Today (%s)' % episode_desc] + next_eps + next_eps = ['Today ({})'.format(episode_desc)] + next_eps else: #we're iterating in reverse order with newest episodes last #so, as soon as we're past today, break out of loop break if not next_eps: - return "There are no new episodes scheduled for %s." % series_name + return "There are no new episodes scheduled for {}.".format(series_name) if len(next_eps) == 1: - return "The next episode of %s airs %s" % (series_name, next_eps[0]) + return "The next episode of {} airs {}".format(series_name, next_eps[0]) else: next_eps = ', '.join(next_eps) - return "The next episodes of %s: %s" % (series_name, next_eps) + return "The next episodes of {}: {}".format(series_name, next_eps) @hook.command @@ -163,11 +163,11 @@ def tv_last(inp, bot=None): if airdate < today: #iterating in reverse order, so the first episode encountered #before today was the most recently aired - prev_ep = '%s (%s)' % (first_aired, episode_desc) + prev_ep = '{} ({})'.format(first_aired, episode_desc) break if not prev_ep: - return "There are no previously aired episodes for %s." % series_name + return "There are no previously aired episodes for {}.".format(series_name) if ended: - return '%s ended. The last episode aired %s.' % (series_name, prev_ep) - return "The last episode of %s aired %s." % (series_name, prev_ep) + return '{} ended. The last episode aired {}.'.format(series_name, prev_ep) + return "The last episode of {} aired {}.".format(series_name, prev_ep) diff --git a/plugins/validate.py b/plugins/validate.py index f0de8c1..56a04fc 100755 --- a/plugins/validate.py +++ b/plugins/validate.py @@ -22,5 +22,5 @@ def validate(inp): if status in ("valid", "invalid"): errorcount = info['x-w3c-validator-errors'] warningcount = info['x-w3c-validator-warnings'] - return "%s was found to be %s with %s errors and %s warnings." \ - " see: %s" % (inp, status, errorcount, warningcount, url) + return "{} was found to be {} with {} errors and {} warnings." \ + " see: {}".format(inp, status, errorcount, warningcount, url) diff --git a/plugins/valvesounds.py b/plugins/valvesounds.py index 2b88312..54d8a6c 100644 --- a/plugins/valvesounds.py +++ b/plugins/valvesounds.py @@ -37,7 +37,7 @@ def getSoundInfo(url, inp, jsondata=False): else: text = textsplit[i] if not jsondata: - return "%s - %s %s" % (newdata[0]["who"], + return "{} - {} {}".format(newdata[0]["who"], text if len(text) < 325 else text[:325] + "...", web.try_isgd( url + newdata[0]["id"] if not dostream else url + "sound.php?id=" + newdata[0][ diff --git a/plugins/wikipedia.py b/plugins/wikipedia.py index 043a708..58984cc 100755 --- a/plugins/wikipedia.py +++ b/plugins/wikipedia.py @@ -46,4 +46,4 @@ def wiki(inp): desc = text.truncate_str(desc, 200) - return '%s :: %s' % (desc, http.quote(url, ':/')) + return '{} :: {}'.format(desc, http.quote(url, ':/')) diff --git a/plugins/wolframalpha.py b/plugins/wolframalpha.py index d4578f5..879b771 100755 --- a/plugins/wolframalpha.py +++ b/plugins/wolframalpha.py @@ -54,4 +54,4 @@ def wolframalpha(inp, bot=None): if not ret: return 'No results.' - return "%s - %s" % (ret, short_url) + return "{} - {}".format(ret, short_url) From 1ce777a5e469637db190935c5405cbed23064cd8 Mon Sep 17 00:00:00 2001 From: Fletcher Boyd Date: Thu, 5 Sep 2013 10:41:44 +0800 Subject: [PATCH 6/6] Core format string changes. --- core/irc.py | 4 ++-- core/main.py | 8 ++++---- core/reload.py | 13 ++++++------- 3 files changed, 12 insertions(+), 13 deletions(-) diff --git a/core/irc.py b/core/irc.py index 006c020..e075d4b 100755 --- a/core/irc.py +++ b/core/irc.py @@ -22,7 +22,7 @@ def censor(text): if 'censored_strings' in bot.config: if bot.config['censored_strings']: words = map(re.escape, bot.config['censored_strings']) - regex = re.compile('(%s)' % "|".join(words)) + regex = re.compile('({})'.format("|".join(words))) text = regex.sub(replacement, text) return text @@ -194,7 +194,7 @@ class IRC(object): def join(self, channel): """ makes the bot join a channel """ - self.send("JOIN %s" % channel) + self.send("JOIN {}".format(channel)) if channel not in self.channels: self.channels.append(channel) diff --git a/core/main.py b/core/main.py index 661adf5..9135775 100755 --- a/core/main.py +++ b/core/main.py @@ -26,7 +26,7 @@ class Input(dict): conn.msg(chan, '(' + nick + ') ' + msg) def me(msg, chan=chan): - conn.msg(chan, "\x01%s %s\x01" % ("ACTION", msg)) + conn.msg(chan, "\x01{} {}\x01".format("ACTION", msg)) def notice(msg, nick=nick): conn.cmd('NOTICE', [nick, msg]) @@ -154,9 +154,9 @@ def main(conn, out): if inp.command == 'PRIVMSG': # COMMANDS if inp.chan == inp.nick: # private message, no command prefix - prefix = '^(?:[%s]?|' % command_prefix + prefix = '^(?:[{}]?|'.format(command_prefix) else: - prefix = '^(?:[%s]|' % command_prefix + prefix = '^(?:[%s]|'.format(command_prefix) command_re = prefix + inp.conn.nick command_re += r'[,;:]+\s+)(\w+)(?:$|\s+)(.*)' @@ -169,7 +169,7 @@ def main(conn, out): if isinstance(command, list): # multiple potential matches input = Input(conn, *out) - input.notice("Did you mean %s or %s?" % + input.notice("Did you mean {} or {}?".format (', '.join(command[:-1]), command[-1])) elif command in bot.commands: input = Input(conn, *out) diff --git a/core/reload.py b/core/reload.py index 2a8c216..656c6cd 100755 --- a/core/reload.py +++ b/core/reload.py @@ -18,7 +18,7 @@ def make_signature(f): def format_plug(plug, kind='', lpad=0): - out = ' ' * lpad + '%s:%s:%s' % make_signature(plug[0]) + out = ' ' * lpad + '{}:{}:{}'.format(make_signature(plug[0])) if kind == 'command': out += ' ' * (50 - len(out)) + plug[1]['name'] @@ -118,13 +118,12 @@ def reload(init=False): for plug in bot.plugs['command']: name = plug[1]['name'].lower() if not re.match(r'^\w+$', name): - print '### ERROR: invalid command name "%s" (%s)' % (name, - format_plug(plug)) + print '### ERROR: invalid command name "{}" ({})'.format(name, format_plug(plug)) continue if name in bot.commands: - print "### ERROR: command '%s' already registered (%s, %s)" % \ - (name, format_plug(bot.commands[name]), - format_plug(plug)) + print "### ERROR: command '{}' already registered ({}, {})".format(name, + format_plug(bot.commands[name]), + format_plug(plug)) continue bot.commands[name] = plug @@ -155,7 +154,7 @@ def reload(init=False): for kind, plugs in sorted(bot.plugs.iteritems()): if kind == 'command': continue - print ' %s:' % kind + print ' {}:'.format(kind) for plug in plugs: print format_plug(plug, kind=kind, lpad=6) print