From 8f06437cea422828f9513712b9b3ef47c878cd45 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jakub=20Klinkovsk=C3=BD?= <1289205+lahwaacz@users.noreply.github.com> Date: Sun, 11 May 2025 17:07:15 +0200 Subject: [PATCH] Add type hints: mwparserfromhell.nodes.wikilink --- src/mwparserfromhell/nodes/wikilink.py | 34 ++++++++++++++++++++++------------ 1 file changed, 22 insertions(+), 12 deletions(-) diff --git a/src/mwparserfromhell/nodes/wikilink.py b/src/mwparserfromhell/nodes/wikilink.py index 870cba9..3378778 100644 --- a/src/mwparserfromhell/nodes/wikilink.py +++ b/src/mwparserfromhell/nodes/wikilink.py @@ -19,36 +19,46 @@ # SOFTWARE. +from typing import TYPE_CHECKING, Any, Optional, Generator, Callable + from ._base import Node from ..utils import parse_anything +if TYPE_CHECKING: + from ..wikicode import Wikicode + __all__ = ["Wikilink"] class Wikilink(Node): """Represents an internal wikilink, like ``[[Foo|Bar]]``.""" - def __init__(self, title, text=None): + def __init__(self, title: Any, text: Any = None): super().__init__() self.title = title self.text = text - def __str__(self): + def __str__(self) -> str: if self.text is not None: return "[[" + str(self.title) + "|" + str(self.text) + "]]" return "[[" + str(self.title) + "]]" - def __children__(self): + def __children__(self) -> Generator["Wikicode", None, None]: yield self.title if self.text is not None: yield self.text - def __strip__(self, **kwargs): + def __strip__(self, **kwargs: Any) -> Optional[str]: if self.text is not None: return self.text.strip_code(**kwargs) return self.title.strip_code(**kwargs) - def __showtree__(self, write, get, mark): + def __showtree__( + self, + write: Callable[[str], None], + get: Callable[["Wikicode"], None], + mark: Callable[[], None], + ) -> None: write("[[") get(self.title) if self.text is not None: @@ -58,21 +68,21 @@ class Wikilink(Node): write("]]") @property - def title(self): + def title(self) -> "Wikicode": """The title of the linked page, as a :class:`.Wikicode` object.""" return self._title + @title.setter + def title(self, value: Any) -> None: + self._title = parse_anything(value) + @property - def text(self): + def text(self) -> Optional["Wikicode"]: """The text to display (if any), as a :class:`.Wikicode` object.""" return self._text - @title.setter - def title(self, value): - self._title = parse_anything(value) - @text.setter - def text(self, value): + def text(self, value: Any) -> None: if value is None: self._text = None else: