Browse Source

Update type annotations

tags/v0.7.0
Ben Kurtovic 1 year ago
parent
commit
52ec0bcf85
6 changed files with 29 additions and 15 deletions
  1. +1
    -1
      src/mwparserfromhell/nodes/_base.py
  2. +1
    -1
      src/mwparserfromhell/nodes/argument.py
  3. +1
    -1
      src/mwparserfromhell/nodes/external_link.py
  4. +1
    -1
      src/mwparserfromhell/nodes/tag.py
  5. +19
    -8
      src/mwparserfromhell/nodes/template.py
  6. +6
    -3
      src/mwparserfromhell/wikicode.py

+ 1
- 1
src/mwparserfromhell/nodes/_base.py View File

@@ -45,7 +45,7 @@ class Node(StringMixIn):
def __str__(self) -> str:
raise NotImplementedError()

def __children__(self) -> Generator["Wikicode"]:
def __children__(self) -> Generator["Wikicode", None, None]:
return
# pylint: disable=unreachable
yield # pragma: no cover (this is a generator that yields nothing)


+ 1
- 1
src/mwparserfromhell/nodes/argument.py View File

@@ -44,7 +44,7 @@ class Argument(Node):
return start + "|" + str(self.default) + "}}}"
return start + "}}}"

def __children__(self) -> Generator["Wikicode"]:
def __children__(self) -> Generator["Wikicode", None, None]:
yield self.name
if self.default is not None:
yield self.default


+ 1
- 1
src/mwparserfromhell/nodes/external_link.py View File

@@ -55,7 +55,7 @@ class ExternalLink(Node):
return "[" + str(self.url) + "]"
return str(self.url)

def __children__(self) -> Generator["Wikicode"]:
def __children__(self) -> Generator["Wikicode", None, None]:
yield self.url
if self.title is not None:
yield self.title


+ 1
- 1
src/mwparserfromhell/nodes/tag.py View File

@@ -98,7 +98,7 @@ class Tag(Node):
result += "</" + str(self.closing_tag) + ">"
return result

def __children__(self) -> Generator["Wikicode"]:
def __children__(self) -> Generator["Wikicode", None, None]:
if not self.wiki_markup:
yield self.tag
for attr in self.attributes:


+ 19
- 8
src/mwparserfromhell/nodes/template.py View File

@@ -17,19 +17,20 @@
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
# SOFTWARE.
from collections import defaultdict
import re
from collections import defaultdict
from typing import (
TYPE_CHECKING,
Any,
Optional,
Union,
List,
Dict,
Callable,
Dict,
Generator,
List,
Mapping,
cast,
Optional,
TypeVar,
Union,
overload,
)

from ._base import Node
@@ -47,6 +48,8 @@ FLAGS = re.DOTALL | re.UNICODE
# Used to allow None as a valid fallback value
_UNSET = object()

T = TypeVar("T")


class Template(Node):
"""Represents a template in wikicode, like ``{{foo}}``."""
@@ -62,7 +65,7 @@ class Template(Node):
return "{{" + str(self.name) + "|" + params + "}}"
return "{{" + str(self.name) + "}}"

def __children__(self) -> Generator["Wikicode"]:
def __children__(self) -> Generator["Wikicode", None, None]:
yield self.name
for param in self.params:
if param.showkey:
@@ -235,7 +238,15 @@ class Template(Node):
"""Alias for :meth:`has`."""
return self.has(name, ignore_empty)

def get(self, name: Union[str, Any], default: Any = _UNSET) -> Union[Parameter, Any]:
@overload
def get(self, name: Union[str, Any]) -> Parameter:
...

@overload
def get(self, name: Union[str, Any], default: T) -> Union[Parameter, T]:
...

def get(self, name: Union[str, Any], default: T = _UNSET) -> Union[Parameter, T]:
"""Get the parameter whose name is *name*.

The returned object is a :class:`.Parameter` instance. Raises


+ 6
- 3
src/mwparserfromhell/wikicode.py View File

@@ -312,10 +312,12 @@ class Wikicode(StringMixIn):
self._nodes = value

@overload
def get(self, index: int) -> Node: ...
def get(self, index: int) -> Node:
...

@overload
def get(self, index: slice) -> list[Node]: ...
def get(self, index: slice) -> list[Node]:
...

def get(self, index):
"""Return the *index*\\ th node within the list of nodes."""
@@ -556,6 +558,7 @@ class Wikicode(StringMixIn):
letter's case is normalized. Typical usage is
``if template.name.matches("stub"): ...``.
"""

def normalize(s: str) -> str:
return (s[0].upper() + s[1:]).replace("_", " ") if s else s

@@ -577,7 +580,7 @@ class Wikicode(StringMixIn):
matches: Union[Callable[[Node], bool], re.Pattern, str, None] = None,
flags: int = FLAGS,
forcetype: Optional[type] = None,
) -> Generator[Node]:
) -> Generator[Node, None, None]:
"""Iterate over nodes in our list matching certain conditions.

If *forcetype* is given, only nodes that are instances of this type (or


Loading…
Cancel
Save