def component_docs(self, comp_type, compdef):
        namespace, name = comp_type.rsplit('.', 1)
        doctext = compdef['docstring'].splitlines()
        doc = {
            'ns': namespace, 'name': name,
            'type': 'component',
            'short_desc': doctext[0],
            'long_desc': '\n'.join(doctext[1:]),
            'requires':list({compdef['structure']['actors'][a]['actor_type'] for a in compdef['structure']['actors']}),
            'args': {'mandatory':compdef['arg_identifiers'], 'optional':{}},
            'inputs': [(p, self._fetch_port_docs(compdef, 'in', p)) for p in compdef['inports']],
            'outputs': [(p, self._fetch_port_docs(compdef, 'out', p)) for p in compdef['outports']],
            }
        return doc
Combine info from compdef to raw docs
dataset/ETHPy150Open EricssonResearch/calvin-base/calvin/actorstore/store.py/DocumentationStore.component_docs