from numpy.typing import ArrayLike

from copy import deepcopy
from functools import lru_cache
from random import choice

from ...classes.graph import Graph
from ...utils import not_implemented_for

__all__ = ["lukes_partitioning"]

D_EDGE_W: str = ...
D_EDGE_VALUE: float = ...
D_NODE_W: str = ...
D_NODE_VALUE: int = ...
PKEY: str = ...
CLUSTER_EVAL_CACHE_SIZE: int = ...

def lukes_partitioning(
    G: Graph, max_size: int, node_weight=None, edge_weight=None
) -> ArrayLike: ...
