analitics

Pages

Tuesday, April 14, 2026

Python Qt : manages python packages from web.

Today, I created a script that looks for updates and manages them along with the already installed packages.
The script relies on three categories of data sources, all of them public, stable, and widely used in the Python ecosystem.
  • PyPI RSS Feeds (Official Python Package Index)
    • These are the official feeds published by PyPI.
    • 1. New packages feed
      • https://pypi.org/rss/packages.xml
      • This feed lists brand‑new packages uploaded to PyPI.
    • 2. Updated packages feed
      • https://pypi.org/rss/updates.xml
      • This feed lists new releases of existing packages.
    • These feeds are the most authoritative source for real‑time package activity.
  • Libraries.io Atom Feeds (Per‑package version history)
    • For each installed package, the script uses:
    • https://libraries.io/pypi/{PACKAGE_NAME}/versions.atom
    • This feed provides:
      • version history
      • release timestamps
      • links to source repositories
      • metadata about each release
    • Libraries.io aggregates data from PyPI, GitHub, GitLab, Bitbucket, and more.
  • Local Python Installation (importlib.metadata)
    • The script reads the list of packages installed on your system using:
    • importlib.metadata.distributions()
    • This gives:
      • installed package names
      • installed versions
      • metadata from the local environment
    • This is how the script knows whether to show Install or Update buttons.
  • SQLite Local Database (packages.db)
    • The script maintains a small local database that stores:
      • package name
      • installed version
      • last update timestamp
    • This allows the UI to:
      • remember previous states
      • show consistent information
      • track updates over time
What the Script Actually Does
  • On startup
    • Reads all installed Python packages
    • Synchronizes them into a SQLite database
    • Loads the three main tabs:
      • PyPI New Packages
      • PyPI Updated Packages
      • Libraries.io Installed Packages
  • In the PyPI tabs
    • For every RSS entry:
      • Extracts the package name
      • Checks if it is installed locally
      • Shows:
        • Title
        • Publish date
        • Link to PyPI
        • Install button (if not installed)
        • Update button (if installed)
    • This turns the PyPI feed into a package manager dashboard.
  • In the Libraries.io tab
    • For every installed package:
      • Builds the Libraries.io feed URL
      • Fetches version history
      • Displays:
        • Installed version
        • Release history
        • Links to releases
        • Update button
    • This tab becomes a per‑package release monitor.
  • When you click Install or Update
    • A confirmation dialog appears
    • If confirmed:
      • Runs python -m pip install PACKAGE
      • Or python -m pip install --upgrade PACKAGE
      • Runs pip in a background thread
      • Updates the SQLite database
      • Refreshes the UI
    • This makes the script a GUI package manager for Python.
See this demo real from my youtube channel: