api / src /utils.py
Eli Safra
Deploy SolarWine API (FastAPI + Docker, port 7860)
938949f
"""Shared utility functions for SolarWine."""
from __future__ import annotations
from typing import Optional
def cwsi_from_delta_t(
leaf_temp_c: Optional[float] = None,
air_temp_c: Optional[float] = None,
*,
delta_t: Optional[float] = None,
) -> float:
"""Compute CWSI proxy from leaf–air temperature differential.
Scale: 0°C delta → CWSI=0, 10°C delta → CWSI=1.
Clamped to [0.0, 1.0].
Can be called with (leaf_temp_c, air_temp_c) or with delta_t= directly.
"""
if delta_t is None:
if leaf_temp_c is None or air_temp_c is None:
raise ValueError("Provide (leaf_temp_c, air_temp_c) or delta_t=")
delta_t = leaf_temp_c - air_temp_c
return max(0.0, min(1.0, delta_t / 10.0))