[13:54] <+ElementalAlchemist> Anyway [13:54] <+ElementalAlchemist> HeufyCloud: https://github.com/ElementalAlchemist/txircd/blob/dev/0.3/txircd/ircd.py#L102 [13:54] txircd/txircd/ircd.py at dev/0.3 · ElementalAlchemist/txircd · GitHub (at github.com) [13:54] <+ElementalAlchemist> Specifically those first two [13:54] * Tyranic-Moron wonders if his highlight string would work as a searchnick term [13:54] <+HeufyCloud> I noticed that [13:54] <+ElementalAlchemist> The second one looks a little roundabout but that's how it goes [13:54] <+HeufyCloud> Can you do live reloading though? [13:55] <+ElementalAlchemist> Yes. [13:55] <+HeufyCloud> I think that was our main concern [13:55] <+ElementalAlchemist> https://github.com/ElementalAlchemist/txircd/blob/dev/0.3/txircd/ircd.py#L240 [13:55] txircd/txircd/ircd.py at dev/0.3 · ElementalAlchemist/txircd · GitHub (at github.com) [13:55] <+ElementalAlchemist> If you scroll down past _loadModuleData [13:55] <+ElementalAlchemist> which is huge and specific to txircd [13:55] <+ElementalAlchemist> I guess unloadModule is also a bit specific to txircd [13:56] <+HeufyCloud> Because I thought Twisted kept all its plugins loaded [13:56] <+ElementalAlchemist> I don't think it does [13:56] <+ElementalAlchemist> I think it just gets all of them [13:56] <+HeufyCloud> Hmmm [13:56] <+HeufyCloud> That would make sense [13:56] <+ElementalAlchemist> Or if it does, when you call getPlugins it updates them [13:56] <+HeufyCloud> It's mainly so we can modify and add modules while the bot is running [13:57] <+ElementalAlchemist> But I don't think it does, so when you don't save any of the module data, the refcount drops to zero and it's basically unloaded [13:57] <+HeufyCloud> hmmm [13:57] <+HeufyCloud> ElementalAlchemist: That would make sense yes. We just have to figure out how we're gonna handle data loading then [13:58] <+ElementalAlchemist> Alright [13:59] <+HeufyCloud> We're gonna give it a go and see what happens [13:59] <+ElementalAlchemist> :) [13:59] <+HeufyCloud> If all else fails we can always go back to importlib [13:59] <+HeufyCloud> :P [13:59] <+ElementalAlchemist> :/ [13:59] <+ElementalAlchemist> I'd imagine you can get away with taking the five relevant txircd functions and pulling the txircd-specific parts out of _loadModuleData and unloadModule [14:00] <+ElementalAlchemist> Well, I guess the first requires your loaded modules to be under the "modules" key as well [14:00] <+ElementalAlchemist> in the configuration [14:01] <+HeufyCloud> I looked at _loadModuleData [14:01] <+HeufyCloud> It just loads all the modes/command/etc. into a dictionary right? [14:01] <+ElementalAlchemist> Basically, getPlugins returns a list of module objects (up to date) which you can then use to save module objects (depending on how your module API is set up) [14:01] <+HeufyCloud> Sooo [14:02] <+ElementalAlchemist> HeufyCloud: Multiple dictionaries, but otherwise yes [14:02] <+HeufyCloud> If we just remove a module from our list of loaded modules it should clean itself up? [14:02] <+HeufyCloud> As long as all references to it are gone? [14:02] <+ElementalAlchemist> Yes. [14:02] <+Mara> Sounds like a sensible thing [14:02] <+HeufyCloud> That's actually fairly easy then [14:02] <+ElementalAlchemist> Assuming twisted doesn't cache it--but if it does, then it takes up a little bit of memory, but it does nothing else [14:03] <+ElementalAlchemist> And considering getPlugins returns new stuff every time, I don't see the point to caching if it does [14:04] <+ElementalAlchemist> As I assume you realized, that's where your interface class and module package go, too :P [14:04] <+HeufyCloud> yes