or run

npx @tessl/cli init
Log in

Version

Tile

Overview

Evals

Files

docs

cli-interface.mdenvironment-validation.mdindex.mdinteractive-selection.mdpackage-parsing.mdpackage-upgrading.mdrequirements-detection.mdstatus-detection.md
tile.json

tessl/pypi-pip-upgrader

An interactive pip requirements upgrader that also updates the version in your requirements.txt file

Workspace
tessl
Visibility
Public
Created
Last updated
Describes
pypipkg:pypi/pip-upgrader@1.4.x

To install, run

npx @tessl/cli install tessl/pypi-pip-upgrader@1.4.0

index.mddocs/

pip-upgrader

An interactive command-line tool for upgrading pip requirements files. It automatically detects requirements files, queries PyPI for available updates, presents an interactive interface for selecting packages to upgrade, and updates both the installed packages and version numbers in requirements files.

Package Information

  • Package Name: pip-upgrader
  • Language: Python
  • Installation: pip install pip-upgrader
  • Console Command: pip-upgrade

Core Imports

import pip_upgrader
from pip_upgrader import __version__

For programmatic usage:

from pip_upgrader.cli import main, get_options
from pip_upgrader.packages_detector import PackagesDetector
from pip_upgrader.requirements_detector import RequirementsDetector
from pip_upgrader.packages_status_detector import PackagesStatusDetector
from pip_upgrader.packages_interactive_selector import PackageInteractiveSelector, user_input
from pip_upgrader.packages_upgrader import PackagesUpgrader
from pip_upgrader.virtualenv_checker import check_for_virtualenv, is_virtualenv

Basic Usage

Command Line Usage

# Auto-discover requirements files and upgrade interactively
pip-upgrade

# Specify requirements files explicitly
pip-upgrade requirements.txt
pip-upgrade requirements/dev.txt requirements/production.txt

# Pre-select specific packages to upgrade
pip-upgrade requirements.txt -p django -p celery

# Upgrade all available packages without prompting
pip-upgrade requirements.txt -p all

# Dry run (simulate without actual changes)
pip-upgrade requirements.txt --dry-run

# Skip virtualenv check
pip-upgrade requirements.txt --skip-virtualenv-check

# Only update requirements files, don't install packages
pip-upgrade requirements.txt --skip-package-installation

# Include prerelease versions
pip-upgrade requirements.txt --prerelease

# Use default PyPI index instead of custom indexes
pip-upgrade requirements.txt --use-default-index

Programmatic Usage

from pip_upgrader.cli import main
from pip_upgrader.requirements_detector import RequirementsDetector
from pip_upgrader.packages_detector import PackagesDetector
from pip_upgrader.packages_status_detector import PackagesStatusDetector

# Auto-detect requirements files
detector = RequirementsDetector(None)  # None for auto-detection
filenames = detector.get_filenames()

# Parse packages from requirements files
packages_detector = PackagesDetector(filenames)
packages = packages_detector.get_packages()

# Check for available upgrades
status_detector = PackagesStatusDetector(packages)
options = {'--prerelease': False, '-p': []}
packages_status_map = status_detector.detect_available_upgrades(options)

# Run the complete upgrade process programmatically
main()  # Uses command-line arguments

Architecture

The pip-upgrader follows a modular pipeline architecture with clear separation of concerns:

  1. Requirements Detection: Discovers and validates requirements files in the current directory or from explicit paths
  2. Package Parsing: Extracts package names and versions from requirements files, handling various formats and options
  3. Status Detection: Queries PyPI (or custom indexes) to check for available package upgrades
  4. Interactive Selection: Presents upgrade options in a formatted table and handles user input
  5. Package Upgrading: Installs new packages via pip and updates version numbers in requirements files
  6. Environment Validation: Ensures proper virtual environment setup throughout the process

Capabilities

CLI Interface

Main command-line interface providing the pip-upgrade console command with comprehensive options for interactive and automated requirements file upgrading.

def main(): ...
def get_options(): ...

CLI Interface

Requirements File Detection

Automatic discovery and validation of requirements files in the current directory, with support for explicit file specification and recursive inclusion handling.

class RequirementsDetector:
    def __init__(self, requirements_arg): ...
    def get_filenames(self): ...
    def autodetect_files(self): ...

Requirements Detection

Package Parsing

Extraction and parsing of package specifications from requirements files, handling various formats including extras, comments, and pip options.

class PackagesDetector:
    def __init__(self, requirements_files): ...
    def get_packages(self): ...
    def detect_packages(self, requirements_files): ...

Package Parsing

Upgrade Status Detection

PyPI API integration for checking package upgrade availability, supporting both JSON API and simple HTML formats, with custom index URL handling.

class PackagesStatusDetector:
    def __init__(self, packages, use_default_index=False): ...
    def detect_available_upgrades(self, options): ...

Status Detection

Interactive Package Selection

User interface for selecting packages to upgrade, presenting upgrade information in formatted tables with interactive prompts and pre-selection options.

class PackageInteractiveSelector:
    def __init__(self, packages_map, options): ...
    def get_packages(self): ...
    def ask_for_packages(self): ...

Interactive Selection

Package Installation and Requirements Updating

Package installation via pip and atomic updating of version numbers in requirements files, with dry-run support and error handling.

class PackagesUpgrader:
    def __init__(self, selected_packages, requirements_files, options): ...
    def do_upgrade(self): ...

Package Upgrading

Environment Validation

Virtual environment detection and validation to ensure packages are installed in the appropriate environment.

def is_virtualenv(): ...
def check_for_virtualenv(options): ...

Environment Validation

Types

# Package status dictionary returned by PackagesStatusDetector
PackageStatus = {
    'name': str,                    # Package name
    'current_version': Version,     # Current version from requirements
    'latest_version': Version,      # Latest available version
    'upgrade_available': bool,      # Whether upgrade is available
    'upload_time': str             # Upload timestamp of latest version
}

# Options dictionary from command-line parsing
Options = {
    '<requirements_file>': list,    # List of requirements file paths
    '--prerelease': bool,           # Include prerelease versions
    '-p': list,                     # Pre-selected packages
    '--dry-run': bool,              # Simulate without changes
    '--skip-virtualenv-check': bool, # Skip environment validation
    '--skip-package-installation': bool, # Only update files
    '--use-default-index': bool     # Use default PyPI index
}