from typing import Dict, Iterable, Optional class DocObject: """Represents a documented Python object.""" def __init__( self, name: str, kind: str, path: str, signature: Optional[str] = None, docstring: Optional[str] = None, ) -> None: self.name = name self.kind = kind self.path = path self.signature = signature self.docstring = docstring self.members: Dict[str, 'DocObject'] = {} def add_member(self, obj: 'DocObject') -> None: self.members[obj.name] = obj def get_member(self, name: str) -> 'DocObject': return self.members[name] def get_all_members(self) -> Iterable['DocObject']: return self.members.values()