Skip to content

Commit 222e2af

Browse files
committed
Move timedelta_to_float helper
and corresponding tests
1 parent db83990 commit 222e2af

File tree

5 files changed

+29
-41
lines changed

5 files changed

+29
-41
lines changed

src/parcels/_core/particlefile.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515

1616
import parcels
1717
from parcels._core.particle import _SAME_AS_FIELDSET_TIME_INTERVAL, ParticleClass
18-
from parcels.utils._helpers import timedelta_to_float
18+
from parcels._core.utils.time import timedelta_to_float
1919

2020
if TYPE_CHECKING:
2121
from parcels._core.particle import Variable

src/parcels/_core/utils/time.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -144,3 +144,12 @@ def maybe_convert_python_timedelta_to_numpy(dt: timedelta | np.timedelta64) -> n
144144
return np.timedelta64(0, "s")
145145
except Exception as e:
146146
raise ValueError(f"Could not convert {dt!r} to np.timedelta64.") from e
147+
148+
149+
def timedelta_to_float(dt: float | timedelta | np.timedelta64) -> float:
150+
"""Convert a timedelta to a float in seconds."""
151+
if isinstance(dt, timedelta):
152+
return dt.total_seconds()
153+
if isinstance(dt, np.timedelta64):
154+
return float(dt / np.timedelta64(1, "s"))
155+
return float(dt)

src/parcels/utils/_helpers.py

Lines changed: 0 additions & 18 deletions
This file was deleted.

tests-v3/tools/test_helpers.py

Lines changed: 1 addition & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,7 @@
1-
from datetime import timedelta
2-
3-
import numpy as np
41
import pytest
52

63
import parcels.tools._helpers as helpers
7-
from parcels.tools._helpers import deprecated, deprecated_made_private, timedelta_to_float
4+
from parcels.tools._helpers import deprecated, deprecated_made_private
85

96

107
def test_format_list_items_multiline():
@@ -67,20 +64,3 @@ def some_function(x, y):
6764
some_function(1, 2)
6865

6966
assert "deprecated::" in some_function.__doc__
70-
71-
72-
@pytest.mark.parametrize(
73-
"input, expected",
74-
[
75-
(timedelta(days=1), 24 * 60 * 60),
76-
(np.timedelta64(1, "D"), 24 * 60 * 60),
77-
(3600.0, 3600.0),
78-
],
79-
)
80-
def test_timedelta_to_float(input, expected):
81-
assert timedelta_to_float(input) == expected
82-
83-
84-
def test_timedelta_to_float_exceptions():
85-
with pytest.raises((ValueError, TypeError)):
86-
timedelta_to_float("invalid_type")

tests/utils/test_time.py

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
from hypothesis import given
99
from hypothesis import strategies as st
1010

11-
from parcels._core.utils.time import TimeInterval, maybe_convert_python_timedelta_to_numpy
11+
from parcels._core.utils.time import TimeInterval, maybe_convert_python_timedelta_to_numpy, timedelta_to_float
1212

1313
calendar_strategy = st.sampled_from(
1414
[
@@ -198,3 +198,20 @@ def test_time_interval_intersection_different_calendars():
198198
def test_maybe_convert_python_timedelta_to_numpy(td, expected):
199199
result = maybe_convert_python_timedelta_to_numpy(td)
200200
assert result == expected
201+
202+
203+
@pytest.mark.parametrize(
204+
"input, expected",
205+
[
206+
(timedelta(days=1), 24 * 60 * 60),
207+
(np.timedelta64(1, "D"), 24 * 60 * 60),
208+
(3600.0, 3600.0),
209+
],
210+
)
211+
def test_timedelta_to_float(input, expected):
212+
assert timedelta_to_float(input) == expected
213+
214+
215+
def test_timedelta_to_float_exceptions():
216+
with pytest.raises((ValueError, TypeError)):
217+
timedelta_to_float("invalid_type")

0 commit comments

Comments
 (0)