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 sys
import tempfile import tempfile
import zipfile import zipfile
from datetime import datetime
from fileinput import FileInput from fileinput import FileInput
from pathlib import Path from pathlib import Path
from types import ModuleType 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" url = f"https://pypi.org/pypi/{package_name}/json"
response = httpx.get(url) response = httpx.get(url)
latest_version = response.json()["info"]["version"] 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( console.warn(
f"Your version ({current_version}) of {package_name} is out of date. Upgrade to {latest_version} with 'pip install {package_name} --upgrade'" 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 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: def check_node_version() -> bool:
"""Check the version of Node.js. """Check the version of Node.js.