# HG changeset patch # User Paul Boddie # Date 1479164460 -3600 # Node ID 7c100cf2c2568f6b40905cfe9a1615fa89386d67 # Parent c4236e61a4f682f423e480e860768e72faf83eca Merge module member and name reference details to provide complete attribute details for each module. diff -r c4236e61a4f6 -r 7c100cf2c256 deducer.py --- a/deducer.py Tue Nov 15 00:00:21 2016 +0100 +++ b/deducer.py Tue Nov 15 00:01:00 2016 +0100 @@ -1006,7 +1006,27 @@ self._init_attr_type_index(self.attr_class_types, self.importer.all_class_attrs) self._init_attr_type_index(self.attr_instance_types, self.importer.all_instance_attrs, True) self._init_attr_type_index(self.attr_instance_types, self.importer.all_combined_attrs, False) - self._init_attr_type_index(self.attr_module_types, self.importer.all_module_attrs) + + # Combine module members with name references to give the complete set + # of attributes provided by a module, even if some of them are just + # references to an object located elsewhere. + + references = {} + + for module in self.importer.modules.values(): + references[module.name] = set() + + # The names used in a module include references. + + if module.names_used.has_key(module.name): + references[module.name].update(module.names_used[module.name]) + + # The recorded module attributes concern the module members. + + if self.importer.all_module_attrs.has_key(module.name): + references[module.name].update(self.importer.all_module_attrs[module.name]) + + self._init_attr_type_index(self.attr_module_types, references) def _init_attr_type_index(self, attr_types, attrs, assignment=None):