diff --git a/plugins/__init__.py b/plugins/__init__.py index e15f28dce..000410004 100644 --- a/plugins/__init__.py +++ b/plugins/__init__.py @@ -38,8 +38,8 @@ import time import random import fnmatch import os.path -import UserDict import threading +import collections import supybot.log as log import supybot.dbi as dbi @@ -230,7 +230,7 @@ class DbiChannelDB(object): return _getDbAndDispatcher -class ChannelUserDictionary(UserDict.DictMixin): +class ChannelUserDictionary(collections.MutableMapping): IdDict = dict def __init__(self): self.channels = ircutils.IrcDict() @@ -246,6 +246,15 @@ class ChannelUserDictionary(UserDict.DictMixin): def __delitem__(self, (channel, id)): del self.channels[channel][id] + def __iter__(self): + for channel, ids in self.channels.items(): + for id_, value in ids.items(): + yield (channel, id_) + raise StopIteration() + + def __len__(self): + return sum([len(x) for x in self.channels]) + def iteritems(self): for (channel, ids) in self.channels.iteritems(): for (id, v) in ids.iteritems():