Код: Выделить всё
StartTag
У меня есть функция, которая принимает парсинод и делает разные вещи, основываясь на том, какой это подтип. Я хотел бы убедиться, что Mypy будет жаловаться, если я когда-нибудь добавлю новый подкласс Parsernode , не изменяя эту функцию, чтобы обрабатывать новый тип.
Код: Выделить всё
import typing
def doTheThing(node: ParserNode) -> None:
if isinstance(node, StartTag):
...
elif isinstance(node, RawText):
...
else:
typing.assert_never(node)
Код: Выделить всё
import typing
ParserNodeSubs: typing.TypeAlias = "StartTag | RawText"
def doTheThing(node: ParserNode) -> None:
node = typing.cast(ParserNodeSubs, node)
if isinstance(node, StartTag):
...
elif isinstance(node, RawText):
...
else:
typing.assert_never(node)
Подробнее здесь: https://stackoverflow.com/questions/795 ... l-coverage