def command_rehash(self, user, channel, args): """Reload modules and optionally the configuration file. Usage: rehash [conf]""" if self.factory.isAdmin(user): try: # rebuild core & update log.info("rebuilding %r" % self) rebuild.updateInstance(self) # reload config file if args == 'conf': self.factory.reload_config() self.say(channel, 'Configuration reloaded.') # unload removed modules self.factory._unload_removed_modules() # reload modules self.factory._loadmodules() except Exception, e: self.say(channel, "Rehash error: %s" % e) log.error("Rehash error: %s" % e) else: self.save_words_to_file() self.say(channel, "Rehash OK") log.info("Rehash OK")
def testUpdateInstance(self): global Foo, Buz b = Buz() class Foo: def foo(self): pass class Buz(Bar, Baz): x = 10 rebuild.updateInstance(b) assert hasattr(b, 'foo'), "Missing method on rebuilt instance" assert hasattr(b, 'x'), "Missing class attribute on rebuilt instance"
def test_typeSubclass(self): """ Try to rebuild a base type subclass. """ classDefinition = ("class ListSubclass(list):\n" " pass\n") exec classDefinition in self.m.__dict__ inst = self.m.ListSubclass() inst.append(2) exec classDefinition in self.m.__dict__ rebuild.updateInstance(inst) self.assertEqual(inst[0], 2) self.assertIdentical(type(inst), self.m.ListSubclass)
def test_slots(self): """ Try to rebuild a new style class with slots defined. """ classDefinition = "class SlottedClass:\n" " __slots__ = ['a']\n" exec(classDefinition, self.m.__dict__) inst = self.m.SlottedClass() inst.a = 7 exec(classDefinition, self.m.__dict__) rebuild.updateInstance(inst) self.assertEqual(inst.a, 7) self.assertIs(type(inst), self.m.SlottedClass)
def test_typeSubclass(self): """ Try to rebuild a base type subclass. """ classDefinition = "class ListSubclass(list):\n" " pass\n" exec classDefinition in self.m.__dict__ inst = self.m.ListSubclass() inst.append(2) exec classDefinition in self.m.__dict__ rebuild.updateInstance(inst) self.assertEqual(inst[0], 2) self.assertIdentical(type(inst), self.m.ListSubclass)
def command_rehash(self, user, channel, args): """Reload modules. Usage: rehash [debug]""" try: # rebuild core & update log.info("rebuilding %r" % self) rebuild.updateInstance(self) self.factory._loadmodules() except Exception, e: self.say(channel, "Rehash error: %s" % e) log.error("Rehash error: %s" % e)
def test_slots(self): """ Try to rebuild a new style class with slots defined. """ classDefinition = "class SlottedClass(object):\n" " __slots__ = ['a']\n" exec classDefinition in self.m.__dict__ inst = self.m.SlottedClass() inst.a = 7 exec classDefinition in self.m.__dict__ rebuild.updateInstance(inst) self.assertEqual(inst.a, 7) self.assertIdentical(type(inst), self.m.SlottedClass)
def test_slots(self): """ Try to rebuild a new style class with slots defined. """ classDefinition = ("class SlottedClass(object):\n" " __slots__ = ['a']\n") exec classDefinition in self.m.__dict__ inst = self.m.SlottedClass() inst.a = 7 exec classDefinition in self.m.__dict__ rebuild.updateInstance(inst) self.assertEqual(inst.a, 7) self.assertIdentical(type(inst), self.m.SlottedClass)
def command_rehash(bot, user, channel, args): "Rehashes all available modules to reflect any changes." if permissions(user) < 20: # 0 public, 1-9 undefined, 10-19 admin, 20 root return bot.say(channel, "{}, insufficient permissions.".format( get_nick(user))) try: log.info("Rebuilding {}".format(bot)) rebuild.updateInstance(bot) bot.factory._unload_removed_modules() bot.factory._loadmodules() except Exception, e: log.error("Rehash error: {}.".format(e)) return bot.say(channel, "Rehash error: {}.".format(e))
def test_UpdateInstance(self): global Foo, Buz b = Buz() class Foo: def foo(self): """ Dummy method """ class Buz(Bar, Baz): x = 10 rebuild.updateInstance(b) assert hasattr(b, "foo"), "Missing method on rebuilt instance" assert hasattr(b, "x"), "Missing class attribute on rebuilt instance"
def command_rehash(self, user, channel, args): """Reload modules. Usage: rehash [debug]""" if self.factory.isAdmin(user): try: # rebuild core & update log.info("rebuilding %r" % self) rebuild.updateInstance(self) self.factory._loadmodules() except Exception, e: self.say(channel, "Rehash error: %s" % e) log.error("Rehash error: %s" % e) else: self.say(channel, "Rehash OK") log.info("Rehash OK")
def privcommand_rehash(self, user, channel, args): """Reload modules. Usage: rehash [debug]""" lvl = self.checkValidHostmask(user) if lvl and lvl > 4: try: # rebuild core & update log.info("rebuilding %r" % self) rebuild.updateInstance(self) self.factory._loadmodules() except Exception, e: self.say(channel, "Rehash error: %s" % e) log.error("Rehash error: " + e) else: self.say(channel, "Rehash OK") log.info("Rehash OK")
def testTypeSubclass(self): exec "class ListSubclass(list): pass" in self.m.__dict__ rebuild.updateInstance(self.m.ListSubclass())
def testSlots(self): exec "class SlottedClass(object): __slots__ = 'a'," in self.m.__dict__ rebuild.updateInstance(self.m.SlottedClass())