from _typeshed import Incomplete
from collections.abc import Generator

from networkx.utils.backends import _dispatch

@_dispatch
def is_eulerian(G): ...
@_dispatch
def is_semieulerian(G): ...
@_dispatch
def eulerian_circuit(G, source: Incomplete | None = None, keys: bool = False) -> Generator[Incomplete, Incomplete, None]: ...
@_dispatch
def has_eulerian_path(G, source: Incomplete | None = None): ...
@_dispatch
def eulerian_path(G, source: Incomplete | None = None, keys: bool = False) -> Generator[Incomplete, Incomplete, None]: ...
@_dispatch
def eulerize(G): ...
