def _get_meta_info(self, typ_list, groups, typ_dict): distset = set() for name, lst in typ_dict.items(): dist = lst[0] modules = lst[2] distset.add(dist.project_name) ifaces = set() for g in lst[1]: ifaces.update(plugin_groups[g]) meta = { 'version': dist.version, 'ifaces': set(ifaces), } for modname in modules: fpath = find_module(modname) if fpath is not None: fanalyzer = self.tree_analyser.analyze_file(fpath, use_cache=True) meta['bases'] = fanalyzer.classes[name].bases meta['ifaces'].update(fanalyzer.classes[name].meta['ifaces']) meta['ifaces'] = list(meta['ifaces']) if groups.intersection(lst[1]): typ_list.append((name, meta)) self.tree_analyser.flush_cache() return distset
def _get_meta_info(self, typ_list, groups, typ_dict): distset = set() for name, lst in typ_dict.items(): dist = lst[0] modules = lst[2] distset.add(dist.project_name) ifaces = set() for g in lst[1]: ifaces.update(plugin_groups[g]) meta = { 'version': dist.version, 'ifaces': set(ifaces), } for modname in modules: fpath = find_module(modname) if fpath is not None: fanalyzer = self.tree_analyser.analyze_file(fpath, use_cache=True) # 'name' may be missing if that module only imports, # does not define, the class. if name in fanalyzer.classes: meta['bases'] = fanalyzer.classes[name].bases meta['ifaces'].update(fanalyzer.classes[name].meta['ifaces']) else: logging.warning('pkg_res_factory: %r not found', name) meta['ifaces'] = list(meta['ifaces']) if groups.intersection(lst[1]): typ_list.append((name, meta)) self.tree_analyser.flush_cache() return distset