def _get_context(request, stubs=None, pkg_path=None, data_dir=None): stubs = stubs or [] _frozen = [s.frozen for s in stubs] _fware = [s.firmware.frozen for s in stubs if s.firmware is not None] _stub_paths = [s.stubs for s in stubs] _paths = setutils.IndexedSet([*_frozen, *_fware, *_stub_paths]) _context = { 'base': {}, 'stubs': { 'stubs': set(stubs), 'paths': _paths, 'datadir': data_dir, }, 'reqs': { 'paths': setutils.IndexedSet([pkg_path]), 'local_paths': set([]) } } if request == 'all': request = ",".join(list(_context.keys())) mods = request.split(',') if 'reqs' in mods and 'stubs' in mods: _ctx = _context['stubs'].copy() _ctx['paths'].update(_context['reqs']['paths']) _ctx['local_paths'] = _context['reqs']['local_paths'] return _ctx context = {} for m in mods: context = {**context, **_context.get(m, {})} return context
def _get_context(request, stubs=None, pkg_path=None, data_dir=None): stubs = stubs or [] _frozen = [s.frozen for s in stubs] _fware = [s.firmware.frozen for s in stubs if s.firmware is not None] _stub_paths = [s.stubs for s in stubs] _paths = setutils.IndexedSet([*_frozen, *_fware, *_stub_paths]) _context = { "base": {}, "stubs": { "stubs": set(stubs), "paths": _paths, "datadir": data_dir, }, "reqs": { "paths": setutils.IndexedSet([pkg_path]), "local_paths": set([]) }, } if request == "all": request = ",".join(list(_context.keys())) mods = request.split(",") if "reqs" in mods and "stubs" in mods: _ctx = _context["stubs"].copy() _ctx["paths"].update(_context["reqs"]["paths"]) _ctx["local_paths"] = _context["reqs"]["local_paths"] return _ctx context = {} for m in mods: context = {**context, **_context.get(m, {})} return context
def get_stub_tree(self, stubs) -> Sequence[Path]: """Retrieve and order paths to base stubs and any stubs they depend on. Args: stubs: List of Stub Items Returns: Paths to all stubs project depends on. """ stub_tree = setutils.IndexedSet() base_stubs = setutils.IndexedSet([s.stubs for s in stubs]) frozen = [s.frozen for s in stubs] fware_mods = [ s.firmware.frozen for s in stubs if s.firmware is not None ] stub_tree.update(*frozen, *fware_mods, *base_stubs) return list(stub_tree)
def context(self): """Component stub context.""" paths = setutils.IndexedSet() if self.stubs: frozen = [s.frozen for s in self.stubs] fware_mods = [s.firmware.frozen for s in self.stubs if s.firmware is not None] stub_paths = [s.stubs for s in self.stubs] paths.update(*frozen, *fware_mods, *stub_paths) return { "stubs": set(self.stubs), "paths": paths, "datadir": self.parent.data_path, }