Source code for myst_parser._compat
"""Helpers for cross compatibility across dependency versions."""
import sys
from typing import Callable, Iterable
from docutils.nodes import Element
if sys.version_info >= (3, 8):
from typing import Literal, Protocol, TypedDict, get_args, get_origin
else:
from typing_extensions import ( # noqa: F401
Literal,
Protocol,
TypedDict,
get_args,
get_origin,
)
[docs]def findall(node: Element) -> Callable[..., Iterable[Element]]:
"""Iterate through"""
# findall replaces traverse in docutils v0.18
# note a difference is that findall is an iterator
return getattr(node, "findall", node.traverse)