meta: ability to specify capabilities for stages
Add new stage metadata `CAPABILITIES` where stages can request additional capabilities that are not in the default set. Currently this is not used by any stage since the default set contains the sum of all needed capabilities.
This commit is contained in:
parent
bdcc9ea218
commit
d14e5f3ee8
2 changed files with 15 additions and 3 deletions
|
|
@ -296,6 +296,7 @@ class ModuleInfo:
|
|||
self.info = info["info"]
|
||||
self.desc = info["desc"]
|
||||
self.opts = info["schema"]
|
||||
self.caps = info["caps"]
|
||||
|
||||
def _load_opts(self, version, fallback=None):
|
||||
raw = self.opts[version]
|
||||
|
|
@ -388,9 +389,16 @@ class ModuleInfo:
|
|||
detail = fullname, lineno, e.colno, line
|
||||
raise SyntaxError(msg, detail) from None
|
||||
|
||||
@classmethod
|
||||
def _parse_caps(cls, _klass, _name, node):
|
||||
if not node:
|
||||
return set()
|
||||
|
||||
return {e.s for e in node.value.elts}
|
||||
|
||||
@classmethod
|
||||
def load(cls, root, klass, name) -> Optional["ModuleInfo"]:
|
||||
names = ["SCHEMA", "SCHEMA_2"]
|
||||
names = ["SCHEMA", "SCHEMA_2", "CAPABILITIES"]
|
||||
|
||||
def filter_type(lst, target):
|
||||
return [x for x in lst if isinstance(x, target)]
|
||||
|
|
@ -425,13 +433,17 @@ class ModuleInfo:
|
|||
def parse_schema(node):
|
||||
return cls._parse_schema(klass, name, node)
|
||||
|
||||
def parse_caps(node):
|
||||
return cls._parse_caps(klass, name, node)
|
||||
|
||||
info = {
|
||||
'schema': {
|
||||
"1": parse_schema(values.get("SCHEMA")),
|
||||
"2": parse_schema(values.get("SCHEMA_2")),
|
||||
},
|
||||
'desc': doclist[0],
|
||||
'info': "\n".join(doclist[1:])
|
||||
'info': "\n".join(doclist[1:]),
|
||||
'caps': parse_caps(values.get("CAPABILITIES"))
|
||||
}
|
||||
return cls(klass, name, path, info)
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue