
import networkx as nx


def extraire_niveaux(G: nx.DiGraph) -> dict[str | int, int]:
    """Extrait les niveaux des nœuds du graphe.

    Args:
        G (nx.DiGraph): Le graphe d'origine à analyser.

    Returns:
        dict: Un dictionnaire associant chaque nœud au niveau correspondant.
            Les valeurs sont des entiers représentant les niveaux.
    """
    niveaux = {}
    for node, attrs in G.nodes(data=True):
        niveau_str = attrs.get("niveau")
        if niveau_str:
            niveaux[node] = int(str(niveau_str).strip('"'))
    return niveaux
