Source code for icclim._core.utils
"""Contain utility functions for icclim."""
from __future__ import annotations
from datetime import datetime
import dateparser
from icclim.exception import InvalidIcclimArgumentError
[docs]
def read_date(in_date: str | datetime) -> datetime:
"""
Read a date from a string or return the date if it is already a datetime object.
Parameters
----------
in_date: str | datetime
A string representing a date or a datetime object.
Returns
-------
datetime
A datetime object.
"""
if isinstance(in_date, datetime):
return in_date
date = dateparser.parse(in_date)
if date is None:
msg = (
f"The date {in_date} does not have a valid format."
" You can use various formats such as '2 december', '02-12',"
" '1994-12-02'..."
)
raise InvalidIcclimArgumentError(msg)
return date
[docs]
def is_number_sequence(values: object) -> bool:
"""Return True if values is a sequence of numbers."""
return isinstance(values, (tuple, list)) and all(
(isinstance(x, (float, int)) for x in values),
)