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"]

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 re
from packaging import version
from packaging.version import parse, Version
from xml.etree import ElementTree as ET
class PyPiUpdater:
@ -25,7 +26,7 @@ class PyPiUpdater:
self.last_update_check = 0.1
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"
try:
@ -33,9 +34,24 @@ class PyPiUpdater:
response.raise_for_status()
root = ET.fromstring(response.content)
latest_version = root.find(".//item/title").text.strip()
self.latest_version = latest_version
return [latest_version, None]
# Extract all versions from the feed
versions = []
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:
return [None, f"Network error: {str(e)}"]
except Exception as e: