Hi, I am looking at possibilities for speeding up overrides loading (i.e. how to make it avoid loading *all* the stuff for overriden classes during startup, could be done lazily?) but I'm a bit stuck in trying to understand DynamicModule's getattr implementation.
def __getattr__(self, name): if self._overrides_module is not None: override_exports = getattr(self._overrides_module, '__all__', ()) if name in override_exports: return getattr(self._overrides_module, name, None) else: # check the registry just in case the module hasn't loaded yet # TODO: Only gtypes are registered in the registry right now # but it would be nice to register all overrides and # get rid of the module imports. We might actually see a # speedup. key = '%s.%s' % (self._namespace, name) if key in registry: return registry[key] Taking the Gtk.Widget override as an example. The class is registered at gi.overrides.Gtk.Widget so the first override_exports check will find it. In fact, I cannot see any case in which the overriden item would *not* be found with that check. So is the registry pointless? I would vote for removing the registry, but that comment is interesting since it mentions "speedup". I don't understand the comment though. It says "in case the module hasn't loaded" - is it referring to the override module here? Under what circumstances could that be true if the override module is the thing that places items in the registry? Is there still scope for a speedup here? Thanks Daniel _______________________________________________ python-hackers-list mailing list python-hackers-list@gnome.org https://mail.gnome.org/mailman/listinfo/python-hackers-list