"""
HTML table extracted from python.org/downloads on 2025-09-11T11:00:00+02:00
"""

from collections import defaultdict
from pprint import pprint

import requests
from bs4 import BeautifulSoup
from semantic_version import Version

html = requests.get("https://python.org/downloads/").text

versions = []
version_table = defaultdict(list)

soup = BeautifulSoup(html, "html.parser")
list_items = soup.find_all("li")
for item in list_items:
    release_number_span = item.find("span", class_="release-number")
    if release_number_span:
        version_text = release_number_span.a.get_text(strip=True)
        version = version_text.split(" ")[1]
        versions.append(Version(version))

major_minor_pairs = [(v.major, v.minor) for v in versions]

for v in versions:
    version_table[f"{v.major}.{v.minor}"].append(v)

sorted_table = {}

for majmin, version in version_table.items():
    sorted_table[majmin] = [str(v) for v in sorted(version, reverse=True)]

pprint(sorted_table)
