Fucius's picture
Upload 422 files
2eafbc4 verified
import threading
import time
import requests
from inference.core.env import DISABLE_VERSION_CHECK, VERSION_CHECK_MODE
from inference.core.logger import logger
from inference.core.version import __version__
latest_release = None
last_checked = 0
cache_duration = 86400 # 24 hours
log_frequency = 300 # 5 minutes
def get_latest_release_version():
global latest_release, last_checked
now = time.time()
if latest_release is None or now - last_checked > cache_duration:
try:
logger.debug("Checking for latest inference release version...")
response = requests.get(
"https://api.github.com/repos/roboflow/inference/releases/latest"
)
response.raise_for_status()
latest_release = response.json()["tag_name"].lstrip("v")
last_checked = now
except requests.exceptions.RequestException:
pass
def check_latest_release_against_current():
get_latest_release_version()
if latest_release is not None and latest_release != __version__:
logger.warning(
f"Your inference package version {__version__} is out of date! Please upgrade to version {latest_release} of inference for the latest features and bug fixes by running `pip install --upgrade inference`."
)
def check_latest_release_against_current_continuous():
while True:
check_latest_release_against_current()
time.sleep(log_frequency)
if not DISABLE_VERSION_CHECK:
if VERSION_CHECK_MODE == "continuous":
t = threading.Thread(target=check_latest_release_against_current_continuous)
t.daemon = True
t.start()
else:
check_latest_release_against_current()