Source code for speasy.core.cache.version

from typing import Union
import datetime
import dateutil
from packaging.version import Version, parse, InvalidVersion


def _str_to_version_datetime(v: str) -> datetime.datetime or None:
    try:
        version = dateutil.parser.parse(v)
    except ValueError:
        version = None
    return version


[docs] def str_to_version(v: str) -> Version or datetime.datetime or None: """Converts given version str representation to a compatible version object Parameters ---------- v: str version value to convert Returns ------- Version or datetime.datetime or None a compatible version object or None Examples -------- >>> from speasy.core.cache.version import str_to_version >>> import datetime >>> str_to_version("1.2.3") <Version('1.2.3')> >>> str_to_version('2010-01-01T00:00:00') datetime.datetime(2010, 1, 1, 0, 0) See Also -------- version_to_str """ try: version = parse(v) if "LegacyVersion" in str(type(version)): return _str_to_version_datetime(v) except InvalidVersion: return _str_to_version_datetime(v) return version
[docs] def version_to_str(v: Union[Version, datetime.datetime]) -> str: """Converts given version value to its str representation Parameters ---------- v: Version or datetime.datetime version value to convert Returns ------- str string representation of given version Examples -------- >>> from speasy.core.cache.version import version_to_str >>> from packaging.version import Version >>> import datetime >>> version_to_str(Version("1.2.3")) '1.2.3' >>> version_to_str(datetime.datetime(2010, 1, 1)) '2010-01-01T00:00:00' See Also -------- str_to_version """ if type(v) is Version: return str(v) elif type(v) is datetime.datetime: return v.isoformat()