示例#1
0
    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
示例#2
0
    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