Upgraded to 2.3.

This commit is contained in:
Jeremy Fincher 2003-07-31 06:20:58 +00:00
parent b7cb48b19b
commit 1cae9664a7
11 changed files with 147 additions and 122 deletions

View File

@ -31,17 +31,12 @@
"""
Allows 'aliases' for other commands.
Commands include:
alias
unalias
freeze
unfreeze
"""
from baseplugin import *
import re
import sets
import conf
import debug
@ -109,7 +104,7 @@ def makeNewAlias(name, alias):
class Alias(callbacks.Privmsg):
def __init__(self):
callbacks.Privmsg.__init__(self)
self.frozen = set()
self.frozen = sets.Set()
def freeze(self, irc, msg, args):
"""<alias>

View File

@ -43,6 +43,7 @@ Commands include:
from baseplugin import *
import re
import sets
import ircdb
import ircmsgs
@ -63,7 +64,7 @@ def subber(m):
class BadWords(callbacks.Privmsg):
def __init__(self):
callbacks.Privmsg.__init__(self)
self.badwords = set()
self.badwords = sets.Set()
def outFilter(self, irc, msg):
if hasattr(self, 'regexp') and msg.command == 'PRIVMSG':

View File

@ -121,7 +121,7 @@ class ChannelStats(callbacks.Privmsg, ChannelDBHandler):
words=words+%s,
msgs=msgs+1,
actions=actions+%s""",
smileys, frowns, chars, words, isAction)
smileys, frowns, chars, words, int(isAction))
try:
name = ircdb.users.getUserName(msg.prefix)
except KeyError:
@ -136,7 +136,7 @@ class ChannelStats(callbacks.Privmsg, ChannelDBHandler):
%s, %s, 1, %s,
0, 0, 0, 0, 0, 0 )""",
name, int(time.time()), msg.args[1],
smileys, frowns, chars, words, isAction)
smileys, frowns, chars, words, int(isAction))
else:
cursor.execute("""UPDATE user_stats SET
last_seen=%s, last_msg=%s, chars=chars+%s,
@ -145,7 +145,8 @@ class ChannelStats(callbacks.Privmsg, ChannelDBHandler):
frowns=frowns+%s
WHERE name=%s""",
int(time.time()), s,
chars, words, isAction, smileys, frowns, name)
chars, words, int(isAction),
smileys, frowns, name)
db.commit()
def doJoin(self, irc, msg):

View File

@ -36,6 +36,7 @@ Handles relaying between networks.
from baseplugin import *
import re
import sets
import time
import conf
@ -95,7 +96,7 @@ class Relay(callbacks.Privmsg):
self.started = False
self.ircstates = {}
self.lastmsg = ircmsgs.ping('this is just a fake message')
self.channels = set()
self.channels = sets.Set()
self.abbreviations = {}
def inFilter(self, irc, msg):

View File

@ -35,6 +35,7 @@ from fix import *
import os
import sys
import sets
import struct
import os.path
import cPickle as pickle
@ -273,7 +274,7 @@ class ReaderWriter(IterableMap):
self._readJournal()
self._openFiles()
self.adds = {}
self.removals = set()
self.removals = sets.Set()
def _openFiles(self):
self.cdb = Reader(self.filename)
@ -294,7 +295,7 @@ class ReaderWriter(IterableMap):
self.journal.flush()
def _readJournal(self):
removals = set()
removals = sets.Set()
adds = {}
try:
fd = file(self.journalName, 'r')
@ -395,7 +396,7 @@ class ReaderWriter(IterableMap):
has_key = __contains__
def iteritems(self):
already = set()
already = sets.Set()
for (key, value) in self.cdb.iteritems():
if key in self.removals or key in already:
continue

View File

@ -31,6 +31,7 @@
from fix import *
import sets
import os.path
###
@ -79,7 +80,7 @@ allowEval = True
# defaultCapabilities: Capabilities allowed to everyone by default. You almost
# certainly want to have !owner and !admin in here.
###
defaultCapabilities = set(['!owner', '!admin'])
defaultCapabilities = sets.Set(['!owner', '!admin'])
###
# reply%s: Stock replies for various reasons.
@ -177,7 +178,7 @@ detailedTracebacks = True
# bot will be found.
###
driverModule = 'asyncoreDrivers'
driverModule = 'twistedDrivers'
#driverModule = 'twistedDrivers'
###############################
###############################

View File

@ -49,109 +49,109 @@ def catch(f, *args, **kwargs):
except:
return None
class bool(int):
"""Just a holdover until 2.3 comes out with its wonderful new bool type."""
def __new__(cls, val=0):
# This constructor always returns an existing instance
if val:
return True
else:
return False
## class bool(int):
## """2.3 came out."""
## def __new__(cls, val=0):
## # This constructor always returns an existing instance
## if val:
## return True
## else:
## return False
def __repr__(self):
if self:
return "True"
else:
return "False"
## def __repr__(self):
## if self:
## return "True"
## else:
## return "False"
__str__ = __repr__
## __str__ = __repr__
def __and__(self, other):
if isinstance(other, bool):
return bool(int(self) & int(other))
else:
return int.__and__(self, other)
## def __and__(self, other):
## if isinstance(other, bool):
## return bool(int(self) & int(other))
## else:
## return int.__and__(self, other)
__rand__ = __and__
## __rand__ = __and__
def __or__(self, other):
if isinstance(other, bool):
return bool(int(self) | int(other))
else:
return int.__or__(self, other)
## def __or__(self, other):
## if isinstance(other, bool):
## return bool(int(self) | int(other))
## else:
## return int.__or__(self, other)
__ror__ = __or__
## __ror__ = __or__
def __xor__(self, other):
if isinstance(other, bool):
return bool(int(self) ^ int(other))
else:
return int.__xor__(self, other)
## def __xor__(self, other):
## if isinstance(other, bool):
## return bool(int(self) ^ int(other))
## else:
## return int.__xor__(self, other)
__rxor__ = __xor__
## __rxor__ = __xor__
False = int.__new__(bool, 0)
True = int.__new__(bool, 1)
## False = int.__new__(bool, 0)
## True = int.__new__(bool, 1)
class set(object):
"""Just a holdover until 2.3 comes out with its wonderful new set type."""
__slots__ = ('d',)
def __init__(self, seq=()):
self.d = {}
for x in seq:
self.d[x] = None
## class set(object):
## """2.3 came out."""
## __slots__ = ('d',)
## def __init__(self, seq=()):
## self.d = {}
## for x in seq:
## self.d[x] = None
def __contains__(self, x):
return x in self.d
## def __contains__(self, x):
## return x in self.d
def __iter__(self):
return self.d.iterkeys()
## def __iter__(self):
## return self.d.iterkeys()
def __repr__(self):
return '%s([%s])' % (self.__class__.__name__,
', '.join(map(repr, self.d.iterkeys())))
## def __repr__(self):
## return '%s([%s])' % (self.__class__.__name__,
## ', '.join(map(repr, self.d.iterkeys())))
def __nonzero__(self):
if self.d:
return True
else:
return False
def __getstate__(self):
return (self.d.keys(),)
def __setstate__(self, (L,)):
self.d = {}
for x in L:
self.d[x] = None
def __len__(self):
return len(self.d)
def add(self, x):
self.d[x] = None
def remove(self, x):
del self.d[x]
def discard(self, x):
try:
del self.d[x]
except KeyError:
pass
def __eq__(self, other):
return self.d == other.d
def __ne__(self, other):
return not self.d == other.d
## def __nonzero__(self):
## if self.d:
## return True
## else:
## return False
## def __getstate__(self):
## return self.d
## return (self.d.keys(),)
## def __setstate__(self, d):
## self.d = d
## def __setstate__(self, (L,)):
## self.d = {}
## for x in L:
## self.d[x] = None
## def __len__(self):
## return len(self.d)
## def add(self, x):
## self.d[x] = None
## def remove(self, x):
## del self.d[x]
## def discard(self, x):
## try:
## del self.d[x]
## except KeyError:
## pass
## def __eq__(self, other):
## return self.d == other.d
## def __ne__(self, other):
## return not self.d == other.d
## ## def __getstate__(self):
## ## return self.d
## ## def __setstate__(self, d):
## ## self.d = d
class IterableMap(object):
@ -227,6 +227,22 @@ def window(L, size):
for i in xrange(len(L) - (size-1)):
yield L[i:i+size]
## def group(seq, groupSize):
## L = []
## LL = []
## i = groupSize
## for elt in seq:
## if i > 0:
## LL.append(elt)
## i -= 1
## else:
## L.append(LL)
## i = groupSize
## LL = []
## if LL:
## L.append(LL)
## return L
def itersplit(iterable, isSeparator, yieldEmpty=False):
acc = []
for element in iterable:

View File

@ -32,6 +32,7 @@
from fix import *
import os
import sets
import time
import atexit
import string
@ -86,37 +87,37 @@ def normalize(s):
return s.translate(_normal)
class CapabilitySet(set):
class CapabilitySet(sets.Set):
def __init__(self, capabilities=()):
set.__init__(self)
sets.Set.__init__(self)
for capability in capabilities:
self.add(capability)
def add(self, capability):
capability = ircutils.toLower(capability)
inverted = invertCapability(capability)
if set.__contains__(self, inverted):
set.remove(self, inverted)
set.add(self, capability)
if sets.Set.__contains__(self, inverted):
sets.Set.remove(self, inverted)
sets.Set.add(self, capability)
def remove(self, capability):
capability = ircutils.toLower(capability)
set.remove(self, capability)
sets.Set.remove(self, capability)
def __contains__(self, capability):
capability = ircutils.toLower(capability)
if set.__contains__(self, capability):
if sets.Set.__contains__(self, capability):
return True
if set.__contains__(self, invertCapability(capability)):
if sets.Set.__contains__(self, invertCapability(capability)):
return True
else:
return False
def check(self, capability):
capability = ircutils.toLower(capability)
if set.__contains__(self, capability):
if sets.Set.__contains__(self, capability):
return True
elif set.__contains__(self, invertCapability(capability)):
elif sets.Set.__contains__(self, invertCapability(capability)):
return False
else:
raise KeyError, capability
@ -319,6 +320,7 @@ class UsersDictionary(object):
fd = file(filename, 'r')
s = fd.read()
fd.close()
Set = sets.Set
self.dict = eval(normalize(s))
self.cache = {} # hostmasks to nicks.
self.revcache = ircutils.IrcDict() # nicks to hostmasks.
@ -405,6 +407,7 @@ class ChannelsDictionary(object):
fd = file(filename, 'r')
s = fd.read()
fd.close()
Set = sets.Set
self.dict = eval(normalize(s))
def getChannel(self, channel):

View File

@ -33,6 +33,7 @@ from fix import *
from structures import queue, RingBuffer
import copy
import sets
import time
import atexit
@ -110,7 +111,7 @@ class IrcMsgQueue(object):
self.highpriority = queue()
self.normal = queue()
self.lowpriority = queue()
self.msgs = set()
self.msgs = sets.Set()
def enqueue(self, msg):
if msg in self.msgs:
@ -139,7 +140,7 @@ class IrcMsgQueue(object):
return msg
def __nonzero__(self):
return (self.highpriority or self.normal or self.lowpriority)
return bool(self.highpriority or self.normal or self.lowpriority)
###
@ -150,10 +151,10 @@ class Channel(object):
__slots__ = ('users', 'ops', 'halfops', 'voices', 'topic')
def __init__(self):
self.topic = ''
self.users = set()
self.ops = set()
self.halfops = set()
self.voices = set()
self.users = sets.Set()
self.ops = sets.Set()
self.halfops = sets.Set()
self.voices = sets.Set()
def addUser(self, user):
nick = user.lstrip('@%+')
@ -330,9 +331,9 @@ class Irc(object):
Handles PING commands already.
"""
_nickSetters = set(['001', '002', '003', '004', '250', '251', '252', '254',
'255', '265', '266', '372', '375', '376', '333', '353',
'332', '366'])
_nickSetters = sets.Set(['001', '002', '003', '004', '250', '251', '252',
'254', '255', '265', '266', '372', '375', '376',
'333', '353', '332', '366'])
def __init__(self, nick, user='', ident='', password='', callbacks=None):
world.ircs.append(self)
self.nick = nick

View File

@ -184,6 +184,9 @@ class queue(object):
def __len__(self):
return len(self.front) + len(self.back)
def __nonzero__(self):
return bool(self.back or self.front)
def __contains__(self, elt):
return elt in self.front or elt in self.back

View File

@ -198,7 +198,9 @@ def soundex(s, length=4):
def dqrepr(s):
"""Returns a repr() of s guaranteed to be in double quotes."""
return '"' + repr("'\x00" + s)[6:]
# The wankers-that-be decided not to use double-quotes anymore in 2.3.
# return '"' + repr("'\x00" + s)[6:]
return '"%s"' % s.encode('unicode_escape').replace('"', '\\"')
nonEscapedSlashes = re.compile(r'(?<!\\)/')
def perlReToPythonRe(s):