1
donnees_meteo/meteo/variables.py

83 lines
1.8 KiB
Python

# 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="°",
),
]
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