From f021d616dd19de40f193769e720d6a5bcfa5f16c Mon Sep 17 00:00:00 2001 From: Damien Elmes Date: Wed, 15 Jan 2020 12:14:32 +1000 Subject: [PATCH] add optional docstring to hooks --- pylib/tools/hookslib.py | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/pylib/tools/hookslib.py b/pylib/tools/hookslib.py index 506107b1c..42618b076 100644 --- a/pylib/tools/hookslib.py +++ b/pylib/tools/hookslib.py @@ -26,6 +26,8 @@ class Hook: legacy_hook: Optional[str] = None # if legacy hook takes no arguments but the new hook does, set this legacy_no_args: bool = False + # docstring to add to hook class + doc: Optional[str] = None def callable(self) -> str: "Convert args into a Callable." @@ -61,17 +63,21 @@ class Hook: def list_code(self) -> str: return f"""\ -_hooks: List[{self.callable()}] = [] + _hooks: List[{self.callable()}] = [] """ def code(self) -> str: - doc = f"({', '.join(self.args or [])})" + appenddoc = f"({', '.join(self.args or [])})" + if self.doc: + classdoc = f" '''{self.doc}'''\n" + else: + classdoc = "" code = f"""\ class {self.classname()}: - {self.list_code()} +{classdoc}{self.list_code()} def append(self, cb: {self.callable()}) -> None: - '''{doc}''' + '''{appenddoc}''' self._hooks.append(cb) def remove(self, cb: {self.callable()}) -> None: