Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 5 additions & 5 deletions src/parcels/_core/field.py
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@
from parcels._core.utils.time import TimeInterval
from parcels._core.uxgrid import UxGrid
from parcels._core.xgrid import XGrid, _transpose_xfield_data_to_tzyx
from parcels._python import assert_same_function_signature
from parcels._reprs import default_repr
from parcels._typing import VectorType
from parcels.interpolators import (
Expand All @@ -30,7 +31,6 @@
ZeroInterpolator,
ZeroInterpolator_Vector,
)
from parcels.utils._helpers import _assert_same_function_signature

__all__ = ["Field", "VectorField"]

Expand Down Expand Up @@ -139,7 +139,7 @@ def __init__(
if interp_method is None:
self._interp_method = _DEFAULT_INTERPOLATOR_MAPPING[type(self.grid)]
else:
_assert_same_function_signature(interp_method, ref=ZeroInterpolator, context="Interpolation")
assert_same_function_signature(interp_method, ref=ZeroInterpolator, context="Interpolation")
self._interp_method = interp_method

self.igrid = -1 # Default the grid index to -1
Expand Down Expand Up @@ -195,7 +195,7 @@ def interp_method(self):

@interp_method.setter
def interp_method(self, method: Callable):
_assert_same_function_signature(method, ref=ZeroInterpolator, context="Interpolation")
assert_same_function_signature(method, ref=ZeroInterpolator, context="Interpolation")
self._interp_method = method

def _check_velocitysampling(self):
Expand Down Expand Up @@ -270,7 +270,7 @@ def __init__(
if vector_interp_method is None:
self._vector_interp_method = None
else:
_assert_same_function_signature(vector_interp_method, ref=ZeroInterpolator_Vector, context="Interpolation")
assert_same_function_signature(vector_interp_method, ref=ZeroInterpolator_Vector, context="Interpolation")
self._vector_interp_method = vector_interp_method

def __repr__(self):
Expand All @@ -286,7 +286,7 @@ def vector_interp_method(self):

@vector_interp_method.setter
def vector_interp_method(self, method: Callable):
_assert_same_function_signature(method, ref=ZeroInterpolator_Vector, context="Interpolation")
assert_same_function_signature(method, ref=ZeroInterpolator_Vector, context="Interpolation")
self._vector_interp_method = method

def eval(self, time: datetime, z, y, x, particles=None, applyConversion=True):
Expand Down
4 changes: 2 additions & 2 deletions src/parcels/_core/kernel.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,12 +17,12 @@
_raise_outside_time_interval_error,
)
from parcels._core.warnings import KernelWarning
from parcels._python import assert_same_function_signature
from parcels.kernels import (
AdvectionAnalytical,
AdvectionRK4,
AdvectionRK45,
)
from parcels.utils._helpers import _assert_same_function_signature

if TYPE_CHECKING:
from collections.abc import Callable
Expand Down Expand Up @@ -67,7 +67,7 @@ def __init__(
for f in pyfuncs:
if not isinstance(f, types.FunctionType):
raise TypeError(f"Argument pyfunc should be a function or list of functions. Got {type(f)}")
_assert_same_function_signature(f, ref=AdvectionRK4, context="Kernel")
assert_same_function_signature(f, ref=AdvectionRK4, context="Kernel")

if len(pyfuncs) == 0:
raise ValueError("List of `pyfuncs` should have at least one function.")
Expand Down
2 changes: 1 addition & 1 deletion src/parcels/_core/particlefile.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@

import parcels
from parcels._core.particle import _SAME_AS_FIELDSET_TIME_INTERVAL, ParticleClass
from parcels.utils._helpers import timedelta_to_float
from parcels._core.utils.time import timedelta_to_float

if TYPE_CHECKING:
from parcels._core.particle import Variable
Expand Down
9 changes: 9 additions & 0 deletions src/parcels/_core/utils/time.py
Original file line number Diff line number Diff line change
Expand Up @@ -144,3 +144,12 @@ def maybe_convert_python_timedelta_to_numpy(dt: timedelta | np.timedelta64) -> n
return np.timedelta64(0, "s")
except Exception as e:
raise ValueError(f"Could not convert {dt!r} to np.timedelta64.") from e


def timedelta_to_float(dt: float | timedelta | np.timedelta64) -> float:
"""Convert a timedelta to a float in seconds."""
if isinstance(dt, timedelta):
return dt.total_seconds()
if isinstance(dt, np.timedelta64):
return float(dt / np.timedelta64(1, "s"))
return float(dt)
Loading
Loading