fix: Fixed that prereleases version were listed

This commit is contained in:
Mr Finchum 2025-02-10 13:16:21 +01:00
parent 9680e33730
commit 712d80a0aa
3 changed files with 26 additions and 5 deletions

View file

@ -1,4 +1,5 @@
from .pypi_updater import PyPiUpdater from .single_updater import PyPiUpdater
#from .multi_updater import MultiPackageUpdater
__all__ = ["PyPiUpdater"] __all__ = ["PyPiUpdater"]

View file

@ -0,0 +1,4 @@
class MultiPackageUpdater:
def __init__(self, log_path):
print("Not ready yet...")

View file

@ -6,6 +6,7 @@ import time
import json import json
import re import re
from packaging import version from packaging import version
from packaging.version import parse, Version
from xml.etree import ElementTree as ET from xml.etree import ElementTree as ET
class PyPiUpdater: class PyPiUpdater:
@ -25,7 +26,7 @@ class PyPiUpdater:
self.last_update_check = 0.1 self.last_update_check = 0.1
def _get_latest_version(self): def _get_latest_version(self):
"""Fetch the latest version from PyPI RSS feed.""" """Fetch the latest stable version from PyPI RSS feed."""
rss_url = f"https://pypi.org/rss/project/{self.package_name.lower()}/releases.xml" rss_url = f"https://pypi.org/rss/project/{self.package_name.lower()}/releases.xml"
try: try:
@ -33,9 +34,24 @@ class PyPiUpdater:
response.raise_for_status() response.raise_for_status()
root = ET.fromstring(response.content) root = ET.fromstring(response.content)
latest_version = root.find(".//item/title").text.strip() # Extract all versions from the feed
self.latest_version = latest_version versions = []
return [latest_version, None] for item in root.findall(".//item/title"):
version_text = item.text.strip()
parsed_version = parse(version_text)
print(version_text,"\n",parsed_version)
# Check if the version is stable (not a pre-release)
if isinstance(parsed_version, Version) and not parsed_version.is_prerelease:
versions.append(parsed_version)
# Return the latest stable version
if versions:
latest_version = str(max(versions))
self.latest_version = latest_version
return [latest_version, None]
return [None, "No stable versions found"]
except requests.exceptions.RequestException as e: except requests.exceptions.RequestException as e:
return [None, f"Network error: {str(e)}"] return [None, f"Network error: {str(e)}"]
except Exception as e: except Exception as e: