# meteo/variables.py from __future__ import annotations from dataclasses import dataclass from typing import Dict, List @dataclass(frozen=True) class Variable: """ Décrit une variable météorologique exploitable dans les analyses. - key : identifiant interne (stable, sans espace) - column : nom de la colonne dans le DataFrame - label : libellé humain pour les graphiques - unit : unité d'affichage (texte libre) """ key: str column: str label: str unit: str VARIABLES: List[Variable] = [ Variable( key="temperature", column="temperature", label="Température", unit="°C", ), Variable( key="humidity", column="humidity", label="Humidité relative", unit="%", ), Variable( key="pressure", column="pressure", label="Pression atmosphérique", unit="hPa", ), Variable( key="rain_rate", column="rain_rate", label="Précipitations", unit="mm/h", ), Variable( key="illuminance", column="illuminance", label="Luminance", unit="lx", ), Variable( key="wind_speed", column="wind_speed", label="Vitesse du vent", unit="km/h", ), Variable( key="wind_direction", column="wind_direction", label="Direction du vent", unit="°", ), Variable( key="sun_elevation", column="sun_elevation", label="Élévation solaire", unit="°", ), ] VARIABLES_BY_KEY: Dict[str, Variable] = {v.key: v for v in VARIABLES} def iter_variable_pairs() -> list[tuple[Variable, Variable]]: """ Retourne la liste de toutes les paires (i, j) avec i < j, pour éviter les doublons et les diagonales. """ pairs: list[tuple[Variable, Variable]] = [] for i, vi in enumerate(VARIABLES): for vj in VARIABLES[i + 1 :]: pairs.append((vi, vj)) return pairs