diff --git a/src/backend/base/langflow/__main__.py b/src/backend/base/langflow/__main__.py index c1351fdea..8cb0523be 100644 --- a/src/backend/base/langflow/__main__.py +++ b/src/backend/base/langflow/__main__.py @@ -7,6 +7,7 @@ import socket import sys import time import warnings +from contextlib import suppress from pathlib import Path import click @@ -312,10 +313,28 @@ def get_letter_from_version(version: str) -> str | None: def build_version_notice(current_version: str, package_name: str) -> str: - latest_version = fetch_latest_version(package_name, include_prerelease=langflow_is_pre_release(current_version)) - if latest_version and pkg_version.parse(current_version) < pkg_version.parse(latest_version): - release_type = "pre-release" if langflow_is_pre_release(latest_version) else "version" - return f"A new {release_type} of {package_name} is available: {latest_version}" + """Build a version notice message if a newer version is available. + + This function checks if there is a newer version of the package available on PyPI + and returns an appropriate notice message. + + Args: + current_version (str): The currently installed version of the package + package_name (str): The name of the package to check + + Returns: + str: A notice message if a newer version is available, empty string otherwise. + The message will indicate if the newer version is a pre-release. + + Example: + >>> build_version_notice("1.0.0", "langflow") + 'A new version of langflow is available: 1.1.0' + """ + with suppress(httpx.ConnectError): + latest_version = fetch_latest_version(package_name, include_prerelease=langflow_is_pre_release(current_version)) + if latest_version and pkg_version.parse(current_version) < pkg_version.parse(latest_version): + release_type = "pre-release" if langflow_is_pre_release(latest_version) else "version" + return f"A new {release_type} of {package_name} is available: {latest_version}" return "" @@ -347,6 +366,7 @@ def print_banner(host: str, port: int) -> None: is_pre_release |= langflow_is_pre_release(langflow_version) # Update pre-release status notice = build_version_notice(langflow_version, package_name) + notice = stylize_text(notice, package_name, is_prerelease=is_pre_release) if notice: notices.append(notice) diff --git a/src/backend/base/langflow/services/telemetry/service.py b/src/backend/base/langflow/services/telemetry/service.py index 68d2bfbe6..6d953045b 100644 --- a/src/backend/base/langflow/services/telemetry/service.py +++ b/src/backend/base/langflow/services/telemetry/service.py @@ -72,11 +72,11 @@ class TelemetryService(Service): else: logger.debug("Telemetry data sent successfully.") except httpx.HTTPStatusError: - logger.exception("HTTP error occurred") + logger.error("HTTP error occurred") except httpx.RequestError: - logger.exception("Request error occurred") + logger.error("Request error occurred") except Exception: # noqa: BLE001 - logger.exception("Unexpected error occurred") + logger.error("Unexpected error occurred") async def log_package_run(self, payload: RunPayload) -> None: await self._queue_event((self.send_telemetry_data, payload, "run")) diff --git a/src/backend/base/langflow/utils/version.py b/src/backend/base/langflow/utils/version.py index 0ef79548d..336c6046e 100644 --- a/src/backend/base/langflow/utils/version.py +++ b/src/backend/base/langflow/utils/version.py @@ -3,8 +3,6 @@ from importlib import metadata import httpx from packaging import version as pkg_version -from langflow.logging.logger import logger - def _compute_non_prerelease_version(prerelease_version: str) -> str: prerelease_keywords = ["a", "b", "rc", "dev", "post"] @@ -86,7 +84,6 @@ def fetch_latest_version(package_name: str, *, include_prerelease: bool) -> str return max(valid_versions, key=pkg_version.parse) except Exception: # noqa: BLE001 - logger.exception("Error fetching latest version") return None