Skip to content

funfedi_results.latest

later_version

later_version(a, b)
>>> later_version("v4.5.2", "v4.6.2")
'v4.6.2'
Source code in funfedi_results/latest/__init__.py
def later_version(a, b):
    """
    ```
    >>> later_version("v4.5.2", "v4.6.2")
    'v4.6.2'

    ```
    """
    if to_semver(a) > to_semver(b):
        return a
    return b

name_and_version

name_and_version(filename: str) -> tuple[str, str]
>>> name_and_version("cattle_grid_0.5.20.zip")
('cattle_grid', '0.5.20')
Source code in funfedi_results/latest/__init__.py
def name_and_version(filename: str) -> tuple[str, str]:
    """
    ```
    >>> name_and_version("cattle_grid_0.5.20.zip")
    ('cattle_grid', '0.5.20')

    ```
    """
    split = filename.split("_")
    return "_".join(split[:-1]), split[-1].removesuffix(".zip")

names_to_latest_dict

names_to_latest_dict(names: list[str]) -> dict[str, str]
>>> names_to_latest_dict(["app_0.0.0"])
{'app': '0.0.0'}

>>> names_to_latest_dict(["app_0.0.0", "app_1.0.0"])
{'app': '1.0.0'}
Source code in funfedi_results/latest/__init__.py
def names_to_latest_dict(names: list[str]) -> dict[str, str]:
    """
    ```
    >>> names_to_latest_dict(["app_0.0.0"])
    {'app': '0.0.0'}

    >>> names_to_latest_dict(["app_0.0.0", "app_1.0.0"])
    {'app': '1.0.0'}

    ```
    """
    names_and_versions = [name_and_version(x) for x in names]

    name_to_version = defaultdict(list)

    for name, version in names_and_versions:
        name_to_version[name].append(version)

    return {
        name: sorted(versions, key=to_semver, reverse=True)[0]
        for name, versions in name_to_version.items()
    }

to_semver

to_semver(version, skip_prerelease=True) -> Version

Transforms a version to a semver.Version

>>> to_semver("v4.2.1")
Version(major=4, minor=2, patch=1, prerelease=None, build=None)
Source code in funfedi_results/latest/__init__.py
def to_semver(version, skip_prerelease=True) -> semver.Version:
    """Transforms a version to a semver.Version

    ```python
    >>> to_semver("v4.2.1")
    Version(major=4, minor=2, patch=1, prerelease=None, build=None)

    ```

    """
    try:
        if version.count(".") == 1:
            version = "0." + version
        if "a" in version:
            version = version.split("a")[0]
        result = semver.Version.parse(version.removeprefix("v"))

        if result.prerelease and skip_prerelease:
            return semver.Version(0)
        return result
    except Exception:
        return semver.Version(0)