Only alert users of reflex upgrade once per project (#2731)

This commit is contained in:
Elijah Ahianyo 2024-02-28 01:12:21 +00:00 committed by GitHub
parent 3c3c331856
commit 7ec7f031a3
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -14,6 +14,7 @@ import stat
import sys
import tempfile
import zipfile
from datetime import datetime
from fileinput import FileInput
from pathlib import Path
from types import ModuleType
@ -46,7 +47,12 @@ def check_latest_package_version(package_name: str):
url = f"https://pypi.org/pypi/{package_name}/json"
response = httpx.get(url)
latest_version = response.json()["info"]["version"]
if version.parse(current_version) < version.parse(latest_version):
if (
version.parse(current_version) < version.parse(latest_version)
and not get_or_set_last_reflex_version_check_datetime()
):
# only show a warning when the host version is outdated and
# the last_version_check_datetime is not set in reflex.json
console.warn(
f"Your version ({current_version}) of {package_name} is out of date. Upgrade to {latest_version} with 'pip install {package_name} --upgrade'"
)
@ -54,6 +60,26 @@ def check_latest_package_version(package_name: str):
pass
def get_or_set_last_reflex_version_check_datetime():
"""Get the last time a check was made for the latest reflex version.
This is typically useful for cases where the host reflex version is
less than that on Pypi.
Returns:
The last version check datetime.
"""
if not os.path.exists(constants.Reflex.JSON):
return None
# Open and read the file
with open(constants.Reflex.JSON, "r") as file:
data: dict = json.load(file)
last_version_check_datetime = data.get("last_version_check_datetime")
if not last_version_check_datetime:
data.update({"last_version_check_datetime": str(datetime.now())})
path_ops.update_json_file(constants.Reflex.JSON, data)
return last_version_check_datetime
def check_node_version() -> bool:
"""Check the version of Node.js.