30 lines
757 B
Python
30 lines
757 B
Python
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()
|