Spaces:
Sleeping
Sleeping
| """Helpers numériques internes au sous-package report_data. | |
| Petites fonctions utilitaires partagées par tous les builders de | |
| sections (engines, documents, statistics, scatter, pareto). Ne pas | |
| importer depuis l'extérieur du sous-package — ces helpers sont | |
| spécifiques aux conventions du dict JSON consommé par le template. | |
| """ | |
| from __future__ import annotations | |
| from typing import Optional | |
| def safe_round(v: Optional[float], decimals: int = 4) -> float: | |
| """Arrondit un float optionnel ; ``None`` devient ``0.0``.""" | |
| return round(v or 0.0, decimals) | |
| def percent_string(v: Optional[float], decimals: int = 2) -> str: | |
| """Formate un ratio ∈ [0, 1] en chaîne pourcentage : ``0.4723 → "47.23 %"``. | |
| ``None`` → ``"—"``. Conservé pour rétrocompat avec d'éventuels | |
| callers externes (Sprint 7 historique). | |
| """ | |
| if v is None: | |
| return "—" | |
| return f"{v * 100:.{decimals}f} %" | |
| __all__ = ["safe_round", "percent_string"] | |