equal
deleted
inserted
replaced
89 if registry in ('propertydefs', 'propertyvalues', 'etypes'): |
89 if registry in ('propertydefs', 'propertyvalues', 'etypes'): |
90 continue |
90 continue |
91 for oid, objects in regcontent.items(): |
91 for oid, objects in regcontent.items(): |
92 for obj in reversed(objects[:]): |
92 for obj in reversed(objects[:]): |
93 if not obj in objects: |
93 if not obj in objects: |
94 continue # obj has been kicked by a previous one |
94 continue # obj was kicked by a previous one |
95 accepted = set(getattr(obj, 'accepts_interfaces', ())) |
95 accepted = set(getattr(obj, 'accepts_interfaces', ())) |
96 if accepted: |
96 if accepted: |
97 for accepted_iface in accepted: |
97 for accepted_iface in accepted: |
98 for found_iface in interfaces: |
98 for found_iface in interfaces: |
99 if issubclass(found_iface, accepted_iface): |
99 if issubclass(found_iface, accepted_iface): |
101 if hasattr(obj.__registerer__, 'remove_all_equivalents'): |
101 if hasattr(obj.__registerer__, 'remove_all_equivalents'): |
102 registerer = obj.__registerer__(self, obj) |
102 registerer = obj.__registerer__(self, obj) |
103 registerer.remove_all_equivalents(objects) |
103 registerer.remove_all_equivalents(objects) |
104 break |
104 break |
105 else: |
105 else: |
106 self.debug('kicking vobject %s (unsupported interface)', obj) |
106 self.debug('kicking vobject %s because interface is not supported', obj) |
107 objects.remove(obj) |
107 objects.remove(obj) |
108 # if objects is empty, remove oid from registry |
108 # if objects is empty, remove oid from registry |
109 if not objects: |
109 if not objects: |
110 del regcontent[oid] |
110 del regcontent[oid] |
111 |
111 |