Skip to content

Commit c376dbc

Browse files
committed
docstrings and datetime tests
1 parent c0d6abf commit c376dbc

File tree

2 files changed

+30
-0
lines changed

2 files changed

+30
-0
lines changed

climada/util/forecast.py

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,13 +23,34 @@
2323

2424

2525
class Forecast:
26+
"""Mixin class for forecast data.
27+
28+
Attributes
29+
----------
30+
lead_time : np.ndarray
31+
Array of forecast lead times, given as datetime64 objects.
32+
Represents the time points for which forecasts are made.
33+
member : np.ndarray
34+
Array of ensemble member identifiers, given as integers.
35+
Represents different forecast ensemble members.
36+
"""
37+
2638
def __init__(
2739
self,
2840
lead_time: np.ndarray | None = None,
2941
member: np.ndarray | None = None,
3042
*args,
3143
**kwargs,
3244
):
45+
"""Initialize Forecast.
46+
47+
Parameters
48+
----------
49+
lead_time : np.ndarray or None, optional
50+
Forecast lead times. Default is empty array.
51+
member : np.ndarray or None, optional
52+
Ensemble member identifiers. Default is empty array.
53+
"""
3354

3455
self.lead_time = (
3556
np.asarray(lead_time) if lead_time is not None else np.array([])

climada/util/test/test_forecast.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,3 +42,12 @@ def test_forecast_init():
4242
npt.assert_array_equal(forecast.lead_time, np.array([1, 2]), strict=True)
4343
npt.assert_array_equal(forecast.member, np.array([3, 4]), strict=True)
4444
assert isinstance(forecast.member, np.ndarray)
45+
46+
# Test with datetime64 including seconds
47+
lead_times_seconds = np.array(
48+
["2024-01-01T00:00:00", "2024-01-01T00:01:00", "2024-01-01"],
49+
dtype="datetime64[s]",
50+
)
51+
forecast = Forecast(lead_time=lead_times_seconds, member=[1, 2, 3])
52+
npt.assert_array_equal(forecast.lead_time, lead_times_seconds, strict=True)
53+
assert forecast.lead_time.dtype == np.dtype("datetime64[s]")

0 commit comments

Comments
 (0)