119 # we may want to keep interface dependent objects (e.g.for i18n |
119 # we may want to keep interface dependent objects (e.g.for i18n |
120 # catalog generation) |
120 # catalog generation) |
121 if not self.config.cleanup_interface_sobjects: |
121 if not self.config.cleanup_interface_sobjects: |
122 return |
122 return |
123 # remove vobjects that don't support any available interface |
123 # remove vobjects that don't support any available interface |
124 interfaces = set() |
124 implemented_interfaces = set() |
125 for classes in self.get('etypes', {}).values(): |
125 for classes in self.get('etypes', {}).values(): |
126 for cls in classes: |
126 for cls in classes: |
127 for iface in cls.__implements__: |
127 for iface in cls.__implements__: |
128 interfaces.update(iface.__mro__) |
128 implemented_interfaces.update(iface.__mro__) |
129 interfaces.update(cls.__mro__) |
129 implemented_interfaces.update(cls.__mro__) |
130 for obj, ifaces in self._needs_iface.items(): |
130 for obj, ifaces in self._needs_iface.items(): |
131 ifaces = frozenset(isinstance(iface, basestring) |
131 ifaces = frozenset(isinstance(iface, basestring) |
132 and iface in self.schema |
132 and iface in self.schema |
133 and self.etype_class(iface) |
133 and self.etype_class(iface) |
134 or iface |
134 or iface |