# -----------------------------------------------------
# définition du type des paramètres
def enregistrer_utilisateur(nom: str, age: int, actif: bool) -> None:
    pass

# -----------------------------------------------------
# cas d'un dictionnaire
def transformer_dict(data: dict[str, int]) -> dict[int, str]:
    return {value: key for key, value in data.items()}

# -----------------------------------------------------
# utilisation de tuple
def extraire_coordonnees(coordonnees: tuple[float, float]) -> float:
    x, y = coordonnees
    return (x**2 + y**2)**0.5

# -----------------------------------------------------
# typage avec liste d'entiers
def afficher_nombres(nombres: list[int] | None) -> None:
    if nombres is None:
        print("Pas de nombres à afficher.")
    else:
        print(nombres)

# -----------------------------------------------------
# union de valeurs
def calculer(valeur: int | float) -> float:
    return valeur ** 2

# -----------------------------------------------------
# Any pour les listes génériques
from typing import Any, List

def afficher_elements(elements: List[Any]) -> None:
    for element in elements:
        print(element)

# -----------------------------------------------------
# combiner List et Union
from typing import Union, List

def traiter_donnees(donnees: List[Union[int, str]]) -> None:
    for donnee in donnees:
        if isinstance(donnee, int):
            print(f"Nombre : {donnee}")
        else:
            print(f"Texte : {donnee}")

# -----------------------------------------------------
# utilisation de Dict
from typing import Dict

def process_users(users: Dict[str, int]) -> None:
    for name, age in users.items():
        print(f"{name} a {age} ans")

# -----------------------------------------------------
# utilisation de Literal
from typing import Literal

def choisir_action(action: Literal["start", "stop", "pause"]) -> None:
    print(f"Action choisie : {action}")

# -----------------------------------------------------
# utilisation de TypeVar pour liste générique
from typing import TypeVar

T = TypeVar("T")

def inverser_liste(elements: list[T]) -> list[T]:
    return elements[::-1]

