summaryrefslogtreecommitdiff
path: root/robusta_krr/utils/version.py
blob: d7b5df7f67ad3e27762a24806037e99af32cc450 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
import robusta_krr
import requests
import asyncio
from typing import Optional
from concurrent.futures import ThreadPoolExecutor


def get_version() -> str:
    return robusta_krr.__version__


# Synchronous function to fetch the latest release version from GitHub API
def fetch_latest_version() -> Optional[str]:
    url = "https://api.github.com/repos/robusta-dev/krr/releases/latest"
    try:
        response = requests.get(url, timeout=0.5)  # 0.5 seconds timeout
        response.raise_for_status()  # Raises an error for bad responses
        data = response.json()
        return data.get("tag_name")  # Returns the tag name of the latest release
    except Exception:
        return None


async def load_latest_version() -> Optional[str]:
    loop = asyncio.get_running_loop()
    # Run the synchronous function in a separate thread
    with ThreadPoolExecutor() as pool:
        return await loop.run_in_executor(pool, fetch_latest_version)